private void InstantiateMapObjects(MapInfo map) { // устанавливаем параметры карты _mapSettingsManager.ServerUpdate(map); // строим периметр for (var i = -map.Width / 2 - 1; i <= map.Width / 2; i++) { _mapObjectsManager.Add(i + 0.5f, map.Height / 2.0f + 0.5f, MapObjectKind.UnbreakableWall); _mapObjectsManager.Add(i + 0.5f, -map.Height / 2.0f - 0.5f, MapObjectKind.UnbreakableWall); } for (var j = -map.Height / 2; j <= map.Height / 2 - 1; j++) { _mapObjectsManager.Add(map.Width / 2.0f + 0.5f, j + 0.5f, MapObjectKind.UnbreakableWall); _mapObjectsManager.Add(-map.Width / 2.0f - 0.5f, j + 0.5f, MapObjectKind.UnbreakableWall); } // спавним остальное for (var i = 0; i < map.Height; i++) { for (var j = 0; j < map.Width; j++) { var cellKind = map.Map[i][j]; switch (cellKind) { case MapObjectKind.None: break; case MapObjectKind.UnbreakableWall: case MapObjectKind.RegularWall: case MapObjectKind.Tree: _mapObjectsManager.Add(-map.Width / 2 + j + 0.5f, -map.Height / 2 + i + 0.5f, cellKind); break; case MapObjectKind.RandomPlayerSpawn: _tankSpawner.AddSpawnPoint(-map.Width / 2 + j + 1.0f, -map.Height / 2 + i); break; case MapObjectKind.RandomBonusSpawner: _bonusSpawner.ServerAddSpawnPoint(-map.Width / 2 + j + 1.0f, -map.Height / 2 + i); break; default: throw new ArgumentOutOfRangeException(); } } } }
public static void Add(this MapObjectsManager mapObjects, float x, float y, MapObjectKind objectKind) { mapObjects.Add(new Vector2(x, y), objectKind); }