summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/koopatlas/shop.cpp31
-rw-r--r--src/koopatlas/shop.h4
2 files changed, 29 insertions, 6 deletions
diff --git a/src/koopatlas/shop.cpp b/src/koopatlas/shop.cpp
index 514bd43..4852d81 100644
--- a/src/koopatlas/shop.cpp
+++ b/src/koopatlas/shop.cpp
@@ -53,6 +53,7 @@ void dWMShop_c::ShopModel_c::setupLakitu(int id) {
};
scaleFactor = 1.0f;
+ scaleEase = 0.0f;
allocator.link(-1, GameHeaps[0], 0, 0x20);
@@ -85,7 +86,9 @@ void dWMShop_c::ShopModel_c::draw() {
mtx.translation(x, y, 1000.0f);
model.setDrawMatrix(mtx);
- Vec scale = {scaleFactor, scaleFactor, scaleFactor};
+ float s = scaleFactor * scaleEase;
+
+ Vec scale = {s, s, s};
model.setScale(&scale);
model.calcWorld(false);
@@ -233,15 +236,19 @@ int dWMShop_c::onDraw() {
void dWMShop_c::specialDraw1() {
if (visible) {
+ lakituModel->scaleEase = scaleEase;
lakituModel->draw();
- for (int i = 0; i < 12; i++)
+ for (int i = 0; i < 12; i++) {
+ itemModels[i].scaleEase = scaleEase;
itemModels[i].draw();
+ }
+ }
+
// if (wasOff) { effect.spawn("Wm_ob_greencoinkira", 0, &pos, &rot, &scale); wasOff = false; }
// if(this->ska.isAnimationDone())
// this->ska.setCurrentFrame(0.0);
- }
}
@@ -263,6 +270,7 @@ void dWMShop_c::beginState_ShowWait() {
layout.disableAllAnimations();
layout.enableNonLoopAnim(SHOW_ALL);
visible = true;
+ scaleEase = 0.0;
loadInfo();
loadModels();
@@ -282,11 +290,16 @@ void dWMShop_c::executeState_ButtonActivateWait() {
if (!layout.isAnyAnimOn())
state.setState(&StateID_Wait);
}
-void dWMShop_c::endState_ButtonActivateWait() { }
+void dWMShop_c::endState_ButtonActivateWait() { OSReport("Wait"); }
// Wait
-void dWMShop_c::beginState_Wait() { }
+void dWMShop_c::beginState_Wait() { timer = 0; MapSoundPlayer(SoundRelatedClass, SE_OBJ_CLOUD_BLOCK_TO_JUGEM, 1); }
void dWMShop_c::executeState_Wait() {
+ if (timer < 90)
+ scaleEase = -((cos(timer * 3.14 /20)-0.9)/timer*10)+1;
+ timer++;
+ OSReport("Scale Ease @ %f, timer %d", scaleEase, timer);
+
int nowPressed = Remocon_GetPressed(GetActiveRemocon());
int newSelection = -1;
@@ -341,8 +354,16 @@ void dWMShop_c::beginState_HideWait() {
MapSoundPlayer(SoundRelatedClass, SE_SYS_DIALOGUE_OUT_AUTO, 1);
layout.enableNonLoopAnim(HIDE_ALL);
layout.enableNonLoopAnim(DEACTIVATE_BUTTON+selected);
+
+ timer = 25;
+ MapSoundPlayer(SoundRelatedClass, SE_OBJ_CS_KINOHOUSE_DISAPP, 1);
}
void dWMShop_c::executeState_HideWait() {
+ if (timer > 0)
+ scaleEase = -((cos(timer * 3.14 /13.5)-0.9)/timer*10)+1;
+ OSReport("Scale Ease @ %f, timer %d", scaleEase, timer);
+ timer--;
+
if (!layout.isAnimOn(HIDE_ALL))
state.setState(&StateID_Hidden);
}
diff --git a/src/koopatlas/shop.h b/src/koopatlas/shop.h
index 304154a..2381b29 100644
--- a/src/koopatlas/shop.h
+++ b/src/koopatlas/shop.h
@@ -21,6 +21,8 @@ class dWMShop_c : public dActor_c {
m2d::EmbedLayout_c layout;
bool visible;
+ float scaleEase;
+ int timer;
int selected, lastTopRowChoice;
int shopKind;
@@ -70,7 +72,7 @@ class dWMShop_c : public dActor_c {
m3d::mdl_c model;
m3d::anmChr_c animation;
- float x, y, scaleFactor;
+ float x, y, scaleFactor, scaleEase;
void setupItem(float x, float y, ItemTypes type);
void setupLakitu(int id);