first commit
This commit is contained in:
32
Packets/Lobby/ChatMessage.cs
Normal file
32
Packets/Lobby/ChatMessage.cs
Normal file
@@ -0,0 +1,32 @@
|
||||
using KCM.Packets.Handlers;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace KCM.Packets.Lobby
|
||||
{
|
||||
public class ChatMessage : Packet
|
||||
{
|
||||
public override ushort packetId => (int)Enums.Packets.ChatMessage;
|
||||
|
||||
public string PlayerName { get; set; }
|
||||
public string Message { get; set; }
|
||||
|
||||
public override void HandlePacketServer()
|
||||
{
|
||||
//Main.helper.Log("Received chat packet: " + Message);
|
||||
|
||||
//SendToAll(KCClient.client.Id);
|
||||
//LobbyHandler.AddChatMessage(clientId, PlayerName, Message);
|
||||
}
|
||||
|
||||
public override void HandlePacketClient()
|
||||
{
|
||||
Main.helper.Log("Received chat packet: " + Message);
|
||||
|
||||
LobbyHandler.AddChatMessage(clientId, PlayerName, Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
26
Packets/Lobby/ChatSystemMessage.cs
Normal file
26
Packets/Lobby/ChatSystemMessage.cs
Normal file
@@ -0,0 +1,26 @@
|
||||
using KCM.Packets.Handlers;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace KCM.Packets.Lobby
|
||||
{
|
||||
public class ChatSystemMessage : Packet
|
||||
{
|
||||
public override ushort packetId => (int)Enums.Packets.ChatSystemMessage;
|
||||
|
||||
public string Message { get; set; }
|
||||
|
||||
public override void HandlePacketServer()
|
||||
{
|
||||
//LobbyHandler.AddSystemMessage(Message);
|
||||
}
|
||||
|
||||
public override void HandlePacketClient()
|
||||
{
|
||||
LobbyHandler.AddSystemMessage(Message);
|
||||
}
|
||||
}
|
||||
}
|
||||
38
Packets/Lobby/KingdomName.cs
Normal file
38
Packets/Lobby/KingdomName.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace KCM.Packets.Lobby
|
||||
{
|
||||
public class KingdomName : Packet
|
||||
{
|
||||
public override ushort packetId => (int)Enums.Packets.KingdomName;
|
||||
|
||||
public string kingdomName { get; set; }
|
||||
|
||||
public override void HandlePacketServer()
|
||||
{
|
||||
if (player == null)
|
||||
return;
|
||||
Main.helper.Log("Received kingdom name packet");
|
||||
|
||||
//SendToAll(KCClient.client.Id);
|
||||
|
||||
player.kingdomName = kingdomName;
|
||||
}
|
||||
|
||||
public override void HandlePacketClient()
|
||||
{
|
||||
if (player == null)
|
||||
return;
|
||||
|
||||
Main.helper.Log("Received kingdom name packet");
|
||||
|
||||
player.kingdomName = kingdomName;
|
||||
|
||||
Main.helper.Log($"Player {player.name} has joined with their kingdom {player.kingdomName}");
|
||||
}
|
||||
}
|
||||
}
|
||||
31
Packets/Lobby/PlayerBanner.cs
Normal file
31
Packets/Lobby/PlayerBanner.cs
Normal file
@@ -0,0 +1,31 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace KCM.Packets.Lobby
|
||||
{
|
||||
public class PlayerBanner : Packet
|
||||
{
|
||||
public override ushort packetId => (int)Enums.Packets.PlayerBanner;
|
||||
|
||||
public int banner { get; set; }
|
||||
|
||||
public override void HandlePacketServer()
|
||||
{
|
||||
//SendToAll(KCClient.client.Id);
|
||||
|
||||
//player.banner = banner;
|
||||
//player.inst.PlayerLandmassOwner.SetBannerIdx(banner);
|
||||
}
|
||||
|
||||
public override void HandlePacketClient()
|
||||
{
|
||||
player.banner = banner;
|
||||
player.inst.PlayerLandmassOwner.SetBannerIdx(banner);
|
||||
|
||||
Main.helper.Log($"Player {clientId} ({player.id}) has set banner to {player.banner}");
|
||||
}
|
||||
}
|
||||
}
|
||||
58
Packets/Lobby/PlayerList.cs
Normal file
58
Packets/Lobby/PlayerList.cs
Normal file
@@ -0,0 +1,58 @@
|
||||
using KCM.Packets.Handlers;
|
||||
using Steamworks;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace KCM.Packets.Lobby
|
||||
{
|
||||
public class PlayerList : Packet
|
||||
{
|
||||
public override ushort packetId => (int)Enums.Packets.PlayerList;
|
||||
|
||||
public List<bool> playersReady { get; set; }
|
||||
public List<string> playersName { get; set; }
|
||||
public List<int> playersBanner { get; set; }
|
||||
public List<ushort> playersId { get; set; }
|
||||
public List<string> playersKingdomName { get; set; }
|
||||
|
||||
public List<string> steamIds { get; set; }
|
||||
|
||||
public override void HandlePacketServer()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public override void HandlePacketClient()
|
||||
{
|
||||
LobbyHandler.ClearPlayerList();
|
||||
|
||||
for (int i = 0; i < playersId.Count; i++)
|
||||
{
|
||||
|
||||
Main.helper.Log("PlayerList: " + playersName[i] + " " + playersId[i] + " " + steamIds[i]);
|
||||
|
||||
Main.kCPlayers.Add(steamIds[i], new KCPlayer(playersName[i], playersId[i], steamIds[i])
|
||||
{
|
||||
name = playersName[i],
|
||||
ready = playersReady[i],
|
||||
banner = playersBanner[i],
|
||||
kingdomName = playersKingdomName[i]
|
||||
});
|
||||
|
||||
|
||||
if (Main.clientSteamIds.ContainsKey(playersId[i]))
|
||||
Main.clientSteamIds[playersId[i]] = steamIds[i];
|
||||
else
|
||||
Main.clientSteamIds.Add(playersId[i], steamIds[i]);
|
||||
|
||||
Main.kCPlayers[steamIds[i]].inst.PlayerLandmassOwner.SetBannerIdx(playersBanner[i]);
|
||||
|
||||
LobbyHandler.AddPlayerEntry(playersId[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
28
Packets/Lobby/PlayerReady.cs
Normal file
28
Packets/Lobby/PlayerReady.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace KCM.Packets.Lobby
|
||||
{
|
||||
public class PlayerReady : Packet
|
||||
{
|
||||
public override ushort packetId => (int)Enums.Packets.PlayerReady;
|
||||
|
||||
public bool IsReady { get; set; }
|
||||
|
||||
public override void HandlePacketServer()
|
||||
{
|
||||
IsReady = !player.ready;
|
||||
//SendToAll(KCClient.client.Id);
|
||||
|
||||
player.ready = IsReady;
|
||||
}
|
||||
|
||||
public override void HandlePacketClient()
|
||||
{
|
||||
player.ready = IsReady;
|
||||
}
|
||||
}
|
||||
}
|
||||
114
Packets/Lobby/SaveTransferPacket.cs
Normal file
114
Packets/Lobby/SaveTransferPacket.cs
Normal file
@@ -0,0 +1,114 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using static KCM.Main;
|
||||
|
||||
namespace KCM.Packets.Lobby
|
||||
{
|
||||
public class SaveTransferPacket : Packet
|
||||
{
|
||||
public override ushort packetId => (ushort)Enums.Packets.SaveTransferPacket;
|
||||
|
||||
public static byte[] saveData = new byte[1];
|
||||
public static bool[] chunksReceived = new bool[1];
|
||||
public static bool loadingSave = false;
|
||||
public static int received = 0;
|
||||
|
||||
|
||||
public int chunkId { get; set; }
|
||||
public int chunkSize { get; set; }
|
||||
|
||||
public int saveSize { get; set; }
|
||||
public int saveDataIndex { get; set; }
|
||||
public int totalChunks { get; set; }
|
||||
|
||||
public byte[] saveDataChunk { get; set; }
|
||||
|
||||
public override void HandlePacketClient()
|
||||
{
|
||||
float savePercent = (float)received / (float)saveSize;
|
||||
|
||||
// Initialize saveData and chunksReceived on the first packet received
|
||||
if (saveData.Length == 1)
|
||||
{
|
||||
|
||||
Main.helper.Log("Save Transfer started!");
|
||||
loadingSave = true;
|
||||
|
||||
ServerLobbyScript.LoadingSave.SetActive(true);
|
||||
|
||||
// save percentage
|
||||
|
||||
|
||||
saveData = new byte[saveSize];
|
||||
chunksReceived = new bool[totalChunks];
|
||||
}
|
||||
|
||||
|
||||
// Copy the chunk data into the correct position in saveData
|
||||
Array.Copy(saveDataChunk, 0, saveData, saveDataIndex, saveDataChunk.Length);
|
||||
|
||||
// Mark this chunk as received
|
||||
chunksReceived[chunkId] = true;
|
||||
|
||||
// Seek to the next position to write to
|
||||
received += chunkSize;
|
||||
|
||||
|
||||
ServerLobbyScript.ProgressBar.fillAmount = savePercent;
|
||||
ServerLobbyScript.ProgressBarText.text = (savePercent * 100).ToString("0.00") + "%";
|
||||
ServerLobbyScript.ProgressText.text = $"{((float)(received / 1000)).ToString("0.00")} KB / {((float)(saveSize / 1000)).ToString("0.00")} KB";
|
||||
|
||||
|
||||
if (chunkId + 1 == totalChunks)
|
||||
{
|
||||
Main.helper.Log($"Received last save transfer packet.");
|
||||
|
||||
Main.helper.Log(WhichIsNotComplete());
|
||||
}
|
||||
|
||||
// Check if all chunks have been received
|
||||
if (IsTransferComplete())
|
||||
{
|
||||
// Handle completed transfer here
|
||||
Main.helper.Log("Save Transfer complete!");
|
||||
|
||||
LoadSaveLoadHook.saveBytes = saveData;
|
||||
LoadSaveLoadHook.memoryStreamHook = true;
|
||||
|
||||
LoadSave.Load();
|
||||
|
||||
|
||||
LoadSaveLoadHook.saveContainer.Unpack(null);
|
||||
Broadcast.OnLoadedEvent.Broadcast(new OnLoadedEvent());
|
||||
|
||||
ServerLobbyScript.LoadingSave.SetActive(false);
|
||||
}
|
||||
}
|
||||
|
||||
public static bool IsTransferComplete()
|
||||
{
|
||||
return chunksReceived.All(x => x == true);
|
||||
}
|
||||
|
||||
public static string WhichIsNotComplete()
|
||||
{
|
||||
string notComplete = "";
|
||||
for (int i = 0; i < chunksReceived.Length; i++)
|
||||
{
|
||||
if (!chunksReceived[i])
|
||||
{
|
||||
notComplete += i + ", ";
|
||||
}
|
||||
}
|
||||
return notComplete;
|
||||
}
|
||||
|
||||
public override void HandlePacketServer()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
48
Packets/Lobby/ServerSettings.cs
Normal file
48
Packets/Lobby/ServerSettings.cs
Normal file
@@ -0,0 +1,48 @@
|
||||
using KCM.Packets.Handlers;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace KCM.Packets.Lobby
|
||||
{
|
||||
public class ServerSettings : Packet
|
||||
{
|
||||
public override ushort packetId => (int)Enums.Packets.ServerSettings;
|
||||
|
||||
public string ServerName { get; set; }
|
||||
public int MaxPlayers { get; set; }
|
||||
public bool Locked { get; set; }
|
||||
public string Password { get; set; }
|
||||
public int Difficulty { get; set; }
|
||||
public string WorldSeed { get; set; }
|
||||
public World.MapSize WorldSize { get; set; }
|
||||
public World.MapBias WorldType { get; set; }
|
||||
public World.MapRiverLakes WorldRivers { get; set; }
|
||||
public int PlacementType { get; set; }
|
||||
public bool FogOfWar { get; set; }
|
||||
|
||||
public ServerSettings() { this.MaxPlayers = 2; this.Password = " "; this.WorldRivers = World.MapRiverLakes.Some; }
|
||||
|
||||
public override void HandlePacketServer()
|
||||
{
|
||||
//SetServerSettings();
|
||||
}
|
||||
|
||||
public override void HandlePacketClient()
|
||||
{
|
||||
SetServerSettings();
|
||||
}
|
||||
|
||||
public void SetServerSettings()
|
||||
{
|
||||
|
||||
LobbyHandler.ServerSettings = this;
|
||||
|
||||
World.inst.mapSize = WorldSize;
|
||||
World.inst.mapBias = WorldType;
|
||||
World.inst.mapRiverLakes = WorldRivers;
|
||||
}
|
||||
}
|
||||
}
|
||||
103
Packets/Lobby/StartGame.cs
Normal file
103
Packets/Lobby/StartGame.cs
Normal file
@@ -0,0 +1,103 @@
|
||||
using KCM.Enums;
|
||||
using Riptide.Demos.Steam.PlayerHosted;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
|
||||
namespace KCM.Packets.Lobby
|
||||
{
|
||||
public class StartGame : Packet
|
||||
{
|
||||
public override ushort packetId => (int)Enums.Packets.StartGame;
|
||||
|
||||
public void Start()
|
||||
{
|
||||
Main.helper.Log(GameState.inst.mainMenuMode.ToString());
|
||||
|
||||
// Hide server lobby
|
||||
Main.TransitionTo((MenuState)200);
|
||||
|
||||
// This is run when user clicks "accept" on choose your map screeen
|
||||
|
||||
try
|
||||
{
|
||||
if (!LobbyManager.loadingSave)
|
||||
{
|
||||
SpeedControlUI.inst.SetSpeed(0);
|
||||
|
||||
try
|
||||
{
|
||||
typeof(MainMenuMode).GetMethod("StartGame", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(GameState.inst.mainMenuMode, null);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Main.helper.Log(ex.Message.ToString());
|
||||
Main.helper.Log(ex.ToString());
|
||||
}
|
||||
|
||||
SpeedControlUI.inst.SetSpeed(0);
|
||||
}
|
||||
else
|
||||
{
|
||||
LobbyManager.loadingSave = false;
|
||||
GameState.inst.SetNewMode(GameState.inst.playingMode);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
// Handle exception here
|
||||
Main.helper.Log(ex.Message.ToString());
|
||||
Main.helper.Log(ex.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
public override void HandlePacketClient()
|
||||
{
|
||||
Start();
|
||||
}
|
||||
|
||||
public override void HandlePacketServer()
|
||||
{
|
||||
//Start();
|
||||
|
||||
|
||||
/*AIBrainsContainer.PreStartAIConfig aiConfig = new AIBrainsContainer.PreStartAIConfig();
|
||||
int count = 0;
|
||||
for (int i = 0; i < RivalKingdomSettingsUI.inst.rivalItems.Length; i++)
|
||||
{
|
||||
RivalItemUI r = RivalKingdomSettingsUI.inst.rivalItems[i];
|
||||
bool flag = r.Enabled && !r.Locked;
|
||||
if (flag)
|
||||
{
|
||||
count++;
|
||||
}
|
||||
}
|
||||
int idx = 0;
|
||||
aiConfig.startData = new AIBrainsContainer.PreStartAIConfig.AIStartData[count];
|
||||
for (int j = 0; j < RivalKingdomSettingsUI.inst.rivalItems.Length; j++)
|
||||
{
|
||||
RivalItemUI item = RivalKingdomSettingsUI.inst.rivalItems[j];
|
||||
bool flag2 = item.Enabled && !item.Locked;
|
||||
if (flag2)
|
||||
{
|
||||
aiConfig.startData[idx] = new AIBrainsContainer.PreStartAIConfig.AIStartData();
|
||||
aiConfig.startData[idx].landmass = item.flag.landmass;
|
||||
aiConfig.startData[idx].bioCode = item.bannerIdx;
|
||||
aiConfig.startData[idx].personalityKey = PersonalityCollection.aiPersonalityKeys[0];
|
||||
aiConfig.startData[idx].skillLevel = item.GetSkillLevel();
|
||||
idx++;
|
||||
}
|
||||
}
|
||||
AIBrainsContainer.inst.aiStartInfo = aiConfig;
|
||||
bool isControllerActive = GamepadControl.inst.isControllerActive;
|
||||
if (isControllerActive)
|
||||
{
|
||||
ConsoleCursorMenu.inst.PrepForGamepad();
|
||||
}*/
|
||||
}
|
||||
}
|
||||
}
|
||||
46
Packets/Lobby/WorldSeed.cs
Normal file
46
Packets/Lobby/WorldSeed.cs
Normal file
@@ -0,0 +1,46 @@
|
||||
using KCM.Packets.Handlers;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
|
||||
namespace KCM.Packets.Lobby
|
||||
{
|
||||
public class WorldSeed : Packet
|
||||
{
|
||||
public override ushort packetId => (int)Enums.Packets.WorldSeed;
|
||||
public int Seed { get; set; }
|
||||
|
||||
public override void HandlePacketServer()
|
||||
{
|
||||
//SetWorldSeed();
|
||||
}
|
||||
|
||||
public override void HandlePacketClient()
|
||||
{
|
||||
SetWorldSeed();
|
||||
}
|
||||
|
||||
public void SetWorldSeed()
|
||||
{
|
||||
try
|
||||
{
|
||||
foreach (var player in Main.kCPlayers.Values)
|
||||
player.inst.Reset();
|
||||
|
||||
World.inst.Generate(Seed);
|
||||
Vector3 center = World.inst.GetCellData(World.inst.GridWidth / 2, World.inst.GridHeight / 2).Center;
|
||||
Cam.inst.SetTrackingPos(center);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Main.helper.Log("Set world seed packet error");
|
||||
Main.helper.Log(e.Message);
|
||||
Main.helper.Log(e.StackTrace);
|
||||
Main.helper.Log(e.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user