Ejemplo n.º 1
0
    public static void update()
    {
        shadow.update();
        text.update();
        characterPortrait.update();

        if (dialogs.Count > 0 && CKeyboard.firstPress(CKeyboard.ENTER))
        {
            if (dialogs[currentDialog].hasNextDialog())
            {
                text.setText(dialogs[currentDialog].goToNextDialog());
            }
            else if (currentDialog < dialogs.Count - 1)
            {
                currentDialog++;

                if (dialogs[currentDialog].hasPortrait())
                {
                    if (dialogs[currentDialog - 1].getPortrait() != dialogs[currentDialog].getPortrait())
                    {
                        characterPortrait.setFrames(Resources.LoadAll <Sprite>(dialogs[currentDialog].getPortrait()));
                        //characterPortrait.gotoAndPlay(1);
                        //characterPortrait.proceedAnimation();
                        characterPortrait.setVisible(true);
                    }
                }
                else
                {
                    characterPortrait.setVisible(false);
                }

                text.setText(dialogs[currentDialog].getCurrentDialog());
            }
            else
            {
                dialogs.Clear();
                text.setText("");
                shadow.setVisible(false);
                text.setVisible(false);
                currentDialog = 0;

                characterPortrait.setVisible(false);
            }
        }
    }
Ejemplo n.º 2
0
    override public void update()
    {
        //Debug.Log ("test left : " + CKeyboard.pressed (CKeyboard.LEFT) + CKeyboard.pressed (CKeyboard.UP) + CKeyboard.pressed (CKeyboard.SPACE));
        //Debug.Log ("test right: " + CKeyboard.pressed (CKeyboard.RIGHT) + CKeyboard.pressed (CKeyboard.UP) + CKeyboard.pressed (CKeyboard.SPACE));

        // Guardar la posicion anterior del objeto.
        setOldYPosition();

        base.update();

        if (getState() == STATE_STAND)
        {
            // En stand no deberia pasar nunca que quede metido en una pared.
            // Si estamos en una pared, corregirnos.
            if (isWallLeft(getX(), getY()))
            {
                // Reposicionar el personaje contra la pared.
                setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX);
            }
            if (isWallRight(getX(), getY()))
            {
                // Reposicionar el personaje contra la pared.
                setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX);
            }


            // Si en el pixel de abajo del jugador no hay piso, caemos.
            if (!isFloor(getX(), getY() + 1))
            {
                setState(STATE_FALLING);
                return;
            }

            if (CKeyboard.firstPress(CKeyboard.SPACE))
            {
                setState(STATE_JUMPING);
                return;
            }

            if (CKeyboard.pressed(CKeyboard.KEY_A) && !isWallLeft(getX() - 1, getY()))
            {
                setState(STATE_WALKING);
                return;
            }

            if (CKeyboard.pressed(CKeyboard.KEY_D) && !isWallRight(getX() + 1, getY()))
            {
                setState(STATE_WALKING);
                return;
            }
        }
        else if (getState() == STATE_WALKING)
        {
            if (isWallLeft(getX(), getY()))
            {
                // Reposicionar el personaje contra la pared.
                setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX);
            }
            if (isWallRight(getX(), getY()))
            {
                // Reposicionar el personaje contra la pared.
                setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX);
            }

            if (CKeyboard.firstPress(CKeyboard.SPACE))
            {
                setState(STATE_JUMPING);
                return;
            }

            // Si en el pixel de abajo del jugador no hay piso, caemos.
            if (!isFloor(getX(), getY() + 1))
            {
                setState(STATE_FALLING);
                return;
            }

            if (!(CKeyboard.pressed(CKeyboard.KEY_A) || CKeyboard.pressed(CKeyboard.KEY_D)))
            {
                setState(STATE_STAND);
                return;
            }
            else
            {
                if (CKeyboard.pressed(CKeyboard.KEY_A))
                {
                    // Chequear pared a la izquierda.
                    // Si hay pared a la izquierda vamos a stand.
                    if (isWallLeft(getX(), getY()))
                    {
                        // Reposicionar el personaje contra la pared.
                        //setX((((int) getX ()/CTileMap.TILE_WIDTH)+1)*CTileMap.TILE_WIDTH);
                        setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX);

                        // Carlos version.
                        //setX (getX()+CTileMap.TILE_WIDTH/(getWidth()-1));

                        setState(STATE_STAND);
                        return;
                    }
                    else
                    {
                        // No hay pared, se puede mover.
                        setVelX(-400);
                        setFlip(true);
                    }
                }
                else
                {
                    // Chequear pared a la derecha.
                    // Si hay pared a la derecha vamos a stand.
                    if (isWallRight(getX(), getY()))
                    {
                        // Reposicionar el personaje contra la pared.
                        setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX);

                        setState(STATE_STAND);
                        return;
                    }
                    else
                    {
                        // No hay pared, se puede mover.
                        setVelX(400);
                        setFlip(false);
                    }
                }
            }
        }
        else if (getState() == STATE_JUMPING)
        {
            controlMoveHorizontal();

            if (isFloor(getX(), getY() + 1))
            {
                setY(mDownY * CTileMap.TILE_HEIGHT - getHeight());
                setState(STATE_STAND);
                return;
            }

            if (isRoof(getX(), getY() - 1))
            {
                setY(((mUpY + 1) * CTileMap.TILE_HEIGHT) - Y_OFFSET_BOUNDING_BOX);
                setVelY(0);
                setState(STATE_HIT_ROOF);
                return;
            }
        }
        else if (getState() == STATE_FALLING)
        {
            controlMoveHorizontal();

            if (isFloor(getX(), getY() + 1))
            {
                setY(mDownY * CTileMap.TILE_HEIGHT - getHeight());
                setState(STATE_STAND);
                return;
            }
        }
        else if (getState() == STATE_HIT_ROOF)
        {
            if (getTimeState() > 0.02f * 5.0f)
            {
                setState(STATE_FALLING);
                return;
            }
        }

        // Chequear el paso entre pantallas.
        controlRooms();
    }
