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 6: // spawn Console.WriteLine($"E: Spawned enemy {e.Args[0]} at {e.Args[3]}"); ClientEnemyManager.AddEnemyByTemplate((EnemyType)e.Args[0], e.Args[1], e.Args[2], ClientMapManager.Get(e.Args[3])); UIManager.UpdateCameras([e.Args[3]]); break; case 7: // movement Console.WriteLine($"E: Enemy {e.Args[0]} moved to {e.Args[1]}"); int oldPos = ClientEnemyManager.Get(e.Args[0]).Location!.Id; ClientEnemyManager.Move(e.Args[0], ClientMapManager.Get(e.Args[1])); UIManager.UpdateCameras([oldPos, e.Args[1]]); break; case 9: Console.WriteLine($"E: Enemy {e.Args[0]} reset to {e.Args[1]}"); int preResetPos = ClientEnemyManager.Get(e.Args[0]).Location!.Id; ClientEnemyManager.Move(e.Args[0], ClientMapManager.Get(e.Args[1])); UIManager.UpdateCameras([preResetPos, e.Args[1]]); break; case 10: Console.WriteLine($"E: Spot:{e.Args[0]} turned {(e.Args[1] == 1 ? "on" : " off")}"); ClientEnemyManager.Get(e.Args[0]).Sprite.SetTexture(e.Args[1] == 1 ? 0 : 2); break; } } } }