Beispiel #1
0
    public override State Tick(enemy_script cur_actor)
    {
        actor = cur_actor;
        sequence_memory_data temp_data = actor.get_data(data_id);
        int curChild = temp_data.running_child;

        if (curState != State.RUNNING)
            StartAction();

        if (curChild >= children.Count)
        {
            curState = State.SUCCESS;
            EndAction();
        }
        else
        {
            State childState = children[curChild].exec(actor);

            if (childState == State.SUCCESS)
            {
                curChild++;
                actor.set_running_child(curChild, data_id);
            }
            if (childState == State.FAILURE)
            {
                curState = State.FAILURE;
                EndAction();
            }
        }
        return curState;
    }
Beispiel #2
0
    public virtual void Open(enemy_script actor)
    {
        //Debug.Log("adding to list: " + instance);

        // Nodes are on last open list only if they are still running!
        if (actor.open_nodes.Contains(instance))
            curState = State.RUNNING;
    }
Beispiel #3
0
 public override State Tick(enemy_script actor)
 {
     // TODO: Actual attack logic.
     //MESSAGE.print("attack", -100, -70, 12, 2000);
     actor.shoot();
     MESSAGE.report("penkele", 7);
     //Hit(actor);
     return curState;
 }
Beispiel #4
0
 // Alternate update / traversal
 // TODO: rewrite enemy_script to keep track of necessary data (or separate class? why?)
 // TODO: use actor as function parameter!
 // previous open list saved to actor, current open in update
 // NB! All non-const data saved in actor instance, NOT in nodes!
 public void UpdateAI(enemy_script actor)
 {
     open_nodes.Clear();
     rootnode.Tick(actor);
     //printlist();
     //printlastlist(actor);
     ClosePrevious(actor);
     actor.SetOpenList(open_nodes);
 }
Beispiel #5
0
    //
    public State exec(enemy_script actor)
    {
        Open(actor);

        if (Tick(actor) != State.RUNNING) // Tick modifies curState anyway
                Close();

        return curState;
    }
Beispiel #6
0
    public override State Tick(enemy_script actor)
    {
        actor.SetDirectionToPlayer();
        actor.searching = true;

        //actor.SetLooking(false);
        // curState is always SUCCESS
        // TODO: define when failed
        return curState;
    }
Beispiel #7
0
    public override State Tick(enemy_script actor)
    {
        if (actor.GetPlayerInRange())
        {
            //MESSAGE.print("attack", -100, -70, 12, 2000);
            curState = State.SUCCESS;
        }
        else curState = State.FAILURE;

        return curState;
    }
Beispiel #8
0
    public override State Tick(enemy_script actor)
    {
        actor.attack_timer -= _TIMER.deltatime();
        if (actor.attack_timer <= 0)
        {
            actor.ResetCooldown();
            curState = State.SUCCESS;
        }
        else curState = State.FAILURE;

        return curState;
    }
Beispiel #9
0
    public override State Tick(enemy_script actor)
    {
        if (actor.GetPlayerSighted())
        {

            curState = State.SUCCESS;
            actor.searching = true;
        }
        else curState = State.FAILURE;

        return curState;
    }
Beispiel #10
0
    void Hit(enemy_script actor)
    {
        // TODO: laser attack! Also health should not be here (no can know if hit or miss).

        actor.hits++;
        if (actor.is_dead())
        {
            MESSAGE.print("GAME OVER...", -160, -90, 1, 65);
            _TIMER.set_pause(true);
        }

        //status.laser.shoot_beam(new Vector3(status.player_last_seen.x, 0, status.player_last_seen.y), new Vector3(status._position.x, 0, status._position.y));
        //status.last_attack = _TIMER.time();
    }
Beispiel #11
0
    public override State Tick(enemy_script actor)
    {
        for (int i = 0; i < children.Count; ++i)
        {
            curState = children[i].exec(actor);

            if (curState != State.FAILURE)
            {
                return curState;
            }
        }

        return curState;
    }
Beispiel #12
0
 // Close nodes previously left open, if priority branch interrupts
 // Called after every tick
 private void ClosePrevious(enemy_script _actor)
 {
     for (int i = 0; i < _actor.open_nodes.Count; ++i)
     {
         if (i < open_nodes.Count)
         {
             if (open_nodes[i] != _actor.open_nodes[i])
             {
                 Debug.Log("ending node " + _actor.open_nodes[i]);
                 _actor.open_nodes[i].EndAction();
             }
         }
         else _actor.open_nodes[i].EndAction();
     }
 }
Beispiel #13
0
    public override State Tick(enemy_script actor)
    {
        cur_actor = actor;
        //MESSAGE.print("search", -100, -70, 12, 2000);
        if (curState != State.RUNNING)
            StartAction();
        if (actor.isnotnear()) ///// TODO: Better condition!!!!
        {
            curState = State.RUNNING;
            actor.SetDirectionToPlayer();
        }
        else EndAction();

        return curState;
    }
Beispiel #14
0
    public override State Tick(enemy_script actor)
    {
        cur_actor = actor;
        //MESSAGE.print("lookout", -100, -70, 12, 2000);

        actor.current_angle_in_degrees += _TIMER.deltatime() * 90.0f;
        if (curState != State.RUNNING)
            StartAction();
        else if (actor.current_angle_in_degrees >= actor.end_angle)
        {
            EndAction();
        }
        else actor.SetDirection(actor.current_angle_in_degrees);

        return curState;
    }
Beispiel #15
0
 public override void Open(enemy_script actor)
 {
     if (!status.open_nodes.Contains(instance))
         status.open_nodes.Add(instance);
     base.Open(actor);
 }
Beispiel #16
0
 public abstract State Tick(enemy_script actor);
Beispiel #17
0
 public override State Tick(enemy_script actor)
 {
     //MESSAGE.print("idle", -100, -70, 12, 2000);
     return curState;
 }
Beispiel #18
0
 // constructor for setup
 public gossip_leaf(tree_script world_status, enemy_script actor)
 {
     status = world_status;
     curState = State.FAILURE;
     instance = this;
 }
Beispiel #19
0
 public override State Tick(enemy_script actor)
 {
     return curState;
 }
Beispiel #20
0
 void printlastlist(enemy_script actor)
 {
     Debug.Log("last open list:");
     foreach (general_node g in actor.open_nodes)
         Debug.Log(g);
 }
Beispiel #21
0
 public override State Tick(enemy_script actor)
 {
     children[0].exec(actor);
     return State.SUCCESS;
 }