Ejemplo n.º 3
0
    override public void update()
    {
        // Guardar la posicion anterior del objeto.
        setOldYPosition();

        base.update();

        if (getState() == STATE_STAND)
        {
            // En stand no deberia pasar nunca que quede metido en una pared.
            // Si estamos en una pared, corregirnos.
            if (isWallLeft(getX(), getY()))
            {
                // Reposicionar el personaje contra la pared.
                setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX);
            }
            if (isWallRight(getX(), getY()))
            {
                // Reposicionar el personaje contra la pared.
                setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX);
            }


            // Si en el pixel de abajo del jugador no hay piso, caemos.
            if (!isFloor(getX(), getY() + 1))
            {
                setState(STATE_FALLING);
                return;
            }

            if (CKeyboard.firstPress(CKeyboard.SPACE))
            {
                setState(STATE_JUMPING);
                return;
            }

            if (CKeyboard.pressed(CKeyboard.LEFT) && !isWallLeft(getX() - 1, getY()))
            {
                setState(STATE_WALKING);
                return;
            }

            if (CKeyboard.pressed(CKeyboard.RIGHT) && !isWallRight(getX() + 1, getY()))
            {
                setState(STATE_WALKING);
                return;
            }
            if (CKeyboard.firstPress(CKeyboard.LEFT_CTRL))
            {
                setState(STATE_ATTACKING);
                return;
            }
        }
        else if (getState() == STATE_WALKING)
        {
            if (isWallLeft(getX(), getY()))
            {
                // Reposicionar el personaje contra la pared.
                setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX);
            }
            if (isWallRight(getX(), getY()))
            {
                // Reposicionar el personaje contra la pared.
                setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX);
            }

            if (CKeyboard.firstPress(CKeyboard.SPACE))
            {
                setState(STATE_JUMPING);
                return;
            }
            if (CKeyboard.firstPress(CKeyboard.LEFT_CTRL))
            {
                setState(STATE_ATTACKING);
                return;
            }

            // Si en el pixel de abajo del jugador no hay piso, caemos.
            if (!isFloor(getX(), getY() + 1))
            {
                setState(STATE_FALLING);
                return;
            }

            if (!(CKeyboard.pressed(CKeyboard.LEFT) || CKeyboard.pressed(CKeyboard.RIGHT)))
            {
                setState(STATE_STAND);
                return;
            }
            else
            {
                if (CKeyboard.pressed(CKeyboard.LEFT))
                {
                    // Chequear pared a la izquierda.
                    // Si hay pared a la izquierda vamos a stand.
                    if (isWallLeft(getX(), getY()))
                    {
                        // Reposicionar el personaje contra la pared.
                        //setX((((int) getX ()/CTileMap.TILE_WIDTH)+1)*CTileMap.TILE_WIDTH);
                        setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX);

                        // Carlos version.
                        //setX (getX()+CTileMap.TILE_WIDTH/(getWidth()-1));

                        setState(STATE_STAND);
                        return;
                    }
                    else
                    {
                        // No hay pared, se puede mover.
                        setVelX(-400);
                        setFlip(true);
                    }
                }
                else
                {
                    // Chequear pared a la derecha.
                    // Si hay pared a la derecha vamos a stand.
                    if (isWallRight(getX(), getY()))
                    {
                        // Reposicionar el personaje contra la pared.
                        setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX);

                        setState(STATE_STAND);
                        return;
                    }
                    else
                    {
                        // No hay pared, se puede mover.
                        setVelX(400);
                        setFlip(false);
                    }
                }
            }
        }
        else if (getState() == STATE_JUMPING)
        {
            controlMoveHorizontal();

            if (isFloor(getX(), getY() + 1))
            {
                setY(mDownY * CTileMap.TILE_HEIGHT - getHeight());
                setState(STATE_POSITIONING);
                return;
            }

            if (isRoof(getX(), getY() - 1))
            {
                setY((mUpY + 1) * CTileMap.TILE_HEIGHT);
                setVelY(0);
                setState(STATE_FALLING);
                return;
            }
            if (CKeyboard.firstPress(CKeyboard.SPACE))
            {
                setState(STATE_SECOND_JUMP);
                return;
            }
            if (CKeyboard.firstPress(CKeyboard.LEFT_CTRL))
            {
                setState(STATE_AIR_ATTACK);
            }
            // NUEVO ESTADO



            if (isWallLeft(getX() - 1, getY()))
            {
                Debug.Log("PARED IZQ 1");
                // Reposicionar el personaje contra la pared.
                setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX);
                setState(STATE_STAND_WALL_LEFT);
                return;
            }
            if (isWallRight(getX() + 1, getY()))
            {
                Debug.Log("PARED DER 1");
                // Reposicionar el personaje contra la pared.
                setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX);
                setState(STATE_STAND_WALL_RIGHT);
                return;
            }
        }


        else if (getState() == STATE_FALLING)
        {
            controlMoveHorizontal();

            if (isFloor(getX(), getY() + 1))
            {
                setY(mDownY * CTileMap.TILE_HEIGHT - getHeight());
                setState(STATE_STAND);
                return;
            }
            // NUEVO ESTADO


            if (isWallLeft(getX() - 1, getY()))
            {
                Debug.Log("PARED IZQ");
                // Reposicionar el personaje contra la pared.
                setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX);
                setState(STATE_STAND_WALL_LEFT);
                return;
            }
            if (isWallRight(getX() + 1, getY()))
            {
                Debug.Log("PARED DER");
                // Reposicionar el personaje contra la pared.
                setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX);
                setState(STATE_STAND_WALL_RIGHT);
                return;
            }
        }
        else if (getState() == STATE_STAND_WALL_LEFT)
        {
            if (isRoof(getX(), getY() - 1))
            {
                //setY((mUpY + 1) * CTileMap.TILE_HEIGHT);
                setY((mUpY + 1));
            }


            /*if (CKeyboard.firstPress(CKeyboard.SPACE))
             * {
             *  setState(STATE_JUMPING);
             *  return;
             * }
             *
             * if (CKeyboard.pressed(CKeyboard.LEFT) && (  !isWallLeft(getX() - 1, getY()) && (!isFloor(getX(), getY() + 1))))
             * {
             *  setState(STATE_FALLING);
             *  return;
             * }
             *
             * if (CKeyboard.pressed(CKeyboard.RIGHT) && ( !isWallRight(getX() + 1, getY()) && (!isFloor(getX(), getY() + 1))) )
             * {
             *  setState(STATE_FALLING);
             *  return;
             * }*/

            // En stand no deberia pasar nunca que quede metido en una pared.
            // Si estamos en una pared, corregirnos.
            if (isWallLeft(getX(), getY()))
            {
                // Reposicionar el personaje contra la pared.
                setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX);
            }
            if (isWallRight(getX(), getY()))
            {
                // Reposicionar el personaje contra la pared.
                setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX);
            }


            // Si en el pixel de abajo del jugador no hay piso, caemos.

            /*if (!isFloor (getX(), getY()+1))
             *          {
             *                  setState (STATE_FALLING);
             *                  return;
             *          }*/

            if (CKeyboard.firstPress(CKeyboard.SPACE))
            {
                setState(STATE_JUMPING_WALL_TO_RIGHT);
                return;
            }

            /*if (CKeyboard.pressed(CKeyboard.LEFT) && !isWallLeft(getX() - 1, getY()))
             * {
             *  //setState (STATE_WALKING);
             *  setState(STATE_FALLING_WALL_TO_LEFT);
             *
             *  return;
             * }*/

            if (CKeyboard.pressed(CKeyboard.RIGHT) && !isWallRight(getX() + 1, getY()))
            {
                //setState (STATE_WALKING);
                setState(STATE_FALLING_WALL_TO_RIGHT);
                return;
            }
        }

        else if (getState() == STATE_JUMPING_WALL_TO_RIGHT)
        {
            controlMoveHorizontal();

            if (isFloor(getX(), getY() + 1))
            {
                setY(mDownY * CTileMap.TILE_HEIGHT - getHeight());
                setState(STATE_STAND);
                return;
            }

            if (isRoof(getX(), getY() - 1))
            {
                setY((mUpY + 1) * CTileMap.TILE_HEIGHT);
                setVelY(0);
                setState(STATE_FALLING_WALL_TO_RIGHT);
                return;
            }

            if (isWallRight(getX() + 1, getY()))
            {
                Debug.Log("PARED DER 1");
                // Reposicionar el personaje contra la pared.
                setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX);
                setState(STATE_STAND_WALL_RIGHT);
                return;
            }
        }

        else if (getState() == STATE_FALLING_WALL_TO_RIGHT)
        {
            controlMoveHorizontal();

            if (isFloor(getX(), getY() + 1))
            {
                setY(mDownY * CTileMap.TILE_HEIGHT - getHeight());
                setState(STATE_STAND);
                return;
            }

            if (isWallRight(getX() + 1, getY()))
            {
                Debug.Log("PARED DER 1");
                // Reposicionar el personaje contra la pared.
                setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX);
                setState(STATE_STAND_WALL_RIGHT);
                return;
            }
        }



        else if (getState() == STATE_STAND_WALL_RIGHT)
        {
            if (isRoof(getX(), getY() - 1))
            {
                //setY((mUpY + 1) * CTileMap.TILE_HEIGHT);
                setY((mUpY + 1));
            }



            /*if (CKeyboard.firstPress(CKeyboard.SPACE))
             * {
             *  setState(STATE_JUMPING);
             *  return;
             * }
             *
             * if (CKeyboard.pressed(CKeyboard.LEFT) && (  !isWallLeft(getX() - 1, getY()) && (!isFloor(getX(), getY() + 1))))
             * {
             *  setState(STATE_FALLING);
             *  return;
             * }
             *
             * if (CKeyboard.pressed(CKeyboard.RIGHT) && ( !isWallRight(getX() + 1, getY()) && (!isFloor(getX(), getY() + 1))) )
             * {
             *  setState(STATE_FALLING);
             *  return;
             * }*/

            // En stand no deberia pasar nunca que quede metido en una pared.
            // Si estamos en una pared, corregirnos.
            if (isWallLeft(getX(), getY()))
            {
                // Reposicionar el personaje contra la pared.
                setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX);
            }
            if (isWallRight(getX(), getY()))
            {
                // Reposicionar el personaje contra la pared.
                setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX);
            }


            // Si en el pixel de abajo del jugador no hay piso, caemos.

            /*if (!isFloor (getX(), getY()+1))
             *          {
             *                  setState (STATE_FALLING);
             *                  return;
             *          }*/

            if (CKeyboard.firstPress(CKeyboard.SPACE))
            {
                setState(STATE_JUMPING_WALL_TO_LEFT);
                return;
            }

            if (CKeyboard.pressed(CKeyboard.LEFT) && !isWallLeft(getX() - 1, getY()))
            {
                //setState (STATE_WALKING);
                setState(STATE_FALLING_WALL_TO_LEFT);

                return;
            }

            /*if (CKeyboard.pressed(CKeyboard.RIGHT) && !isWallRight(getX() + 1, getY()))
             * {
             *  //setState (STATE_WALKING);
             *  setState(STATE_FALLING_WALL_TO_RIGHT);
             *  return;
             * }*/
        }

        else if (getState() == STATE_JUMPING_WALL_TO_LEFT)
        {
            controlMoveHorizontal();

            if (isFloor(getX(), getY() + 1))
            {
                setY(mDownY * CTileMap.TILE_HEIGHT - getHeight());
                setState(STATE_STAND);
                return;
            }

            if (isRoof(getX(), getY() - 1))
            {
                setY((mUpY + 1) * CTileMap.TILE_HEIGHT);
                setVelY(0);
                setState(STATE_FALLING_WALL_TO_LEFT);
                return;
            }

            if (isWallLeft(getX() - 1, getY()))
            {
                Debug.Log("PARED izq 1");
                // Reposicionar el personaje contra la pared.
                //setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX);
                setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX);
                setState(STATE_STAND_WALL_LEFT);
                return;
            }
        }

        else if (getState() == STATE_FALLING_WALL_TO_LEFT)
        {
            controlMoveHorizontal();

            if (isFloor(getX(), getY() + 1))
            {
                setY(mDownY * CTileMap.TILE_HEIGHT - getHeight());
                setState(STATE_STAND);
                return;
            }

            if (isWallLeft(getX() - 1, getY()))
            {
                Debug.Log("PARED IZQ 1");
                // Reposicionar el personaje contra la pared.
                setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX);
                setState(STATE_STAND_WALL_LEFT);
                return;
            }
        }
        else if (getState() == STATE_STAND_WALL)
        {
            if (CKeyboard.firstPress(CKeyboard.SPACE))
            {
                setState(STATE_JUMPING);
                return;
            }

            if (CKeyboard.pressed(CKeyboard.LEFT) && !isWallLeft(getX() - 1, getY()))
            {
                setState(STATE_FALLING);
                return;
            }

            if (CKeyboard.pressed(CKeyboard.RIGHT) && !isWallRight(getX() + 1, getY()))
            {
                setState(STATE_FALLING);
                return;
            }
        }
        else if (getState() == STATE_POSITIONING)
        {
            controlMoveHorizontal();
            if (this.isEnded())
            {
                setState(STATE_STAND);
            }
            Debug.Log("state positioning");
        }
        else if (getState() == STATE_ATTACKING)
        {
            controlMoveHorizontal();
            if (CKeyboard.pressed(CKeyboard.LEFT))
            {
                // Chequear pared a la izquierda.
                // Si hay pared a la izquierda vamos a stand.
                if (isWallLeft(getX(), getY()))
                {
                    // Reposicionar el personaje contra la pared.
                    //setX((((int) getX ()/CTileMap.TILE_WIDTH)+1)*CTileMap.TILE_WIDTH);
                    setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX);

                    // Carlos version.
                    //setX (getX()+CTileMap.TILE_WIDTH/(getWidth()-1));

                    setState(STATE_STAND);
                    return;
                }
                else
                {
                    // No hay pared, se puede mover.
                    setVelX(-800);
                    setFlip(true);
                }
            }
            else
            {
                // Chequear pared a la derecha.
                // Si hay pared a la derecha vamos a stand.
                if (isWallRight(getX(), getY()))
                {
                    // Reposicionar el personaje contra la pared.
                    setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX);

                    setState(STATE_STAND);
                    return;
                }
                else
                {
                    // No hay pared, se puede mover.
                    setVelX(800);
                    setFlip(false);
                }
            }
            if (this.isEnded())
            {
                setState(STATE_STAND);
            }
        }
        else if (getState() == STATE_SECOND_JUMP)
        {
            controlMoveHorizontal();
            if (this.isEnded())
            {
                setState(STATE_FALLING);
            }
            else if (CKeyboard.pressed(CKeyboard.LEFT_CTRL))
            {
                setState(STATE_SECOND_JUMP_ATTACK);
            }

            /*if (CKeyboard.firstPress(CKeyboard.LEFT_CTRL))
             * {
             *  setState(STATE_AIR_ATTACK);
             * }*/
        }
        else if (getState() == STATE_AIR_ATTACK)
        {
            controlMoveHorizontal();
            if (isFloor(getX(), getY() + 1))
            {
                this.stopMove();
                setState(STATE_WALKING);
            }
            if (this.isEnded())
            {
                setState(STATE_FALLING);
            }
            else
            {
                /*if (CKeyboard.pressed(CKeyboard.LEFT))
                 * {
                 *  setVelX(-800);
                 *  setFlip(true);
                 * }*/
                if (CKeyboard.pressed(CKeyboard.RIGHT))
                {
                    setVelX(800);
                    setFlip(false);
                }
            }
        }
        else if (getState() == STATE_SECOND_JUMP_ATTACK)
        {
            controlMoveHorizontal();
            if (isFloor(getX(), getY() + 1))
            {
                setState(STATE_STAND);
            }

            /*if (CKeyboard.firstPress(CKeyboard.LEFT_CTRL))
             * {
             *  setState(STATE_AIR_ATTACK);
             * }*/
        }
        // Chequear el paso entre pantallas.
        controlRooms();

        /*CGameObject item = CItemManager.inst().collidesAndy(this);
         * if (item != null)
         * {
         *  item.hit();
         * }*/
    }
