Ejemplo n.º 1
0
    private void RandomWalk()
    {
        int direction = Random.Range(0, 4);

        MoveScripts.Direction nextDirection = (MoveScripts.Direction)direction;
        move.NPCmove(nextDirection);
    }
Ejemplo n.º 2
0
 public void NPCmove(MoveScripts.Direction _direction)
 {
     /*
      * centerPosition = new Vector3(transform.position.x + 0.5f, transform.position.y - 0.5f, transform.position.z);
      * SetFacingDirectionLogic(_direction);
      * input = MoveScripts.GetVector2FromDirection(_direction);
      * checkPoint = new Vector2(centerPosition.x+input.x, centerPosition.y+input.y);
      * hit = Physics2D.OverlapArea(checkPoint,checkPoint);
      * moveDetection.StartDetection(hits, lookDirection);
      *
      * Debug.Log("Got Here!");
      * //MoveScripts.CheckForTag(this.gameObject, hit, "Player")
      * if (moveDetection.CanPhysicallyMove())
      * {
      *  Debug.Log("Got Here! 2");
      *
      * }
      */
     SetFacingDirectionLogic(_direction);
     input = MoveScripts.GetVector2FromDirection(_direction);
     if (CanMoveInDirection(_direction))
     {
         moveSpeedCurrent = moveSpeed / 2;
         SetFacingDirection(input);
         StartCoroutine(move(transform));
     }
 }
Ejemplo n.º 3
0
        public int getDirectionStartIndex(MoveScripts.Direction direction)
        {
            int directionValue = 0;

            if (fourDirectional)
            {
                switch (direction)
                {
                case MoveScripts.Direction.North: directionValue = 1; break;

                case MoveScripts.Direction.South: directionValue = 0; break;

                case MoveScripts.Direction.East: directionValue = 2; break;

                case MoveScripts.Direction.West: directionValue = 3; break;
                }
            }
            else if (twoDirectional)
            {
                switch (direction)
                {
                case MoveScripts.Direction.North: directionValue = 1; break;

                case MoveScripts.Direction.South: directionValue = 0; break;

                case MoveScripts.Direction.East: directionValue = 0; break;

                case MoveScripts.Direction.West: directionValue = 1; break;
                }
            }

            return(directionValue * spritesPerDirection);
        }
Ejemplo n.º 4
0
    public int GetAnimationIndex(string type, MoveScripts.Direction direction, float time)
    {
        Animation animation = GetAnimation(type);
        int       result    = animation.getDirectionStartIndex(direction);
        float     modulo    = animation.getModulo(time);

        result += (int)(modulo / animation.iterateTime);

        return(result);
    }
Ejemplo n.º 5
0
    public bool CanMoveInDirection(MoveScripts.Direction _direction)
    {
        Vector2 _input = MoveScripts.GetVector2FromDirection(_direction);

        checkPoint = new Vector2(centerPosition.x + _input.x, centerPosition.y + _input.y);
        hits       = Physics2D.OverlapAreaAll(checkPoint, checkPoint);
        moveDetection.StartDetection(hits, _direction);
        moveDetection.DEBUG_PrintColliders();
        if (moveDetection.CanPhysicallyMove())
        {
            Debug.Log("Successful Move Opportunity");
            return(true);
        }
        else
        {
            Debug.Log("Blocked Opportunity");
            return(false);
        }
    }
Ejemplo n.º 6
0
    public void StartDetection(Collider2D[] hit, MoveScripts.Direction direction)
    {
        inGrass    = false;
        inDoor     = false;
        inShop     = false;
        inCutscene = false;

        moveDirection = direction;
        colliderInfos = new List <ColliderInfo>();

        foreach (Collider2D c in hit)
        {
            colliderInfos.Add(new ColliderInfo(c.gameObject));
        }
        foreach (ColliderInfo ci in colliderInfos)
        {
            switch (ci.tag)
            {
            default: break;

            case "ShopKeeper":
                inShop     = true;
                shopObject = ci.gameObject;
                break;

            case "Grass":
                inGrass     = true;
                grassObject = ci.gameObject;
                break;

            case "Door":
                inDoor     = true;
                doorObject = ci.gameObject;
                break;

            case "Cutscene":
                inCutscene     = true;
                cutsceneObject = ci.gameObject;
                break;
            }
        }
    }
Ejemplo n.º 7
0
 public void NewOverworldAt(string location, Vector3 position, MoveScripts.Direction direction, bool moving = false, bool openState = true)
 {
     loadEntrance  = true;
     loadPosition  = position;
     loadDirection = direction;
     loadMoving    = moving;
     if (sr.playerLogic != null)
     {
         loadAnimTime = sr.playerLogic.move.animTime;
     }
     else
     {
         loadAnimTime = 0f;
     }
     if (openState)
     {
         sr.canvasCollection.OpenState(CanvasCollection.UIState.SceneSwitch);
     }
     Debug.Log("Loading Scene: " + location);
     LoadNextScene(location);
 }
