using System; using FNAF_Clone.GUI; using FNAF_Clone.Map; using GlobalClassLib; using PacketLib; namespace FNAF_Clone; public class EventProcessor { public static void Evaluate(GameEvent[] events) { foreach (var e in events){ switch (e.ID){ case 0: // join Console.WriteLine("E: Player joined"); break; case 1: // leave Console.WriteLine("E: Player left"); break; case 2: // switch cam if (Client.Player.state.pid != e.Args[0]){ UIManager.ChangeCameraOpponent(e.Args[1]); break; } if (Client.Player.state.camera != e.Args[1]) Console.WriteLine("!!! DESYNC: CAMERA STATE"); Console.WriteLine($"E: player {e.Args[0]} switched to camera {e.Args[1]}"); break; case 3: // toggle cam Console.WriteLine($"E: Player {e.Args[0]} toggled monitor {(e.Args[1] == 0 ? "off" : "on")}"); if (e.Args[0] != Client.Player.state.pid){ UIManager.ChangeMonitorStateOpponent(e.Args[1] == 1); break; } if (Client.Player.state.monitorUp != (e.Args[1] == 1)) Console.WriteLine("!!! DESYNC: MONITOR STATE"); // UIManager.ChangeMonitorState(e.Args[1] == 1); break; case 4: // toggle door Console.WriteLine($"E: Player {e.Args[0]} {(e.Args[2] == 1 ? "closed" : "opened")} door {e.Args[1]}"); if (e.Args[0] == Client.Player.state.pid){ if (Client.Player.state.doorStates[e.Args[1]] != (e.Args[2] == 1)) Console.WriteLine("!!! DESYNC: DOOR STATE"); break; } Client.Opponent.state.doorStates[e.Args[1]] = e.Args[2] == 1; UIManager.ChangeDoorStateOpponent((Direction)e.Args[1], e.Args[2] == 1); break; case 5: // toggle remote door Console.WriteLine($"E: Player {e.Args[0]} {(e.Args[3] == 1 ? "closed" : "opened")} door {e.Args[1]}-{e.Args[2]}"); if (e.Args[0] == Client.Player.state.pid){ if (ClientMapManager.GetConnector((e.Args[1], e.Args[2])).Blocked != (e.Args[3] == 1)) Console.WriteLine("!!! DESYNC: REMOTE DOOR STATE"); break; } ClientMapManager.GetConnector((e.Args[1], e.Args[2])).Blocked = e.Args[3] == 1; UIManager.ChangeRemoteDoorState((e.Args[1], e.Args[2]), e.Args[3] == 1); break; case -1: // movement throw new NotImplementedException(); } } } }