public void execute(GameSession gameSession, byte[] bytes) { var newVector = new Vector(0, 0); if (gameSession.Player.UsingNewClient) { var simpleCmd = new SimpleCommand(bytes); simpleCmd.readShort(); var cmd = new MovementRequest(simpleCmd); cmd.readCommand(); newVector = new Vector(cmd.NewX, cmd.NewY); Console.WriteLine(JsonConvert.SerializeObject(newVector)); } else { var parser = new ByteParser(bytes); int currentPosX = parser.Int(); int targetPosY = parser.Int(); int targetPosX = parser.Int(); int currentPosY = parser.Int(); newVector = new Vector(targetPosX, targetPosY); } MovementController.Move(gameSession.Player, newVector); }
public void execute(GameSession gameSession, byte[] bytes) { var parser = new ByteParser(bytes); if (gameSession == null) { return; } var targetId = parser.Int(); // Get if targetId is valid var player = gameSession.Player; if (player.Selected == null) { return; } if (!player.Spacemap.Entities.ContainsKey(targetId) || player.Selected.Id != targetId) { Debug.WriteLine("Selected ID: " + player.Selected.Id + " Target ID: " + targetId); return; } Debug.WriteLine("Attacking " + targetId); player.Controller.Attacking = true; player.Controller.LaserAttack(); }
public void execute(GameSession gameSession, byte[] bytes) { var parser = new ByteParser(bytes); var targetFormationId = parser.Int(); gameSession.Player.Controller.Miscs.ChangeDroneFormation((DroneFormation)targetFormationId); }
public void execute(GameSession gameSession, byte[] bytes) { var parser = new ByteParser(bytes); if (gameSession == null) { return; } var targetId = parser.Int(); var spacemap = gameSession.Player.Spacemap; try { foreach ( var entry in spacemap.Entities.Where( entry => entry.Value.Id == targetId && gameSession.Player.InRange(entry.Value))) { if (entry.Value is Player) { if (!entry.Value.Controller.Targetable) { gameSession.Client.Send(PacketBuilder.LegacyModule("0|A|STM|msg_own_targeting_harmed").Bytes); return; } } gameSession.Player.Selected = entry.Value; gameSession.Client.Send(PacketBuilder.ShipSelectionCommand(entry.Value)); return; } } catch (Exception e) { Debug.WriteLine(e.StackTrace); } }
public static void Handle(byte[] bytes, GameClient client) { var parser = new ByteParser(bytes); if (parser.CMD_ID == 666) { new ShipInitalizationHandler(client, parser.Int(), parser.UTF()); return; } if (parser.CMD_ID == newcommands.ShipInitializationRequest.ID) { // Command received => trying to read = #bug var simpleCmd = new SimpleCommand(bytes); var cmd = new newcommands.ShipInitializationRequest(simpleCmd); cmd.readShort(); cmd.readCommand(); new ShipInitalizationHandler(client, cmd.playerId, cmd.sessionId, true); return; } var gameSession = World.StorageManager.GetGameSession(client.UserId); if (gameSession != null) { if (gameSession.Player.UsingNewClient) { if (HandledNewClientCommands.ContainsKey(parser.CMD_ID)) { HandledNewClientCommands[parser.CMD_ID].execute(gameSession, bytes); } } else { if (HandledCommands.ContainsKey(parser.CMD_ID)) { HandledCommands[parser.CMD_ID].execute(gameSession, bytes); } } if (parser.CMD_ID == LegacyModule.ID || parser.CMD_ID == newcommands.LegacyModule.ID) { var packet = parser.UTF(); if (packet.Contains('|')) { var splittedPacket = packet.Split('|'); if (HandledLegacyCommands.ContainsKey(splittedPacket[0])) { HandledLegacyCommands[splittedPacket[0]].execute(gameSession, splittedPacket); } } else { if (HandledLegacyCommands.ContainsKey(packet)) { HandledLegacyCommands[packet].execute(gameSession, new [] { packet }); } } } } }