Eventy upraveny pro podporu dvou hráčů. Všechny dveře se zobrazují na správných pozicích pro oba hráče.
This commit is contained in:
parent
cea56112ea
commit
3049417914
18 changed files with 157 additions and 75 deletions
64
FNAF_Clone/EventProcessor.cs
Normal file
64
FNAF_Clone/EventProcessor.cs
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
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]) return;
|
||||
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
|
||||
if (e.Args[0] == Client.Player.state.pid && Client.Player.state.monitorUp != (e.Args[1] == 1)) Console.WriteLine("!!! DESYNC: MONITOR STATE");
|
||||
|
||||
// UIManager.ChangeMonitorState(e.Args[1] == 1);
|
||||
Console.WriteLine($"E: Player {e.Args[0]} toggled monitor {(e.Args[1] == 0 ? "off" : "on")}");
|
||||
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();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue