Exemple #1
0
 public void getEaten(FishHunt hunt)
 {
     isBusy     = true;
     isDying    = true;
     deathCause = DeathCause.Eaten;
     deathTime  = 1;
     dyingTimer = 1;
 }
    void RemoveCreature(int cId, CharacterManager.DeathCause cause)
    {
        bool foundOne = false;
        int  index    = 0;
        int  found    = -1;

        while (index < creatures.Count && !foundOne)
        {
            if (creatures[index].id == cId && !creatures[index].isDying)
            {
                foundOne = true;
                found    = index;
            }
            else
            {
                index++;
            }
        }

        if (foundOne)
        {
            SwimmingCreature c = creatures[found];
            //creatures.Remove(c);
            if (cause == null)
            {
                cause = CharacterManager.DeathCause.Starve;
            }
            switch (cause)
            {
            case CharacterManager.DeathCause.Sold:
                c.startFishing(lures[Random.Range(0, lures.Count)]);
                break;

            case CharacterManager.DeathCause.Hot:
                c.startDying(player.tooHotPart);
                break;

            case CharacterManager.DeathCause.Cold:
                c.startDying(player.tooCoolPart);
                break;

            case CharacterManager.DeathCause.Eaten:
                SwimmingCreature predator      = findRandomCreatureOfTier(c.level + 1);
                float            fasterHunting = Mathf.Max(1, predator.huntingFish.Count);
                FishHunt         hunt          = new FishHunt(predator, c, predatorTime / fasterHunting);
                predator.huntingFish.Add(hunt);
                c.getEaten(hunt);
                predator.startEating();
                break;

            case CharacterManager.DeathCause.Starve:
                c.startDying(player.starvedPart);
                break;
            }
        }
    }