public EA_CCharUser CreateUser(ObjectInfo GameObjInfo, CharInfo charInfo) { GameObjInfo.m_eObjType = eObjectType.CT_PLAYER; EA_CCharUser pUser = (EA_CCharUser)CreateGameObject(GameObjInfo); if (pUser != null) { pUser.SetCharInfo(charInfo); pUser.PosInit(); } return(pUser); }
public EA_CObjectBase RemovePlayer(EAObjID _id) { EA_CCharUser pUser = GetPlayer(_id); if (pUser != null) { pUser.ResetInfo(eObjectState.CS_DEAD); m_mapPlayerList.Remove((uint)_id); m_pIDGenerator.FreeID(_id); } return(pUser); }
EA_CCharUser GetPlayer(EAObjID _id) { EA_CCharUser pUser = null; m_mapPlayerList.TryGetValue(_id, out pUser); if (pUser == null && m_pMainPlayer.GetObjID() == _id) { return(m_pMainPlayer); } return(pUser); }
public void Init() { //Debug.Log("EACObjManager Init"); // [3/6/2014 puos] Load template if (m_pMainPlayer == null) { m_pMainPlayer = new EA_CCharUser(); ObjectInfo emptyObjInfo = new ObjectInfo(); emptyObjInfo.m_eObjState = eObjectState.CS_MYENTITY; emptyObjInfo.m_eObjType = eObjectType.CT_MYPLAYER; emptyObjInfo.m_GDObjId = CObjGlobal.MyPlayerID; m_pMainPlayer.SetObjInfo(emptyObjInfo); CharInfo emptyCharInfo = new CharInfo(); m_pMainPlayer.SetCharInfo(emptyCharInfo); } }
/// <summary> /// The game object from the server is applied first and the Cry Entity is created by FirstUpdate (). /// </summary> /// <param name="GameObjInfo"></param> /// <returns></returns> public EA_CObjectBase CreateGameObject(ObjectInfo GameObjInfo) { EA_CObjectBase pReturnObject = null; GameObjInfo.m_eObjState = eObjectState.CS_SETENTITY; // Temporarily specify ObjId (sometimes temporary use by external system) bool bCreateTempId = false; if (CObjGlobal.InvalidObjID == GameObjInfo.m_GDObjId) { GameObjInfo.m_GDObjId = (EAObjID)m_pIDGenerator.GenerateID(); bCreateTempId = true; } switch (GameObjInfo.m_eObjType) { case eObjectType.CT_MYPLAYER: { if (GetMainPlayer() != null) { // My character is created at startup so I don't need to create it GetMainPlayer().SetObjInfo(GameObjInfo); pReturnObject = GetMainPlayer(); } } break; case eObjectType.CT_PLAYER: { EA_CCharUser pCharPlayer = null; // First check if it exists if (bCreateTempId == false) { pCharPlayer = GetPlayer(GameObjInfo.m_GDObjId); } // If not, create a new one if (pCharPlayer == null) { pCharPlayer = new EA_CCharUser(); if (pCharPlayer != null) { m_mapPlayerList.Add(GameObjInfo.m_GDObjId, pCharPlayer); } } // Enter the information of the created object and apply it if (pCharPlayer != null) { pCharPlayer.SetObjInfo(GameObjInfo); } pReturnObject = pCharPlayer; } break; case eObjectType.CT_NPC: { EA_CCharNPC pCharNPC = null; // First check if it exists if (bCreateTempId == false) { pCharNPC = GetNPC(GameObjInfo.m_GDObjId); } // If not, create a new one if (pCharNPC == null) { pCharNPC = new EA_CCharNPC(); if (pCharNPC != null) { m_mapNPCList.Add(GameObjInfo.m_GDObjId, pCharNPC); } } // Apply the information to the generated number if (pCharNPC != null) { pCharNPC.SetObjInfo(GameObjInfo); } pReturnObject = pCharNPC; } break; case eObjectType.CT_MONSTER: { EA_CCharMob pCharPlayer = null; // First check if it exists if (bCreateTempId == false) { pCharPlayer = GetMob(GameObjInfo.m_GDObjId); } // If not, create a new one if (pCharPlayer == null) { pCharPlayer = new EA_CCharMob(); if (pCharPlayer != null) { m_mapMonsterList.Add(GameObjInfo.m_GDObjId, pCharPlayer); } } // Apply the information to the generated number // assert( pCharInfo && "No Character Info" ); if (pCharPlayer != null) { pCharPlayer.SetObjInfo(GameObjInfo); } pReturnObject = pCharPlayer; } break; case eObjectType.CT_ITEMOBJECT: { EA_CItem pItem = null; // First check if it exists if (bCreateTempId == false) { pItem = GetItemObject(GameObjInfo.m_GDObjId); } // If not, create a new one if (pItem == null) { pItem = new EA_CItem(); if (pItem != null) { m_mapItemList.Add(GameObjInfo.m_GDObjId, pItem); } } // Apply the information to the generated number if (pItem != null) { pItem.SetObjInfo(GameObjInfo); } pReturnObject = pItem; } break; case eObjectType.CT_MAPOBJECT: { EA_CMapObject pObject = null; // First check if it exists if (bCreateTempId == false) { pObject = GetMapObject(GameObjInfo.m_GDObjId); } // If not, create a new one if (pObject == null) { pObject = new EA_CMapObject(); if (pObject != null) { m_mapObjectList.Add(GameObjInfo.m_GDObjId, pObject); } } // Apply the information to the generated number if (pObject != null) { pObject.SetObjInfo(GameObjInfo); } pReturnObject = pObject; } break; /* * case CT_QUEST: * { * // First check if it exists * if( false == bCreateTempId ) * pReturnObject = GetQuestItem(GameObjInfo.m_DiaObjId); * * // If not, create a new one * if( NULL == pReturnObject ) * { * pReturnObject = new IfDia_CObjectBase; * assert( pReturnObject && "Not Create ItemObject" ); * if( pReturnObject ) * m_mapQuestList.insert( TQuestListMap::value_type(GameObjInfo.m_DiaObjId,pReturnObject) ); * } * * // Apply the information to the generated number * if( pReturnObject ) * { * pReturnObject->SetObjInfo(GameObjInfo); * } * } * break; * /**/ } //assert( pReturnObject ); // Apply the information to the generated number if (pReturnObject != null) { m_entityList.Add(pReturnObject); } return(pReturnObject); }