Skip to content
This repository has been archived by the owner on Nov 15, 2022. It is now read-only.

Player Move

Antek Bizon edited this page Mar 5, 2022 · 1 revision

Player::Move

Ruch następuje po sprawdzeniu naciskanych przez gracza przycisków. Są tu również wykorzystywane dwie zmienne pomocnicze climbing (określa czy znajdujemy się na drabinie czy nie) oraz onIce (określa czy znajdujemy się na lodzie czy nie). Po sprawdzeniu ustawiana jest odpowiednia prędkość, odgrywany jest dźwięk, a także po wciśnięciu Spacji uruchamiane jest strzelanie. Na końcu przesuwana jest pozycja gracza o wcześniej ustaloną prędkość.

void Player::Move() {
    if (state == State::FINISHED) return;

    if (!climbing)
        speed.y++;
    else {
        speed.y = 0;
        speed.x = 0;
    }

    if (climbing) {
        if (IsKeyDown(KEY_UP)) {
            direction = Direction::UP;
            speed.y = -5;
        } else if (IsKeyDown(KEY_DOWN)) {
            direction = Direction::DOWN;
            speed.y = 5;
        } else {
            direction = Direction::NONE;
        }
    } else {
        if (!onIce) {
            if (IsKeyDown(KEY_LEFT)) {
                direction = Direction::LEFT;
                if (speed.x > -6.0f * game->speedBoost)
                    speed.x -= 1;
                else
                    speed.x = -6.0f * game->speedBoost;

                if (!IsSoundPlaying(game->audio[WALK]))
                    PlaySound(game->audio[WALK]);
            } else if (IsKeyDown(KEY_RIGHT)) {
                direction = Direction::RIGHT;
                if (speed.x < 6.0f * game->speedBoost)
                    speed.x += 1;
                else
                    speed.x = 6.0f * game->speedBoost;

                if (!IsSoundPlaying(game->audio[WALK]))
                    PlaySound(game->audio[WALK]);
            } else {
                direction = Direction::NONE;
                speed.x = 0;
                if (IsSoundPlaying(game->audio[WALK]))
                    StopSound(game->audio[WALK]);
            }
        } else {
            if (IsKeyDown(KEY_LEFT)) {
                direction = Direction::LEFT;
                speed.x -= 0.25f * game->speedBoost;
                if (!IsSoundPlaying(game->audio[WALK]))
                    PlaySound(game->audio[WALK]);
            } else if (IsKeyDown(KEY_RIGHT)) {
                direction = Direction::RIGHT;
                speed.x += 0.25f * game->speedBoost;
                if (!IsSoundPlaying(game->audio[WALK]))
                    PlaySound(game->audio[WALK]);
            } else {
                direction = Direction::NONE;
                if (speed.x > 0.2)
                    speed.x -= 0.2f;
                else if (speed.x < -0.2) 
                    speed.x += 0.2f;
                else {
                    speed.x = 0;
                    if (IsSoundPlaying(game->audio[WALK]))
                        StopSound(game->audio[WALK]);
                }
            }
        }

    }

    if (!climbing && IsKeyPressed(KEY_SPACE)) {
        Shooting();
    }

    position.rectangle.x += speed.x;
    position.rectangle.y += speed.y;
    onIce = false;
}
Clone this wiki locally