Skip to content
Open
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
ba8a30d
Added sprite class and new enemy image
gregormaclaine Nov 17, 2021
f023e3f
Implemented sprite class in player and staticsprite
gregormaclaine Nov 17, 2021
af50464
Added third platform
gregormaclaine Nov 17, 2021
790fb27
Added delta time fix
gregormaclaine Nov 17, 2021
4eea575
Merge branch 'main' into sprite-class-again
gregormaclaine Nov 17, 2021
3364cb0
Added control-r to also reset enemies positions
gregormaclaine Nov 17, 2021
1a88d13
Merge branch 'main' into sprite-class
gregormaclaine Nov 17, 2021
7b0abe9
TEMP: states
gregormaclaine Dec 8, 2021
dc2de67
Edits for Mac installation
gregormaclaine Feb 2, 2022
01f025c
Added update function to sprite class
gregormaclaine Feb 4, 2022
9acd164
Updates to vscode settings
gregormaclaine Feb 4, 2022
c420b68
TMP: Added main functionality of menu buttons and finite state machine
gregormaclaine Feb 4, 2022
023f51a
Moved game logic to Game class and finished FSM
gregormaclaine Feb 4, 2022
e8c0c15
Merge branch 'main' into finite-state-machine
gregormaclaine Feb 5, 2022
e557119
Added a lot of comments
gregormaclaine Feb 7, 2022
5eaf888
Added some docs on the FSM
gregormaclaine Feb 8, 2022
16f4c26
Fixed bugs to work on windows
Feb 9, 2022
62a2750
Fixed hitbox always showing bug on windows
Feb 9, 2022
c5f1c48
Sprites now don't clip through platforms during window resize
gregormaclaine Feb 12, 2022
497b1c0
Separated deltatime checker into separate file
gregormaclaine Feb 12, 2022
3ca3c02
Increased certainty of deltatime anomaly & fixed enemies clipping thr…
gregormaclaine Feb 12, 2022
ed00e4e
Hopefully fixed warning in vscode settings from deprecated key
gregormaclaine Feb 13, 2022
9585f85
Changed enemies and platforms to std::vector from basic C array
gregormaclaine Feb 15, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ gmon.out
*.stats
Thumbs.db
.DS_Store
PCH.hpp

# VS Code
.vscode/ipch
Expand Down
3 changes: 1 addition & 2 deletions .vscode/c_cpp_properties.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,7 @@
],
"includePath": [
"${workspaceFolder}/src",
"${workspaceFolder}/lib",
"/usr/local/include/**"
"${workspaceFolder}/lib"
],
"defines": [
"_DEBUG"
Expand Down
25 changes: 23 additions & 2 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -85,9 +85,30 @@
"streambuf": "cpp",
"thread": "cpp",
"typeinfo": "cpp",
"variant": "cpp"
"variant": "cpp",
"__bit_reference": "cpp",
"__bits": "cpp",
"__config": "cpp",
"__debug": "cpp",
"__errc": "cpp",
"__functional_base": "cpp",
"__hash_table": "cpp",
"__locale": "cpp",
"__mutex_base": "cpp",
"__node_handle": "cpp",
"__nullptr": "cpp",
"__split_buffer": "cpp",
"__string": "cpp",
"__threading_support": "cpp",
"__tree": "cpp",
"__tuple": "cpp",
"bit": "cpp",
"complex": "cpp",
"ios": "cpp",
"locale": "cpp",
"stack": "cpp",
"__availability": "cpp"
},
"terminal.integrated.automationShell.windows": "C:/Program Files/Git/bin/bash.exe",
"terminal.integrated.env.windows": {
"Path": "C:/mingw32/bin;C:/SFML-2.5.1/bin"
},
Expand Down
Binary file removed assets/QuitButton.png
Binary file not shown.
File renamed without changes
Binary file added assets/button-background.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/enemy.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file removed assets/play.png
Binary file not shown.
28 changes: 12 additions & 16 deletions src/Enemy.cpp
Original file line number Diff line number Diff line change
@@ -1,18 +1,15 @@
#include "Enemy.hpp"
#include "Sprite.hpp"

Enemy::Enemy(sf::Vector2f _pos, sf::Vector2f _size) :
Hitbox { _pos, _size }
{
// Load Texture
texture.loadFromFile("assets/enemy.png");
sprite.setTexture(texture);
size = sf::Vector2f(texture.getSize());
Enemy::Enemy(sf::Vector2f _pos, sf::Vector2f target_size) :
Hitbox { _pos, target_size },
Sprite { "assets/enemy.png", _pos, target_size }
{}

// Initialise Position
pos = _pos;

sprite.setPosition(pos);
}
Enemy::Enemy() :
Hitbox { sf::Vector2f(), sf::Vector2f() },
Sprite { "assets/enemy.png", sf::Vector2f(), sf::Vector2f() }
{}

void Enemy::updatePosition(StaticSprite* platforms, sf::Vector2f player_pos)
{
Expand All @@ -28,12 +25,11 @@ void Enemy::updatePosition(StaticSprite* platforms, sf::Vector2f player_pos)
}
}

// Gets direction to player

sprite.setPosition(pos);
}

sf::Vector2f Enemy::getPosition()
void Enemy::setPosition(sf::Vector2f _pos)
{
return pos;
pos = _pos;
update_sprite(pos, size);
}
8 changes: 5 additions & 3 deletions src/Enemy.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
#define Enemy_H

#include "Hitbox.hpp"
#include "Sprite.hpp"
#include "StaticSprite.hpp"

