public Game() { settings = GetSettings(); // Connect players if (settings.Players.Count(p => p == PlayerType.AI) > 0) { SocketForm socketForm = new SocketForm(settings); socketForm.Show(); socketManager = socketForm.CreateSocketManager(); socketForm.Close(); if (socketManager == null) return; } // Setup graphics graphics = new FormGraphics(); graphics.Show(); graphics.Closed += (sender, args) => Dispose(); // Get keyboard control KeyboardHandler keyboardHandler = new KeyboardHandler(graphics); gameManager = new GameManager(settings, keyboardHandler, socketManager, graphics); // Start game gameManager.Start(); }
public SocketForm(GameSettings settings) { InitializeComponent(); this.settings = settings; maxClients = settings.Players.Count(p => p == PlayerType.AI); Closing += (sender, args) => backgroundWorker1.CancelAsync(); backgroundWorker1.WorkerReportsProgress = true; backgroundWorker1.WorkerSupportsCancellation = true; }
private static GameSettings GetSettings() { GameSettings gameSettings = new GameSettings(); string[] lines = new string[] { }; if (File.Exists("settings.txt")) lines = File.ReadAllLines("settings.txt"); foreach (string line in lines.Where(l => !l.StartsWith("#"))) { string[] words = line.Split(' '); string key = words.FirstOrDefault().ToLower(); switch (key) { case "port": int port; if (int.TryParse(words[1], out port)) gameSettings.Port = port; break; case "map": string map = line.Substring(key.Length+1).Replace('"', ' ').Trim(); if (File.Exists(map)) gameSettings.Map = map; break; case "human": gameSettings.Players.Add(PlayerType.Human); break; case "ai": gameSettings.Players.Add(PlayerType.AI); break; case "test": gameSettings.Players.Add(PlayerType.Test); break; } } if(gameSettings.Port == 0 && !string.IsNullOrEmpty(gameSettings.Map)) Application.Exit(); return gameSettings; }
public GameManager( GameSettings gameSettings, IInputHandler keyboardHandler, SocketManager socketManager, IGraphicsHandler graphics) { this.gameSettings = gameSettings; this.graphics = graphics; const int ticksPerSecond = 30; gameLoop = new GameLoop(5, ticksPerSecond); gameLoop.Update += Update; gameLoop.Render += Render; Map map = new Map(gameSettings.Map); world = new World(map); int countShip = 0; List<Bumpership> bumperships = gameSettings.Players.Take(world.Map.StartPositions.Count) .Select(p => CreateBumpership(p, keyboardHandler, socketManager, ref countShip)) .ToList(); world.AddShips(bumperships); }