Improved server comms.

master
Droog71 2021-11-28 10:16:16 -06:00
parent 94806c8717
commit ae5268316f
1 changed files with 44 additions and 26 deletions

View File

@ -180,25 +180,34 @@ public class AreaProtection : FortressCraftMod
public Vector3 areaLocation;
}
// Holds information for server to client comms.
private struct ServerMessage
{
public int newPlayer;
public int allowedToClaim;
public int permissions;
}
// Networking.
private static void ClientRead(NetIncomingMessage netIncomingMessage)
{
int readInt = netIncomingMessage.ReadInt32();
if (readInt == 1)
int readInt1 = netIncomingMessage.ReadInt32();
int playerID = (int)NetworkManager.instance.mClientThread.mPlayer.mUserID;
if (readInt1 == playerID)
{
ableToClaim = false;
}
else if (readInt == 3)
{
ableToClaim = true;
}
else if (readInt == 5)
{
CollectStartingItems();
}
else
{
NetworkManager.instance.mClientThread.mPlayer.mBuildPermission = (eBuildPermission)readInt;
int readInt2 = netIncomingMessage.ReadInt32();
if (readInt2 == 1)
{
CollectStartingItems();
}
int readInt3 = netIncomingMessage.ReadInt32();
ableToClaim = readInt3 == 1;
int readInt4 = netIncomingMessage.ReadInt32();
NetworkManager.instance.mClientThread.mPlayer.mBuildPermission = (eBuildPermission)readInt4;
}
}
@ -217,7 +226,11 @@ public class AreaProtection : FortressCraftMod
// Networking.
private static void ServerWrite(BinaryWriter writer, Player player, object data)
{
writer.Write((int)data);
ServerMessage message = (ServerMessage)data;
writer.Write((int)player.mUserID);
writer.Write(message.newPlayer);
writer.Write(message.allowedToClaim);
writer.Write(message.permissions);
}
// Sends chat messages from the server.
@ -348,14 +361,19 @@ public class AreaProtection : FortressCraftMod
}
}
ServerMessage message = new ServerMessage();
if (savedPlayers != null)
{
if (!savedPlayers.Contains(player.mUserID + player.mUserName))
{
Announce("Giving starting items to " + player.mUserName);
SavePlayer(player.mUserID + player.mUserName);
ModManager.ModSendServerCommToClient("Maverick.AreaProtection", player, 5);
yield return new WaitForSeconds(0.5f);
message.newPlayer = 1;
}
else
{
message.newPlayer = 0;
}
}
@ -367,8 +385,7 @@ public class AreaProtection : FortressCraftMod
{
allowedPlayers.Remove(player);
}
ModManager.ModSendServerCommToClient("Maverick.AreaProtection", player, 1);
yield return new WaitForSeconds(0.5f);
message.allowedToClaim = 0;
}
else
{
@ -376,8 +393,7 @@ public class AreaProtection : FortressCraftMod
{
allowedPlayers.Add(player);
}
ModManager.ModSendServerCommToClient("Maverick.AreaProtection", player, 3);
yield return new WaitForSeconds(0.5f);
message.allowedToClaim = 1;
}
}
@ -386,29 +402,31 @@ public class AreaProtection : FortressCraftMod
if (NetworkManager.instance.mAdminListManager.CheckAdminList(player.mUserID, player.mUserName))
{
player.mBuildPermission = eBuildPermission.Admin;
ModManager.ModSendServerCommToClient("Maverick.AreaProtection", player, 0);
message.permissions = 0;
}
else
{
if (cannotBuild == true)
{
player.mBuildPermission = eBuildPermission.Visitor;
ModManager.ModSendServerCommToClient("Maverick.AreaProtection", player, 4);
message.permissions = 4;
}
else
{
player.mBuildPermission = eBuildPermission.Builder;
ModManager.ModSendServerCommToClient("Maverick.AreaProtection", player, 2);
message.permissions = 2;
}
}
}
ModManager.ModSendServerCommToClient("Maverick.AreaProtection", player, message);
yield return new WaitForSeconds(0.25f);
}
}
}
}
}
}
yield return new WaitForSeconds(1.5f);
}
// Gives starting items to a player.