protected override bool OnHandleMessage(IMessage message, PhotonServerPeer serverPeer) { var para = new Dictionary <byte, object>() { { (byte)ClientParameterCode.PeerId, message.Parameters[(byte)ClientParameterCode.PeerId] }, { (byte)ClientParameterCode.SubOperationCode, MessageSubCode.PullQueue }, }; var instance = Util.GetCPlayerInstance(Server, message); var fight = instance.CurrentFight; var success = _fightManager.LeaveQueue(instance); if (success) { instance.SendPacket(new PulledQueuesPacket(_fightManager)); if (fight != null) { var fightParticipants = new FightQueueParticipantsPacket(fight); foreach (var player in fight.getPlayers.Values) { player.SendPacket(new PulledQueuesPacket(_fightManager)); player.SendPacket(fightParticipants); } } } else { serverPeer.SendOperationResponse(new OperationResponse(message.Code) { ReturnCode = (int)ErrorCode.OperationInvalid, DebugMessage = "Cannot leave this queue", Parameters = para }, new SendParameters()); } return(true); }
public bool addPlayer(int team, CCharacter player) { //TODO: redo this ugly temp logic. create a Team class var targetTeam = (team != 1) ? TeamBlue : TeamRed; if (player.CurrentFight == null) { targetTeam.Add(player.ObjectId, player); player.CurrentFight = this; CharFightData.Add(player, new CurrentFightCharData() { Team = (team != 1) ? FightTeam.Blue : FightTeam.Red, TotalDamage = 0, WLT = null }); TotalTeamHealth[(team != 1) ? FightTeam.Blue : FightTeam.Red] += (int)player.Stats.GetStat(new CurrHealth()); if (DEBUG) { Log.DebugFormat("({0} added to {1}) blue team HP: {2} / red team HP: {3}", player.ToString(), (team != 1) ? FightTeam.Blue : FightTeam.Red, TotalTeamHealth[FightTeam.Blue], TotalTeamHealth[FightTeam.Red]); } shouldSendReadyPrompts(); if (player is CBotInstance) { SetPlayerReady(player.ObjectId, true); } var fightParticipants = new FightQueueParticipantsPacket(this); var pulledQueues = new PulledQueuesPacket(getPlayers.Values.FirstOrDefault().FightManager); foreach (var cplayer in getPlayers.Values) { cplayer.SendPacket(pulledQueues); cplayer.SendPacket(fightParticipants); } return(true); } return(false); }