more damning ui features

This commit is contained in:
yoruka
2025-05-11 21:42:34 +00:00
parent 90685414e3
commit 56108102c0
7 changed files with 133 additions and 35 deletions

View File

@@ -14,12 +14,12 @@ MenuItem* create_menu(size_t item_count)
return items; return items;
} }
void set_menu_item(MenuItem* menu, int index, const char* text) void set_menu_item(MenuItem* menu, int id, const char* text)
{ {
int id = index + 1; int index = id - 1;
if (menu && text) if (menu && text)
{ {
menu[index].text = (char*)malloc(strlen(text) + 1); menu[index].text = malloc(strlen(text) + 1);
if (menu[index].text) if (menu[index].text)
{ {
strcpy(menu[index].text, text); strcpy(menu[index].text, text);

6
program/include/store.h Normal file
View File

@@ -0,0 +1,6 @@
#ifndef STORE_H
#define STORE_H
void render_store_menu();
#endif // !STORE_H

View File

@@ -3,14 +3,15 @@
#include "../../libpukeko/include/navigation.h" #include "../../libpukeko/include/navigation.h"
void print_debug_menu() { void print_debug_menu() {
int items_count = 2; int items_count = 3;
MenuItem* menu = create_menu(items_count); MenuItem* menu = create_menu(items_count);
if (!menu) if (!menu)
return; return;
set_menu_item(menu, 0, "Add money (500)"); set_menu_item(menu, 1, "Add money (500)");
set_menu_item(menu, 1, "Back"); set_menu_item(menu, 2, "Add money (100000)");
set_menu_item(menu, 3, "Back");
while (true) { while (true) {
int selection = selector_render(menu, items_count); int selection = selector_render(menu, items_count);
@@ -18,10 +19,13 @@ void print_debug_menu() {
switch (selection) switch (selection)
{ {
case 1: case 1:
user_money = user_money + 500; user_money += 500;
break;
case 2:
user_money += 100000;
break; break;
case 0: case 0:
case 2: case 3:
destroy_menu(menu, items_count); destroy_menu(menu, items_count);
return; return;
} }

View File

@@ -2,19 +2,21 @@
#include "main_menu.h" #include "main_menu.h"
#include "pukeko_app.h" #include "pukeko_app.h"
#include "pukeko.h" #include "pukeko.h"
#include "store.h"
#include "debug.h" #include "debug.h"
#include "../../libpukeko/include/navigation.h" #include "../../libpukeko/include/navigation.h"
void print_main_menu() { void print_main_menu() {
int items_count = 3; int items_count = 4;
MenuItem* menu = create_menu(items_count); MenuItem* menu = create_menu(items_count);
if (!menu) if (!menu)
return; return;
set_menu_item(menu, 0, "Catch pukekos"); set_menu_item(menu, 1, "Catch pukekos");
set_menu_item(menu, 1, "Debugging"); set_menu_item(menu, 2, "Debugging");
set_menu_item(menu, 2, "Quit"); set_menu_item(menu, 3, "Shop");
set_menu_item(menu, 4, "Quit");
while (true) { while (true) {
int selection = selector_render(menu, items_count); int selection = selector_render(menu, items_count);
@@ -23,13 +25,17 @@ void print_main_menu() {
case 1: case 1:
consoleClear(); consoleClear();
print_game_screen(); print_game_screen();
break; break;
case 2: case 2:
print_debug_menu(); print_debug_menu();
break; break;
case 3: case 3:
render_store_menu();
break;
case 4:
destroy_menu(menu, items_count); destroy_menu(menu, items_count);
return; return;
} }

View File

@@ -5,44 +5,99 @@
#include "pukeko_app.h" #include "pukeko_app.h"
#include "pukeko.h" #include "pukeko.h"
void print_top_info() { // RO data
char* damning_messages[] = {
"DAMN!!! ",
"DAMN, what was that?! ",
"DAMN, its so fluffy! ",
"DAMN!!! This birds got moves! ",
"DAMN, did you see that?!! ",
"DAMN, its a disaster! ",
"DAMN, I cant stop laughing! ",
"DAMN, I just caught it! ",
"DAMN, the birds on fire!! ",
"DAMN, this is too much! "
};
// Logic functions
void print_pukeko_ascii()
{
printf("\x1b[4;5H _____");
printf("\x1b[5;5H ___/ o \\");
printf("\x1b[6;5H < > )");
printf("\x1b[7;5H \\_________/");
printf("\x1b[8;8H || ||");
printf("\x1b[9;7H || ||");
printf("\x1b[10;6H ^^ ^^");
}
void catch_pukeko()
{
int random_number = rand() % 5 + 1;
int random_message = rand() % 10;
printf("\x1b[1;1H%s", damning_messages[random_message]);
held_pukekos = held_pukekos + random_number;
sleep(2);
printf("\x1b[1;1H(A) Catch Pukeko!!!");
}
void sell_pukeko()
{
user_money += held_pukekos * 5;
held_pukekos = 0;
}
// Print functions
void print_top_info()
{
printf("\x1b[1;1H(A) Catch Pukeko!!!"); printf("\x1b[1;1H(A) Catch Pukeko!!!");
printf("\x1b[2;1H(Y) Sell Pukeko... :("); printf("\x1b[2;1H(Y) Sell Pukeko... :(");
printf("\x1b[30;1H(B) Go back"); printf("\x1b[30;1H(B) Go back");
} }
void print_bottom_info() { void print_bottom_info()
{
consoleInit(GFX_BOTTOM, NULL); consoleInit(GFX_BOTTOM, NULL);
printf("\x1b[1;1HMoney: %d", user_money); printf("\x1b[1;1HMoney: %d", user_money);
printf("\x1b[3;1HPukekos: %d", held_pukekos); printf("\x1b[3;1HPukekos: %d", held_pukekos);
print_pukeko_ascii();
consoleInit(GFX_TOP, NULL); consoleInit(GFX_TOP, NULL);
} }
void catch_pukeko() { void print_game_screen()
int random_number = rand() % 5 + 1; {
// Show screen
printf("\x1b[1;1HDAMN!!! ");
held_pukekos = held_pukekos + random_number;
sleep(2);
print_bottom_info();
print_top_info();
printf("\x1b[1;1H(A) Catch Pukeko!!!");
}
void print_game_screen() {
print_bottom_info(); print_bottom_info();
print_top_info(); print_top_info();
while (true) { while (true)
{
hidScanInput(); hidScanInput();
u32 key_down = hidKeysDown(); u32 key_down = hidKeysDown();
if (key_down & KEY_A) { if (key_down)
catch_pukeko(); {
} if (key_down & KEY_A)
if (key_down & KEY_B) { catch_pukeko();
return;
if (key_down & KEY_Y)
sell_pukeko();
if (key_down & KEY_B)
{
consoleInit(GFX_BOTTOM, NULL);
consoleClear();
consoleInit(GFX_TOP, NULL);
return;
}
// Update display
print_bottom_info();
print_top_info();
} }
} }
} }

View File

@@ -0,0 +1,27 @@
#include <3ds.h>
#include "store.h"
#include "../../../libpukeko/include/navigation.h"
void render_store_menu()
{
size_t item_count = 2;
MenuItem* store_menu = create_menu(item_count);
set_menu_item(store_menu, 1, "DAMN!!! level");
set_menu_item(store_menu, 2, "Back");
while (true)
{
int selection = selector_render(store_menu, item_count);
switch (selection)
{
case 1:
//draw_damn_level_menu();
break;
case 2:
destroy_menu(store_menu, item_count);
return;
}
}
}

Binary file not shown.