From a7eafdd1e02d9efad41d56d339b80d7cb11e5b73 Mon Sep 17 00:00:00 2001 From: Rudis Muiznieks Date: Sat, 18 Jun 2022 13:20:04 -0500 Subject: [PATCH] all menus drawing --- slangin.ino | 73 ++++++++++++++++++++++++++++++++++++++++++++++++----- states.ino | 21 ++++++++++----- 2 files changed, 82 insertions(+), 12 deletions(-) diff --git a/slangin.ino b/slangin.ino index 3089153..e272c49 100644 --- a/slangin.ino +++ b/slangin.ino @@ -18,9 +18,9 @@ enum GameState { STATE_JET_MENU, STATE_BUY_MENU, STATE_SELL_MENU, - STATE_FIGHT_MENU, STATE_SHARK_MENU, STATE_BANK_MENU, + STATE_FIGHT_MENU, STATE_INVENTORY, STATE_INFO_DIALOG, STATE_QUESTION_DIALOG, @@ -93,6 +93,7 @@ void setup() { screenInitialized = false; arduboy.begin(); arduboy.setFrameRate(15); + arduboy.initRandomSeed(); } void loop() { @@ -139,10 +140,61 @@ void loop() { case STATE_INVENTORY: drawStatusBar(); - drawTitle(F("Trenchcoat")); + drawTitle("Trenchcoat"); buildDrugMenu(pInventory); drawMenu(menuSmall, menuCols, menuLength, menu); break; + + case STATE_BUY_MENU: + case STATE_SELL_MENU: + drawStatusBar(); + if (sGameState == STATE_BUY_MENU) drawTitle("Buy Drugs"); + else drawTitle("Sell Drugs"); + buildDrugMenu(sDrugPrices); + drawMenu(menuSmall, menuCols, menuLength, menu); + drawMenuIndicator(menuSelected, menuSmall, menuCols, menuLength, menu, false); + break; + + case STATE_JET_MENU: { + String title = F("Jet from "); + title = title + lookupLocation(pLocation); + drawStatusBar(); + drawTitle(title); + for (int i = 0; i < 5; i++) { + int loc = i >= pLocation ? i + 1 : i; + menu[i] = lookupLocation(loc); + } + menuLength = 5; + menuSmall = true; + menuCols = true; + drawMenu(menuSmall, menuCols, menuLength, menu); + drawMenuIndicator(menuSelected, menuSmall, menuCols, menuLength, menu, false); + } + break; + + case STATE_SHARK_MENU: + drawStatusBar(); + drawTitle("Loan Shark"); + menu[0] = F("Repay Loan"); + menu[1] = F("Borrow Money"); + menuLength = 2; + menuSmall = false; + menuCols = false; + drawMenu(menuSmall, menuCols, menuLength, menu); + drawMenuIndicator(menuSelected, menuSmall, menuCols, menuLength, menu, false); + break; + + case STATE_BANK_MENU: + drawStatusBar(); + drawTitle("Bank"); + menu[0] = F("Deposit Money"); + menu[1] = F("Withdraw Money"); + menuLength = 2; + menuSmall = false; + menuCols = false; + drawMenu(menuSmall, menuCols, menuLength, menu); + drawMenuIndicator(menuSelected, menuSmall, menuCols, menuLength, menu, false); + break; } screenInitialized = true; } @@ -204,6 +256,7 @@ void loop() { sGameState == STATE_SELL_MENU || sGameState == STATE_SHARK_MENU || sGameState == STATE_BANK_MENU) { + screenInitialized = false; sGameState = STATE_TURN_MENU; } } @@ -239,11 +292,19 @@ void drawStatusBar() { } else { const int chars = numberChars(pMoney); const int x = 128 - (chars * 4); + if (sGameState == STATE_SHARK_MENU || sGameState == STATE_BANK_MENU) { + font3x5.setCursor(1, 0); + font3x5.print(sGameState == STATE_SHARK_MENU ? "Loan" : "Acct"); + Sprites::drawOverwrite(19, 1, spriteDollar, 0); + font3x5.setCursor(25, 0); + font3x5.print(sGameState == STATE_SHARK_MENU ? pLoanAmount : pSavingsAmount); + } else { + font3x5.setCursor(1, 0); + font3x5.print("Day"); + font3x5.setCursor(14, 0); + font3x5.print(sCurrentDay); + } Sprites::drawOverwrite(x - 6, 1, spriteDollar, 0); - font3x5.setCursor(1, 0); - font3x5.print("Day"); - font3x5.setCursor(14, 0); - font3x5.print(sCurrentDay); font3x5.setCursor(x, 0); font3x5.print(pMoney); } diff --git a/states.ino b/states.ino index 11a2423..d2431cd 100644 --- a/states.ino +++ b/states.ino @@ -24,12 +24,12 @@ void incrementDay() { // TODO: check for game over // generate new drug prices - sDrugPrices[DRUG_COCAINE] = rand() % 12001 + 16000; - sDrugPrices[DRUG_HEROINE] = rand() % 7001 + 5000; - sDrugPrices[DRUG_ACID] = (rand() % 35 + 10) * 100; - sDrugPrices[DRUG_WEED] = (rand() % 43 + 33) * 10; - sDrugPrices[DRUG_SPEED] = (rand() % 16 + 7) * 10; - sDrugPrices[DRUG_LUDES] = (rand() % 5 + 1) * 10; + sDrugPrices[DRUG_COCAINE] = random(12001) + 16000; + sDrugPrices[DRUG_HEROINE] = random(7001) + 5000; + sDrugPrices[DRUG_ACID] = (random(35) + 10) * 100; + sDrugPrices[DRUG_WEED] = (random(43) + 33) * 10; + sDrugPrices[DRUG_SPEED] = (random(16) + 7) * 10; + sDrugPrices[DRUG_LUDES] = (random(5) + 1) * 10; } void handleMenuAction() { @@ -50,10 +50,19 @@ void handleMenuAction() { sGameState = STATE_INVENTORY; break; case 1: // buy drugs + sGameState = STATE_BUY_MENU; + break; case 2: // sell drugs + sGameState = STATE_SELL_MENU; + break; case 3: // jet + sGameState = STATE_JET_MENU; + break; case 4: // loan shark + sGameState = STATE_SHARK_MENU; + break; case 5: // bank + sGameState = STATE_BANK_MENU; break; } break;