summaryrefslogtreecommitdiff
path: root/src/koopatlas/core.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/koopatlas/core.cpp')
-rw-r--r--src/koopatlas/core.cpp55
1 files changed, 43 insertions, 12 deletions
diff --git a/src/koopatlas/core.cpp b/src/koopatlas/core.cpp
index fb1e865..03b64dc 100644
--- a/src/koopatlas/core.cpp
+++ b/src/koopatlas/core.cpp
@@ -158,10 +158,9 @@ bool WMInit_LoadResources(void *ptr) {
SpammyReport("WMInit_LoadResources returning true\n");
dScKoopatlas_c *wm = (dScKoopatlas_c*)ptr;
- return wm->mapData.load("/Maps/yat.kpbin");
- //TODO
- //return wm->resMng.loadSet("MMFullWorld");
- //return true;
+ return
+ wm->mapData.load("/Maps/yat.kpbin") &&
+ wm->levelInfoLoader.load("/NewerRes/LevelInfo.bin");
}
bool WMInit_SetupWait(void *ptr) {
@@ -203,21 +202,24 @@ bool WMInit_SetupExtra(void *ptr) {
}
// since we've got all the resources, set up the path data too
- //wm->pathManager->setup();
- //wm->pathManager->computeEvents();
+ SpammyReport("preparing level info\n");
+ wm->levelInfo.load(wm->levelInfoLoader.buffer);
+ wm->pathManager.setup();
// and now Player setup
wm->player = (daWMPlayer_c*)CreateParentedObject(WM_PLAYER, wm, 0, 2);
wm->player->modelHandler->mdlClass->setPowerup(2);
wm->player->modelHandler->mdlClass->startAnimation(0, 1.2f, 10.0f, 0.0f);
- //wm->player->pos = wm->pathManager->currentPoint->position;
+
+ dKPNode_s *cNode = wm->pathManager.currentNode;
+ wm->player->pos = (Vec){cNode->x, -cNode->y, wm->player->pos.y};
// is last param correct? must check :/
wm->map = (dWMMap_c*)CreateParentedObject(WM_MAP, wm, 0, 0);
wm->hud = (dWMHud_c*)CreateParentedObject(WM_HUD, wm, 0, 0);
- // note: world_camera and wm_path_manager are not created here
- // because we require them earlier
- // they are created in dScKoopatlas_c::onCreate
+ // note: world_camera is not created here
+ // because we require it earlier
+ // it is created in dScKoopatlas_c::onCreate
return true;
}
@@ -334,8 +336,6 @@ int dScKoopatlas_c::onCreate() {
SpammyReport("world camera\n");
CreateParentedObject(WORLD_CAMERA, this, 0, 0);
- /*pathManager = (dWMPathManager_c*)CreateParentedObject(WM_PATH_MANAGER, this, 0, 0);*/
-
SpammyReport("setting NewerMapDrawFunc\n");
*CurrentDrawFunc = NewerMapDrawFunc;
@@ -411,6 +411,8 @@ void dScKoopatlas_c::executeState_Normal() {
CSMENU_ACTIVE(this->csMenu) = true;
state.setState(&StateID_CSMenu);
}
+
+ pathManager.execute();
}
void dScKoopatlas_c::executeState_CSMenu() {
@@ -798,6 +800,35 @@ void dScKoopatlas_c::executeState_QuickSaveEndCloseWait() {
void dScKoopatlas_c::executeState_SaveError() { }
+void dScKoopatlas_c::startLevel(dLevelInfo_c::entry_s *entry) {
+ for (int i = 0; i < 4; i++) {
+ bool isThere = QueryPlayerAvailability(i);
+ int id = Player_ID[i];
+ Player_Active[i] = isThere ? 1 : 0;
+ if (!isThere) Player_Flags[i] = 0;
+ }
+
+ StartLevelInfo sl;
+ sl.unk1 = 0;
+ sl.unk2 = 0xFF;
+ sl.unk3 = 0;
+ sl.unk4 = 0;
+ sl.purpose = 0;
+
+ sl.world1 = entry->world;
+ sl.world2 = entry->world;
+ sl.level1 = entry->level;
+ sl.level2 = entry->level;
+
+ // hopefully this will fix the Star Coin issues
+ SetSomeConditionShit(entry->world, entry->level, 2);
+
+ ActivateWipe(WIPE_MARIO);
+
+ DoStartLevel(GetGameMgr(), &sl);
+}
+
+
void NewerMapDrawFunc() {
Reset3DState();
SetCurrentCameraID(0);