SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
AreaObjContainer.hpp
1#pragma once
2
3#include "Game/AreaObj/AreaObj.hpp"
4#include "Game/AreaObj/LightAreaHolder.hpp"
5#include "Game/NameObj/NameObj.hpp"
6#include "JSystem/JGeometry/TVec.hpp"
7#include "Game/AreaObj/CubeCamera.hpp"
8#include "Game/AreaObj/GlaringLightArea.hpp"
9#include "Game/AreaObj/ImageEffectArea.hpp"
10#include "Game/AreaObj/WarpCube.hpp"
11#include "Game/AreaObj/WaterArea.hpp"
12
14 const char* mName; // _0
15 int _4; // _4
16 AreaObjMgr* (*mFuncPtr)(s32, const char *); // _8
17};
18
19namespace {
20 template<typename T>
21 AreaObjMgr* createManager(s32 type, const char *pName) {
22 return new T(type, pName);
23 }
24
25 static AreaObjEntry cCreateTable[0x43] = {
26 { "SwitchArea", 0x40, createManager<AreaObjMgr> },
27 { "RaceJudgeCube", 0x40, createManager<AreaObjMgr> },
28 { "NinForceWindCube", 0x40, createManager<AreaObjMgr> },
29 { "NinAbyssCube", 0x40, createManager<AreaObjMgr> },
30 { "CubeCamera", 0xA0, createManager<CubeCameraMgr> },
31 { "BindEndCube", 0x40, createManager<AreaObjMgr> },
32 { "EffectCylinder", 0x40, createManager<AreaObjMgr> },
33 { "DeathArea", 0x40, createManager<AreaObjMgr> },
34 /* todo -- finish me */
35
36 { "ImageEffectArea", 0x20, createManager<ImageEffectAreaMgr> },
37
38 { "GlaringLightArea", 0x40, createManager<GlaringLightAreaMgr> },
39
40 { "WarpCube", 0x40, createManager<WarpCubeMgr> },
41
42 { "LightArea", 0x80, createManager<LightAreaHolder> },
43
44 { "Water", 0x40, createManager<WaterAreaMgr> }
45 };
46};
47
48class AreaObjContainer : public NameObj {
49public:
50 AreaObjContainer(const char *);
51
52 virtual ~AreaObjContainer();
53 virtual void init(const JMapInfoIter &);
54
55 AreaObjMgr* getManager(const char *) const;
56 AreaObj* getAreaObj(const char *, const TVec3f &) const;
57
58 inline AreaObjMgr* getFirstMgr() const {
59 return mManagerArray[0];
60 }
61
62 inline AreaObjMgr* getLastMgr() const {
63 return mManagerArray[mNumManagers];
64 }
65
66 AreaObjMgr* mManagerArray[0x50]; // _C
67 u32 mNumManagers; // _14C
68};
69
70namespace MR {
71 AreaObjContainer* getAreaObjContainer();
72};
virtual void init(const JMapInfoIter &)
Intializes the NameObj and can set various settings and construct necessary classes.
The most basic form of an object.
Definition NameObj.hpp:11