예제 #1
0
    public override void Execute(IODAAgent source, IODAAgent target)
    {
        //Get Energy from corpse
        AnimalAgent b = target.GetComponent<AnimalAgent>();
        AnimalAgent a = source.GetComponent<AnimalAgent>();

        //if (a.timerHolder.ConsumeToken("attack"))
        //{
            //fight result calculator
            float fightResult = FightCalculator(a, b);
            if (fightResult >= 0.0f)
            {
                b.RemoveToValue(EvolutionNames.AgentSelf.Health,fightResult);
                //b.health = b.health - fightResult;
            }
            else
            {
                b.RemoveToValue(EvolutionNames.AgentSelf.Health,fightResult);
                a.AddToValue(EvolutionNames.AgentSelf.Health,fightResult);
                //a.health = a.health + fightResult;
            }
            a.gameObject.transform.LookAt(b.gameObject.transform);

            a.GetAAC().fightAnimation();

            //Debug.Log(source.ToString() + " fight and deals (" + fightResult + ") dmg");

        //}
    }
예제 #2
0
 public override void Execute(IODAAgent source, IODAAgent target)
 {
     source.SetDebug("Wiggle");
     AnimalAgent agent = source.GetComponent<AnimalAgent>() as AnimalAgent;
     agent.Wiggle();
     //Debug.Log("Wiggle");
 }
예제 #3
0
 public override void Execute(IODAAgent source, IODAAgent target)
 {
     //Get Energy from berries
     Berry b = target.GetComponent<Berry>();
     //Debug.Log(source.ToString() + " eats a berry (+" + target.GetComponent<EvolutionAgent>().energy +")");
     //b.energy += b.energy;
 }
예제 #4
0
 // Use this for initialization
 void Start()
 {
     player = GameObject.FindGameObjectWithTag("Player");
     Debug.Assert(player != null);
     playerAgent = player.GetComponent<IODA.IODAAgent>();
     Debug.Assert(playerAgent != null);
 }
예제 #5
0
 public void Start()
 {
     ioda = GetComponent<IODA.IODAAgent> ();
     if (timerHolder == null) {
         timerHolder = gameObject.AddComponent<TimerHolder> ();
         timerHolder.Prepare();
     }
 }
예제 #6
0
 public override void Execute(IODAAgent source, IODAAgent target)
 {
     source.SetDebug("GrowPlant");
         PlantAgent plant = (PlantAgent)source.GetComponent<PlantAgent>();
         if (!plant.IsMature())
         {
             plant.Grow(Time.deltaTime, Time.timeScale);
         }
 }
예제 #7
0
    public override void Execute(IODAAgent source, IODAAgent target)
    {
        source.SetDebug("EatCorpse");
        //Get Energy from corpse
        CorpseAgent b = target.GetComponent<CorpseAgent>();
        AnimalAgent a = source.GetComponent<AnimalAgent>();

        a.GetAAC().eatingAnimation();

        a.AddToValue(EvolutionNames.AgentSelf.Energy,b.Take());
        //Debug.Log(source.ToString() + " eats a corpse (+" + b.reserve + ")");
    }
예제 #8
0
 public override bool IsTriggered(IODAAgent source, IODAAgent target)
 {
     AnimalAgent agent = source.GetComponent<AnimalAgent>() as AnimalAgent;
     if (agent.GetEnergy() < agent.GetEnergyMaximum() / 2)
     {
         return true;
     }
     else
     {
         return false;
     }
 }
예제 #9
0
    public override bool IsValid(IODAAgent source, IODAAgent target)
    {
        //target exists and is a bush
        if (target == null)
            return false;

        Berry b = target.GetComponent<Berry>();
        if(b == null)
            return false;

        if(distance!= -1 && source.DistanceTo(target) < distance)
                return true;

        return false;
    }
예제 #10
0
    public override bool IsValid(IODAAgent source, IODAAgent target)
    {
        //target exists and is a bush
        if (target == null)
            return false;

        CorpseAgent b = target.GetComponent<CorpseAgent>();
        if (b == null)
            return false;

        if (source.DistanceTo(target) > distance)
            return false;

        return true;
    }
