public bool IsTreeCompletedByCiv(IPolicyTreeDefinition tree, ICivilization civ) { var unlockedPolicies = GetPoliciesUnlockedFor(civ); return(GetTreesUnlockedFor(civ).Contains(tree) && tree.Policies.All(policy => unlockedPolicies.Contains(policy))); }
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) ); } }
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) ); } }