Esempio n. 1
0
        private static bool OnProcessPlayerInfo(NetServer server, int id, NetIncomingMessage msg)
        {
            Msg_AgarPlayInfo r  = new Msg_AgarPlayInfo();
            r.R(msg);
            uint uid            = r.UserId;
            if (r.Operat == Msg_AgarPlayInfo.Changed)
            {
                if (!PlayerBallMgr.IsContain(uid)) return true;

                PlayerBall newBall  = PlayerBallMgr.Get(uid);
                uint tag            = r.Tag;
                if (GameMessageHelper.Is_Changed(tag, GameMessageHelper.POSITION_TAG))
                {
                    newBall.X = r.X;
                    newBall.Y = r.Y;
                }
                if (GameMessageHelper.Is_Changed(tag, GameMessageHelper.RADIUS_TAG))
                {
                    newBall.Radius = r.Radius;
                }
                if (GameMessageHelper.Is_Changed(tag, GameMessageHelper.COLOR_TAG))
                {
                    newBall.Color = r.Color;
                }
                if (GameMessageHelper.Is_Changed(tag, GameMessageHelper.NAME_TAG))
                {
                    newBall.Name = r.Name;
                }

                bool RaduisChanged  = false;
                bool FoodChanged    = false;
                bool PlayerChanged  = false;
                // 检查食物有没有被吃
                if (UpdateFood(uid, ref newBall))
                {
                    FoodChanged = true;
                }
                // 检查能不能吃其他玩家
                if (UpdatePlayer(uid, ref newBall))
                {
                    PlayerChanged = true;
                }
                if (FoodChanged || PlayerChanged)
                {
                    r.Tag           = r.Tag | GameMessageHelper.RADIUS_TAG;
                    r.Radius        = newBall.Radius;
                    var self        = new Msg_AgarSelf();
                    self.Operat     = Msg_AgarSelf.GroupUp;
                    self.Radius     = newBall.Radius;
                    RaduisChanged   = true;
                    SendMessage(server, self, msg.SenderConnection);
                }
                PlayerBallMgr.Change(uid, newBall);

                // 检查会不会被其他玩家吃
                uint EatId = 0;
                if (UpdateOtherPlayer(uid, newBall, out EatId))
                {
                    if (PlayerBallMgr.IsContain(EatId))
                    {
                        var EatBall     = PlayerBallMgr.Get(EatId);
                        var conn        = AgarConnMgr.Get(EatId);
                        EatBall.Radius  += newBall.Radius;
                        PlayerBallMgr.Change(EatId, EatBall);

                        // 向其他玩家发送
                        Msg_AgarPlayInfo eatMsg = new Msg_AgarPlayInfo();
                        eatMsg.Operat           = Msg_AgarPlayInfo.Changed;
                        eatMsg.UserId           = EatId;
                        eatMsg.Tag              = GameMessageHelper.RADIUS_TAG;
                        eatMsg.Radius           = EatBall.Radius;
                        RaduisChanged           = true;
                        SendMessageExceptOne(server, eatMsg, conn);

                        // 向自身发送
                        var selfEatMsg          = new Msg_AgarSelf();
                        selfEatMsg.Operat       = Msg_AgarSelf.GroupUp;
                        selfEatMsg.Radius       = EatBall.Radius;
                        SendMessage(server, selfEatMsg, conn);
                    }
                }

                if (RaduisChanged)
                {
                    MarkMgr.Update(uid, newBall.Radius);
                }
            }
            SendMessageExceptOne(server, r, msg.SenderConnection);
            return true;
        }
Esempio n. 2
0
 public void OnDataMessage(object sender, NetIncomingMessage im)
 {
     if (DataMessage != null)
     {
         int id = im.ReadInt32();
         if (id == MsgId.ChatToAll)
         {
             MsgBase msg = new Msg_ChatToAll();
             msg.R(im);
             DataMessage(sender, new DataMessageArgs(msg));
         }
         else if (id == MsgId.AccountRegRsp)
         {
             MsgBase msg = new Msg_AccountRegRsp();
             msg.R(im);
             DataMessage(sender, new DataMessageArgs(msg));
         }
         else if(id == MsgId.AgarLoginRsp)
         {
             MsgBase msg = new Msg_AgarLoginRsp();
             msg.R(im);
             DataMessage(sender, new DataMessageArgs(msg));
         }
         else if(id == MsgId.AgarFixedBall)
         {
             MsgBase msg = new Msg_AgarFixedBall();
             msg.R(im);
             DataMessage(sender, new DataMessageArgs(msg));
         }
         else if(id == MsgId.AgarPlayInfo)
         {
             MsgBase msg = new Msg_AgarPlayInfo();
             msg.R(im);
             DataMessage(sender, new DataMessageArgs(msg));
         }
         else if(id == MsgId.AgarFixBallPack)
         {
             MsgBase msg = new Msg_AgarFixBallPack();
             msg.R(im);
             DataMessage(sender, new DataMessageArgs(msg));
         }
         else if(id == MsgId.AgarPlayInfoPack)
         {
             MsgBase msg = new Msg_AgarPlayInfoPack();
             msg.R(im);
             DataMessage(sender, new DataMessageArgs(msg));
         }
         else if(id == MsgId.AgarSelf)
         {
             MsgBase msg = new Msg_AgarSelf();
             msg.R(im);
             DataMessage(sender, new DataMessageArgs(msg));
         }
         else if(id == MsgId.AgarMarkListPark)
         {
             MsgBase msg = new Msg_AgarMarkListPack();
             msg.R(im);
             DataMessage(sender, new DataMessageArgs(msg));
         }
         else if(id == MsgId.HappyPlayerLoginRsp)
         {
             MsgBase msg = new Msg_HappyPlayerLoginRsp();
             msg.R(im);
             DataMessage(sender, new DataMessageArgs(msg));
         }
         else if(id == MsgId.HappyOtherPlayerLogin)
         {
             MsgBase msg = new Msg_HappyOtherPlayerLogin();
             msg.R(im);
             DataMessage(sender, new DataMessageArgs(msg));
         }
         else if(id == MsgId.HappyPlayerMove)
         {
             MsgBase msg = new Msg_HappyPlayerMove();
             msg.R(im);
             DataMessage(sender, new DataMessageArgs(msg));
         }
         else if(id == MsgId.HappyPlayerQuit)
         {
             MsgBase msg = new Msg_HappyPlayerQuit();
             msg.R(im);
             DataMessage(sender, new DataMessageArgs(msg));
         }
         else if(id == MsgId.HappyPlayerPack)
         {
             MsgBase msg = new Msg_HappyPlayerPack();
             msg.R(im);
             DataMessage(sender, new DataMessageArgs(msg));
         }
     }
 }