Ejemplo n.º 4
0
    override public void update()
    {
        mAngle += mIncAngle;

        base.update();

        if (CKeyboard.pressed(CKeyboard.KEY_A))
        {
            turnLeft(ROTATION_SPEED);
        }
        if (CKeyboard.pressed(CKeyboard.KEY_D))
        {
            turnRight(ROTATION_SPEED);
        }

        if (CKeyboard.pressed(CKeyboard.KEY_W) /*|| CMouse.pressed()*/)
        {
            float angRad = CMath.degToRad(getRotation());
            setAccelX(500.0f * Mathf.Cos(angRad));
            setAccelY(500.0f * Mathf.Sin(angRad));

            mFire.setVisible(true);
        }
        else
        {
            setAccelX(0.0f);
            setAccelY(0.0f);

            mFire.setVisible(false);
        }

        if (CKeyboard.firstPress(CKeyboard.SPACE) /*|| CMouse.firstPress()*/)
        {
            CPlayerBullet bullet = new CPlayerBullet();

            float angRad = CMath.degToRad(getRotation());
            bullet.setXY(getX() + Mathf.Cos(angRad) * RADIUS, getY() + Mathf.Sin(angRad) * RADIUS);
            bullet.setVelXY(BULLET_SPEED * Mathf.Cos(angRad), BULLET_SPEED * Mathf.Sin(angRad));
            CBulletManager.inst().add(bullet);
        }

        // Friccion.
        setFriction(0.99f);

        float xMouse = CMouse.getPos().x;
        float yMouse = CMouse.getPos().y;

        //Debug.Log ("Mouse: " + xMouse + "," + yMouse);

        // La nave mira al mouse.
        //lookAt(xMouse, yMouse);

        // Bullet Hell.
        if (CKeyboard.pressed(CKeyboard.KEY_G))
        {
            float         angRad2 = CMath.degToRad(mAngle);
            CPlayerBullet bullet2 = new CPlayerBullet();
            bullet2.setXY(getX() + Mathf.Cos(angRad2) * 30.0f, getY() + Mathf.Sin(angRad2) * 30.0f);
            bullet2.setVelXY(400.0f * Mathf.Cos(angRad2), 400.0f * Mathf.Sin(angRad2));
            CBulletManager.inst().add(bullet2);
        }

        // Posicionar el fuego atras de la nave.
        float angFire = CMath.degToRad(getRotation() + 180);

        mFire.setXY(getX() + Mathf.Cos(angFire) * 26.0f, getY() + Mathf.Sin(angFire) * 26.0f);
        mFire.setRotation(getRotation());
        mFire.update();

        CVector a = new CVector(10, 20);
        CVector b = new CVector(-10, -20);
    }
