Exemplo n.º 1
0
    // OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
    //override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    //{
    //
    //}

    // OnStateExit is called when a transition ends and the state machine finishes evaluating this state
    override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        DudeData dude = animator.gameObject.GetComponent <DudeData> ();

        anim_length        = 0;
        dude.cur_animation = null;
    }
Exemplo n.º 2
0
    public void UpdateHealth()
    {
        DudeData dude = gameObject.transform.parent.GetComponent <DudeData> ();

        TextMesh[] prop_vals = GetComponentsInChildren <TextMesh>();
        int        delta     = 0;

        foreach (TextMesh prop_val in prop_vals)
        {
            if (prop_val.gameObject.transform.parent.name == "Health")
            {
                if (prop_val.name == "Value")
                {
                    delta         = dude.unit.hp - int.Parse(prop_val.text);
                    prop_val.text = dude.unit.hp.ToString();
                }
                else if (prop_val.name == "hp_delta" && delta != 0)
                {
                    prop_val.text = (delta > 0 ? "+" : "-") + delta.ToString();

                    var prop_anim = prop_val.GetComponent <Animator> ();
                    prop_anim.SetTrigger("StartAnim");
                    prop_anim.Update(0);
                }
            }
        }
    }
Exemplo n.º 3
0
    // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
    override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        DudeData dude          = animator.gameObject.GetComponent <DudeData> ();
        DudeData suffered_dude = dude.dude_to_kill;

        //ToDo change it
        Vector2 delta = GameBoard.instance.FindCellPlace(suffered_dude.unit.oriented_cell) -
                        GameBoard.instance.FindCellPlace(dude.unit.oriented_cell);

        double angle = 180 / Math.PI * Math.Atan2(delta.x, delta.y);         //ToDo check sign
        //ToDo change to Vector2.Angle(points[i + 1] - points[i], Vector2.up) or something

        Quaternion rotation = Quaternion.identity;

        rotation.SetFromToRotation(dude.orientation, Quaternion.Euler(0, (float)angle, 0) * Vector3.forward);
        //rotation.eulerAngles = new Vector3(0, (float)angle, 0);
        dude.gameObject.transform.rotation = rotation;

        suffered_dude.GetComponent <Animator>().SetTrigger("block");

        //ToDo same logic is present in UnitImpl.RunAndHit
        if (suffered_dude.dude_to_kill == null &&
            !dude.unit.isRangedAttack &&
            dude.unit.healing == 0 &&
            dude.first_strike &&
            suffered_dude.unit.hp > 0)
        {
            suffered_dude.dude_to_kill = dude;
            suffered_dude.GetComponent <Animator>().SetTrigger("hit");
        }
    }
Exemplo n.º 4
0
    // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
    //override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
    //
    //}

    // OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
    //override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
    //
    //}

    // OnStateExit is called when a transition ends and the state machine finishes evaluating this state
    override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        DudeData dude = animator.gameObject.GetComponent <DudeData> ();

        animator.gameObject.GetComponentInChildren <Properties> ().UpdateHealth();

        if (dude.unit.hp == 0)
        {
            animator.SetTrigger("die");
        }
    }
Exemplo n.º 5
0
    // OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
    //override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
    //
    //}

    // OnStateExit is called when a transition ends and the state machine finishes evaluating this state
    override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        DudeData dude = animator.gameObject.GetComponent <DudeData> ();

        dude.dude_to_kill = null;
        dude.first_strike = false;

        if (dude.unit.isVampire)
        {
            animator.gameObject.GetComponentInChildren <Properties> ().UpdateHealth();
        }
    }
Exemplo n.º 6
0
    public void UnitAdded(UnitImpl unit)
    {
        UnityEngine.Object model = Resources.Load(unit.modelName, typeof(GameObject));
        if (model == null)
        {
            model = Resources.Load("Dude", typeof(GameObject));             //Default model
        }
        GameObject clone = Instantiate(model) as GameObject;
        DudeData   dude  = clone.GetComponent <DudeData>();

        dude.Initialize(unit);

        dudes_list.Add(dude);
    }
Exemplo n.º 7
0
    public void PlayHitAnimation(UnitImpl unit_to_kill)
    {
        if (gameObject.tag != "Dude")
        {
            ResetAnimations(false, false);            //ToDo change only jit animation and so one
        }

        DudeData suffered_dude = GameBoard.instance.FindDude(unit_to_kill);

        if (suffered_dude.gameObject.tag != "Dude" && suffered_dude != this)
        {
            //ToDo fliendly fire ???
            suffered_dude.ResetAnimations(unit.command_idx == suffered_dude.unit.command_idx, false);
        }

        if (cur_animation == null)
        {
            GetComponent <Animator> ().SetTrigger("hit");
        }

        dude_to_kill = suffered_dude;
        first_strike = true;
    }
Exemplo n.º 8
0
    // OnStateMove is called right after Animator.OnAnimatorMove(). Code that processes and affects root motion should be implemented here
    override public void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        DudeData dude = animator.gameObject.GetComponent <DudeData> ();

        if (dude.cur_animation != null)
        {
            double  angle;
            Vector2 cur_pos = new Vector2();

            if (dude.cur_animation.GetPosition(anim_length, out cur_pos, out angle))
            {
                //ToDo change GetPosition to return Vector3 and rotate board to be xy instead of xz
                Vector3 offset = new Vector3((float)cur_pos.x, 0.1f, (float)cur_pos.y);
                animator.gameObject.transform.position = offset;

                Quaternion rotation = Quaternion.identity;
                //rotation.eulerAngles = new Vector3(0, (float)angle, 0);
                rotation.SetFromToRotation(dude.orientation, Quaternion.Euler(0, (float)angle, 0) * Vector3.forward);
                animator.gameObject.transform.rotation = rotation;

                anim_length += Time.deltaTime * 5 * dude.moving_speed;                //ToDo this is not good
            }
            else if (!is_hit_set)
            {
                is_hit_set = true;
                if (dude.dude_to_kill != null)
                {
                    animator.SetTrigger("hit");
                }
                else
                {
                    animator.SetTrigger("walk");
                }
            }
        }
    }
Exemplo n.º 9
0
 public void RemoveUnit(DudeData dude)
 {
     dudes_list.Remove(dude);
     gameboard_impl.commands[dude.unit.command_idx].staff.Remove(dude.unit);
 }