int FCSCard::Compare(FCSCard* Card) { //compare card number if (GetCardNumber() > Card->GetCardNumber()) return 1; else if (GetCardNumber() < Card->GetCardNumber()) return -1; //compare suits if (GetSuit() > Card->GetSuit()) return 1; else if (GetSuit() < Card->GetSuit()) return -1; return 0; }
char* FCSCard::Perl2User(char* String, int Display10AsT, bool DisplayDebug) { bool CardNumberIsNull; char* ReturnString = String; if (DisplayDebug && GetFlipped()) { *String = '<'; String++; } Perl2UserCardNumber(GetCardNumber(), String, &CardNumberIsNull, Display10AsT, GetFlipped(), DisplayDebug); // Notice that if card_num_is_null is found to be true // it will affect the output of the suit too. Perl2UserSuit(GetSuit(), String + strlen(String), &CardNumberIsNull, GetFlipped(), DisplayDebug); if (DisplayDebug && GetFlipped()) strcat(String, ">"); return ReturnString; }
// 组装消息 void CDBCard::AddEntityDataToMsg(DB_OPERATION_TYPE opType, vector<BYTE>& pBA) { // 传递来的消息前面已经加入了 // OPEntityFlag: 1byte, 操作实体数量的标志 0: 单个, 1:多个 // DBOP Type: 1byte, 数据库操作类型(枚举值) // MSG ID: 4byte, 该消息的MSGID // Entity Num: 2byte, 该实体个数 if(DB_OPER_DELETE == opType) // DELETE操作 { _AddToByteArray(&pBA, m_GUID); // 实体ID _AddToByteArray(&pBA, (long)0); // 属性种类个数 // 发送CardNumber 字符串 _AddToByteArray(&pBA, (WORD)1); _AddToByteArray(&pBA, (long)DB_CARD_ATTR_SZ_CARDNUMBER); _AddToByteArray(&pBA, GetCardNumber()); return; } WORD attrNum = 0; for(int i = 0; i < (int)m_SendAttrEnumVector.size(); i++) { if(m_SendAttrEnumVector[i] != 0) attrNum++; } _AddToByteArray(&pBA, m_GUID); // 实体ID _AddToByteArray(&pBA, attrNum); // 属性种类个数 for(int i = 0; i < (int)m_SendAttrEnumVector.size(); i++) { if(m_SendAttrEnumVector[i] != 0 && ( DB_OPER_SAVE == opType || DB_OPER_UPDATE == opType || DB_OPER_LOAD == opType ) )// 标志打开并且为SAVE/UPDATE/LOAD操作 { switch(DB_CARD_ATTR_SZ_CARDNUMBER+i) { case DB_CARD_ATTR_SZ_CARDNUMBER: { _AddToByteArray(&pBA, (WORD)1); _AddToByteArray(&pBA, (long)DB_CARD_ATTR_SZ_CARDNUMBER); if(DB_OPER_LOAD != opType) _AddToByteArray(&pBA, GetCardNumber()); else _AddToByteArray(&pBA, (BYTE)0); } break; case DB_CARD_ATTR_SZ_CARDTYPE: { _AddToByteArray(&pBA, (WORD)1); _AddToByteArray(&pBA, (long)DB_CARD_ATTR_SZ_CARDTYPE); if(DB_OPER_LOAD != opType) _AddToByteArray(&pBA, GetCardType()); else _AddToByteArray(&pBA, (BYTE)0); } break; case DB_CARD_ATTR_SZ_SELLERACCOUNT: { _AddToByteArray(&pBA, (WORD)1); _AddToByteArray(&pBA, (long)DB_CARD_ATTR_SZ_SELLERACCOUNT); if(DB_OPER_LOAD != opType) _AddToByteArray(&pBA, GetSellerAccount()); else _AddToByteArray(&pBA, (BYTE)0); } break; case DB_CARD_ATTR_LONG_SELLERID: { _AddToByteArray(&pBA, (WORD)1); _AddToByteArray(&pBA, (long)DB_CARD_ATTR_LONG_SELLERID); if(DB_OPER_LOAD != opType) _AddToByteArray(&pBA, GetSellerID()); else _AddToByteArray(&pBA, (BYTE)0); } break; case DB_CARD_ATTR_SZ_BUYERACCOUNT: { _AddToByteArray(&pBA, (WORD)1); _AddToByteArray(&pBA, (long)DB_CARD_ATTR_SZ_BUYERACCOUNT); if(DB_OPER_LOAD != opType) _AddToByteArray(&pBA, GetBuyerAccount()); else _AddToByteArray(&pBA, (BYTE)0); } break; case DB_CARD_ATTR_LONG_BUYERID: { _AddToByteArray(&pBA, (WORD)1); _AddToByteArray(&pBA, (long)DB_CARD_ATTR_LONG_BUYERID); if(DB_OPER_LOAD != opType) _AddToByteArray(&pBA, GetBuyerID()); else _AddToByteArray(&pBA, (BYTE)0); } break; case DB_CARD_ATTR_DWORD_PRICE: { _AddToByteArray(&pBA, (WORD)1); _AddToByteArray(&pBA, (long)DB_CARD_ATTR_DWORD_PRICE); if(DB_OPER_LOAD != opType) _AddToByteArray(&pBA, GetPrice()); else _AddToByteArray(&pBA, (BYTE)0); } break; case DB_CARD_ATTR_DWORD_CHARGEPRICE: { _AddToByteArray(&pBA, (WORD)1); _AddToByteArray(&pBA, (long)DB_CARD_ATTR_DWORD_CHARGEPRICE); if(DB_OPER_LOAD != opType) _AddToByteArray(&pBA, GetChargePrice()); else _AddToByteArray(&pBA, (BYTE)0); } break; case DB_CARD_ATTR_DWORD_CARDSTATE: { _AddToByteArray(&pBA, (WORD)1); _AddToByteArray(&pBA, (long)DB_CARD_ATTR_DWORD_CARDSTATE); if(DB_OPER_LOAD != opType) _AddToByteArray(&pBA, GetCardState()); else _AddToByteArray(&pBA, (BYTE)0); } break; case DB_CARD_ATTR_DWORD_CARDTIME: { _AddToByteArray(&pBA, (WORD)1); _AddToByteArray(&pBA, (long)DB_CARD_ATTR_DWORD_CARDTIME); if(DB_OPER_LOAD != opType) _AddToByteArray(&pBA, GetCardTime()); else _AddToByteArray(&pBA, (BYTE)0); } break; case DB_CARD_ATTR_DWORD_STARTTIME: { _AddToByteArray(&pBA, (WORD)1); _AddToByteArray(&pBA, (long)DB_CARD_ATTR_DWORD_STARTTIME); if(DB_OPER_LOAD != opType) _AddToByteArray(&pBA, GetStartTime()); else _AddToByteArray(&pBA, (BYTE)0); } break; case DB_CARD_ATTR_DWORD_SERIALNUMBER: { _AddToByteArray(&pBA, (WORD)1); _AddToByteArray(&pBA, (long)DB_CARD_ATTR_DWORD_SERIALNUMBER); if(DB_OPER_LOAD != opType) _AddToByteArray(&pBA, GetSerialNumber()); else _AddToByteArray(&pBA, (BYTE)0); } break; } } } }