예제 #1
0
 public void AddWorker(Settler.Settler worker)
 {
     if (IsFull)
     {
         return;         //Can't add worker if full
     }
     Workers.Add(worker);
     worker.Workplace = this;
     ;
 }
예제 #2
0
        public override int CalculatePrestige(Settler.Settler settler)
        {
            //TODO
            var sum = 0;

            if (settler.Traits[Trait.Charm] >= TraitLevel.High)
            {
                sum += 1;
            }
            else if (settler.Traits[Trait.Charm] <= TraitLevel.Low)
            {
                sum -= 1;
            }

            return(sum);
        }
예제 #3
0
        public override void HostWork(Settler.Settler worker, Settlement.Settlement settlement)
        {
            var harvest = new Bundle();

            foreach (var(resource, rate) in BaseRates)
            {
                var amount = GetHarvest(settlement, resource, rate, worker);

                if (amount > 0)
                {
                    harvest.Contents.Add(resource, amount);
                }
            }

            //TODO Transactions
            settlement.Stockpile.Add(harvest);
            worker.GainXp(settlement, Skill, 1);
        }
예제 #4
0
        public double WorkerEfficiency(Settler.Settler worker)
        {
            var level = worker.SkillLevel(Skill);

            if (level == SkillLevel.Unskilled)
            {
                return(0.7);
            }

            if (level == SkillLevel.Novice)
            {
                return(0.85);
            }

            if (level == SkillLevel.Apprentice)
            {
                return(1);
            }

            if (level == SkillLevel.Journeyman)
            {
                return(1.15);
            }

            if (level == SkillLevel.Expert)
            {
                return(1.3);
            }

            if (level == SkillLevel.Master)
            {
                return(1.5);
            }

            return(1);
        }
예제 #5
0
        private int GetHarvest(Settlement.Settlement settlement, Resource.Resource resource, double rate, Settler.Settler worker)
        {
            var efficiency        = BuildingEfficiency(settlement, resource, worker) * WorkerEfficiency(worker);
            var guaranteedHarvest = (int)(rate * efficiency);
            var uncertainHarvest  = guaranteedHarvest - rate * efficiency;

            return(guaranteedHarvest + (new Random().NextDouble() < uncertainHarvest ? 1 : 0));
        }
예제 #6
0
 public virtual double BuildingEfficiency(Settlement.Settlement settlement, Resource.Resource resource,
                                          Settler.Settler worker)
 {
     return(1.0);
 }
예제 #7
0
 public override double BuildingEfficiency(Settlement.Settlement settlement, Resource.Resource resource, Settler.Settler worker)
 {
     return(1);
 }
예제 #8
0
 public abstract void HostWork(Settler.Settler worker, Settlement.Settlement settlement);