public FlashbackPickupsManager(MapGameObject pMap, BaseLevel pLevel) : base(false) { Instance = this; _flashPickupsMap = new Dictionary <string, FlashbackPickup>(); _level = pLevel; _map = pMap; var flashesData = _map.ObjectGroups.SelectMany(og => og.Objects) .Where(tileObj => tileObj?.Type.ToLower() == "flashbackpickup"); //Get from settings to skip some flashbacks _flashesPickupsToSkip = new List <string>(); if (Settings.Flashback_Pickups_Collected != "0") { var flashesStr = Settings.Flashback_Pickups_Collected.Trim().Split(' '); for (int i = 0; i < flashesStr.Length; i++) { string valStr = flashesStr[i].Trim(); if (int.TryParse(valStr, out var val)) { _flashesPickupsToSkip.Add($"Flashback {val}".ToLower()); } } } foreach (var flashData in flashesData) { var flashPickup = AddFlashbackPickupToLevel(flashData); _flashPickupsMap.Add(flashData.Name.ToLower(), flashPickup); } //Final trigger flashback var finalFlashData = _map.ObjectGroups .SelectMany(og => og.Objects) .FirstOrDefault(tileObj => tileObj?.Type.ToLower() == "finalflashbackpickup"); if (finalFlashData != null) { _finalPickup = AddFlashbackPickupToLevel(finalFlashData); } }
public BaseLevel(CaveLevelMapGameObject pCaveLevel, MCamera pCam) { _caveLevelMap = pCaveLevel; _cam = (FollowCamera)pCam; AddChild(_caveLevelMap); var doorsManager = new DoorsManager(_caveLevelMap, this); AddChild(doorsManager); var memoriesManager = new HistoryPickupsManager(_caveLevelMap, this); AddChild(memoriesManager); var oilPickUpManager = new OilPickUpsManager(_caveLevelMap, this); AddChild(oilPickUpManager); var flashbacksTriggerManager = new FlashBackTriggersManager(_caveLevelMap, this); AddChild(flashbacksTriggerManager); var flashbackPickupsManager = new FlashbackPickupsManager(_caveLevelMap, this); AddChild(flashbackPickupsManager); var hiddenRoomManager = new HiddenRoomCoverManager(this); AddChild(hiddenRoomManager); var flashbacksManager = new FlashbackManager(this, flashbacksTriggerManager.FlashTriggersMap.Count); AddChild(flashbacksManager); var darkHallManager = new DarkHallManager(_caveLevelMap, this); AddChild(darkHallManager); var particlesManager = new ParticleManager(); _player = new Player(); AddChild(_player); var spawnPoint = GetPlayerSpawnPoint(); _player.SetXY(spawnPoint.x, spawnPoint.y); AddChild(_cam); _cam.Target = _player; _cam.Map = _caveLevelMap; _cam.SetXY(spawnPoint.x, spawnPoint.y); _playerCollision = new PlayerCollision(_player, _caveLevelMap, _cam); AddChild(_playerCollision); CoroutineManager.StartCoroutine(Start(), this); }