/// <summary> /// Создание игрового мира с историей и граф провинций. /// </summary> /// <returns> /// Возвращает объект игрового мира. /// </returns> public Task <GlobeGenerationResult> GenerateGlobeAsync() { return(Task.Run(() => { var globe = new Globe { Terrain = new TerrainCell[WORLD_SIZE][], agentNameGenerator = new RandomName(_dice), cityNameGenerator = new CityNameGenerator(_dice) }; var realmTask = CreateRealmsAsync(globe, _realmNames); var terrainTask = CreateTerrainAsync(globe); Task.WaitAll(realmTask, terrainTask); CreateStartLocalities(globe); CreateStartAgents(globe); var cardQueue = CreateAgentCardQueue(); // обработка итераций ProcessIterations(globe, cardQueue); globe.StartProvince = GetStartProvinceCoords(globe); globe.HomeProvince = GetHomeProvinceCoords(globe, globe.StartProvince); // Сейчас история пустая. Пока не разработаны требования, как лучше сделать. var globeHistory = new GlobeGenerationHistory(); var result = new GlobeGenerationResult(globe, globeHistory); return result; })); }
public GlobeGenerationResult(Globe globe, GlobeGenerationHistory history) { Globe = globe ?? throw new ArgumentNullException(nameof(globe)); History = history ?? throw new ArgumentNullException(nameof(history)); }