mirror of
https://github.com/Nimac0/SDL_Minigame
synced 2026-01-12 07:53:43 +00:00
Merge remote-tracking branch 'origin/bounding-box' into Collision
This commit is contained in:
commit
8bb1110e0b
@ -1,22 +1,22 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
struct Animation
|
||||
{
|
||||
int index;
|
||||
int frames;
|
||||
int speed;
|
||||
uint8_t index;
|
||||
uint8_t frames;
|
||||
uint8_t speed;
|
||||
|
||||
Animation() {}
|
||||
|
||||
Animation(int i, int f, int s)
|
||||
Animation(uint8_t index, uint8_t frames, uint8_t speed)
|
||||
{
|
||||
index = i;
|
||||
frames = f;
|
||||
speed = s;
|
||||
this->index = index;
|
||||
this->frames = frames;
|
||||
this->speed = speed;
|
||||
}
|
||||
};
|
||||
|
||||
enum AnimationType
|
||||
enum AnimationType //TODO enum class
|
||||
{
|
||||
IDLE = 0,
|
||||
WALK_R = 1,
|
||||
|
||||
@ -11,7 +11,7 @@ class KeyboardController : public Component
|
||||
{
|
||||
public:
|
||||
TransformComponent* transform;
|
||||
const Uint8* keystates = SDL_GetKeyboardState(NULL);
|
||||
const uint8_t* keystates = SDL_GetKeyboardState(NULL);
|
||||
SDL_Scancode up;
|
||||
SDL_Scancode down;
|
||||
SDL_Scancode left;
|
||||
@ -20,9 +20,9 @@ public:
|
||||
|
||||
SpriteComponent* sprite;
|
||||
|
||||
//for attack cooldown in between shots
|
||||
Uint32 lastFireTime;
|
||||
Uint32 fireCooldown = 1000; //in ms can be adjusted to change possible attack-speed
|
||||
//for attack cooldown in between shots
|
||||
uint32_t lastFireTime;
|
||||
uint32_t fireCooldown = 800; //in ms can be adjusted to change possible attack-speed
|
||||
|
||||
KeyboardController() = default;
|
||||
KeyboardController(SDL_Scancode up, SDL_Scancode down, SDL_Scancode left, SDL_Scancode right, SDL_Scancode fire, Vector2D fireVelocity);
|
||||
|
||||
@ -21,8 +21,8 @@ private:
|
||||
SDL_Rect srcRect, destRect;
|
||||
|
||||
bool animated = false;
|
||||
int frames = 0;
|
||||
int speed = 100;
|
||||
uint8_t frames = 0;
|
||||
uint8_t speed = 100;
|
||||
|
||||
public:
|
||||
SpriteComponent() = default;
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
#include "Entity.h"
|
||||
#include "Game.h"
|
||||
#include "TransformComponent.h"
|
||||
#include <iostream>
|
||||
|
||||
ColliderComponent::ColliderComponent(const char* tag)
|
||||
{
|
||||
@ -10,6 +11,13 @@ ColliderComponent::ColliderComponent(const char* tag)
|
||||
this->hasCollision = true;
|
||||
}
|
||||
|
||||
/*ColliderComponent::ColliderComponent(const char* tag, float hitboxScale) //adding hitboxScale helps scaling hitbox and texture/entity seperately
|
||||
{
|
||||
this->tag = tag;
|
||||
this->hitboxScale
|
||||
this->hasCollision = true;
|
||||
}*/
|
||||
|
||||
void ColliderComponent::init()
|
||||
{
|
||||
if (!entity->hasComponent<TransformComponent>()) {
|
||||
@ -25,6 +33,7 @@ void ColliderComponent::update()
|
||||
collider.x = transform->position.x;
|
||||
collider.y = transform->position.y;
|
||||
|
||||
|
||||
collider.w = transform->width * transform->scale;
|
||||
collider.h = transform->height * transform->scale;
|
||||
}
|
||||
|
||||
@ -15,9 +15,9 @@ SpriteComponent::SpriteComponent(const char* path, bool isAnimated)
|
||||
{
|
||||
animated = isAnimated;
|
||||
|
||||
Animation* idle = new Animation((int)AnimationType::IDLE, 2, 200);
|
||||
Animation* walkR = new Animation((int)AnimationType::WALK_R, 2, 200);
|
||||
Animation* walkL = new Animation((int)AnimationType::WALK_L, 2, 200);
|
||||
Animation* idle = new Animation((uint8_t)AnimationType::IDLE, 2, 200);
|
||||
Animation* walkR = new Animation((uint8_t)AnimationType::WALK_R, 2, 200);
|
||||
Animation* walkL = new Animation((uint8_t)AnimationType::WALK_L, 2, 200);
|
||||
|
||||
animations.emplace(IDLE, idle);
|
||||
animations.emplace(WALK_R, walkR);
|
||||
@ -68,7 +68,7 @@ void SpriteComponent::draw()
|
||||
|
||||
void SpriteComponent::play(AnimationType type)
|
||||
{
|
||||
animationIndex = animations.at(type)->index;
|
||||
frames = animations.at(type)->frames;
|
||||
speed = animations.at(type)->speed;
|
||||
this->animationIndex = animations.at(type)->index;
|
||||
this->frames = animations.at(type)->frames;
|
||||
this->speed = animations.at(type)->speed;
|
||||
}
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
#include "TransformComponent.h"
|
||||
#include "Constants.h"
|
||||
|
||||
TransformComponent::TransformComponent()
|
||||
{
|
||||
@ -41,7 +42,14 @@ void TransformComponent::init()
|
||||
void TransformComponent::update()
|
||||
{
|
||||
// if(velocity.x != 0 && velocity.y != 0)
|
||||
double multiplier = velocity.x != 0 && velocity.y != 0 ? 0.707 : 1; //normalizes vector
|
||||
position.x += velocity.x * speed * multiplier;
|
||||
position.y += velocity.y * speed * multiplier;
|
||||
|
||||
float multiplier = velocity.x != 0 && velocity.y != 0 ? 0.707 : 1; //normalizes vector
|
||||
Vector2D newPos(
|
||||
position.x + velocity.x * speed * multiplier,
|
||||
position.y + velocity.y * speed * multiplier
|
||||
);
|
||||
if (newPos.x < 0 || newPos.x > SCREEN_SIZE_WIDTH || newPos.y < 0 || newPos.y > SCREEN_SIZE_HEIGHT)
|
||||
return;
|
||||
|
||||
position = newPos;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user