|
|
|
@ -4,20 +4,26 @@ |
|
|
|
|
#include "Game.h" |
|
|
|
|
|
|
|
|
|
void Player::mousePressed(MouseEvent *event) { |
|
|
|
|
if (pos.y() == GROUND_Y && event->button == Qt::MouseButton::LeftButton) |
|
|
|
|
if (pos.y() == GROUND_Y && event->button == Qt::MouseButton::LeftButton){ |
|
|
|
|
jump(); |
|
|
|
|
auto e = new WallJumpEvent; |
|
|
|
|
e->time = Game::instance->eTime; |
|
|
|
|
e->player = this; |
|
|
|
|
e->wallHeight = 100; |
|
|
|
|
Game::eventQueue->submitEvent(e); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void Player::draw(QPainter &painter) const { |
|
|
|
|
painter.save(); |
|
|
|
|
|
|
|
|
|
painter.translate(pos.toPoint()); |
|
|
|
|
painter.fillRect(-5, -10, 10, 10, Qt::black); |
|
|
|
|
painter.fillRect(-5, -5, 10, 10, Qt::black); |
|
|
|
|
|
|
|
|
|
painter.restore(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void Player::update(float dTime, std::vector<Wall> &walls) { |
|
|
|
|
void Player::update(float dTime) { |
|
|
|
|
pos += vel * dTime; |
|
|
|
|
vel += acc * dTime; |
|
|
|
|
|
|
|
|
@ -25,31 +31,9 @@ void Player::update(float dTime, std::vector<Wall> &walls) { |
|
|
|
|
pos.setY(GROUND_Y); |
|
|
|
|
vel = {}; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
for (auto &wall : walls){ |
|
|
|
|
if (!wall.jumped && !wall.failed){ |
|
|
|
|
if (pos.x() > wall.pos.x() - wall.size.width() / 2 |
|
|
|
|
&& pos.x() < wall.pos.x() + wall.size.width() / 2){ |
|
|
|
|
if (pos.y() < wall.pos.y() - wall.size.height()){ |
|
|
|
|
wall.jumped = true; |
|
|
|
|
auto e = new WallJumpEvent; |
|
|
|
|
e->time = Game::instance->eTime; |
|
|
|
|
e->player = this; |
|
|
|
|
e->wallHeight = wall.size.height(); |
|
|
|
|
Game::eventQueue->submitEvent(e); |
|
|
|
|
} else { |
|
|
|
|
wall.failed = true; |
|
|
|
|
auto e = new WallCrashEvent; |
|
|
|
|
e->time = Game::instance->eTime; |
|
|
|
|
e->player = this; |
|
|
|
|
Game::eventQueue->submitEvent(e); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void Player::jump() { |
|
|
|
|
vel += {0, -jumpPower}; |
|
|
|
|
vel += {0, -300}; |
|
|
|
|
Audio::playSound(1, SOUND_JUMP); |
|
|
|
|
} |
|
|
|
|