private bool ProcessPlayerInfo(StreamWriter s, PacketTypes p, PlayerInfo pi) { switch (p) { case PacketTypes.REQUEST: { Player playa = WorldInterface.GetPlayer(pi.id, pi.key); if (playa != null) { PlayerID = pi.id; var coord = playa.GetPosition(); var vel = playa.GetVelocity(); pi = new PlayerInfo(PacketTypes.REQUESTED) { id = playa.Id, x = coord.x, y = coord.y, vx = vel.x, vy = vel.y }; s(NetHelpers.ConvertStructToBytes(pi)); //Send over object positions in the region surrounding our player //DON'T DO THIS YET... Still thinking about it, Client needs to support it foreach (var obj in WorldInterface.GetRegionObjects(coord.x - 10, coord.x + 10, coord.y - 10, coord.y + 10)) { if (obj == null) { continue; } var oc = obj.GetPosition(); var oi = new ObjectInfo(PacketTypes.REQUESTED) { id = obj.Id, objecttype = (int)obj.ObjectType, x = oc.x, y = oc.y, vx = 0, vy = 0, }; s(NetHelpers.ConvertStructToBytes(oi)); } } return(true); } } return(false); }
private bool ProcessPlayerControl(StreamWriter s, PacketTypes p, PlayerControl pi) { switch (p) { case PacketTypes.SET: { Player playa = WorldInterface.GetPlayer(pi.id, pi.key); if (playa != null) { playa.SetDirection(pi.direction, pi.paces); } return(true); } } return(false); }