Fixes to server settings. Closes #225
- Selected mode and mission type settings are saved and loaded. - RandomizeSeed setting can be changed via the debug console and it also has an effect in the dedicated server. - Dedicated server randomizes sub & mode settings if their selection modes are set to random.
This commit is contained in:
@@ -500,14 +500,6 @@ namespace Barotrauma
|
|||||||
if (GameModePreset.list.Count > 0 && modeList.Selected == null) modeList.Select(0);
|
if (GameModePreset.list.Count > 0 && modeList.Selected == null) modeList.Select(0);
|
||||||
|
|
||||||
GameMain.Server.Voting.ResetVotes(GameMain.Server.ConnectedClients);
|
GameMain.Server.Voting.ResetVotes(GameMain.Server.ConnectedClients);
|
||||||
|
|
||||||
if (GameMain.Server.RandomizeSeed) LevelSeed = ToolBox.RandomSeed(8);
|
|
||||||
if (GameMain.Server.SubSelectionMode == SelectionMode.Random)
|
|
||||||
{
|
|
||||||
var nonShuttles = subList.children.FindAll(c => c.UserData is Submarine && !((Submarine)c.UserData).HasTag(SubmarineTag.Shuttle));
|
|
||||||
subList.Select(nonShuttles[Rand.Range(0, nonShuttles.Count)].UserData);
|
|
||||||
}
|
|
||||||
if (GameMain.Server.ModeSelectionMode == SelectionMode.Random) modeList.Select(Rand.Range(0, modeList.CountChildren));
|
|
||||||
}
|
}
|
||||||
else if (GameMain.Client != null)
|
else if (GameMain.Client != null)
|
||||||
{
|
{
|
||||||
@@ -527,6 +519,23 @@ namespace Barotrauma
|
|||||||
base.Select();
|
base.Select();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void RandomizeSettings()
|
||||||
|
{
|
||||||
|
if (GameMain.Server == null) return;
|
||||||
|
|
||||||
|
if (GameMain.Server.RandomizeSeed) LevelSeed = ToolBox.RandomSeed(8);
|
||||||
|
if (GameMain.Server.SubSelectionMode == SelectionMode.Random)
|
||||||
|
{
|
||||||
|
var nonShuttles = subList.children.FindAll(c => c.UserData is Submarine && !((Submarine)c.UserData).HasTag(SubmarineTag.Shuttle));
|
||||||
|
subList.Select(nonShuttles[Rand.Range(0, nonShuttles.Count)].UserData);
|
||||||
|
}
|
||||||
|
if (GameMain.Server.ModeSelectionMode == SelectionMode.Random)
|
||||||
|
{
|
||||||
|
var allowedGameModes = GameModePreset.list.FindAll(m => !m.IsSinglePlayer && m.Name != "Campaign");
|
||||||
|
modeList.Select(allowedGameModes[Rand.Range(0, allowedGameModes.Count)]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void ShowSpectateButton()
|
public void ShowSpectateButton()
|
||||||
{
|
{
|
||||||
if (GameMain.Client == null) return;
|
if (GameMain.Client == null) return;
|
||||||
|
|||||||
@@ -67,6 +67,12 @@ namespace Barotrauma
|
|||||||
GameMain.NetLobbyScreen.LevelSeed = string.Join(" ", args);
|
GameMain.NetLobbyScreen.LevelSeed = string.Join(" ", args);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
commands.Add(new Command("randomizeseed", "randomizeseed: Toggles level seed randomization on/off.", (string[] args) =>
|
||||||
|
{
|
||||||
|
GameMain.Server.RandomizeSeed = !GameMain.Server.RandomizeSeed;
|
||||||
|
NewMessage((GameMain.Server.RandomizeSeed ? "Enabled" : "Disabled") + " level seed randomization.", Color.Cyan);
|
||||||
|
}));
|
||||||
|
|
||||||
commands.Add(new Command("gamemode", "gamemode [name]/[index]: Select the game mode for the next round. The parameter can either be the name or the index number of the game mode (0 = sandbox, 1 = mission, etc).", (string[] args) =>
|
commands.Add(new Command("gamemode", "gamemode [name]/[index]: Select the game mode for the next round. The parameter can either be the name or the index number of the game mode (0 = sandbox, 1 = mission, etc).", (string[] args) =>
|
||||||
{
|
{
|
||||||
int index = -1;
|
int index = -1;
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using Microsoft.Xna.Framework;
|
using Barotrauma.Networking;
|
||||||
|
using Microsoft.Xna.Framework;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
@@ -71,9 +72,10 @@ namespace Barotrauma
|
|||||||
public int MissionTypeIndex
|
public int MissionTypeIndex
|
||||||
{
|
{
|
||||||
get { return missionTypeIndex; }
|
get { return missionTypeIndex; }
|
||||||
set {
|
set
|
||||||
|
{
|
||||||
lastUpdateID++;
|
lastUpdateID++;
|
||||||
missionTypeIndex = Math.Max(0, Math.Min(Mission.MissionTypes.Count()-1, value));
|
missionTypeIndex = Math.Max(0, Math.Min(Mission.MissionTypes.Count() - 1, value));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -172,5 +174,21 @@ namespace Barotrauma
|
|||||||
|
|
||||||
lastUpdateID++;
|
lastUpdateID++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void RandomizeSettings()
|
||||||
|
{
|
||||||
|
if (GameMain.Server.RandomizeSeed) LevelSeed = ToolBox.RandomSeed(8);
|
||||||
|
|
||||||
|
if (GameMain.Server.SubSelectionMode == SelectionMode.Random)
|
||||||
|
{
|
||||||
|
var nonShuttles = Submarine.SavedSubmarines.FindAll(c => !c.HasTag(SubmarineTag.Shuttle) && !c.HasTag(SubmarineTag.HideInMenus));
|
||||||
|
SelectedSub = nonShuttles[Rand.Range(0, nonShuttles.Count)];
|
||||||
|
}
|
||||||
|
if (GameMain.Server.ModeSelectionMode == SelectionMode.Random)
|
||||||
|
{
|
||||||
|
var allowedGameModes = Array.FindAll(gameModes, m => !m.IsSinglePlayer && m.Name != "Campaign");
|
||||||
|
SelectedModeName = allowedGameModes[Rand.Range(0, allowedGameModes.Length)].Name;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -201,7 +201,9 @@ namespace Barotrauma.Networking
|
|||||||
Log("Server started", ServerLog.MessageType.ServerMessage);
|
Log("Server started", ServerLog.MessageType.ServerMessage);
|
||||||
|
|
||||||
GameMain.NetLobbyScreen.Select();
|
GameMain.NetLobbyScreen.Select();
|
||||||
|
GameMain.NetLobbyScreen.RandomizeSettings();
|
||||||
started = true;
|
started = true;
|
||||||
|
|
||||||
yield return CoroutineStatus.Success;
|
yield return CoroutineStatus.Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1480,7 +1482,9 @@ namespace Barotrauma.Networking
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
CoroutineManager.StartCoroutine(EndCinematic(),"EndCinematic");
|
CoroutineManager.StartCoroutine(EndCinematic(), "EndCinematic");
|
||||||
|
|
||||||
|
GameMain.NetLobbyScreen.RandomizeSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<object> EndCinematic()
|
public IEnumerable<object> EndCinematic()
|
||||||
@@ -1488,14 +1492,11 @@ namespace Barotrauma.Networking
|
|||||||
float endPreviewLength = 10.0f;
|
float endPreviewLength = 10.0f;
|
||||||
|
|
||||||
var cinematic = new TransitionCinematic(Submarine.MainSub, GameMain.GameScreen.Cam, endPreviewLength);
|
var cinematic = new TransitionCinematic(Submarine.MainSub, GameMain.GameScreen.Cam, endPreviewLength);
|
||||||
//float secondsLeft = endPreviewLength;
|
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
//secondsLeft -= CoroutineManager.UnscaledDeltaTime;
|
|
||||||
|
|
||||||
yield return CoroutineStatus.Running;
|
yield return CoroutineStatus.Running;
|
||||||
} while (cinematic.Running);//(secondsLeft > 0.0f);
|
} while (cinematic.Running);
|
||||||
#if CLIENT
|
#if CLIENT
|
||||||
SoundPlayer.OverrideMusicType = null;
|
SoundPlayer.OverrideMusicType = null;
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -79,10 +79,9 @@ namespace Barotrauma.Networking
|
|||||||
public bool RandomizeSeed
|
public bool RandomizeSeed
|
||||||
{
|
{
|
||||||
get;
|
get;
|
||||||
private set;
|
set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[Serialize(300.0f, true)]
|
[Serialize(300.0f, true)]
|
||||||
public float RespawnInterval
|
public float RespawnInterval
|
||||||
{
|
{
|
||||||
@@ -241,6 +240,20 @@ namespace Barotrauma.Networking
|
|||||||
set;
|
set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Serialize("Sandbox", true)]
|
||||||
|
public string GameMode
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
set;
|
||||||
|
}
|
||||||
|
|
||||||
|
[Serialize("Random", true)]
|
||||||
|
public string MissionType
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
set;
|
||||||
|
}
|
||||||
|
|
||||||
private void SaveSettings()
|
private void SaveSettings()
|
||||||
{
|
{
|
||||||
XDocument doc = new XDocument(new XElement("serversettings"));
|
XDocument doc = new XDocument(new XElement("serversettings"));
|
||||||
@@ -327,6 +340,8 @@ namespace Barotrauma.Networking
|
|||||||
{
|
{
|
||||||
#if SERVER
|
#if SERVER
|
||||||
GameMain.NetLobbyScreen.ServerName = doc.Root.GetAttributeString("name", "");
|
GameMain.NetLobbyScreen.ServerName = doc.Root.GetAttributeString("name", "");
|
||||||
|
GameMain.NetLobbyScreen.SelectedModeName = GameMode;
|
||||||
|
GameMain.NetLobbyScreen.MissionTypeName = MissionType;
|
||||||
#endif
|
#endif
|
||||||
GameMain.NetLobbyScreen.ServerMessageText = doc.Root.GetAttributeString("ServerMessage", "");
|
GameMain.NetLobbyScreen.ServerMessageText = doc.Root.GetAttributeString("ServerMessage", "");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,5 +26,7 @@
|
|||||||
karmaenabled="False"
|
karmaenabled="False"
|
||||||
SubSelection="Manual"
|
SubSelection="Manual"
|
||||||
ModeSelection="Manual"
|
ModeSelection="Manual"
|
||||||
|
GameMode="SandBox"
|
||||||
|
MissionType="Random"
|
||||||
TraitorsEnabled="No"
|
TraitorsEnabled="No"
|
||||||
/>
|
/>
|
||||||
|
|||||||
Reference in New Issue
Block a user