예제 #11
0
    public override bool IsValid(IODAAgent source, IODAAgent target)
    {
        //target exists and is a Animal and animal is carnivore
        if (target == null)
            return false;

        AnimalAgent b = target.GetComponent<AnimalAgent>();
        if (b == null || !source.GetComponent<AnimalAgent>().IsCarnivore())
            return false;
        //distance to fight
        if (source.DistanceTo(target) > distance)
            return false;

        return true;
    }
예제 #12
0
    public override void Execute(IODAAgent source, IODAAgent target)
    {
        source.SetDebug("SeekFood");
        //GameObject.FindGameObjectWithTag("GameController").GetComponent<QuestManager>().SendMessage("EventListner", "fight");
        AnimalAgent agent = source.GetComponent<AnimalAgent>() as AnimalAgent;
        if (agent != null)
        {
            List<EvolutionAgent> percepts = agent.GetPerceptGetter().GetPercepts();
            EvolutionAgent foundTarget = null;
            if (agent.IsCarnivore())
            {
                foundTarget = SeekCorpse(agent, percepts);
                if (!foundTarget)
                {
                    foundTarget = SeekAnimal(agent, percepts);
                }
            }
            else
            {
                foundTarget = SeekBush(agent, percepts);
            }

            if (null != foundTarget)
            {
                source.target = foundTarget.GetComponent<IODAAgent>();
                source.SetDebug("SeekFood-Found");
            }
            else
            {
                source.target = null;
                source.SetDebug("SeekFood-Not found");

            }

            if (null != source.target)
            {
                source.SetDebug("SeekFood-MoveToward");
                agent.MoveTowards(source.target.GetComponent<EvolutionAgent>());
            }
            else
            {
                agent.Wiggle();
                source.SetDebug("SeekFood-Wiggle");

            }
        }
    }
예제 #13
0
    public override void Execute(IODAAgent source, IODAAgent target)
    {
        source.SetDebug("EatBush");
        //Get Energy from berries
        Bush b = target.GetComponent<Bush>();
        AnimalAgent a = source.GetComponent<AnimalAgent>();

        if (b.IsMature())
        {
            a.GetAAC().eatingAnimation();
            a.AddToValue(EvolutionNames.AgentSelf.Energy, b.Take());
            //a.RemoveBush(target.gameObject);
            //Debug.Log(source.ToString() + " eats a bush (+" + b.growMax + ")");
        }
        else
        {
            source.target = null;
        }
    }
예제 #14
0
 public override void Execute(IODAAgent source, IODAAgent target)
 {
     //Debug.Log("MoveTo");
     //source.gameObject.GetComponent<N>
 }
예제 #15
0
 public abstract bool IsValid(IODAAgent source, IODAAgent target);
예제 #16
0
 public abstract bool IsTriggered(IODAAgent source, IODAAgent target);
예제 #17
0
 public abstract void Execute(IODAAgent source, IODAAgent target);
예제 #18
0
 public override bool IsTriggered(IODAAgent source, IODAAgent target)
 {
     //Berries are mature
     Bush b = target.GetComponent<Bush>();
     return b.IsMature();
 }
예제 #19
0
 public static float DistanceBetween(IODAAgent source, IODAAgent target)
 {
     return Vector3.Distance(source.transform.position, target.gameObject.transform.position);
 }
예제 #20
0
 public float DistanceTo(IODAAgent target)
 {
     return DistanceBetween(this, target);
 }
예제 #21
0
 public override bool IsTriggered(IODAAgent source, IODAAgent target)
 {
     //Berries are mature
     Berry b = target.GetComponent<Berry>();
     return b != null && b.IsMature();
 }
예제 #22
0
 public override bool IsTriggered(IODAAgent source, IODAAgent target)
 {
     return true;
 }
예제 #23
0
 public override bool IsValid(IODAAgent source, IODAAgent target)
 {
     PlantAgent pa = source.GetComponent<PlantAgent>();
         return pa != null;
 }
예제 #24
0
 public override bool IsValid(IODAAgent source, IODAAgent target)
 {
     return true;
 }
예제 #25
0
 public override bool IsValid(IODAAgent source, IODAAgent target)
 {
     AnimalAgent aa = source.GetComponent<AnimalAgent>() as AnimalAgent;
     return aa != null;
 }