Skip to content

Commit

Permalink
stuff
Browse files Browse the repository at this point in the history
  • Loading branch information
Rinzii committed Jan 29, 2024
1 parent 3bc9c8e commit b24dcf6
Show file tree
Hide file tree
Showing 6 changed files with 108 additions and 8 deletions.
3 changes: 3 additions & 0 deletions DogTales/src/collision_system.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
// Created by ian on 1/29/24.

#include "collision_system.hpp"
14 changes: 14 additions & 0 deletions DogTales/src/collision_system.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
// Created by ian on 1/29/24.
#include <bave/graphics/rect.hpp>
#include <bave/graphics/drawable.hpp>
#include <bave/graphics/shape.hpp>


#pragma once

class Collider : public bave::Rect<float>, public bave::Drawable
{
public:
Collider(bave::Rect<float> const& rect);

};
25 changes: 24 additions & 1 deletion DogTales/src/dogtales.cpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
#include <src/dogtales.hpp>

DogTales::DogTales(bave::App& app) : bave::Driver(app) {}
DogTales::DogTales(bave::App& app) : bave::Driver(app) {

}

void DogTales::tick() {
auto const dt = get_app().get_dt();
Expand All @@ -15,9 +17,30 @@ void DogTales::render() const {
}

void DogTales::on_key(bave::KeyInput const& key_input) {

if (key_input.key == bave::Key::eEscape && key_input.action == bave::Action::eRelease) { get_app().shutdown(); }

float speed = 10.0F;

if (key_input.key == bave::Key::eW) { m_player.move(glm::vec2{0.0f, speed}); }
if (key_input.key == bave::Key::eA) { m_player.move(glm::vec2{-speed, 0.0f}); }
if (key_input.key == bave::Key::eS) { m_player.move(glm::vec2{0.0f, -speed}); }
if (key_input.key == bave::Key::eD) { m_player.move(glm::vec2{speed, 0.0f}); }
}

/*
void DogTales::on_key(bave::KeyInput const& key_input) {
if (key_input.key == bave::Key::eEscape && key_input.action == bave::Action::eRelease) { get_app().shutdown(); }
float speed = 10.0F;
if (key_input.key == bave::Key::eW) { m_player.move(glm::vec2{0.0f, speed}); }
if (key_input.key == bave::Key::eA) { m_player.move(glm::vec2{-speed, 0.0f}); }
if (key_input.key == bave::Key::eS) { m_player.move(glm::vec2{0.0f, -speed}); }
if (key_input.key == bave::Key::eD) { m_player.move(glm::vec2{speed, 0.0f}); }
}
*/
void DogTales::set_viewport_to_world_space() const {
get_app().get_render_device().render_view.viewport = world_space_v;
}
3 changes: 2 additions & 1 deletion DogTales/src/dogtales.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@
class DogTales : public bave::Driver {
static constexpr glm::vec2 world_space_v{1280.0f, 720.0f};

Player m_player{world_space_v};
Player m_player{world_space_v, get_app()};


void tick() final;
void render() const final;
Expand Down
56 changes: 53 additions & 3 deletions DogTales/src/player.cpp
Original file line number Diff line number Diff line change
@@ -1,14 +1,62 @@
#include <src/player.hpp>

Player::Player(glm::vec2 const world_space) : m_world_space(world_space) { m_sprite.set_size(size_v); }
#include <imgui.h>



Player::Player(glm::vec2 const world_space, bave::App& app) : m_world_space(world_space), m_app(app) {
m_sprite.set_size(size_v);
m_position.position = {0, 0};
m_sprite.transform = m_position;
m_collider = bave::Rect<float>::from_size(m_sprite.get_size(), m_position.position);
}

void Player::tick(bave::Seconds const dt) {
m_sprite.transform.position += m_vel * dt.count();

handle_wall_collision();

reduce_velocity();


ImGui::Begin("Player");
ImGui::Text("World Space: (%.2f, %.2f)", m_world_space.x, m_world_space.y);
ImGui::Text("Player Position: (%.2f, %.2f)", m_position.position.x, m_position.position.y);
ImGui::Text("Sprite Position: (%.2f, %.2f)", m_sprite.transform.position.x, m_sprite.transform.position.y);
ImGui::Text("Collider Position: (%.2f, %.2f)", m_collider.top_left().x, m_collider.top_left().y);
ImGui::Text("Velocity: (%.2f, %.2f)", m_vel.x, m_vel.y);
ImGui::End();


}


void Player::move(glm::vec2 const& dir)
{
auto const dt = m_app.get_dt();
float const velocity = speed_v.x * dt.count();

m_position.position += dir * velocity;
m_sprite.transform.position = m_position.position;
//m_collider.lt = m_position.position;
//m_collider = bave::Rect<float>::from_size(m_sprite.get_size(), m_position.position);

}

void Player::reduce_velocity() {
m_vel *= 0.99F;
}

void Player::draw(bave::Shader& shader) const {
m_sprite.draw(shader);


}

void Player::draw(bave::Shader& shader) const { m_sprite.draw(shader); }


void Player::handle_wall_collision2() {

}

void Player::handle_wall_collision() {
auto& position = m_sprite.transform.position;
Expand All @@ -25,3 +73,5 @@ void Player::handle_wall_collision() {
// bottom_left() gives us the minimum x and y whereas top_right() gives us the maximum.
position = glm::clamp(position, bounce_rect.bottom_left(), bounce_rect.top_right());
}


15 changes: 12 additions & 3 deletions DogTales/src/player.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,29 @@
#include <bave/graphics/sprite.hpp>

class Player {
static constexpr glm::vec2 speed_v{500.0f, 500.0f};
static constexpr glm::vec2 speed_v{50.0f, 50.0f};
static constexpr glm::vec2 size_v{50.0f, 90.0f};

glm::vec2 m_world_space{};

bave::Transform m_position{};
bave::Sprite m_sprite{};
bave::Rect<> m_collider{};

glm::vec2 m_vel{speed_v};
glm::vec2 m_vel{0};

void handle_wall_collision();
void handle_wall_collision2();

void reduce_velocity();

public:
explicit Player(glm::vec2 world_space);
explicit Player(glm::vec2 world_space, bave::App& app);

void move(glm::vec2 const& delta);

void tick(bave::Seconds dt);
void draw(bave::Shader& shader) const;

bave::App &m_app;
};

0 comments on commit b24dcf6

Please sign in to comment.