Files
ss/include/d/d_textunk.h
T
2025-04-07 22:12:41 +02:00

246 lines
5.9 KiB
C++

#ifndef D_TEXTUNK_H
#define D_TEXTUNK_H
#include "common.h"
#include "libms/flowfile.h"
#include "libms/msgfile.h"
#include "nw4r/ut/ut_Color.h"
#include "sized_string.h"
/**
* This class appears to be the remnant of a sort of "hot-reloading"
* mechanism for the game's user interface. Many of the functions
* affect text formatting, UI layouting, and it also has mechanisms
* for overriding the text and flow files being accessed. The actual
* implementation appears to have been stripped out though.
*/
class UnkTextThing {
public:
UnkTextThing();
virtual ~UnkTextThing() {}
void destroy();
inline static f32 getField0x758() {
if (sInstance != nullptr) {
return sInstance->field_0x758;
}
return 0.0f;
}
inline static f32 getField0x75C() {
if (sInstance != nullptr) {
return sInstance->field_0x75C;
}
return 0.0f;
}
inline static f32 getField0x760() {
if (sInstance != nullptr) {
return sInstance->field_0x760;
}
return 0.0f;
}
inline static f32 getField0x768() {
if (sInstance != nullptr) {
return sInstance->field_0x768;
}
return 0.0f;
}
inline static f32 getField0x76C() {
if (sInstance != nullptr) {
return sInstance->field_0x76C;
}
return 0.0f;
}
inline static f32 getFn800B1F70() {
if (sInstance != nullptr) {
return sInstance->fn_800B1F70();
}
return 1.0f;
}
inline static f32 getFn800B1FD0() {
if (sInstance != nullptr) {
return sInstance->fn_800B1FD0();
}
return 1.0f;
}
inline static f32 getFn800B1F10() {
return sInstance->fn_800B1F10();
}
inline static f32 getFn800B1FF0() {
if (sInstance != nullptr) {
return sInstance->fn_800B1FF0();
}
return 0.0f;
}
inline static f32 getFn800B2000() {
if (sInstance != nullptr) {
return sInstance->fn_800B2000();
}
return 0.0f;
}
inline static f32 getFn800B2010() {
if (sInstance != nullptr) {
return sInstance->fn_800B2010();
}
return 0.0f;
}
inline static f32 getFn800B2020() {
if (sInstance != nullptr) {
return sInstance->fn_800B2020();
}
return 0.0f;
}
inline static f32 getFn800B2030() {
if (sInstance != nullptr) {
return sInstance->fn_800B2030();
}
return 0.0f;
}
inline static f32 getFn800B2040() {
if (sInstance != nullptr) {
return sInstance->fn_800B2040();
}
return 0.0f;
}
static UnkTextThing *getInstance() {
return sInstance;
}
s16 getMsgWindowWaitDelay() const {
return mMsgWindowWaitDelay;
}
bool getShouldOverrideData() const {
return mShouldOverrideData;
}
void *getOverrideZev0() const {
return mOverrideZev0;
}
void *getOverrideStageZev() const {
return mOverrideStageZev;
}
bool getShouldHookAllocations() const {
return mShouldHookAllocations;
}
MsbtInfo *getOverrideMsbtInfo(s32 index) const {
return mMsbts[index];
}
MsbfInfo *getOverrideMsbfInfo(s32 index) const {
return mMsbfs[index];
}
const char *getStr1() const {
return field_0x004;
}
const char *getStr2() const {
return field_0x084;
}
const char *getStr3() const {
return field_0x104;
}
void setStr1(const char *s) {
field_0x004 = s;
}
void setStr2(const char *s) {
field_0x084 = s;
}
void setStr3(const char *s) {
field_0x104 = s;
}
void *allocUnk(size_t size, int align);
void destroyUnk(void *thing);
private:
static UnkTextThing *sInstance;
void destroyFlow(MsbfInfo *flow);
void destroyMsg(MsbtInfo *msg);
f32 fn_800B1F10();
f32 fn_800B1F70();
f32 fn_800B1FC0();
f32 fn_800B1FD0();
f32 fn_800B1FE0();
f32 fn_800B1FF0();
f32 fn_800B2000();
f32 fn_800B2010();
f32 fn_800B2020();
f32 fn_800B2030();
f32 fn_800B2040();
/* 0x004 */ SizedString<0x80> field_0x004;
/* 0x084 */ SizedString<0x80> field_0x084;
/* 0x104 */ SizedString<0x80> field_0x104;
/* 0x184 */ void *field_buf0[82];
/* 0x2CC */ void *field_buf4[23];
/* 0x328 */ void *field_buf1[80];
/* 0x468 */ MsbtInfo *mMsbts[82];
/* 0x5B0 */ MsbtInfo *field_buf5[23];
/* 0x60C */ MsbfInfo *mMsbfs[80];
/* 0x74C */ void *mOverrideZev0;
/* 0x750 */ void *mOverrideStageZev;
/* 0x754 */ f32 field_0x754;
/* 0x758 */ f32 field_0x758;
/* 0x75C */ f32 field_0x75C;
/* 0x760 */ f32 field_0x760;
/* 0x764 */ f32 field_0x764;
/* 0x768 */ f32 field_0x768;
/* 0x76C */ f32 field_0x76C;
/* 0x770 */ f32 field_0x770;
/* 0x774 */ f32 field_0x774;
/* 0x778 */ f32 field_0x778;
/* 0x77C */ f32 field_0x77C;
/* 0x780 */ f32 field_0x780;
/* 0x784 */ f32 field_0x784;
/* 0x788 */ f32 field_0x788;
/* 0x78C */ f32 field_0x78C;
/* 0x790 */ f32 field_0x790;
/* 0x794 */ s16 field_0x794;
/* 0x796 */ s16 field_0x796;
/* 0x798 */ UNKWORD field_0x798;
/* 0x79C */ UNKWORD field_0x79C;
/* 0x7A0 */ UNKWORD field_0x7A0;
/* 0x7A4 */ s16 field_0x7A4;
/* 0x7A6 */ s16 field_0x7A6;
/* 0x7A8 */ s16 field_0x7A8;
/* 0x7AA */ s16 field_0x7AA;
/* 0x7AC */ s16 field_0x7AC;
/* 0x7AE */ s16 mMsgWindowWaitDelay;
/* 0x7B0 */ s16 field_0x7B0;
/* 0x7B2 */ bool field_0x7B2;
/* 0x7B3 */ bool field_0x7B3;
/* 0x7B4 */ bool mShouldOverrideData;
/* 0x7B5 */ bool field_0x7B5;
/* 0x7B6 */ bool mShouldHookAllocations;
/* 0x7B6 */ bool field_0x7B7;
/* 0x7B8 */ nw4r::ut::Color field_0x7B8;
/* 0x7BC */ nw4r::ut::Color field_0x7BC;
};
#endif