コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }