marioparty4/src/REL/w10Dll/main.c

261 lines
6.8 KiB
C

#include "include/REL/w10Dll.h"
#include "game/data.h"
#include "game/hsfman.h"
#include "game/board/lottery.h"
#include "game/board/model.h"
#include "game/board/shop.h"
#include "game/board/space.h"
#include "game/board/star.h"
#include "game/board/tutorial.h"
#include "game/board/main.h"
#include "game/board/boo_house.h"
#include "game/board/map_object.h"
#include "math.h"
//Map Objects
static BoardMapObject mapObjTbl[MAPOBJ_MAX] = {
3300.0f, 100.0f, -900.0f,
0.0f, 0.0f, 0.0f,
1.0f, 1.0f, 1.0f,
DATA_MAKE_NUM(DATADIR_W10, 3)
};
s16 boardMapObjMdl[MAPOBJ_MAX];
s16 tutorialExitWin;
s16 tutorialDoneF;
static s32 *motTbl;
s32 lbl_1_bss_4;
W10BoardWork *boardWork;
static s16 bgMdl = -1;
static s16 fgMdl = -1;
s16 boardStarHostMdl = -1;
s16 boardShopHostMdl = -1;
s16 boardLotteryHostMdl = -1;
s16 boardBooHouseHostMdl = -1;
static s32 charMotDirTbl[] = {
DATADIR_MARIOMOT, DATADIR_LUIGIMOT,
DATADIR_PEACHMOT, DATADIR_YOSHIMOT,
DATADIR_WARIOMOT, DATADIR_DONKEYMOT,
DATADIR_DAISYMOT, DATADIR_WALUIGIMOT,
};
static s32 starHostMot[2] = {
DATA_MAKE_NUM(DATADIR_W10, 18),
DATA_NUM_LISTEND
};
static s32 shopHostMot[2] = {
DATA_MAKE_NUM(DATADIR_BGUEST, 9),
DATA_NUM_LISTEND
};
static s32 lotteryHostMot[2] = {
DATA_MAKE_NUM(DATADIR_BGUEST, 24),
DATA_NUM_LISTEND
};
static s32 booHouseHostMot[2] = {
DATA_MAKE_NUM(DATADIR_BGUEST, 14),
DATA_NUM_LISTEND
};
static void LightSetHook(void);
static void LightResetHook(void);
static s32 WalkEvent(void);
static s32 WalkMiniEvent(void);
static s32 LandEvent(void);
void BoardCreate(void)
{
float size[2];
s32 i;
BoardMapObject *temp_r30;
s32 space;
s32 board;
board = GWBoardGet();
boardWork = (W10BoardWork *)&GWSystem.board_data[0];
boardWork->scene = 0;
boardWork->dice = 0;
boardWork->msg = 0;
BoardTutorialHookSet(TutorialHookExec);
HostCreate();
TutorialSprCreate();
tutorialDoneF = 0;
BoardSpaceInit(DATA_MAKE_NUM(DATADIR_W10, 0));
space = BoardSpaceFlagSearch(0, 1);
BoardTutorialBlockSetPos(space, 1);
bgMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 1), NULL, 0);
fn_8006DDE8(bgMdl, -1.0f);
BoardModelPosSet(bgMdl, 0.0f, 0.0f, 0.0f);
BoardModelMotionStart(bgMdl, 0, 0x40000001);
BoardModelMotionSpeedSet(bgMdl, 1.0f);
fgMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 2), NULL, 0);
fn_8006DDE8(fgMdl, -1.0f);
BoardModelPosSet(fgMdl, 0.0f, 0.0f, 0.0f);
BoardModelMotionStart(fgMdl, 0, 0x40000001);
boardStarHostMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W10, 17), starHostMot, 0);
BoardModelPosSet(boardStarHostMdl, 0.0f, 0.0f, 0.0f);
BoardModelMotionStart(boardStarHostMdl, 1, 0x40000001);
boardShopHostMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 5), shopHostMot, 0);
BoardModelMotionStart(boardShopHostMdl, 1, 0x40000001);
boardBooHouseHostMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 18), lotteryHostMot, 0);
BoardModelMotionStart(boardBooHouseHostMdl, 1, 0x40000001);
boardLotteryHostMdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 13), booHouseHostMot, 0);
BoardModelMotionStart(boardLotteryHostMdl, 1, 0x40000001);
BoardLightHookSet(LightSetHook, LightResetHook);
for (i = 0; i < MAPOBJ_MAX; i++) {
temp_r30 = &mapObjTbl[i];
if (temp_r30->data_num != -1) {
motTbl = NULL;
boardMapObjMdl[i] = BoardModelCreate(temp_r30->data_num, motTbl, 0);
BoardModelPosSetV(boardMapObjMdl[i], &temp_r30->pos);
BoardModelRotSetV(boardMapObjMdl[i], &temp_r30->rot);
BoardModelScaleSetV(boardMapObjMdl[i], &temp_r30->scale);
BoardModelVisibilitySet(boardMapObjMdl[i], 1);
if (motTbl != NULL) {
BoardModelMotionStart(boardMapObjMdl[i], 0, 0x40000001);
}
}
}
BoardModelVisibilitySet(boardMapObjMdl[MAPOBJ_MELON], 0);
boardWork->focus_mdl = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 10), NULL, 0);
BoardModelVisibilitySet(boardWork->focus_mdl, 0);
BoardSpaceWalkEventFuncSet(WalkEvent);
BoardSpaceWalkMiniEventFuncSet(WalkMiniEvent);
BoardSpaceLandEventFuncSet(LandEvent);
BoardStarHostSet(boardStarHostMdl);
BoardBooHouseHostSet(boardBooHouseHostMdl);
BoardShopHostSet(boardShopHostMdl);
BoardLotteryHostSet(boardLotteryHostMdl);
HuWinMesMaxSizeGet(1, size, MAKE_MESSID(0x2E, 0x3A));
tutorialExitWin = HuWinCreate(-10000.0f, 390.0f, size[0], size[1], 1);
HuWinMesSet(tutorialExitWin, MAKE_MESSID(0x2E, 0x3A));
HuWinMesSpeedSet(tutorialExitWin, 0);
HuWinPriSet(tutorialExitWin, 1);
HuWinMesPalSet(tutorialExitWin, 7, 0, 0, 0);
}
void BoardDestroy(void)
{
s32 i;
for (i = 0; i < 1; i++) {
if (boardMapObjMdl[i] != 0) {
BoardModelKill(boardMapObjMdl[i]);
boardMapObjMdl[i] = 0;
}
}
if (boardBooHouseHostMdl != -1) {
BoardModelKill(boardBooHouseHostMdl);
boardBooHouseHostMdl = -1;
}
if (boardShopHostMdl != -1) {
BoardModelKill(boardShopHostMdl);
boardShopHostMdl = -1;
}
if (boardLotteryHostMdl != -1) {
BoardModelKill(boardLotteryHostMdl);
boardLotteryHostMdl = -1;
}
if (boardStarHostMdl != -1) {
BoardModelKill(boardStarHostMdl);
boardStarHostMdl = -1;
}
if (bgMdl != -1) {
BoardModelKill(bgMdl);
bgMdl = -1;
}
if (fgMdl != -1) {
BoardModelKill(fgMdl);
fgMdl = -1;
}
BoardModelKill(boardWork->focus_mdl);
TutorialSprKill();
HuWinKill(tutorialExitWin);
BoardSpaceDestroy();
}
static void LightSetHook(void)
{
s16 id = BoardModelIDGet(bgMdl);
Hu3DModelLightInfoSet(id, 1);
}
static void LightResetHook(void)
{
}
static s32 LandEvent(void)
{
}
static s32 WalkEvent(void)
{
return 0;
}
void fn_1_914(void)
{
}
void fn_1_918(void)
{
}
static s32 WalkMiniEvent(void)
{
}
s32 fn_1_920(s16 arg0, f32 arg8, f32 arg9) {
s32 var_r31;
f32 var_f29;
f32 var_f31;
var_r31 = 0;
var_f31 = BoardModelRotYGet(arg0);
arg8 = fmod(arg8, 360.0);
if (var_f31 < 0.0f) {
var_f31 += 360.0f;
}
if (arg8 < 0.0f) {
arg8 += 360.0f;
}
if (var_f31 != arg8) {
var_f29 = arg8 - var_f31;
if (var_f29 < 0.0f) {
var_f29 += 360.0f;
}
if (var_f29 < 180.0f) {
if (var_f29 > arg9) {
var_f31 = var_f31 + arg9;
} else {
var_f31 = arg8;
}
} else if ((360.0f - var_f29) > arg9) {
var_f31 = var_f31 - arg9;
} else {
var_f31 = arg8;
}
if (var_f31 < 0.0f) {
var_f31 += 360.0f;
}
if (var_f31 >= 360.0f) {
var_f31 -= 360.0f;
}
BoardModelRotYSet(arg0, var_f31);
} else {
var_r31 = 1;
}
return var_r31;
}