summaryrefslogtreecommitdiff
path: root/src/koopatlas/shop.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/koopatlas/shop.cpp22
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