Changed SDL_DrawLine to SDL_DrawLineF in physics_entity_debug_draw and added input to player
This commit is contained in:
parent
36d378ec37
commit
2b1aa6236f
|
@ -18,11 +18,11 @@ void physics_entity_debug_draw(PhysicsEntity self) {
|
||||||
lhs = camera_world_to_pixel_point(&g_camera, lhs);
|
lhs = camera_world_to_pixel_point(&g_camera, lhs);
|
||||||
rhs = camera_world_to_pixel_point(&g_camera, rhs);
|
rhs = camera_world_to_pixel_point(&g_camera, rhs);
|
||||||
SDL_SetRenderDrawColor(g_renderer, 0, 255, 0, 255);
|
SDL_SetRenderDrawColor(g_renderer, 0, 255, 0, 255);
|
||||||
SDL_RenderDrawLine(g_renderer, lhs.x, lhs.y, rhs.x, rhs.y);
|
SDL_RenderDrawLineF(g_renderer, lhs.x, lhs.y, rhs.x, rhs.y);
|
||||||
|
|
||||||
rhs = camera_world_to_pixel_point(&g_camera, vaddf(transform->position, rigidbody_get_force(body)));
|
rhs = camera_world_to_pixel_point(&g_camera, vaddf(transform->position, rigidbody_get_force(body)));
|
||||||
SDL_SetRenderDrawColor(g_renderer, 0, 255, 255, 255);
|
SDL_SetRenderDrawColor(g_renderer, 0, 255, 255, 255);
|
||||||
SDL_RenderDrawLine(g_renderer, lhs.x, lhs.y, rhs.x, rhs.y);
|
SDL_RenderDrawLineF(g_renderer, lhs.x, lhs.y, rhs.x, rhs.y);
|
||||||
}
|
}
|
||||||
static inline
|
static inline
|
||||||
Vector _internal_calculate_contact_force(RigidBody* self, Contact* contact) {
|
Vector _internal_calculate_contact_force(RigidBody* self, Contact* contact) {
|
||||||
|
|
|
@ -2,6 +2,23 @@
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
#include "game_world.h"
|
#include "game_world.h"
|
||||||
|
|
||||||
|
static inline
|
||||||
|
void InternalPlayerInitInput(Player* self) {
|
||||||
|
// HORIZONTAL
|
||||||
|
playerinput_add(self->input, CompositeAxis1D_as_InputAxis(compositeaxis1d_new(
|
||||||
|
KeyBind_as_InputAxis(keybind_new(SDL_SCANCODE_A)),
|
||||||
|
KeyBind_as_InputAxis(keybind_new(SDL_SCANCODE_D)),
|
||||||
|
InputEvent_Float
|
||||||
|
)), (InputDelegateFn)PlayerInputHorizontal);
|
||||||
|
|
||||||
|
// VERTICAL
|
||||||
|
playerinput_add(self->input, CompositeAxis1D_as_InputAxis(compositeaxis1d_new(
|
||||||
|
KeyBind_as_InputAxis(keybind_new(SDL_SCANCODE_S)),
|
||||||
|
KeyBind_as_InputAxis(keybind_new(SDL_SCANCODE_W)),
|
||||||
|
InputEvent_Float
|
||||||
|
)), (InputDelegateFn)PlayerInputVertical);
|
||||||
|
}
|
||||||
|
|
||||||
Player* MakePlayer() {
|
Player* MakePlayer() {
|
||||||
Player* self = malloc(sizeof(Player));
|
Player* self = malloc(sizeof(Player));
|
||||||
ASSERT_RETURN(self != NULL, NULL, "Could not allocate enough space for Player instance");
|
ASSERT_RETURN(self != NULL, NULL, "Could not allocate enough space for Player instance");
|
||||||
|
@ -11,14 +28,21 @@ Player* MakePlayer() {
|
||||||
|
|
||||||
*self = (Player){
|
*self = (Player){
|
||||||
.transform = IdentityTransform,
|
.transform = IdentityTransform,
|
||||||
|
|
||||||
|
.input = playerinput_new(self, -1),
|
||||||
|
.input_direction = ZeroVector,
|
||||||
|
|
||||||
.faceDirection = 0,
|
.faceDirection = 0,
|
||||||
|
|
||||||
.animationStateMachine = state_machine_init(self, PlayerIdle()),
|
.animationStateMachine = state_machine_init(self, PlayerIdle()),
|
||||||
.animFrame = 0,
|
.animFrame = 0,
|
||||||
.sprite = sprite_from_spritesheet(walk, 0),
|
|
||||||
.stand = idle,
|
|
||||||
.walk = walk,
|
|
||||||
.animFrameInterval = 1.0f / 4.0f,
|
.animFrameInterval = 1.0f / 4.0f,
|
||||||
.animFrameTimer = 0.0f,
|
.animFrameTimer = 0.0f,
|
||||||
|
|
||||||
|
.stand = idle,
|
||||||
|
.walk = walk,
|
||||||
|
|
||||||
|
.sprite = sprite_from_spritesheet(walk, 0),
|
||||||
};
|
};
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
|
@ -51,6 +75,10 @@ void PlayerDraw(Player* self) {
|
||||||
sprite_entity_draw(Player_as_SpriteEntity(self));
|
sprite_entity_draw(Player_as_SpriteEntity(self));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PlayerInputHorizontal(Player* self, InputEvent event) {}
|
||||||
|
|
||||||
|
void PlayerInputVertical(Player* self, InputEvent event) {}
|
||||||
|
|
||||||
Sprite* PlayerGetSprite(Player* self) {
|
Sprite* PlayerGetSprite(Player* self) {
|
||||||
return self->sprite;
|
return self->sprite;
|
||||||
}
|
}
|
||||||
|
@ -64,7 +92,8 @@ const State* PlayerAnimationUpdate(Player* self, float deltaTime) {
|
||||||
|
|
||||||
if (self->animFrameTimer > self->animFrameInterval) {
|
if (self->animFrameTimer > self->animFrameInterval) {
|
||||||
self->animFrameTimer = 0.f;
|
self->animFrameTimer = 0.f;
|
||||||
size_t nextFrame = self->animFrame + 8;
|
++self->animFrame;
|
||||||
|
size_t nextFrame = self->animFrame * 8 + self->faceDirection;
|
||||||
sprite_set_tile(self->sprite, nextFrame);
|
sprite_set_tile(self->sprite, nextFrame);
|
||||||
|
|
||||||
if (nextFrame > spritesheet_get_tile_count(sprite_get_spritesheet(self->sprite))) {
|
if (nextFrame > spritesheet_get_tile_count(sprite_get_spritesheet(self->sprite))) {
|
||||||
|
|
|
@ -8,10 +8,14 @@
|
||||||
#include "behaviour_entity.h"
|
#include "behaviour_entity.h"
|
||||||
#include "state_machine.h"
|
#include "state_machine.h"
|
||||||
#include "transformable.h"
|
#include "transformable.h"
|
||||||
|
#include "player_input.h"
|
||||||
|
|
||||||
typedef struct Player {
|
typedef struct Player {
|
||||||
Transform transform;
|
Transform transform;
|
||||||
|
|
||||||
|
PlayerInput* input;
|
||||||
|
Vector input_direction;
|
||||||
|
|
||||||
unsigned short faceDirection;
|
unsigned short faceDirection;
|
||||||
|
|
||||||
StateMachine* animationStateMachine;
|
StateMachine* animationStateMachine;
|
||||||
|
@ -33,6 +37,9 @@ extern void PlayerStart(Player* self);
|
||||||
extern void PlayerDestroy(Player* self);
|
extern void PlayerDestroy(Player* self);
|
||||||
extern void PlayerDraw(Player* self);
|
extern void PlayerDraw(Player* self);
|
||||||
|
|
||||||
|
extern void PlayerInputHorizontal(Player* self, InputEvent event);
|
||||||
|
extern void PlayerInputVertical(Player* self, InputEvent event);
|
||||||
|
|
||||||
extern Sprite* PlayerGetSprite(Player* self);
|
extern Sprite* PlayerGetSprite(Player* self);
|
||||||
extern Transform* PlayerGetTransform(Player* self);
|
extern Transform* PlayerGetTransform(Player* self);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue