diff options
Diffstat (limited to 'src/koopatlas/shop.cpp')
-rw-r--r-- | src/koopatlas/shop.cpp | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/src/koopatlas/shop.cpp b/src/koopatlas/shop.cpp index 63d23e2..e3cade7 100644 --- a/src/koopatlas/shop.cpp +++ b/src/koopatlas/shop.cpp @@ -10,9 +10,9 @@ void dWMShop_c::ShopModel_c::setupItem(float x, float y, ItemTypes type) { static const char* Produce[ITEM_TYPE_COUNT][4] = { { "I_kinoko", "g3d/I_kinoko.brres", "I_kinoko", "wait2" }, { "I_fireflower", "g3d/I_fireflower.brres", "I_fireflower", "wait2" }, + { "I_propeller", "g3d/I_propeller.brres", "I_propeller_model", "wait2" }, { "I_iceflower", "g3d/I_iceflower.brres", "I_iceflower", "wait2" }, { "I_penguin", "g3d/I_penguin.brres", "I_penguin", "wait2" }, - { "I_propeller", "g3d/I_propeller.brres", "I_propeller_model", "wait2" }, { "I_kinoko_bundle","g3d/I_mini_kinoko.brres", "I_mini_kinoko", "wait2" }, { "I_star", "g3d/I_star.brres", "I_star", "wait2" }, { "I_hammer", "g3d/I_fireflower.brres", "I_fireflower", "wait2" }, @@ -62,6 +62,7 @@ void dWMShop_c::ShopModel_c::setupLakitu(int id) { animation.setup(mdlRes, anmChr, &allocator, 0); playAnim("idle", 1.0f, 0); + playingNotEnough = false; allocator.unlink(); } @@ -82,6 +83,10 @@ void dWMShop_c::ShopModel_c::execute() { OSReport("Setting animation to idle"); playAnim("idle", 1.0f, 0); this->animation.setCurrentFrame(0.0); + if (playingNotEnough) { + OSReport("Detected Not Enough animation as being over\n"); + playingNotEnough = false; + } } } } @@ -347,7 +352,10 @@ void dWMShop_c::executeState_Wait() { newSelection = selected + 1; } else if (nowPressed & WPAD_TWO) { - buyItem(selected); + if (!lakituModel->playingNotEnough) + buyItem(selected); + else + OSReport("Not Enough is still playing!\n"); } if (newSelection > -1) { @@ -527,6 +535,10 @@ void dWMShop_c::loadInfo() { int scCount = getUnspentStarCoinCount(); WriteNumberToTextBox(&scCount, CoinCount, false); WriteNumberToTextBox(&scCount, CoinCountShadow, false); + + + WriteBMGToTextBox(BackText, GetBMG(), 2, 58, 0); + WriteBMGToTextBox(BuyText, GetBMG(), 302, 4, 0); } @@ -540,6 +552,8 @@ void dWMShop_c::buyItem(int item) { int cost = itemDefs[item][0], cash = getUnspentStarCoinCount(); if (cost > cash) { + OSReport("Started playing Not Enough\n"); + lakituModel->playingNotEnough = true; lakituModel->playAnim("notenough", 1.0f, 1); MapSoundPlayer(SoundRelatedClass, SE_SYS_INVALID, 1); return; @@ -559,7 +573,7 @@ void dWMShop_c::buyItem(int item) { int invStartIndex = itemDefs[item][1], invCount = itemDefs[item][2]; for (int i = 0; i < invCount; i++) - appliedItems[(int)Inventory[shopKind][invStartIndex]]++; + appliedItems[(int)Inventory[shopKind][invStartIndex+i]]++; // TODO: Make this work with hammers for (int i = 0; i < 8; i++) { @@ -568,7 +582,7 @@ void dWMShop_c::buyItem(int item) { if (block->powerups_available[i] > 99) block->powerups_available[i] = 99; - dScKoopatlas_c::instance->stockItem->counts[i] = block->powerups_available[i]; + dScKoopatlas_c::instance->stockItem->newCounts[i] = block->powerups_available[i]; } // Apply lives to everyone |