move functions to header + MOAR functions
This commit is contained in:
parent
ee4f87874c
commit
6df867eeb6
3 changed files with 350 additions and 90 deletions
|
|
@ -6,7 +6,6 @@
|
|||
void BoardCameraTargetModelSet(s16 model);
|
||||
void BoardCameraMotionStartEx(s16, Vec *, Vec *, f32, f32, s16);
|
||||
void BoardCameraMotionWait(void);
|
||||
void BoardSpacePosGet(s32, s32, Vec*);
|
||||
void fn_8007A360(s32);
|
||||
void fn_8007F894(void);
|
||||
s16 BoardStarHostMdlGet(void);
|
||||
|
|
@ -34,10 +33,6 @@ void BoardModelPosSetV(s16, Vec*);
|
|||
void BoardModelPosSet(s16, f32, f32, f32);
|
||||
void BoardModelRotSetV(s16 arg0, Vec* arg1);
|
||||
void BoardModelVisibilitySet(s16, s32);
|
||||
void BoardSpaceWalkEventFuncSet(void*);
|
||||
void BoardSpaceWalkMiniEventFuncSet(void*);
|
||||
void BoardSpaceLandEventFuncSet(void*);
|
||||
s32 BoardSpaceFlagSearch(s32, s32);
|
||||
void BoardSpaceInit(s32);
|
||||
void BoardSpaceDestroy(void);
|
||||
void fn_80077AAC(s16);
|
||||
|
|
|
|||
|
|
@ -37,11 +37,86 @@ static inline s16 BoardPlayerModelGetCurr()
|
|||
return boardPlayerMdl[player->player_idx];
|
||||
}
|
||||
|
||||
s32 BoardRollTypeGet(void);
|
||||
void BoardRollTypeSet(s32 type);
|
||||
s32 BoardPlayerGetCharMess(s32 player);
|
||||
char* BoardPlayerGetCharName(s32 player);
|
||||
s32 BoardPlayerIsAllCom(void);
|
||||
void BoardPlayerRotSet(s32, f32, f32, f32);
|
||||
void BoardPlayerInit(void);
|
||||
void BoardPlayerModelInit(void);
|
||||
void BoardPlayerModelKill(void);
|
||||
void BoardPlayerLayerSet(s32, s32);
|
||||
void BoardPlayerCameraSet(s32, u16);
|
||||
void fn_80062A40(s32, f32);
|
||||
void BoardPlayerExistCheck(s32, s32);
|
||||
s32 BoardPlayerItemAdd(s32, s32);
|
||||
s32 BoardPlayerItemRemove(s32, s32);
|
||||
s32 BoardPlayerItemFind(s32, s32);
|
||||
s32 BoardPlayerItemCount(s32);
|
||||
void fn_80062D90(s32);
|
||||
void BoardPlayerCurrSpacePosDirGet(s32, Vec*);
|
||||
void BoardPlayerAmbSet(s32, f32, f32, f32);
|
||||
void BoardPlayerMtxSet(s32, Mtx);
|
||||
void BoardPlayerPosSetV(s32, Vec*);
|
||||
void BoardPlayerPosSet(s32, f32, f32, f32);
|
||||
void BoardPlayerPosGet(s32, Vec*);
|
||||
void BoardPlayerCoinsSet(s32 player, s32 value);
|
||||
void BoardPlayerAutoSizeSet(s32 player, s32 value);
|
||||
void BoardPlayerMotionStart(s16, s32, s32);
|
||||
void BoardPlayerRotSetV(s32, Vec*);
|
||||
void BoardPlayerRotSet(s32, f32, f32, f32);
|
||||
void BoardPlayerRotGet(s32, Vec*);
|
||||
void BoardPlayerRotYSet(s32, f32);
|
||||
f32 BoardPlayerRotYGet(s32);
|
||||
void BoardPlayerScaleSetV(s32, Vec*);
|
||||
void BoardPlayerScaleSet(s32, f32, f32, f32);
|
||||
s16 BoardPlayerCurrMotionGet(s32);
|
||||
void BoardPlayerMotionCreate(s32, s32);
|
||||
void BoardPlayerMotionKill(s32, s32);
|
||||
void BoardPlayerMotionEndCheck(s32);
|
||||
void BoardPlayerMotionEndWait(s32);
|
||||
void BoardPlayerMotionStart(s32, s32, s32);
|
||||
void BoardPlayerMotionShiftSet(s32, s32, f32, f32, s32);
|
||||
void BoardPlayerMotionSpeedSet(s32, f32);
|
||||
void BoardPlayerMotionTimeSet(s32, f32);
|
||||
f32 BoardPlayerMotionTimeGet(s32);
|
||||
f32 BoardPlayerMotionMaxTimeGet(s32);
|
||||
void BoardPlayerMotionTimeRangeSet(s32, f32, f32);
|
||||
void BoardPlayerModelAttrSet(s32, s32);
|
||||
void BoardPlayerModelAttrReset(s32, s32);
|
||||
void BoardPlayerCoinsSet(s32, s32);
|
||||
s32 BoardPlayerCoinsGet(s32);
|
||||
void BoardPlayerCoinsAdd(s32, s32);
|
||||
void BoardPlayerStarsAdd(s32, s32);
|
||||
void BoardPlayerSizeSet(s32, s32);
|
||||
s32 BoardPlayerSizeGet(s32);
|
||||
s32 BoardPlayerSameTeamFind(s32);
|
||||
s32 BoardPlayerTeamFind(s32);
|
||||
s32 BoardPlayerRankCalc(s32);
|
||||
void BoardPlayerPreTurnHookSet(s32, s32 (*)());
|
||||
void BoardPlayerPostTurnHookSet(s32, s32 (*)());
|
||||
void BoardPlayerTurnExec(s32);
|
||||
void BoardPlayerTurnRollExec(s32);
|
||||
void BoardPlayerTurnMoveExec(s32);
|
||||
void BoardPlayerPostTurnHookExec(s32);
|
||||
void BoardPlayerSizeRestore(s32);
|
||||
void BoardPlayerZoomRestore(s32);
|
||||
void BoardJunctionMaskSet(s32);
|
||||
void BoardJunctionMaskReset(s32);
|
||||
void BoardJunctionMaskZero(void);
|
||||
void InitJunction(s32, s32, f32);
|
||||
//...
|
||||
s32 GetDefaultDirection(f32, f32*, s32);
|
||||
s32 BoardPlayerAutoSizeGet(s32);
|
||||
void BoardPlayerAutoSizeSet(s32, s32);
|
||||
void BoardPlayerCopyMat(s32);
|
||||
void BoardBowserSuitKill(s32);
|
||||
void SetRollPlayerSize(s32);
|
||||
void BoardDiceDigit2DUpdateEnable(s32);
|
||||
void BoardPlayerMoveTo(s32, s16);
|
||||
void BoardPlayerZoomRestore(s32);
|
||||
void BoardRotateDiceNumbers(s32);
|
||||
s32 DoDebugMove(s32, s16*);
|
||||
s32 DoSparkSpace(s32, s16*);
|
||||
s32 ExecJunction(s32, s16*);
|
||||
s32 MegaPlayerPassFunc(s32, s16);
|
||||
s32 BoardPlayerAnimBlendCheck(s32);
|
||||
|
||||
#endif
|
||||
|
|
@ -7,22 +7,16 @@
|
|||
#include "game/hsfman.h"
|
||||
#include "game/board/player.h"
|
||||
#include "game/board/main.h"
|
||||
#include "game/board/space.h"
|
||||
#include "dolphin/os/OSFastCast.h"
|
||||
#include "math.h"
|
||||
|
||||
//// #include "game/board/space.h"
|
||||
extern s32 BoardSpaceFlagPosGet(s32, s32, u32);
|
||||
extern void BoardSpaceDirPosGet(s32, s32, Vec*);
|
||||
extern void BoardSpaceLandExec(s32, s16);
|
||||
extern s32 BoardSpaceFlagGet(s32, s16);
|
||||
extern s32 BoardSpaceHiddenBlockExec(s32, s16);
|
||||
extern void BoardSpaceLandExec(s32, s16);
|
||||
extern s32 BoardSpaceTypeGet(s32, s16);
|
||||
extern s32 BoardSpaceWalkEventExec(void);
|
||||
extern s32 BoardSpaceWalkExec(s32, s32);
|
||||
extern PlayerState* BoardSpaceGet(s32, s32);
|
||||
//// #include "game/board/ui.h"
|
||||
extern void BoardStatusHammerShowSet(s32, s32);
|
||||
extern void BoardYourTurnExec(s32);
|
||||
extern s32 BoardItemUseExec(s32);
|
||||
//// #include "game/board/main.h"
|
||||
extern f32 BoardVecCalcDAngle(f32);
|
||||
//// #include "game/board/model.h"
|
||||
extern s16 BoardModelCreateCharacter(s32, s32, s32*, s32);
|
||||
extern void BoardModelExistCheck(s16, s32);
|
||||
|
|
@ -70,70 +64,10 @@ extern void CharModelKillIndex(s16);
|
|||
extern void CharModelSetStepType(s16, s32);
|
||||
////
|
||||
|
||||
s32 BoardRollTypeGet(void);
|
||||
void BoardRollTypeSet(s32 type);
|
||||
s32 BoardPlayerGetCharMess(s32 player);
|
||||
char* BoardPlayerGetCharName(s32 player);
|
||||
s32 BoardPlayerIsAllCom(void);
|
||||
void BoardPlayerInit(void);
|
||||
void BoardPlayerModelInit(void);
|
||||
void BoardPlayerModelKill(void);
|
||||
void BoardPlayerLayerSet(s32, s32);
|
||||
void BoardPlayerCameraSet(s32, u16);
|
||||
void fn_80062A40(s32, f32);
|
||||
void BoardPlayerExistCheck(s32, s32);
|
||||
s32 BoardPlayerItemAdd(s32, s32);
|
||||
s32 BoardPlayerItemRemove(s32, s32);
|
||||
s32 BoardPlayerItemFind(s32, s32);
|
||||
s32 BoardPlayerItemCount(s32);
|
||||
void fn_80062D90(s32);
|
||||
void BoardPlayerCurrSpacePosDirGet(s32, Vec*);
|
||||
void BoardPlayerAmbSet(s32, f32, f32, f32);
|
||||
void BoardPlayerMtxSet(s32, Mtx);
|
||||
void BoardPlayerPosSetV(s32, Vec*);
|
||||
void BoardPlayerPosSet(s32, f32, f32, f32);
|
||||
void BoardPlayerPosGet(s32, Vec*);
|
||||
void BoardPlayerRotSetV(s32, Vec*);
|
||||
void BoardPlayerRotSet(s32, f32, f32, f32);
|
||||
void BoardPlayerRotGet(s32, Vec*);
|
||||
void BoardPlayerRotYSet(s32, f32);
|
||||
f32 BoardPlayerRotYGet(s32);
|
||||
void BoardPlayerScaleSetV(s32, Vec*);
|
||||
void BoardPlayerScaleSet(s32, f32, f32, f32);
|
||||
s16 BoardPlayerCurrMotionGet(s32);
|
||||
void BoardPlayerMotionCreate(s32, s32);
|
||||
void BoardPlayerMotionKill(s32, s32);
|
||||
void BoardPlayerMotionEndCheck(s32);
|
||||
void BoardPlayerMotionEndWait(s32);
|
||||
void BoardPlayerMotionStart(s32, s32, s32);
|
||||
void BoardPlayerMotionShiftSet(s32, s32, f32, f32, s32);
|
||||
void BoardPlayerMotionSpeedSet(s32, f32);
|
||||
void BoardPlayerMotionTimeSet(s32, f32);
|
||||
f32 BoardPlayerMotionTimeGet(s32);
|
||||
f32 BoardPlayerMotionMaxTimeGet(s32);
|
||||
void BoardPlayerMotionTimeRangeSet(s32, f32, f32);
|
||||
void BoardPlayerModelAttrSet(s32, s32);
|
||||
void BoardPlayerModelAttrReset(s32, s32);
|
||||
void BoardPlayerCoinsSet(s32, s32);
|
||||
s32 BoardPlayerCoinsGet(s32);
|
||||
void BoardPlayerCoinsAdd(s32, s32);
|
||||
void BoardPlayerStarsAdd(s32, s32);
|
||||
void BoardPlayerSizeSet(s32, s32);
|
||||
s32 BoardPlayerSizeGet(s32);
|
||||
s32 BoardPlayerSameTeamFind(s32);
|
||||
s32 BoardPlayerTeamFind(s32);
|
||||
s32 BoardPlayerRankCalc(s32);
|
||||
void BoardPlayerPreTurnHookSet(s32, s32 (*)());
|
||||
void BoardPlayerPostTurnHookSet(s32, s32 (*)());
|
||||
void BoardPlayerTurnExec(s32);
|
||||
void BoardPlayerTurnRollExec(s32);
|
||||
void BoardPlayerTurnMoveExec(s32);
|
||||
void BoardPlayerPostTurnHookExec(s32);
|
||||
void BoardPlayerSizeRestore(s32);
|
||||
void BoardPlayerZoomRestore(s32);
|
||||
void BoardJunctionMaskSet(s32);
|
||||
void BoardJunctionMaskReset(s32);
|
||||
void BoardJunctionMaskZero(void);
|
||||
static void UpdateJunctionGfx(omObjData*);
|
||||
static void StopJunctionPlayer(s32);
|
||||
static void RestoreJunction(f32, s32);
|
||||
static s32 GetDefaultDirection(f32, f32*, s32);
|
||||
//...
|
||||
s32 BoardPlayerAutoSizeGet(s32);
|
||||
void BoardPlayerAutoSizeSet(s32, s32);
|
||||
|
|
@ -150,6 +84,20 @@ s32 ExecJunction(s32, s16*);
|
|||
s32 MegaPlayerPassFunc(s32, s16);
|
||||
s32 BoardPlayerAnimBlendCheck(s32);
|
||||
|
||||
typedef struct bitcopy {
|
||||
struct {
|
||||
u8 field00_bit0 : 1;
|
||||
u8 field00_bit1 : 2;
|
||||
u8 field00_bit3 : 2;
|
||||
u8 field00_bit5 : 2;
|
||||
u8 field00_bit7 : 1;
|
||||
};
|
||||
u8 unk_01;
|
||||
s16 unk_02;
|
||||
s16 unk_04;
|
||||
s16 unk_06[6];
|
||||
} bitcopy;
|
||||
|
||||
static HsfMaterial *playerMatCopy[4];
|
||||
static s32 (*postTurnHook[4])();
|
||||
static s32 (*preTurnHook[4])();
|
||||
|
|
@ -668,14 +616,14 @@ void BoardPlayerSizeSet(s32 arg0, s32 arg1) {
|
|||
BoardModelScaleSetV(BoardPlayerModelGet(arg0), &temp_r4[arg1]);
|
||||
}
|
||||
|
||||
s32 BoardPlayerSizeGet(s32 arg0) {
|
||||
PlayerState* temp_r30;
|
||||
s32 BoardPlayerSizeGet(s32 idx) {
|
||||
PlayerState* player;
|
||||
|
||||
temp_r30 = BoardPlayerGet(arg0);
|
||||
if (temp_r30 != 0) {
|
||||
arg0 = temp_r30->size;
|
||||
player = BoardPlayerGet(idx);
|
||||
if(!player) {
|
||||
return;
|
||||
}
|
||||
return arg0;
|
||||
return player->size;
|
||||
}
|
||||
|
||||
s32 BoardPlayerSameTeamFind(s32 arg0) {
|
||||
|
|
@ -991,6 +939,248 @@ void BoardJunctionMaskZero(void) {
|
|||
junctionMask = 0;
|
||||
}
|
||||
|
||||
static inline u32 BoardJunctionMaskGet(void) {
|
||||
return junctionMask;
|
||||
}
|
||||
|
||||
static inline GetLinkCount(s32 playerIdx, s32 boardIdx) {
|
||||
s32 i;
|
||||
s32 linkCount;
|
||||
BoardSpace* boardSpaceLink;
|
||||
BoardSpace* boardSpaceFlag;
|
||||
PlayerState* player;
|
||||
s32 color;
|
||||
s32 temp;
|
||||
|
||||
linkCount = 0;
|
||||
boardSpaceLink = BoardSpaceGet(0, boardIdx);
|
||||
|
||||
if (boardSpaceLink->link_cnt <= 1) {
|
||||
return 0;
|
||||
}
|
||||
linkCount = boardSpaceLink->link_cnt;
|
||||
for (i = 0; i < boardSpaceLink->link_cnt; i++) {
|
||||
boardSpaceFlag = BoardSpaceGet(0, boardSpaceLink->link[i]);
|
||||
if (((boardSpaceFlag->flag & 0x20000000) != 0 && (BoardPlayerSizeGet(playerIdx) != 1))
|
||||
|| ((boardSpaceFlag->flag & 0x02000000) != 0)
|
||||
|| ((boardSpaceFlag->flag & 0x04000000) != 0)
|
||||
|| ((boardSpaceFlag->flag & BoardJunctionMaskGet()) != 0)) {
|
||||
|
||||
linkCount -= 1;
|
||||
}
|
||||
}
|
||||
return linkCount;
|
||||
}
|
||||
|
||||
void InitJunction(s32 arg0, s32 arg1, f32 arg8) {
|
||||
Point3d sp68;
|
||||
Point3d sp5C;
|
||||
Point3d sp50;
|
||||
Point3d sp44;
|
||||
f32 sp40;
|
||||
f32 sp3C;
|
||||
s32 sp38;
|
||||
s16 sp20;
|
||||
s16 spE;
|
||||
BoardSpace* temp_r26;
|
||||
BoardSpace* temp_r25;
|
||||
f32 var_f27;
|
||||
f32 var_f28;
|
||||
f32 var_f29;
|
||||
omObjData* var_r28;
|
||||
s32 var_r20;
|
||||
bitcopy* temp_r29;
|
||||
s32 var_r27;
|
||||
s32 var_r22;
|
||||
f32 angle;
|
||||
|
||||
if (junctionObj == 0) {
|
||||
for (var_r20 = 0; var_r20 < 4; var_r20++) {
|
||||
junctionArrowRot[var_r20] = -1;
|
||||
}
|
||||
|
||||
sp38 = GetLinkCount(arg0, arg1);
|
||||
if (sp38 > 1) {
|
||||
var_r28 = omAddObjEx(boardObjMan, 0x100, 0, 0, -1, UpdateJunctionGfx);
|
||||
junctionObj = var_r28;
|
||||
temp_r29 = (bitcopy*) var_r28->work;
|
||||
temp_r29->field00_bit0 = 0;
|
||||
temp_r29->field00_bit7 = 0;
|
||||
temp_r29->field00_bit1 = arg0;
|
||||
temp_r29->unk_02 = 0;
|
||||
temp_r29->field00_bit5 = 0;
|
||||
temp_r29->unk_01 = 0;
|
||||
var_r28->scale.x = var_r28->scale.y = var_r28->scale.z = 3.0f;
|
||||
HuWinMesMaxSizeGet(1, &sp3C, 0x90003);
|
||||
var_f27 = 304.0f;
|
||||
var_f28 = -10000.0f;
|
||||
temp_r29->unk_04 = HuWinCreate(var_f27, var_f28, sp3C, sp40, 0);
|
||||
HuWinBGTPLvlSet(temp_r29->unk_04, 0.0f);
|
||||
HuWinMesSpeedSet(temp_r29->unk_04, 0);
|
||||
HuWinMesSet(temp_r29->unk_04, 0x90003);
|
||||
if (_CheckFlag(0x1000BU) != 0) {
|
||||
HuWinDispOff(temp_r29->unk_04);
|
||||
}
|
||||
temp_r26 = BoardSpaceGet(0, arg1);
|
||||
BoardSpacePosGet(0, arg1, &sp68);
|
||||
spE = BoardPlayerSizeGet(arg0);
|
||||
|
||||
for (var_r27 = 0, var_r22 = var_r27; var_r22 < temp_r26->link_cnt; var_r22++) {
|
||||
if (temp_r26->link[var_r22] != 0) {
|
||||
temp_r25 = BoardSpaceGet(0, temp_r26->link[var_r22]);
|
||||
if (((((temp_r25->flag & 0x20000000) == 0) != 0) || (spE == 1)) && ((temp_r25->flag & 0x02000000) == 0) && ((temp_r25->flag & 0x04000000) == 0)) {
|
||||
if ((temp_r25->flag & BoardJunctionMaskGet()) == 0) {
|
||||
BoardSpacePosGet(0, temp_r26->link[var_r22], &sp50);
|
||||
PSVECSubtract(&sp50, &sp68, &sp44);
|
||||
PSVECNormalize(&sp44, &sp44);
|
||||
|
||||
angle = (180.0 * (atan2(sp44.x, sp44.z) / M_PI));
|
||||
if (angle < 0.0f) {
|
||||
angle += 360.0f;
|
||||
}
|
||||
if (angle > 360.0f) {
|
||||
angle -= 360.0f;
|
||||
}
|
||||
|
||||
OSf32tos16(&angle, &sp20);
|
||||
sp20 = ((sp20 + 0x16) / 45) * 0x2D;;
|
||||
junctionArrowRot[var_r27] = sp20;
|
||||
var_f29 = 0.0f;
|
||||
if (sp20 == 0) {
|
||||
var_f29 = 100.0f;
|
||||
} else if ((sp20 == 0xB4) && ((spE == 2) || (GWPlayer[arg0].bowser_suit != 0))) {
|
||||
var_f29 = -100.0f;
|
||||
}
|
||||
temp_r29->unk_06[var_r27] = BoardModelCreate(0x70000, NULL, 1);
|
||||
BoardModelRotSet(temp_r29->unk_06[var_r27], 0.0f, angle, 0.0f);
|
||||
BoardModelLayerSet(temp_r29->unk_06[var_r27], 6);
|
||||
sp5C.x = sp68.x + (100.0 * sin((M_PI * angle) / 180.0));
|
||||
sp5C.y = 300.0f + sp68.y;
|
||||
sp5C.z = (var_f29 + (sp68.z + (100.0 * cos((M_PI * angle) / 180.0))));
|
||||
BoardModelPosSetV(temp_r29->unk_06[var_r27], &sp5C);
|
||||
BoardModelScaleSet(temp_r29->unk_06[var_r27], var_r28->scale.x, var_r28->scale.y, var_r28->scale.z);
|
||||
var_r27++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
temp_r29->field00_bit3 = var_r27;
|
||||
if (-1.0f != arg8) {
|
||||
RestoreJunction(arg8, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
static void UpdateJunctionGfx(omObjData* arg0) {
|
||||
s32 var_r28;
|
||||
bitcopy* temp_r30;
|
||||
|
||||
temp_r30 = (bitcopy*)arg0->work;
|
||||
if ((temp_r30->field00_bit0 != 0) || (BoardIsKill() != 0)) {
|
||||
for (var_r28 = 0; var_r28 < temp_r30->field00_bit3; var_r28++) {
|
||||
BoardModelKill(temp_r30->unk_06[var_r28]);
|
||||
}
|
||||
HuWinKill(temp_r30->unk_04);
|
||||
junctionObj = NULL;
|
||||
omDelObjEx(HuPrcCurrentGet(), arg0);
|
||||
return;
|
||||
}
|
||||
if (temp_r30->unk_01 != 0) {
|
||||
temp_r30->unk_01--;
|
||||
} else if (temp_r30->field00_bit7 != 0) {
|
||||
temp_r30->field00_bit0 = 1;
|
||||
}
|
||||
temp_r30->unk_02 += 8;
|
||||
if (temp_r30->unk_02 > 0xB4) {
|
||||
temp_r30->unk_02 -= 0xB4;
|
||||
}
|
||||
OSs16tof32(&temp_r30->unk_02, &arg0->scale.x);
|
||||
arg0->scale.x = 3.0 + sin((M_PI * arg0->scale.x) / 180.0);
|
||||
arg0->scale.y = arg0->scale.x;
|
||||
arg0->scale.z = arg0->scale.x;
|
||||
BoardModelScaleSet(temp_r30->unk_06[temp_r30->field00_bit5], arg0->scale.x, arg0->scale.y, arg0->scale.z);
|
||||
}
|
||||
|
||||
static void StopJunctionPlayer(s32 arg0) {
|
||||
bitcopy* temp_r31;
|
||||
|
||||
if (junctionObj != 0) {
|
||||
temp_r31 = (bitcopy*)junctionObj->work;
|
||||
temp_r31->field00_bit7 = 1;
|
||||
temp_r31->unk_01 = 0;
|
||||
if (arg0 != 0) {
|
||||
HuAudFXPlay(2);
|
||||
}
|
||||
HuPrcSleep(0xA);
|
||||
}
|
||||
}
|
||||
|
||||
static void RestoreJunction(f32 arg8, s32 arg0) {
|
||||
Point3d sp1C;
|
||||
f32 spC[4];
|
||||
s16 var_r30;
|
||||
s16 temp_r29;
|
||||
bitcopy* temp_r31;
|
||||
|
||||
if (junctionObj != 0) {
|
||||
temp_r31 = (bitcopy*) junctionObj->work;
|
||||
if (temp_r31->unk_01 == 0) {
|
||||
arg8 = 90.0f * (((90.0f + arg8) - 1.0f) / 90.0f);
|
||||
|
||||
for (var_r30 = 0; var_r30 < temp_r31->field00_bit3; var_r30++) {
|
||||
BoardModelRotGet(temp_r31->unk_06[var_r30], &sp1C);
|
||||
spC[var_r30] = 90.0f * (((90.0f + sp1C.y) - 1.0f) / 90.0f);
|
||||
}
|
||||
|
||||
for (;var_r30 < 4; var_r30++) {
|
||||
spC[var_r30] = -999.0f;
|
||||
}
|
||||
|
||||
temp_r29 = GetDefaultDirection(arg8, spC, temp_r31->field00_bit3);
|
||||
if ((temp_r29 != -1) && (temp_r31->field00_bit5 != temp_r29)) {
|
||||
temp_r31->field00_bit5 = temp_r29;
|
||||
if (arg0 != 0) {
|
||||
HuAudFXPlay(0);
|
||||
}
|
||||
temp_r31->unk_01 = 0x14U;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static inline f32 BoardAbsAngle(f32 startA, f32 endA) {
|
||||
if (BoardVecCalcDAngle(startA - endA) < 0.0f) {
|
||||
return -BoardVecCalcDAngle(startA - endA);
|
||||
} else {
|
||||
return BoardVecCalcDAngle(startA - endA);
|
||||
}
|
||||
}
|
||||
|
||||
static s32 GetDefaultDirection(f32 arg0, f32* arg1, s32 arg2) {
|
||||
f32 temp_f1;
|
||||
f32 temp_f30;
|
||||
f32 var_f27;
|
||||
f32 var_f28;
|
||||
s32 var_r30;
|
||||
s32 var_r31;
|
||||
|
||||
temp_f30 = BoardVecCalcDAngle(arg0);
|
||||
var_f28 = 999.0f;
|
||||
|
||||
for (var_r31 = 0, var_r30 = var_r31; var_r31 < arg2; var_r31++) {
|
||||
temp_f1 = BoardVecCalcDAngle(arg1[var_r31]);
|
||||
var_f27 = BoardAbsAngle(temp_f1, temp_f30);
|
||||
|
||||
if (var_f27 < var_f28) {
|
||||
var_f28 = var_f27;
|
||||
var_r30 = var_r31;
|
||||
}
|
||||
}
|
||||
return var_r30;
|
||||
}
|
||||
|
||||
// ...
|
||||
|
||||
void BoardPlayerCopyMat(s32 arg0) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue