Sync monster spawn settings

This commit is contained in:
juanjp600
2017-04-06 16:50:11 -03:00
parent 4ad373294c
commit e1d5d63dbd
6 changed files with 47 additions and 8 deletions

View File

@@ -52,13 +52,13 @@ namespace Barotrauma
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()));
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
}
}
}

View File

@@ -137,7 +137,15 @@ namespace Barotrauma
}
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);

View File

@@ -5,6 +5,7 @@ using System.Collections.Generic;
using System.IO;
using System.Text;
using System.ComponentModel;
using System.Linq;
namespace Barotrauma.Networking
{
@@ -523,7 +524,7 @@ namespace Barotrauma.Networking
string shuttleName = inc.ReadString();
string shuttleHash = inc.ReadString();
NetOutgoingMessage readyToStartMsg = client.CreateMessage();
readyToStartMsg.Write((byte)ClientPacketHeader.RESPONSE_STARTGAME);
@@ -657,6 +658,28 @@ namespace Barotrauma.Networking
bool isTraitor = inc.ReadBoolean();
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);

View File

@@ -997,7 +997,7 @@ namespace Barotrauma.Networking
msg.Write(selectedShuttle.Name);
msg.Write(selectedShuttle.MD5Hash.Hash);
connectedClients.ForEach(c => c.ReadyToStart = false);
server.SendMessage(msg, connectedClients.Select(c => c.Connection).ToList(), NetDeliveryMethod.ReliableUnordered, 0);
@@ -1219,6 +1219,14 @@ namespace Barotrauma.Networking
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);
}

View File

@@ -46,7 +46,6 @@ namespace Barotrauma.Networking
private set;
}
public Dictionary<string, bool> monsterEnabled;
public Dictionary<string, int> extraCargo;
public bool ShowNetStats;
@@ -287,7 +286,7 @@ namespace Barotrauma.Networking
showLogButton.Visible = SaveServerLogs;
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("\\", "");
}

View File

@@ -97,6 +97,7 @@ namespace Barotrauma.Networking
protected Character myCharacter;
protected CharacterInfo characterInfo;
public Dictionary<string, bool> monsterEnabled;
protected RespawnManager respawnManager;