Fixed inability to connect via port
Added Scrollbar to choose Relic with more than 4 players Added custom player name feature, Now host will synchronize client names
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
using MegaCrit.Sts2.Core.Logging;
|
||||
using MegaCrit.Sts2.Core.Multiplayer.Serialization;
|
||||
using MegaCrit.Sts2.Core.Multiplayer.Transport;
|
||||
|
||||
namespace SlayTheSpire2.LAN.Multiplayer.Models
|
||||
{
|
||||
public struct LanPlayerNameRequestMessage : INetMessage
|
||||
{
|
||||
public string playerName;
|
||||
|
||||
public bool ShouldBroadcast => false;
|
||||
public NetTransferMode Mode => NetTransferMode.Reliable;
|
||||
public LogLevel LogLevel => LogLevel.Info;
|
||||
|
||||
public void Serialize(PacketWriter writer)
|
||||
{
|
||||
writer.WriteString(playerName);
|
||||
}
|
||||
|
||||
public void Deserialize(PacketReader reader)
|
||||
{
|
||||
playerName = reader.ReadString();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
using MegaCrit.Sts2.Core.Logging;
|
||||
using MegaCrit.Sts2.Core.Multiplayer.Serialization;
|
||||
using MegaCrit.Sts2.Core.Multiplayer.Transport;
|
||||
|
||||
namespace SlayTheSpire2.LAN.Multiplayer.Models
|
||||
{
|
||||
public struct LanPlayerNameResponseMessage : INetMessage
|
||||
{
|
||||
public LanPlayerNames playerNameDictionary;
|
||||
|
||||
public bool ShouldBroadcast => false;
|
||||
public NetTransferMode Mode => NetTransferMode.Reliable;
|
||||
public LogLevel LogLevel => LogLevel.Info;
|
||||
|
||||
public void Serialize(PacketWriter writer)
|
||||
{
|
||||
writer.WriteInt(playerNameDictionary.Count);
|
||||
foreach (var keyValue in playerNameDictionary)
|
||||
{
|
||||
writer.WriteULong(keyValue.Key);
|
||||
writer.WriteString(keyValue.Value);
|
||||
}
|
||||
}
|
||||
|
||||
public void Deserialize(PacketReader reader)
|
||||
{
|
||||
var count = reader.ReadInt();
|
||||
playerNameDictionary = new LanPlayerNames();
|
||||
for (var i = 0; i < count; i++)
|
||||
{
|
||||
playerNameDictionary.Add(reader.ReadULong(), reader.ReadString());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace SlayTheSpire2.LAN.Multiplayer.Models
|
||||
{
|
||||
[JsonSerializable(typeof(LanPlayerNames))]
|
||||
public partial class LanPlayerNamesContext : JsonSerializerContext;
|
||||
|
||||
public class LanPlayerNames : Dictionary<ulong, string>;
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
using System.Text.Json.Serialization;
|
||||
using MegaCrit.Sts2.Core.Saves;
|
||||
using Steamworks;
|
||||
|
||||
namespace SlayTheSpire2.LAN.Multiplayer.Models
|
||||
{
|
||||
@@ -12,6 +13,7 @@ namespace SlayTheSpire2.LAN.Multiplayer.Models
|
||||
[JsonPropertyName("host_max_players")] public int HostMaxPlayers { get; set; } = 4;
|
||||
[JsonPropertyName("ip_address")] public string IPAddress { get; set; } = "127.0.0.1";
|
||||
[JsonPropertyName("net_id")] public ulong NetId { get; set; } = 1000u;
|
||||
[JsonPropertyName("player_name")] public string PlayerName { get; set; } = SteamFriends.GetPersonaName();
|
||||
|
||||
public int SchemaVersion { get; set; }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user