using FNAF_Server.Map; using PacketLib; namespace FNAF_Server; public class CommandProcessor { public static void Evaluate(PlayerCommand[] commands, int pid) { ServerPlayer currentPlayer = Server.Players[pid]; foreach (var playerCommand in commands){ switch (playerCommand.ID){ case 0: Console.WriteLine($"C: Player {pid} switched to camera {playerCommand.Args[0]}"); Server.SendUpdateToAll([GameEvent.SWITCH_CAM(pid, playerCommand.Args[0])]); break; case 1: bool monitorState = playerCommand.Args[0] == 1; currentPlayer.state.monitorUp = monitorState; Console.WriteLine($"C: Player {pid} toggled camera {(monitorState ? "on" : "off")}"); Server.SendUpdateToAll([GameEvent.TOGGLE_MONITOR(pid, monitorState)]); break; case 2: bool doorState = playerCommand.Args[1] == 1; currentPlayer.state.doorStates[playerCommand.Args[0]] = doorState; Console.WriteLine($"C: Player {pid} {(doorState ? "closed" : "opened")} door {playerCommand.Args[0]}"); Server.SendUpdateToAll([GameEvent.TOGGLE_DOOR_OFFICE(pid,playerCommand.Args[0] ,doorState)]); break; case 3: TileConnector? door = MapManager.Get(playerCommand.Args[0]).GetConnector(playerCommand.Args[1]); if(door == null) return; door.Blocked = playerCommand.Args[2] == 1; Console.WriteLine($"C: Player {pid} {(door.Blocked ? "closed" : "opened")} door {(playerCommand.Args[0], playerCommand.Args[1])}"); Server.SendUpdateToAll([GameEvent.TOGGLE_DOOR_REMOTE(pid, (playerCommand.Args[0], playerCommand.Args[1]), door.Blocked)]); break; } } } }