public PResult HandleBattleCreated(string userId) { StepLocker stepLocker = this.GetFromUserId(userId); if (stepLocker == null) { return(PResult.STEPLOCKER_NOT_FOUND); } ++stepLocker.createdCount; if (stepLocker.createdCount == stepLocker.userCount) { ThreadPool.QueueUserWorkItem(state => { stepLocker.Start(); while (!stepLocker.finished) { stepLocker.Update(); Thread.Sleep(5); } }); Logger.Log($"创建战场:{stepLocker.id}"); return(PResult.SUCCESS); } return(PResult.WAIT_FOR_USER_BATTLE_CREATED); }
public PResult HandleAction(string userId, _DTO_frame_info dto) { StepLocker stepLocker = this.GetFromUserId(userId); if (stepLocker == null) { return(PResult.STEPLOCKER_NOT_FOUND); } stepLocker.HandleAction(dto); return(PResult.SUCCESS); }
public PResult HandleEndBattle(string userId) { StepLocker stepLocker = this.GetFromUserId(userId); if (stepLocker == null) { return(PResult.STEPLOCKER_NOT_FOUND); } ++stepLocker.endedCount; if (stepLocker.endedCount >= stepLocker.userCount) { stepLocker.finished = true; Logger.Log($"战斗结束:{stepLocker.id}"); return(PResult.SUCCESS); } return(PResult.WAIT_FOR_USER_ENDED); }
public PResult Leave(string userId) { if (!this.UserInBattle(userId)) { return(PResult.USER_NOT_INT_BATTLE); } StepLocker stepLocker = this.GetFromUserId(userId); this._uidToLocker.TryRemove(userId, out _); int userCount = stepLocker.RemoveUser(userId); if (userCount == 0) { stepLocker.finished = true; Logger.Log($"战场结束:{stepLocker.id}"); } return(PResult.SUCCESS); }
private void HandleBattleCreated(IUserToken token) { User user = this._userBiz.GetUser(token); if (user == null) { return; } if (!this._battleBiz.UserInBattle(user.id)) { return; } PResult result = this._battleBiz.HandleBattleCreated(user.id); if (result == PResult.SUCCESS) { StepLocker stepLocker = this._battleBiz.GetFromUserId(user.id); stepLocker.Brocast(ProtocolManager.PACKET_BATTLE_ACMD_BATTLE_START()); } }
private void HandleEndBattle(IUserToken token, _DTO_byte dto) { User user = this._userBiz.GetUser(token); if (user == null) { return; } if (!this._battleBiz.UserInBattle(user.id)) { return; } PResult result = this._battleBiz.HandleEndBattle(user.id); if (result == PResult.SUCCESS) { StepLocker stepLocker = this._battleBiz.GetFromUserId(user.id); stepLocker.Brocast(ProtocolManager.PACKET_BATTLE_ACMD_BATTLE_END(dto.value)); //todo 信任任何一个客户端带来的胜利消息 } }
public PResult Create(Room room) { string rid = Utils.MakeRidFromID(room.map); int seed = this._rnd.Next(); StepLocker stepLocker = new StepLocker(rid); int count = room.teamOne.Count; for (int i = 0; i < count; i++) { string userId = room.teamOne[i].id; this._uidToLocker[userId] = stepLocker; stepLocker.AddUser(userId); } count = room.teamTwo.Count; for (int i = 0; i < count; i++) { string userId = room.teamTwo[i].id; this._uidToLocker[userId] = stepLocker; stepLocker.AddUser(userId); } this._idToLocker[stepLocker.id] = stepLocker; _DTO_player_info[] players = DTOHelper.GetPlayerInfoInRoom(room); stepLocker.ForeachUser(userId => { IUserToken token = BizFactory.USER_BIZ.GetToken(userId); token.CALL_BATTLE_ACMD_ENTER_BATTLE( StepLocker.FRAME_RATE, StepLocker.FRAMES_PER_KEYFRAME, rid, players, seed, userId); }); return(PResult.SUCCESS); }