public static (IGame, State) Generate(GameConfiguration conf) { var playerRating = ThreadLocalRandom.Current().Next(conf.MinRating, conf.MaxRating); var spaceGridTileCache = new SpaceGridTileCache( Mathf.CeilToInt(SystemInfo.processorCount / 2F), new SpaceTileIO(Application.persistentDataPath), SpaceTileFactory.Construct(playerRating, conf) ); spaceGridTileCache.Init(); var gridNavigator = new SpaceGridNavigator(conf.TileSize); var visibilityManager = new SpaceGridTilesVisibilityManager( conf.TileSize, gridNavigator, spaceGridTileCache ); var playerPosition = new Position(0, 0); visibilityManager.Init(gridNavigator.FindTile(playerPosition)); var game = new Game( playerRating, new SpaceGrid(gridNavigator, spaceGridTileCache), visibilityManager, conf ); var initialState = game.Init(playerPosition); return(game, initialState); }
public Game( int playerRating, SpaceGrid spaceGrid, SpaceGridTilesVisibilityManager tilesManager, GameConfiguration conf ) { _conf = conf; _spaceGrid = spaceGrid; _playerRating = playerRating; _tilesManager = tilesManager; _planets = new ObservablePlanets(_spaceGrid, _conf.AlternativeViewCapacity, _playerRating); }