Přidaný command a event pro otevírání a zavírání dveří
This commit is contained in:
parent
b968b12090
commit
952aae10de
7 changed files with 87 additions and 30 deletions
|
|
@ -11,6 +11,7 @@ namespace FNAF_Server;
|
|||
public class Server {
|
||||
public static ServerPlayer P1;
|
||||
public static ServerPlayer P2;
|
||||
public static readonly Dictionary<int, ServerPlayer> Players = new();
|
||||
|
||||
private static EventBasedNetListener listener;
|
||||
private static NetManager server;
|
||||
|
|
@ -21,7 +22,6 @@ public class Server {
|
|||
|
||||
private static NetDataWriter writer;
|
||||
private static NetPacketProcessor processor;
|
||||
private static Dictionary<uint, ServerPlayer> players = new();
|
||||
|
||||
private static bool isRunning;
|
||||
|
||||
|
|
@ -45,7 +45,7 @@ public class Server {
|
|||
|
||||
listener.ConnectionRequestEvent += request => {
|
||||
Console.WriteLine($"Connection Request from {request.RemoteEndPoint}");
|
||||
if (players.Count >= 2){
|
||||
if (Players.Count >= 2){
|
||||
Console.WriteLine($"{request.RemoteEndPoint} denied, server full");
|
||||
return;
|
||||
}
|
||||
|
|
@ -72,16 +72,16 @@ public class Server {
|
|||
peer.Send(writer, deliveryMethod);
|
||||
}
|
||||
}
|
||||
public static void SendPacket<T>(T packet, uint pid, DeliveryMethod deliveryMethod = DeliveryMethod.ReliableOrdered) where T : class, new() {
|
||||
SendPacket(packet, players[pid].peer, deliveryMethod);
|
||||
public static void SendPacket<T>(T packet, int pid, DeliveryMethod deliveryMethod = DeliveryMethod.ReliableOrdered) where T : class, new() {
|
||||
SendPacket(packet, Players[pid].peer, deliveryMethod);
|
||||
}
|
||||
public static void SendPacketToAll<T>(T packet, DeliveryMethod deliveryMethod = DeliveryMethod.ReliableOrdered) where T : class, new() {
|
||||
foreach (var player in players.Values){
|
||||
foreach (var player in Players.Values){
|
||||
SendPacket(packet, player.peer, deliveryMethod);
|
||||
}
|
||||
}
|
||||
|
||||
public static void SendUpdate(GameEvent[] gevents, uint pid) {
|
||||
public static void SendUpdate(GameEvent[] gevents, int pid) {
|
||||
// SendPacket(new UpdatePlayerPacket{eventQueue = new EventQueue{Events = events}}, pid);
|
||||
SendPacket(new UpdatePlayerPacket{events = gevents}, pid);
|
||||
|
||||
|
|
@ -97,18 +97,19 @@ public class Server {
|
|||
public static void OnJoinReceived(JoinPacket packet, NetPeer peer) {
|
||||
Console.WriteLine($"Received join from {packet.username} (pid: {(uint)peer.Id})");
|
||||
|
||||
ServerPlayer newPlayer = (players[(uint)peer.Id] = new ServerPlayer {
|
||||
ServerPlayer newPlayer = (Players[peer.Id] = new ServerPlayer {
|
||||
peer = peer,
|
||||
state = new PlayerState {
|
||||
pid = (uint)peer.Id,
|
||||
camera = 0
|
||||
pid = peer.Id,
|
||||
camera = 0,
|
||||
doorStates = [false, false, false]
|
||||
},
|
||||
username = packet.username
|
||||
});
|
||||
|
||||
SendPacket(new JoinAcceptPacket { state = newPlayer.state }, peer);
|
||||
|
||||
if (players.Count == 1){
|
||||
if (Players.Count == 1){
|
||||
P1 = newPlayer;
|
||||
}
|
||||
else{
|
||||
|
|
@ -122,27 +123,29 @@ public class Server {
|
|||
|
||||
public static void OnPeerDisconnected(NetPeer peer, DisconnectInfo disconnectInfo) {
|
||||
if (peer.Tag != null) {
|
||||
players.Remove((uint)peer.Id);
|
||||
Players.Remove(peer.Id);
|
||||
}
|
||||
}
|
||||
|
||||
public static void OnCommandReceived(PlayerCommandPacket packet, NetPeer peer) {
|
||||
PlayerCommand[] commands = packet.commands;
|
||||
CommandProcessor.Evaluate(packet.commands, peer.Id);
|
||||
|
||||
// PlayerCommand[] commands = packet.commands;
|
||||
|
||||
foreach (var playerCommand in commands){
|
||||
switch (playerCommand.ID){
|
||||
case 0:
|
||||
Console.WriteLine($"C: Player {peer.Id} switched to camera {playerCommand.Args[0]}");
|
||||
SendUpdateToAll([GameEvent.SWITCH_CAM(peer.Id, playerCommand.Args[0])]);
|
||||
break;
|
||||
case 1:
|
||||
bool newState = !players[(uint)peer.Id].state.monitorUp;
|
||||
players[(uint)peer.Id].state.monitorUp = newState;
|
||||
Console.WriteLine($"C: Player {peer.Id} toggled camera {(newState ? "on" : "off")}");
|
||||
SendUpdateToAll([GameEvent.TOGGLE_MONITOR(peer.Id, newState)]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
// foreach (var playerCommand in commands){
|
||||
// switch (playerCommand.ID){
|
||||
// case 0:
|
||||
// Console.WriteLine($"C: Player {peer.Id} switched to camera {playerCommand.Args[0]}");
|
||||
// SendUpdateToAll([GameEvent.SWITCH_CAM(peer.Id, playerCommand.Args[0])]);
|
||||
// break;
|
||||
// case 1:
|
||||
// bool newState = !Players[(uint)peer.Id].state.monitorUp;
|
||||
// Players[(uint)peer.Id].state.monitorUp = newState;
|
||||
// Console.WriteLine($"C: Player {peer.Id} toggled camera {(newState ? "on" : "off")}");
|
||||
// SendUpdateToAll([GameEvent.TOGGLE_MONITOR(peer.Id, newState)]);
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
public static void Update() {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue