using GlobalClassLib; using LiteNetLib.Utils; namespace PacketLib; public struct PlayerCommand : INetSerializable { public static PlayerCommand SWITCH_CAM(int id) => new(){ID = 0, Args = [id] }; public static PlayerCommand SET_MONITOR(bool state) => new(){ID = 1, Args = [state ? 1 : 0]}; public static PlayerCommand SET_DOOR_OFFICE(Direction direction, bool state) => new(){ID = 2, Args = [(int)direction, state ? 1 : 0]}; public static PlayerCommand SET_DOOR_REMOTE((int, int) remoteDoorId, bool state) => new(){ID = 3, Args = [remoteDoorId.Item1, remoteDoorId.Item2, state ? 1 : 0]}; public static PlayerCommand SET_LIGHT(int camId, bool state) => new(){ID = 4, Args = [camId, state ? 1 : 0]}; public int ID{ get; set; } public bool Hideable => ID < 0; public int[] Args{ get; private set; } public void Serialize(NetDataWriter writer) { writer.Put(ID); writer.PutArray(Args); } public void Deserialize(NetDataReader reader) { ID = reader.GetInt(); Args = reader.GetIntArray(); } }