public override UpdateResult Update() { if (_dataProvider.InAdventureScreen) { var dungeonInfo = _dataProvider.GetDungeonInfo(); if (dungeonInfo != null) { for (var i = 0; i < dungeonInfo.Length; i++) { if (dungeonInfo[i]?.RunActive ?? false) { if ((_prevCards[i] == null || !dungeonInfo[i].DbfIds.SequenceEqual(_prevCards[i])) && (_prevLootChoice[i] != dungeonInfo[i].PlayerChosenLoot || _prevTreasureChoice[i] != dungeonInfo[i].PlayerChosenTreasure)) { _prevCards[i] = dungeonInfo[i].DbfIds.ToList(); _prevLootChoice[i] = dungeonInfo[i].PlayerChosenLoot; _prevTreasureChoice[i] = dungeonInfo[i].PlayerChosenTreasure; DungeonRunDeckUpdated?.Invoke(new DungeonRunDeckUpdatedEventArgs(BuildDeck(dungeonInfo[i]))); } } else { _prevCards[i] = null; } } if (_prevLootChoice.All(x => x > 0)) { return(UpdateResult.Break); } } else { _prevCards = new List <int>[] { null, null } }; } else if (_dataProvider.InAiMatch && !string.IsNullOrEmpty(_dataProvider.OpponentHeroId)) { if (Cards.All.TryGetValue(_dataProvider.OpponentHeroId, out var card)) { if (DungeonRun.IsDungeonBoss(card)) { var newRun = _initialOpponents.Contains(_dataProvider.OpponentHeroId); var deck = newRun ? DungeonRun.GetDefaultDeck(_dataProvider.LocalPlayerClass, card.Set) : null; DungeonRunMatchStarted?.Invoke(new DungeonRunMatchStartedEventArgs(newRun, deck)); return(UpdateResult.Break); } } } return(UpdateResult.Continue); }
internal virtual void OnDungeonRunDeckUpdated(DungeonRunDeckUpdatedEventArgs args) => DungeonRunDeckUpdated?.Invoke(args);