public static RuleManager GenerateRules(int seed) { var ruleManager = RuleManager.Instance; var bombRules = (BombRules)CurrentRulesProperty.GetValue(ruleManager, null); //If the official manual metadata has changed mid-game, grab the most current one. if (OriginalBombRules == null || bombRules.ManualMetaData.LanguageCode != OriginalBombRules.ManualMetaData.LanguageCode || bombRules.ManualMetaData.LockCode != OriginalBombRules.ManualMetaData.LockCode || bombRules.ManualMetaData.ManualVersion != OriginalBombRules.ManualMetaData.ManualVersion || bombRules.ManualMetaData.IsValid != OriginalBombRules.ManualMetaData.IsValid) { OriginalBombRules = bombRules; } else if (bombRules.ManualMetaData.ManualVersion.StartsWith("Rule Seed Modifier ") && bombRules.ManualMetaData.Seed == seed) { return(ruleManager); } if (seed == Seed) { DebugLog("Rule Manager already initialized with seed {0}. Skipping initialization.", seed); return(ruleManager); } Seed = seed; CurrentRulesProperty.SetValue(ruleManager, Initialize(seed == int.MinValue ? 0 : seed), null); return(ruleManager); }
public static void UnloadRuleManager() { if (OriginalBombRules == null) { return; } var ruleManager = RuleManager.Instance; CurrentRulesProperty.SetValue(ruleManager, OriginalBombRules, null); OriginalBombRules = null; }
public static RuleManager GenerateRules(int seed) { var ruleManager = RuleManager.Instance; if (seed == Seed && !_forceRegnerate) { DebugLog("Rule Manager already initialized with seed {0}. Skipping initialization.", seed); return(ruleManager); } _forceRegnerate = false; Seed = seed; CurrentRulesProperty.SetValue(ruleManager, Initialize(seed == int.MinValue ? 0 : seed), null); SeedProperty.SetValue(ruleManager, RuleManager.DEFAULT_SEED, null); return(ruleManager); }