예제 #1
0
파일: Food.cs 프로젝트: dylanebert/Urbanize
    public override IEnumerator Deposit(Human human, object target)
    {
        Granary granary = (Granary)target;

        yield return(human.MoveTo(granary.front.position));

        Destroy(this.gameObject);
    }
예제 #2
0
 protected void BuildingGranary()
 {
     if (Channeling(ItemList.Granary, PlayerActions.BuildGranary) == PlayerActions.BuildGranary)
     {
         Granary ai = (Granary)(this.GetPlayerData().GetInventory()[Global.ItemNames[ItemList.Granary]]);
         ai.BuildStructure(ItemList.Granary, this.GetPlayerData());
     }
 }
예제 #3
0
        public void FoodConsumptionParameterTest()
        {
            Granary granary = new Granary();

            Should.Throw <ArgumentNullException>(() => { granary.FoodConsumption(null, null); }).Message.ShouldContain("calendar");

            Should.Throw <ArgumentNullException>(() => { granary.FoodConsumption(new Calendar(), null); }).Message.ShouldContain("province");
        }
예제 #4
0
파일: Eat.cs 프로젝트: dylanebert/Urbanize
 public bool CanDoAction(Human human, ref Granary granary)
 {
     granary = human.FindGranary(true);
     if (granary != null)
     {
         return(true);
     }
     return(false);
 }
예제 #5
0
파일: Eat.cs 프로젝트: dylanebert/Urbanize
    public override bool CanDoAction(Human human)
    {
        Granary granary = human.FindGranary(true);

        if (granary != null)
        {
            return(true);
        }
        return(false);
    }
예제 #6
0
 public bool CanDoAction(Human human, ref Granary granary, ref Food food)
 {
     granary = human.FindGranary(false);
     food    = human.FindFood();
     if (granary != null && food != null)
     {
         return(true);
     }
     return(false);
 }
예제 #7
0
        public VillageItem()
        {
            initWood();
            initClay();
            initIron();
            initCrop();
            initVillageBuildings();

            warehouse = buildings.Find(item => item is Warehouse) as Warehouse;
            granary   = buildings.Find(item => item is Granary) as Granary;
        }
예제 #8
0
        public void FoodConsumptionTest()
        {
            Granary    granary         = new Granary();
            Calendar   calendar        = new Calendar();
            Province   province        = new Province();
            Population startPopulation = new Population().Add(1000);
            Food       foodStock       = new Food();

            foodStock = foodStock.Add(500);

            Food foodConsumption = granary.FoodConsumption(calendar, province);

            foodConsumption.Rice.ShouldBe(0);

            province = province.Add(startPopulation);
            province = province.Add(foodStock);

            calendar.Month.ShouldBe(1);
            foodConsumption = granary.FoodConsumption(calendar, province);
            foodConsumption.Rice.ShouldNotBe(0);
            foodConsumption.Rice.ShouldBeLessThanOrEqualTo(province.Food.Rice);

            calendar.Add(4);
            foodConsumption = granary.FoodConsumption(calendar, province);
            foodConsumption.Rice.ShouldBeGreaterThan(0);
            foodConsumption.Rice.ShouldBeLessThanOrEqualTo(province.Food.Rice);

            calendar = new Calendar();

            calendar.Month.ShouldBe(1);

            foodConsumption = new Food();

            foodConsumption.Rice.ShouldBe(0);

            foodStock = foodStock.Add(50000);
            province  = province.Add(foodStock);

            for (int month = 0; month < 12; month++)
            {
                foodConsumption = foodConsumption.Add(granary.FoodConsumption(calendar, province));
                calendar.Add(1);
            }

            foodConsumption.Rice.ShouldBeGreaterThan(12 * province.Population.Adults);
            foodConsumption.Rice.ShouldBeLessThanOrEqualTo(province.Food.Rice);
        }
예제 #9
0
    public Granary FindGranary(bool requireFood)
    {
        Granary granary = null;
        float   dist    = float.MaxValue;
        Coords  coords  = Util.Vector3ToCoords(transform.position);

        foreach (GranaryData sd in gameController.data.granaryData)
        {
            if (gameController.granaryDict.ContainsKey(sd) && (!requireFood || (sd.food > 0 && sd.pendingFood > 0)))
            {
                Granary s = gameController.granaryDict[sd];
                float   d = (new Vector2(coords.x, coords.y) - new Vector2(sd.buildingData.loc.coords.x, sd.buildingData.loc.coords.y)).sqrMagnitude;
                if (d < dist && CanReach(s.front.transform.position))
                {
                    dist    = d;
                    granary = s;
                }
            }
        }
        return(granary);
    }
