Redid the entire textbox code to be really nice now.

This commit is contained in:
2022-04-21 09:39:20 -07:00
parent 45228018f2
commit 6cd31448ce
10 changed files with 121 additions and 76 deletions

View File

@@ -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 };

View File

@@ -4,7 +4,6 @@ const process = require('process');
const { spawnSync, execSync } = require('child_process'); const { spawnSync, execSync } = require('child_process');
const { png2gb } = require('./png2gb'); const { png2gb } = require('./png2gb');
const { string2gb } = require('./string2gb'); const { string2gb } = require('./string2gb');
const { GAME_STRINGS } = require('./../assets/strings');
const DIR_BUILD = path.resolve('build'); const DIR_BUILD = path.resolve('build');
const DIR_GENERATED = path.resolve(DIR_BUILD, 'generated'); const DIR_GENERATED = path.resolve(DIR_BUILD, 'generated');
@@ -82,16 +81,16 @@ const compileC = (cFile) => {
} }
// Generate strings // Generate strings
let dataStringH = '#pragma once\n#include "libs.h"\n'; // let dataStringH = '#pragma once\n#include "libs.h"\n';
let dataStringC = '#include "STRINGS.h"\n'; // let dataStringC = '#include "STRINGS.h"\n';
Object.entries(GAME_STRINGS).forEach(entry => { // Object.entries(GAME_STRINGS).forEach(entry => {
const [ name, str ] = entry; // const [ name, str ] = entry;
const { dataH, dataC } = string2gb(str, name); // const { dataH, dataC } = string2gb(str, name);
dataStringH += dataH+'\n', dataStringC += dataC+'\n'; // dataStringH += dataH+'\n', dataStringC += dataC+'\n';
}); // });
fs.writeFileSync(path.join(DIR_GENERATED, 'STRINGS.h'), dataStringH); // fs.writeFileSync(path.join(DIR_GENERATED, 'STRINGS.h'), dataStringH);
fs.writeFileSync(path.join(DIR_GENERATED, 'STRINGS.c'), dataStringC); // fs.writeFileSync(path.join(DIR_GENERATED, 'STRINGS.c'), dataStringC);
compileC(path.join(DIR_GENERATED, 'STRINGS.c')); // compileC(path.join(DIR_GENERATED, 'STRINGS.c'));
// Gen imagery // Gen imagery
fs.readdirSync(DIR_IMAGES).forEach(img => { fs.readdirSync(DIR_IMAGES).forEach(img => {

View File

@@ -42,6 +42,7 @@ void conversationFadeUpdate() {
// shade. // shade.
if(diff == FADE_STEP) { if(diff == FADE_STEP) {
// First step // First step
wait_vbl_done();
BGP_REG = ( BGP_REG = (
TIME_FUTURE_TYPE == TIME_FUTURE_TYPE_FADE_TO_BLACK ? COMMON_SHADE_DARK : TIME_FUTURE_TYPE == TIME_FUTURE_TYPE_FADE_TO_BLACK ? COMMON_SHADE_DARK :
TIME_FUTURE_TYPE == TIME_FUTURE_TYPE_FADE_TO_WHITE ? COMMON_SHADE_BRIGHT : TIME_FUTURE_TYPE == TIME_FUTURE_TYPE_FADE_TO_WHITE ? COMMON_SHADE_BRIGHT :
@@ -50,6 +51,7 @@ void conversationFadeUpdate() {
); );
} else if(diff == FADE_STEP * 2) { } else if(diff == FADE_STEP * 2) {
// Second step // Second step
wait_vbl_done();
BGP_REG = ( BGP_REG = (
TIME_FUTURE_TYPE == TIME_FUTURE_TYPE_FADE_TO_BLACK ? COMMON_SHADE_DARKER : TIME_FUTURE_TYPE == TIME_FUTURE_TYPE_FADE_TO_BLACK ? COMMON_SHADE_DARKER :
TIME_FUTURE_TYPE == TIME_FUTURE_TYPE_FADE_TO_WHITE ? COMMON_SHADE_BRIGHTER : TIME_FUTURE_TYPE == TIME_FUTURE_TYPE_FADE_TO_WHITE ? COMMON_SHADE_BRIGHTER :
@@ -58,6 +60,7 @@ void conversationFadeUpdate() {
); );
} else if(diff == FADE_STEP * 3) { } else if(diff == FADE_STEP * 3) {
// Third step // Third step
wait_vbl_done();
BGP_REG = ( BGP_REG = (
TIME_FUTURE_TYPE == TIME_FUTURE_TYPE_FADE_TO_BLACK ? COMMON_SHADE_BLACK : TIME_FUTURE_TYPE == TIME_FUTURE_TYPE_FADE_TO_BLACK ? COMMON_SHADE_BLACK :
TIME_FUTURE_TYPE == TIME_FUTURE_TYPE_FADE_TO_WHITE ? COMMON_SHADE_WHITE : TIME_FUTURE_TYPE == TIME_FUTURE_TYPE_FADE_TO_WHITE ? COMMON_SHADE_WHITE :

View File

@@ -14,22 +14,22 @@
uint16_t QUEUE_ITEM; uint16_t QUEUE_ITEM;
void conversationQueueDebug() { void conversationQueueDebug() {
conversationTextboxString(ERROR); conversationTextboxSetText(STR_ERROR);
} }
void conversationQueueBegin() { void conversationQueueBegin() {
QUEUE_ITEM = QUEUE_TAKE_BLINDS; QUEUE_ITEM = QUEUE_TAKE_BLINDS;
conversationTextboxString(POKER_GAME_START); conversationTextboxSetText(STR_POKER_GAME_START);
} }
void conversationQueueTakeBlinds() { void conversationQueueTakeBlinds() {
QUEUE_ITEM = QUEUE_DEAL_CARDS; QUEUE_ITEM = QUEUE_DEAL_CARDS;
conversationTextboxString(POKER_GAME_TAKING_BLINDS); conversationTextboxSetText(STR_POKER_GAME_TAKING_BLINDS);
} }
void conversationQueueDealCards() { void conversationQueueDealCards() {
QUEUE_ITEM = QUEUE_BEGIN_BETTING; QUEUE_ITEM = QUEUE_BEGIN_BETTING;
conversationTextboxString(POKER_GAME_CARDS_DEALT); conversationTextboxSetText(STR_POKER_GAME_CARDS_DEALT);
} }
void conversationQueueBeginBetting() { void conversationQueueBeginBetting() {
@@ -42,7 +42,7 @@ void conversationQueueBeginBetting() {
if(POKER_PLAYER_BETTER == POKER_HUMAN_INDEX) { if(POKER_PLAYER_BETTER == POKER_HUMAN_INDEX) {
// This is the human player. // This is the human player.
BGB_MESSAGE("Player folding."); BGB_MESSAGE("Player folding.");
conversationTextboxString(DEBUG_PLAYER); conversationTextboxSetText(STR_DEBUG_PLAYER);
POKER_PLAYERS[POKER_PLAYER_BETTER].state |= POKER_PLAYER_STATE_FOLDED; POKER_PLAYERS[POKER_PLAYER_BETTER].state |= POKER_PLAYER_STATE_FOLDED;
} else { } else {
// This is an AI player, get their turn. // This is an AI player, get their turn.
@@ -53,37 +53,37 @@ void conversationQueueBeginBetting() {
switch(turn.type) { switch(turn.type) {
case POKER_TURN_TYPE_FOLD: case POKER_TURN_TYPE_FOLD:
POKER_PLAYERS[POKER_PLAYER_BETTER].state |= POKER_PLAYER_STATE_FOLDED; POKER_PLAYERS[POKER_PLAYER_BETTER].state |= POKER_PLAYER_STATE_FOLDED;
conversationTextboxString(POKER_GAME_AI_FOLD); conversationTextboxSetText(STR_POKER_GAME_AI_FOLD);
break; break;
case POKER_TURN_TYPE_BET: case POKER_TURN_TYPE_BET:
if(turn.bluff) { if(turn.bluff) {
conversationTextboxString(POKER_GAME_AI_RAISE_BLUFF); conversationTextboxSetText(STR_POKER_GAME_AI_RAISE_BLUFF);
} else { } else {
conversationTextboxString(POKER_GAME_AI_RAISE); conversationTextboxSetText(STR_POKER_GAME_AI_RAISE);
} }
break; break;
case POKER_TURN_TYPE_CALL: case POKER_TURN_TYPE_CALL:
if(turn.bluff) { if(turn.bluff) {
conversationTextboxString(POKER_GAME_AI_CALL_BLUFF); conversationTextboxSetText(STR_POKER_GAME_AI_CALL_BLUFF);
} else { } else {
conversationTextboxString(POKER_GAME_AI_CALL); conversationTextboxSetText(STR_POKER_GAME_AI_CALL);
} }
break; break;
case POKER_TURN_TYPE_ALL_IN: case POKER_TURN_TYPE_ALL_IN:
if(turn.bluff) { if(turn.bluff) {
conversationTextboxString(POKER_GAME_AI_ALL_IN_BLUFF); conversationTextboxSetText(STR_POKER_GAME_AI_ALL_IN_BLUFF);
} else { } else {
conversationTextboxString(POKER_GAME_AI_ALL_IN); conversationTextboxSetText(STR_POKER_GAME_AI_ALL_IN);
} }
case POKER_TURN_TYPE_CHECK: case POKER_TURN_TYPE_CHECK:
if(turn.bluff) { if(turn.bluff) {
conversationTextboxString(POKER_GAME_AI_CHECK_BLUFF); conversationTextboxSetText(STR_POKER_GAME_AI_CHECK_BLUFF);
} else { } else {
conversationTextboxString(POKER_GAME_AI_CHECK); conversationTextboxSetText(STR_POKER_GAME_AI_CHECK);
} }
break; break;
} }
@@ -149,17 +149,17 @@ void conversationQueueFlopTurnRiver() {
switch(POKER_COMMUNITY_SIZE) { switch(POKER_COMMUNITY_SIZE) {
case 0: case 0:
count = POKER_COUNT_FLOP; count = POKER_COUNT_FLOP;
conversationTextboxString(POKER_GAME_CARDS_FLOPPED); conversationTextboxSetText(STR_POKER_GAME_CARDS_FLOPPED);
break; break;
case POKER_COUNT_FLOP: case POKER_COUNT_FLOP:
count = POKER_COUNT_TURN; count = POKER_COUNT_TURN;
conversationTextboxString(POKER_GAME_CARDS_TURNED); conversationTextboxSetText(STR_POKER_GAME_CARDS_TURNED);
break; break;
default: default:
count = POKER_COUNT_RIVER; count = POKER_COUNT_RIVER;
conversationTextboxString(POKER_GAME_CARDS_RIVERED); conversationTextboxSetText(STR_POKER_GAME_CARDS_RIVERED);
break; break;
} }
@@ -229,7 +229,7 @@ void conversationQueueWinnerDecide() {
} }
// TODO: Decide on a winner for real. // TODO: Decide on a winner for real.
conversationTextboxString(DEBUG_WINNER_DECIDED); conversationTextboxSetText(STR_DEBUG_WINNER_DECIDED);
// New Round // New Round
pokerNewRound(); pokerNewRound();

View File

@@ -7,7 +7,7 @@
#pragma once #pragma once
#include "../libs.h" #include "../libs.h"
#include "STRINGS.h" #include "../strings.h"
typedef void queuecallback_t(); typedef void queuecallback_t();

View File

@@ -21,6 +21,7 @@ inline void conversationTextboxInit() {
TEXTBOX_STATE = 0; TEXTBOX_STATE = 0;
// Setup window data // Setup window data
wait_vbl_done();
move_win(7, SCREENHEIGHT - (TEXTBOX_HEIGHT_IN_TILES * 8)); move_win(7, SCREENHEIGHT - (TEXTBOX_HEIGHT_IN_TILES * 8));
set_win_data(FONT_DATA_POSITION, FONT_IMAGE_TILES, FONT_IMAGE); set_win_data(FONT_DATA_POSITION, FONT_IMAGE_TILES, FONT_IMAGE);
set_win_data(BORDER_DATA_POSITION, BORDER_IMAGE_TILES, BORDER_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; TEXTBOX_TILES[i + (j * TEXTBOX_CHARS_PER_ROW)] = TEXTBOX_TILE_BLANK;
} }
} }
wait_vbl_done();
set_win_tiles( set_win_tiles(
0x01, 0x01, 0x01, 0x01,
TEXTBOX_WIDTH_IN_TILES - 0x02, TEXTBOX_HEIGHT_IN_TILES - 0x02, 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. // First, lets figure out if there's any more text to reveal or not.
if((TEXTBOX_ROW_COUNT - TEXTBOX_ROW_CURRENT) < TEXTBOX_TILES_ROWS) { if((TEXTBOX_ROW_COUNT - TEXTBOX_ROW_CURRENT) < TEXTBOX_TILES_ROWS) {
TEXTBOX_STATE &= ~TEXTBOX_STATE_VISIBLE; TEXTBOX_STATE &= ~TEXTBOX_STATE_VISIBLE;
wait_vbl_done();
HIDE_WIN; HIDE_WIN;
conversationQueueNext();
return; return;
} }
@@ -165,6 +169,9 @@ inline void conversationTextboxUpdate() {
TEXTBOX_STATE |= TEXTBOX_STATE_SCROLLED; TEXTBOX_STATE |= TEXTBOX_STATE_SCROLLED;
} else { } else {
tiles[0] = c - 33 + FONT_DATA_POSITION; tiles[0] = c - 33 + FONT_DATA_POSITION;
// tiles[0] = c + FONT_DATA_POSITION;
wait_vbl_done();
set_win_tiles( set_win_tiles(
0x01 + (TEXTBOX_SCROLL % TEXTBOX_CHARS_PER_ROW), 0x01 + (TEXTBOX_SCROLL % TEXTBOX_CHARS_PER_ROW),
0x01 + (TEXTBOX_SCROLL / TEXTBOX_CHARS_PER_ROW), 0x01 + (TEXTBOX_SCROLL / TEXTBOX_CHARS_PER_ROW),
@@ -173,5 +180,4 @@ inline void conversationTextboxUpdate() {
); );
TEXTBOX_SCROLL++; TEXTBOX_SCROLL++;
} }
} }

View File

@@ -43,11 +43,6 @@
#define TEXTBOX_SCROLL_ROWS_MAX 14 #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 char TEXTBOX_TEXTS[TEXTBOX_SCROLL_ROWS_MAX * TEXTBOX_CHARS_PER_ROW];
extern uint8_t TEXTBOX_ROW_COUNT; extern uint8_t TEXTBOX_ROW_COUNT;
extern uint8_t TEXTBOX_ROW_CURRENT; extern uint8_t TEXTBOX_ROW_CURRENT;

View File

@@ -151,8 +151,8 @@ void main() {
timeInit(); timeInit();
commonTilesInit(); commonTilesInit();
conversationTextboxInit(); conversationTextboxInit();
// conversationQueueInit(); conversationQueueInit();
// pokerInit(); pokerInit();
// Fill screen white // Fill screen white
for(j = 0; j < GB_BACKGROUND_COLUMNS * GB_BACKGROUND_ROWS; j++) filled[j] = COMMON_TILE_3; 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; SCY_REG = 0x00;
// Alright begin the game logic here. // Alright begin the game logic here.
// conversationQueueNext(); 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);
// Now turn the screen on // Now turn the screen on
DISPLAY_ON; DISPLAY_ON;
@@ -172,19 +170,23 @@ void main() {
// Begin the loop // Begin the loop
while(1) { while(1) {
// Wait for VSYNC // Perform non-graphical code updates
wait_vbl_done();
// Tick time.
timeUpdate();
// Update the input state // Update the input state
INPUT_STATE = joypad(); INPUT_STATE = joypad();
// Update conversation pause effect
conversationPauseUpdate();
// Update conversation textbox
conversationTextboxUpdate(); conversationTextboxUpdate();
// conversationPauseUpdate();
// conversationFadeUpdate(); // Update conversation fade effect
conversationFadeUpdate();
// mainDebugDraw(): // mainDebugDraw():
// Tick time.
timeUpdate();
} }
} }

33
src/strings.c Normal file
View File

@@ -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.";

34
src/strings.h Normal file
View File

@@ -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[];