Exemple #1
0
        /// <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);
        }
Exemple #2
0
        /// <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;
        }
Exemple #3
0
        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();
        }
Exemple #4
0
        /// <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();
                }
            }
        }