Files
tww/src/d/d_a_race_item_static.cpp
T
2023-12-03 14:28:43 -05:00

144 lines
3.7 KiB
C++

//
// Generated by dtk
// Translation Unit: d_a_race_item_static.cpp
//
#include "d/actor/d_a_race_item.h"
#include "d/d_com_inf_game.h"
#include "d/d_item.h"
#include "d/d_item_data.h"
#include "m_Do/m_Do_mtx.h"
void daRaceItem_c::raceItemForceGet() {
field_0x640 = 1;
switch(field_0x644) {
case 0:
raceItemGet();
break;
case 1:
normalItemGet();
break;
}
}
void daRaceItem_c::raceItemGet() {
switch(m_itemNo) {
case GREEN_RUPEE:
mDoAud_seStart(JA_SE_LUPY_GET, 0, 0, 0);
dComIfGp_plusMiniGameRupee(1);
break;
case BLUE_RUPEE:
mDoAud_seStart(JA_SE_BLUE_LUPY_GET, 0, 0, 0);
dComIfGp_plusMiniGameRupee(5);
break;
case YELLOW_RUPEE:
mDoAud_seStart(JA_SE_LUPY_GET, 0, 0, 0);
dComIfGp_plusMiniGameRupee(10);
break;
case RED_RUPEE:
mDoAud_seStart(JA_SE_RED_LUPY_GET, 0, 0, 0);
dComIfGp_plusMiniGameRupee(20);
break;
case PURPLE_RUPEE:
mDoAud_seStart(JA_SE_LUPY_GET, 0, 0, 0);
dComIfGp_plusMiniGameRupee(50);
break;
case ORANGE_RUPEE:
mDoAud_seStart(JA_SE_LUPY_GET, 0, 0, 0);
dComIfGp_plusMiniGameRupee(100);
break;
case SILVER_RUPEE:
mDoAud_seStart(JA_SE_LUPY_GET, 0, 0, 0);
dComIfGp_plusMiniGameRupee(200);
break;
}
}
void daRaceItem_c::normalItemGet() {
field_0x640 = 1;
execItemGet(m_itemNo);
if(mPickupFlag != 0x7F) {
dComIfGs_onItem(mPickupFlag, fopAcM_GetHomeRoomNo(this));
}
switch(m_itemNo) {
case GREEN_RUPEE:
mDoAud_seStart(JA_SE_LUPY_GET, 0, 0, 0);
break;
case BLUE_RUPEE:
mDoAud_seStart(JA_SE_BLUE_LUPY_GET, 0, 0, 0);
break;
case YELLOW_RUPEE:
mDoAud_seStart(JA_SE_RED_LUPY_GET, 0, 0, 0);
break;
case RED_RUPEE:
mDoAud_seStart(JA_SE_RED_LUPY_GET, 0, 0, 0);
break;
case PURPLE_RUPEE:
mDoAud_seStart(JA_SE_RED_LUPY_GET, 0, 0, 0);
break;
case ORANGE_RUPEE:
mDoAud_seStart(JA_SE_RED_LUPY_GET, 0, 0, 0);
break;
case SILVER_RUPEE:
mDoAud_seStart(JA_SE_RED_LUPY_GET, 0, 0, 0);
break;
case S_MAGIC:
mDoAud_seStart(JA_SE_MAGIC_POT_GET_S, 0, 0, 0);
break;
case L_MAGIC:
mDoAud_seStart(JA_SE_MAGIC_POT_GET_L, 0, 0, 0);
break;
case BOMB_5:
case BOMB_10:
case BOMB_20:
case BOMB_30:
case ARROW_10:
case ARROW_20:
case ARROW_30:
mDoAud_seStart(JA_SE_CONSUMP_ITEM_GET, 0, 0, 0);
break;
case TRIPLE_HEART:
mDoAud_seStart(JA_SE_HEART_PIECE, 0, 0, 0);
break;
}
}
BOOL daRaceItem_c::startOffsetPos() {
field_0x640 = 0;
return true;
}
BOOL daRaceItem_c::endOffsetPos(f32 param_1, cXyz* param_2, f32 param_3, f32 param_4, csXyz* param_5) {
if(param_5) {
current.angle = *param_5;
}
if(param_2) {
mScale = *param_2;
}
mGravity = param_1;
speedF = param_4;
speed.y = param_3;
field_0x640 = 3;
return true;
}
BOOL daRaceItem_c::checkOffsetPos() {
BOOL ret = true;
if(field_0x645 & 0x1 || fopAcM_checkHookCarryNow(this)) {
ret = false;
}
return ret;
}
void daRaceItem_c::set_mtx(cXyz* param_1) {
mpModel->setBaseScale(mScale);
mDoMtx_stack_c::transS(*param_1);
mDoMtx_stack_c::YrotM(current.angle.y);
mpModel->setBaseTRMtx(mDoMtx_stack_c::get());
}