public bool CanUnlock(UnlockRule rule) { if (rule == null) { return(true); } if (rule.RequiredResources != null) { foreach (MinimumResourceRequirement requirement in rule.RequiredResources) { if (!HasResource(requirement.Resource.Entity, requirement.Amount)) { return(false); } } } if (rule.RequiredUpgrades != null) { foreach (LazyEntity <UpgradeEntity> entity in rule.RequiredUpgrades) { if (!ownedUpgrades.Contains(entity.Entity)) { return(false); } } } if (rule.RequiredBuildings != null) { foreach (LazyEntity <BuildingEntity> entity in rule.RequiredBuildings) { if (!world.Values.Any(tile => tile.building?.Entity == entity.Entity)) { return(false); } } } return(true); }
public Chapter(string key, UnlockRule unlockRule = UnlockRule.EnterZone) : this() { this.key = key; this.unlockRule = unlockRule; }