Пример #1
0
        public void Should_Be_required(ulong gateRequirements, ulong requirementsToCheck)
        {
            var gate = new Gate.RequirementGate(gateRequirements);

            Assert.That(gate.Requires(requirementsToCheck), Is.True,
                        $"Gate of {(Requirement)gateRequirements} should require {(Requirement)requirementsToCheck}");
        }
        bool GateCanBeOpenedWithoutSuppliedRequirements(Gate.RequirementGate gate, Requirement requirementToAvoid)
        {
            if (gate.Requirements == Requirement.None)
            {
                return(true);
            }

            var gateRequirements = (ulong)gate.Requirements & (ulong)unlockableRequirements;
            var canBeOpened      = (gateRequirements & (~requirementToAvoid | (ulong)availableRequirements)) > 0;

            return(canBeOpened);
        }
        void CalculatePathChainForRequirementGate(Gate.RequirementGate requirementGate, Requirement requirementChain)
        {
            if (requirementGate.Requirements == Requirement.None)
            {
                return;
            }

            var singleRequirement = SelectSingleUnlockableRequirement(requirementGate.Requirements, requirementChain);
            var item = GetRandomItemThatUnlocksRequirement(singleRequirement);

            if (placedItems.ContainsKey(item))
            {
                return;
            }

            CalculatePathChain(item, singleRequirement | requirementChain);
        }