summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Level.cpp2
-rw-r--r--Player.cpp16
-rw-r--r--Player.h8
-rw-r--r--intensemarcus.h1
-rw-r--r--main.cpp8
5 files changed, 33 insertions, 2 deletions
diff --git a/Level.cpp b/Level.cpp
index b5ede51..6f453e3 100644
--- a/Level.cpp
+++ b/Level.cpp
@@ -110,7 +110,7 @@ void Level::draw(Screen *screen) {
screen->blit(player.getX(), player.getY(), player.image, player.getClip());
// Scroll level
- if (player.getX() == 0 || player.getX() >= SCREEN_WIDTH
+ if (player.getX() < -player.getXVel() || player.getX() >= SCREEN_WIDTH
- player.getClip()->w - 32 - MOVE_AMOUNT) {
if (player.getXVel() < 0 || player.getXVel() > 0)
cameraX -= player.getXVel();
diff --git a/Player.cpp b/Player.cpp
index fcc626d..d5288ce 100644
--- a/Player.cpp
+++ b/Player.cpp
@@ -3,6 +3,7 @@
Player::Player() {
health = 100;
+ sprint = false;
}
void Player::jump() {
@@ -16,3 +17,18 @@ void Player::kill() {
health = 0;
// Do resetting stuff
}
+
+void Player::setSprint(bool s) {
+ sprint = s;
+}
+
+bool Player::getSprint() {
+ return sprint;
+}
+
+int Player::getXVel() {
+ if (sprint)
+ return xVel * SPRINT_MULTIPLYER;
+ else
+ return xVel;
+}
diff --git a/Player.h b/Player.h
index 95e662b..ad08b56 100644
--- a/Player.h
+++ b/Player.h
@@ -12,8 +12,14 @@ class Player : public Creature {
// Kill the player, in the game sense
void kill();
+ // Enable or disable sprinting
+ void setSprint(bool s);
+ bool getSprint();
+
+ int getXVel();
+
private:
- // Nothing yet!
+ bool sprint;
};
#endif
diff --git a/intensemarcus.h b/intensemarcus.h
index f4ceac5..3e98220 100644
--- a/intensemarcus.h
+++ b/intensemarcus.h
@@ -18,6 +18,7 @@ const int ORIENT_LEFT = 3;
const int GRAVITY = 3;
const int JUMP_STRENGTH = 40;
const int MOVE_AMOUNT = 10;
+const float SPRINT_MULTIPLYER = 1.5;
const int MAP_X = 48;
const int MAP_Y = 12;
const int TILE_SIZE = 50;
diff --git a/main.cpp b/main.cpp
index 4b22a5d..357edc4 100644
--- a/main.cpp
+++ b/main.cpp
@@ -45,6 +45,10 @@ int main(int argc, char* args[]) {
case SDLK_UP:
level.player.jump();
break;
+ case SDLK_LCTRL:
+ level.player.setSprint(true);
+ std::cout << "Running...\n";
+ break;
}
} else if (event.type == SDL_KEYUP) {
// Adjust player velocity
@@ -55,6 +59,10 @@ int main(int argc, char* args[]) {
case SDLK_RIGHT:
level.player.incXVel(-MOVE_AMOUNT);
break;
+ case SDLK_LCTRL:
+ level.player.setSprint(false);
+ std::cout << "Stop running.\n";
+ break;
}
}