summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBoredGuy <osome3717@gmail.com>2025-08-26 19:54:09 +0300
committerBoredGuy <osome3717@gmail.com>2025-08-26 19:54:09 +0300
commitf95068d73410aa6d01e8ba91b430ca05d404a57b (patch)
tree84de322f972182510e48aaa374ae8a62ac3ee2b5 /src
parent87d07175058ee4ae18fce608de81c68d7d9bb178 (diff)
Added barrel, next up sprite Z-sorting(ugh)
Diffstat (limited to 'src')
-rw-r--r--src/assets.c5
-rw-r--r--src/background.c1
-rw-r--r--src/barrel.c41
-rw-r--r--src/game.c8
-rw-r--r--src/main.c2
-rw-r--r--src/player.c7
6 files changed, 57 insertions, 7 deletions
diff --git a/src/assets.c b/src/assets.c
index f6d4792..7fb6477 100644
--- a/src/assets.c
+++ b/src/assets.c
@@ -24,6 +24,11 @@ Asset assets[] = {
.type = Texture_Asset,
.name = "player-body",
.filePath = "assets/art/characters/player.png"
+ },
+ {
+ .type = Texture_Asset,
+ .name = "barrel",
+ .filePath = "assets/art/props/barrel.png"
}
};
diff --git a/src/background.c b/src/background.c
index d3647cf..7929fa1 100644
--- a/src/background.c
+++ b/src/background.c
@@ -37,6 +37,7 @@ void AddBackground(const char* backgroundTextureName) {
.layer = Background_Layer,
.numAnimations = 0,
+ .srcRect = {0, 0, backgroundTexture.width, backgroundTexture.height},
.destRect = {NO_OFFSET, NO_OFFSET, backgroundBounds.x, backgroundBounds.y}
};
diff --git a/src/barrel.c b/src/barrel.c
new file mode 100644
index 0000000..b0ce9a7
--- /dev/null
+++ b/src/barrel.c
@@ -0,0 +1,41 @@
+#include "barrel.h"
+#include "barrel_data.h"
+#include "utils.h"
+#include "assets.h"
+
+void AddBarrel(float xpos, float ypos) {
+ Entity barrel = {0};
+ barrel.type = Barrel_Entity;
+
+ barrel.position = (Vector2) {xpos, ypos};
+ barrel.flags |= (ENTITY_PHYSICS_ACTIVE | ENTITY_VISIBLE);
+
+ Asset* barrelTexture = GetMatchingAssetExitOnFail("barrel", Texture_Asset);
+
+ Sprite barrelSprite = (Sprite) {
+ .texture = barrelTexture->texture,
+ .layer = Foreground_Layer,
+
+ .destRect = destRect,
+ .srcRect = {
+ .x = 0,
+ .y = 0,
+ .width = barrelTexture->texture.width / 2,
+ .height = barrelTexture->texture.height
+ }
+ };
+
+ AddSpriteToEntity(&barrel, barrelSprite);
+
+ barrel.physicsCollider = physicsCollider;
+
+#ifdef BEATEMUP_DEBUG
+ barrel.physicsColliderColor = RED;
+#endif
+
+ AddEntity(&barrel);
+}
+
+void UpdateBarrel(float dt) {
+ UNUSED(dt);
+}
diff --git a/src/game.c b/src/game.c
index d6e8ce3..59747c6 100644
--- a/src/game.c
+++ b/src/game.c
@@ -56,7 +56,6 @@ void UpdateGame(float deltaTime) {
game.enableDebugOverlay = !game.enableDebugOverlay;
}
#endif
-
for (int i = 0; i < MAX_ENTITY_COUNT; i++) {
Entity* e = &game.entities[i];
@@ -70,12 +69,7 @@ void DrawEntitySprite(const Entity* e, int spriteIndex) {
Rectangle srcRect;
if (!IsAnimated(drawnSprite)) {
- srcRect = (Rectangle) {
- .x = 0,
- .y = 0,
- .width = drawnSprite->texture.width,
- .height = drawnSprite->texture.height
- };
+ srcRect = drawnSprite->srcRect;
} else {
const Animation* currentAnimation =
&drawnSprite->animations[drawnSprite->currentAnimation];
diff --git a/src/main.c b/src/main.c
index f5be59f..7032ca9 100644
--- a/src/main.c
+++ b/src/main.c
@@ -4,6 +4,7 @@
#include "game.h"
#include "background.h"
#include "player.h"
+#include "barrel.h"
int main() {
InitWindow(WINDOW_WIDTH, WINDOW_HEIGHT, "My BeatEmup");
@@ -15,6 +16,7 @@ int main() {
AddBackground("bar-background");
AddPlayer(0, 400);
AddWall(0, 160, 1000000, 100);
+ AddBarrel(200, 400);
while(!WindowShouldClose()) {
UpdateGame(GetFrameTime());
diff --git a/src/player.c b/src/player.c
index ca5d3c0..896f33e 100644
--- a/src/player.c
+++ b/src/player.c
@@ -100,6 +100,13 @@ static void AddPlayerSprites(Entity* player) {
.layer = Foreground_Layer,
.destRect = shadowDestRect,
+ .srcRect = {
+ 0,
+ 0,
+ shadowTexture->texture.width,
+ shadowTexture->texture.height
+ },
+
.numAnimations = 0, //Not an animated sprite
};
AddSpriteToEntity(player, shadowSprite);