Ejemplo n.º 5
0
    override public void update()
    {
        int tileWidth  = CGame.inst().getMap().getTileWidth();
        int tileHeight = CGame.inst().getMap().getTileHeight();

        //Debug.Log ("test left : " + CKeyboard.pressed (CKeyboard.LEFT) + CKeyboard.pressed (CKeyboard.UP) + CKeyboard.pressed (CKeyboard.SPACE));
        //Debug.Log ("test right: " + CKeyboard.pressed (CKeyboard.RIGHT) + CKeyboard.pressed (CKeyboard.UP) + CKeyboard.pressed (CKeyboard.SPACE));

        // Guardar la posicion anterior del objeto.
        setOldYPosition();

        base.update();

        if (CKeyboard.firstPress(KeyCode.E))
        {
            this.selectNextPower();
        }
        else if (CKeyboard.firstPress(KeyCode.Q))
        {
            this.selectPreviousPower();
        }

        if (getState() == STATE_STAND)
        {
            // En stand no deberia pasar nunca que quede metido en una pared.
            // Si estamos en una pared, corregirnos.
            if (isWallLeft(getX(), getY()))
            {
                // Reposicionar el personaje contra la pared.
                setX(((mLeftX + 1) * tileWidth) - this.getLeftOffsetBoundingBox());
            }
            if (isWallRight(getX(), getY()))
            {
                // Reposicionar el personaje contra la pared.
                setX((((mRightX) * tileWidth) - getWidth()) + this.getRightOffsetBoundingBox());
            }


            // Si en el pixel de abajo del jugador no hay piso, caemos.
            if (!isFloor(getX(), getY() + 1))
            {
                setState(STATE_FALLING);
                return;
            }

            if (CKeyboard.firstPress(CKeyboard.SPACE))
            {
                setState(STATE_PRE_JUMPING);
                return;
            }

            if (CKeyboard.pressed(CKeyboard.KEY_A) && !isWallLeft(getX() - 1, getY()))
            {
                setState(STATE_WALKING);
                return;
            }

            if (CKeyboard.pressed(CKeyboard.KEY_D) && !isWallRight(getX() + 1, getY()))
            {
                setState(STATE_WALKING);
                return;
            }
        }
        else if (getState() == STATE_WALKING)
        {
            if (isWallLeft(getX(), getY()))
            {
                // Reposicionar el personaje contra la pared.
                setX(((mLeftX + 1) * tileWidth) - this.getLeftOffsetBoundingBox());
            }
            if (isWallRight(getX(), getY()))
            {
                // Reposicionar el personaje contra la pared.
                setX((((mRightX) * tileWidth) - getWidth()) + this.getRightOffsetBoundingBox());
            }

            if (CKeyboard.firstPress(CKeyboard.SPACE))
            {
                setState(STATE_PRE_JUMPING);
                return;
            }

            // Si en el pixel de abajo del jugador no hay piso, caemos.
            if (!isFloor(getX(), getY() + 1))
            {
                setState(STATE_FALLING);
                return;
            }

            if (!(CKeyboard.pressed(CKeyboard.KEY_A) || CKeyboard.pressed(CKeyboard.KEY_D)))
            {
                setState(STATE_STAND);
                return;
            }
            else
            {
                if (CKeyboard.pressed(CKeyboard.KEY_A))
                {
                    // Chequear pared a la izquierda.
                    // Si hay pared a la izquierda vamos a stand.
                    if (isWallLeft(getX(), getY()))
                    {
                        // Reposicionar el personaje contra la pared.
                        //setX((((int) getX ()/tileWidth)+1)*tileWidth);
                        setX(((mLeftX + 1) * tileWidth) - this.getLeftOffsetBoundingBox());

                        // Carlos version.
                        //setX (getX()+tileWidth/(getWidth()-1));

                        setState(STATE_STAND);
                        return;
                    }
                    else
                    {
                        // No hay pared, se puede mover.
                        setVelX(-400);
                        setFlip(true);
                    }
                }
                else
                {
                    // Chequear pared a la derecha.
                    // Si hay pared a la derecha vamos a stand.
                    if (isWallRight(getX(), getY()))
                    {
                        // Reposicionar el personaje contra la pared.
                        setX((((mRightX) * tileWidth) - getWidth()) + this.getRightOffsetBoundingBox());

                        setState(STATE_STAND);
                        return;
                    }
                    else
                    {
                        // No hay pared, se puede mover.
                        setVelX(400);
                        setFlip(false);
                    }
                }
            }
        }
        else if (getState() == STATE_PRE_JUMPING)
        {
            controlMoveHorizontal();

            if (!isFloor(getX(), getY() + 1) && getAccelY() == 0)
            {
                setAccelY(CGameConstants.GRAVITY);
            }

            if (this.isEnded())
            {
                this.setState(STATE_JUMPING);
            }
        }
        else if (getState() == STATE_JUMPING)
        {
            controlMoveHorizontal();

            if (this.getVelY() > 0)
            {
                setState(STATE_FALLING);
                return;
            }

            if (isFloor(getX(), getY() + 1))
            {
                setY(mDownY * tileHeight - getHeight());
                setState(STATE_STAND);
                return;
            }

            if (isRoof(getX(), getY() - 1))
            {
                setY(((mUpY + 1) * tileHeight) - this.getTopOffsetBoundingBox());
                setVelY(0);
                setState(STATE_HIT_ROOF);
                return;
            }
        }
        else if (getState() == STATE_FALLING)
        {
            controlMoveHorizontal();

            if (isFloor(getX(), getY() + 1))
            {
                setY(mDownY * tileHeight - getHeight());
                setState(STATE_STAND);
                return;
            }
        }
        else if (getState() == STATE_HIT_ROOF)
        {
            if (getTimeState() > 0.02f * 5.0f)
            {
                setState(STATE_FALLING);
                return;
            }
        }
        else if (getState() == STATE_DASHING)
        {
            setVelY(0);
            // Si estamos en una pared, corregirnos.
            if (isWallLeft(getX(), mOldY))
            {
                // Reposicionar el personaje contra la pared.
                setX(((mLeftX + 1) * CTileMap.Instance.getTileWidth()) - this.getLeftOffsetBoundingBox());
            }
            if (isWallRight(getX(), mOldY))
            {
                // Reposicionar el personaje contra la pared.
                setX((((mRightX) * CTileMap.Instance.getTileWidth()) - getWidth()) + this.getRightOffsetBoundingBox());
            }

            if (isFloor(getX(), getY() + 1))
            {
                setY(mDownY * CTileMap.Instance.getTileHeight() - getHeight());
            }

            if (isRoof(getX(), getY() - 1))
            {
                setY(((mUpY + 1) * CTileMap.Instance.getTileHeight()) - this.getTopOffsetBoundingBox());
            }

            if (this.getTimeState() >= 0.6f / 3 * 2)
            {
                this.initAnimation(47, 49, 12, false);
            }

            if (this.getTimeState() >= 0.6f)
            {
                this.setState(STATE_STAND);
            }
        }


        // Chequear el paso entre pantallas.
        controlRooms();

        textoPoderes.setXY(this.getX(), this.getY() - textoPoderes.getHeight());
        textoPoderes.setText(this.powers[this.selectedPower].getName());
        textoPoderes.update();

        for (int i = 0; i < this.powers.Count; i++)
        {
            this.powers[i].update();
        }
    }
