void OnTriggerEnter(Collider collider)
 {
     if (collider.gameObject.tag == "FireZone")
     {
         //print("in fire zone");
         boyNeedState = BoyNeedState.RunToSurviveFire;
     }
 }
 void FindFood()
 {
     if (!dieded)
     {
         MovingBoy.anim.Play("ArmsFeed");
         MovingBoy.BoyState = BoyState.FindingFood;
         boyNeedState       = BoyNeedState.NeedFood;
     }
 }
    IEnumerator SetOnFireDispatch()
    {
        Fire.SetActive(true);
        yield return(new WaitForSeconds(5f));

        Fire.SetActive(false);

        MovingBoy.BoyState = BoyState.Idle;
        boyNeedState       = BoyNeedState.EnoughtOfEverything;

        fireActivation = false;
    }
    IEnumerator DebugCheckRestart()
    {
        MovingBoy.BoyState = BoyState.Idle;
        boyNeedState       = BoyNeedState.EnoughtOfEverything;

        yield return(new WaitForSeconds(10f));

        //stop fire too
        Fire.SetActive(false);

        MovingBoy.BoyState = BoyState.Idle;
        boyNeedState       = BoyNeedState.EnoughtOfEverything;

        fireActivation = false;

        StartCoroutine(DebugCheckRestart());
    }
    void GetWood()
    {
        if (!dieded)
        {
            if (WoodAmount < AmountOfWoodCarriedMax)
            {
                WoodAmount++;
            }
            else
            {
                boyNeedState       = BoyNeedState.EnoughtOfEverything;
                MovingBoy.BoyState = BoyState.Idle;
            }

            if (WoodAmount >= AmountOfWoodCarriedMax)
            {
                WoodAmount = AmountOfWoodCarriedMax;
            }
        }
    }
    void GiveWood()
    {
        if (!dieded)
        {
            if (WoodAmount > 0)
            {
                WoodAmount--;
                NeirbyHouse.GetComponent <House>().AddWoodToBuilding(1);
            }
            else
            {
                boyNeedState       = BoyNeedState.EnoughtOfEverything;
                MovingBoy.BoyState = BoyState.Idle;
            }

            if (WoodAmount <= 0)
            {
                WoodAmount = 0;
            }
        }
    }
    void Eat()
    {
        if (!dieded)
        {
            if (food < foodEatedEnoughState)
            {
                food += foodFeedingSpeed;
                NeirbyBush.GetComponent <BushLife>().ReduceLife(foodFeedingSpeed);
                //MovingBoy.anim.Play("ArmsEating");
            }
            else
            {
                boyNeedState       = BoyNeedState.EnoughtOfEverything;
                MovingBoy.BoyState = BoyState.Idle;
                MovingBoy.anim.Play("Idle");
            }

            if (food >= MaxFood)
            {
                food = MaxFood;
            }
        }
    }
    IEnumerator waitToDie()
    {
        VisualWood();

        yield return(new WaitForSeconds(0.1f));

        DebugLookAroundBoys();

        if (!dieded)
        {
            food -= foodLoss;

            switch (boyNeedState)
            {
            case BoyNeedState.EnoughtOfEverything:

                if (food < FoodBoySated && !fireActivation)
                {
                    FindFood();
                }

                //build a house
                //find nearest wood, if not null
                //get wood
                //when enough wood,
                //go to house and deposit
                //loop if

                if (GameObject.Find("GameController").GetComponent <Usables>().House.Count == 0)
                {
                    MovingBoy.BoyState = BoyState.Idle;
                    yield return(0);

                    break;
                }
                else
                {
                    if (WoodAmount < AmountOfWoodCarriedMax)
                    {
                        MovingBoy.destinationToObjectif = NeirbyTree;
                        MovingBoy.BoyState = BoyState.WalkingToObjectif;
                        MovingBoy.typeOfUsableImLookingFor = UsableType.Tree;

                        if (NeirbyTree == null || MovingBoy.destinationToObjectif == null)
                        {
                            boyNeedState = BoyNeedState.EnoughtOfEverything;
                        }
                        else
                        {
                            if (Vector3.Distance(MovingBoy.destinationToObjectif.transform.position, this.transform.position) <= 5f)
                            {
                                GetWood();
                            }
                        }

                        break;
                    }

                    if (WoodAmount >= AmountOfWoodCarriedMax)
                    {
                        MovingBoy.destinationToObjectif = NeirbyHouse;
                        MovingBoy.BoyState = BoyState.WalkingToObjectif;
                        MovingBoy.typeOfUsableImLookingFor = UsableType.House;

                        if (NeirbyHouse == null || MovingBoy.destinationToObjectif == null)
                        {
                            boyNeedState = BoyNeedState.EnoughtOfEverything;
                        }
                        else
                        {
                            if (Vector3.Distance(MovingBoy.destinationToObjectif.transform.position, this.transform.position) <= 5f)
                            {
                                GiveWood();
                            }
                        }

                        break;
                    }
                }

                break;

            case BoyNeedState.NeedFood:
                //eat if available bush around him
                //then when enought go back to idle and wondering around
                MovingBoy.typeOfUsableImLookingFor = UsableType.Bush;
                MovingBoy.destinationToObjectif    = NeirbyBush;
                MovingBoy.BoyState = BoyState.WalkingToObjectif;


                if (NeirbyBush == null || MovingBoy.destinationToObjectif == null)
                {
                    boyNeedState = BoyNeedState.EnoughtOfEverything;
                }
                else
                {
                    if (Vector3.Distance(MovingBoy.destinationToObjectif.transform.position, this.transform.position) <= 2f)
                    {
                        Eat();
                    }
                }
                break;

            case BoyNeedState.RunToSurviveFire:
                MovingBoy.BoyState = BoyState.RunAway;
                food = 20;
                if (!fireActivation)
                {
                    fireActivation = true;

                    StartCoroutine(SetOnFireDispatch());
                }
                break;
            }
        }

        if (food <= 0)
        {
            Die();
            food = 0;
        }

        yield return(new WaitForSeconds(0.5f));

        StartCoroutine(waitToDie());
    }