Exemplo n.º 1
0
 void UpdateAnimationVariables()
 {
     if (curTurn)
     {
         if (playerControlled)
         {
             curDir = !isMoving?GlobalFunc.GetDirection(Mathf.Round(Input.GetAxisRaw("Horizontal")), Mathf.Round(Input.GetAxisRaw("Vertical")), curDir) : curDir; GetComponent <EntityAnimation>().prevDir = curDir;
         }
         else
         {
             GetComponent <EntityAnimation>().prevDir = curDir;
         }
     }
     GetComponent <EntityAnimation>().isMoving   = isMoving;
     GetComponent <EntityAnimation>().isSleeping = isSleeping;
 }
Exemplo n.º 2
0
    public void MoveOffScreen()
    {
        curPos = (Vector2)thisEntity.position;
        if (agroObj != null)
        {
            PathRequestManager.RequestPath(transform.position, agroObj.position, OnPathFound);
        }
        if (path.Length != 0)
        {
            curDir = GlobalFunc.GetDirection(path[0] - curPos);
            MoveTargetPos(path[0] - curPos);
        }
        else
        {
            curDir = GlobalFunc.getRandDirection();
            MoveTargetPos(GlobalFunc.entityDirectionToVector2(curDir));
        }

        thisEntity.position = targetPos;
    }
