From 2129ea4f8c71e8d381d242dd060de2f21f79d2c1 Mon Sep 17 00:00:00 2001 From: Bill Rossi Date: Thu, 27 Feb 2025 06:28:53 -0500 Subject: [PATCH] Intro --- img/made_by_bgb.aseprite | Bin 0 -> 9260 bytes img/made_by_bgb.png | Bin 0 -> 7124 bytes img/made_w_raylib.aseprite | Bin 0 -> 8890 bytes img/made_w_raylib.png | Bin 0 -> 6623 bytes intro.c | 68 +++++++++++++++++++++++++++++++++++++ intro.h | 27 +++++++++++++++ main.c | 7 ++++ 7 files changed, 102 insertions(+) create mode 100644 img/made_by_bgb.aseprite create mode 100644 img/made_by_bgb.png create mode 100644 img/made_w_raylib.aseprite create mode 100644 img/made_w_raylib.png create mode 100644 intro.c create mode 100644 intro.h diff --git a/img/made_by_bgb.aseprite b/img/made_by_bgb.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..108d9377ec5e25e8c03f86c8e375820ddaa0cf05 GIT binary patch literal 9260 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 C5^-7p literal 0 HcmV?d00001 diff --git a/img/made_by_bgb.png b/img/made_by_bgb.png new file mode 100644 index 0000000000000000000000000000000000000000..82027a4612db665ddd019d7dc1301f2b2d1453d7 GIT binary patch literal 7124 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 literal 0 HcmV?d00001 diff --git a/img/made_w_raylib.aseprite b/img/made_w_raylib.aseprite new file mode 100644 index 0000000000000000000000000000000000000000..42486a1e472f907741cc844e0e895f13bcb6fbce GIT binary patch literal 8890 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�o&Ufn zW#dC!RJNmlW!YO&FMsmLz$LZs2L$ixg zadmL_aMd-K0rF0JGO$DRYl}b_3x~Lo_o^pRoD$_cePK)kvwO@&V85e2CO*pw))JG@27&G`!|LGAq+l^m=$U(E~%-CL{?1=SZP`%-d}yK*s)Brv?)Qt-K(KN{0fL;(^u(NT0W)Vt! zd}FEj;xCP*VG?2mx$Hc}vn8&B`_`MftB~&>0QvX;k~1I&c`EvSpTlpVM3#jBt*TDa z(SCj{DLY1U&xB9e_}$*cpN>B0;{w_(hi49LhLx!!?}&@-@0+;Ji6ovw;>44Z%pUIT zq@>~}`u73f=R$G^jK!=Jy3;U$RtNLdAg=I+YWWDX-ZCL`|hmLf5SjRQ{PqPy^zXuq)G0>w>5PgbhN?cp8}0p zTikua@H!_e@#P!<<^!#2&C{uL_bDnHUBjBZNrB9ymy5*gnP0$N&YpCF(`>%8Ey?+# zJCBwg>g?vq7GY1WYm$t#!>!DOz4{N?;Zjl&hZ-LgIxWk`?Q=-2zWhMJo%K>+-g*GO zjSd$o1_CxGgF{oX7h(tz_fQnkJ|A2I`CK3Rf8ib-qs zP}VXgRTZmYwxG0KcbW79@<}B1_v;VeeA5!!wtu83521Mwh-4l(CXQkI?inZFiR=XR z4jyokuOWDVq)nz|arfp8JR8WOZNCb~f2C+3naKd8*1CD@c!P#KQ+y+iI5bI=_h%Vc zyBz!#5N. +#include +#include "intro.h" + +#define FONT_SIZE 36 + +void display_loading(void) { + int window_width = GetRenderWidth(); + int window_height = GetRenderHeight(); + int loading_width = MeasureText("Loading...", FONT_SIZE); + BeginDrawing(); + DrawText("Loading...", window_width - loading_width, window_height - FONT_SIZE, FONT_SIZE, RAYWHITE); + EndDrawing(); +} + +Intro *load_intro(void) { + Intro *i = malloc(sizeof(Intro)); + i->textures = malloc(sizeof(Texture) * 2); + + Image bgb = LoadImage("img/made_by_bgb.png"); + i->textures[0] = LoadTextureFromImage(bgb); + UnloadImage(bgb); + + Image ray = LoadImage("img/made_w_raylib.png"); + i->textures[1] = LoadTextureFromImage(ray); + UnloadImage(ray); + + i->texture_count = 2; + i->timer = 0.; + return i; +} + +#define SLIDE_TIME 3.0 +#define FADE_IN_TIME 0.5 +#define FADE_OUT_TIME 0.5 +void intro_display(Intro *intro) { + float frame_time, elapsed_time, alpha; + for (int i = 0; i < intro->texture_count; i++) { + intro->timer = GetTime() + SLIDE_TIME; + while((frame_time = GetTime()) < intro->timer) { + if (WindowShouldClose()) exit(0); + elapsed_time = SLIDE_TIME - (intro->timer - frame_time); + if (elapsed_time < FADE_IN_TIME) + alpha = ((FADE_IN_TIME - elapsed_time) / FADE_IN_TIME) * 255.; + else if (elapsed_time > SLIDE_TIME - FADE_OUT_TIME) + alpha = ((elapsed_time - (SLIDE_TIME - FADE_OUT_TIME)) / FADE_OUT_TIME) * 255.; + else + alpha = 0; + + BeginDrawing(); + DrawRectangle(0, 0, GetRenderWidth(), GetRenderHeight(), (Color) { 34, 32, 52, 255 }); + DrawTexture(intro->textures[i], + GetRenderWidth() / 2 - intro->textures->width / 2, + GetRenderHeight() / 2 - intro->textures->height / 2, + WHITE); + DrawRectangle(0, 0, GetRenderWidth(), GetRenderHeight(), (Color) { 0, 0, 0, alpha }); + EndDrawing(); + } + } +} diff --git a/intro.h b/intro.h new file mode 100644 index 0000000..b3af633 --- /dev/null +++ b/intro.h @@ -0,0 +1,27 @@ +// Copyright 2025 Bill Rossi +// +// This file is part of Hanafuda Hachi-Hachi. +// +// Hanafuda Hachi-Hachi is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. +// +// Hanafuda Hachi-Hachi is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License along with Hanafuda Hachi-Hachi. If not, see . +#ifndef _FD_INTRO_ +#define _FD_INTRO_ + +typedef struct Intro Intro; + +#include + +struct Intro { + Texture *textures; + int texture_count; + double timer; +}; + +void display_loading(void); +Intro *load_intro(void); +void intro_display(Intro *i); + +#endif diff --git a/main.c b/main.c index 115f0c1..89ef693 100644 --- a/main.c +++ b/main.c @@ -15,6 +15,7 @@ #include +#include "intro.h" #include "game.h" int main(int argc, char** argv) { @@ -22,6 +23,12 @@ int main(int argc, char** argv) { InitWindow(1400, 900, "Hanafuda Hachi-Hachi"); SetTargetFPS(60); + if (!getenv("SKIP_INTRO") || strcmp(getenv("SKIP_INTRO"), "1") != 0) { + display_loading(); + Intro *i = load_intro(); + intro_display(i); + } + Game g; initialize_game(&g);