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; }
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)); } } }