Ejemplo n.º 1
0
 private void OnEnable()
 {
     UpdateHandlePos();
     _instance          = target as IsoTransform;
     _instance.Position = _instance.Position;
     _instanceFields    = ExposeProperties.GetProperties(_instance);
     if (_instance == null)
     {
         return;
     }
     _instance.GetComponent <Transform>().hideFlags = HideFlags.HideInInspector;           //hides Transform component
     UnityEditorInternal.ComponentUtility.MoveComponentUp(_instance);
 }
Ejemplo n.º 2
0
    public IEnumerator MoveClick(GameObject clickedGo)
    {
        calcComplete = false;
        Debug.Log("Coroutine started.");
        Debug.Log("Clicked GO: " + clickedGo.name);
        List <GridInfo> newList = gameHandler.activeChar.movable;
        GridInfo        c       = newList.Find(x => x.go == clickedGo);

        activePlayerIsoTransform = gameHandler.activeChar.go.GetComponent <IsoTransform>();
        playerAnim      = gameHandler.activeChar.go.GetComponent <Animator>();
        originalCharPos = activePlayerIsoTransform.Position;
        origin          = Grid.Find(x => x.isoPos.x == originalCharPos.x && x.isoPos.z == originalCharPos.z);
        lastClicked     = clickedGo;
        //for (int i = 0; i < c.path.Count; i++) Debug.Log("The " + i + " element of cPath is " + c.path[i]);
        //List<GridInfo> alts = bList.FindAll(x => x.go == c.go && x.path.Count == c.path.Count);
        //for(int n = 0; n < alts.Count; n++)
        //{
        //    Debug.Log("The " + n + " altPath has the following directions:");
        //    for (int i = 0; i < alts[n].path.Count; i++) Debug.Log("The " + i + " element of the " + n + " Path is " + alts[n].path[i]);
        //}



        foreach (GridInfo g in newList)
        {
            if (g != c)
            {
                g.go.SetActive(false);
            }
        }
        Vector3 v        = new Vector3(0, 0, 0);
        Vector3 newPos   = new Vector3(0, 0, 0);
        Vector3 roundPos = new Vector3(0, 0, 0);

        //float startTime = 0;

        playerAnim.SetBool("isWalking", true);
        for (int i = 0; i < c.path.Count; i++)
        {
            Debug.Log(c.path[i]);
            switch (c.path[i])
            {
            case 3:
                playerAnim.SetBool("directionUp", true);
                playerAnim.SetBool("directionLeft", true);
                v = new Vector3(0, 0, 1);
                //Debug.Log("West");
                break;

            case 0:
                playerAnim.SetBool("directionUp", true);
                playerAnim.SetBool("directionLeft", false);
                v = new Vector3(1, 0, 0);
                //Debug.Log("North");
                break;

            case 1:
                playerAnim.SetBool("directionUp", false);
                playerAnim.SetBool("directionLeft", false);
                v = new Vector3(0, 0, -1);
                //Debug.Log("East");
                break;

            case 2:
                playerAnim.SetBool("directionUp", false);
                playerAnim.SetBool("directionLeft", true);
                v = new Vector3(-1, 0, 0);
                //Debug.Log("South");
                break;
            }
            if (i >= 1 && c.path[i - 1] != c.path[i])
            {
                yield return(new WaitForSeconds(0.3f));
            }
            if (i == c.path.Count - 1)
            {
                c.go.GetComponent <SpriteRenderer>().enabled = false;
            }
            //startTime = Time.time;
            //Debug.Log(newPos);
            if (c.pathDif[i] == 0)
            {
                newPos = activePlayerIsoTransform.Position + v;
                while (roundPos != newPos)
                {
                    activePlayerIsoTransform.Translate(v * walkSpeed);
                    roundPos = new Vector3(Mathf.Round(activePlayerIsoTransform.Position.x * 100) / 100, activePlayerIsoTransform.Position.y, Mathf.Round(activePlayerIsoTransform.Position.z * 100) / 100);
                    yield return(null);
                }
                activePlayerIsoTransform.Position = newPos;
                //yield return new WaitUntil(() => activePlayer.GetComponent<IsoTransform>().Position == newPos);
            }
            else
            {
                newPos = activePlayerIsoTransform.Position + v * 0.4f;
                while (roundPos != newPos)
                {
                    activePlayerIsoTransform.Translate(v * walkSpeed);
                    roundPos = new Vector3(Mathf.Round(activePlayerIsoTransform.Position.x * 100) / 100, activePlayerIsoTransform.Position.y, Mathf.Round(activePlayerIsoTransform.Position.z * 100) / 100);
                    yield return(null);
                }
                activePlayerIsoTransform.Position = newPos;
                newPos = activePlayerIsoTransform.Position + v * 0.2f + new Vector3(0, c.pathDif[i], 0);
                while (roundPos != newPos)
                {
                    activePlayerIsoTransform.Translate((v * 0.2f + new Vector3(0, c.pathDif[i], 0)) * walkSpeed);
                    roundPos = new Vector3(Mathf.Round(activePlayerIsoTransform.Position.x * 100) / 100, Mathf.Round(activePlayerIsoTransform.Position.y * 100) / 100, Mathf.Round(activePlayerIsoTransform.Position.z * 100) / 100);
                    yield return(null);
                }
                activePlayerIsoTransform.GetComponent <IsoTransform>().Position = newPos;
                newPos = activePlayerIsoTransform.Position + v * 0.4f;
                while (roundPos != newPos)
                {
                    activePlayerIsoTransform.Translate(v * walkSpeed);
                    roundPos = new Vector3(Mathf.Round(activePlayerIsoTransform.Position.x * 100) / 100, activePlayerIsoTransform.Position.y, Mathf.Round(activePlayerIsoTransform.Position.z * 100) / 100);
                    yield return(null);
                }
                activePlayerIsoTransform.Position = newPos;
            }
            //Debug.Log("Finished this partial movement.");
        }
        playerAnim.SetBool("isWalking", false);
        c.go.GetComponent <SpriteRenderer>().enabled = true;
        c.go.SetActive(false);
        moveComplete               = true;
        gameHandler.canBeUndone    = true;
        gameHandler.canBeCancelled = false;
        gameHandler.actionButton[0].GetComponent <TextMeshProUGUI>().text = "undo";
        gameHandler.ButtonStateCheck();
        yield return(new WaitUntil(() => gameHandler.movementIsPerm));

        origin.pop = 0;
        var postPos = Grid.Find(x => x.go == clickedGo);

        postPos.pop  = (gg.Contains(gameHandler.activeChar.go)) ? (sbyte)1 : (sbyte)-1;
        calcComplete = true;
    }