summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAshif Khan <[email protected]>2026-09-12 21:02:32 +0530
committerAshif Khan <[email protected]>2026-09-12 21:02:32 +0530
commitd99db5b7b663583d5eb26994336e8bb809f00529 (patch)
treebb5ee6938d3744dde3269d8da0c65ec2bb2b1dbb
parentffd968a26826108ca9fb23d46ed5789260852eb7 (diff)
tweaking
-rw-r--r--assets/img/arrowhead.pngbin1060 -> 590 bytes
-rw-r--r--assets/img/forest.pngbin3816 -> 3812 bytes
-rw-r--r--assets/img/forest2.pngbin3777 -> 3781 bytes
-rw-r--r--assets/img/talk.pngbin1968 -> 1184 bytes
-rw-r--r--game/graphics.hpp52
-rw-r--r--game/story.hpp180
-rw-r--r--lib/gameState.hpp8
-rw-r--r--main.cpp5
-rw-r--r--screen/gameplay.cpp26
-rw-r--r--screen/main_menu.cpp5
10 files changed, 173 insertions, 103 deletions
diff --git a/assets/img/arrowhead.png b/assets/img/arrowhead.png
index a703863..cc0960d 100644
--- a/assets/img/arrowhead.png
+++ b/assets/img/arrowhead.png
Binary files differ
diff --git a/assets/img/forest.png b/assets/img/forest.png
index b31366a..c1c21d5 100644
--- a/assets/img/forest.png
+++ b/assets/img/forest.png
Binary files differ
diff --git a/assets/img/forest2.png b/assets/img/forest2.png
index 83380f8..0a94069 100644
--- a/assets/img/forest2.png
+++ b/assets/img/forest2.png
Binary files differ
diff --git a/assets/img/talk.png b/assets/img/talk.png
index 6585ea4..b0344f0 100644
--- a/assets/img/talk.png
+++ b/assets/img/talk.png
Binary files differ
diff --git a/game/graphics.hpp b/game/graphics.hpp
index b4ff3b0..f6590cc 100644
--- a/game/graphics.hpp
+++ b/game/graphics.hpp
@@ -8,35 +8,32 @@
constexpr float TRANSITION_TIME = 1.5f; // in seconds
-inline void drawCirno(GameState &gs) {
+Texture2D getCirno(GameState &gs)
+{
switch (gs.curExp) {
case NEUTRAL:
- DrawTextureV(gs.AssetManager.load("cirno-neutral"), CIRNO_SPRITE_POSITION, WHITE);
- break;
+ return gs.AssetManager.load("cirno-neutral");
case PISSED:
- DrawTextureV(gs.AssetManager.load("cirno-pissed"), CIRNO_SPRITE_POSITION, WHITE);
- break;
+ return gs.AssetManager.load("cirno-pissed");
case HURT:
- DrawTextureV(gs.AssetManager.load("cirno-hurt"), CIRNO_SPRITE_POSITION, WHITE);
- break;
+ return gs.AssetManager.load("cirno-hurt");
case JOY:
- DrawTextureV(gs.AssetManager.load("cirno-joy"), CIRNO_SPRITE_POSITION, WHITE);
- break;
+ return gs.AssetManager.load("cirno-joy");
case WOW:
- DrawTextureV(gs.AssetManager.load("cirno-wow"), CIRNO_SPRITE_POSITION, WHITE);
- break;
+ return gs.AssetManager.load("cirno-wow");
case TIERED:
- DrawTextureV(gs.AssetManager.load("cirno-tiered"), CIRNO_SPRITE_POSITION, WHITE);
- break;
+ return gs.AssetManager.load("cirno-tiered");
case LAUGH:
- DrawTextureV(gs.AssetManager.load("cirno-laugh"), CIRNO_SPRITE_POSITION, WHITE);
- break;
+ return gs.AssetManager.load("cirno-laugh");
case RELAXED:
- DrawTextureV(gs.AssetManager.load("cirno-relaxed"), CIRNO_SPRITE_POSITION, WHITE);
- break;
+ return gs.AssetManager.load("cirno-relaxed");
}
}
+inline void drawCirno(GameState &gs) {
+ DrawTextureV(getCirno(gs), CIRNO_SPRITE_POSITION, WHITE);
+}
+
inline Texture2D getCurrentScene(GameState &gs) {
switch (gs.curPos) {
case INSIDE:
@@ -71,8 +68,9 @@ inline Texture2D getCurrentScene(GameState &gs, POSITION scene) {
inline void DrawSceneChange(GameState &gs) {
if (gs.timeSinceSceneChange < TRANSITION_TIME) {
- float t = Clamp(gs.timeSinceSceneChange / TRANSITION_TIME, 0.0f, 1.0f);
+ float t = Clamp(gs.timeSinceSceneChange / (TRANSITION_TIME / 2), 0.0f, 1.0f);
float a = 0.5f - 0.5f * cosf(t * PI);
+
DrawTextureV(getCurrentScene(gs, gs.prevPos),
ZERO_VEC,
ColorAlpha(WHITE, 1.0f - a));
@@ -80,8 +78,24 @@ inline void DrawSceneChange(GameState &gs) {
DrawTextureV(getCurrentScene(gs, gs.curPos),
ZERO_VEC,
ColorAlpha(WHITE, a));
+
+ if (gs.timeSinceSceneChange > (TRANSITION_TIME/2)) {
+ float halfTime = gs.timeSinceSceneChange - (TRANSITION_TIME / 2);
+ float t2 = Clamp(halfTime / (TRANSITION_TIME / 2), 0.0f, 1.0f);
+ float a2 = 0.5f - 0.5f * cosf(t2 * PI);
+
+ DrawTextureV(getCirno(gs),
+ CIRNO_SPRITE_POSITION,
+ ColorAlpha(WHITE, a2));
+
+ if (gs.curExp != HURT && gs.flowerOnHead) {
+ DrawTextureV(gs.AssetManager.load("flower"), ZERO_VEC, ColorAlpha(WHITE, a2));
+ }
+ }
+
gs.timeSinceSceneChange = gs.timeSinceSceneChange + GetFrameTime();
- } else {
+ }
+ else {
gs.timeSinceSceneChange = -1.0f;
}
}
diff --git a/game/story.hpp b/game/story.hpp
index ef06d13..d9053f6 100644
--- a/game/story.hpp
+++ b/game/story.hpp
@@ -8,18 +8,23 @@
#define CIRNO_DIALOG "Cirno",
inline void ProcessClick(GameState &gs) {
+ if (gs.GameOver) return;
+ if (gs.DialogueOnlyInput) return;
+
if (CheckCollisionPointRec(gs.currentMousePos, Forehead)) {
if (gs.flickCount == 0) {
SayDialog(gs, std::vector<Dialogues>{
- {CIRNO_DIALOG HURT, "owww"},
- {CIRNO_DIALOG PISSED, "it hurts. You are mean!"},
+ {CIRNO_DIALOG HURT, "Owww"},
+ {CIRNO_DIALOG PISSED, "It hurts."},
{CIRNO_DIALOG PISSED, "Why did you do that?"}
});
+ gs.flickCount++;
} else if (gs.flickCount == 1) {
SayDialog(gs, std::vector<Dialogues> {
{CIRNO_DIALOG HURT, "You did it again!"},
- {CIRNO_DIALOG PISSED, "Owww, it hurts.\nStop it!"},
+ {CIRNO_DIALOG PISSED, "Stop it!"},
});
+ gs.flickCount++;
} else if (gs.flickCount == 2) {
SayDialog(gs, std::vector<Dialogues> {
{CIRNO_DIALOG PISSED, "No, I won't let you\ndo it again"},
@@ -27,62 +32,63 @@ inline void ProcessClick(GameState &gs) {
});
gs.explored.insert(1);
}
- gs.flickCount++;
}
else if (CheckCollisionPointRec(gs.currentMousePos, UI_arrowBtn)) {
if (gs.curPos == INSIDE) {
changeSceneTo(gs, OUTSIDE);
- SayDialog(gs, std::vector<Dialogues> {
- {CIRNO_DIALOG WOW, "This is where I live"},
- });
gs.explored.insert(2);
} else if (gs.curPos == OUTSIDE) {
changeSceneTo(gs, FOREST);
- SayDialog(gs, std::vector<Dialogues> {
- {CIRNO_DIALOG LAUGH, "Let's freeze some\nfrogs!"},
- });
gs.explored.insert(3);
} else if (gs.curPos == FOREST) {
changeSceneTo(gs, INSIDE);
- SayDialog(gs, std::vector<Dialogues> {
- {CIRNO_DIALOG RELAXED, "Back in sweet cozy\nhome!"}
- });
- gs.explored.insert(4);
}
} else if (CheckCollisionPointRec(gs.currentMousePos, UI_talkBtn)) {
- if (!gs.usedTalkButton) {
+ if (gs.TalkButtonUseCount == 0) {
SayDialog(gs, std::vector<Dialogues> {
{CIRNO_DIALOG RELAXED, "Good Morning"},
});
- gs.usedTalkButton = true;
- } else {
+ gs.TalkButtonUseCount++;
+ } else if (gs.TalkButtonUseCount == 1) {
SayDialog(gs, std::vector<Dialogues> {
{CIRNO_DIALOG JOY, "Having lots of fun is\nwhat matters."},
{CIRNO_DIALOG RELAXED, "Imagine having no fun\nand being grumpy\nall the time."},
- {CIRNO_DIALOG JOY, "Next time, when you come,\nwe can play together."},
- {CIRNO_DIALOG JOY, "With Daiyousei and\nthe other fairies."},
+ });
+ gs.TalkButtonUseCount++;
+ } else if (gs.TalkButtonUseCount == 2) {
+ SayDialog(gs, std::vector<Dialogues> {
+ {CIRNO_DIALOG JOY, "Next time, when you come,\nwe can play together with\nDaiyousei and the other"},
+ {CIRNO_DIALOG JOY, "fairies."},
+ });
+ gs.TalkButtonUseCount++;
+ } else if (gs.TalkButtonUseCount == 3) {
+ SayDialog(gs, std::vector<Dialogues> {
{CIRNO_DIALOG RELAXED, "It would be nice if\nwinter comes soon."},
{CIRNO_DIALOG JOY, "I want to skate on the\nmisty lake with Letty."},
- {CIRNO_DIALOG WOW, "I am the smartest\nin Gensokyo."},
- {CIRNO_DIALOG WOW, "I can add and multiply\nfractions!"},
+ });
+ gs.TalkButtonUseCount++;
+ } else if (gs.TalkButtonUseCount == 4) {
+ SayDialog(gs, std::vector<Dialogues> {
+ {CIRNO_DIALOG WOW, "I am the smartest in\nGensokyo. I can add\nand multiply fractions!"},
{CIRNO_DIALOG LAUGH, "Only a few could rival\nan intellect such\nas mine."}
});
- gs.explored.insert(7);
+ gs.TalkButtonUseCount = 1;
+ gs.explored.insert(4);
}
}
else if (gs.curPos == INSIDE) {
if (CheckCollisionPointRec(gs.currentMousePos, Calendar)) {
SayDialog(gs, std::vector<Dialogues> {
- {CIRNO_DIALOG WOW, "its cirno day, todeh"},
- {CIRNO_DIALOG JOY, "billions must celebrate"}
+ {CIRNO_DIALOG WOW, "Its Cirno Day, todeh."},
+ {CIRNO_DIALOG JOY, "Billions must celebrate\nthis occasion."}
});
gs.explored.insert(5);
}
else if (CheckCollisionPointRec(gs.currentMousePos, Chest)) {
if (gs.chestCount == 0) {
SayDialog(gs, std::vector<Dialogues> {
- {CIRNO_DIALOG WOW, "Hey!! Don't snoop around\nthe chest"},
- {CIRNO_DIALOG TIERED, "It's where I store all my\ntreasures"}
+ {CIRNO_DIALOG WOW, "Hey!! Don't snoop around\nthe chest."},
+ {CIRNO_DIALOG TIERED, "It's where I store all my\ntreasures."}
});
gs.chestCount++;
} else if (gs.chestCount == 1) {
@@ -93,84 +99,108 @@ inline void ProcessClick(GameState &gs) {
}
}
else if (CheckCollisionPointRec(gs.currentMousePos, Futton)) {
- if (gs.explored.size() == 13) {
+ if (gs.explored.size() == 12) {
SayDialog(gs, std::vector<Dialogues> {
- {CIRNO_DIALOG WOW, "I am feeling sleepy\nI had lots of fun with you"},
- {CIRNO_DIALOG TIERED, " I am gonna take a nap\nLet's see tommorow!!"}
+ {CIRNO_DIALOG WOW, "I am feeling sleepy\nI had lots of fun with you."},
+ {CIRNO_DIALOG TIERED, " I am gonna take a nap\nnow. Let's see tommorow!!"}
});
+ gs.GameOver = true;
} else {
SayDialog(gs, std::vector<Dialogues> {
- {CIRNO_DIALOG WOW, "I just woke up before\nyou came"},
- {CIRNO_DIALOG TIERED, "So, I am not sleepy now\nI want to play"}
+ {CIRNO_DIALOG WOW, "I just woke up before\nyou came."},
+ {CIRNO_DIALOG TIERED, "So, I am not sleepy now."}
});
}
}
} else if (gs.curPos == OUTSIDE){
if (CheckCollisionPointRec(gs.currentMousePos, YokaiMountain)) {
- SayDialog(gs, std::vector<Dialogues> {
- {CIRNO_DIALOG WOW, "That's the Youkai Mountain\nThat's where Aya lives"},
- {CIRNO_DIALOG JOY, "She is nosy and snitches\nme to people whenever\nI am up to no good"},
- {CIRNO_DIALOG PISSED, "Bah!! She is annoying!"},
- {CIRNO_DIALOG JOY, "The Moriya shrine is at\nthe very top of the\nYoukai Mountain"},
- {CIRNO_DIALOG WOW, "The deities there,\nare very strong."},
- {CIRNO_DIALOG LAUGH, "Not as strong as me,\nof course!"},
- {CIRNO_DIALOG WOW, "But I like the Hakurei\nshrine more"},
- {CIRNO_DIALOG RELAXED, "Reimu sometimes gives\nme some snacks\nwhen I go there"},
- });
- gs.explored.insert(8);
+ if (gs.MountainClickCount == 0) {
+ SayDialog(gs, std::vector<Dialogues> {
+ {CIRNO_DIALOG WOW, "That's Youkai Mountain\nThat's where Aya\nlives"},
+ {CIRNO_DIALOG JOY, "She is nosy and snitches\nme to people whenever\nI am up to no good"},
+ {CIRNO_DIALOG PISSED, "Bah!! She is annoying!"},
+ });
+ } else if (gs.MountainClickCount == 1) {
+ SayDialog(gs, std::vector<Dialogues> {
+ {CIRNO_DIALOG JOY, "The Moriya shrine is at\nthe very top of the\nYoukai Mountain"},
+ {CIRNO_DIALOG WOW, "The deities there are\nvery strong."},
+ {CIRNO_DIALOG LAUGH, "Not as strong as me,\nof course!"},
+ });
+ gs.explored.insert(7);
+ }
+ gs.MountainClickCount = (gs.MountainClickCount + 1) % 2;
} else if (CheckCollisionPointRec(gs.currentMousePos, MistyLake)) {
SayDialog(gs, std::vector<Dialogues> {
- {CIRNO_DIALOG WOW, "Do you know? There is a\ngiant frog that lives"},
- {CIRNO_DIALOG TIERED, "at the bottom of the lake.\nIt's very very big."},
+ {CIRNO_DIALOG WOW, "Do you know? There is a\ngiant frog that lives at\nthe bottom of the lake."},
+ {CIRNO_DIALOG TIERED, "It's very very big."},
{CIRNO_DIALOG PISSED, "It ate me one time!!"}
});
- gs.explored.insert(9);
+ gs.explored.insert(8);
} else if (CheckCollisionPointRec(gs.currentMousePos, Igloo)) {
SayDialog(gs, std::vector<Dialogues> {
{CIRNO_DIALOG WOW, "My house looks very cool,\nright?"},
- {CIRNO_DIALOG JOY, "It was a lot of work,\nbullying the other fairies\ninto building my house"},
- {CIRNO_DIALOG TIERED, "Though, sometimes they\nbarge into my home to\nplay"}
+ {CIRNO_DIALOG JOY, "It was a lot of work,\nbullying the other fairies\ninto building my house."},
+ {CIRNO_DIALOG TIERED, "Though, they now barge\ninto my home to play,\nwhenever they want,"},
+ {CIRNO_DIALOG TIERED, "without my permission."}
});
- gs.explored.insert(10);
+ gs.explored.insert(9);
} else if (CheckCollisionPointRec(gs.currentMousePos, Flower) && !gs.flowerOnHead) {
- SayDialog(gs, std::vector<Dialogues> {
- {CIRNO_DIALOG JOY, "A flower!"},
- });
- gs.flowerOnHead = true;
- SayDialog(gs, std::vector<Dialogues> {
- {CIRNO_DIALOG WOW, "Do I look cute with\nthis flower on me?"},
- {CIRNO_DIALOG LAUGH, "I like it a lot"}
- });
- gs.explored.insert(11);
+ if (gs.FlowerClickCount == 0) {
+ SayDialog(gs, std::vector<Dialogues> {
+ {CIRNO_DIALOG WOW, "A flower!"},
+ });
+ gs.FlowerClickCount++;
+ } else if (gs.FlowerClickCount == 1) {
+ gs.flowerOnHead = true;
+ SayDialog(gs, std::vector<Dialogues> {
+ {CIRNO_DIALOG JOY, "Do I look cute with\nthis flower on me?"},
+ {CIRNO_DIALOG RELAXED, "I like it a lot"}
+ });
+ gs.explored.insert(10);
+ }
}
} else if (gs.curPos == FOREST) {
if (CheckCollisionPointRec(gs.currentMousePos, Frog)) {
if (!gs.frogDialogDone) {
SayDialog(gs, std::vector<Dialogues> {
- {CIRNO_DIALOG WOW, "Suwako somehow always\ncatches me henever I bully\nfrogs here"},
- {CIRNO_DIALOG JOY, "Let's leave it alone for now\nShe will beat me up"},
- {CIRNO_DIALOG TIERED, "if I get caught red handed"}
+ {CIRNO_DIALOG WOW, "Suwako somehow always\ncatches me whenever I\nbully frogs here"},
+ {CIRNO_DIALOG JOY, "Let's leave it alone for\nnow"},
+ {CIRNO_DIALOG TIERED, "She will beat me\nup if I get caught red\nhanded."}
});
gs.frogDialogDone = true;
- gs.explored.insert(12);
} else {
SayDialog(gs, std::vector<Dialogues> {
- {CIRNO_DIALOG LAUGH, "Ribbit ribbit\nThe frogs make\nfunny noises."},
+ {CIRNO_DIALOG LAUGH, "The frogs make funny\nnoises. Ribbit Ribbit."},
+ });
+ gs.explored.insert(11);
+ }
+ } else if (CheckCollisionPointRec(gs.currentMousePos, RiceCake)) {
+ if (gs.ShrineClickCount == 0) {
+ SayDialog(gs, std::vector<Dialogues> {
+ {CIRNO_DIALOG RELAXED, "It's a small shrine for the\nMoriya gods."},
+ {CIRNO_DIALOG WOW, "That Shrine Maiden Sanae\ncomes here from time to\ntime and takes care of it. "},
+ });
+ gs.ShrineClickCount++;
+ } else if (gs.ShrineClickCount == 1) {
+ SayDialog(gs, std::vector<Dialogues> {
+ {CIRNO_DIALOG JOY, "Look! There is a rice cake\nhere left as an offering."}
+ });
+ gs.ShrineClickCount++;
+ } else if (gs.ShrineClickCount == 2) {
+ gs.riceCakeEaten = true;
+ SayDialog(gs, std::vector<Dialogues> {
+ {CIRNO_DIALOG JOY, "The rice cake magically \ndisappeared!"},
+ {CIRNO_DIALOG RELAXED, ". . .", 0.4f},
+ {CIRNO_DIALOG JOY, "*Burp*"},
+ });
+ gs.explored.insert(12);
+ gs.ShrineClickCount++;
+ } else if (gs.ShrineClickCount == 3) {
+ SayDialog(gs, std::vector<Dialogues> {
+ {CIRNO_DIALOG RELAXED, "It's a small shrine for the\nMoriya gods."},
+ {CIRNO_DIALOG WOW, "That Shrine Maiden Sanae\ncomes here from time to\ntime and takes care of it. "},
});
}
- } else if (CheckCollisionPointRec(gs.currentMousePos, RiceCake) && !gs.riceCakeEaten) {
- SayDialog(gs, std::vector<Dialogues> {
- {CIRNO_DIALOG RELAXED, "It's a small shrine for the\nMoriya gods built by the Kappas"},
- {CIRNO_DIALOG WOW, "The Miko called Sanae comes\nhere from time to time\nand takes care of it. "},
- {CIRNO_DIALOG JOY, "Look! There is a rice cake here\nleft as an offering."}
- });
- gs.explored.insert(13);
- gs.riceCakeEaten = true;
- SayDialog(gs, std::vector<Dialogues> {
- {CIRNO_DIALOG JOY, "The rice cake magically disappeared!"},
- {CIRNO_DIALOG RELAXED, ". . .", 0.4f},
- {CIRNO_DIALOG JOY, "*Burp*"},
- });
}
}
}
diff --git a/lib/gameState.hpp b/lib/gameState.hpp
index 5c718f4..edfedde 100644
--- a/lib/gameState.hpp
+++ b/lib/gameState.hpp
@@ -105,6 +105,12 @@ struct GameState {
bool flowerOnHead = false;
bool riceCakeEaten = false;
bool frogDialogDone = false;
- bool usedTalkButton = false;
+ int TalkButtonUseCount = 0;
+ int MountainClickCount = 0;
+ int FlowerClickCount = 0;
+ int ShrineClickCount = 0;
+ bool DialogueOnlyInput = false;
+ bool GameOver = false;
+ float GameOverTime = -1.0f;
std::set<int> explored = {};
};
diff --git a/main.cpp b/main.cpp
index 138fbb7..cdd850a 100644
--- a/main.cpp
+++ b/main.cpp
@@ -29,7 +29,10 @@ void drawFrame(GameState& currentGameState) {
float renderScale = currentGameState.renderScale;
if (IsDialogRunning(currentGameState)) {
+ currentGameState.DialogueOnlyInput = true;
UpdateDialog(currentGameState);
+ } else {
+ currentGameState.DialogueOnlyInput = false;
}
BeginDrawing();
@@ -120,7 +123,7 @@ int main() {
// };
// TODO : Implement Asset Manager
// DisableCursor();
- g_bgMusic = LoadMusicStream("../assets/audio/bgm/bg.ogg");
+ // g_bgMusic = LoadMusicStream("../assets/audio/bgm/bg.wav");
// PlayMusicStream(g_bgMusic);
SetMusicVolume(g_bgMusic, 0.5f);
currentGameState.AssetManager.init();
diff --git a/screen/gameplay.cpp b/screen/gameplay.cpp
index 2f30c78..430c18d 100644
--- a/screen/gameplay.cpp
+++ b/screen/gameplay.cpp
@@ -13,20 +13,36 @@
void drawGameplay(GameState &gs){
+ if (gs.GameOver && !IsDialogRunning(gs)) {
+ if (gs.GameOverTime == -1.0f){
+ gs.GameOverTime = GetTime();
+ }
+
+ float t = (GetTime() - gs.GameOverTime)/2.0f;
+ if (t > 1.0f) return;
+
+ float a = 0.5f - 0.5f * cosf(t * PI);
+
+ DrawTextureV(getCurrentScene(gs, gs.curPos),
+ ZERO_VEC,
+ ColorAlpha(WHITE, 1.0f - a));
+ return;
+ }
+
if (gs.timeSinceSceneChange == -1) {
DrawTextureV(getCurrentScene(gs), ZERO_VEC, WHITE);
+ drawCirno(gs);
+ if (gs.curExp != HURT && gs.flowerOnHead) {
+ DrawTextureV(gs.AssetManager.load("flower"), ZERO_VEC, WHITE);
+ }
} else {
DrawSceneChange(gs);
}
if (gs.curExp != NEUTRAL && !IsDialogRunning(gs)) {
gs.curExp = NEUTRAL;
}
- drawCirno(gs);
- if (gs.curExp != HURT && gs.flowerOnHead) {
- DrawTextureV(gs.AssetManager.load("flower"), ZERO_VEC, WHITE);
- }
if (DEBUG) { DrawText(TextFormat("%d, %d", (int)gs.currentMousePos.x, (int)gs.currentMousePos.y), 0, 40, 20, YELLOW);}
- ui::DrawText(TextFormat("Explored : %d/13", gs.explored.size()), 20, 10, 26, RED);
+ ui::DrawText(TextFormat("Explored : %d/12", gs.explored.size()), 5, 5, 17, RED);
if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT) and !IsDialogRunning(gs)) {
ProcessClick(gs);
}
diff --git a/screen/main_menu.cpp b/screen/main_menu.cpp
index 09a136d..bc7ad08 100644
--- a/screen/main_menu.cpp
+++ b/screen/main_menu.cpp
@@ -38,6 +38,7 @@ void drawMainMenu(GameState &gs){
gs.current_screen = GAMEPLAY;
}
}
- ui::DrawTextV("Happy Cirno Day", {22, 25}, 22, ColorAlpha(YELLOW, Clamp(gs.timeSinceSceneChange/(SCENE_CHANGE/2.0f), 0, 1)));
- ui::DrawTextV("A short story by\nsamosagaming69\n& silli_chilli", {22, 60}, 14, ColorAlpha(WHITE, Clamp(gs.timeSinceSceneChange/(SCENE_CHANGE/2.0f), 0, 1)));
+ ui::DrawTextV("Happy Cirno Day", {22, 20}, 22, ColorAlpha(YELLOW, Clamp(gs.timeSinceSceneChange/(SCENE_CHANGE/2.0f), 0, 1)));
+ ui::DrawTextV("A short story by\nsamosagaming69 (Odia\ntwinky boy) &\nsilli_chilli", {22, 48}, 14, ColorAlpha(GREEN, Clamp(gs.timeSinceSceneChange/(SCENE_CHANGE/2.0f), 0, 1)));
+ ui::DrawTextV("Music: Tomboyish Prelude\nAlbum: Fantasy Kaleidoscope OST\nCircle: Yuuhei Satellite\nArrangement: Iceon", {3, 323}, 12, ColorAlpha(ORANGE, Clamp(gs.timeSinceSceneChange/(SCENE_CHANGE/2.0f), 0, 1)));
}