Update snake example, remove some compiler warning

This commit is contained in:
SeanOMik 2020-11-04 12:57:44 -06:00
parent 17b81c83cc
commit 6c28dba5dc
6 changed files with 24 additions and 21 deletions

1
.gitignore vendored
View File

@ -6,6 +6,7 @@ out/*
.idea/* .idea/*
cmake-build-cmake-build-w10-msvc-debug/* cmake-build-cmake-build-w10-msvc-debug/*
cmake-build-debug-wsl/* cmake-build-debug-wsl/*
build/*
# Compiled source # # Compiled source #
################### ###################

View File

@ -10,7 +10,7 @@ set(SFML_BUILD_GRAPHICS ON)
set(SFML_BUILD_WINDOW ON) set(SFML_BUILD_WINDOW ON)
set(SFML_BUILD_SYSTEM ON) set(SFML_BUILD_SYSTEM ON)
find_package(SFML REQUIRED COMPONENTS system main window graphics audio) find_package(SFML 2 COMPONENTS system main window graphics audio REQUIRED)
# Link sources # Link sources
file(GLOB_RECURSE source_list src/*.cpp) file(GLOB_RECURSE source_list src/*.cpp)
@ -20,7 +20,8 @@ add_library(simpleengine STATIC ${source_list})
target_include_directories(simpleengine PUBLIC include PRIVATE include/simpleengine) target_include_directories(simpleengine PUBLIC include PRIVATE include/simpleengine)
# Link dependencies # Link dependencies
target_link_libraries(simpleengine PUBLIC sfml-system sfml-main sfml-window OpenGL sfml-network sfml-graphics Freetype OpenAL Vorbis FLAC sfml-audio) target_link_libraries(simpleengine PUBLIC sfml-system sfml-main sfml-window sfml-network sfml-graphics sfml-audio OpenGL Freetype OpenAL Vorbis FLAC)
#target_link_libraries(simpleengine PUBLIC FLAC OpenAL OpenGL Vorbis)
# Add examples as a target if the user has them enabled # Add examples as a target if the user has them enabled
if (BUILD_EXAMPLES) if (BUILD_EXAMPLES)

View File

@ -31,10 +31,10 @@ public:
texture.loadFromFile("player_sheet.png"); texture.loadFromFile("player_sheet.png");
texture.setSmooth(true); texture.setSmooth(true);
sprite.setTexture(texture); sprite.setTexture(texture);
sprite.setScale(.7, .7); sprite.setScale(0.7f, 0.7f);
move_anim_component = std::make_shared<simpleengine::SideScrollerMovementAnimationComponent>(*this, sprite, move_anim_component = std::make_shared<simpleengine::SideScrollerMovementAnimationComponent>(*this, sprite,
texture, movement_speed, 5, 1.1); texture, movement_speed, 5.f, 1.1f);
move_anim_component->SetAnimation(simpleengine::MovementAnimationType::WALK_LEFT, 8, 0, 9, move_anim_component->SetAnimation(simpleengine::MovementAnimationType::WALK_LEFT, 8, 0, 9,
9, 9, 128, 128); 9, 9, 128, 128);
move_anim_component->SetAnimation(simpleengine::MovementAnimationType::IDLE_LEFT, 20, 0, 0, move_anim_component->SetAnimation(simpleengine::MovementAnimationType::IDLE_LEFT, 20, 0, 0,
@ -43,7 +43,7 @@ public:
AddComponent(move_anim_component); AddComponent(move_anim_component);
hitbox_component = std::make_shared<simpleengine::HitboxComponent>(*this, sprite, hitbox_component = std::make_shared<simpleengine::HitboxComponent>(*this, sprite,
20, 12, sprite.getGlobalBounds().width - 40, sprite.getGlobalBounds().height - 15); 20.f, 12.f, sprite.getGlobalBounds().width - 40.f, sprite.getGlobalBounds().height - 15.f);
AddComponent(hitbox_component); AddComponent(hitbox_component);
} }

View File

@ -44,7 +44,7 @@ public:
movement_direction.y = movement_speed; movement_direction.y = movement_speed;
} }
int duration = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now() - last_movement).count(); long long duration = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::high_resolution_clock::now() - last_movement).count();
if (duration >= 115 && (movement_direction.x != 0 || movement_direction.y != 0)) { if (duration >= 115 && (movement_direction.x != 0 || movement_direction.y != 0)) {
owning_entity.Move(delta_time, movement_direction.x, movement_direction.y); owning_entity.Move(delta_time, movement_direction.x, movement_direction.y);
@ -58,12 +58,15 @@ private:
sf::RectangleShape shape; sf::RectangleShape shape;
float movement_speed = 15; float movement_speed = 15;
sf::Vector2u window_size; sf::Vector2u window_size;
std::shared_ptr<SnakeMovementComponent> movement_component;
public: public:
explicit SnakePlayerEntity(sf::Vector2u window_size) : window_size(window_size) { explicit SnakePlayerEntity(sf::Vector2u window_size) : Entity(shape), window_size(window_size) {
shape = sf::RectangleShape(sf::Vector2f(15, 15)); shape = sf::RectangleShape(sf::Vector2f(15, 15));
shape.setFillColor(sf::Color::White); shape.setFillColor(sf::Color::White);
AddComponent(std::make_unique<SnakeMovementComponent>(*this, movement_speed)); movement_component = std::make_shared<SnakeMovementComponent>(*this, movement_speed);
AddComponent(movement_component);
} }
~SnakePlayerEntity() override { ~SnakePlayerEntity() override {

View File

@ -23,7 +23,7 @@ namespace simpleengine {
friend class Game; friend class Game;
friend class Event; friend class Event;
public: public:
explicit Entity(sf::Sprite& sprite); explicit Entity(sf::Transformable& transformable);
virtual ~Entity() = default; virtual ~Entity() = default;
Entity(const Entity& entity) = delete; Entity(const Entity& entity) = delete;
@ -35,7 +35,7 @@ namespace simpleengine {
virtual void Update(const float& delta_time); virtual void Update(const float& delta_time);
// Called when the entity is about to be destroyed. // Called when the entity is about to be destroyed.
// Make sure to call this in your extending Entity. // Make sure to implment this in your extending Entity.
virtual void Destroying(); virtual void Destroying();
void DestroyLater(); // In most cases, this will be ran next EntityEvent::Update() void DestroyLater(); // In most cases, this will be ran next EntityEvent::Update()
const bool& IsGettingDestroyed() const; const bool& IsGettingDestroyed() const;
@ -63,9 +63,11 @@ namespace simpleengine {
components.push_back(component); components.push_back(component);
} }
sf::Sprite& GetSprite(); inline sf::Transformable& GetTransformable() {
return transformable;
}
protected: protected:
sf::Sprite& sprite; sf::Transformable& transformable;
std::vector<std::shared_ptr<Component>> components; std::vector<std::shared_ptr<Component>> components;
bool destroying = false; bool destroying = false;
}; };

View File

@ -7,20 +7,20 @@
#include "entity.h" #include "entity.h"
#include "component.h" #include "component.h"
simpleengine::Entity::Entity(sf::Sprite &sprite) : sprite(sprite) { simpleengine::Entity::Entity(sf::Transformable &transformable) : transformable(transformable) {
} }
void simpleengine::Entity::Move(const float &delta_time, const float &dir_x, const float &dir_y) { void simpleengine::Entity::Move(const float &delta_time, const float &dir_x, const float &dir_y) {
sprite.setPosition(dir_x * delta_time, dir_y * delta_time); transformable.setPosition(dir_x * delta_time, dir_y * delta_time);
} }
void simpleengine::Entity::Move(const float &delta_time, const sf::Vector2f &offset) { void simpleengine::Entity::Move(const float &delta_time, const sf::Vector2f &offset) {
sprite.move(offset * delta_time); transformable.move(offset * delta_time);
} }
void simpleengine::Entity::Move(const sf::Vector2f &offset) { void simpleengine::Entity::Move(const sf::Vector2f &offset) {
sprite.move(offset); transformable.move(offset);
} }
void simpleengine::Entity::Render(sf::RenderTarget *target) { void simpleengine::Entity::Render(sf::RenderTarget *target) {
@ -60,7 +60,3 @@ void simpleengine::Entity::DestroyLater() {
const bool &simpleengine::Entity::IsGettingDestroyed() const { const bool &simpleengine::Entity::IsGettingDestroyed() const {
return destroying; return destroying;
} }
sf::Sprite &simpleengine::Entity::GetSprite() {
return sprite;
}