První 3 monstra z plánovaných pěti. Kompletní pathfinding i zrcadlení do clienta. Útoky implementované nejsou. Lurk a Neko jsou hardcoded aby útočili na P1.

This commit is contained in:
Perry 2026-03-08 16:55:49 +01:00
parent 4484b127c5
commit 9bfe63a166
27 changed files with 772 additions and 47 deletions

View file

@ -107,18 +107,26 @@ public class Server {
},
username = packet.username
});
SendPacket(new JoinAcceptPacket { state = newPlayer.state }, peer);
if (Players.Count == 1){
newPlayer.state.officeTileId = 10;
newPlayer.state.neighbouringTiles = [5, 11, 15];
SendPacket(new JoinAcceptPacket { state = newPlayer.state }, peer);
P1 = newPlayer;
}
else{
newPlayer.state.officeTileId = 14;
newPlayer.state.neighbouringTiles = [19, 13, 9];
SendPacket(new JoinAcceptPacket { state = newPlayer.state }, peer);
P2 = newPlayer;
SendPacket(new OpponentInitPacket{state = newPlayer.state}, P1.peer);
SendPacket(new OpponentInitPacket{state = P1.state}, P2.peer);
GameLogic.Init(); // TODO: move this to the condition above to wait for the other player
GameLogic.Init();
}
}
public static void OnNetworkReceive(NetPeer peer, NetPacketReader reader, DeliveryMethod deliveryMethod) {
@ -133,29 +141,12 @@ public class Server {
public static void OnCommandReceived(PlayerCommandPacket packet, NetPeer peer) {
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;
// }
// }
}
public static void Update() {
server.PollEvents();
// Console.WriteLine("update");
GameLogic.Update(); // TODO: add a parameter for player input
GameLogic.Update();
}
public static void Run(CancellationToken cancellationToken = default)