public static Line ReadLine(NetIncomingMessage message, bool isServer=false) { float removeAnimation = message.ReadFloat(); Vector2 animationEnd = message.ReadVector2(); int turn = message.ReadInt32(); bool wasGrowing = message.ReadBoolean(); Vector2 begin = message.ReadVector2(); Vector2 end = message.ReadVector2(); float thickness = message.ReadFloat(); if (!isServer) { animationEnd = Constants.FromField(animationEnd); begin = Constants.FromField(begin); end = Constants.FromField(end); } Line l = new Line (begin, end); l.removeAnimationTime = removeAnimation; l.animationEnd = animationEnd; l.turn = turn; l.color = Constants.COLORS[turn]; l.wasGrowing = wasGrowing; l.thickness = thickness; return l; }
private void ReadData(AttributeTypeID Type, NetIncomingMessage Message) { switch(Type) { case AttributeTypeID.Float: Data = Message.ReadFloat(); break; case AttributeTypeID.Int: Data = Message.ReadInt32(); break; case AttributeTypeID.List: Console.WriteLine("AttributeSystem: List<> Type not supported on network sync"); break; case AttributeTypeID.Long: Data = Message.ReadInt64(); break; case AttributeTypeID.Rectangle: Data = Message.ReadRectangle(); break; case AttributeTypeID.String: Data = Message.ReadString(); break; case AttributeTypeID.Vector2: Data = Message.ReadVector2(); break; case AttributeTypeID.Bool: Data = Message.ReadBoolean(); break; default: Console.WriteLine("Invalid Attribute Type: {0}", Type.ToString()); break; } }
public ProjectileTransferableData(NetIncomingMessage message) { SessionID = message.ReadInt64(); ID = message.ReadInt32(); IsValid = message.ReadBoolean(); Position = message.ReadVector2(); Angle = message.ReadFloat(); }
public void WorkWithData(NetIncomingMessage inc) { int ind = inc.ReadInt32(); EventType e = (EventType)inc.ReadByte(); NetOutgoingMessage msg = server.CreateMessage(); switch (e) { case EventType.ConnectCircles: Vector2 begin = inc.ReadVector2(); Vector2 end = inc.ReadVector2(); Log(ind + " player tring to connect " + begin + " w/ " + end); if (ind == CurrentTurn && Connect(begin, end)) { Log("He did it"); msg.Write((byte)EventType.ConnectCircles); msg.Write(CurrentTurn); msg.Write(begin); msg.Write(end); SendToAll(msg); if (Circle.CheckWon(CurrentField, CurrentTurn)) { SendWon(); } NextTurn(); } else { Log("Lol no"); msg.Write((byte)EventType.RemoveLine); Line.Write(msg, Line.ReadLine(inc, true), true); SendToAll(msg); } break; case EventType.CurrentLine: Line l = Line.ReadLine(inc, true); msg.Write((byte)EventType.CurrentLine); Line.Write(msg, l, true); SendToAll(msg, inc.SenderConnection); break; } }
public void Unpack(NetIncomingMessage msg) { username = msg.ReadString(); position = msg.ReadVector2(); sequence = msg.ReadByte(); }
public void Unpack(NetIncomingMessage msg) { username = msg.ReadString(); position = msg.ReadVector2(); id = msg.ReadInt32(); }
public void Read(NetIncomingMessage msg) { this.PlayerCount = msg.ReadInt32(); this.Players = new Dictionary<long, Player>(); for (int i = 0; i < this.PlayerCount; i++) { long RUI = msg.ReadInt64(); Vector2 position = msg.ReadVector2(); Player player = new Player(RUI, playerTexture, new Color(msg.ReadByte(), msg.ReadByte(), msg.ReadByte())); player.Position = position; this.Players.Add(RUI, player); } }
public static MsgSpawnPacket Read(NetIncomingMessage packet) { Byte slot = packet.ReadByte(); Vector2 position = packet.ReadVector2(); Single rotation = packet.ReadSingle(); return new MsgSpawnPacket(slot, position, rotation); }
public void UpdateFromMovementInput(NetIncomingMessage MovementPacket) { Vector2 Vector = MovementPacket.ReadVector2(); if (Vector != IdleDirection) { //If We Moved Update Location += (Vector * 3); NetOutgoingMessage MovementBroadCast = NetworkManager.Server.CreateMessage(); MovementBroadCast.Write((byte)MessageTypes.ActorMovement); MovementBroadCast.Write(ID); MovementBroadCast.WriteVector2(Location); NetworkManager.Server.SendToAll(MovementBroadCast, NetDeliveryMethod.Unreliable); } if (Vector != LastDirection) { NetOutgoingMessage Message = NetworkManager.Server.CreateMessage(); Message.Write((byte)MessageTypes.ActorAnimate); Message.Write(ID); Message.Write(GetAnimationForDirection(Vector)); Message.Write(true); NetworkManager.Server.SendToAll(Message, NetDeliveryMethod.ReliableOrdered); } LastDirection = Vector; PostMovement(MovementPacket.SenderConnection); }
private void RecievedPlayerShipPosition( byte playerNumber, NetIncomingMessage msg ) { Player playerRecieved = GetPlayerByPlayerNumber ( playerNumber ); if ( playerRecieved != null ) { //Local client knows of this player. Update it. Vector2 position = msg.ReadVector2 ( ); float rotationangle = msg.ReadFloat ( ); Vector2 direction = msg.ReadVector2 ( ); Vector2 velocity = msg.ReadVector2 ( ); playerRecieved.ship.UpdateRemotePosition ( position, rotationangle, direction, velocity ); _client.Recycle ( msg ); } else { //Local client does not know about this player. Add it to the other players list. RequestInfoAboutPlayer ( playerNumber ); } }
private void WorkWithData(NetIncomingMessage msg) { EventType e = (EventType)msg.ReadByte(); switch (e) { case EventType.GameStarted: int i = msg.ReadInt32(); PlayerIndex = i; if (OnGameStarted != null) { OnGameStarted(i); } break; case EventType.ConnectCircles: if (OnConnectCircles != null) { OnConnectCircles(msg.ReadInt32(), msg.ReadVector2(), msg.ReadVector2()); } break; case EventType.NextTurn: if (OnNextTurn != null) { OnNextTurn(msg.ReadInt32()); } break; case EventType.RemoveLine: if (OnRemoveLine != null) { OnRemoveLine(Line.ReadLine(msg)); } break; case EventType.OnWon: if (OnWon != null) { OnWon(msg.ReadInt32()); } Disconnect(); break; case EventType.CurrentLine: if (OnCurrentLineChanged != null) { OnCurrentLineChanged(Line.ReadLine(msg)); } break; case EventType.Disconnected: if (OnDisconnect != null) { OnDisconnect(msg.ReadString()); } break; } }
/// <summary> /// The decode. /// </summary> /// <param name="im"> /// The im. /// </param> public void Decode(NetIncomingMessage im) { this.Id = im.ReadInt64(); this.MessageTime = im.ReadDouble(); this.Position = im.ReadVector2(); this.Velocity = im.ReadVector2(); this.FiredByPlayer = im.ReadBoolean(); this.FiredById = im.ReadInt64(); }
public static MsgBeginShotPacket Read(NetIncomingMessage packet) { Byte slot = packet.ReadByte(); Byte shotSlot = packet.ReadByte(); Vector2 position = packet.ReadVector2(); Single rotation = packet.ReadSingle(); Vector2 velocity = packet.ReadVector2(); return new MsgBeginShotPacket(slot, shotSlot, position, rotation, velocity); }
public static void UpdateFromPacket(NetIncomingMessage Message) { long ActorID = Message.ReadInt64(); if (!DrawableActors.ContainsKey(ActorID)) return; DrawableActors[ActorID].Location = Message.ReadVector2(); }
public void Decode(NetIncomingMessage im) { this.Target = im.ReadVector2(); }
public static void SpawnActor(NetIncomingMessage Message) { ObjectTypes ActorType = (ObjectTypes)Message.ReadInt32(); switch (ActorType) { case ObjectTypes.PlayerActor: #region Player var ID = Message.ReadInt64(); var Sex = Message.ReadByte(); var Location = Message.ReadVector2(); switch(Sex) { case 0: AnimatedActor Actor = new AnimatedActor(new SpriteSheet( GameClient.ContentManager.Load<Texture2D>("Natkuma"), 40, 60)); Actor.RegisterAnimation("WalkNorth", new List<int>() { 23, 24, 25, 26, 27, 26, 25, 24, 23, 32, 31, 30, 29, 28, 29, 30, 31, 32 }); Actor.RegisterAnimation("WalkEast", new List<int>() { 10, 3, 4, 5, 6, 7, 8, 9 }); Actor.RegisterAnimation("WalkSouth", new List<int>() { 34, 35, 36, 37, 38, 37, 36, 35, 34, 43, 42 ,41, 40, 39, 40, 41, 42, 43 }); Actor.RegisterAnimation("WalkWest", new List<int>() { 11, 18, 17, 16, 15, 14, 13, 12 }); Actor.PlayAnimation("WalkEast", true); Actor.ID = ID; Actor.Sex = Sex; Actor.Location = Location; Actor.Scale = 1; if (!DrawableActors.ContainsKey(Actor.ID)) DrawableActors.Add(Actor.ID, Actor); else Console.WriteLine("Error: Avatar Already Added for Key {0}", Actor.ID); break; case 1: AnimatedActor ActorFem = new AnimatedActor(new SpriteSheet( GameClient.ContentManager.Load<Texture2D>("Malice"), 40, 60)); ActorFem.RegisterAnimation("WalkNorth", new List<int>() { 35, 36, 37, 38, 39, 40, 39, 38, 37, 36, 35, 41, 42, 43, 44, 45, 44, 43, 42, 41 }); ActorFem.RegisterAnimation("WalkEast", new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }); ActorFem.RegisterAnimation("WalkSouth", new List<int>() { 23, 24, 25, 26, 27, 28, 27, 26, 25, 24, 23, 29, 30, 31, 32, 33 }); ActorFem.RegisterAnimation("WalkWest", new List<int>() { 12, 13, 14, 15, 16, 17, 18, 19, 20, 21 }); ActorFem.PlayAnimation("WalkEast", true); ActorFem.ID = ID; ActorFem.Sex = Sex; ActorFem.Location = Location; ActorFem.Scale = 1; if (!DrawableActors.ContainsKey(ActorFem.ID)) DrawableActors.Add(ActorFem.ID, ActorFem); else { DrawableActors[ActorFem.ID] = ActorFem; } break; default: Console.WriteLine("Error: Invalid Sex Type: {0}", Sex); break; } break; #endregion case ObjectTypes.Tree: #region Tree Tree T = new Tree(Message); if (!DrawableActors.ContainsKey(T.ID)) DrawableActors.Add(T.ID, T); else { DrawableActors[T.ID] = T; } break; #endregion case ObjectTypes.Rock: Rock R = new Rock(Message); if (!DrawableActors.ContainsKey(R.ID)) DrawableActors.Add(R.ID, R); else DrawableActors[R.ID] = R; break; default: Console.WriteLine("Unknown ActorType Creation: {0}", ActorType); break; } }
/// <summary> /// The decode. /// </summary> /// <param name="im"> /// The im. /// </param> public void Decode(NetIncomingMessage im) { this.Id = im.ReadInt64(); this.MessageTime = im.ReadDouble(); this.Position = im.ReadVector2(); this.Velocity = im.ReadVector2(); this.Rotation = im.ReadSingle(); }
public static void Read(Packets Packet, NetIncomingMessage I) { switch (Packet) { case Packets.Connection: if (MultiPlayer.Type("Game") == MultiPlayer.Types.Server) { ulong ClientVersion = I.ReadUInt64(); if (ClientVersion == Globe.Version) { Player Connector = Player.Add(new Player(I.ReadString()) { Connection = I.SenderConnection }); if (Connector != null) { MultiPlayer.Send("Game", MultiPlayer.Construct("Game", Packet, Connector.Slot, Connector.Name), I.SenderConnection); List<object> Details = new List<object>(); for (byte i = 0; i < Players.Length; i++) if ((Players[i] != null) && (Players[i] != Connector)) { Details.Add(true); Details.Add(Players[i].Name); } else Details.Add(false); I.SenderConnection.Approve(MultiPlayer.Construct("Game", Packets.Initial, (byte)Players.Length, Connector.Slot, Details)); } else I.SenderConnection.Deny("Full"); } else I.SenderConnection.Deny("Version indifference, Client: " + ClientVersion + " - Server: " + Globe.Version); } else if (MultiPlayer.Type("Game") == MultiPlayer.Types.Client) { byte Slot = I.ReadByte(); Player.Set(Slot, new Player(I.ReadString())); } break; case Packets.Disconnection: Player Disconnector = ((MultiPlayer.Type("Game") == MultiPlayer.Types.Server) ? Player.Get(I.SenderConnection) : ((MultiPlayer.Type("Game") == MultiPlayer.Types.Client) ? Players[I.ReadByte()] : null)); if (Disconnector != null) Player.Remove(Disconnector); if (MultiPlayer.Type("Game") == MultiPlayer.Types.Server) MultiPlayer.Send("Game", MultiPlayer.Construct("Game", Packets.Disconnection, Disconnector.Slot), I.SenderConnection); break; case Packets.Initial: if (MultiPlayer.Type("Game") == MultiPlayer.Types.Client) { Players = new Player[I.ReadByte()]; Self = Player.Set(I.ReadByte(), new Player(MpName) { }); for (byte i = 0; i < Players.Length; i++) if (I.ReadBoolean()) { Players[i] = new Player(i, I.ReadString()); } Timers.Add("Positions", (1 / 30d)); State = States.Game; } break; case Packets.Position: Player Sender = ((MultiPlayer.Type("Game") == MultiPlayer.Types.Server) ? Player.Get(I.SenderConnection) : null); Vector2 Position; float Angle; if (MultiPlayer.Type("Game") == MultiPlayer.Types.Server) { if (Sender != null) { Sender.Position = I.ReadVector2(); Sender.Angle = I.ReadFloat(); } } else if (MultiPlayer.Type("Game") == MultiPlayer.Types.Client) { byte Count = (byte)((I.LengthBytes - 1) / 12); for (byte i = 0; i < Count; i++) { Sender = Players[I.ReadByte()]; Position = I.ReadVector2(); Angle = I.ReadFloat(); if (Sender != null) { Sender.Position = Position; Sender.Angle = Angle; } } } break; } }
public static MsgPlayerClientUpdatePacket Read(NetIncomingMessage packet) { Vector2 position = packet.ReadVector2(); Single rotation = packet.ReadSingle(); return new MsgPlayerClientUpdatePacket(position, rotation); }