From 6cd31448ce0f07d4b201af322b20eca7d9fdfafe Mon Sep 17 00:00:00 2001 From: Dominic Masters Date: Thu, 21 Apr 2022 09:39:20 -0700 Subject: [PATCH] Redid the entire textbox code to be really nice now. --- assets/strings.js | 27 --------------------------- scripts/build.js | 21 ++++++++++----------- src/conversation/fade.c | 3 +++ src/conversation/queue.c | 36 ++++++++++++++++++------------------ src/conversation/queue.h | 2 +- src/conversation/textbox.c | 10 ++++++++-- src/conversation/textbox.h | 5 ----- src/main.c | 26 ++++++++++++++------------ src/strings.c | 33 +++++++++++++++++++++++++++++++++ src/strings.h | 34 ++++++++++++++++++++++++++++++++++ 10 files changed, 121 insertions(+), 76 deletions(-) delete mode 100644 assets/strings.js create mode 100644 src/strings.c create mode 100644 src/strings.h diff --git a/assets/strings.js b/assets/strings.js deleted file mode 100644 index 32e9621..0000000 --- a/assets/strings.js +++ /dev/null @@ -1,27 +0,0 @@ -const GAME_STRINGS = { - 'ERROR': 'An error\nhas occured', - 'HELLO': 'Hello World!\nHow are you today?\nThank god!', - - 'POKER_GAME_START': 'Poker game started', - 'POKER_GAME_TAKING_BLINDS': 'Blinds taken.', - 'POKER_GAME_CARDS_DEALT': 'Cards dealt.', - - 'POKER_GAME_CARDS_FLOPPED': 'Cards flopped', - 'POKER_GAME_CARDS_TURNED': 'Cards turned', - 'POKER_GAME_CARDS_RIVERED': 'Cards river', - - 'DEBUG_WINNER_DECIDED': 'DEBUG WINNER', - 'DEBUG_PLAYER': 'DEBUG PLAYER', - - 'POKER_GAME_AI_FOLD': 'AI Folding', - 'POKER_GAME_AI_RAISE': 'AI Raise', - 'POKER_GAME_AI_RAISE_BLUFF': 'AI Raise\nBut Bluffing', - 'POKER_GAME_AI_CALL': 'AI Calling', - 'POKER_GAME_AI_CALL_BLUFF': 'AI Calling\nBut Bluffing', - 'POKER_GAME_AI_ALL_IN': 'AI All In', - 'POKER_GAME_AI_ALL_IN_BLUFF': 'AI All In\nBut Bluffing', - 'POKER_GAME_AI_CHECK': 'AI Checking', - 'POKER_GAME_AI_CHECK_BLUFF': 'AI Checking\nBut Bluffing', -}; - -module.exports = { GAME_STRINGS }; \ No newline at end of file diff --git a/scripts/build.js b/scripts/build.js index 02d9d4d..4a066fd 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -4,7 +4,6 @@ const process = require('process'); const { spawnSync, execSync } = require('child_process'); const { png2gb } = require('./png2gb'); const { string2gb } = require('./string2gb'); -const { GAME_STRINGS } = require('./../assets/strings'); const DIR_BUILD = path.resolve('build'); const DIR_GENERATED = path.resolve(DIR_BUILD, 'generated'); @@ -82,16 +81,16 @@ const compileC = (cFile) => { } // Generate strings -let dataStringH = '#pragma once\n#include "libs.h"\n'; -let dataStringC = '#include "STRINGS.h"\n'; -Object.entries(GAME_STRINGS).forEach(entry => { - const [ name, str ] = entry; - const { dataH, dataC } = string2gb(str, name); - dataStringH += dataH+'\n', dataStringC += dataC+'\n'; -}); -fs.writeFileSync(path.join(DIR_GENERATED, 'STRINGS.h'), dataStringH); -fs.writeFileSync(path.join(DIR_GENERATED, 'STRINGS.c'), dataStringC); -compileC(path.join(DIR_GENERATED, 'STRINGS.c')); +// let dataStringH = '#pragma once\n#include "libs.h"\n'; +// let dataStringC = '#include "STRINGS.h"\n'; +// Object.entries(GAME_STRINGS).forEach(entry => { +// const [ name, str ] = entry; +// const { dataH, dataC } = string2gb(str, name); +// dataStringH += dataH+'\n', dataStringC += dataC+'\n'; +// }); +// fs.writeFileSync(path.join(DIR_GENERATED, 'STRINGS.h'), dataStringH); +// fs.writeFileSync(path.join(DIR_GENERATED, 'STRINGS.c'), dataStringC); +// compileC(path.join(DIR_GENERATED, 'STRINGS.c')); // Gen imagery fs.readdirSync(DIR_IMAGES).forEach(img => { diff --git a/src/conversation/fade.c b/src/conversation/fade.c index 596385f..49b2dd2 100644 --- a/src/conversation/fade.c +++ b/src/conversation/fade.c @@ -42,6 +42,7 @@ void conversationFadeUpdate() { // shade. if(diff == FADE_STEP) { // First step + wait_vbl_done(); BGP_REG = ( TIME_FUTURE_TYPE == TIME_FUTURE_TYPE_FADE_TO_BLACK ? COMMON_SHADE_DARK : TIME_FUTURE_TYPE == TIME_FUTURE_TYPE_FADE_TO_WHITE ? COMMON_SHADE_BRIGHT : @@ -50,6 +51,7 @@ void conversationFadeUpdate() { ); } else if(diff == FADE_STEP * 2) { // Second step + wait_vbl_done(); BGP_REG = ( TIME_FUTURE_TYPE == TIME_FUTURE_TYPE_FADE_TO_BLACK ? COMMON_SHADE_DARKER : TIME_FUTURE_TYPE == TIME_FUTURE_TYPE_FADE_TO_WHITE ? COMMON_SHADE_BRIGHTER : @@ -58,6 +60,7 @@ void conversationFadeUpdate() { ); } else if(diff == FADE_STEP * 3) { // Third step + wait_vbl_done(); BGP_REG = ( TIME_FUTURE_TYPE == TIME_FUTURE_TYPE_FADE_TO_BLACK ? COMMON_SHADE_BLACK : TIME_FUTURE_TYPE == TIME_FUTURE_TYPE_FADE_TO_WHITE ? COMMON_SHADE_WHITE : diff --git a/src/conversation/queue.c b/src/conversation/queue.c index 90cedd4..f498167 100644 --- a/src/conversation/queue.c +++ b/src/conversation/queue.c @@ -14,22 +14,22 @@ uint16_t QUEUE_ITEM; void conversationQueueDebug() { - conversationTextboxString(ERROR); + conversationTextboxSetText(STR_ERROR); } void conversationQueueBegin() { QUEUE_ITEM = QUEUE_TAKE_BLINDS; - conversationTextboxString(POKER_GAME_START); + conversationTextboxSetText(STR_POKER_GAME_START); } void conversationQueueTakeBlinds() { QUEUE_ITEM = QUEUE_DEAL_CARDS; - conversationTextboxString(POKER_GAME_TAKING_BLINDS); + conversationTextboxSetText(STR_POKER_GAME_TAKING_BLINDS); } void conversationQueueDealCards() { QUEUE_ITEM = QUEUE_BEGIN_BETTING; - conversationTextboxString(POKER_GAME_CARDS_DEALT); + conversationTextboxSetText(STR_POKER_GAME_CARDS_DEALT); } void conversationQueueBeginBetting() { @@ -42,7 +42,7 @@ void conversationQueueBeginBetting() { if(POKER_PLAYER_BETTER == POKER_HUMAN_INDEX) { // This is the human player. BGB_MESSAGE("Player folding."); - conversationTextboxString(DEBUG_PLAYER); + conversationTextboxSetText(STR_DEBUG_PLAYER); POKER_PLAYERS[POKER_PLAYER_BETTER].state |= POKER_PLAYER_STATE_FOLDED; } else { // This is an AI player, get their turn. @@ -53,37 +53,37 @@ void conversationQueueBeginBetting() { switch(turn.type) { case POKER_TURN_TYPE_FOLD: POKER_PLAYERS[POKER_PLAYER_BETTER].state |= POKER_PLAYER_STATE_FOLDED; - conversationTextboxString(POKER_GAME_AI_FOLD); + conversationTextboxSetText(STR_POKER_GAME_AI_FOLD); break; case POKER_TURN_TYPE_BET: if(turn.bluff) { - conversationTextboxString(POKER_GAME_AI_RAISE_BLUFF); + conversationTextboxSetText(STR_POKER_GAME_AI_RAISE_BLUFF); } else { - conversationTextboxString(POKER_GAME_AI_RAISE); + conversationTextboxSetText(STR_POKER_GAME_AI_RAISE); } break; case POKER_TURN_TYPE_CALL: if(turn.bluff) { - conversationTextboxString(POKER_GAME_AI_CALL_BLUFF); + conversationTextboxSetText(STR_POKER_GAME_AI_CALL_BLUFF); } else { - conversationTextboxString(POKER_GAME_AI_CALL); + conversationTextboxSetText(STR_POKER_GAME_AI_CALL); } break; case POKER_TURN_TYPE_ALL_IN: if(turn.bluff) { - conversationTextboxString(POKER_GAME_AI_ALL_IN_BLUFF); + conversationTextboxSetText(STR_POKER_GAME_AI_ALL_IN_BLUFF); } else { - conversationTextboxString(POKER_GAME_AI_ALL_IN); + conversationTextboxSetText(STR_POKER_GAME_AI_ALL_IN); } case POKER_TURN_TYPE_CHECK: if(turn.bluff) { - conversationTextboxString(POKER_GAME_AI_CHECK_BLUFF); + conversationTextboxSetText(STR_POKER_GAME_AI_CHECK_BLUFF); } else { - conversationTextboxString(POKER_GAME_AI_CHECK); + conversationTextboxSetText(STR_POKER_GAME_AI_CHECK); } break; } @@ -149,17 +149,17 @@ void conversationQueueFlopTurnRiver() { switch(POKER_COMMUNITY_SIZE) { case 0: count = POKER_COUNT_FLOP; - conversationTextboxString(POKER_GAME_CARDS_FLOPPED); + conversationTextboxSetText(STR_POKER_GAME_CARDS_FLOPPED); break; case POKER_COUNT_FLOP: count = POKER_COUNT_TURN; - conversationTextboxString(POKER_GAME_CARDS_TURNED); + conversationTextboxSetText(STR_POKER_GAME_CARDS_TURNED); break; default: count = POKER_COUNT_RIVER; - conversationTextboxString(POKER_GAME_CARDS_RIVERED); + conversationTextboxSetText(STR_POKER_GAME_CARDS_RIVERED); break; } @@ -229,7 +229,7 @@ void conversationQueueWinnerDecide() { } // TODO: Decide on a winner for real. - conversationTextboxString(DEBUG_WINNER_DECIDED); + conversationTextboxSetText(STR_DEBUG_WINNER_DECIDED); // New Round pokerNewRound(); diff --git a/src/conversation/queue.h b/src/conversation/queue.h index 1786702..64cd3f9 100644 --- a/src/conversation/queue.h +++ b/src/conversation/queue.h @@ -7,7 +7,7 @@ #pragma once #include "../libs.h" -#include "STRINGS.h" +#include "../strings.h" typedef void queuecallback_t(); diff --git a/src/conversation/textbox.c b/src/conversation/textbox.c index 82449f5..f42fb9d 100644 --- a/src/conversation/textbox.c +++ b/src/conversation/textbox.c @@ -21,6 +21,7 @@ inline void conversationTextboxInit() { TEXTBOX_STATE = 0; // Setup window data + wait_vbl_done(); move_win(7, SCREENHEIGHT - (TEXTBOX_HEIGHT_IN_TILES * 8)); set_win_data(FONT_DATA_POSITION, FONT_IMAGE_TILES, FONT_IMAGE); set_win_data(BORDER_DATA_POSITION, BORDER_IMAGE_TILES, BORDER_IMAGE); @@ -122,7 +123,8 @@ inline void textboxFillBlank() { TEXTBOX_TILES[i + (j * TEXTBOX_CHARS_PER_ROW)] = TEXTBOX_TILE_BLANK; } } - + + wait_vbl_done(); set_win_tiles( 0x01, 0x01, TEXTBOX_WIDTH_IN_TILES - 0x02, TEXTBOX_HEIGHT_IN_TILES - 0x02, @@ -145,7 +147,9 @@ inline void conversationTextboxUpdate() { // First, lets figure out if there's any more text to reveal or not. if((TEXTBOX_ROW_COUNT - TEXTBOX_ROW_CURRENT) < TEXTBOX_TILES_ROWS) { TEXTBOX_STATE &= ~TEXTBOX_STATE_VISIBLE; + wait_vbl_done(); HIDE_WIN; + conversationQueueNext(); return; } @@ -165,6 +169,9 @@ inline void conversationTextboxUpdate() { TEXTBOX_STATE |= TEXTBOX_STATE_SCROLLED; } else { tiles[0] = c - 33 + FONT_DATA_POSITION; + // tiles[0] = c + FONT_DATA_POSITION; + + wait_vbl_done(); set_win_tiles( 0x01 + (TEXTBOX_SCROLL % TEXTBOX_CHARS_PER_ROW), 0x01 + (TEXTBOX_SCROLL / TEXTBOX_CHARS_PER_ROW), @@ -173,5 +180,4 @@ inline void conversationTextboxUpdate() { ); TEXTBOX_SCROLL++; } - } \ No newline at end of file diff --git a/src/conversation/textbox.h b/src/conversation/textbox.h index 0ab6c54..cef3044 100644 --- a/src/conversation/textbox.h +++ b/src/conversation/textbox.h @@ -43,11 +43,6 @@ #define TEXTBOX_SCROLL_ROWS_MAX 14 -// STR_ ## name ## _DATA, STR_ ## name ## _LENGTH -#define conversationTextboxString(name) conversationTextboxSetText(\ - STR_ ## name ## _DATA\ -) - extern char TEXTBOX_TEXTS[TEXTBOX_SCROLL_ROWS_MAX * TEXTBOX_CHARS_PER_ROW]; extern uint8_t TEXTBOX_ROW_COUNT; extern uint8_t TEXTBOX_ROW_CURRENT; diff --git a/src/main.c b/src/main.c index 0ca1272..0c7a479 100644 --- a/src/main.c +++ b/src/main.c @@ -151,8 +151,8 @@ void main() { timeInit(); commonTilesInit(); conversationTextboxInit(); - // conversationQueueInit(); - // pokerInit(); + conversationQueueInit(); + pokerInit(); // Fill screen white for(j = 0; j < GB_BACKGROUND_COLUMNS * GB_BACKGROUND_ROWS; j++) filled[j] = COMMON_TILE_3; @@ -161,9 +161,7 @@ void main() { SCY_REG = 0x00; // Alright begin the game logic here. - // conversationQueueNext(); - char DEBUG_TEXT[] = "Hello World\nThe quick brown fox jumps over the lazy dog. How now brown cow? The fitness gram pacer test"; - conversationTextboxSetText(DEBUG_TEXT); + conversationQueueNext(); // Now turn the screen on DISPLAY_ON; @@ -172,19 +170,23 @@ void main() { // Begin the loop while(1) { - // Wait for VSYNC - wait_vbl_done(); + // Perform non-graphical code updates + + // Tick time. + timeUpdate(); // Update the input state INPUT_STATE = joypad(); + // Update conversation pause effect + conversationPauseUpdate(); + + // Update conversation textbox conversationTextboxUpdate(); - // conversationPauseUpdate(); - // conversationFadeUpdate(); + + // Update conversation fade effect + conversationFadeUpdate(); // mainDebugDraw(): - - // Tick time. - timeUpdate(); } } diff --git a/src/strings.c b/src/strings.c new file mode 100644 index 0000000..52ebde9 --- /dev/null +++ b/src/strings.c @@ -0,0 +1,33 @@ +/** + * Copyright (c) 2022 Dominic Masters + * + * This software is released under the MIT License. + * https://opensource.org/licenses/MIT + */ + +#include "strings.h" + +const char STR_ERROR[] = "An error\nhas occured"; +const char STR_HELLO[] = "Hello World, How are you today?\nGood thanks. Thank god!"; + +const char STR_POKER_GAME_START[] = "Poker game started"; +const char STR_POKER_GAME_TAKING_BLINDS[] = "Blinds taken."; +const char STR_POKER_GAME_CARDS_DEALT[] = "Cards dealt."; + +const char STR_POKER_GAME_CARDS_FLOPPED[] = "Cards flopped"; +const char STR_POKER_GAME_CARDS_TURNED[] = "Cards turned"; +const char STR_POKER_GAME_CARDS_RIVERED[] = "Cards river"; + +const char STR_DEBUG_WINNER_DECIDED[] = "DEBUG WINNER"; +const char STR_DEBUG_PLAYER[] = "DEBUG PLAYER"; + +const char STR_POKER_GAME_AI_FOLD[] = "AI Folding"; +const char STR_POKER_GAME_AI_RAISE[] = "AI Raise"; +const char STR_POKER_GAME_AI_RAISE_BLUFF[] = "AI Raise\nBut Bluffing"; +const char STR_POKER_GAME_AI_CALL[] = "AI Calling"; +const char STR_POKER_GAME_AI_CALL_BLUFF[] = "AI Calling\nBut Bluffing"; +const char STR_POKER_GAME_AI_ALL_IN[] = "AI All In"; +const char STR_POKER_GAME_AI_ALL_IN_BLUFF[] = "AI All In\nBut Bluffing"; +const char STR_POKER_GAME_AI_CHECK[] = "AI Checking"; +const char STR_POKER_GAME_AI_CHECK_BLUFF[] = "AI Checking\nBut Bluffing"; +const char STR_FOX[] = "The quick brown fox jumps over the lazy dog."; \ No newline at end of file diff --git a/src/strings.h b/src/strings.h new file mode 100644 index 0000000..8fc0dee --- /dev/null +++ b/src/strings.h @@ -0,0 +1,34 @@ +/** + * Copyright (c) 2022 Dominic Masters + * + * This software is released under the MIT License. + * https://opensource.org/licenses/MIT + */ + +#pragma once +#include "libs.h" + +extern const char STR_ERROR[]; +extern const char STR_HELLO[]; + +extern const char STR_POKER_GAME_START[]; +extern const char STR_POKER_GAME_TAKING_BLINDS[]; +extern const char STR_POKER_GAME_CARDS_DEALT[]; + +extern const char STR_POKER_GAME_CARDS_FLOPPED[]; +extern const char STR_POKER_GAME_CARDS_TURNED[]; +extern const char STR_POKER_GAME_CARDS_RIVERED[]; + +extern const char STR_DEBUG_WINNER_DECIDED[]; +extern const char STR_DEBUG_PLAYER[]; + +extern const char STR_POKER_GAME_AI_FOLD[]; +extern const char STR_POKER_GAME_AI_RAISE[]; +extern const char STR_POKER_GAME_AI_RAISE_BLUFF[]; +extern const char STR_POKER_GAME_AI_CALL[]; +extern const char STR_POKER_GAME_AI_CALL_BLUFF[]; +extern const char STR_POKER_GAME_AI_ALL_IN[]; +extern const char STR_POKER_GAME_AI_ALL_IN_BLUFF[]; +extern const char STR_POKER_GAME_AI_CHECK[]; +extern const char STR_POKER_GAME_AI_CHECK_BLUFF[]; +extern const char STR_FOX[]; \ No newline at end of file