Separate folder for game modes

This commit is contained in:
Regalis
2015-08-08 14:19:47 +03:00
parent 0937c30f15
commit f248ef528b
12 changed files with 221 additions and 190 deletions

View File

@@ -6,39 +6,9 @@ using System.Reflection;
namespace Subsurface
{
class GameModePreset
{
public static List<GameModePreset> list = new List<GameModePreset>();
public ConstructorInfo Constructor;
public string Name;
public bool IsSinglePlayer;
public string Description;
public GameModePreset(string name, Type type, bool isSinglePlayer = false)
{
this.Name = name;
//Constructor = constructor;
Constructor = type.GetConstructor(new Type[] { typeof(GameModePreset)});
IsSinglePlayer = isSinglePlayer;
list.Add(this);
}
public GameMode Instantiate()
{
object[] lobject = new object[] { this };
return(GameMode)Constructor.Invoke(lobject);
}
}
class GameMode
{
public static List<GameModePreset> presetList = new List<GameModePreset>();
public static List<GameModePreset> PresetList = new List<GameModePreset>();
TimeSpan duration;
protected DateTime startTime;
@@ -94,9 +64,6 @@ namespace Subsurface
public GameMode(GameModePreset preset)
{
this.preset = preset;
//list.Add(this);
}
public virtual void Draw(SpriteBatch spriteBatch)

View File

@@ -0,0 +1,38 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
namespace Subsurface
{
class GameModePreset
{
public static List<GameModePreset> list = new List<GameModePreset>();
public ConstructorInfo Constructor;
public string Name;
public bool IsSinglePlayer;
public string Description;
public GameModePreset(string name, Type type, bool isSinglePlayer = false)
{
this.Name = name;
//Constructor = constructor;
Constructor = type.GetConstructor(new Type[] { typeof(GameModePreset) });
IsSinglePlayer = isSinglePlayer;
list.Add(this);
}
public GameMode Instantiate()
{
object[] lobject = new object[] { this };
return (GameMode)Constructor.Invoke(lobject);
}
}
}

View File

@@ -12,14 +12,14 @@ namespace Subsurface
{
//private const int StartCharacterAmount = 3;
public readonly CrewManager crewManager;
public readonly CrewManager CrewManager;
//public readonly HireManager hireManager;
private GUIButton endShiftButton;
public readonly CargoManager CargoManager;
public Map map;
public Map Map;
private bool crewDead;
private float endTimer;
@@ -30,20 +30,20 @@ namespace Subsurface
{
get
{
return map.SelectedConnection.Quest;
return Map.SelectedConnection.Quest;
}
}
public int Money
{
get { return crewManager.Money; }
set { crewManager.Money = value; }
get { return CrewManager.Money; }
set { CrewManager.Money = value; }
}
public SinglePlayerMode(GameModePreset preset)
: base(preset)
{
crewManager = new CrewManager();
CrewManager = new CrewManager();
CargoManager = new CargoManager();
@@ -68,7 +68,7 @@ namespace Subsurface
CharacterInfo characterInfo =
new CharacterInfo(Character.HumanConfigFile, "", Gender.None, jobPrefab);
crewManager.characterInfos.Add(characterInfo);
CrewManager.characterInfos.Add(characterInfo);
}
}
@@ -80,19 +80,19 @@ namespace Subsurface
GenerateMap(mapSeed);
map.SetLocation(ToolBox.GetAttributeInt(element, "currentlocation", 0));
Map.SetLocation(ToolBox.GetAttributeInt(element, "currentlocation", 0));
foreach (XElement subElement in element.Elements())
{
if (subElement.Name.ToString().ToLower() != "crew") continue;
crewManager = new CrewManager(subElement);
CrewManager = new CrewManager(subElement);
}
}
public void GenerateMap(string seed)
{
map = new Map(seed, 500);
Map = new Map(seed, 500);
}
public override void Start(TimeSpan duration)
@@ -107,24 +107,24 @@ namespace Subsurface
endTimer = 5.0f;
crewManager.StartShift();
CrewManager.StartShift();
}
public bool TryHireCharacter(HireManager hireManager, CharacterInfo characterInfo)
{
if (crewManager.Money < characterInfo.Salary) return false;
if (CrewManager.Money < characterInfo.Salary) return false;
hireManager.availableCharacters.Remove(characterInfo);
crewManager.characterInfos.Add(characterInfo);
CrewManager.characterInfos.Add(characterInfo);
crewManager.Money -= characterInfo.Salary;
CrewManager.Money -= characterInfo.Salary;
return true;
}
public string GetMoney()
{
return ("Money: " + crewManager.Money);
return "Money: " + CrewManager.Money;
}
@@ -132,16 +132,16 @@ namespace Subsurface
{
base.Draw(spriteBatch);
crewManager.Draw(spriteBatch);
CrewManager.Draw(spriteBatch);
if (Level.Loaded.AtEndPosition)
{
endShiftButton.Text = "Enter " + map.SelectedLocation.Name;
endShiftButton.Text = "Enter " + Map.SelectedLocation.Name;
endShiftButton.Draw(spriteBatch);
}
else if (Level.Loaded.AtStartPosition)
{
endShiftButton.Text = "Enter " + map.CurrentLocation.Name;
endShiftButton.Text = "Enter " + Map.CurrentLocation.Name;
endShiftButton.Draw(spriteBatch);
}
@@ -157,13 +157,13 @@ namespace Subsurface
{
base.Update(deltaTime);
crewManager.Update(deltaTime);
CrewManager.Update(deltaTime);
endShiftButton.Update(deltaTime);
if (!crewDead)
{
if (crewManager.characters.Find(c => !c.IsDead) == null)
if (CrewManager.characters.Find(c => !c.IsDead) == null)
{
crewDead = true;
}
@@ -185,9 +185,9 @@ namespace Subsurface
StringBuilder sb = new StringBuilder();
List<Character> casualties = crewManager.characters.FindAll(c => c.IsDead);
List<Character> casualties = CrewManager.characters.FindAll(c => c.IsDead);
if (casualties.Count == crewManager.characters.Count)
if (casualties.Count == CrewManager.characters.Count)
{
sb.Append("Your entire crew has died!");
@@ -214,13 +214,13 @@ namespace Subsurface
if (Level.Loaded.AtEndPosition)
{
map.MoveToNextLocation();
Map.MoveToNextLocation();
}
SaveUtil.SaveGame(Game1.GameSession.SaveFile);
}
crewManager.EndShift();
CrewManager.EndShift();
for (int i = Character.CharacterList.Count - 1; i >= 0; i--)
{
Character.CharacterList[i].Remove();
@@ -241,10 +241,10 @@ namespace Subsurface
//element.Add(new XAttribute("day", day));
XElement modeElement = new XElement("gamemode");
modeElement.Add(new XAttribute("currentlocation", map.CurrentLocationIndex));
modeElement.Add(new XAttribute("mapseed", map.Seed));
modeElement.Add(new XAttribute("currentlocation", Map.CurrentLocationIndex));
modeElement.Add(new XAttribute("mapseed", Map.Seed));
crewManager.Save(modeElement);
CrewManager.Save(modeElement);
element.Add(modeElement);

View File

@@ -0,0 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Subsurface
{
//class TutorialMode : GameMode
//{
//}
}

View File

@@ -51,7 +51,7 @@ namespace Subsurface
get
{
SinglePlayerMode mode = (gameMode as SinglePlayerMode);
return (mode == null) ? null : mode.map;
return (mode == null) ? null : mode.Map;
}
}
@@ -151,7 +151,7 @@ namespace Subsurface
{
SinglePlayerMode singlePlayerMode = gameMode as SinglePlayerMode;
if (singlePlayerMode == null) return;
singlePlayerMode.crewManager.KillCharacter(character);
singlePlayerMode.CrewManager.KillCharacter(character);
}
public bool LoadPrevious(GUIButton button, object obj)