예제 #10
0
    void Start()
    {
        //Initialise
        health = healthMax;

        //Add appropriate building script
        switch (type)
        {
        case Type.Barracks:
            barracks = gameObject.AddComponent <Barracks>();
            break;

        case Type.Granary:
            granary = gameObject.AddComponent <Granary>();
            break;

        case Type.Workshop:
            workshop = gameObject.AddComponent <Workshop>();
            break;
        }
    }
예제 #11
0
        internal static void CityProduction(City city)
        {
            if (city == null || city.Size == 0 || city.Tile == null)
            {
                return;
            }

            Player      player     = Game.GetPlayer(city.Owner);
            IProduction production = null;

            // Create 2 defensive units per city
            if (player.HasAdvance <LaborUnion>())
            {
                if (city.Tile.Units.Count(x => x is MechInf) < 2)
                {
                    production = new MechInf();
                }
            }
            else if (player.HasAdvance <Conscription>())
            {
                if (city.Tile.Units.Count(x => x is Riflemen) < 2)
                {
                    production = new Riflemen();
                }
            }
            else if (player.HasAdvance <Gunpowder>())
            {
                if (city.Tile.Units.Count(x => x is Musketeers) < 2)
                {
                    production = new Musketeers();
                }
            }
            else if (player.HasAdvance <BronzeWorking>())
            {
                if (city.Tile.Units.Count(x => x is Phalanx) < 2)
                {
                    production = new Phalanx();
                }
            }
            else
            {
                if (city.Tile.Units.Count(x => x is Militia) < 2)
                {
                    production = new Militia();
                }
            }

            // Create city improvements
            if (production == null)
            {
                if (!city.HasBuilding <Barracks>())
                {
                    production = new Barracks();
                }
                else if (player.HasAdvance <Pottery>() && !city.HasBuilding <Granary>())
                {
                    production = new Granary();
                }
                else if (player.HasAdvance <CeremonialBurial>() && !city.HasBuilding <Temple>())
                {
                    production = new Temple();
                }
                else if (player.HasAdvance <Masonry>() && !city.HasBuilding <CityWalls>())
                {
                    production = new CityWalls();
                }
            }

            // Create Settlers
            if (production == null)
            {
                if (city.Size > 3 && !city.Units.Any(x => x is Settlers) && player.Cities.Length < 10)
                {
                    production = new Settlers();
                }
            }

            // Create some other unit
            if (production == null)
            {
                if (city.Units.Length < 4)
                {
                    if (player.Government is Republic || player.Government is Democratic)
                    {
                        if (player.HasAdvance <Writing>())
                        {
                            production = new Diplomat();
                        }
                    }
                    else
                    {
                        if (player.HasAdvance <Automobile>())
                        {
                            production = new Armor();
                        }
                        else if (player.HasAdvance <Metallurgy>())
                        {
                            production = new Cannon();
                        }
                        else if (player.HasAdvance <Chivalry>())
                        {
                            production = new Knights();
                        }
                        else if (player.HasAdvance <TheWheel>())
                        {
                            production = new Chariot();
                        }
                        else if (player.HasAdvance <HorsebackRiding>())
                        {
                            production = new Cavalry();
                        }
                        else if (player.HasAdvance <IronWorking>())
                        {
                            production = new Legion();
                        }
                    }
                }
                else
                {
                    if (player.HasAdvance <Trade>())
                    {
                        production = new Caravan();
                    }
                }
            }

            // Set random production
            if (production == null)
            {
                IProduction[] items = city.AvailableProduction.ToArray();
                production = items[Common.Random.Next(items.Length)];
            }

            city.SetProduction(production);
        }
예제 #12
0
 public Granary(Granary t) : base(t)
 {
     prefab = Resources.Load("Prefabs/Granary");
 }
예제 #13
0
 public override void Initialize(object storehouse)
 {
     this.granary = (Granary)storehouse;
     title.text   = this.granary.name;
     StartCoroutine(Show());
 }