diff --git a/assets/strings.js b/assets/strings.js index 015504d..d6d773a 100644 --- a/assets/strings.js +++ b/assets/strings.js @@ -1,7 +1,8 @@ const GAME_STRINGS = { 'HELLO': 'Hello World!\nHow are you today?\nThank god!', - 'POKER_GAME_START': 'Poker game started!' + 'POKER_GAME_START': 'Poker game started', + 'POKER_GAME_TAKING_BLINDS': 'Blinds taken.' }; module.exports = { GAME_STRINGS }; \ No newline at end of file diff --git a/scripts/build.js b/scripts/build.js index 076c4c1..02d9d4d 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -82,11 +82,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 { fileH, fileC } = string2gb(str, name, DIR_GENERATED); - compileC(fileC); -}) + 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/scripts/string2gb.js b/scripts/string2gb.js index ff0cce8..f9255b9 100644 --- a/scripts/string2gb.js +++ b/scripts/string2gb.js @@ -11,25 +11,20 @@ const getCodeFrom = l => { return cc - FONT_CHARACTER_FIRST + FONT_DATA_POSITION } -const string2gb = (string, name, dirOut) => { +const string2gb = (string, name) => { const letters = []; for(let i = 0; i < string.length; i++) { letters.push(getCodeFrom(string[i])); } - let outH = '#include "libs.h"\n\n'; - outH += `#define STR_${name}_LENGTH ${string.length}\n`; - outH += `extern const uint8_t STR_${name}_DATA[];`; + let dataH = `#define STR_${name}_LENGTH ${string.length}\n`; + dataH += `extern const uint8_t STR_${name}_DATA[];`; - let outC = `#include "${name}.h"\n\n`; - outC += `const uint8_t STR_${name}_DATA[] = {\n` + arrayToString(letters) + `\n};`; + let dataC = `const uint8_t STR_${name}_DATA[] = {\n`; + dataC += arrayToString(letters); + dataC += `\n};`; - const fileH = path.join(dirOut, `${name}.h`); - const fileC = path.join(dirOut, `${name}.c`); - - fs.writeFileSync(fileH, outH); - fs.writeFileSync(fileC, outC); - return { fileH, fileC }; + return { dataH, dataC }; } module.exports = { diff --git a/src/conversation/fade.c b/src/conversation/fade.c index 644799b..463476d 100644 --- a/src/conversation/fade.c +++ b/src/conversation/fade.c @@ -37,7 +37,8 @@ void conversationFadeUpdate() { diff = TIME_CURRENT - TIME_FUTURE; // Now we work out the steps. Time is measured in steps which are made of - // parts of a second. + // parts of a second. This code assumes that the screen STARTS at the correct + // shade. if(diff == FADE_STEP) { // First step BGP_REG = ( @@ -47,7 +48,7 @@ void conversationFadeUpdate() { COMMON_SHADE_BRIGHTER ); } else if(diff == FADE_STEP * 2) { - // First step + // Second step 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 : @@ -55,13 +56,12 @@ void conversationFadeUpdate() { COMMON_SHADE_BRIGHT ); } else if(diff == FADE_STEP * 3) { - // First step + // Third step 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 : COMMON_SHADE_NORMAL ); - } else if(diff == FADE_STEP * 4) { TIME_FUTURE_TYPE = TIME_FUTURE_TYPE_NULL; conversationQueueNext(); } diff --git a/src/conversation/fade.h b/src/conversation/fade.h index 42ed01a..f5e6a3b 100644 --- a/src/conversation/fade.h +++ b/src/conversation/fade.h @@ -11,8 +11,8 @@ #include "pause.h" #include "../display/common.h" -// There are 4 total shades, so this is all 4 shades in a second. -#define FADE_STEP TIME_PER_SECOND / COMMON_TILE_COUNT +// This is how many frames it takes to change each shade. +#define FADE_STEP 20 void conversationFadeToBlack(); void conversationFadeFromBlack(); diff --git a/src/conversation/queue.c b/src/conversation/queue.c index 48811b9..0aa2a80 100644 --- a/src/conversation/queue.c +++ b/src/conversation/queue.c @@ -9,46 +9,27 @@ #include "pause.h" #include "textbox.h" #include "fade.h" +#include "../poker/poker.h" uint16_t QUEUE_ITEM; void conversationQueueInit() { - QUEUE_ITEM = 0; + QUEUE_ITEM = QUEUE_BEGIN; } void conversationQueueNext() { BGB_printf("Queue item: %d\n", QUEUE_ITEM); switch(QUEUE_ITEM) { - // case 0: - // conversationTextboxSetText(STR_POKER_GAME_START_DATA, STR_POKER_GAME_START_LENGTH); - // conversationPause(3); - // QUEUE_ITEM++; - // break; - - case 0: - conversationFadeToBlack(); - QUEUE_ITEM++; - break; - - case 1: - conversationFadeFromBlack(); - QUEUE_ITEM++; - break; - - case 2: - conversationFadeToWhite(); - QUEUE_ITEM++; + case QUEUE_BEGIN: + conversationTextboxString(POKER_GAME_START); + QUEUE_ITEM = QUEUE_TAKE_BLINDS; break; - case 3: - conversationFadeFromWhite(); - QUEUE_ITEM++; + case QUEUE_TAKE_BLINDS: + pokerTakeBlinds(); + conversationTextboxString(POKER_GAME_TAKING_BLINDS); + QUEUE_ITEM = QUEUE_TAKE_BLINDS; break; - - // case 2: - // conversationTextboxSetText(STR_POKER_GAME_START_DATA, STR_POKER_GAME_START_LENGTH); - // QUEUE_ITEM++; - // break; } } \ No newline at end of file diff --git a/src/conversation/queue.h b/src/conversation/queue.h index efad1ad..391c039 100644 --- a/src/conversation/queue.h +++ b/src/conversation/queue.h @@ -7,10 +7,12 @@ #pragma once #include "../libs.h" -#include "HELLO.h" -#include "POKER_GAME_START.h" +#include "STRINGS.h" extern uint16_t QUEUE_ITEM; +#define QUEUE_BEGIN 10 +#define QUEUE_TAKE_BLINDS 20 + void conversationQueueInit(); void conversationQueueNext(); \ No newline at end of file diff --git a/src/conversation/textbox.h b/src/conversation/textbox.h index 1402bbd..0cbb90a 100644 --- a/src/conversation/textbox.h +++ b/src/conversation/textbox.h @@ -37,6 +37,10 @@ #define TEXTBOX_TILES_ROWS 3 #define TEXTBOX_TILE_BLANK COMMON_TILE_3 +#define conversationTextboxString(name) conversationTextboxSetText(\ + STR_ ## name ## _DATA, STR_ ## name ## _LENGTH\ +) + extern char *TEXTBOX_TEXT; extern uint8_t TEXTBOX_TEXT_LENGTH; extern uint8_t TEXTBOX_STATE; diff --git a/src/poker/poker.c b/src/poker/poker.c index 8db9d00..c0a0a95 100644 --- a/src/poker/poker.c +++ b/src/poker/poker.c @@ -18,6 +18,9 @@ uint8_t POKER_PLAYER_DEALER; uint8_t POKER_PLAYER_SMALL_BLIND; uint8_t POKER_PLAYER_BIG_BLIND; +uint16_t POKER_GAME_BLINDS_CURRENT; +uint16_t POKER_GAME_POT; + void pokerInit() { uint8_t i; @@ -30,6 +33,9 @@ void pokerInit() { // Set up the initial state. // TODO: Should this be randomized? POKER_PLAYER_DEALER = 0; + POKER_GAME_POT = 0; + + POKER_GAME_BLINDS_CURRENT = 10; // Reset the round state (For the first round) pokerNewRound(); @@ -85,4 +91,11 @@ void pokerNewRound() { POKER_PLAYERS[i].hand[j] = POKER_DECK[POKER_DECK_SIZE--]; } } +} + +void pokerTakeBlinds() { + // TODO: I need to make sure the blind players even have the chips to blind. + POKER_PLAYERS[POKER_PLAYER_SMALL_BLIND].chips -= POKER_GAME_BLINDS_CURRENT; + POKER_PLAYERS[POKER_PLAYER_BIG_BLIND].chips -= (POKER_GAME_BLINDS_CURRENT*2); + POKER_GAME_POT += POKER_GAME_BLINDS_CURRENT * 3; } \ No newline at end of file diff --git a/src/poker/poker.h b/src/poker/poker.h index 0ca9902..9253b12 100644 --- a/src/poker/poker.h +++ b/src/poker/poker.h @@ -22,6 +22,11 @@ extern uint8_t POKER_PLAYER_DEALER; extern uint8_t POKER_PLAYER_SMALL_BLIND; extern uint8_t POKER_PLAYER_BIG_BLIND; +extern uint16_t POKER_GAME_BLINDS_CURRENT; +extern uint16_t POKER_GAME_POT; + void pokerInit(); -void pokerNewRound(); \ No newline at end of file +void pokerNewRound(); + +void pokerTakeBlinds(); \ No newline at end of file