Beispiel #1
0
        protected bool actuallyGenerate()
        {
            //ImpactMonitor.Log("Trying to generate an impact contract");
            IEnumerable <CelestialBody> bodies = Contract.GetBodies_Reached(false, false);

            bodies = bodies.Where(body => !body.atmosphere);
            //generate a weighted list of possible contracts (different bodsies and biomes where appropriate)
            List <PossibleContract> contracts = pickContracts(bodies);

            if (contracts.Count == 0)
            {
                return(false);
            }
            double totalProb = contracts.Last().probability;
            double picked    = random.NextDouble() * totalProb;
            IComparer <PossibleContract> comp = new PossibleContract.ProbComparer();
            int contractIndex = contracts.BinarySearch(new PossibleContract(picked, null, 0), comp);

            if (contractIndex < 0)
            {
                contractIndex = ~contractIndex;
            }
            //ImpactMonitor.Log("pickedindex=" + contractIndex);
            pickedContract = contracts[contractIndex];
            // ImpactMonitor.Log("picked one "+pickedContract);

            SetExpiry();
            SetScience(1.5f, pickedContract.body);
            SetDeadlineYears(0.5f, pickedContract.body);
            SetReputation(3, 4, pickedContract.body);
            SetFunds(20000, 80000, 10000, pickedContract.body);

            generateParameters();
            //ImpactMonitor.Log("Generated parameters");

            return(true);
        }
Beispiel #2
0
 protected override void OnLoad(ConfigNode node)
 {
     base.OnLoad(node);
     pickedContract = new PossibleContract(node.GetNode(valuesNode));
 }