/// <summary> /// Если размер мира 1*1 в зависимости от сида генерим тот или иной тестовый мир, иначе генерим по чсестному /// </summary> public Surface() { Ambient = new FColor(1f, 1f, 1f, 0.9f).Multiply(1.0f); switch (Constants.WORLD_MAP_SIZE) { case 1: var r1 = new TestSurfaceGenerator1x1(World.Rnd); m_worldMap = r1.Generate(); City = new SuperCity(this, new Point(0, 0)); break; case 2: var r2 = new TestSurfaceGenerator2x2(World.Rnd); m_worldMap = r2.Generate(); City = new SuperCity(this, new Point(0, 0)); break; default: var worldMapGenerator = new WorldMapGenerator(Constants.WORLD_MAP_SIZE, World.Rnd); m_worldMap = worldMapGenerator.Generate(); if (Constants.WORLD_MAP_SIZE > 31) { var cityBlockIds = worldMapGenerator.FindCityPlace((int)Math.Sqrt(Constants.WORLD_MAP_SIZE) / 2).ToArray(); foreach (var id in cityBlockIds) { m_worldMap[id.X, id.Y] = EMapBlockTypes.CITY; } City = new SuperCity(this, cityBlockIds.Select(_point => new Point(_point.X - Constants.WORLD_MAP_SIZE / 2, _point.Y - Constants.WORLD_MAP_SIZE / 2)).ToArray()); } break; } }