Started moving single player campaign logic to an abstract CampaignMode class to make it reusable in the eventual multiplayer campaign
This commit is contained in:
@@ -91,7 +91,7 @@
|
|||||||
<Compile Include="Source\GameMain.cs" />
|
<Compile Include="Source\GameMain.cs" />
|
||||||
<Compile Include="Source\GameSession\CrewManager.cs" />
|
<Compile Include="Source\GameSession\CrewManager.cs" />
|
||||||
<Compile Include="Source\GameSession\GameMode.cs" />
|
<Compile Include="Source\GameSession\GameMode.cs" />
|
||||||
<Compile Include="Source\GameSession\GameModes\SinglePlayerMode.cs" />
|
<Compile Include="Source\GameSession\GameModes\SinglePlayerCampaign.cs" />
|
||||||
<Compile Include="Source\GameSession\GameModes\TraitorManager.cs" />
|
<Compile Include="Source\GameSession\GameModes\TraitorManager.cs" />
|
||||||
<Compile Include="Source\GameSession\GameModes\Tutorials\BasicTutorial.cs" />
|
<Compile Include="Source\GameSession\GameModes\Tutorials\BasicTutorial.cs" />
|
||||||
<Compile Include="Source\GameSession\GameModes\Tutorials\EditorTutorial.cs" />
|
<Compile Include="Source\GameSession\GameModes\Tutorials\EditorTutorial.cs" />
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
if (Screen.Selected == GameMain.GameScreen && GameMain.GameSession != null)
|
if (Screen.Selected == GameMain.GameScreen && GameMain.GameSession != null)
|
||||||
{
|
{
|
||||||
SinglePlayerMode spMode = GameMain.GameSession.gameMode as SinglePlayerMode;
|
SinglePlayerCampaign spMode = GameMain.GameSession.GameMode as SinglePlayerCampaign;
|
||||||
if (spMode != null)
|
if (spMode != null)
|
||||||
{
|
{
|
||||||
button = new GUIButton(new Rectangle(0, y, 0, 30), "Load previous", Alignment.CenterX, "", pauseMenu);
|
button = new GUIButton(new Rectangle(0, y, 0, 30), "Load previous", Alignment.CenterX, "", pauseMenu);
|
||||||
@@ -165,7 +165,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
if (Screen.Selected == GameMain.LobbyScreen)
|
if (Screen.Selected == GameMain.LobbyScreen)
|
||||||
{
|
{
|
||||||
SinglePlayerMode spMode = GameMain.GameSession.gameMode as SinglePlayerMode;
|
SinglePlayerCampaign spMode = GameMain.GameSession.GameMode as SinglePlayerCampaign;
|
||||||
if (spMode != null)
|
if (spMode != null)
|
||||||
{
|
{
|
||||||
button = new GUIButton(new Rectangle(0, y, 0, 30), "Save & quit", Alignment.CenterX, "", pauseMenu);
|
button = new GUIButton(new Rectangle(0, y, 0, 30), "Save & quit", Alignment.CenterX, "", pauseMenu);
|
||||||
|
|||||||
@@ -10,12 +10,10 @@ namespace Barotrauma
|
|||||||
class CrewManager
|
class CrewManager
|
||||||
{
|
{
|
||||||
public List<Character> characters;
|
public List<Character> characters;
|
||||||
public List<CharacterInfo> characterInfos;
|
public List<CharacterInfo> CharacterInfos;
|
||||||
|
|
||||||
public int WinningTeam = 1;
|
public int WinningTeam = 1;
|
||||||
|
|
||||||
private int money;
|
|
||||||
|
|
||||||
private GUIFrame guiFrame;
|
private GUIFrame guiFrame;
|
||||||
private GUIListBox listBox, orderListBox;
|
private GUIListBox listBox, orderListBox;
|
||||||
|
|
||||||
@@ -26,16 +24,10 @@ namespace Barotrauma
|
|||||||
get { return commander; }
|
get { return commander; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public int Money
|
|
||||||
{
|
|
||||||
get { return money; }
|
|
||||||
set { money = (int)Math.Max(value, 0.0f); }
|
|
||||||
}
|
|
||||||
|
|
||||||
public CrewManager()
|
public CrewManager()
|
||||||
{
|
{
|
||||||
characters = new List<Character>();
|
characters = new List<Character>();
|
||||||
characterInfos = new List<CharacterInfo>();
|
CharacterInfos = new List<CharacterInfo>();
|
||||||
|
|
||||||
guiFrame = new GUIFrame(new Rectangle(0, 50, 150, 450), Color.Transparent);
|
guiFrame = new GUIFrame(new Rectangle(0, 50, 150, 450), Color.Transparent);
|
||||||
guiFrame.Padding = Vector4.One * 5.0f;
|
guiFrame.Padding = Vector4.One * 5.0f;
|
||||||
@@ -49,20 +41,16 @@ namespace Barotrauma
|
|||||||
orderListBox.OnSelected = SelectCharacterOrder;
|
orderListBox.OnSelected = SelectCharacterOrder;
|
||||||
|
|
||||||
commander = new CrewCommander(this);
|
commander = new CrewCommander(this);
|
||||||
|
|
||||||
money = 10000;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public CrewManager(XElement element)
|
public CrewManager(XElement element)
|
||||||
: this()
|
: this()
|
||||||
{
|
{
|
||||||
money = ToolBox.GetAttributeInt(element, "money", 0);
|
|
||||||
|
|
||||||
foreach (XElement subElement in element.Elements())
|
foreach (XElement subElement in element.Elements())
|
||||||
{
|
{
|
||||||
if (subElement.Name.ToString().ToLowerInvariant() != "character") continue;
|
if (subElement.Name.ToString().ToLowerInvariant() != "character") continue;
|
||||||
|
|
||||||
characterInfos.Add(new CharacterInfo(subElement));
|
CharacterInfos.Add(new CharacterInfo(subElement));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -120,9 +108,9 @@ namespace Barotrauma
|
|||||||
public void AddCharacter(Character character)
|
public void AddCharacter(Character character)
|
||||||
{
|
{
|
||||||
characters.Add(character);
|
characters.Add(character);
|
||||||
if (!characterInfos.Contains(character.Info))
|
if (!CharacterInfos.Contains(character.Info))
|
||||||
{
|
{
|
||||||
characterInfos.Add(character.Info);
|
CharacterInfos.Add(character.Info);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (character is AICharacter)
|
if (character is AICharacter)
|
||||||
@@ -280,21 +268,21 @@ namespace Barotrauma
|
|||||||
listBox.ClearChildren();
|
listBox.ClearChildren();
|
||||||
characters.Clear();
|
characters.Clear();
|
||||||
|
|
||||||
WayPoint[] waypoints = WayPoint.SelectCrewSpawnPoints(characterInfos, Submarine.MainSub, false);
|
WayPoint[] waypoints = WayPoint.SelectCrewSpawnPoints(CharacterInfos, Submarine.MainSub, false);
|
||||||
|
|
||||||
for (int i = 0; i < waypoints.Length; i++)
|
for (int i = 0; i < waypoints.Length; i++)
|
||||||
{
|
{
|
||||||
Character character;
|
Character character;
|
||||||
|
|
||||||
if (characterInfos[i].HullID != null)
|
if (CharacterInfos[i].HullID != null)
|
||||||
{
|
{
|
||||||
var hull = Entity.FindEntityByID((ushort)characterInfos[i].HullID) as Hull;
|
var hull = Entity.FindEntityByID((ushort)CharacterInfos[i].HullID) as Hull;
|
||||||
if (hull == null) continue;
|
if (hull == null) continue;
|
||||||
character = Character.Create(characterInfos[i], hull.WorldPosition);
|
character = Character.Create(CharacterInfos[i], hull.WorldPosition);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
character = Character.Create(characterInfos[i], waypoints[i].WorldPosition);
|
character = Character.Create(CharacterInfos[i], waypoints[i].WorldPosition);
|
||||||
Character.Controlled = character;
|
Character.Controlled = character;
|
||||||
|
|
||||||
if (character.Info != null && !character.Info.StartItemsGiven)
|
if (character.Info != null && !character.Info.StartItemsGiven)
|
||||||
@@ -320,8 +308,8 @@ namespace Barotrauma
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
CharacterInfo deadInfo = characterInfos.Find(x => c.Info == x);
|
CharacterInfo deadInfo = CharacterInfos.Find(x => c.Info == x);
|
||||||
if (deadInfo != null) characterInfos.Remove(deadInfo);
|
if (deadInfo != null) CharacterInfos.Remove(deadInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
characters.Clear();
|
characters.Clear();
|
||||||
@@ -344,10 +332,8 @@ namespace Barotrauma
|
|||||||
public void Save(XElement parentElement)
|
public void Save(XElement parentElement)
|
||||||
{
|
{
|
||||||
XElement element = new XElement("crew");
|
XElement element = new XElement("crew");
|
||||||
|
|
||||||
element.Add(new XAttribute("money", money));
|
foreach (CharacterInfo ci in CharacterInfos)
|
||||||
|
|
||||||
foreach (CharacterInfo ci in characterInfos)
|
|
||||||
{
|
{
|
||||||
ci.Save(element);
|
ci.Save(element);
|
||||||
}
|
}
|
||||||
|
|||||||
+49
-101
@@ -6,19 +6,10 @@ using System.Xml.Linq;
|
|||||||
|
|
||||||
namespace Barotrauma
|
namespace Barotrauma
|
||||||
{
|
{
|
||||||
class SinglePlayerMode : GameMode
|
class SinglePlayerCampaign : CampaignMode
|
||||||
{
|
{
|
||||||
//private const int StartCharacterAmount = 3;
|
|
||||||
|
|
||||||
//public readonly CrewManager CrewManager;
|
|
||||||
//public readonly HireManager hireManager;
|
|
||||||
|
|
||||||
private GUIButton endRoundButton;
|
private GUIButton endRoundButton;
|
||||||
|
|
||||||
public readonly CargoManager CargoManager;
|
|
||||||
|
|
||||||
public Map Map;
|
|
||||||
|
|
||||||
private bool crewDead;
|
private bool crewDead;
|
||||||
private float endTimer;
|
private float endTimer;
|
||||||
|
|
||||||
@@ -29,31 +20,14 @@ namespace Barotrauma
|
|||||||
private Submarine leavingSub;
|
private Submarine leavingSub;
|
||||||
private bool atEndPosition;
|
private bool atEndPosition;
|
||||||
|
|
||||||
public override Mission Mission
|
protected CrewManager CrewManager
|
||||||
{
|
{
|
||||||
get
|
get { return GameMain.GameSession?.CrewManager; }
|
||||||
{
|
|
||||||
return Map.SelectedConnection.Mission;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int Money
|
public SinglePlayerCampaign(GameModePreset preset, object param)
|
||||||
{
|
|
||||||
get { return GameMain.GameSession.CrewManager.Money; }
|
|
||||||
set { GameMain.GameSession.CrewManager.Money = value; }
|
|
||||||
}
|
|
||||||
|
|
||||||
private CrewManager CrewManager
|
|
||||||
{
|
|
||||||
get { return GameMain.GameSession.CrewManager; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public SinglePlayerMode(GameModePreset preset, object param)
|
|
||||||
: base(preset, param)
|
: base(preset, param)
|
||||||
{
|
{
|
||||||
|
|
||||||
CargoManager = new CargoManager();
|
|
||||||
|
|
||||||
endRoundButton = new GUIButton(new Rectangle(GameMain.GraphicsWidth - 220, 20, 200, 25), "End round", null, Alignment.TopLeft, Alignment.Center, "");
|
endRoundButton = new GUIButton(new Rectangle(GameMain.GraphicsWidth - 220, 20, 200, 25), "End round", null, Alignment.TopLeft, Alignment.Center, "");
|
||||||
endRoundButton.Font = GUI.SmallFont;
|
endRoundButton.Font = GUI.SmallFont;
|
||||||
endRoundButton.OnClicked = TryEndRound;
|
endRoundButton.OnClicked = TryEndRound;
|
||||||
@@ -73,48 +47,11 @@ namespace Barotrauma
|
|||||||
jobPrefab = JobPrefab.List.Find(jp => jp.Name == "Mechanic");
|
jobPrefab = JobPrefab.List.Find(jp => jp.Name == "Mechanic");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
CharacterInfo characterInfo =
|
CrewManager.CharacterInfos.Add(new CharacterInfo(Character.HumanConfigFile, "", Gender.None, jobPrefab));
|
||||||
new CharacterInfo(Character.HumanConfigFile, "", Gender.None, jobPrefab);
|
|
||||||
CrewManager.characterInfos.Add(characterInfo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public SinglePlayerMode(XElement element)
|
|
||||||
: this(GameModePreset.list.Find(gm => gm.Name == "Single Player"), null)
|
|
||||||
{
|
|
||||||
foreach (XElement subElement in element.Elements())
|
|
||||||
{
|
|
||||||
switch (subElement.Name.ToString().ToLowerInvariant())
|
|
||||||
{
|
|
||||||
case "crew":
|
|
||||||
GameMain.GameSession.CrewManager = new CrewManager(subElement);
|
|
||||||
break;
|
|
||||||
case "map":
|
|
||||||
Map = Map.Load(subElement);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//backwards compatibility with older save files
|
|
||||||
if (Map==null)
|
|
||||||
{
|
|
||||||
string mapSeed = ToolBox.GetAttributeString(element, "mapseed", "a");
|
|
||||||
|
|
||||||
GenerateMap(mapSeed);
|
|
||||||
|
|
||||||
Map.SetLocation(ToolBox.GetAttributeInt(element, "currentlocation", 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
savedOnStart = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void GenerateMap(string seed)
|
|
||||||
{
|
|
||||||
Map = new Map(seed, 1000);
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Start()
|
public override void Start()
|
||||||
{
|
{
|
||||||
CargoManager.CreateItems();
|
CargoManager.CreateItems();
|
||||||
@@ -134,22 +71,15 @@ namespace Barotrauma
|
|||||||
|
|
||||||
public bool TryHireCharacter(HireManager hireManager, CharacterInfo characterInfo)
|
public bool TryHireCharacter(HireManager hireManager, CharacterInfo characterInfo)
|
||||||
{
|
{
|
||||||
if (CrewManager.Money < characterInfo.Salary) return false;
|
if (Money < characterInfo.Salary) return false;
|
||||||
|
|
||||||
hireManager.availableCharacters.Remove(characterInfo);
|
hireManager.availableCharacters.Remove(characterInfo);
|
||||||
CrewManager.characterInfos.Add(characterInfo);
|
CrewManager.CharacterInfos.Add(characterInfo);
|
||||||
|
Money -= characterInfo.Salary;
|
||||||
CrewManager.Money -= characterInfo.Salary;
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string GetMoney()
|
|
||||||
{
|
|
||||||
return "Money: " + CrewManager.Money;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private Submarine GetLeavingSub()
|
private Submarine GetLeavingSub()
|
||||||
{
|
{
|
||||||
if (Character.Controlled != null && Character.Controlled.Submarine != null)
|
if (Character.Controlled != null && Character.Controlled.Submarine != null)
|
||||||
@@ -170,15 +100,6 @@ namespace Barotrauma
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<Submarine> GetSubsToLeaveBehind(Submarine leavingSub)
|
|
||||||
{
|
|
||||||
//leave subs behind if they're not docked to the leaving sub and not at the same exit
|
|
||||||
return Submarine.Loaded.FindAll(s =>
|
|
||||||
s != leavingSub &&
|
|
||||||
!leavingSub.DockedTo.Contains(s) &&
|
|
||||||
(s.AtEndPosition != leavingSub.AtEndPosition || s.AtStartPosition != leavingSub.AtStartPosition));
|
|
||||||
}
|
|
||||||
|
|
||||||
public override void Draw(SpriteBatch spriteBatch)
|
public override void Draw(SpriteBatch spriteBatch)
|
||||||
{
|
{
|
||||||
if (!isRunning|| GUI.DisableHUD) return;
|
if (!isRunning|| GUI.DisableHUD) return;
|
||||||
@@ -218,9 +139,7 @@ namespace Barotrauma
|
|||||||
if (!isRunning) return;
|
if (!isRunning) return;
|
||||||
|
|
||||||
base.AddToGUIUpdateList();
|
base.AddToGUIUpdateList();
|
||||||
|
|
||||||
CrewManager.AddToGUIUpdateList();
|
CrewManager.AddToGUIUpdateList();
|
||||||
|
|
||||||
endRoundButton.AddToGUIUpdateList();
|
endRoundButton.AddToGUIUpdateList();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -361,12 +280,12 @@ namespace Barotrauma
|
|||||||
|
|
||||||
List<Submarine> leavingSubs = obj as List<Submarine>;
|
List<Submarine> leavingSubs = obj as List<Submarine>;
|
||||||
if (leavingSubs == null) leavingSubs = new List<Submarine>() { GetLeavingSub() };
|
if (leavingSubs == null) leavingSubs = new List<Submarine>() { GetLeavingSub() };
|
||||||
|
|
||||||
var cinematic = new TransitionCinematic(leavingSubs, GameMain.GameScreen.Cam, 5.0f);
|
var cinematic = new TransitionCinematic(leavingSubs, GameMain.GameScreen.Cam, 5.0f);
|
||||||
|
|
||||||
SoundPlayer.OverrideMusicType = CrewManager.characters.Any(c => !c.IsDead) ? "endround" : "crewdead";
|
SoundPlayer.OverrideMusicType = CrewManager.characters.Any(c => !c.IsDead) ? "endround" : "crewdead";
|
||||||
|
|
||||||
CoroutineManager.StartCoroutine(EndCinematic(cinematic),"EndCinematic");
|
CoroutineManager.StartCoroutine(EndCinematic(cinematic), "EndCinematic");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -391,14 +310,43 @@ namespace Barotrauma
|
|||||||
yield return CoroutineStatus.Success;
|
yield return CoroutineStatus.Success;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Save(XElement element)
|
public static SinglePlayerCampaign Load(XElement element)
|
||||||
{
|
{
|
||||||
//element.Add(new XAttribute("day", day));
|
SinglePlayerCampaign campaign = new SinglePlayerCampaign(GameModePreset.list.Find(gm => gm.Name == "Single Player"), null);
|
||||||
XElement modeElement = new XElement("gamemode");
|
|
||||||
|
|
||||||
//modeElement.Add(new XAttribute("currentlocation", Map.CurrentLocationIndex));
|
foreach (XElement subElement in element.Elements())
|
||||||
//modeElement.Add(new XAttribute("mapseed", Map.Seed));
|
{
|
||||||
|
switch (subElement.Name.ToString().ToLowerInvariant())
|
||||||
|
{
|
||||||
|
case "crew":
|
||||||
|
GameMain.GameSession.CrewManager = new CrewManager(subElement);
|
||||||
|
break;
|
||||||
|
case "map":
|
||||||
|
campaign.map = Map.Load(subElement);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
campaign.Money = ToolBox.GetAttributeInt(element, "money", 0);
|
||||||
|
|
||||||
|
//backwards compatibility with older save files
|
||||||
|
if (campaign.map == null)
|
||||||
|
{
|
||||||
|
string mapSeed = ToolBox.GetAttributeString(element, "mapseed", "a");
|
||||||
|
campaign.GenerateMap(mapSeed);
|
||||||
|
campaign.map.SetLocation(ToolBox.GetAttributeInt(element, "currentlocation", 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
campaign.savedOnStart = true;
|
||||||
|
|
||||||
|
return campaign;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Save(XElement element)
|
||||||
|
{
|
||||||
|
XElement modeElement = new XElement("gamemode");
|
||||||
|
|
||||||
|
modeElement.Add(new XAttribute("money", Money));
|
||||||
|
|
||||||
CrewManager.Save(modeElement);
|
CrewManager.Save(modeElement);
|
||||||
Map.Save(modeElement);
|
Map.Save(modeElement);
|
||||||
@@ -37,11 +37,11 @@ namespace Barotrauma.Tutorials
|
|||||||
{
|
{
|
||||||
|
|
||||||
GameMain.GameSession = new GameSession(Submarine.MainSub, "", GameModePreset.list.Find(gm => gm.Name.ToLowerInvariant() == "tutorial"));
|
GameMain.GameSession = new GameSession(Submarine.MainSub, "", GameModePreset.list.Find(gm => gm.Name.ToLowerInvariant() == "tutorial"));
|
||||||
(GameMain.GameSession.gameMode as TutorialMode).tutorialType = this;
|
(GameMain.GameSession.GameMode as TutorialMode).tutorialType = this;
|
||||||
|
|
||||||
GameMain.GameSession.StartRound("tuto");
|
GameMain.GameSession.StartRound("tuto");
|
||||||
|
|
||||||
GameMain.GameSession.TaskManager.Events.Clear();
|
GameMain.GameSession.EventManager.Events.Clear();
|
||||||
|
|
||||||
GameMain.GameScreen.Select();
|
GameMain.GameScreen.Select();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
SinglePlayerMode mode = (gameMode as SinglePlayerMode);
|
SinglePlayerCampaign mode = (GameMode as SinglePlayerCampaign);
|
||||||
return (mode == null) ? null : mode.Map;
|
return (mode == null) ? null : mode.Map;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -132,21 +132,21 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
infoButton.AddToGUIUpdateList();
|
infoButton.AddToGUIUpdateList();
|
||||||
|
|
||||||
if (gameMode != null) gameMode.AddToGUIUpdateList();
|
if (GameMode != null) GameMode.AddToGUIUpdateList();
|
||||||
|
|
||||||
if (infoFrame != null) infoFrame.AddToGUIUpdateList();
|
if (infoFrame != null) infoFrame.AddToGUIUpdateList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Update(float deltaTime)
|
public void Update(float deltaTime)
|
||||||
{
|
{
|
||||||
TaskManager.Update(deltaTime);
|
EventManager.Update(deltaTime);
|
||||||
|
|
||||||
if (GUI.DisableHUD) return;
|
if (GUI.DisableHUD) return;
|
||||||
|
|
||||||
//guiRoot.Update(deltaTime);
|
//guiRoot.Update(deltaTime);
|
||||||
infoButton.Update(deltaTime);
|
infoButton.Update(deltaTime);
|
||||||
|
|
||||||
if (gameMode != null) gameMode.Update(deltaTime);
|
if (GameMode != null) GameMode.Update(deltaTime);
|
||||||
if (Mission != null) Mission.Update(deltaTime);
|
if (Mission != null) Mission.Update(deltaTime);
|
||||||
if (infoFrame != null)
|
if (infoFrame != null)
|
||||||
{
|
{
|
||||||
@@ -165,23 +165,26 @@ namespace Barotrauma
|
|||||||
|
|
||||||
infoButton.Draw(spriteBatch);
|
infoButton.Draw(spriteBatch);
|
||||||
|
|
||||||
if (gameMode != null) gameMode.Draw(spriteBatch);
|
if (GameMode != null) GameMode.Draw(spriteBatch);
|
||||||
if (infoFrame != null) infoFrame.Draw(spriteBatch);
|
if (infoFrame != null) infoFrame.Draw(spriteBatch);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Save(string filePath)
|
public void Save(string filePath)
|
||||||
{
|
{
|
||||||
|
if (!(GameMode is CampaignMode))
|
||||||
|
{
|
||||||
|
throw new NotSupportedException("GameSessions can only be saved when playing in a campaign mode.");
|
||||||
|
}
|
||||||
|
|
||||||
XDocument doc = new XDocument(
|
XDocument doc = new XDocument(
|
||||||
new XElement("Gamesession"));
|
new XElement("Gamesession"));
|
||||||
|
|
||||||
var now = DateTime.Now;
|
var now = DateTime.Now;
|
||||||
doc.Root.Add(new XAttribute("savetime", now.ToShortTimeString() + ", " + now.ToShortDateString()));
|
doc.Root.Add(new XAttribute("savetime", now.ToShortTimeString() + ", " + now.ToShortDateString()));
|
||||||
|
|
||||||
doc.Root.Add(new XAttribute("submarine", submarine == null ? "" : submarine.Name));
|
doc.Root.Add(new XAttribute("submarine", submarine == null ? "" : submarine.Name));
|
||||||
|
|
||||||
doc.Root.Add(new XAttribute("mapseed", Map.Seed));
|
doc.Root.Add(new XAttribute("mapseed", Map.Seed));
|
||||||
|
|
||||||
((SinglePlayerMode)gameMode).Save(doc.Root);
|
((CampaignMode)GameMode).Save(doc.Root);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -724,7 +724,7 @@ namespace Barotrauma.Networking
|
|||||||
{
|
{
|
||||||
if (!gameStarted) yield return CoroutineStatus.Success;
|
if (!gameStarted) yield return CoroutineStatus.Success;
|
||||||
|
|
||||||
if (GameMain.GameSession != null) GameMain.GameSession.gameMode.End(endMessage);
|
if (GameMain.GameSession != null) GameMain.GameSession.GameMode.End(endMessage);
|
||||||
|
|
||||||
gameStarted = false;
|
gameStarted = false;
|
||||||
Character.Controlled = null;
|
Character.Controlled = null;
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace Barotrauma
|
|||||||
private GUIListBox selectedItemList;
|
private GUIListBox selectedItemList;
|
||||||
private GUIListBox storeItemList;
|
private GUIListBox storeItemList;
|
||||||
|
|
||||||
private SinglePlayerMode gameMode;
|
private SinglePlayerCampaign gameMode;
|
||||||
|
|
||||||
private GUIFrame previewFrame;
|
private GUIFrame previewFrame;
|
||||||
|
|
||||||
@@ -158,7 +158,7 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
base.Select();
|
base.Select();
|
||||||
|
|
||||||
gameMode = GameMain.GameSession.gameMode as SinglePlayerMode;
|
gameMode = GameMain.GameSession.GameMode as SinglePlayerCampaign;
|
||||||
|
|
||||||
UpdateCharacterLists();
|
UpdateCharacterLists();
|
||||||
}
|
}
|
||||||
@@ -237,7 +237,6 @@ namespace Barotrauma
|
|||||||
new GUITextBlock(new Rectangle(0, 100, 0, 20), "Reward: " + mission.Reward+" credits", "", locationPanel);
|
new GUITextBlock(new Rectangle(0, 100, 0, 20), "Reward: " + mission.Reward+" credits", "", locationPanel);
|
||||||
|
|
||||||
new GUITextBlock(new Rectangle(0, 130, 0, 0), mission.Description, "", locationPanel, true);
|
new GUITextBlock(new Rectangle(0, 130, 0, 0), mission.Description, "", locationPanel, true);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
startButton.Enabled = true;
|
startButton.Enabled = true;
|
||||||
@@ -248,7 +247,7 @@ namespace Barotrauma
|
|||||||
private void UpdateCharacterLists()
|
private void UpdateCharacterLists()
|
||||||
{
|
{
|
||||||
characterList.ClearChildren();
|
characterList.ClearChildren();
|
||||||
foreach (CharacterInfo c in CrewManager.characterInfos)
|
foreach (CharacterInfo c in CrewManager.CharacterInfos)
|
||||||
{
|
{
|
||||||
c.CreateCharacterFrame(characterList, c.Name + " ("+c.Job.Name+") ", c);
|
c.CreateCharacterFrame(characterList, c.Name + " ("+c.Job.Name+") ", c);
|
||||||
}
|
}
|
||||||
@@ -298,7 +297,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
CreateItemFrame(prefab, selectedItemList, selectedItemList.Rect.Width);
|
CreateItemFrame(prefab, selectedItemList, selectedItemList.Rect.Width);
|
||||||
|
|
||||||
buyButton.Enabled = CrewManager.Money >= selectedItemCost;
|
buyButton.Enabled = gameMode.Money >= selectedItemCost;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -317,9 +316,9 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
int cost = selectedItemCost;
|
int cost = selectedItemCost;
|
||||||
|
|
||||||
if (CrewManager.Money < cost) return false;
|
if (gameMode.Money < cost) return false;
|
||||||
|
|
||||||
CrewManager.Money -= cost;
|
gameMode.Money -= cost;
|
||||||
|
|
||||||
for (int i = selectedItemList.children.Count-1; i>=0; i--)
|
for (int i = selectedItemList.children.Count-1; i>=0; i--)
|
||||||
{
|
{
|
||||||
@@ -363,7 +362,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
public override void Draw(double deltaTime, GraphicsDevice graphics, SpriteBatch spriteBatch)
|
public override void Draw(double deltaTime, GraphicsDevice graphics, SpriteBatch spriteBatch)
|
||||||
{
|
{
|
||||||
if (characterList.CountChildren != CrewManager.characterInfos.Count)
|
if (characterList.CountChildren != CrewManager.CharacterInfos.Count)
|
||||||
{
|
{
|
||||||
UpdateCharacterLists();
|
UpdateCharacterLists();
|
||||||
}
|
}
|
||||||
@@ -457,7 +456,7 @@ namespace Barotrauma
|
|||||||
|
|
||||||
private string GetMoney()
|
private string GetMoney()
|
||||||
{
|
{
|
||||||
return "Money: " + ((GameMain.GameSession == null) ? "0" : string.Format(CultureInfo.InvariantCulture, "{0:N0}", CrewManager.Money)) + " credits";
|
return "Money: " + ((GameMain.GameSession == null) ? "0" : string.Format(CultureInfo.InvariantCulture, "{0:N0}", gameMode.Money)) + " credits";
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool SelectCharacter(GUIComponent component, object selection)
|
private bool SelectCharacter(GUIComponent component, object selection)
|
||||||
|
|||||||
@@ -508,8 +508,8 @@ namespace Barotrauma
|
|||||||
|
|
||||||
GUI.Draw((float)deltaTime, spriteBatch, null);
|
GUI.Draw((float)deltaTime, spriteBatch, null);
|
||||||
|
|
||||||
GUI.Font.DrawString(spriteBatch, "Barotrauma v"+GameMain.Version, new Vector2(10, GameMain.GraphicsHeight-20), Color.White);
|
GUI.Font.DrawString(spriteBatch, "Barotrauma v" + GameMain.Version, new Vector2(10, GameMain.GraphicsHeight - 20), Color.White);
|
||||||
|
|
||||||
spriteBatch.End();
|
spriteBatch.End();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -542,15 +542,10 @@ namespace Barotrauma
|
|||||||
selectedSub = new Submarine(Path.Combine(SaveUtil.TempPath, selectedSub.Name + ".sub"), "");
|
selectedSub = new Submarine(Path.Combine(SaveUtil.TempPath, selectedSub.Name + ".sub"), "");
|
||||||
|
|
||||||
GameMain.GameSession = new GameSession(selectedSub, saveNameBox.Text, GameModePreset.list.Find(gm => gm.Name == "Single Player"));
|
GameMain.GameSession = new GameSession(selectedSub, saveNameBox.Text, GameModePreset.list.Find(gm => gm.Name == "Single Player"));
|
||||||
(GameMain.GameSession.gameMode as SinglePlayerMode).GenerateMap(seedBox.Text);
|
(GameMain.GameSession.GameMode as CampaignMode).GenerateMap(seedBox.Text);
|
||||||
|
|
||||||
GameMain.LobbyScreen.Select();
|
GameMain.LobbyScreen.Select();
|
||||||
|
|
||||||
//new GUIMessageBox("Welcome to Barotrauma!", "Please note that the single player mode is very unfinished at the moment; "+
|
|
||||||
//"for example, the NPCs don't have an AI yet and there are only a couple of different quests to complete. The multiplayer "+
|
|
||||||
//"mode should be much more enjoyable to play at the moment, so my recommendation is to try out and get a hang of the game mechanics "+
|
|
||||||
//"in the single player mode and then move on to multiplayer. Have fun!\n - Regalis, the main dev of Subsurface", 400, 350);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1366,9 +1366,11 @@
|
|||||||
<Compile Include="$(MSBuildThisFileDirectory)Source\Events\ScriptedEvent.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)Source\Events\ScriptedEvent.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)Source\FrameCounter.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)Source\FrameCounter.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)Source\GameSession\CargoManager.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)Source\GameSession\CargoManager.cs" />
|
||||||
|
<Compile Include="$(MSBuildThisFileDirectory)Source\GameSession\GameModes\CampaignMode.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)Source\GameSession\GameModes\GameMode.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)Source\GameSession\GameModes\GameMode.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)Source\GameSession\GameModes\GameModePreset.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)Source\GameSession\GameModes\GameModePreset.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)Source\GameSession\GameModes\MissionMode.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)Source\GameSession\GameModes\MissionMode.cs" />
|
||||||
|
<Compile Include="$(MSBuildThisFileDirectory)Source\GameSession\GameModes\MultiplayerCampaign.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)Source\GameSession\GameModes\TraitorManager.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)Source\GameSession\GameModes\TraitorManager.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)Source\GameSession\GameSession.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)Source\GameSession\GameSession.cs" />
|
||||||
<Compile Include="$(MSBuildThisFileDirectory)Source\GameSession\InfoTextManager.cs" />
|
<Compile Include="$(MSBuildThisFileDirectory)Source\GameSession\InfoTextManager.cs" />
|
||||||
|
|||||||
@@ -169,7 +169,7 @@ namespace Barotrauma
|
|||||||
#if CLIENT
|
#if CLIENT
|
||||||
if (GameMain.GameSession != null)
|
if (GameMain.GameSession != null)
|
||||||
{
|
{
|
||||||
SinglePlayerMode mode = GameMain.GameSession.gameMode as SinglePlayerMode;
|
SinglePlayerCampaign mode = GameMain.GameSession.GameMode as SinglePlayerCampaign;
|
||||||
if (mode != null)
|
if (mode != null)
|
||||||
{
|
{
|
||||||
Character.Controlled = spawnedCharacter;
|
Character.Controlled = spawnedCharacter;
|
||||||
|
|||||||
@@ -248,12 +248,10 @@ namespace Barotrauma
|
|||||||
|
|
||||||
public void GiveReward()
|
public void GiveReward()
|
||||||
{
|
{
|
||||||
#if CLIENT
|
var mode = GameMain.GameSession.GameMode as CampaignMode;
|
||||||
var mode = GameMain.GameSession.gameMode as SinglePlayerMode;
|
|
||||||
if (mode == null) return;
|
if (mode == null) return;
|
||||||
|
|
||||||
mode.Money += reward;
|
mode.Money += reward;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,62 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Xml.Linq;
|
||||||
|
|
||||||
|
namespace Barotrauma
|
||||||
|
{
|
||||||
|
abstract class CampaignMode : GameMode
|
||||||
|
{
|
||||||
|
public readonly CargoManager CargoManager;
|
||||||
|
|
||||||
|
const int InitialMoney = 10000;
|
||||||
|
|
||||||
|
protected Map map;
|
||||||
|
public Map Map
|
||||||
|
{
|
||||||
|
get { return map; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Mission Mission
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return Map.SelectedConnection.Mission;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private int money;
|
||||||
|
public int Money
|
||||||
|
{
|
||||||
|
get { return money; }
|
||||||
|
set { money = Math.Max(value, 0); }
|
||||||
|
}
|
||||||
|
|
||||||
|
public CampaignMode(GameModePreset preset, object param)
|
||||||
|
: base(preset, param)
|
||||||
|
{
|
||||||
|
Money = InitialMoney;
|
||||||
|
CargoManager = new CargoManager();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void GenerateMap(string seed)
|
||||||
|
{
|
||||||
|
map = new Map(seed, 1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected List<Submarine> GetSubsToLeaveBehind(Submarine leavingSub)
|
||||||
|
{
|
||||||
|
//leave subs behind if they're not docked to the leaving sub and not at the same exit
|
||||||
|
return Submarine.Loaded.FindAll(s =>
|
||||||
|
s != leavingSub &&
|
||||||
|
!leavingSub.DockedTo.Contains(s) &&
|
||||||
|
(s.AtEndPosition != leavingSub.AtEndPosition || s.AtStartPosition != leavingSub.AtStartPosition));
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void End(string endMessage = "")
|
||||||
|
{
|
||||||
|
base.End(endMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void Save(XElement element);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -34,7 +34,7 @@ namespace Barotrauma
|
|||||||
public static void Init()
|
public static void Init()
|
||||||
{
|
{
|
||||||
#if CLIENT
|
#if CLIENT
|
||||||
new GameModePreset("Single Player", typeof(SinglePlayerMode), true);
|
new GameModePreset("Single Player", typeof(SinglePlayerCampaign), true);
|
||||||
new GameModePreset("Tutorial", typeof(TutorialMode), true);
|
new GameModePreset("Tutorial", typeof(TutorialMode), true);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Text;
|
||||||
|
using System.Xml.Linq;
|
||||||
|
|
||||||
|
namespace Barotrauma
|
||||||
|
{
|
||||||
|
class MultiplayerCampaign : CampaignMode
|
||||||
|
{
|
||||||
|
public MultiplayerCampaign(GameModePreset preset, object param) :
|
||||||
|
base(preset, param)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Save(XElement element)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -7,9 +7,9 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
public enum InfoFrameTab { Crew, Mission, ManagePlayers };
|
public enum InfoFrameTab { Crew, Mission, ManagePlayers };
|
||||||
|
|
||||||
public readonly EventManager TaskManager;
|
public readonly EventManager EventManager;
|
||||||
|
|
||||||
public readonly GameMode gameMode;
|
public readonly GameMode GameMode;
|
||||||
|
|
||||||
//two locations used as the start and end in the MP mode
|
//two locations used as the start and end in the MP mode
|
||||||
private Location[] dummyLocations;
|
private Location[] dummyLocations;
|
||||||
@@ -79,14 +79,14 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
get { return saveFile; }
|
get { return saveFile; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public GameSession(Submarine submarine, string saveFile, GameModePreset gameModePreset = null, string missionType="")
|
public GameSession(Submarine submarine, string saveFile, GameModePreset gameModePreset = null, string missionType = "")
|
||||||
{
|
{
|
||||||
Submarine.MainSub = submarine;
|
Submarine.MainSub = submarine;
|
||||||
|
|
||||||
GameMain.GameSession = this;
|
GameMain.GameSession = this;
|
||||||
|
|
||||||
TaskManager = new EventManager(this);
|
EventManager = new EventManager(this);
|
||||||
|
|
||||||
this.saveFile = saveFile;
|
this.saveFile = saveFile;
|
||||||
|
|
||||||
@@ -97,7 +97,7 @@ namespace Barotrauma
|
|||||||
infoButton.OnClicked = ToggleInfoFrame;
|
infoButton.OnClicked = ToggleInfoFrame;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (gameModePreset != null) gameMode = gameModePreset.Instantiate(missionType);
|
if (gameModePreset != null) GameMode = gameModePreset.Instantiate(missionType);
|
||||||
this.submarine = submarine;
|
this.submarine = submarine;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -117,7 +117,7 @@ namespace Barotrauma
|
|||||||
{
|
{
|
||||||
if (subElement.Name.ToString().ToLowerInvariant() != "gamemode") continue;
|
if (subElement.Name.ToString().ToLowerInvariant() != "gamemode") continue;
|
||||||
|
|
||||||
gameMode = new SinglePlayerMode(subElement);
|
GameMode = SinglePlayerCampaign.Load(subElement);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@@ -186,18 +186,18 @@ namespace Barotrauma
|
|||||||
submarine.SetPosition(submarine.FindSpawnPos(level.StartPosition - new Vector2(0.0f, 2000.0f)));
|
submarine.SetPosition(submarine.FindSpawnPos(level.StartPosition - new Vector2(0.0f, 2000.0f)));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gameMode.Mission != null)
|
if (GameMode.Mission != null)
|
||||||
{
|
{
|
||||||
currentMission = gameMode.Mission;
|
currentMission = GameMode.Mission;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gameMode!=null) gameMode.Start();
|
if (GameMode!=null) GameMode.Start();
|
||||||
|
|
||||||
if (gameMode.Mission != null) Mission.Start(Level.Loaded);
|
if (GameMode.Mission != null) Mission.Start(Level.Loaded);
|
||||||
|
|
||||||
TaskManager.StartRound(level);
|
EventManager.StartRound(level);
|
||||||
|
|
||||||
if (gameMode != null) gameMode.MsgBox();
|
if (GameMode != null) GameMode.MsgBox();
|
||||||
|
|
||||||
Entity.Spawner = new EntitySpawner();
|
Entity.Spawner = new EntitySpawner();
|
||||||
|
|
||||||
@@ -234,7 +234,7 @@ namespace Barotrauma
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
TaskManager.EndRound();
|
EventManager.EndRound();
|
||||||
|
|
||||||
currentMission = null;
|
currentMission = null;
|
||||||
|
|
||||||
|
|||||||
@@ -554,7 +554,7 @@ namespace Barotrauma.Networking
|
|||||||
//game already started -> send start message immediately
|
//game already started -> send start message immediately
|
||||||
if (gameStarted)
|
if (gameStarted)
|
||||||
{
|
{
|
||||||
SendStartMessage(roundStartSeed, Submarine.MainSub, GameMain.GameSession.gameMode.Preset, connectedClient);
|
SendStartMessage(roundStartSeed, Submarine.MainSub, GameMain.GameSession.GameMode.Preset, connectedClient);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -1131,8 +1131,8 @@ namespace Barotrauma.Networking
|
|||||||
|
|
||||||
GameMain.GameSession = new GameSession(selectedSub, "", selectedMode, Mission.MissionTypes[GameMain.NetLobbyScreen.MissionTypeIndex]);
|
GameMain.GameSession = new GameSession(selectedSub, "", selectedMode, Mission.MissionTypes[GameMain.NetLobbyScreen.MissionTypeIndex]);
|
||||||
|
|
||||||
if (GameMain.GameSession.gameMode.Mission != null &&
|
if (GameMain.GameSession.GameMode.Mission != null &&
|
||||||
GameMain.GameSession.gameMode.Mission.AssignTeamIDs(connectedClients, out hostTeam))
|
GameMain.GameSession.GameMode.Mission.AssignTeamIDs(connectedClients, out hostTeam))
|
||||||
{
|
{
|
||||||
teamCount = 2;
|
teamCount = 2;
|
||||||
}
|
}
|
||||||
@@ -1149,8 +1149,8 @@ namespace Barotrauma.Networking
|
|||||||
GameServer.Log("Level seed: " + GameMain.NetLobbyScreen.LevelSeed, ServerLog.MessageType.ServerMessage);
|
GameServer.Log("Level seed: " + GameMain.NetLobbyScreen.LevelSeed, ServerLog.MessageType.ServerMessage);
|
||||||
|
|
||||||
bool missionAllowRespawn =
|
bool missionAllowRespawn =
|
||||||
!(GameMain.GameSession.gameMode is MissionMode) ||
|
!(GameMain.GameSession.GameMode is MissionMode) ||
|
||||||
((MissionMode)GameMain.GameSession.gameMode).Mission.AllowRespawn;
|
((MissionMode)GameMain.GameSession.GameMode).Mission.AllowRespawn;
|
||||||
|
|
||||||
if (AllowRespawn && missionAllowRespawn) respawnManager = new RespawnManager(this, selectedShuttle);
|
if (AllowRespawn && missionAllowRespawn) respawnManager = new RespawnManager(this, selectedShuttle);
|
||||||
|
|
||||||
@@ -1261,7 +1261,7 @@ namespace Barotrauma.Networking
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SendStartMessage(roundStartSeed, Submarine.MainSub, GameMain.GameSession.gameMode.Preset, connectedClients);
|
SendStartMessage(roundStartSeed, Submarine.MainSub, GameMain.GameSession.GameMode.Preset, connectedClients);
|
||||||
|
|
||||||
yield return CoroutineStatus.Running;
|
yield return CoroutineStatus.Running;
|
||||||
|
|
||||||
@@ -1308,8 +1308,8 @@ namespace Barotrauma.Networking
|
|||||||
msg.Write(selectedMode.Name);
|
msg.Write(selectedMode.Name);
|
||||||
|
|
||||||
bool missionAllowRespawn =
|
bool missionAllowRespawn =
|
||||||
!(GameMain.GameSession.gameMode is MissionMode) ||
|
!(GameMain.GameSession.GameMode is MissionMode) ||
|
||||||
((MissionMode)GameMain.GameSession.gameMode).Mission.AllowRespawn;
|
((MissionMode)GameMain.GameSession.GameMode).Mission.AllowRespawn;
|
||||||
|
|
||||||
msg.Write(AllowRespawn && missionAllowRespawn);
|
msg.Write(AllowRespawn && missionAllowRespawn);
|
||||||
msg.Write(Submarine.MainSubs[1] != null); //loadSecondSub
|
msg.Write(Submarine.MainSubs[1] != null); //loadSecondSub
|
||||||
@@ -1350,7 +1350,7 @@ namespace Barotrauma.Networking
|
|||||||
}
|
}
|
||||||
|
|
||||||
Mission mission = GameMain.GameSession.Mission;
|
Mission mission = GameMain.GameSession.Mission;
|
||||||
GameMain.GameSession.gameMode.End(endMessage);
|
GameMain.GameSession.GameMode.End(endMessage);
|
||||||
|
|
||||||
if (autoRestart)
|
if (autoRestart)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user