Link board/mushroom.c
This commit is contained in:
parent
ec5d98fbe7
commit
56895ea8ff
2 changed files with 135 additions and 142 deletions
|
|
@ -380,7 +380,7 @@ config.libs = [
|
||||||
Object(Matching, "game/board/basic_space.c"),
|
Object(Matching, "game/board/basic_space.c"),
|
||||||
Object(Matching, "game/board/warp.c"),
|
Object(Matching, "game/board/warp.c"),
|
||||||
Object(Matching, "game/board/char_wheel.c"),
|
Object(Matching, "game/board/char_wheel.c"),
|
||||||
Object(NonMatching, "game/board/mushroom.c"),
|
Object(Matching, "game/board/mushroom.c"),
|
||||||
Object(Matching, "game/board/star.c"),
|
Object(Matching, "game/board/star.c"),
|
||||||
Object(Matching, "game/board/roll.c"),
|
Object(Matching, "game/board/roll.c"),
|
||||||
Object(Matching, "game/board/ui.c"),
|
Object(Matching, "game/board/ui.c"),
|
||||||
|
|
|
||||||
|
|
@ -2,11 +2,31 @@
|
||||||
#include "game/gamework_data.h"
|
#include "game/gamework_data.h"
|
||||||
#include "game/board/item.h"
|
#include "game/board/item.h"
|
||||||
#include "game/object.h"
|
#include "game/object.h"
|
||||||
|
#include "game/board/main.h"
|
||||||
|
#include "game/board/player.h"
|
||||||
|
#include "game/board/ui.h"
|
||||||
|
#include "game/board/model.h"
|
||||||
|
|
||||||
void KillMushroom();
|
#include "game/objsub.h"
|
||||||
void MushroomMain();
|
|
||||||
extern Process* boardMainProc;
|
#include "math.h"
|
||||||
extern Process* mushroomProc;
|
|
||||||
|
extern s32 boardTutorialData[4];
|
||||||
|
|
||||||
|
|
||||||
|
static void KillMushroom();
|
||||||
|
static void MushroomMain();
|
||||||
|
static void KillItemMdl(void);
|
||||||
|
static void MarkKillBox(void);
|
||||||
|
static void InitBox(s32 arg0);
|
||||||
|
|
||||||
|
static const float boxOfs[2] = {-150.0f, 150.0f};
|
||||||
|
static omObjData *boxObj[2] = {};
|
||||||
|
static s16 itemMdl = -1;
|
||||||
|
static s8 itemResult;
|
||||||
|
static u8 pickerChoice;
|
||||||
|
static omObjData* itemGiveObj;
|
||||||
|
static Process* mushroomProc;
|
||||||
|
|
||||||
void BoardMushroomExec(s32 arg0) {
|
void BoardMushroomExec(s32 arg0) {
|
||||||
omVibrate(arg0, 0xC, 6, 6);
|
omVibrate(arg0, 0xC, 6, 6);
|
||||||
|
|
@ -20,16 +40,40 @@ void BoardMushroomExec(s32 arg0) {
|
||||||
GWPlayer[arg0].color = 3;
|
GWPlayer[arg0].color = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern s32 boardTutorialData[4];
|
|
||||||
|
|
||||||
void MushroomMain(void) {
|
typedef struct {
|
||||||
Point3d sp14[2];
|
struct {
|
||||||
Point3d sp8;
|
u8 unk00_field0 : 1;
|
||||||
|
u8 unk00_field1 : 1;
|
||||||
|
u8 unk00_field2 : 3;
|
||||||
|
u8 unk00_field5 : 2;
|
||||||
|
u8 unk00_field7 : 1;
|
||||||
|
};
|
||||||
|
char unk01[1];
|
||||||
|
s16 unk_02;
|
||||||
|
s16 unk_04;
|
||||||
|
s16 unk_06;
|
||||||
|
f32 unk_08;
|
||||||
|
} boxObjWork;
|
||||||
|
|
||||||
|
static void SetBoxHide(s32 arg0);
|
||||||
|
static void SetBoxCenter(s32 arg0);
|
||||||
|
static void SetBoxShow(s32 arg0);
|
||||||
|
static void WaitBoxOpen(s32 arg0);
|
||||||
|
static void WaitBoxCenter(s32 arg0);
|
||||||
|
static s32 CheckBox(void);
|
||||||
|
static void StartItemGive(s32 arg0);
|
||||||
|
static void ShowItemMdl(void);
|
||||||
|
static void WaitItemGive(void);
|
||||||
|
|
||||||
|
static void MushroomMain(void) {
|
||||||
|
Vec sp14[2];
|
||||||
|
Vec sp8;
|
||||||
s32 temp_r0;
|
s32 temp_r0;
|
||||||
s32 temp_r0_2;
|
s32 temp_r0_2;
|
||||||
s32 var_r30;
|
s32 var_r30;
|
||||||
s32 curPlayer;
|
s32 curPlayer;
|
||||||
s32 var_r29;
|
s8 var_r29;
|
||||||
boxObjWork* box;
|
boxObjWork* box;
|
||||||
s32 var_r27;
|
s32 var_r27;
|
||||||
s32 var_r26;
|
s32 var_r26;
|
||||||
|
|
@ -80,7 +124,7 @@ void MushroomMain(void) {
|
||||||
if (GWPlayer[curPlayer].com != 0) {
|
if (GWPlayer[curPlayer].com != 0) {
|
||||||
BoardRand();
|
BoardRand();
|
||||||
var_r26 = 0; //inline?
|
var_r26 = 0; //inline?
|
||||||
var_r29 = (s8)var_r26;
|
var_r29 = var_r26;
|
||||||
if (_CheckFlag(0x1000BU) != 0) {
|
if (_CheckFlag(0x1000BU) != 0) {
|
||||||
var_r29 = 0;
|
var_r29 = 0;
|
||||||
}
|
}
|
||||||
|
|
@ -121,7 +165,7 @@ void MushroomMain(void) {
|
||||||
var_r27 = 0x50002;
|
var_r27 = 0x50002;
|
||||||
}
|
}
|
||||||
|
|
||||||
BoardPlayerMotionShiftSet(curPlayer, 0xC, lbl_801D581C, 4.0f, 0);
|
BoardPlayerMotionShiftSet(curPlayer, 0xC, 0.0f, 4.0f, 0);
|
||||||
HuPrcSleep(4);
|
HuPrcSleep(4);
|
||||||
BoardWinCreate(0, var_r27, -1);
|
BoardWinCreate(0, var_r27, -1);
|
||||||
BoardWinWait();
|
BoardWinWait();
|
||||||
|
|
@ -143,25 +187,6 @@ void MushroomMain(void) {
|
||||||
HuPrcEnd();
|
HuPrcEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
void KillItemMdl(void);
|
|
||||||
void MarkKillBox(void);
|
|
||||||
extern omObjData* itemGiveObj;
|
|
||||||
extern s32 mushroomProc;
|
|
||||||
|
|
||||||
void KillMushroom(void) {
|
|
||||||
ItemGiveWork2* temp_r31;
|
|
||||||
|
|
||||||
MarkKillBox();
|
|
||||||
|
|
||||||
if (itemGiveObj) {
|
|
||||||
temp_r31 = OM_GET_WORK_PTR(itemGiveObj, ItemGiveWork2);
|
|
||||||
temp_r31->unk00_field0 = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
KillItemMdl();
|
|
||||||
mushroomProc = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
struct {
|
struct {
|
||||||
u8 unk00_field0 : 1;
|
u8 unk00_field0 : 1;
|
||||||
|
|
@ -177,20 +202,19 @@ typedef struct {
|
||||||
f32 unk_08;
|
f32 unk_08;
|
||||||
} ItemGiveWork2;
|
} ItemGiveWork2;
|
||||||
|
|
||||||
typedef struct {
|
static void KillMushroom(void) {
|
||||||
struct {
|
ItemGiveWork2* temp_r31;
|
||||||
u8 unk00_field0 : 1;
|
|
||||||
u8 unk00_field1 : 1;
|
MarkKillBox();
|
||||||
u8 unk00_field2 : 3;
|
|
||||||
u8 unk00_field5 : 2;
|
if (itemGiveObj) {
|
||||||
u8 unk00_field7 : 1;
|
temp_r31 = OM_GET_WORK_PTR(itemGiveObj, ItemGiveWork2);
|
||||||
};
|
temp_r31->unk00_field0 = 1;
|
||||||
char unk01[1];
|
}
|
||||||
s16 unk_02;
|
|
||||||
s16 unk_04;
|
KillItemMdl();
|
||||||
s16 unk_06;
|
mushroomProc = NULL;
|
||||||
f32 unk_08;
|
}
|
||||||
} boxObjWork;
|
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
struct {
|
struct {
|
||||||
|
|
@ -204,15 +228,13 @@ typedef struct {
|
||||||
f32 unk_08;
|
f32 unk_08;
|
||||||
} itemObjWork;
|
} itemObjWork;
|
||||||
|
|
||||||
void BoardModelPosSet(s16, f32, f32, f32);
|
static void CenterBox(ItemGiveWork2*, omObjData*);
|
||||||
void BoardModelRotSet(s16, f32, f32, f32);
|
static void ExitBox(ItemGiveWork2* arg0, omObjData* arg1);
|
||||||
void CenterBox(ItemGiveWork2*, omObjData*);
|
static void HideBox(ItemGiveWork2*, omObjData*);
|
||||||
void ExitBox(ItemGiveWork2* arg0, omObjData* arg1);
|
static void ShowBox(ItemGiveWork2*, omObjData*);
|
||||||
void HideBox(ItemGiveWork2*, omObjData*);
|
|
||||||
void ShowBox(ItemGiveWork2*, omObjData*);
|
|
||||||
omObjData* boxObj[2];
|
|
||||||
|
|
||||||
void BoxMain(omObjData* arg0) {
|
|
||||||
|
static void BoxMain(omObjData* arg0) {
|
||||||
s32 temp_r0;
|
s32 temp_r0;
|
||||||
ItemGiveWork2* temp_r30;
|
ItemGiveWork2* temp_r30;
|
||||||
|
|
||||||
|
|
@ -242,55 +264,47 @@ void BoxMain(omObjData* arg0) {
|
||||||
BoardModelRotSet(temp_r30->unk_02, arg0->rot.x, arg0->rot.y, arg0->rot.z);
|
BoardModelRotSet(temp_r30->unk_02, arg0->rot.x, arg0->rot.y, arg0->rot.z);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern f32 lbl_801D5828;
|
static void ShowBox(ItemGiveWork2* arg0, omObjData* arg1) {
|
||||||
extern f32 lbl_801D582C;
|
Vec sp8;
|
||||||
extern f64 lbl_801D5830;
|
|
||||||
extern f64 lbl_801D5838;
|
|
||||||
extern f64 lbl_801D5840;
|
|
||||||
extern f32 lbl_801D5848;
|
|
||||||
|
|
||||||
void ShowBox(ItemGiveWork2* arg0, omObjData* arg1) {
|
|
||||||
Point3d sp8;
|
|
||||||
|
|
||||||
BoardPlayerPosGet(arg0->unk00_field5, &sp8);
|
BoardPlayerPosGet(arg0->unk00_field5, &sp8);
|
||||||
sp8.y += lbl_801D5828;
|
sp8.y += 300.0f;
|
||||||
|
|
||||||
if (arg0->unk_08 >= lbl_801D582C) {
|
if (arg0->unk_08 >= 90.0f) {
|
||||||
arg0->unk_08 = lbl_801D582C;
|
arg0->unk_08 = 90.0f;
|
||||||
arg0->unk00_field7 = 1;
|
arg0->unk00_field7 = 1;
|
||||||
arg0->unk00_field2 = 1;
|
arg0->unk00_field2 = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
OSs16tof32(&arg0->unk_06, &arg1->rot.y);
|
OSs16tof32(&arg0->unk_06, &arg1->rot.y);
|
||||||
arg1->trans.y = (sp8.y + (lbl_801D5830 * cos((lbl_801D5838 * (f64) arg0->unk_08) / lbl_801D5840)));
|
arg1->trans.y = (sp8.y + (700.0f * cos((M_PI * (f64) arg0->unk_08) / 180.0)));
|
||||||
arg0->unk_08 += lbl_801D5848;
|
arg0->unk_08 += 1.5f;
|
||||||
arg0->unk_06 += 30;
|
arg0->unk_06 += 30;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern f32 lbl_801D581C;
|
|
||||||
|
|
||||||
void ExitBox(ItemGiveWork2* arg0, omObjData* arg1) {
|
static void ExitBox(ItemGiveWork2* arg0, omObjData* arg1) {
|
||||||
Point3d spC;
|
Vec spC;
|
||||||
s16 sp8;
|
s16 sp8;
|
||||||
f32 temp;
|
f32 temp;
|
||||||
|
|
||||||
sp8 = (arg0->unk_06 % 360);
|
sp8 = (arg0->unk_06 % 360);
|
||||||
OSs16tof32(&sp8, &temp);
|
OSs16tof32(&sp8, &temp);
|
||||||
BoardPlayerPosGet(arg0->unk00_field5, &spC);
|
BoardPlayerPosGet(arg0->unk00_field5, &spC);
|
||||||
spC.y += lbl_801D5828;
|
spC.y += 300.0f;
|
||||||
|
|
||||||
if (arg0->unk_08 <= lbl_801D581C) {
|
if (arg0->unk_08 <= 0.0f) {
|
||||||
arg0->unk_08 = lbl_801D581C;
|
arg0->unk_08 = 0.0f;
|
||||||
arg0->unk00_field2 = 1;
|
arg0->unk00_field2 = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
arg1->trans.y = spC.y + (lbl_801D5830 * cos((lbl_801D5838 * arg0->unk_08) / lbl_801D5840));
|
arg1->trans.y = spC.y + (700.0f * cos((M_PI * arg0->unk_08) / 180.0));
|
||||||
arg1->rot.y = sin((lbl_801D5838 * temp) / lbl_801D5840);
|
arg1->rot.y = sin((M_PI * temp) / 180.0);
|
||||||
arg0->unk_08 -= lbl_801D5848;
|
arg0->unk_08 -= 1.5f;
|
||||||
arg0->unk_06 -= 30;
|
arg0->unk_06 -= 30;
|
||||||
}
|
}
|
||||||
|
|
||||||
void HideBox(ItemGiveWork2* arg0, omObjData* arg1) {
|
static void HideBox(ItemGiveWork2* arg0, omObjData* arg1) {
|
||||||
arg0->unk_04 -= 4;
|
arg0->unk_04 -= 4;
|
||||||
|
|
||||||
if (arg0->unk_04 < 0) {
|
if (arg0->unk_04 < 0) {
|
||||||
|
|
@ -301,23 +315,20 @@ void HideBox(ItemGiveWork2* arg0, omObjData* arg1) {
|
||||||
BoardModelAlphaSet(arg0->unk_02, arg0->unk_04);
|
BoardModelAlphaSet(arg0->unk_02, arg0->unk_04);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern f32 lbl_801D584C;
|
static void CenterBox(ItemGiveWork2* arg0, omObjData* arg1) {
|
||||||
extern f32 lbl_801D5850;
|
Vec sp20;
|
||||||
|
Vec sp14;
|
||||||
void CenterBox(ItemGiveWork2* arg0, omObjData* arg1) {
|
Vec sp8;
|
||||||
Point3d sp20;
|
|
||||||
Point3d sp14;
|
|
||||||
Point3d sp8;
|
|
||||||
|
|
||||||
sp14.x = arg1->trans.x;
|
sp14.x = arg1->trans.x;
|
||||||
sp14.y = arg1->trans.y;
|
sp14.y = arg1->trans.y;
|
||||||
sp14.z = arg1->trans.z;
|
sp14.z = arg1->trans.z;
|
||||||
BoardPlayerPosGet(arg0->unk00_field5, &sp20);
|
BoardPlayerPosGet(arg0->unk00_field5, &sp20);
|
||||||
PSVECSubtract(&sp20, &sp14, &sp8);
|
PSVECSubtract(&sp20, &sp14, &sp8);
|
||||||
PSVECScale(&sp8, &sp8, lbl_801D584C);
|
PSVECScale(&sp8, &sp8, 0.2f);
|
||||||
PSVECAdd(&sp8, &sp14, &sp14);
|
PSVECAdd(&sp8, &sp14, &sp14);
|
||||||
|
|
||||||
if (BoardVecMaxDistXZCheck(&sp20, &sp14, lbl_801D5850) != 0) {
|
if (BoardVecMaxDistXZCheck(&sp20, &sp14, 3.0f) != 0) {
|
||||||
arg1->trans.x = sp20.x;
|
arg1->trans.x = sp20.x;
|
||||||
arg1->trans.z = sp20.z;
|
arg1->trans.z = sp20.z;
|
||||||
arg0->unk00_field2 = 1;
|
arg0->unk00_field2 = 1;
|
||||||
|
|
@ -327,8 +338,8 @@ void CenterBox(ItemGiveWork2* arg0, omObjData* arg1) {
|
||||||
arg1->trans.z = sp14.z;
|
arg1->trans.z = sp14.z;
|
||||||
}
|
}
|
||||||
|
|
||||||
void InitBox(s32 arg0) {
|
static void InitBox(s32 arg0) {
|
||||||
Point3d sp10;
|
Vec sp10;
|
||||||
s32 sp8[2] = {0x0007006D, 0x0007006E};
|
s32 sp8[2] = {0x0007006D, 0x0007006E};
|
||||||
s32 var_r29;
|
s32 var_r29;
|
||||||
s32 var_r28;
|
s32 var_r28;
|
||||||
|
|
@ -347,28 +358,28 @@ void InitBox(s32 arg0) {
|
||||||
temp_r31->unk00_field1 = i;
|
temp_r31->unk00_field1 = i;
|
||||||
temp_r31->unk00_field2 = 0;
|
temp_r31->unk00_field2 = 0;
|
||||||
temp_r31->unk_06 = 0;
|
temp_r31->unk_06 = 0;
|
||||||
temp_r31->unk_08 = lbl_801D581C;
|
temp_r31->unk_08 = 0.0f;
|
||||||
temp_r31->unk_04 = 0xFF;
|
temp_r31->unk_04 = 0xFF;
|
||||||
boxObj[i]->trans.x = sp10.x + boxOfs[i];
|
boxObj[i]->trans.x = sp10.x + boxOfs[i];
|
||||||
boxObj[i]->trans.y = lbl_801D585C + sp10.y;
|
boxObj[i]->trans.y = 700.0f + sp10.y;
|
||||||
boxObj[i]->trans.z = sp10.z;
|
boxObj[i]->trans.z = sp10.z;
|
||||||
boxObj[i]->rot.x = lbl_801D581C;
|
boxObj[i]->rot.x = 0.0f;
|
||||||
boxObj[i]->rot.y = lbl_801D5860;
|
boxObj[i]->rot.y = 180.0f;
|
||||||
boxObj[i]->rot.z = lbl_801D581C;
|
boxObj[i]->rot.z = 0.0f;
|
||||||
temp_r31->unk_02 = BoardModelCreate(0x70005, NULL, 0);
|
temp_r31->unk_02 = BoardModelCreate(0x70005, NULL, 0);
|
||||||
BoardModelPosSet(temp_r31->unk_02, boxObj[i]->trans.x, boxObj[i]->trans.y, boxObj[i]->trans.z);
|
BoardModelPosSet(temp_r31->unk_02, boxObj[i]->trans.x, boxObj[i]->trans.y, boxObj[i]->trans.z);
|
||||||
BoardModelMotionSpeedSet(temp_r31->unk_02, lbl_801D581C);
|
BoardModelMotionSpeedSet(temp_r31->unk_02, 0.0f);
|
||||||
BoardModelLayerSet(temp_r31->unk_02, 2U);
|
BoardModelLayerSet(temp_r31->unk_02, 2U);
|
||||||
}
|
}
|
||||||
|
|
||||||
HuAudFXPlay(0x340);
|
HuAudFXPlay(0x340);
|
||||||
if (BoardRandFloat() < lbl_801D5864) {
|
if (BoardRandFloat() < 0.5f) {
|
||||||
var_r28 = 0;
|
var_r28 = 0;
|
||||||
} else {
|
} else {
|
||||||
var_r28 = 1;
|
var_r28 = 1;
|
||||||
}
|
}
|
||||||
itemResult = (s8) var_r28;
|
itemResult = (s8) var_r28;
|
||||||
if (BoardRandFloat() < lbl_801D5864) {
|
if (BoardRandFloat() < 0.5f) {
|
||||||
var_r27 = 0;
|
var_r27 = 0;
|
||||||
} else {
|
} else {
|
||||||
var_r27 = 1;
|
var_r27 = 1;
|
||||||
|
|
@ -384,14 +395,14 @@ void InitBox(s32 arg0) {
|
||||||
itemMdl = BoardModelCreate(sp8[itemResult], NULL, 0);
|
itemMdl = BoardModelCreate(sp8[itemResult], NULL, 0);
|
||||||
BoardModelVisibilitySet(itemMdl, 0);
|
BoardModelVisibilitySet(itemMdl, 0);
|
||||||
temp_r31 = OM_GET_WORK_PTR(boxObj[var_r29], boxObjWork);
|
temp_r31 = OM_GET_WORK_PTR(boxObj[var_r29], boxObjWork);
|
||||||
BoardModelScaleSet(temp_r31->unk_02, lbl_801D5848, lbl_801D5848, lbl_801D5848);
|
BoardModelScaleSet(temp_r31->unk_02, 1.5f, 1.5f, 1.5f);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MarkKillBox(void) {
|
static void MarkKillBox(void) {
|
||||||
s32 i;
|
s32 i;
|
||||||
boxObjWork* temp_r30;
|
boxObjWork* temp_r30;
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_COUNT(boxObj); i++) {
|
for (i = 0; i < 2; i++) {
|
||||||
if (boxObj[i]) {
|
if (boxObj[i]) {
|
||||||
temp_r30 = OM_GET_WORK_PTR(boxObj[i], boxObjWork);
|
temp_r30 = OM_GET_WORK_PTR(boxObj[i], boxObjWork);
|
||||||
temp_r30->unk00_field0 = 1;
|
temp_r30->unk00_field0 = 1;
|
||||||
|
|
@ -399,37 +410,35 @@ void MarkKillBox(void) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetBoxHide(s32 arg0) {
|
static void SetBoxHide(s32 arg0) {
|
||||||
boxObjWork* temp_r31 = OM_GET_WORK_PTR(boxObj[arg0], boxObjWork);
|
boxObjWork* temp_r31 = OM_GET_WORK_PTR(boxObj[arg0], boxObjWork);
|
||||||
|
|
||||||
temp_r31->unk00_field2 = 3;
|
temp_r31->unk00_field2 = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetBoxCenter(s32 arg0) {
|
static void SetBoxCenter(s32 arg0) {
|
||||||
boxObjWork* temp_r31 = OM_GET_WORK_PTR(boxObj[arg0], boxObjWork);
|
boxObjWork* temp_r31 = OM_GET_WORK_PTR(boxObj[arg0], boxObjWork);
|
||||||
|
|
||||||
temp_r31->unk00_field2 = 4;
|
temp_r31->unk00_field2 = 4;
|
||||||
HuAudFXPlay(0x341);
|
HuAudFXPlay(0x341);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SetBoxShow(s32 arg0) {
|
static void SetBoxShow(s32 arg0) {
|
||||||
boxObjWork* temp_r31 = OM_GET_WORK_PTR(boxObj[arg0], boxObjWork);
|
boxObjWork* temp_r31 = OM_GET_WORK_PTR(boxObj[arg0], boxObjWork);
|
||||||
|
|
||||||
temp_r31->unk00_field2 = 2;
|
temp_r31->unk00_field2 = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern f32 lbl_801D5868;
|
static void WaitBoxOpen(s32 arg0) {
|
||||||
|
|
||||||
void WaitBoxOpen(s32 arg0) {
|
|
||||||
boxObjWork* temp_r31 = OM_GET_WORK_PTR(boxObj[arg0], boxObjWork);
|
boxObjWork* temp_r31 = OM_GET_WORK_PTR(boxObj[arg0], boxObjWork);
|
||||||
|
|
||||||
BoardModelMotionSpeedSet(temp_r31->unk_02, lbl_801D5868);
|
BoardModelMotionSpeedSet(temp_r31->unk_02, 2.0f);
|
||||||
do {
|
do {
|
||||||
HuPrcVSleep();
|
HuPrcVSleep();
|
||||||
} while (BoardModelMotionEndCheck(temp_r31->unk_02) == 0);
|
} while (BoardModelMotionEndCheck(temp_r31->unk_02) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WaitBoxCenter(s32 arg0) {
|
static void WaitBoxCenter(s32 arg0) {
|
||||||
boxObjWork* temp_r31 = OM_GET_WORK_PTR(boxObj[arg0], boxObjWork);
|
boxObjWork* temp_r31 = OM_GET_WORK_PTR(boxObj[arg0], boxObjWork);
|
||||||
|
|
||||||
while (temp_r31->unk00_field2 != 1) {
|
while (temp_r31->unk00_field2 != 1) {
|
||||||
|
|
@ -437,11 +446,11 @@ void WaitBoxCenter(s32 arg0) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 CheckBox(void) {
|
static s32 CheckBox(void) {
|
||||||
s32 i;
|
s32 i;
|
||||||
boxObjWork* box;
|
boxObjWork* box;
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_COUNT(boxObj); i++) {
|
for (i = 0; i < 2; i++) {
|
||||||
box = OM_GET_WORK_PTR(boxObj[i], boxObjWork);
|
box = OM_GET_WORK_PTR(boxObj[i], boxObjWork);
|
||||||
if (box->unk00_field7 == 0) {
|
if (box->unk00_field7 == 0) {
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -450,20 +459,10 @@ s32 CheckBox(void) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
extern f32 lbl_801D5860;
|
static void DoItemGive(omObjData* arg0) {
|
||||||
extern s32 lbl_801D586C;
|
Vec sp28;
|
||||||
extern s32 lbl_801D5870;
|
Vec sp1C;
|
||||||
extern f32 lbl_801D5874;
|
Vec sp10;
|
||||||
extern f32 lbl_801D5878;
|
|
||||||
extern f32 lbl_801D587C;
|
|
||||||
extern f32 lbl_801D5880;
|
|
||||||
extern f32 lbl_801D5884;
|
|
||||||
extern s8 itemResult;
|
|
||||||
|
|
||||||
void DoItemGive(omObjData* arg0) {
|
|
||||||
Point3d sp28;
|
|
||||||
Point3d sp1C;
|
|
||||||
Point3d sp10;
|
|
||||||
s32 sp8[2] = {0, 1};
|
s32 sp8[2] = {0, 1};
|
||||||
itemObjWork* temp_r31;
|
itemObjWork* temp_r31;
|
||||||
|
|
||||||
|
|
@ -479,15 +478,15 @@ void DoItemGive(omObjData* arg0) {
|
||||||
BoardModelPosGet(itemMdl, &sp28);
|
BoardModelPosGet(itemMdl, &sp28);
|
||||||
BoardModelRotGet(itemMdl, &sp1C);
|
BoardModelRotGet(itemMdl, &sp1C);
|
||||||
BoardPlayerPosGet(temp_r31->unk00_field1, &sp10);
|
BoardPlayerPosGet(temp_r31->unk00_field1, &sp10);
|
||||||
sp10.y += lbl_801D5860;
|
sp10.y += 180.0f;
|
||||||
|
|
||||||
switch (temp_r31->unk00_field2) {
|
switch (temp_r31->unk00_field2) {
|
||||||
case 2:
|
case 2:
|
||||||
if (temp_r31->unk_02 < 12) {
|
if (temp_r31->unk_02 < 12) {
|
||||||
temp_r31->unk_04 += lbl_801D5874;
|
temp_r31->unk_04 += 1.47f;
|
||||||
sp28.y += temp_r31->unk_04;
|
sp28.y += temp_r31->unk_04;
|
||||||
} else if (temp_r31->unk_02 <= 24) {
|
} else if (temp_r31->unk_02 <= 24) {
|
||||||
BoardModelRotSet(itemMdl, lbl_801D5878 * temp_r31->unk_02, lbl_801D581C, lbl_801D581C);
|
BoardModelRotSet(itemMdl, 30.0f * temp_r31->unk_02, 0.0f, 0.0f);
|
||||||
} else if (temp_r31->unk_02 > 36) {
|
} else if (temp_r31->unk_02 > 36) {
|
||||||
temp_r31->unk00_field2 = 0;
|
temp_r31->unk00_field2 = 0;
|
||||||
return;
|
return;
|
||||||
|
|
@ -495,10 +494,10 @@ void DoItemGive(omObjData* arg0) {
|
||||||
temp_r31->unk_02++;
|
temp_r31->unk_02++;
|
||||||
break;
|
break;
|
||||||
case 0:
|
case 0:
|
||||||
temp_r31->unk_04 += lbl_801D587C;
|
temp_r31->unk_04 += -1.47f;
|
||||||
|
|
||||||
if (temp_r31->unk_08 > lbl_801D5880) {
|
if (temp_r31->unk_08 > 0.001f) {
|
||||||
temp_r31->unk_08 -= lbl_801D5884;
|
temp_r31->unk_08 -= 0.005f;
|
||||||
}
|
}
|
||||||
|
|
||||||
sp28.y += temp_r31->unk_04;
|
sp28.y += temp_r31->unk_04;
|
||||||
|
|
@ -519,14 +518,8 @@ void DoItemGive(omObjData* arg0) {
|
||||||
BoardModelScaleSet(itemMdl, temp_r31->unk_08, temp_r31->unk_08, temp_r31->unk_08);
|
BoardModelScaleSet(itemMdl, temp_r31->unk_08, temp_r31->unk_08, temp_r31->unk_08);
|
||||||
}
|
}
|
||||||
|
|
||||||
extern Process *boardObjMan;
|
static void StartItemGive(s32 arg0) {
|
||||||
void DoItemGive(omObjData*);
|
Vec spC;
|
||||||
extern s16 itemMdl;
|
|
||||||
extern f32 lbl_801D5890;
|
|
||||||
extern u8 pickerChoice;
|
|
||||||
|
|
||||||
void StartItemGive(s32 arg0) {
|
|
||||||
Point3d spC;
|
|
||||||
itemObjWork* temp_r31;
|
itemObjWork* temp_r31;
|
||||||
boxObjWork* box;
|
boxObjWork* box;
|
||||||
|
|
||||||
|
|
@ -537,28 +530,28 @@ void StartItemGive(s32 arg0) {
|
||||||
temp_r31->unk00_field1 = arg0;
|
temp_r31->unk00_field1 = arg0;
|
||||||
temp_r31->unk00_field2 = 1;
|
temp_r31->unk00_field2 = 1;
|
||||||
temp_r31->unk_02 = 0;
|
temp_r31->unk_02 = 0;
|
||||||
temp_r31->unk_04 = lbl_801D581C;
|
temp_r31->unk_04 = 0.0f;
|
||||||
temp_r31->unk_08 = lbl_801D5890;
|
temp_r31->unk_08 = 1.0f;
|
||||||
box = OM_GET_WORK_PTR(boxObj[pickerChoice], boxObjWork);
|
box = OM_GET_WORK_PTR(boxObj[pickerChoice], boxObjWork);
|
||||||
BoardModelPosGet(box->unk_02, &spC);
|
BoardModelPosGet(box->unk_02, &spC);
|
||||||
BoardModelPosSetV(itemMdl, &spC);
|
BoardModelPosSetV(itemMdl, &spC);
|
||||||
}
|
}
|
||||||
|
|
||||||
void KillItemMdl(void) {
|
static void KillItemMdl(void) {
|
||||||
if (itemMdl != -1) {
|
if (itemMdl != -1) {
|
||||||
BoardModelKill(itemMdl);
|
BoardModelKill(itemMdl);
|
||||||
itemMdl = -1;
|
itemMdl = -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ShowItemMdl(void) {
|
static void ShowItemMdl(void) {
|
||||||
itemObjWork* temp_r31 = OM_GET_WORK_PTR(itemGiveObj, itemObjWork);
|
itemObjWork* temp_r31 = OM_GET_WORK_PTR(itemGiveObj, itemObjWork);
|
||||||
temp_r31->unk00_field2 = 2;
|
temp_r31->unk00_field2 = 2;
|
||||||
|
|
||||||
BoardModelVisibilitySet(itemMdl, 1);
|
BoardModelVisibilitySet(itemMdl, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void WaitItemGive(void) {
|
static void WaitItemGive(void) {
|
||||||
itemObjWork* temp_r31 = OM_GET_WORK_PTR(itemGiveObj, itemObjWork);
|
itemObjWork* temp_r31 = OM_GET_WORK_PTR(itemGiveObj, itemObjWork);
|
||||||
|
|
||||||
while (temp_r31->unk00_field2 != 1) {
|
while (temp_r31->unk00_field2 != 1) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue