mirror of
https://github.com/projectPiki/pikmin2.git
synced 2024-11-26 23:00:27 +00:00
233 lines
7.0 KiB
C++
233 lines
7.0 KiB
C++
#ifndef _MORIMURA_GAMEOVER_H
|
|
#define _MORIMURA_GAMEOVER_H
|
|
|
|
#include "Morimura/Bases.h"
|
|
#include "Morimura/mrUtil.h"
|
|
#include "P2DScreen.h"
|
|
#include "Game/Navi.h"
|
|
|
|
namespace Morimura {
|
|
void addYPos(J2DPane*, f32);
|
|
|
|
struct TGameOverScreen {
|
|
TGameOverScreen(JKRArchive*, int);
|
|
|
|
void init(const char*, u32);
|
|
void setPosY(f32);
|
|
void addAnim(char*);
|
|
void update();
|
|
void draw(Graphics&, J2DPerspGraph*);
|
|
void orgdraw(Graphics&, J2DPerspGraph*);
|
|
void setFadeAlpha(u8);
|
|
|
|
JKRArchive* mArchive; // _00
|
|
P2DScreen::Mgr_tuning* mScreen; // _04
|
|
og::Screen::AnimScreen** mAnimList; // _08
|
|
TGXSetPane* mGXPane; // _0C
|
|
int mAnimCountMax; // _10
|
|
int mAnimCountCurrent; // _14
|
|
P2DScreen::Mgr_tuning* mScreen2; // _18
|
|
og::Screen::AnimScreen** mAnimList2; // _1C
|
|
};
|
|
|
|
struct TGameOverBase : public TTestBase {
|
|
TGameOverBase(char* name);
|
|
|
|
// virtual ~TGameOverBase() { } // _08 (weak)
|
|
virtual bool doUpdate(); // _58
|
|
virtual void doDraw(Graphics& gfx); // _68
|
|
virtual og::Screen::DispMemberBase* getDispMemberBase() { return mDisp; } // _78 (weak)
|
|
virtual bool doUpdateFadeout() { return mIsSection ? TTestBase::doUpdateFadeout() : true; } // _60 (weak)
|
|
|
|
// unused/inline
|
|
void init();
|
|
|
|
// _00 = VTBL1
|
|
// _18 = VTBL2
|
|
// _00-_78 = TTestBase
|
|
JKRArchive* mArchive; // _78
|
|
TGameOverScreen* mGameOverScreen; // _7C
|
|
og::Screen::DispMemberBase* mDisp; // _80
|
|
u8 mFadeAlpha; // _84
|
|
bool mDoOrgDraw; // _85
|
|
s16 mTimer; // _86
|
|
u32 mType; // _88
|
|
s16 mTimeSpeed; // _8C
|
|
s16 mMaxTime; // _8E
|
|
};
|
|
|
|
struct TGameOver2D : public TGameOverBase {
|
|
TGameOver2D()
|
|
: TGameOverBase("GameOver")
|
|
{
|
|
}
|
|
|
|
// virtual ~TGameOver2D() { } // _08 (weak)
|
|
virtual void doCreate(JKRArchive*); // _4C
|
|
|
|
// _00 = VTBL1
|
|
// _18 = VTBL2
|
|
// _00-_90 = TGameOverBase
|
|
};
|
|
|
|
struct TLujiDown2D : public TGameOverBase {
|
|
TLujiDown2D()
|
|
: TGameOverBase("LujiDown")
|
|
{
|
|
}
|
|
|
|
// virtual ~TLujiDown2D() { } // _08 (weak)
|
|
virtual void doCreate(JKRArchive*); // _4C
|
|
|
|
// _00 = VTBL1
|
|
// _18 = VTBL2
|
|
// _00-_90 = TGameOverBase
|
|
};
|
|
|
|
struct TOrimaDown2D : public TGameOverBase {
|
|
TOrimaDown2D()
|
|
: TGameOverBase("OrimaDown")
|
|
{
|
|
}
|
|
|
|
// virtual ~TOrimaDown2D() { } // _08 (weak)
|
|
virtual void doCreate(JKRArchive*); // _4C
|
|
|
|
// _00 = VTBL1
|
|
// _18 = VTBL2
|
|
// _00-_90 = TGameOverBase
|
|
};
|
|
|
|
struct TPikminDown2D : public TGameOverBase {
|
|
TPikminDown2D()
|
|
: TGameOverBase("PikminDown")
|
|
{
|
|
}
|
|
|
|
// virtual ~TPikminDown2D() { } // _08 (weak)
|
|
virtual void doCreate(JKRArchive*); // _4C
|
|
|
|
// _00 = VTBL1
|
|
// _18 = VTBL2
|
|
// _00-_90 = TGameOverBase
|
|
};
|
|
|
|
struct TPresidentDown2D : public TGameOverBase {
|
|
TPresidentDown2D()
|
|
: TGameOverBase("PresidentDown")
|
|
{
|
|
}
|
|
|
|
// virtual ~TPresidentDown2D() { } // _08 (weak)
|
|
virtual void doCreate(JKRArchive*); // _4C
|
|
|
|
// _00 = VTBL1
|
|
// _18 = VTBL2
|
|
// _00-_90 = TGameOverBase
|
|
};
|
|
|
|
struct TGameOverSceneBase : public THIOScene {
|
|
virtual bool isUseBackupSceneInfo()
|
|
{
|
|
if (Game::naviMgr) {
|
|
return u8(Game::naviMgr->getAliveCount() >= 1);
|
|
}
|
|
return true;
|
|
} // _14
|
|
|
|
// _00 = VTBL
|
|
// _00-_224 = THIOScene
|
|
// treat _220 as TGameOverBase
|
|
};
|
|
|
|
struct TGameOverScene : public TGameOverSceneBase {
|
|
virtual const char* getResName() const { return "res_gameover.szs"; } // _1C (weak)
|
|
virtual void doCreateObj(JKRArchive* arc)
|
|
{
|
|
TGameOver2D* obj = new TGameOver2D;
|
|
registObj(obj, arc);
|
|
mObject = obj;
|
|
} // _20 (weak)
|
|
virtual bool isUseBackupSceneInfo() { return false; } // _14 (weak)
|
|
virtual SceneType getSceneType() { return SCENE_GAME_OVER_GENERAL; } // _08 (weak)
|
|
virtual ScreenOwnerID getOwnerID() { return OWNER_MRMR; } // _0C (weak)
|
|
virtual ScreenMemberID getMemberID() { return MEMBER_GAME_OVER; } // _10 (weak)
|
|
|
|
// _00 = VTBL
|
|
// _00-_224 = TGameOverSceneBase
|
|
// treat _220 as TGameOver2D
|
|
};
|
|
|
|
struct TLujiDownScene : public TGameOverSceneBase {
|
|
virtual const char* getResName() const { return "gameover_louie.szs"; } // _1C (weak)
|
|
virtual void doCreateObj(JKRArchive* arc)
|
|
{
|
|
TLujiDown2D* obj = new TLujiDown2D;
|
|
registObj(obj, arc);
|
|
mObject = obj;
|
|
} // _20 (weak)
|
|
virtual SceneType getSceneType() { return SCENE_LUJI_DOWN; } // _08 (weak)
|
|
virtual ScreenOwnerID getOwnerID() { return OWNER_MRMR; } // _0C (weak)
|
|
virtual ScreenMemberID getMemberID() { return MEMBER_GAME_OVER; } // _10 (weak)
|
|
|
|
// _00 = VTBL
|
|
// _00-_224 = TGameOverSceneBase
|
|
// treat _220 as TLujiDown2D
|
|
};
|
|
|
|
struct TOrimaDownScene : public TGameOverSceneBase {
|
|
virtual const char* getResName() const { return "res_orimadown.szs"; } // _1C (weak)
|
|
virtual void doCreateObj(JKRArchive* arc)
|
|
{
|
|
TOrimaDown2D* obj = new TOrimaDown2D;
|
|
registObj(obj, arc);
|
|
mObject = obj;
|
|
} // _20 (weak)
|
|
virtual SceneType getSceneType() { return SCENE_ORIMA_DOWN; } // _08 (weak)
|
|
virtual ScreenOwnerID getOwnerID() { return OWNER_MRMR; } // _0C (weak)
|
|
virtual ScreenMemberID getMemberID() { return MEMBER_GAME_OVER; } // _10 (weak)
|
|
|
|
// _00 = VTBL
|
|
// _00-_224 = TGameOverSceneBase
|
|
// treat _220 as TOrimaDown2D
|
|
};
|
|
|
|
struct TPikminDownScene : public TGameOverSceneBase {
|
|
virtual const char* getResName() const { return "res_pikmindown.szs"; } // _1C (weak)
|
|
virtual void doCreateObj(JKRArchive* arc)
|
|
{
|
|
TPikminDown2D* obj = new TPikminDown2D;
|
|
registObj(obj, arc);
|
|
mObject = obj;
|
|
} // _20 (weak)
|
|
virtual bool isUseBackupSceneInfo() { return false; } // _14 (weak)
|
|
virtual SceneType getSceneType() { return SCENE_GAME_OVER_GENERAL; } // _08 (weak)
|
|
virtual ScreenOwnerID getOwnerID() { return OWNER_MRMR; } // _0C (weak)
|
|
virtual ScreenMemberID getMemberID() { return MEMBER_GAME_OVER; } // _10 (weak)
|
|
|
|
// _00 = VTBL
|
|
// _00-_224 = TGameOverSceneBase
|
|
// treat _220 as TPikminDown2D
|
|
};
|
|
|
|
struct TPresidentDownScene : public TGameOverSceneBase {
|
|
virtual const char* getResName() const { return "res_presidentdown.szs"; } // _1C (weak)
|
|
virtual void doCreateObj(JKRArchive* arc)
|
|
{
|
|
TPresidentDown2D* obj = new TPresidentDown2D;
|
|
registObj(obj, arc);
|
|
mObject = obj;
|
|
} // _20 (weak)
|
|
virtual SceneType getSceneType() { return SCENE_PRESIDENT_DOWN; } // _08 (weak)
|
|
virtual ScreenOwnerID getOwnerID() { return OWNER_MRMR; } // _0C (weak)
|
|
virtual ScreenMemberID getMemberID() { return MEMBER_GAME_OVER; } // _10 (weak)
|
|
|
|
// _00 = VTBL
|
|
// _00-_224 = TGameOverSceneBase
|
|
// treat _220 as TPresidentDown2D
|
|
};
|
|
|
|
} // namespace Morimura
|
|
|
|
#endif
|