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()); }
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); }
private void StartFight(Room sender, PlayerController player) { if (_state == FightRoomState.Waiting) { _state = FightRoomState.WaveOne; SpawnWaveOne(); LockDownRoom(); } }
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; } }
/// <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); } }