font and menu

This commit is contained in:
huaqo-games
2025-03-25 18:02:34 +01:00
parent 71660ba942
commit 8384967e55
29 changed files with 293 additions and 83 deletions

Before

Width:  |  Height:  |  Size: 1005 B

After

Width:  |  Height:  |  Size: 1005 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 971 B

After

Width:  |  Height:  |  Size: 1.1 KiB

@@ -0,0 +1,95 @@
info face="pixelFont-7-8x14-sproutLands" size=72 bold=0 italic=0 charset="" unicode=1 stretchH=100 smooth=1 aa=1 padding=1,1,1,1 spacing=1,1
common lineHeight=72 base=56 scaleW=434 scaleH=434 pages=1 packed=0
page id=0 file="pixelFont-7-8x14-sproutLands.png"
chars count=91
char id=32 x=0 y=0 width=0 height=0 xoffset=0 yoffset=0 xadvance=16 page=0 chnl=15
char id=33 x=57 y=55 width=10 height=58 xoffset=11 yoffset=-1 xadvance=28 page=0 chnl=15
char id=34 x=71 y=413 width=22 height=14 xoffset=-1 yoffset=-1 xadvance=28 page=0 chnl=15
char id=35 x=0 y=220 width=40 height=51 xoffset=-2 yoffset=17 xadvance=36 page=0 chnl=15
char id=36 x=0 y=280 width=34 height=62 xoffset=1 yoffset=13 xadvance=36 page=0 chnl=15
char id=37 x=0 y=165 width=54 height=54 xoffset=3 yoffset=16 xadvance=60 page=0 chnl=15
char id=38 x=0 y=110 width=55 height=54 xoffset=1 yoffset=16 xadvance=56 page=0 chnl=15
char id=39 x=57 y=114 width=10 height=14 xoffset=-1 yoffset=-1 xadvance=16 page=0 chnl=15
char id=40 x=416 y=234 width=14 height=58 xoffset=-1 yoffset=-1 xadvance=20 page=0 chnl=15
char id=41 x=416 y=293 width=14 height=58 xoffset=-1 yoffset=-1 xadvance=20 page=0 chnl=15
char id=42 x=0 y=402 width=26 height=26 xoffset=-1 yoffset=15 xadvance=32 page=0 chnl=15
char id=43 x=351 y=389 width=26 height=26 xoffset=-1 yoffset=15 xadvance=32 page=0 chnl=15
char id=44 x=106 y=424 width=14 height=10 xoffset=-1 yoffset=47 xadvance=20 page=0 chnl=15
char id=45 x=106 y=413 width=26 height=10 xoffset=-1 yoffset=23 xadvance=32 page=0 chnl=15
char id=46 x=57 y=129 width=10 height=10 xoffset=-1 yoffset=47 xadvance=16 page=0 chnl=15
char id=47 x=386 y=132 width=26 height=58 xoffset=3 yoffset=-1 xadvance=36 page=0 chnl=15
char id=48 x=0 y=343 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=49 x=71 y=0 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=50 x=71 y=59 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=51 x=71 y=118 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=52 x=71 y=177 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=53 x=71 y=236 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=54 x=71 y=295 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=55 x=71 y=354 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=56 x=106 y=0 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=57 x=106 y=59 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=58 x=416 y=183 width=18 height=50 xoffset=-1 yoffset=3 xadvance=24 page=0 chnl=15
char id=59 x=416 y=128 width=18 height=54 xoffset=-1 yoffset=3 xadvance=24 page=0 chnl=15
char id=61 x=386 y=191 width=26 height=22 xoffset=-1 yoffset=19 xadvance=32 page=0 chnl=15
char id=63 x=351 y=177 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=64 x=0 y=55 width=56 height=54 xoffset=5 yoffset=16 xadvance=67 page=0 chnl=15
char id=65 x=211 y=354 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=66 x=246 y=0 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=67 x=246 y=59 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=68 x=246 y=118 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=69 x=246 y=177 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=70 x=246 y=236 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=71 x=246 y=295 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=72 x=246 y=354 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=73 x=281 y=0 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=74 x=281 y=59 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=75 x=351 y=330 width=30 height=58 xoffset=-1 yoffset=-1 xadvance=36 page=0 chnl=15
char id=76 x=281 y=118 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=77 x=281 y=177 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=78 x=281 y=236 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=79 x=281 y=295 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=80 x=281 y=354 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=81 x=316 y=0 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=82 x=316 y=59 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=83 x=316 y=118 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=84 x=316 y=177 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=85 x=316 y=236 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=86 x=316 y=295 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=87 x=316 y=354 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=88 x=351 y=0 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=89 x=351 y=59 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=90 x=351 y=118 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=91 x=416 y=0 width=18 height=63 xoffset=5 yoffset=17 xadvance=24 page=0 chnl=15
char id=93 x=416 y=64 width=18 height=63 xoffset=1 yoffset=17 xadvance=24 page=0 chnl=15
char id=94 x=351 y=236 width=32 height=34 xoffset=1 yoffset=16 xadvance=34 page=0 chnl=15
char id=95 x=0 y=272 width=40 height=7 xoffset=-2 yoffset=70 xadvance=36 page=0 chnl=15
char id=97 x=106 y=118 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=98 x=106 y=177 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=99 x=106 y=236 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=100 x=106 y=295 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=101 x=106 y=354 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=102 x=141 y=0 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=103 x=141 y=59 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=104 x=141 y=118 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=105 x=141 y=177 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=106 x=141 y=236 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=107 x=351 y=271 width=30 height=58 xoffset=-1 yoffset=-1 xadvance=36 page=0 chnl=15
char id=108 x=141 y=295 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=109 x=141 y=354 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=110 x=176 y=0 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=111 x=176 y=59 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=112 x=176 y=118 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=113 x=176 y=177 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=114 x=176 y=236 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=115 x=176 y=295 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=116 x=176 y=354 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=117 x=211 y=0 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=118 x=211 y=59 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=119 x=211 y=118 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=120 x=211 y=177 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=121 x=211 y=236 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=122 x=211 y=295 width=34 height=58 xoffset=-1 yoffset=-1 xadvance=40 page=0 chnl=15
char id=123 x=386 y=0 width=29 height=65 xoffset=3 yoffset=16 xadvance=35 page=0 chnl=15
char id=124 x=57 y=140 width=8 height=52 xoffset=3 yoffset=16 xadvance=15 page=0 chnl=15
char id=125 x=386 y=66 width=29 height=65 xoffset=3 yoffset=16 xadvance=35 page=0 chnl=15
char id=8470 x=0 y=0 width=70 height=54 xoffset=-1 yoffset=16 xadvance=69 page=0 chnl=15
Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

