Exemplo n.º 1
0
        public bool IsTreeCompletedByCiv(IPolicyTreeDefinition tree, ICivilization civ)
        {
            var unlockedPolicies = GetPoliciesUnlockedFor(civ);

            return(GetTreesUnlockedFor(civ).Contains(tree) &&
                   tree.Policies.All(policy => unlockedPolicies.Contains(policy)));
        }
Exemplo n.º 2
0
        public void SetTreeAsUnlockedForCiv(IPolicyTreeDefinition tree, ICivilization civ)
        {
            if (!GetTreesAvailableFor(civ).Contains(tree))
            {
                throw new InvalidOperationException("Tree must be available to the given civ");
            }
            else if (GetTreesUnlockedFor(civ).Contains(tree))
            {
                throw new InvalidOperationException("Tree already unlocked for the given civ");
            }
            else
            {
                TreesUnlockedByCiv[civ].Add(tree);

                CivSignals.CivUnlockedPolicyTree.OnNext(
                    new System.Tuple <ICivilization, IPolicyTreeDefinition>(civ, tree)
                    );
            }
        }
Exemplo n.º 3
0
        public void SetTreeAsLockedForCiv(IPolicyTreeDefinition tree, ICivilization civ)
        {
            if (!GetTreesUnlockedFor(civ).Contains(tree))
            {
                throw new InvalidOperationException("Tree must be unlocked for the given civ");
            }
            else
            {
                foreach (var policy in tree.Policies)
                {
                    SetPolicyAsLockedForCiv(policy, civ);
                }

                TreesUnlockedByCiv[civ].Remove(tree);

                CivSignals.CivLockedPolicyTree.OnNext(
                    new System.Tuple <ICivilization, IPolicyTreeDefinition>(civ, tree)
                    );
            }
        }