Exemplo n.º 3
0
    // Update is called once per frame
    void Update()
    {
        curPos = (Vector2)thisEntity.position;

        if (!playerControlled)
        {
            if (agroObj == null && Vector2.Distance(GameObject.Find("objPlayer").transform.position, transform.position) < 8f && !isSleeping)  //Agro on Player if line of site
            {
                Debug.DrawRay(transform.position, (GameObject.Find("objPlayer").transform.position - transform.position));
                if (agroObj == null && Physics2D.CircleCast(transform.position, .45f, (GameObject.Find("objPlayer").transform.position - transform.position)) == GameObject.Find("objPlayer").transform)
                {
                    agroObj = GameObject.Find("objPlayer").transform;
                }
            }
            if (agroObj != null && Physics2D.CircleCast(transform.position, .45f, (GameObject.Find("objPlayer").transform.position - transform.position)).transform != GameObject.Find("objPlayer").transform &&
                Vector2.Distance(transform.position, GameObject.Find("objPlayer").transform.position) > 5)
            {
                agroObj = null;
                path    = new Vector2[0];
            }
        }



        if (!amh.IsPaused)
        {
            UpdateAnimationVariables();
            if (isMoving)
            {
                if (GetComponent <SpriteRenderer>().isVisible)
                {
                    thisEntity.position = Vector2.MoveTowards((Vector2)thisEntity.position, targetPos, Time.deltaTime * moveSpeed);
                }
                else
                {
                    thisEntity.position = targetPos; EndTurn(); return;
                }
                if (curPos == targetPos)
                {
                    EndTurn();
                }
                return;
            }
            else
            {
                if (canMove)
                {
                    //PC Movement
                    if (playerControlled)
                    {
                        MoveTargetPos(new Vector2(Mathf.Round(Input.GetAxisRaw("Horizontal")), Mathf.Round(Input.GetAxisRaw("Vertical"))));
                        if (Input.GetButtonDown("RightButton") && !isMoving && canMove)
                        {
                            canMove = false;
                            Debug.Log("ATTACK!");
                            if (!(eManager.EntityArmor[7] == null ? unarmedAttack : eManager.EntityArmor[7].weaponPrefab).GetComponent <WeaponHandler>().IsThrown)
                            {
                                GameObject newAttack;
                                switch (curDir)
                                {
                                case entityDirection.N:

                                    newAttack = Instantiate(eManager.EntityArmor[7] == null ? unarmedAttack : eManager.EntityArmor[7].weaponPrefab, ((Vector2)transform.position +
                                                                                                                                                     (eManager.EntityArmor[7] == null ? unarmedAttack.GetComponent <WeaponHandler>().WeaponOffsetVert : eManager.EntityArmor[7].weaponPrefab.GetComponent <WeaponHandler>().WeaponOffsetVert)), Quaternion.identity);
                                    newAttack.GetComponent <WeaponHandler>().parentObject = this.gameObject;
                                    if (newAttack.GetComponent <WeaponHandler>().NeedsRotate)
                                    {
                                        newAttack.transform.eulerAngles = new Vector3(0, 0, 90);
                                    }
                                    break;

                                case entityDirection.NE:
                                    newAttack = Instantiate(eManager.EntityArmor[7] == null ? unarmedAttack : eManager.EntityArmor[7].weaponPrefab, ((Vector2)transform.position +
                                                                                                                                                     (eManager.EntityArmor[7] == null ? unarmedAttack.GetComponent <WeaponHandler>().WeaponOffsetVert : eManager.EntityArmor[7].weaponPrefab.GetComponent <WeaponHandler>().WeaponOffsetVert) +
                                                                                                                                                     (eManager.EntityArmor[7] == null ? unarmedAttack.GetComponent <WeaponHandler>().WeaponOffsetHorz : eManager.EntityArmor[7].weaponPrefab.GetComponent <WeaponHandler>().WeaponOffsetHorz)), Quaternion.identity);
                                    newAttack.GetComponent <WeaponHandler>().parentObject = this.gameObject;
                                    if (newAttack.GetComponent <WeaponHandler>().NeedsRotate)
                                    {
                                        newAttack.transform.eulerAngles = new Vector3(0, 0, 45);
                                    }
                                    break;

                                case entityDirection.E:
                                    newAttack = Instantiate(eManager.EntityArmor[7] == null ? unarmedAttack : eManager.EntityArmor[7].weaponPrefab, ((Vector2)transform.position +
                                                                                                                                                     (eManager.EntityArmor[7] == null ? unarmedAttack.GetComponent <WeaponHandler>().WeaponOffsetHorz : eManager.EntityArmor[7].weaponPrefab.GetComponent <WeaponHandler>().WeaponOffsetHorz)), Quaternion.identity);
                                    newAttack.GetComponent <WeaponHandler>().parentObject = this.gameObject;
                                    break;

                                case entityDirection.SE:
                                    newAttack = Instantiate(eManager.EntityArmor[7] == null ? unarmedAttack : eManager.EntityArmor[7].weaponPrefab, ((Vector2)transform.position -
                                                                                                                                                     (eManager.EntityArmor[7] == null ? unarmedAttack.GetComponent <WeaponHandler>().WeaponOffsetVert : eManager.EntityArmor[7].weaponPrefab.GetComponent <WeaponHandler>().WeaponOffsetVert) +
                                                                                                                                                     (eManager.EntityArmor[7] == null ? unarmedAttack.GetComponent <WeaponHandler>().WeaponOffsetHorz : eManager.EntityArmor[7].weaponPrefab.GetComponent <WeaponHandler>().WeaponOffsetHorz)), Quaternion.identity);
                                    newAttack.GetComponent <WeaponHandler>().parentObject = this.gameObject;
                                    if (newAttack.GetComponent <WeaponHandler>().NeedsRotate)
                                    {
                                        newAttack.transform.eulerAngles = new Vector3(0, 0, -45);
                                    }
                                    break;

                                case entityDirection.S:
                                    newAttack = Instantiate(eManager.EntityArmor[7] == null ? unarmedAttack : eManager.EntityArmor[7].weaponPrefab, ((Vector2)transform.position -
                                                                                                                                                     (eManager.EntityArmor[7] == null ? unarmedAttack.GetComponent <WeaponHandler>().WeaponOffsetVert : eManager.EntityArmor[7].weaponPrefab.GetComponent <WeaponHandler>().WeaponOffsetVert)), Quaternion.identity);
                                    newAttack.GetComponent <WeaponHandler>().parentObject = this.gameObject;
                                    if (newAttack.GetComponent <WeaponHandler>().NeedsRotate)
                                    {
                                        newAttack.transform.eulerAngles = new Vector3(0, 0, -90);
                                    }
                                    break;

                                case entityDirection.SW:
                                    newAttack = Instantiate(eManager.EntityArmor[7] == null ? unarmedAttack : eManager.EntityArmor[7].weaponPrefab, ((Vector2)transform.position -
                                                                                                                                                     (eManager.EntityArmor[7] == null ? unarmedAttack.GetComponent <WeaponHandler>().WeaponOffsetVert : eManager.EntityArmor[7].weaponPrefab.GetComponent <WeaponHandler>().WeaponOffsetVert) -
                                                                                                                                                     (eManager.EntityArmor[7] == null ? unarmedAttack.GetComponent <WeaponHandler>().WeaponOffsetHorz : eManager.EntityArmor[7].weaponPrefab.GetComponent <WeaponHandler>().WeaponOffsetHorz)), Quaternion.identity);
                                    newAttack.GetComponent <WeaponHandler>().parentObject = this.gameObject;
                                    if (newAttack.GetComponent <WeaponHandler>().NeedsRotate)
                                    {
                                        newAttack.transform.eulerAngles = new Vector3(0, 0, -135);
                                    }
                                    break;

                                case entityDirection.W:
                                    newAttack = Instantiate(eManager.EntityArmor[7] == null ? unarmedAttack : eManager.EntityArmor[7].weaponPrefab, ((Vector2)transform.position -
                                                                                                                                                     (eManager.EntityArmor[7] == null ? unarmedAttack.GetComponent <WeaponHandler>().WeaponOffsetHorz : eManager.EntityArmor[7].weaponPrefab.GetComponent <WeaponHandler>().WeaponOffsetHorz)), Quaternion.identity);
                                    newAttack.GetComponent <WeaponHandler>().parentObject = this.gameObject;
                                    break;

                                case entityDirection.NW:
                                    newAttack = Instantiate(eManager.EntityArmor[7] == null ? unarmedAttack : eManager.EntityArmor[7].weaponPrefab, ((Vector2)transform.position +
                                                                                                                                                     (eManager.EntityArmor[7] == null ? unarmedAttack.GetComponent <WeaponHandler>().WeaponOffsetVert : eManager.EntityArmor[7].weaponPrefab.GetComponent <WeaponHandler>().WeaponOffsetVert) -
                                                                                                                                                     (eManager.EntityArmor[7] == null ? unarmedAttack.GetComponent <WeaponHandler>().WeaponOffsetHorz : eManager.EntityArmor[7].weaponPrefab.GetComponent <WeaponHandler>().WeaponOffsetHorz)), Quaternion.identity);
                                    newAttack.GetComponent <WeaponHandler>().parentObject = this.gameObject;
                                    if (newAttack.GetComponent <WeaponHandler>().NeedsRotate)
                                    {
                                        newAttack.transform.eulerAngles = new Vector3(0, 0, 135);
                                    }
                                    break;

                                default:
                                    break;
                                }
                            }
                            else
                            {
                                eManager.ThrowItem(eManager.EntityArmor[7] == null ? unarmedAttack : eManager.EntityArmor[7].weaponPrefab, CurDirection);
                            }
                        }
                    }
                    //NPC Movement
                    else
                    {
                        if (agroObj == null && Vector2.Distance(GameObject.Find("objPlayer").transform.position, transform.position) < 1.5f || isSleeping && Vector2.Distance(GameObject.Find("objPlayer").transform.position, transform.position) < 1.5f)
                        {
                            agroObj    = GameObject.Find("objPlayer").transform;
                            isSleeping = false;
                            EndTurn();
                            return;
                        }
                        if (isSleeping)
                        {
                            EndTurn();
                            return;
                        }
                        if (agroObj != null)
                        {
                            PathRequestManager.RequestPath(transform.position, agroObj.position, OnPathFound);
                        }

                        //aDebug.Log(path.Length);
                        if (path.Length == 1 || agroObj != null && Vector2.Distance(transform.position, agroObj.position) <= attackRange && GlobalFunc.HasLineOfSight(this.gameObject, agroObj.gameObject, attackRange, GlobalFunc.entityDirectionToVector2(curDir)))
                        {
                            if (!isMoving && canMove)
                            {
                                canMove = false;
                                curDir  = GlobalFunc.GetDirection(path[0] - curPos);
                                Debug.Log("ATTACK!");
                                if (!unarmedAttack.GetComponent <WeaponHandler>().IsThrown)
                                {
                                    GameObject newAttack;

                                    switch (curDir)
                                    {
                                    case entityDirection.N:
                                        newAttack = Instantiate(unarmedAttack, ((Vector2)transform.position + unarmedAttack.GetComponent <WeaponHandler>().WeaponOffsetVert), Quaternion.identity);
                                        newAttack.GetComponent <WeaponHandler>().parentObject = this.gameObject;
                                        break;

                                    case entityDirection.E:
                                        newAttack = Instantiate(unarmedAttack, ((Vector2)transform.position + unarmedAttack.GetComponent <WeaponHandler>().WeaponOffsetHorz), Quaternion.identity);
                                        newAttack.GetComponent <WeaponHandler>().parentObject = this.gameObject;
                                        break;

                                    case entityDirection.S:
                                        newAttack = Instantiate(unarmedAttack, ((Vector2)transform.position - unarmedAttack.GetComponent <WeaponHandler>().WeaponOffsetVert), Quaternion.identity);
                                        newAttack.GetComponent <WeaponHandler>().parentObject = this.gameObject;
                                        break;

                                    case entityDirection.W:
                                        newAttack = Instantiate(unarmedAttack, ((Vector2)transform.position - unarmedAttack.GetComponent <WeaponHandler>().WeaponOffsetHorz), Quaternion.identity);
                                        newAttack.GetComponent <WeaponHandler>().parentObject = this.gameObject;
                                        break;

                                    default:
                                        break;
                                    }
                                }
                                else
                                {
                                    eManager.ThrowItem(unarmedAttack, curDir);
                                }
                            }
                            return;
                        }
                        else if (path.Length != 0)
                        {
                            curDir = GlobalFunc.GetDirection(path[0] - curPos);
                            MoveTargetPos(path[0] - curPos);
                        }
                        else
                        {
                            curDir = GlobalFunc.getRandDirection();
                            MoveTargetPos(GlobalFunc.entityDirectionToVector2(curDir));
                            isMoving = true;
                        }
                    }
                }
            }
        }
    }