summaryrefslogtreecommitdiff
path: root/src/koopatlas/core.h
blob: a55624d3bd876abec8639f25e93955cabaea5afd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/* KoopAtlas Map Engine
 * Created by Treeki
 */

#ifndef __KOOPATLAS_H
#define __KOOPATLAS_H

#include <common.h>
#include <game.h>
#include <g3dhax.h>
#include <sfx.h>

#include "levelinfo.h"
#include "koopatlas/mapdata.h"
#include "koopatlas/shop.h"
#include "koopatlas/starcoin.h"
#include "koopatlas/hud.h"
#include "koopatlas/pathmanager.h"
#include "koopatlas/mapmusic.h"

#define WM_DEBUGGING
//#define WM_SPAMMY_DEBUGGING

#ifdef WM_DEBUGGING
#define MapReport OSReport
#else
#define MapReport(...)
#endif

#ifdef WM_SPAMMY_DEBUGGING
#define SpammyReport OSReport
#else
#define SpammyReport(...)
#endif

void NewerMapDrawFunc();

#define WM_HUD WM_DANCE_PAKKUN
#define WM_SHOP WM_TOGEZO
#define WM_STARCOIN WM_GHOST

class daWMPlayer_c;
class dWMMap_c;
class dWMHud_c;
class dWMShop_c;
class dWMStarCoin_c;
class dWorldCamera_c;

class dScKoopatlas_c : public dScene_c {
	public:
		dScKoopatlas_c();

		FunctionChain initChain;

		dStateWrapper_c<dScKoopatlas_c> state;

		USING_STATES(dScKoopatlas_c);
		DECLARE_STATE(Limbo);
		DECLARE_STATE(ContinueWait);
		DECLARE_STATE(Normal);
		DECLARE_STATE(CSMenu);
		DECLARE_STATE(TitleConfirmOpenWait);
		DECLARE_STATE(TitleConfirmSelect);
		DECLARE_STATE(TitleConfirmHitWait);
		DECLARE_STATE(PlayerChangeWait);
		DECLARE_STATE(EasyPairingWait);
		DECLARE_STATE(PowerupsWait);
		DECLARE_STATE(ShopWait);
		DECLARE_STATE(CoinsWait);
		DECLARE_STATE(SaveOpen);
		DECLARE_STATE(SaveSelect);
		DECLARE_STATE(SaveWindowClose);
		DECLARE_STATE(SaveDo);
		DECLARE_STATE(SaveEndWindow);
		DECLARE_STATE(SaveEndCloseWait);
		DECLARE_STATE(QuickSaveOpen);
		DECLARE_STATE(QuickSaveSelect);
		DECLARE_STATE(QuickSaveWindowClose);
		DECLARE_STATE(QuickSaveDo);
		DECLARE_STATE(QuickSaveEndWindow);
		DECLARE_STATE(QuickSaveEndCloseWait);
		DECLARE_STATE(SaveError);

		void *csMenu;
		void *selectCursor;
		void *numPeopleChange;
		void *yesNoWindow;
		void *continueObj;
		dStockItem_c *stockItem;
		dStockItemShadow_c *stockItemShadow;
		void *easyPairing;


		int onCreate();
		int onDelete();
		int onExecute();

		static dScKoopatlas_c *build();
		static dScKoopatlas_c *instance;


		daWMPlayer_c *player;
		dWMHud_c *hud;
		dWMMap_c *map;
		dWMShop_c *shop;
		dWMStarCoin_c *coins;

		int currentMapID;
		const char *mapPath;
		dKPMapData_c mapData;
		dWMPathManager_c pathManager;

		dDvdLoader_c mapListLoader;

		bool isFirstPlay;
		void startMusic();

		bool warpZoneHacks;

		u32 iterateMapList(u32(*callback)(u32,const char *,int,int), u32 userData, int *ptrIndex = 0);
		const char *getMapNameForIndex(int index);
		int getIndexForMapName(const char *name);

		void startLevel(dLevelInfo_c::entry_s *level);

		bool canDoStuff();
		bool mapIsRunning();

		void showSaveWindow();

		bool keepMusicPlaying;
};

extern void *_8042A788;
void somethingAboutSound(void *beef);

#endif