#include "ClientUserManager.h" ////////////////////////////////////////////////////////////////////////////////// //构造函数 CClientUserItem::CClientUserItem() { //设置变量 zeromemory(&m_UserInfo,sizeof(m_UserInfo)); m_UserInfo.wTableID=INVALID_TABLE; m_UserInfo.wChairID=INVALID_CHAIR; return; } //析构函数 CClientUserItem::~CClientUserItem() { } ////////////////////////////////////////////////////////////////////////////////// //构造函数 CGameUserManager::CGameUserManager() { //组件接口 m_pIUserManagerSink=0; return; } //析构函数 CGameUserManager::~CGameUserManager() { for (int i=0,l=(int)m_UserItemActive.size();im_UserInfo,&UserInfo,sizeof(UserInfo)); //更新通知 ASSERT(m_pIUserManagerSink!=0); if (m_pIUserManagerSink != 0) { m_pIUserManagerSink->OnUserItemAcitve(pClientUserItem); } return pClientUserItem; } //重置用户 bool CGameUserManager::ResetUserItem() { for (int i = 0;i<(int)m_UserItemActive.size();i++) { if (m_pIUserManagerSink) { m_pIUserManagerSink->OnUserItemDelete(m_UserItemActive[i]); } } for (int i = 0;i<(int)m_UserItemActive.size();i++) { addPool(m_UserItemActive[i]); } //设置变量 m_UserItemActive.clear(); return true; } void CGameUserManager::addPool(CClientUserItem * pIClientUserItem) { for (int i = 0;i<(int)m_PoolItem.size();i++) { if (m_PoolItem[i] == pIClientUserItem) { return; } } m_PoolItem.push_back(pIClientUserItem); } CClientUserItem * CGameUserManager::getPool() { CClientUserItem * pClient = NULL; if (m_PoolItem.size()) { pClient = m_PoolItem.back(); m_PoolItem.pop_back(); return pClient; } pClient = new CClientUserItem; m_UserItemActive.push_back(pClient); return pClient; } //删除用户 bool CGameUserManager::DeleteUserItem(IClientUserItem * pIClientUserItem) { cocos2d::log("CGameUserManager::DeleteUserItem\n"); //查找用户 CClientUserItem * pUserItemActive=0; for (int i=0,l=(int)m_UserItemActive.size();iOnUserItemDelete(pUserItemActive); } //设置数据 zeromemory(&pUserItemActive->m_UserInfo,sizeof(tagUserInfo)); return true; } } //错误断言 ASSERT(FALSE); return false; } //更新积分 bool CGameUserManager::UpdateUserItemScore(IClientUserItem * pIClientUserItem, const tagUserScore * pUserScore) { //效验参数 ASSERT(pUserScore!=0); ASSERT(pIClientUserItem!=0); //获取用户 tagUserInfo * pUserInfo=pIClientUserItem->GetUserInfo(); ////以往数据 //tagUserScore oldUserScore; //memset(&oldUserScore, 0x0, sizeof(oldUserScore)); pUserInfo->lScore=pUserScore->lScore; pUserInfo->lInsureScore=pUserScore->lInsure; pUserInfo->lWinCount=pUserScore->dwWinCount; pUserInfo->lLostCount=pUserScore->dwLostCount; pUserInfo->lDrawCount=pUserScore->dwDrawCount; pUserInfo->lFleeCount=pUserScore->dwFleeCount; pUserInfo->lExperience=pUserScore->dwExperience; //通知更新 ASSERT(m_pIUserManagerSink!=0); if (m_pIUserManagerSink) { m_pIUserManagerSink->OnUserItemUpdate(pIClientUserItem); } return true; } //更新状态 bool CGameUserManager::UpdateUserItemStatus(IClientUserItem * pIClientUserItem, const tagUserStatus * pUserStatus) { cocos2d::log("CGameUserManager::UpdateUserItemStatus\n"); //效验参数 ASSERT(pUserStatus!=0); ASSERT(pIClientUserItem!=0); //获取用户 tagUserInfo * pUserInfo=pIClientUserItem->GetUserInfo(); //以往数据 tagUserStatus tUserStatus; tUserStatus.wTableID = pUserInfo->wTableID; tUserStatus.wChairID = pUserInfo->wChairID; tUserStatus.cbUserStatus = pUserInfo->cbUserStatus; //设置数据 pUserInfo->wTableID=pUserStatus->wTableID; pUserInfo->wChairID=pUserStatus->wChairID; pUserInfo->cbUserStatus=pUserStatus->cbUserStatus; //通知更新 ASSERT(m_pIUserManagerSink!=0); if (m_pIUserManagerSink) { m_pIUserManagerSink->OnUserItemUpdate(pIClientUserItem, tUserStatus); } return true; } //更新属性 bool CGameUserManager::UpdateUserItemAttrib(IClientUserItem * pIClientUserItem, const tagUserAttrib * pUserAttrib) { //效验参数 ASSERT(pUserAttrib!=0); ASSERT(pIClientUserItem!=0); //以往数据 tagUserAttrib UserAttrib; //通知更新 ASSERT(m_pIUserManagerSink!=0); if (m_pIUserManagerSink) { m_pIUserManagerSink->OnUserItemUpdate(pIClientUserItem, UserAttrib); } return true; } //枚举用户 IClientUserItem * CGameUserManager::EnumUserItem(uint16 wEnumIndex) { if (wEnumIndex>=m_UserItemActive.size()) return 0; return m_UserItemActive[wEnumIndex]; } //查找用户 IClientUserItem * CGameUserManager::SearchUserByUserID(uint32 dwUserID) { //用户搜索 for (int i=0,l=(int)m_UserItemActive.size();im_UserInfo.dwUserID == dwUserID) { return pClientUserItem; } } return 0; } //查找用户 IClientUserItem * CGameUserManager::SearchUserByGameID(uint32 dwGameID) { //用户搜索 for (int i=0,l=(int)m_UserItemActive.size();im_UserInfo.dwGameID == dwGameID) { return pClientUserItem; } } return 0; } //查找用户 IClientUserItem * CGameUserManager::SearchUserByNickName(const char* pszNickName) { //用户搜索 for (int i=0,l=(int)m_UserItemActive.size();iGetNickName(); if (strcmp(pszNickName, pszTempNickName) == 0) { return pClientUserItem; } } return 0; }