/// <summary> /// The main entry point for the application. /// </summary> static void Main(string[] args) { using (GalaxyGame game = new GalaxyGame()) { game.Run(); } }
private static IGameComponent ParseLine(string lvlLine, GalaxyGame g, ref Vector2 lastStarPos) { if (lvlLine.IndexOf(';') == -1) { return(null); } IGameComponent gc = null; string[] lineElements = lvlLine.Split(';'); switch (lvlLine[0]) { case 'S': if (lineElements.Count() != 5) { return(gc); } lastStarPos = new Vector2(float.Parse(lineElements[3]), float.Parse(lineElements[4])); gc = new Star(g, lineElements[1], float.Parse(lineElements[2]), ref lastStarPos); break; case 'P': if (lineElements.Count() != 7) { return(gc); } HabitationState hs = (lineElements[6] == "C") ? HabitationState.Colonizable : HabitationState.Uninhabitable; gc = new Planet(g, lineElements[1], float.Parse(lineElements[2]), float.Parse(lineElements[3]), float.Parse(lineElements[4]), lastStarPos, long.Parse(lineElements[5]) * 1000000, hs); break; case 'M': if (lineElements.Count() != 5) { return(gc); } gc = new MeteorField(g, lineElements[1], new Vector2(float.Parse(lineElements[2]), float.Parse(lineElements[3])), float.Parse(lineElements[4])); break; default: // Comment line or something. break; } return(gc); }
public static bool LoadLevel(GalaxyGame g, bool clear, string levelName) { if (clear) { g.Components.Clear(); } if (!File.Exists(levelName)) { System.Diagnostics.Trace.Write("Level does not exist: " + levelName); return(false); } string[] level = File.ReadAllLines(levelName); Vector2 lastStarPos = new Vector2(GalaxyGame.ScreenWidth / 2, GalaxyGame.ScreenWidth / 2); foreach (var lvlLine in level) { IGameComponent gc = ParseLine(lvlLine, g, ref lastStarPos); if (gc != null) { g.Components.Add(gc); } } return(true); }