/// <summary> /// 根据id获取玩家信息 /// </summary> /// <param name="uuid"></param> /// <param name="created_when_not_exist">如果不存在则创建一个新的</param> /// <returns></returns> public WildPlayerInfo GetWildPlayerInfo(uint uuid, bool created_when_not_exist) { WildPlayerInfo info = null; if (created_when_not_exist) { // 先找缓存中的,有的话直接把缓存中的放入appear列表,并返回 if (mDisappearWildPlayersInfo.TryGetValue(uuid, out info)) { mAppearWildPlayersInfo[info.UUID] = info; mDisappearWildPlayersInfo.Remove(info.UUID); return(info); } } // 找appear中的,找不到则创建一个 if (!mAppearWildPlayersInfo.TryGetValue(uuid, out info)) { if (created_when_not_exist) { info = CreateWildPlayerInfo(uuid); mAppearWildPlayersInfo[uuid] = info; } } return(info); }
/// <summary> /// 将玩家信息添加到缓存中,同时从appear列表中移除 /// </summary> /// <param name="player"></param> protected void AddPlayerToDisappear(WildPlayerInfo player_info) { mAppearWildPlayersInfo.Remove(player_info.UUID); // TODO 判断下最多可以缓存多少个player mDisappearWildPlayersInfo[player_info.UUID] = player_info; }
public void UpdateLook() { if (mLookLocalPlayer) { var look_pack = new C2SNwarLook(); look_pack.uuids.Add(Game.Instance.LocalPlayerID.obj_idx); NetClient.GetCrossClient().SendData <C2SNwarLook>(NetMsg.MSG_NWAR_LOOK, look_pack); mLookLocalPlayer = false; } WildPlayerInfo.SendLookImpl(); }
/// <summary> /// 响应aoi版本信息改变的消息 /// </summary> /// <param name="pack"></param> public void HandleUnitNewVersion(S2CNwarNewVersion pack) { if (pack.uuid == Game.Instance.LocalPlayerID.obj_idx)// 本地玩家没有appear消息,但是因为本地玩家的数据也需要通过aoi来更新 { mLookLocalPlayer = true; } else { WildPlayerInfo info = null; info = GetWildPlayerInfo(pack.uuid, false); if (info != null) { info.HandleNewVersion(); } } }