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 void CleanUp() { //abort attacks //remove created queues FightManager.LeaveQueue(this); //remove temp items //remove LFG //Stop some timers //stop crafting Target = null; //stop temp buffs //decay from server Decay(); //unsummon pets //notify guild/friends of logoff //cancel trading }