Sync monster spawn settings
This commit is contained in:
@@ -52,13 +52,13 @@ namespace Barotrauma
|
|||||||
|
|
||||||
spawnDeep = ToolBox.GetAttributeBool(element, "spawndeep", false);
|
spawnDeep = ToolBox.GetAttributeBool(element, "spawndeep", false);
|
||||||
|
|
||||||
if (GameMain.Server != null)
|
if (GameMain.NetworkMember != null)
|
||||||
{
|
{
|
||||||
List<string> monsterNames = GameMain.Server.monsterEnabled.Keys.ToList();
|
List<string> monsterNames = GameMain.NetworkMember.monsterEnabled.Keys.ToList();
|
||||||
string tryKey = monsterNames.Find(s => characterFile.ToLower().Contains(s.ToLower()));
|
string tryKey = monsterNames.Find(s => characterFile.ToLower().Contains(s.ToLower()));
|
||||||
if (!string.IsNullOrWhiteSpace(tryKey))
|
if (!string.IsNullOrWhiteSpace(tryKey))
|
||||||
{
|
{
|
||||||
if (!GameMain.Server.monsterEnabled[tryKey]) disallowed = true; //spawn was disallowed by host
|
if (!GameMain.NetworkMember.monsterEnabled[tryKey]) disallowed = true; //spawn was disallowed by host
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -137,7 +137,15 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
|
|
||||||
ConstructorInfo constructor = t.GetConstructor(new[] { typeof(XElement) });
|
ConstructorInfo constructor = t.GetConstructor(new[] { typeof(XElement) });
|
||||||
object instance = constructor.Invoke(new object[] { element });
|
object instance = null;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
instance = constructor.Invoke(new object[] { element });
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
DebugConsole.ThrowError(ex.InnerException!=null ? ex.InnerException.ToString() : ex.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
//previousEvents.Add(i);
|
//previousEvents.Add(i);
|
||||||
|
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ using System.Collections.Generic;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
namespace Barotrauma.Networking
|
namespace Barotrauma.Networking
|
||||||
{
|
{
|
||||||
@@ -523,7 +524,7 @@ namespace Barotrauma.Networking
|
|||||||
|
|
||||||
string shuttleName = inc.ReadString();
|
string shuttleName = inc.ReadString();
|
||||||
string shuttleHash = inc.ReadString();
|
string shuttleHash = inc.ReadString();
|
||||||
|
|
||||||
NetOutgoingMessage readyToStartMsg = client.CreateMessage();
|
NetOutgoingMessage readyToStartMsg = client.CreateMessage();
|
||||||
readyToStartMsg.Write((byte)ClientPacketHeader.RESPONSE_STARTGAME);
|
readyToStartMsg.Write((byte)ClientPacketHeader.RESPONSE_STARTGAME);
|
||||||
|
|
||||||
@@ -657,6 +658,28 @@ namespace Barotrauma.Networking
|
|||||||
|
|
||||||
bool isTraitor = inc.ReadBoolean();
|
bool isTraitor = inc.ReadBoolean();
|
||||||
string traitorTargetName = isTraitor ? inc.ReadString() : null;
|
string traitorTargetName = isTraitor ? inc.ReadString() : null;
|
||||||
|
|
||||||
|
//monster spawn settings
|
||||||
|
if (monsterEnabled == null)
|
||||||
|
{
|
||||||
|
List<string> monsterNames1 = Directory.GetDirectories("Content/Characters").ToList();
|
||||||
|
for (int i = 0; i < monsterNames1.Count; i++)
|
||||||
|
{
|
||||||
|
monsterNames1[i] = monsterNames1[i].Replace("Content/Characters", "").Replace("/", "").Replace("\\", "");
|
||||||
|
}
|
||||||
|
monsterEnabled = new Dictionary<string, bool>();
|
||||||
|
foreach (string s in monsterNames1)
|
||||||
|
{
|
||||||
|
monsterEnabled.Add(s, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
List<string> monsterNames = monsterEnabled.Keys.ToList();
|
||||||
|
foreach (string s in monsterNames)
|
||||||
|
{
|
||||||
|
monsterEnabled[s] = inc.ReadBoolean();
|
||||||
|
}
|
||||||
|
inc.ReadPadBits();
|
||||||
|
|
||||||
GameModePreset gameMode = GameModePreset.list.Find(gm => gm.Name == modeName);
|
GameModePreset gameMode = GameModePreset.list.Find(gm => gm.Name == modeName);
|
||||||
|
|
||||||
|
|||||||
@@ -997,7 +997,7 @@ namespace Barotrauma.Networking
|
|||||||
|
|
||||||
msg.Write(selectedShuttle.Name);
|
msg.Write(selectedShuttle.Name);
|
||||||
msg.Write(selectedShuttle.MD5Hash.Hash);
|
msg.Write(selectedShuttle.MD5Hash.Hash);
|
||||||
|
|
||||||
connectedClients.ForEach(c => c.ReadyToStart = false);
|
connectedClients.ForEach(c => c.ReadyToStart = false);
|
||||||
|
|
||||||
server.SendMessage(msg, connectedClients.Select(c => c.Connection).ToList(), NetDeliveryMethod.ReliableUnordered, 0);
|
server.SendMessage(msg, connectedClients.Select(c => c.Connection).ToList(), NetDeliveryMethod.ReliableUnordered, 0);
|
||||||
@@ -1219,6 +1219,14 @@ namespace Barotrauma.Networking
|
|||||||
msg.Write(false);
|
msg.Write(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//monster spawn settings
|
||||||
|
List<string> monsterNames = monsterEnabled.Keys.ToList();
|
||||||
|
foreach (string s in monsterNames)
|
||||||
|
{
|
||||||
|
msg.Write(monsterEnabled[s]);
|
||||||
|
}
|
||||||
|
msg.WritePadBits();
|
||||||
|
|
||||||
server.SendMessage(msg, client.Connection, NetDeliveryMethod.ReliableUnordered);
|
server.SendMessage(msg, client.Connection, NetDeliveryMethod.ReliableUnordered);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -46,7 +46,6 @@ namespace Barotrauma.Networking
|
|||||||
private set;
|
private set;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Dictionary<string, bool> monsterEnabled;
|
|
||||||
public Dictionary<string, int> extraCargo;
|
public Dictionary<string, int> extraCargo;
|
||||||
|
|
||||||
public bool ShowNetStats;
|
public bool ShowNetStats;
|
||||||
@@ -287,7 +286,7 @@ namespace Barotrauma.Networking
|
|||||||
showLogButton.Visible = SaveServerLogs;
|
showLogButton.Visible = SaveServerLogs;
|
||||||
|
|
||||||
List<string> monsterNames = Directory.GetDirectories("Content/Characters").ToList();
|
List<string> monsterNames = Directory.GetDirectories("Content/Characters").ToList();
|
||||||
for (int i=0;i<monsterNames.Count;i++)
|
for (int i = 0; i < monsterNames.Count; i++)
|
||||||
{
|
{
|
||||||
monsterNames[i] = monsterNames[i].Replace("Content/Characters", "").Replace("/", "").Replace("\\", "");
|
monsterNames[i] = monsterNames[i].Replace("Content/Characters", "").Replace("/", "").Replace("\\", "");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -97,6 +97,7 @@ namespace Barotrauma.Networking
|
|||||||
protected Character myCharacter;
|
protected Character myCharacter;
|
||||||
protected CharacterInfo characterInfo;
|
protected CharacterInfo characterInfo;
|
||||||
|
|
||||||
|
public Dictionary<string, bool> monsterEnabled;
|
||||||
|
|
||||||
protected RespawnManager respawnManager;
|
protected RespawnManager respawnManager;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user