Mission refactoring (mission prefabs) and option to select which types of missions can be selected when mission type is set to random (TODO: a way to set the allowed types from the UI).

This commit is contained in:
Joonas Rikkonen
2018-05-17 23:45:29 +03:00
parent 244acd3ec5
commit f931d81aed
15 changed files with 273 additions and 191 deletions
@@ -6,10 +6,10 @@ namespace Barotrauma
{
public void ShowMessage(int index)
{
if (index >= headers.Count && index >= messages.Count) return;
if (index >= Headers.Count && index >= Messages.Count) return;
string header = index < headers.Count ? headers[index] : "";
string message = index < messages.Count ? messages[index] : "";
string header = index < Headers.Count ? Headers[index] : "";
string message = index < Messages.Count ? Messages[index] : "";
GameServer.Log(TextManager.Get("MissionInfo") + ": " + header + " - " + message, ServerLog.MessageType.ServerMessage);
@@ -256,7 +256,7 @@ namespace Barotrauma
TitleScreen.LoadState = 2.0f;
yield return CoroutineStatus.Running;
Mission.Init();
MissionPrefab.Init();
MapEntityPrefab.Init();
LevelGenerationParams.LoadPresets();
TitleScreen.LoadState = 10.0f;
@@ -691,6 +691,7 @@ namespace Barotrauma.Networking
string shuttleHash = inc.ReadString();
string modeName = inc.ReadString();
int missionIndex = inc.ReadInt16();
bool respawnAllowed = inc.ReadBoolean();
bool loadSecondSub = inc.ReadBoolean();
@@ -750,7 +751,7 @@ namespace Barotrauma.Networking
if (campaign == null)
{
GameMain.GameSession = new GameSession(GameMain.NetLobbyScreen.SelectedSub, "", gameMode, Mission.MissionTypes[missionTypeIndex]);
GameMain.GameSession = new GameSession(GameMain.NetLobbyScreen.SelectedSub, "", gameMode, missionIndex < 0 ? null : MissionPrefab.List[missionIndex]);
GameMain.GameSession.StartRound(levelSeed, loadSecondSub);
}
else
@@ -883,7 +884,7 @@ namespace Barotrauma.Networking
bool allowSpectating = inc.ReadBoolean();
YesNoMaybe traitorsEnabled = (YesNoMaybe)inc.ReadRangedInteger(0, 2);
int missionTypeIndex = inc.ReadRangedInteger(0, Mission.MissionTypes.Count - 1);
int missionTypeIndex = inc.ReadRangedInteger(0, MissionPrefab.MissionTypes.Count - 1);
int modeIndex = inc.ReadByte();
string levelSeed = inc.ReadString();
@@ -688,9 +688,9 @@ namespace Barotrauma
public void SetMissionType(int missionTypeIndex)
{
if (missionTypeIndex < 0 || missionTypeIndex >= Mission.MissionTypes.Count) return;
if (missionTypeIndex < 0 || missionTypeIndex >= MissionPrefab.MissionTypes.Count) return;
missionTypeBlock.GetChild<GUITextBlock>().Text = Mission.MissionTypes[missionTypeIndex];
missionTypeBlock.GetChild<GUITextBlock>().Text = MissionPrefab.MissionTypes[missionTypeIndex];
missionTypeBlock.UserData = missionTypeIndex;
}
@@ -701,8 +701,8 @@ namespace Barotrauma
int missionTypeIndex = (int)missionTypeBlock.UserData;
missionTypeIndex += (int)userData;
if (missionTypeIndex < 0) missionTypeIndex = Mission.MissionTypes.Count - 1;
if (missionTypeIndex >= Mission.MissionTypes.Count) missionTypeIndex = 0;
if (missionTypeIndex < 0) missionTypeIndex = MissionPrefab.MissionTypes.Count - 1;
if (missionTypeIndex >= MissionPrefab.MissionTypes.Count) missionTypeIndex = 0;
SetMissionType(missionTypeIndex);