@@ -0,0 +1,26 @@
All assets in the pack have been repackaged and many have been modified by Brackeys.
LICENSE for all assets:
Creative Commons Zero (CC0)
CREDIT:
SPRITES by analogStudios_:
knight (https://analogstudios.itch.io/camelot)
slime (https://analogstudios.itch.io/dungeonsprites)
platforms and coin (https://analogstudios.itch.io/four-seasons-platformer-sprites)
SPRITES by RottingPixels:
world_tileset and fruit (https://rottingpixels.itch.io/four-seasons-platformer-tileset-16x16free)
WORLD TILESET originally
SOUNDS by Brackeys, Asbjørn Thirslund
MUSIC by Brackeys, Sofia Thirslund
FONTS by Jayvee Enaguas - HarvettFox96 - (https://www.dafont.com/pixel-operator.font?l[]=10&l[]=1)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 500 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 908 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

+74 -23
View File
@@ -2,47 +2,98 @@
#define GAMEGUI_H
#include "sprite.h"
#include <raylib.h>
typedef enum {
NOT_CLICKED,
CLICKED
} ButtonState;
typedef struct
{
int state;
Rectangle textureRecs[2];
Rectangle buttonBounds;
Texture2D texture;
Sprite sprite;
Vector2 notClicked;
Vector2 clicked;
} ImageButton;
void initImageButton(ImageButton *b, Rectangle textureRecs[2], Rectangle buttonBounds, Texture2D texture){
b->textureRecs[0] = textureRecs[0];
b->textureRecs[1] = textureRecs[1];
b->buttonBounds = buttonBounds;
b->texture = texture;
b->state = 0;
typedef struct
{
Sprite sprite;
} ImageElement;
ImageButton CreateImageButton(ButtonState state, Texture2D *texture, const TextureAsset *asset, Vector2 *source, Vector2 *clicked, Rectangle *destRec){
return (ImageButton){
.sprite = {
.texture = *texture,
.sourceRec = (Rectangle){ source->x, source->y, asset->frameWidth, asset->frameHeight},
.destRec = *destRec,
.frameSize = (Vector2){asset->frameWidth, asset->frameHeight},
.origin = (Vector2){0.0f, 0.0f},
.rotation = 0.0f,
.color = WHITE
},
.notClicked = (Vector2){source->x, source->y},
.clicked = *clicked
};
}
ImageElement CreateImageElement(Texture2D *texture, const TextureAsset *asset, Vector2 *source, Rectangle *destRec){
return (ImageElement){
.sprite = {
.texture = *texture,
.sourceRec = (Rectangle){ source->x, source->y, asset->frameWidth, asset->frameHeight},
.destRec = *destRec,
.frameSize = (Vector2){asset->frameWidth, asset->frameHeight},
.origin = (Vector2){0.0f, 0.0f},
.rotation = 0.0f,
.color = WHITE
}
};
}
void PrintImageButton(const ImageButton btn) {
printf("ImageButton:\n");
printf(" Sprite.texture: id = %d\n", btn.sprite.texture.id);
printf(" Sprite.sourceRec: x = %f, y = %f, width = %f, height = %f\n",
btn.sprite.sourceRec.x, btn.sprite.sourceRec.y,
btn.sprite.sourceRec.width, btn.sprite.sourceRec.height);
printf(" Sprite.destRec: x = %f, y = %f, width = %f, height = %f\n",
btn.sprite.destRec.x, btn.sprite.destRec.y,
btn.sprite.destRec.width, btn.sprite.destRec.height);
printf(" Sprite.frameSize: x = %f, y = %f\n",
btn.sprite.frameSize.x, btn.sprite.frameSize.y);
printf(" Sprite.origin: x = %f, y = %f\n",
btn.sprite.origin.x, btn.sprite.origin.y);
printf(" Sprite.rotation: %f\n", btn.sprite.rotation);
printf(" Sprite.color: r = %d, g = %d, b = %d, a = %d\n",
btn.sprite.color.r, btn.sprite.color.g,
btn.sprite.color.b, btn.sprite.color.a);
printf(" notClicked: x = %f, y = %f\n", btn.notClicked.x, btn.notClicked.y);
printf(" clicked: x = %f, y = %f\n", btn.clicked.x, btn.clicked.y);
}
int isImageButtonClicked(ImageButton *b){
Vector2 mousePoint = GetMousePosition();
if (CheckCollisionPointRec(mousePoint, b->buttonBounds)) {
if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) b->state = 1;
if (CheckCollisionPointRec(GetMousePosition(), b->sprite.destRec)) {
if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)){
UpdateSpriteSourceRec(&b->sprite, &b->clicked);
}
if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON))
{
b->state = 0;
UpdateSpriteSourceRec(&b->sprite, &b->notClicked);
return true;
}
} else {
b->state = 0;
UpdateSpriteSourceRec(&b->sprite, &b->notClicked);
}
return false;
}
void renderImageButton(ImageButton *b) {
Sprite sprite;
sprite.texture = b->texture;
sprite.sourceRec = b->textureRecs[b->state];
sprite.destRec = b->buttonBounds;
sprite.origin = (Vector2){ 0, 0 };
sprite.rotation = 0.0f;
sprite.color = WHITE;
RenderSprite(&sprite);
RenderSprite(&b->sprite);
}
void renderImageElement(ImageElement *e){
RenderSprite(&e->sprite);
}
+20
View File
@@ -0,0 +1,20 @@
// initButton(&m->startButton, "Start Game", GetScreenWidth() / 10, GetScreenHeight() / 20, GetScreenWidth() / 2, GetScreenHeight() / 2);
// initButton(&m->quitButton, "Quit Game", GetScreenWidth() / 10, GetScreenHeight() / 20, GetScreenWidth() / 2,
// GetScreenHeight() / 2 + (GetScreenHeight() / 20 * 2));
// if (isButtonClicked(&m->startButton)) {
// state->gameStarted = true;
// m->startButton.text = "Continue";
// state->currentScreen = GAMEPLAY;
// }
// if (isButtonClicked(&m->quitButton) || (WindowShouldClose() && !IsKeyPressed(KEY_ESCAPE))) {
// state->running = false;
// }
// if (state->gameStarted){
// if (IsKeyPressed(KEY_ESCAPE)){
// state->currentScreen = GAMEPLAY;
// }
// }
// renderButton(&m->startButton);
// renderButton(&m->quitButton);
+7
View File
@@ -0,0 +1,7 @@
#ifndef COLORS_H
#define COLORS_H
#define TEXT_COLOR_DARK (Color){ 182, 137, 98, 255}
#define TEXT_COLOR_LIGHT (Color){ 243, 229, 194, 255}
#endif // COLORS_H
+1 -1
View File
@@ -63,7 +63,7 @@ void InitGame(GameState* g, Display *display){
g->bee1 = CreateBee(FLYING, g->textures[BEE], g->assets.textureAssets[BEE].frameWidth, 4, 10, g->hive.position, 10.0f, &g->flowers, &g->hive);
// I/O
g->camera = CreateCamera(display->width, display->height, g->player.physics.position, 5.0f);
g->camera = CreateCamera(display->width, display->height, g->player.physics.position, 10.0f);
g->mouse = CreateMouse(0.10f, 5.0f, 10.0f);
}
+1 -1
View File
@@ -10,7 +10,7 @@ Object CreateHive(Texture2D texture, float frameWidth){
.destRec = (Rectangle){0.0f, 0.0f, frameWidth, frameWidth},
.origin = (Vector2){frameWidth / 2, frameWidth / 2},
.rotation = 0.0f,
.color = WHITE,
.color = WHITE
},
.position = (Vector2){0.0f, 0.0f}
};
+50 -50
View File
@@ -6,14 +6,14 @@
#include "../engine/asset.h"
#include "../engine/gamegui.h"
#include "menuassets.h"
#include "colors.h"
typedef struct {
Assets assets;
Texture2D textures[MENU_TEX_COUNT];
Button startButton;
Button quitButton;
ImageButton newStartButton;
ImageButton newQuitButton;
ImageElement board;
ImageButton playButton;
ImageButton quitButton;
} MenuState;
void InitMenu(MenuState *m){
@@ -23,75 +23,75 @@ void InitMenu(MenuState *m){
for (int i = 0; i < MENU_TEX_COUNT; i++){
m->textures[i] = LoadTexture(m->assets.textureAssets[i].path);
}
int menuScale = 4;
int screenWidth = GetScreenWidth();
int screenHeight = GetScreenHeight();
Vector2 screenCenter = {screenWidth / 2, screenHeight / 2};
Rectangle startButtonBounds = {
GetScreenWidth() / 2 - (GetScreenWidth() / 10) / 2,
GetScreenHeight() / 2 - (GetScreenHeight() / 20) / 2,
GetScreenWidth() / 10,
GetScreenHeight() / 20
int boardWidth = screenWidth / menuScale * 3.0f;
float boardScaleFactor = (float)boardWidth / m->assets.textureAssets[BOARD].frameWidth;
int boardHeight = (int)(m->assets.textureAssets[BOARD].frameHeight * boardScaleFactor);
Vector2 boardSource = {128.0f,0.0f};
Rectangle boardDestRec = {
.x = screenCenter.x - (boardWidth / 2),
.y = screenCenter.y - (boardHeight / 2),
.width = boardWidth,
.height = boardHeight
};
Rectangle quitButtonBounds = {
GetScreenWidth() / 2 - (GetScreenWidth() / 10) / 2,
GetScreenHeight() / 2 + (GetScreenHeight() / 10) / 2,
GetScreenWidth() / 10,
GetScreenHeight() / 20
m->board = CreateImageElement(&m->textures[BOARD], &m->assets.textureAssets[BOARD], &boardSource, &boardDestRec);
int buttonWidth = screenWidth / menuScale;
float buttonScaleFactor = (float)buttonWidth / m->assets.textureAssets[BIG_BUTTONS].frameWidth;
int buttonHeight = (int)(m->assets.textureAssets[BIG_BUTTONS].frameHeight * buttonScaleFactor);
int buttonSpacing = buttonHeight;
Vector2 playButtonNotPressed = { 0.0f, 96.0f};
Vector2 quitButtonNotPressed = { 0.0f, 0.0f};
Vector2 playButtonPressed = { 96.0f, 96.0f};
Vector2 quitButtonPressed = { 96.0f, 0.0f};
Rectangle playButtonDestRec = {
.x = screenCenter.x - (buttonWidth / 2),
.y = screenCenter.y - (buttonHeight / 2),
.width = buttonWidth,
.height = buttonHeight
};
Rectangle playTexRecs[2] = {
{ 0.0f, 96.0f, m->assets.textureAssets[BIG_BUTTONS].frameWidth, m->assets.textureAssets[BIG_BUTTONS].frameHeight },
{ m->assets.textureAssets[BIG_BUTTONS].frameWidth, 96.0f, m->assets.textureAssets[BIG_BUTTONS].frameWidth, m->assets.textureAssets[BIG_BUTTONS].frameHeight }
Rectangle quitButtonDestRec = {
.x = screenCenter.x - (buttonWidth / 2),
.y = screenCenter.y - (buttonHeight / 2) + buttonSpacing,
.width = buttonWidth,
.height = buttonHeight
};
Rectangle emptyTexRecs[2] = {
{ 0.0f, 0.0f, m->assets.textureAssets[BIG_BUTTONS].frameWidth, m->assets.textureAssets[BIG_BUTTONS].frameHeight },
{ m->assets.textureAssets[BIG_BUTTONS].frameWidth, 0.0f, m->assets.textureAssets[BIG_BUTTONS].frameWidth, m->assets.textureAssets[BIG_BUTTONS].frameHeight }
};
initImageButton(&m->newStartButton, playTexRecs, startButtonBounds, m->textures[BIG_BUTTONS]);
initImageButton(&m->newQuitButton, emptyTexRecs, quitButtonBounds, m->textures[BIG_BUTTONS]);
// initButton(&m->startButton, "Start Game", GetScreenWidth() / 10, GetScreenHeight() / 20, GetScreenWidth() / 2, GetScreenHeight() / 2);
// initButton(&m->quitButton, "Quit Game", GetScreenWidth() / 10, GetScreenHeight() / 20, GetScreenWidth() / 2,
// GetScreenHeight() / 2 + (GetScreenHeight() / 20 * 2));
m->playButton = CreateImageButton(NOT_CLICKED, &m->textures[BIG_BUTTONS], &m->assets.textureAssets[BIG_BUTTONS], &playButtonNotPressed, &playButtonPressed, &playButtonDestRec);
m->quitButton = CreateImageButton(NOT_CLICKED, &m->textures[BIG_BUTTONS], &m->assets.textureAssets[BIG_BUTTONS], &quitButtonNotPressed, &quitButtonPressed, &quitButtonDestRec);
}
void UpdateMenu(MenuState *m, State *state){
if (isImageButtonClicked(&m->newStartButton)){
if (isImageButtonClicked(&m->playButton)){
state->gameStarted = true;
m->startButton.text = "Continue";
state->currentScreen = GAMEPLAY;
}
if (isImageButtonClicked(&m->newQuitButton) || (WindowShouldClose() && !IsKeyPressed(KEY_ESCAPE))) {
if (isImageButtonClicked(&m->quitButton) || (WindowShouldClose() && !IsKeyPressed(KEY_ESCAPE))) {
state->running = false;
}
// if (isButtonClicked(&m->startButton)) {
// state->gameStarted = true;
// m->startButton.text = "Continue";
// state->currentScreen = GAMEPLAY;
// }
// if (isButtonClicked(&m->quitButton) || (WindowShouldClose() && !IsKeyPressed(KEY_ESCAPE))) {
// state->running = false;
// }
// if (state->gameStarted){
// if (IsKeyPressed(KEY_ESCAPE)){
// state->currentScreen = GAMEPLAY;
// }
// }
}
void RenderMenu(MenuState *m){
void RenderMenu(MenuState *m, Font *font, const char* name){
BeginDrawing();
ClearBackground(WHITE);
// renderButton(&m->startButton);
// renderButton(&m->quitButton);
renderImageButton(&m->newStartButton);
renderImageButton(&m->newQuitButton);
renderImageElement(&m->board);
renderImageButton(&m->playButton);
renderImageButton(&m->quitButton);
int textWidth = MeasureText(name, font->baseSize);
DrawTextEx(*font, name, (Vector2){ GetScreenWidth() / 2 - textWidth / 2, textWidth / 4}, (float)font->baseSize, 2, WHITE);
DrawFPS(10, 10);
EndDrawing();
}
+3 -1
View File
@@ -4,11 +4,13 @@
typedef enum {
BIG_BUTTONS,
BOARD,
MENU_TEX_COUNT
} MenuTextureID;
const TextureAsset menuTextureAssets[MENU_TEX_COUNT] = {
{"assets/SproutLandsUI/Spritesheets/UIBigPlayButton.png", 96.0f, 32.0f, 180.0f}
{"assets/SproutLandsUI/Spritesheets/UIBigPlayButton.png", 96.0f, 32.0f, 180.0f},
{"assets/SproutLandsUI/Spritesheets/Settingmenu.png", 128.0f, 144.0f, 180.0f},
};
#endif // MENUASSETS_H
+16 -7
View File
@@ -9,9 +9,11 @@
#include "game/menu.h"
#include "game/game.h"
typedef struct {
State state;
Display display;
Font font;
LogoState logo;
GameState game;
MenuState menu;
@@ -19,17 +21,23 @@ typedef struct {
int main(void)
{
Display display = {
.name = "The Last Hive",
.width = 1280,
.height = 720
};
InitWindow(display.width, display.height, display.name);
InitAudioDevice();
Application app;
app.state.currentScreen = MENU;
app.state.running = true;
app.state.gameStarted = false;
app.display.name = "The Last Hive";
app.display.width = 1280;
app.display.height = 720;
app.display = display;
app.font = LoadFont("assets/SproutLandsUI/fonts/pixelFont-7-8x14-sproutLands.fnt");
InitWindow(app.display.width, app.display.height, app.display.name);
InitAudioDevice();
SetTextureFilter(app.font.texture, TEXTURE_FILTER_POINT);
SetTraceLogLevel(LOG_NONE);
InitLogo(&app.logo);
@@ -48,7 +56,7 @@ int main(void)
case MENU:
{
UpdateMenu(&app.menu, &app.state);
RenderMenu(&app.menu);
RenderMenu(&app.menu, &app.font, app.display.name);
}break;
case GAMEPLAY:
{
@@ -59,6 +67,7 @@ int main(void)
}
}
CleanupGame(&app.game);
UnloadFont(app.font);
CloseWindow();
return 0;
}