private void UpdateSession(bool notifySetupChange = true) { Session = new TriadGameSession(); // create new instances of modifiers, required for things like roulette foreach (var rule in Rules) { TriadGameModifier modCopy = (TriadGameModifier)Activator.CreateInstance(rule.GetType()); modCopy.OnMatchInit(); Session.modifiers.Add(modCopy); } if (!isTournament) { foreach (var rule in Npc.Rules) { TriadGameModifier modCopy = (TriadGameModifier)Activator.CreateInstance(rule.GetType()); modCopy.OnMatchInit(); Session.modifiers.Add(modCopy); } } Session.UpdateSpecialRules(); GameReset(); if (notifySetupChange) { OnSetupChanged?.Invoke(this); } }
public void SetPlayerDeck(TriadDeck deck, bool notifySetupChange = true) { Logger.WriteLine("Game.SetPlayerDeck: {0}", deck); PlayerDeck = deck; if (Npc != null && deck != null) { PlayerSettingsDB.Get().UpdatePlayerDeckForNpc(Npc, deck); } OnDeckChanged?.Invoke(deck); if (notifySetupChange) { OnSetupChanged?.Invoke(this); } }
public void GameRouletteApplied() { Logger.WriteLine("Game.Roulette applied"); Session.UpdateSpecialRules(); OnSetupChanged?.Invoke(this); }