Ejemplo n.º 6
0
    override public void update()
    {
        // Se guarda la posicion anterior del objecto.
        setOldYPosition();

        base.update();

        if (getState() == STATE_STAND)
        {
            setFriction(1);
            //TODO: REALIZAR EL BOUNDING BOX VERTICAL (ARRIBA Y ABAJO) DEL PERSONAJE PARA EL ESTADO GHOST.
            // TODO: EN EL ESTADO GHOST CAERA O VOLARA A OTRA DIRECCION? PLANTEAR TIMER.

            // En stand no deberia pasar nunca que quede metido en una pared.
            // Corregir la posicion del personaje si esta en una pared.
            if (isWallLeft(getX(), getY()))
            {
                // Reposicionar el personaje contra la pared utilizando el bounding box correspondiente.
                setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX);
            }
            if (isWallRight(getX(), getY()))
            {
                // Reposicionar el personaje contra la pared.
                setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX);
            }


            // Si en el pixel de abajo del jugador no hay piso, caemos.

            if (!isFloor(getX(), getY() + 1))
            {
                setState(STATE_FALLING);
                return;
            }

            if (CKeyboard.firstPress(CKeyboard.UP))
            {
                setState(STATE_JUMPING);
                return;
            }

            if (CKeyboard.pressed(CKeyboard.LEFT) && !isWallLeft(getX() - 1, getY()))
            {
                setState(STATE_WALKING);
                return;
            }

            if (CKeyboard.pressed(CKeyboard.RIGHT) && !isWallRight(getX() + 1, getY()))
            {
                setState(STATE_WALKING);
                return;
            }
        }
        else if (getState() == STATE_WALKING)
        {
            if (isWallLeft(getX(), getY()))
            {
                // Reposicionar el personaje contra la pared.
                setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX);
            }
            if (isWallRight(getX(), getY()))
            {
                // Reposicionar el personaje contra la pared.
                setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX);
            }

            //Barra espaciadora salta, first press por lo tanto solo cuando se presiona, si se mantiene presionado no salta.
            if (CKeyboard.firstPress(CKeyboard.UP))
            {
                setState(STATE_JUMPING);
                return;
            }

            // Si en el pixel de abajo del jugador no hay piso, caemos.
            if (!isFloor(getX(), getY() + 1))
            {
                setState(STATE_FALLING);
                return;
            }
            //En el caso que no nos movamos, vuelve al estado STAND.
            if (!(CKeyboard.pressed(CKeyboard.LEFT) || CKeyboard.pressed(CKeyboard.RIGHT)))
            {
                setState(STATE_STAND);
                return;
            }
            else
            {
                if (CKeyboard.pressed(CKeyboard.LEFT))
                {
                    // Chequear pared a la izquierda.
                    // Si hay pared a la izquierda vamos a stand.
                    if (isWallLeft(getX(), getY()))
                    {
                        // Reposicionar el personaje contra la pared.
                        //setX((((int) getX ()/CTileMap.TILE_WIDTH)+1)*CTileMap.TILE_WIDTH);
                        setX(((mLeftX + 1) * CTileMap.TILE_WIDTH) - X_OFFSET_BOUNDING_BOX);

                        // Carlos version.
                        //setX (getX()+CTileMap.TILE_WIDTH/(getWidth()-1));

                        setState(STATE_STAND);
                        return;
                    }
                    else
                    {
                        // No hay pared, se puede mover.
                        setVelX(-speed);
                        setFlip(true);
                    }
                }
                else
                {
                    // Chequear pared a la derecha.
                    // Si hay pared a la derecha vamos a stand.
                    if (isWallRight(getX(), getY()))
                    {
                        // Reposicionar el personaje contra la pared.
                        setX((((mRightX) * CTileMap.TILE_WIDTH) - getWidth()) + X_OFFSET_BOUNDING_BOX);

                        setState(STATE_STAND);
                        return;
                    }
                    else
                    {
                        // No hay pared, se puede mover.
                        setVelX(speed);
                        setFlip(false);
                    }
                }
            }
        }
        //En el caso que saltemos, debemos ajustar la posicion del personaje.
        else if (getState() == STATE_JUMPING)
        {
            controlMoveHorizontal();

            if (isFloor(getX(), getY() + 1))
            {
                setY(mDownY * CTileMap.TILE_HEIGHT - getHeight());
                setState(STATE_STAND);
                return;
            }
            // En el caso de el salto, cuando toque el techo, se usa el Y OFFSET para corregir la posicion a la posicion del gorro.
            if (isRoof(getX(), getY() - 1))
            {
                setY(((mUpY + 1) * CTileMap.TILE_HEIGHT) - Y_OFFSET_BOUNDING_BOX);
                setVelY(0);
                setState(STATE_HIT_ROOF);
                return;
            }
        }
        else if (getState() == STATE_FALLING)
        {
            controlMoveHorizontal();

            if (isFloor(getX(), getY() + 1))
            {
                setY(mDownY * CTileMap.TILE_HEIGHT - getHeight());
                setState(STATE_STAND);
                return;
            }
        }
        else if (getState() == STATE_HIT_ROOF)
        {
            if (getTimeState() > 0.02f * 5.0f)
            {
                setState(STATE_FALLING);
                return;
            }
        }
        // Chequear el paso entre pantallas.
        //controlRooms();
        if (getState() != STATE_GHOST)
        {
            if (currentEnergy < maxEnergy)
            {
                currentEnergy++;
            }
            if (CKeyboard.firstPress(CKeyboard.SPACE))
            {
                if (currentEnergy >= (maxEnergy / 5))
                {
                    currentEnergy = currentEnergy - (maxEnergy / 5);
                    setState(STATE_GHOST);
                    return;
                }
            }
        }
        if (getState() == STATE_GHOST)
        {
            setFriction(0.95f);
            if (currentEnergy == 0)
            {
                setState(STATE_STAND);
                return;
            }
            else
            {
                currentEnergy--;
                ghostMove();
            }
            if (CKeyboard.firstPress(CKeyboard.SPACE))
            {
                setState(STATE_STAND);
                return;
            }
        }
        if (CKeyboard.firstPress(CKeyboard.KEY_C))
        {
            if (getState() != STATE_GHOST)
            {
                if (getFlip())
                {
                    box = new hitBox(this, 30, 135, 5, (getHeight() / 2) - (135 / 2), 10, 60, hitBox.ALLYBOX);
                    mHitBoxManager.addBox(box);
                }
                else
                {
                    box = new hitBox(this, 30, 135, 5 + getWidth() - 38, (getHeight() / 2) - (135 / 2), 10, 60, hitBox.ALLYBOX);
                    mHitBoxManager.addBox(box);
                }
            }
        }

        /*if (box != null)
         * {
         *  box.update();
         * }*/
        mHitBoxManager.update();
    }