Ejemplo n.º 8
0
 public void SetFacingDirectionLogic(MoveScripts.Direction newDirection)
 {
     lookDirection = newDirection;
     SetFacingDirection(MoveScripts.GetVector2FromDirection(lookDirection));
 }
Ejemplo n.º 9
0
    public void Update()
    {
        centerPosition = new Vector3(transform.position.x + 0.5f, transform.position.y - 0.5f, transform.position.z);
        switch (logicType)
        {
        default: break;

        case LogicType.Player:
            if (!isMoving)
            {
                if (playerInputAccepted)
                {
                    thisDirectInput = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
                    input           = MoveScripts.DigitizeInput(thisDirectInput, lastDirectInput, input);
                    lastDirectInput = thisDirectInput;
                }

                animMoving = false;

                if (input != Vector2.zero && ableToMove)
                {
                    factor = 1f;
                    last   = input;
                    Vector3 checkPoint1 = new Vector2(centerPosition.x + input.x + 0.25f, centerPosition.y + input.y + 0.25f);
                    Vector3 checkPoint2 = new Vector2(centerPosition.x + input.x - 0.25f, centerPosition.y + input.y - 0.25f);
                    lookDirection = MoveScripts.GetDirectionFromVector2(input);
                    hits          = Physics2D.OverlapAreaAll(checkPoint1, checkPoint2);

                    moveDetection.StartDetection(hits, lookDirection);

                    if (moveDetection.CanPhysicallyMove())
                    {
                        bool cancelMove = false;
                        if (moveDetection.inCutscene)
                        {
                            sr.battleSetup.StartCutscene(new PackedCutscene(moveDetection.cutsceneObject.GetComponent <Cutscene>()));
                        }
                        if (moveDetection.inDoor)
                        {
                            if (moveDetection.doorObject.GetComponent <DoorToLocation>().GetTargetScene() != null)
                            {
                                if (moveDetection.doorObject.GetComponent <DoorToLocation>().fadeOutOnTransition)
                                {
                                    sr.canvasCollection.OpenState(CanvasCollection.UIState.SceneSwitch);
                                }
                            }
                            else
                            {
                                cancelMove = true;
                            }
                        }
                        SetFacingDirection(input);

                        if (!cancelMove)
                        {
                            if (sr.battleSetup.runButtonHeld)
                            {
                                moveSpeedCurrent = moveSpeed * moveSpeedModifier;
                            }
                            else
                            {
                                moveSpeedCurrent = moveSpeed;
                            }
                            StartCoroutine(move(transform));
                        }
                    }
                }
                SetWalkAnimation();
            }
            break;

        case LogicType.Trainer:
            if (!isMoving)
            {
                input = MoveScripts.GetVector2FromDirection(lookDirection);

                animMoving = false;
                last       = input;

                if (input != Vector2.zero && ableToMove)
                {
                    factor = 1f;

                    checkPoint    = new Vector2(centerPosition.x + input.x, centerPosition.y + input.y);
                    lookDirection = MoveScripts.GetDirectionFromVector2(input);
                    hits          = Physics2D.OverlapAreaAll(checkPoint, checkPoint);
                    moveDetection.StartDetection(hits, lookDirection);

                    if (moveDetection.CanPhysicallyMove())
                    {
                        SetFacingDirection(input);
                        StartCoroutine(move(transform));
                    }
                    else
                    {
                        npcMove = false;
                        tLogic.sr.battleSetup.AdvanceCutscene();
                    }
                }
                SetWalkAnimation();
            }
            break;

        case LogicType.NPC:
            if (!isMoving)
            {
                input = MoveScripts.GetVector2FromDirection(lookDirection);

                animMoving = false;
                last       = input;
                if (input != Vector2.zero && npcMove)
                {
                    factor = 1f;

                    checkPoint    = new Vector2(centerPosition.x + input.x, centerPosition.y + input.y);
                    lookDirection = MoveScripts.GetDirectionFromVector2(input);
                    hit           = Physics2D.OverlapArea(checkPoint, checkPoint);
                    moveDetection.StartDetection(hits, lookDirection);

                    //MoveScripts.CheckForTag(this.gameObject, hit, "Player")
                    if (moveDetection.CanPhysicallyMove())
                    {
                        SetFacingDirection(input);
                        StartCoroutine(move(transform));
                    }
                }
                SetWalkAnimation();
            }
            break;
        }
    }
Ejemplo n.º 10
0
 void SetMoveLook(MoveScripts.Direction direction)
 {
     move.SetFacingDirectionLogic(direction);
 }