コード例 #1
0
    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);
    }
コード例 #2
0
 public Chapter(string key, UnlockRule unlockRule = UnlockRule.EnterZone) : this()
 {
     this.key        = key;
     this.unlockRule = unlockRule;
 }