public override void Initialise(GameEngine engine)
        {
            base.Initialise(engine);

            _players = new[] {
                new ClientPlayer("Player 1", Color.Red),
                new ClientPlayer("Player 2", Color.Blue)
            };
            _gameEnvironment = new ClientGameEnvironment();
            _gameSession     = new ClientGameSession(_gameEnvironment, _players);

            // TODO: Testing only
            _gameEnvironment.Map = new ClientMap(9, 9);
            CorePlayerUnit unit = PlayerUnitFactory.CreateNew(_players[0], PlayerUnitType.TestSoldier);

            _gameEnvironment.Map.Entities.Add(new ClientPlayerUnit(unit));

            CorePlayerUnit unit6 = PlayerUnitFactory.CreateNew(_players[0], PlayerUnitType.TestSoldier);

            unit6.SetPosition(3, 3);
            _gameEnvironment.Map.Entities.Add(new ClientPlayerUnit(unit6));

            CorePlayerUnit unit2 = PlayerUnitFactory.CreateNew(_players[1], PlayerUnitType.TestSniper);

            unit2.SetPosition(2, 2);
            _gameEnvironment.Map.Entities.Add(new ClientPlayerUnit(unit2));

            CorePlayerUnit unit3 = PlayerUnitFactory.CreateNew(_players[0], PlayerUnitType.TestAssault);

            unit3.SetPosition(1, 5);
            _gameEnvironment.Map.Entities.Add(new ClientPlayerUnit(unit3));

            CorePlayerUnit unit4 = PlayerUnitFactory.CreateNew(_players[1], PlayerUnitType.TestMech);

            unit4.SetPosition(0, 6);
            _gameEnvironment.Map.Entities.Add(new ClientPlayerUnit(unit4));
        }
 /// <summary>
 /// Creates a player unit from a copy of another unit.
 /// Use this in the client code to initialise unit fields properly.
 /// </summary>
 /// <param name="copy"></param>
 public CorePlayerUnit(CorePlayerUnit copy) : base(copy)
 {
     UnitType    = copy.UnitType;
     Player      = copy.Player;
     _attributes = new UnitAttributes(copy._attributes);
 }