tp/include/d/d_menu_ring.h

210 lines
8.2 KiB
C++

#ifndef D_MENU_D_MENU_RING_H
#define D_MENU_D_MENU_RING_H
#include "d/d_com_inf_game.h"
class CPaneMgr;
class CPaneMgrAlpha;
struct CSTControl;
class J2DTextBox;
class STControl;
class dKantera_icon_c;
class dMsgString_c;
class dMenu_ItemExplain_c;
class dSelect_cursor_c;
class dMenu_Ring_c : public dDlst_base_c {
public:
enum dMenu_Ring_Status {
/* 0 */ STATUS_WAIT,
/* 1 */ STATUS_MOVE,
/* 2 */ STATUS_EXPLAIN,
/* 3 */ STATUS_EXPLAIN_FORCE,
};
dMenu_Ring_c(JKRExpHeap*, STControl*, CSTControl*, u8);
void _create();
void _delete();
void _move();
void _draw();
void setKanteraPos(f32, f32);
bool isOpen();
bool isMoveEnd();
bool isClose();
u8 getStickInfo(STControl*);
s16 calcStickAngle(STControl*, u8);
void setRotate();
void setItemScale(int, f32);
void setButtonScale(int, f32);
void setItem();
void setJumpItem(bool);
void setScale();
void setNameString(u32);
void setActiveCursor();
void setMixItem();
void drawItem();
void drawItem2();
void stick_wait_init();
void stick_wait_proc();
void stick_move_init();
void stick_move_proc();
void stick_explain_init();
void stick_explain_force_init();
void stick_explain_proc();
void stick_explain_force_proc();
void setSelectItem(int, u8);
void drawSelectItem();
void setSelectItemForce(int);
u8 getCursorPos(u8);
u8 getItemNum(u8);
u8 getItemMaxNum(u8);
bool checkExplainForce();
bool checkCombineBomb(int);
void setCombineBomb(int);
void drawNumber(int, int, f32, f32);
u8 getItem(int, u8);
void setDoStatus(u8);
bool isMixItemOn();
bool isMixItemOff();
void setMixMessage();
void textScaleHIO();
void textCentering();
f32 clacEllipseFunction(f32, f32, f32);
f32 calcDistance(f32, f32, f32, f32);
void clacEllipsePlotAverage(int, f32, f32);
bool dpdMove();
u8 openExplain(u8);
virtual void draw() { _draw(); }
virtual ~dMenu_Ring_c();
void drawFlag0() { mDrawFlag = 0; }
void setStatus(u8 i_status) { mStatus = i_status; }
private:
/* 0x004 */ JKRExpHeap* mpHeap;
/* 0x008 */ STControl* mpStick;
/* 0x00C */ CSTControl* mpCStick;
/* 0x010 */ dSelect_cursor_c* mpDrawCursor;
/* 0x014 */ dMsgString_c* mpString;
/* 0x018 */ CPaneMgrAlpha* mpMessageParent;
/* 0x01C */ CPaneMgrAlpha* mpCenterParent;
/* 0x020 */ CPaneMgrAlpha* mpSpotParent;
/* 0x024 */ CPaneMgr* mpTextParent[10];
/* 0x04C */ CPaneMgr* mpNameParent;
/* 0x050 */ CPaneMgr* mpCircle;
/* 0x054 */ dKantera_icon_c* mpKanteraMeter;
/* 0x058 */ J2DScreen* mpScreen;
/* 0x05C */ J2DScreen* mpSpotScreen;
/* 0x060 */ u8 field_0x060[0x064 - 0x060];
/* 0x064 */ J2DScreen* mpCenterScreen;
/* 0x068 */ J2DPicture* mpSelectItemTex[4][3];
/* 0x098 */ J2DPicture* mpItemTex[MAX_ITEM_SLOTS][3];
/* 0x1B8 */ J2DPicture* mpBlackTex;
/* 0x1BC */ J2DPicture* mpItemNumTex[3]; // Displays digits on ammo-based items. Each index
// represents one drawn digit
/* 0x1C8 */ J2DTextBox* mpComboOffString[5]; // Displays "Combo Off" combined bow is equipped
// and cursor is on combinable item
/* 0x1DC */ J2DTextBox* mpBowArrowComboString[5]; // Displays "Bow & Arrow Combo" if bow is
// equipped and cursor is on combinable item
/* 0x1F0 */ ResTIMG* mpSelectItemTexBuf[4][3][2];
/* 0x250 */ ResTIMG* mpItemBuf[MAX_ITEM_SLOTS][3];
/* 0x370 */ dMenu_ItemExplain_c* mpItemExplain;
/* 0x374 */ void*
mpResData[3]; // Contains screen data from .blo files which control e.g. the
// appearance of specific sprites and where they are on the screen
/* 0x380 */ cXyz mDirectSelectCursorPos; // Positions the cursor with it's X and Z coordinates
// when Direct Select is active
/* 0x38C */ f32 mItemSlotPosX[MAX_ITEM_SLOTS];
/* 0x3EC */ f32 mItemSlotPosY[MAX_ITEM_SLOTS];
/* 0x44C */ f32 mItemSlotParam1[MAX_ITEM_SLOTS];
/* 0x4AC */ f32 mItemSlotParam2[MAX_ITEM_SLOTS];
/* 0x50C */ f32 mRingRadiusH;
/* 0x510 */ f32 mRingRadiusV;
/* 0x514 */ f32 mAlphaRate; // Responsible for multiple things but especially for the
// background becoming darker in a specific velocity when opening
/* 0x518 */ f32 field_0x518[4];
/* 0x528 */ f32 field_0x528[4];
/* 0x538 */ f32 field_0x538[4];
/* 0x548 */ f32 field_0x548[4];
/* 0x558 */ f32 field_0x558[4];
/* 0x568 */ f32 mCenterPosX; // Controls the position in the x-axis of the whole item wheel
// and moves it when opening or closing.
/* 0x56C */ f32 mCenterPosY; // Controls the position in the y-axis of the whole item wheel
// and moves it when opening or closing.
/* 0x570 */ f32 mPikariFlashingSpeed; // Controls the flashing speed of the combine icon (Bow &
// Arrow Combo)
/* 0x574 */ f32 field_0x574[3];
/* 0x580 */ f32 field_0x580[3];
/* 0x58C */ f32 mRingItemNamePosX;
/* 0x590 */ f32 mRingItemNamePosY;
/* 0x594 */ f32 mRingItemNameScale;
/* 0x598 */ f32 mRingGuidePosX[10];
/* 0x5C0 */ f32 mRingGuidePosY[10];
/* 0x5E8 */ f32 mRingGuideScale[10];
/* 0x610 */ f32 mRingCursorScale;
/* 0x614 */ f32 mRingPosX;
/* 0x618 */ f32 mRingPosY;
/* 0x61C */ f32 mRingScaleH;
/* 0x620 */ f32 mRingScaleV;
/* 0x624 */ f32 mRingAlpha; // the alpha depends on if the player is a wolf or a human
/* 0x628 */ u32 field_0x628; // unused, not even initialized
/* 0x62C */ u32 mPlayerIsWolf;
/* 0x630 */ u32 mNameStringID;
/* 0x634 */ s32 field_0x634;
/* 0x638 */ s16 mOpenCloseFrames;
/* 0x63A */ s16 field_0x63a; // just gets set to zero in some functions. Unused
/* 0x63C */ s16 field_0x63c; // unused
/* 0x63E */ s16 field_0x63e[MAX_ITEM_SLOTS];
/* 0x66E */ s16 field_0x66e;
/* 0x670 */ s16 field_0x670;
/* 0x672 */ s16 mWaitFrames;
/* 0x674 */ s16 field_0x674[4];
/* 0x67C */ u16 field_0x67c;
/* 0x67E */ s16 field_0x67e;
/* 0x680 */ s16 mCursorSpeed;
/* 0x682 */ s16 field_0x682;
/* 0x684 */ s16 field_0x684;
/* 0x686 */ s16 field_0x686[4];
/* 0x68E */ s16 field_0x68e;
/* 0x690 */ u8 mItemSlots[MAX_ITEM_SLOTS];
/* 0x6A8 */ u8 mCurrentSlot;
/* 0x6A9 */ u8 field_0x6a9; // unused
/* 0x6AA */ u8 mXButtonSlot;
/* 0x6AB */ u8 mYButtonSlot;
/* 0x6AC */ u8 field_0x6ac;
/* 0x6AD */ u8 field_0x6ad;
/* 0x6AE */ u8 mItemsTotal; // Contains the amount of items which are actually obtained and in
// the item wheel
/* 0x6AF */ u8 mTotalItemTexToAlloc; // Similiar to mItemsTotal but used to allocate and setup
// the item textures based on obtained items
/* 0x6B0 */ u8 mStatus;
/* 0x6B1 */ u8 mOldStatus;
/* 0x6B2 */ u8 field_0x6b2; // used to set status but always zero
/* 0x6B3 */ u8 field_0x6b3; // ends up being useless since checkCombineComb and setCombineBomb
// are empty functions at least in GCN
/* 0x6B4 */ u8 field_0x6b4[4];
/* 0x6B8 */ u8 field_0x6b8[4];
/* 0x6BC */ u8 mRingOrigin; // The value decides the origin the item wheel comes from before
// it's in the center of the screen
/* 0x6BD */ u8 mDrawFlag;
/* 0x6BE */ u8 field_0x6be[4];
/* 0x6C2 */ u8 field_0x6c2;
/* 0x6C3 */ u8 field_0x6c3; // unused
/* 0x6C4 */ u8 field_0x6c4; // only gets set to current slot when item explain gets opened
/* 0x6C5 */ u8 field_0x6c5; // unused
/* 0x6C6 */ u8 field_0x6c6; // unused
/* 0x6C7 */ u8 field_0x6c7[4];
/* 0x6CB */ u8 field_0x6cb;
/* 0x6CC */ u8 mDoStatus;
/* 0x6CD */ u8 field_0x6cd;
/* 0x6CE */ bool mDirectSelectActive;
/* 0x6CF */ u8 field_0x6cf;
/* 0x6D0 */ u8 field_0x6d0;
/* 0x6D1 */ u8 field_0x6d1;
/* 0x6D2 */ u8 field_0x6d2;
/* 0x6D3 */ u8 field_0x6d3;
};
#endif /* D_MENU_D_MENU_RING_H */