/**
Expand All @@ -10,18 +11,19 @@
* @param pos The initial position
* @param size The width and height of the enemy's hitbox
*/
class Enemy : public Hitbox
class Enemy : public Hitbox, public Sprite
{
private:
sf::Texture texture;

public:
sf::Sprite sprite;
Enemy(sf::Vector2f pos, sf::Vector2f size);
Enemy();

// Updates the position of the sprite
void updatePosition(StaticSprite* platforms, sf::Vector2f player_pos);
sf::Vector2f getPosition();
// Force sets the position of the sprites
void setPosition(sf::Vector2f _pos);
};

#endif
15 changes: 15 additions & 0 deletions src/Game/Background.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#include "Game/Background.hpp"

Background::Background(sf::RenderWindow& window) :
Sprite { "assets/background-image.png", sf::Vector2f(0, 0), sf::Vector2f(window.getSize()) }
{}

void Background::draw(sf::RenderWindow& window, sf::View& view)
{
const sf::Vector2f view_center = view.getCenter();
const sf::Vector2f view_size = view.getSize();

const sf::Vector2f left_top = sf::Vector2f(view_center.x - view_size.x / 2, view_center.y - view_size.y / 2);
update_sprite(left_top, view_size);
window.draw(sprite);
}
13 changes: 13 additions & 0 deletions src/Game/Background.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#ifndef Background_H
#define Background_H

#include "Sprite.hpp"

class Background : public Sprite
{
public:
Background(sf::RenderWindow& _window);
void draw(sf::RenderWindow& window, sf::View& view);
};

#endif
95 changes: 95 additions & 0 deletions src/Game/Game.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
#include "Game/Game.hpp"
#include "WindowStates/State.hpp"

Game::Game(sf::RenderWindow& _window) :
window { _window },
player { sf::Vector2f(500.f, 0.f), sf::Vector2f(215.f, 258.f) },
platforms {
StaticSprite("assets/platform.png", sf::Vector2f(10.f, 500.f), sf::Vector2f(760.f, 107.f)),
StaticSprite("assets/platform.png", sf::Vector2f(1100.f, 100.f), sf::Vector2f(760.f, 107.f)),
StaticSprite("assets/platform.png", sf::Vector2f(2100.f, 500.f), sf::Vector2f(760.f, 107.f))
},
enemies {
Enemy(sf::Vector2f(0.f, 250.f), sf::Vector2f(215.f, 258.f)),
Enemy(sf::Vector2f(2700.f, 250.f), sf::Vector2f(215.f, 258.f))
},
player_view { sf::FloatRect(0, 0, window.getSize().x, window.getSize().y) }
{
reset_positions(true);
}

void Game::reset_positions(bool hard_reset)
{
player.setDetails(sf::Vector2f(500.f, 0.f), player.size);
if (hard_reset)
{
enemies[0].setPosition(sf::Vector2f(0.f, 250.f));
enemies[1].setPosition(sf::Vector2f(2700.f, 250.f));
}
}

void Game::handleKeyPress(sf::Keyboard::Key key_code)
{
player.handleKeyPress(key_code);
}

void Game::handleKeyRelease(sf::Keyboard::Key key_code)
{
player.handleKeyRelease(key_code);
}

void Game::update(WindowStates& next_state)
{
if (player.health < 0)
{
next_state = WindowStates::MENU;
return;
}

player.updatePosition(platforms);

for (unsigned int i = 0; i < 2; i++)
{
enemies[i].updatePosition(platforms, player.pos);
player.handleCollide(enemies[i]);
}

player.updateHealth();

frame_tracker.add_info("Vel", std::to_string(player.vel.x).substr(0, 4) + " | " + std::to_string(player.vel.y).substr(0, 4));
frame_tracker.update();
}

void Game::moveViewToPlayer()
{
player_view.setCenter(sf::Vector2f(player.pos.x, 300));
window.setView(player_view);
}

void Game::draw()
{
unsigned int i;
for (i = 0; i < 2; i++)
{
enemies[i].draw(window);

if (show_hitboxes)
window.draw(enemies[i].get_hitbox_outline());
}

for (i = 0; i < 3; i++)
{
platforms[i].draw(window);

if (show_hitboxes)
window.draw(platforms[i].get_hitbox_outline());
}

player.draw(window);

if (show_hitboxes)
window.draw(player.get_hitbox_outline());

window.draw(frame_tracker.text);
window.draw(player.health_display);
}
37 changes: 37 additions & 0 deletions src/Game/Game.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#ifndef Game_H
#define Game_H

#include "Enemy.hpp"
#include "FrameRate.hpp"
#include "Player.hpp"
#include "WindowStates/State.hpp"

class Game
{
private:
sf::RenderWindow& window;

FrameRateTracker frame_tracker;

Player player;
StaticSprite platforms[3];
Enemy enemies[2];

public:
sf::View player_view;
bool show_hitboxes;

Game(sf::RenderWindow& window);

void reset_positions(bool hard_reset);

void handleKeyPress(sf::Keyboard::Key key_code);
void handleKeyRelease(sf::Keyboard::Key key_code);

void moveViewToPlayer();
void draw();

void update(WindowStates& next_state);
};

#endif
2 changes: 1 addition & 1 deletion src/Hitbox.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ Direction CollisionFix::h2_direction()
return getDirectionFromVector(h2_displacement);
}

Hitbox::Hitbox(sf::Vector2f _pos, sf::Vector2f _size = sf::Vector2f(0, 0)) :
Hitbox::Hitbox(sf::Vector2f _pos, sf::Vector2f _size) :
Physics { _pos }
{
size = _size;
Expand Down
63 changes: 0 additions & 63 deletions src/Menu.cpp

This file was deleted.

20 changes: 0 additions & 20 deletions src/Menu.hpp

This file was deleted.

Loading