void HandleInpput()
    {
        if (Input.GetKeyDown(KeyCode.Q))
        {
            KeyQ.Execute(anim, true);
            oldCommands.Add(KeyQ);
        }
        else if (Input.GetKeyDown(KeyCode.W))
        {
            KeyW.Execute(anim, true);
            oldCommands.Add(KeyW);
        }
        else if (Input.GetKeyDown(KeyCode.E))
        {
            KeyE.Execute(anim, true);
            oldCommands.Add(KeyE);
        }
        else if (Input.GetKeyDown(KeyCode.UpArrow))
        {
            upArrow.Execute(anim, true);
            oldCommands.Add(upArrow);
        }

        if (Input.GetKeyDown(KeyCode.Space))
        {
            shouldStartReply = true;
        }

        if (Input.GetKeyDown(KeyCode.Z))
        {
            UndoLastCommand();
        }
    }
    void HandleInput()
    {
        //TODO: Break into chunks of actions that can be performed at the same time, ie movmenet actions, attack actions, etc
        if (Input.GetKeyDown(KeyCode.W))
        {
            KeyW.Execute(Character, KeyW);
        }
        if (Input.GetKeyDown(KeyCode.A))
        {
            KeyA.Execute(Character, KeyA);
        }
        if (Input.GetKeyDown(KeyCode.S))
        {
            KeyS.Execute(Character, KeyS);
        }
        if (Input.GetKeyDown(KeyCode.D))
        {
            KeyD.Execute(Character, KeyD);
        }
        //TODO: Ensure the following cant be pressed at the same time as an action
        else if (Input.GetKeyDown(KeyCode.R))
        {
            KeyR.Execute(Character, KeyR);
        }
        else if (Input.GetKeyDown(KeyCode.Z))
        {
            KeyZ.Execute(Character, KeyZ);
        }
        else
        {
            //No keys pushed
            //new IdleCommand().Execute();
        }

        /*else if (Input.GetKeyDown(KeyCode.B))
         * {
         *      KeyB.Execute(KeyB);
         * }*/
    }