Beispiel #1
0
    public IEnumerator ExecuteTurn()
    {
        //AI behavior:
        var currentLand = CurrentLand.GetComponent <LandScript>();

        switch (AgentProfession)
        {
        case Profession.Unemployed:

            if (currentLand.LandOwner == gameObject)
            {
                //do something with his land
            }
            else
            {
                //search for empty land
                foreach (var landObject in world.LandObjects)
                {
                    var land = landObject.GetComponent <LandScript>();
                    if (land.LandOwner == null)
                    {
                        MoveTo(landObject);
                    }
                }
            }

            break;

        case Profession.Farmer:
            if (currentLand.landType == LandScript.LandType.FarmLand)
            {
                animator.SetTrigger("FarmerWorking");

                //harvest action
                int crops = currentLand.CropsPlanted;
                if (crops > 0)
                {
                    int rng   = Random.Range(-2, 1);
                    int yield = crops * 3 + rng;
                    Wealth += yield;
                    SayMessage("Harvest +" + yield);
                    world.AddFood(yield);
                    currentLand.CropsPlanted = 0;
                    yield return(new WaitForSeconds(1));
                }
                //start farming action
                if (Wealth >= 1)
                {
                    crops   = Wealth >= 3 ? 2 : (Wealth >= 1 ? 1 : 0);
                    Wealth -= crops;
                    currentLand.CropsPlanted = crops;
                    SayMessage("Farming Investment -" + crops);
                    yield return(new WaitForSeconds(1));
                }
                animator.SetTrigger("FarmerIdle");
            }
            break;

        case Profession.Artisan:
            animator.SetTrigger("ArtisanWorking");
            if (true)     //TODO: check previous investment
            {
                int yield = Random.Range(1, 3);
                Wealth += yield;
                SayMessage("production +" + yield);
                yield return(new WaitForSeconds(1));
            }
            if (Wealth >= 1)
            {
                Wealth -= 1;
                SayMessage("Crafting Investment -1");
                yield return(new WaitForSeconds(1));
            }
            animator.SetTrigger("ArtisanIdle");
            break;

        case Profession.Merchant:
            animator.SetTrigger("MerchantWorking");
            if (true)     //TODO: check previous investment
            {
                int yield = Random.Range(1, 3);
                Wealth += yield;
                SayMessage("margin +" + yield);
                yield return(new WaitForSeconds(1));
            }
            if (Wealth >= 1)
            {
                Wealth -= 1;
                SayMessage("Trade Investment -1");
                yield return(new WaitForSeconds(1));
            }
            animator.SetTrigger("MerchantIdle");
            break;

        case Profession.Knight:
            animator.SetTrigger("KnightWorking");
            animator.SetTrigger("KnightIdle");
            break;

        default:
            break;
        }
    }