From 45462a3ba7e7e1dee2d56073ae9800bdb1a32b97 Mon Sep 17 00:00:00 2001 From: dr20ervin Date: Tue, 26 May 2026 22:59:14 +0300 Subject: [PATCH] Embed resources and update asset loading system --- icon.ico | Bin 0 -> 40856 bytes icon.jpg | Bin 0 -> 42586 bytes icon.svg | 1 + include/game.h | 20 +++++++------ include/raylib.h | 2 +- include/resource.h | 15 ++++++++++ pong-reloaded.vcxproj | 7 +++++ pong-reloaded.vcxproj.filters | 25 +++++++++++++--- resources.rc | 15 ++++++++++ src/game.cpp | 11 +++++-- src/main.cpp | 19 +++++++------ src/resource_loader.cpp | 52 ++++++++++++++++++++++++++++++++++ 12 files changed, 143 insertions(+), 24 deletions(-) create mode 100644 icon.ico create mode 100644 icon.jpg create mode 100644 icon.svg create mode 100644 include/resource.h create mode 100644 resources.rc create mode 100644 src/resource_loader.cpp diff --git a/icon.ico b/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..1aded3f7b9a291e8e304a96357ee12cbbddecfe7 GIT binary patch literal 40856 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 YKat9EA9{h=Q2+n{07*qoM6N<$f;QS5+5i9m literal 0 HcmV?d00001 diff --git a/icon.jpg b/icon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..85390711d3089bd9caadc94531ee107c1f95f308 GIT binary patch literal 42586 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 a5~5eY`7&QWn#B<(|89qp5L$hHiv9vUp?l8& literal 0 HcmV?d00001 diff --git a/icon.svg b/icon.svg new file mode 100644 index 0000000..b82794d --- /dev/null +++ b/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/include/game.h b/include/game.h index 8d6059a..1938abe 100644 --- a/include/game.h +++ b/include/game.h @@ -65,6 +65,10 @@ struct GameContext { Sound scoreSound = { 0 }; }; +// Asset loading helpers +Texture2D LoadTextureFromResource(int id); +Sound LoadSoundFromResource(int id); + // Forward declarations class Ball; class Paddle; @@ -99,10 +103,10 @@ public: float width; float height; Texture2D texture; - Paddle(Vector2 pos, Color c, float w, float h, const std::string& texturePath = "") + Paddle(Vector2 pos, Color c, float w, float h, int textureId = 0) : GameObject(pos, c), width(w), height(h) { - if (!texturePath.empty()) { - texture = LoadTexture(texturePath.c_str()); + if (textureId > 0) { + texture = LoadTextureFromResource(textureId); } else { texture = { 0 }; } @@ -125,10 +129,10 @@ public: Texture2D texture; public: - Ball(Vector2 pos, Color c, float r, const std::string& texturePath = "") + Ball(Vector2 pos, Color c, float r, int textureId = 0) : GameObject(pos, c), radius(r), velocity({ 5.0f, 5.0f }) { - if (!texturePath.empty()) { - texture = LoadTexture(texturePath.c_str()); + if (textureId > 0) { + texture = LoadTextureFromResource(textureId); } else { texture = { 0 }; } @@ -150,8 +154,8 @@ private: Difficulty currentDifficulty; public: - CpuPaddle(Vector2 pos, Color c, float w, float h, Difficulty diff = Difficulty::Normal, const std::string& texturePath = "") - : Paddle(pos, c, w, h, texturePath) { + CpuPaddle(Vector2 pos, Color c, float w, float h, Difficulty diff = Difficulty::Normal, int textureId = 0) + : Paddle(pos, c, w, h, textureId) { SetDifficulty(diff); } diff --git a/include/raylib.h b/include/raylib.h index bdca643..fc27e85 100644 --- a/include/raylib.h +++ b/include/raylib.h @@ -1333,7 +1333,7 @@ RLAPI Vector2 GetSplinePointBezierCubic(Vector2 p1, Vector2 c2, Vector2 c3, Vect // Basic shapes collision detection functions RLAPI bool CheckCollisionRecs(Rectangle rec1, Rectangle rec2); // Check collision between two rectangles RLAPI bool CheckCollisionCircles(Vector2 center1, float radius1, Vector2 center2, float radius2); // Check collision between two circles -RLAPI bool CheckCollisionCircleRec(Vector2 center, float radius, Rectangle rec); // Check collision between circle and rectangle +RLAPI bool CheckCollisionCircleRec(Vector2 center, float radius, Rectangle rec); // Check collision between circle and rectangle` RLAPI bool CheckCollisionCircleLine(Vector2 center, float radius, Vector2 p1, Vector2 p2); // Check if circle collides with a line created betweeen two points [p1] and [p2] RLAPI bool CheckCollisionPointRec(Vector2 point, Rectangle rec); // Check if point is inside rectangle RLAPI bool CheckCollisionPointCircle(Vector2 point, Vector2 center, float radius); // Check if point is inside circle diff --git a/include/resource.h b/include/resource.h new file mode 100644 index 0000000..2acf0be --- /dev/null +++ b/include/resource.h @@ -0,0 +1,15 @@ +#pragma once + +#define IDI_ICON1 100 + +#define IDR_TEX_BASIC_SPACE 101 +#define IDR_TEX_WALLS 102 +#define IDR_TEX_LINE 103 +#define IDR_TEX_BALL 104 +#define IDR_TEX_PADDLE 105 +#define IDR_TEX_PADDLE2 106 + +#define IDR_SND_PADDLE_HIT 201 +#define IDR_SND_WALL_HIT 202 +#define IDR_SND_SCORE 203 +#define IDR_SND_BANANA 204 diff --git a/pong-reloaded.vcxproj b/pong-reloaded.vcxproj index ec1dc7c..6edd521 100644 --- a/pong-reloaded.vcxproj +++ b/pong-reloaded.vcxproj @@ -131,6 +131,7 @@ + $(ProjectDir)/include;%(AdditionalIncludeDirectories) $(ProjectDir)/include;%(AdditionalIncludeDirectories) @@ -143,8 +144,12 @@ + + + + @@ -152,6 +157,8 @@ + + diff --git a/pong-reloaded.vcxproj.filters b/pong-reloaded.vcxproj.filters index 7387a9c..bf8fd42 100644 --- a/pong-reloaded.vcxproj.filters +++ b/pong-reloaded.vcxproj.filters @@ -1,10 +1,6 @@  - - {4FC737F1-C7A5-4376-A066-2A32D752A2FF} - cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx - {93995380-89BD-4b04-88EB-625FBE52EBFB} h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd @@ -22,6 +18,10 @@ {5f42ff18-01e2-4266-a4e0-6dc77ba54e75} + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx + @@ -33,6 +33,9 @@ Source Files + + Source Files + @@ -50,6 +53,9 @@ Header Files + + Header Files + @@ -70,6 +76,12 @@ Resource Files\textures + + Resource Files + + + Resource Files + @@ -85,4 +97,9 @@ Resource Files\audio + + + Resource Files + + \ No newline at end of file diff --git a/resources.rc b/resources.rc new file mode 100644 index 0000000..896ecd1 --- /dev/null +++ b/resources.rc @@ -0,0 +1,15 @@ +#include "include/resource.h" + +IDI_ICON1 ICON "icon.ico" + +IDR_TEX_BASIC_SPACE RCDATA "assets/textures/spaces/basic_space.png" +IDR_TEX_WALLS RCDATA "assets/textures/spaces/walls.png" +IDR_TEX_LINE RCDATA "assets/textures/hud/line.png" +IDR_TEX_BALL RCDATA "assets/textures/ball/basic_ball_5.png" +IDR_TEX_PADDLE RCDATA "assets/textures/paddles/basic_paddle.png" +IDR_TEX_PADDLE2 RCDATA "assets/textures/paddles/basic_paddle_2.png" + +IDR_SND_PADDLE_HIT RCDATA "assets/audio/paddle_hit.ogg" +IDR_SND_WALL_HIT RCDATA "assets/audio/wall_hit.ogg" +IDR_SND_SCORE RCDATA "assets/audio/score.ogg" +IDR_SND_BANANA RCDATA "assets/audio/banana_wall_hit.ogg" diff --git a/src/game.cpp b/src/game.cpp index b54c815..62ad13c 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -112,6 +112,13 @@ void DrawCourt(const GameContext& ctx, int screenWidth, int screenHeight) { lineY += ctx.lineTexture.height; } + // Solid background for walls to prevent transparent edge bleeding + Color wallBg = Color{ 72, 85, 107, 255 }; + DrawRectangle(0, 0, screenWidth, 20, wallBg); + DrawRectangle(0, screenHeight - 20, screenWidth, 20, wallBg); + DrawRectangle(0, 0, 20, screenHeight, wallBg); + DrawRectangle(screenWidth - 20, 0, 20, screenHeight, wallBg); + // Border walls (top, bottom, left, right) DrawTexturePro(ctx.wallsTexture, Rectangle{ 0.0f, 0.0f, (float)ctx.wallsTexture.width, (float)ctx.wallsTexture.height }, Rectangle{ 0.0f, 0.0f, (float)screenWidth, 20.0f }, Vector2{ 0.0f, 0.0f }, 0.0f, WHITE); DrawTexturePro(ctx.wallsTexture, Rectangle{ 0.0f, 0.0f, (float)ctx.wallsTexture.width, (float)ctx.wallsTexture.height }, Rectangle{ 0.0f, (float)screenHeight - 20.0f, (float)screenWidth, 20.0f }, Vector2{ 0.0f, 0.0f }, 0.0f, WHITE); @@ -167,7 +174,7 @@ void UpdatePlayingState(GameContext& ctx, Ball& ball, Paddle& player, CpuPaddle& } } } -} +} void DrawPlayingState(const GameContext& ctx, Ball& ball, Paddle& player, CpuPaddle& cpu, int screenWidth, int screenHeight) { DrawCourt(ctx, screenWidth, screenHeight); @@ -238,7 +245,7 @@ void UpdateMultiplayerState(GameContext& ctx, Ball& ball, Paddle& player, CpuPad // Scoring rules int screen_width = GetScreenWidth(); - if (ball.position.x + ball.radius >= screen_width - 20.0f) { + if (ball.position.x + ball.radius >= screen_width - 30.0f) { ctx.score.player2_score++; if (ctx.config.sfxEnabled) PlaySound(ctx.scoreSound); if (ctx.score.player2_score >= ctx.config.maxScore) { diff --git a/src/main.cpp b/src/main.cpp index b0726a6..53167c0 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,6 +1,7 @@ #include #include "game.h" #include "menu.h" +#include "resource.h" // Global colors Color Green = Color{ 38, 185, 154, 255 }; @@ -21,34 +22,34 @@ int main() { GameContext ctx; // Asset textures loading - ctx.courtBackground = LoadTexture("assets/textures/spaces/basic_space.png"); - ctx.wallsTexture = LoadTexture("assets/textures/spaces/walls.png"); - ctx.lineTexture = LoadTexture("assets/textures/hud/line.png"); + ctx.courtBackground = LoadTextureFromResource(IDR_TEX_BASIC_SPACE); + ctx.wallsTexture = LoadTextureFromResource(IDR_TEX_WALLS); + ctx.lineTexture = LoadTextureFromResource(IDR_TEX_LINE); // Audio assets loading - ctx.paddleHitSound = LoadSound("assets/audio/paddle_hit.ogg"); - ctx.wallHitSound = LoadSound("assets/audio/wall_hit.ogg"); - ctx.scoreSound = LoadSound("assets/audio/score.ogg"); + ctx.paddleHitSound = LoadSoundFromResource(IDR_SND_PADDLE_HIT); + ctx.wallHitSound = LoadSoundFromResource(IDR_SND_WALL_HIT); + ctx.scoreSound = LoadSoundFromResource(IDR_SND_SCORE); // Entities instantiation Ball ball( Vector2{ screen_width / 2.0f, screen_height / 2.0f }, Yellow, 20.0f, - "assets/textures/ball/basic_ball_5.png" + IDR_TEX_BALL ); ResetBall(ball); Paddle player( Vector2{ screen_width - 20.0f - 10.0f - 25.0f, screen_height / 2.0f - 60.0f }, WHITE, 25.0f, 120.0f, - "assets/textures/paddles/basic_paddle.png" + IDR_TEX_PADDLE ); CpuPaddle cpu( Vector2{ 20.0f + 10.0f, screen_height / 2.0f - 60.0f }, WHITE, 25.0f, 120.0f, Difficulty::Normal, - "assets/textures/paddles/basic_paddle_2.png" + IDR_TEX_PADDLE2 ); // Menu instantiation diff --git a/src/resource_loader.cpp b/src/resource_loader.cpp new file mode 100644 index 0000000..94e78b9 --- /dev/null +++ b/src/resource_loader.cpp @@ -0,0 +1,52 @@ +#define CloseWindow Win32_CloseWindow +#define ShowCursor Win32_ShowCursor +#define Rectangle Win32_Rectangle +#define PlaySound Win32_PlaySound +#define LoadImage Win32_LoadImage +#define DrawText Win32_DrawText +#define DrawTextEx Win32_DrawTextEx + +#define WIN32_LEAN_AND_MEAN +#include + +#undef CloseWindow +#undef ShowCursor +#undef Rectangle +#undef PlaySound +#undef LoadImage +#undef DrawText +#undef DrawTextEx + +#include "game.h" + +Texture2D LoadTextureFromResource(int id) { + Texture2D texture = { 0 }; + HRSRC hResInfo = FindResource(NULL, MAKEINTRESOURCE(id), RT_RCDATA); + if (!hResInfo) return texture; + HGLOBAL hResData = LoadResource(NULL, hResInfo); + if (!hResData) return texture; + int size = SizeofResource(NULL, hResInfo); + unsigned char* data = (unsigned char*)LockResource(hResData); + if (!data) return texture; + + Image img = LoadImageFromMemory(".png", data, size); + texture = LoadTextureFromImage(img); + UnloadImage(img); + return texture; +} + +Sound LoadSoundFromResource(int id) { + Sound sound = { 0 }; + HRSRC hResInfo = FindResource(NULL, MAKEINTRESOURCE(id), RT_RCDATA); + if (!hResInfo) return sound; + HGLOBAL hResData = LoadResource(NULL, hResInfo); + if (!hResData) return sound; + int size = SizeofResource(NULL, hResInfo); + unsigned char* data = (unsigned char*)LockResource(hResData); + if (!data) return sound; + + Wave wave = LoadWaveFromMemory(".ogg", data, size); + sound = LoadSoundFromWave(wave); + UnloadWave(wave); + return sound; +}