Beispiel #1
0
        public void Init(BaseToken[] tokens)
        {
            state = FightRoomState.Init;
            //添加字典
            foreach (var item in tokens)
            {
                string name = UserCache.Ins.GetDALByToken(item).name;
                tokenToUserDTO.Add(item, LoginManager.Ins.GetDTO(name));
            }

            string[] pos_str = AppSetting.Ins.GetValue("pos").Split(';', StringSplitOptions.RemoveEmptyEntries);

            //初始化 模型数据(只有玩家)
            for (int i = 0; i < tokens.Length; i++)
            {
                BaseToken     t     = tokens[i];
                BaseModelData data  = BaseModelDataFactory.GetDataByID(1);
                string[]      p     = pos_str[i].Split('_');
                Vector3Ex     pos   = new Vector3Ex(int.Parse(p[0]), int.Parse(p[1]), int.Parse(p[2]));
                BaseModel     model = new BaseModel(i + 1, 1, tokenToUserDTO[t].name, data, pos, Vector3Ex.Zero);//位置什么的都应该读表
                tokenToModelID.Add(t, model.id);
                baseModelDic.Add(model.id, model);
            }

            updateModel = new TimeEventModel(deltaTime, -1, Update);
            //TimeEventHandler.Ins.AddEvent(new TimeEventModel(300, 1, CreateDragon));
            TimeEventHandler.Ins.AddEvent(updateModel);

            state = FightRoomState.Ready;

            //发送房间数据
            Broadcast(tokenToUserDTO.Keys.ToList(), 1003002, 0, GetDTO());
        }
Beispiel #2
0
        public override void Clear()
        {
            //清除manager中的对应数据
            long      id;
            FightRoom room;

            foreach (var item in tokenToModelID.Keys)
            {
                manager.tokenToRoomID.Remove(item, out id);
            }
            manager.roomCache.Remove(this.id, out room);

            //清除自身数据
            TimeEventHandler.Ins.RemoveEvent(updateModel);
            allTime = 0;

            tokenToUserDTO.Clear();
            baseModelDic.Clear();
            tokenToModelID.Clear();

            completeTokens.Clear();

            state = FightRoomState.Over;

            //加入到manager栈中
            manager.roomStack.Push(this);
        }
Beispiel #3
0
 private void StartFight(Room sender, PlayerController player)
 {
     if (_state == FightRoomState.Waiting)
     {
         _state = FightRoomState.WaveOne;
         SpawnWaveOne();
         LockDownRoom();
     }
 }
Beispiel #4
0
    private void Update()
    {
        switch (_state)
        {
        case FightRoomState.WaveOne:
            if (_waveOne.transform.childCount == 0)
            {
                _state = FightRoomState.WaveTwo;
                SpawnWaveTwo();
            }
            break;

        case FightRoomState.WaveTwo:
            if (_waveTwo.transform.childCount == 0)
            {
                _state = FightRoomState.Victory;
                RevealChest();
                UnlockRoom();
            }
            break;
        }
    }
Beispiel #5
0
        /// <summary>
        /// 客户端加载完毕 广播是 1003004(在对应房间广播)
        /// </summary>
        /// <param name="token"></param>
        /// <param name="model"></param>
        internal void OnInitCompleted(BaseToken token, TransModel model)
        {
            //throw new NotImplementedException();
            if (completeTokens.ContainsKey(token))
            {
                return;
            }
            else
            {
                completeTokens.Add(token, tokenToUserDTO[token]);
                int result = completeTokens.Count == tokenToUserDTO.Count ? 1 : 0;
                state = result == 1 ? FightRoomState.Fight : state;

                Dictionary <int, UserDTO> enterUserDTODic = new Dictionary <int, UserDTO>();

                foreach (var item in completeTokens)
                {
                    enterUserDTODic.Add(tokenToModelID[item.Key], item.Value);
                }

                Broadcast(completeTokens.Keys.ToList(), 1003004, result, enterUserDTODic);
            }
        }