Separate our inc files

This commit is contained in:
robojumper
2024-10-25 14:36:31 +02:00
parent 5e73b2b902
commit 50b16f7da4
51 changed files with 690 additions and 656 deletions
+47
View File
@@ -0,0 +1,47 @@
#ifndef D_FLAG_BASEFLAG_MANAGER_H
#define D_FLAG_BASEFLAG_MANAGER_H
#include "d/flag/unk_flag_stuff.h"
#include "d/flag/flag_space.h"
class ItemStoryManagerBase {
public:
ItemStoryManagerBase();
/** 0x08 */ virtual ~ItemStoryManagerBase();
/** 0x0C */ virtual void setFlagszptr();
/** 0x10 */ virtual void onDirty();
/** 0x14 */ virtual void copyFlagsFromSave() = 0;
/** 0x18 */ virtual void setupUnkFlagsStuff() = 0;
/** 0x1C */ virtual void doCommit() = 0;
/** 0x20 */ virtual void setFlag(u16 flag);
/** 0x24 */ virtual void unsetFlag(u16 flag);
/** 0x28 */ virtual void setFlagOrCounterToValue(u16 flag, u16 value);
/** 0x2C */ virtual u16 getCounterOrFlag(u16 flag) const;
/** 0x30 */ virtual u16 getUncommittedValue(u16 flag);
/** 0x34 */ virtual u16 unk3(u16 arg);
/** 0x38 */ virtual const u16 *getSaveFlagSpace() const = 0;
void init();
void setFlagSizes(u16 flagSizeMaybe, u16 anotherFlagSizeMaybe);
void copyFlagsFromSave_Priv();
void setupUnkFlagStuff(UnkFlagDefinition *def, u16 count);
void doCommit_Priv();
void setOrClearFlag(u16 flag, u16 value);
u16 getFlag(u16 flag) const;
void FUN_800bf610(u16 flag);
u16 FUN_800bf640(u16 flag);
void FUN_800bf690();
u16 getUncommittedValue_Priv(u16 flag);
protected:
/** 0x04 */ u16 flagSizeMaybe;
/** 0x06 */ u16 anotherSizeMaybe;
/** 0x08 */ FlagSpace *storyFlagsPtr;
/** 0x0C */ UnkFlagStuff *unkFlagsPtr;
/** 0x10 */ bool dirty;
};
#endif
+23
View File
@@ -0,0 +1,23 @@
#ifndef D_FLAG_COMMITTABLE_FLAG_MANAGER_H
#define D_FLAG_COMMITTABLE_FLAG_MANAGER_H
class CommittableFlagManager {
public:
bool mNeedsCommit;
virtual void doCommit() = 0;
virtual ~CommittableFlagManager() {}
bool commitIfNecessary();
void setNeedsCommit(bool commit) {
mNeedsCommit = commit;
}
CommittableFlagManager() {
mNeedsCommit = false;
}
CommittableFlagManager(bool commit) {
mNeedsCommit = commit;
}
};
#endif
+41
View File
@@ -0,0 +1,41 @@
#ifndef D_FLAG_ENEMYFLAG_MANAGER_H
#define D_FLAG_ENEMYFLAG_MANAGER_H
#include "d/flag/bitwise_flag_helper.h"
#include "d/flag/committable_flag_manager.h"
#include "d/flag/flag_space.h"
#include "toBeSorted/file_manager.h"
class EnemyDefeatManager : public CommittableFlagManager {
public:
FlagSpace mFlagSpace;
BitwiseFlagHelper mFlagHelper;
u16 mSceneIndex;
static u16 sEnemyDefeatFlags[4096];
static EnemyDefeatManager *sInstance;
void clearSavedFlags();
bool checkUncommittedFlag(u16 flag);
u16 checkUncommittedFlag2(u16 flag) {
return checkUncommittedFlag(flag);
}
EnemyDefeatManager();
void init();
void copyFromSave(u16 sceneIndex);
void updateFlagIndex(u16 sceneIndex);
void clearAll();
bool checkIsValidFlag(u16 flag);
bool checkFlag(u16 flag);
virtual ~EnemyDefeatManager() {}
virtual u16 getFlagCount() const;
void setFlag(u16 flag);
virtual void doCommit() override {
FileManager *mgr = FileManager::sInstance;
mgr->setEnemyDefeatFlags(mFlagSpace.getFlagPtrUnchecked(), 0, 0x1000);
};
};
#endif
+60
View File
@@ -0,0 +1,60 @@
#ifndef D_FLAG_ITEMFLAG_MANAGER_H
#define D_FLAG_ITEMFLAG_MANAGER_H
#include "d/flag/baseflag_manager.h"
#include "toBeSorted/file_manager.h"
class ItemflagManager : public ItemStoryManagerBase {
public:
FlagSpace itemFlags;
ItemflagManager();
virtual ~ItemflagManager() {}
bool commit();
/** 0x0C */ virtual void setFlagszptr() override {
storyFlagsPtr = &itemFlags;
}
/** 0x10 */ virtual void onDirty() override;
/** 0x14 */ virtual void copyFlagsFromSave();
/** 0x18 */ virtual void setupUnkFlagsStuff();
/** 0x1C */ virtual void doCommit() {
u16 sz = flagSizeMaybe;
u16 *flags = storyFlagsPtr->getFlagPtrUnchecked();
FileManager::sInstance->setItemFlags(flags, 0, sz);
}
/** 0x20 */ virtual void setFlag(u16 flag) {
ItemStoryManagerBase::setFlag(flag & ~0x4000);
}
/** 0x24 */ virtual void unsetFlag(u16 flag) {
ItemStoryManagerBase::unsetFlag(flag & ~0x4000);
}
/** 0x28 */ virtual void setFlagOrCounterToValue(u16 flag, u16 value) {
ItemStoryManagerBase::setFlagOrCounterToValue(flag & ~0x4000, value);
}
/** 0x2C */ virtual u16 getCounterOrFlag(u16 flag) const {
return ItemStoryManagerBase::getCounterOrFlag(flag & ~0x4000);
}
/** 0x30 */ virtual u16 getUncommittedValue(u16 flag) {
return ItemStoryManagerBase::getUncommittedValue(flag & ~0x4000);
}
/** 0x34 */ virtual u16 unk3(u16 arg) {
return ItemStoryManagerBase::unk3(arg & ~0x4000);
}
/** 0x38 */ virtual const u16 *getSaveFlagSpace() const {
return FileManager::sInstance->getItemFlagsConst();
};
u16 getFlagDirect(u16 flag) {
return ItemStoryManagerBase::getCounterOrFlag(flag);
}
public:
static ItemflagManager *sInstance;
static u16 sFlags[0x40];
};
#endif
@@ -2,8 +2,8 @@
#define SCENEFLAG_MANAGER_H
#include "common.h"
#include "toBeSorted/bitwise_flag_helper.h"
#include "toBeSorted/flag_space.h"
#include "d/flag/bitwise_flag_helper.h"
#include "d/flag/flag_space.h"
class SceneflagManager {
+29
View File
@@ -0,0 +1,29 @@
#ifndef D_FLAG_SKIPFLAG_MANAGER_H
#define D_FLAG_SKIPFLAG_MANAGER_H
#include "d/flag/bitwise_flag_helper.h"
#include "d/flag/flag_space.h"
class SkipflagManager {
public:
SkipflagManager();
void init();
void copyFromSave();
void setCommitFlag(u16 flag);
void thunk_copyFromSave();
void setFlag(u16 flag);
bool checkFlag(u16 flag);
bool commitFlags();
static SkipflagManager *sInstance;
private:
static u16 sSkipFlags[16];
bool mShouldCommit;
BitwiseFlagHelper mFlagHelper;
FlagSpace mFlagSpace;
};
#endif
+38
View File
@@ -0,0 +1,38 @@
#ifndef D_FLAG_STORYFLAG_MANAGER_H
#define D_FLAG_STORYFLAG_MANAGER_H
#include "d/flag/baseflag_manager.h"
#include "toBeSorted/file_manager.h"
class StoryflagManager : public ItemStoryManagerBase {
public:
StoryflagManager();
virtual ~StoryflagManager() {}
FlagSpace storyFlags;
bool commit();
/** 0x0C */ virtual void setFlagszptr() override {
storyFlagsPtr = &storyFlags;
}
/** 0x10 */ virtual void onDirty() override;
/** 0x14 */ virtual void copyFlagsFromSave() override;
/** 0x18 */ virtual void setupUnkFlagsStuff() override;
/** 0x1C */ virtual void doCommit() override {
u16 sz = flagSizeMaybe;
u16 *flags = storyFlagsPtr->getFlagPtrUnchecked();
FileManager::sInstance->setStoryFlags(flags, 0, sz);
}
/** 0x24 */ virtual void unsetFlag(u16 flag) override;
/** 0x38 */ virtual const u16 *getSaveFlagSpace() const override {
return FileManager::sInstance->getStoryFlagsConst();
};
public:
static StoryflagManager *sInstance;
static u16 sFlags[0x80];
};
#endif
+33
View File
@@ -0,0 +1,33 @@
#ifndef D_FLAG_TBOXFLAG_MANAGER_H
#define D_FLAG_TBOXFLAG_MANAGER_H
#include "d/flag/bitwise_flag_helper.h"
#include "d/flag/committable_flag_manager.h"
#include "d/flag/flag_space.h"
class TBoxFlagManager : public CommittableFlagManager {
public:
FlagSpace mFlagSpace;
u16 mSceneIndex;
BitwiseFlagHelper mFlagHelper;
static u16 sTBoxFlags[2];
static TBoxFlagManager *sInstance;
virtual void doCommit() override;
bool checkUncommittedFlag(u16 flag);
TBoxFlagManager();
virtual ~TBoxFlagManager() {}
void init();
void copyFromSave(u32 sceneIndex);
bool checkFlag(u16 sceneIndex, u16 flag);
virtual u16 getFlagCount() const;
void setFlag(u16 flag);
bool checkUncommittedFlag(u16 sceneIndex, u16 flag);
u16 checkUncommittedFlag2(u16 flag) {
return checkUncommittedFlag(flag);
}
};
#endif
@@ -1,137 +0,0 @@
#ifndef ITEM_STORY_FLAG_MANAGER_H
#define ITEM_STORY_FLAG_MANAGER_H
#include "toBeSorted/flag_space.h"
#include "toBeSorted/unk_flag_stuff.h"
#include "toBeSorted/file_manager.h"
// TODO These classes have an interesting relation and there are like 5 vtables, so
// the stuff in this header should not be relied upon for actually implementing these,
// but we need the interface
class ItemStoryManagerBase {
public:
ItemStoryManagerBase();
/** 0x08 */ virtual ~ItemStoryManagerBase();
/** 0x0C */ virtual void setFlagszptr();
/** 0x10 */ virtual void onDirty();
/** 0x14 */ virtual void copyFlagsFromSave() = 0;
/** 0x18 */ virtual void setupUnkFlagsStuff() = 0;
/** 0x1C */ virtual void doCommit() = 0;
/** 0x20 */ virtual void setFlag(u16 flag);
/** 0x24 */ virtual void unsetFlag(u16 flag);
/** 0x28 */ virtual void setFlagOrCounterToValue(u16 flag, u16 value);
/** 0x2C */ virtual u16 getCounterOrFlag(u16 flag) const;
/** 0x30 */ virtual u16 getUncommittedValue(u16 flag);
/** 0x34 */ virtual u16 unk3(u16 arg);
/** 0x38 */ virtual const u16 *getSaveFlagSpace() const = 0;
void init();
void setFlagSizes(u16 flagSizeMaybe, u16 anotherFlagSizeMaybe);
void copyFlagsFromSave_Priv();
void setupUnkFlagStuff(UnkFlagDefinition *def, u16 count);
void doCommit_Priv();
void setOrClearFlag(u16 flag, u16 value);
u16 getFlag(u16 flag) const;
void FUN_800bf610(u16 flag);
u16 FUN_800bf640(u16 flag);
void FUN_800bf690();
u16 getUncommittedValue_Priv(u16 flag);
protected:
/** 0x04 */ u16 flagSizeMaybe;
/** 0x06 */ u16 anotherSizeMaybe;
/** 0x08 */ FlagSpace *storyFlagsPtr;
/** 0x0C */ UnkFlagStuff *unkFlagsPtr;
/** 0x10 */ bool dirty;
};
class StoryflagManager : public ItemStoryManagerBase {
public:
StoryflagManager();
virtual ~StoryflagManager() {}
FlagSpace storyFlags;
bool commit();
/** 0x0C */ virtual void setFlagszptr() override {
storyFlagsPtr = &storyFlags;
}
/** 0x10 */ virtual void onDirty() override;
/** 0x14 */ virtual void copyFlagsFromSave() override;
/** 0x18 */ virtual void setupUnkFlagsStuff() override;
/** 0x1C */ virtual void doCommit() override {
u16 sz = flagSizeMaybe;
u16 *flags = storyFlagsPtr->getFlagPtrUnchecked();
FileManager::sInstance->setStoryFlags(flags, 0, sz);
}
/** 0x24 */ virtual void unsetFlag(u16 flag) override;
/** 0x38 */ virtual const u16 *getSaveFlagSpace() const override {
return FileManager::sInstance->getStoryFlagsConst();
};
public:
static StoryflagManager *sInstance;
static u16 sFlags[0x80];
};
class ItemflagManager : public ItemStoryManagerBase {
public:
FlagSpace itemFlags;
ItemflagManager();
virtual ~ItemflagManager() {}
bool commit();
/** 0x0C */ virtual void setFlagszptr() override {
storyFlagsPtr = &itemFlags;
}
/** 0x10 */ virtual void onDirty() override;
/** 0x14 */ virtual void copyFlagsFromSave();
/** 0x18 */ virtual void setupUnkFlagsStuff();
/** 0x1C */ virtual void doCommit() {
u16 sz = flagSizeMaybe;
u16 *flags = storyFlagsPtr->getFlagPtrUnchecked();
FileManager::sInstance->setItemFlags(flags, 0, sz);
}
/** 0x20 */ virtual void setFlag(u16 flag) {
ItemStoryManagerBase::setFlag(flag & ~0x4000);
}
/** 0x24 */ virtual void unsetFlag(u16 flag) {
ItemStoryManagerBase::unsetFlag(flag & ~0x4000);
}
/** 0x28 */ virtual void setFlagOrCounterToValue(u16 flag, u16 value) {
ItemStoryManagerBase::setFlagOrCounterToValue(flag & ~0x4000, value);
}
/** 0x2C */ virtual u16 getCounterOrFlag(u16 flag) const {
return ItemStoryManagerBase::getCounterOrFlag(flag & ~0x4000);
}
/** 0x30 */ virtual u16 getUncommittedValue(u16 flag) {
return ItemStoryManagerBase::getUncommittedValue(flag & ~0x4000);
}
/** 0x34 */ virtual u16 unk3(u16 arg) {
return ItemStoryManagerBase::unk3(arg & ~0x4000);
}
/** 0x38 */ virtual const u16 *getSaveFlagSpace() const {
return FileManager::sInstance->getItemFlagsConst();
};
u16 getFlagDirect(u16 flag) {
return ItemStoryManagerBase::getCounterOrFlag(flag);
}
public:
static ItemflagManager *sInstance;
static u16 sFlags[0x40];
};
#endif
-87
View File
@@ -1,87 +0,0 @@
#ifndef MISC_FLAG_MANAGERS_H
#define MISC_FLAG_MANAGERS_H
#include "common.h"
#include "toBeSorted/bitwise_flag_helper.h"
#include "toBeSorted/flag_space.h"
#include "toBeSorted/file_manager.h"
class CommittableFlagManager {
public:
bool mNeedsCommit;
virtual void doCommit() = 0;
virtual ~CommittableFlagManager() {}
bool commitIfNecessary();
void setNeedsCommit(bool commit) {
mNeedsCommit = commit;
}
CommittableFlagManager() {
mNeedsCommit = false;
}
CommittableFlagManager(bool commit) {
mNeedsCommit = commit;
}
};
class TBoxFlagManager : public CommittableFlagManager {
public:
FlagSpace mFlagSpace;
u16 mSceneIndex;
BitwiseFlagHelper mFlagHelper;
static u16 sTBoxFlags[2];
static TBoxFlagManager *sInstance;
virtual void doCommit() override;
bool checkUncommittedFlag(u16 flag);
TBoxFlagManager();
virtual ~TBoxFlagManager() {}
void init();
void copyFromSave(u32 sceneIndex);
bool checkFlag(u16 sceneIndex, u16 flag);
virtual u16 getFlagCount() const;
void setFlag(u16 flag);
bool checkUncommittedFlag(u16 sceneIndex, u16 flag);
u16 checkUncommittedFlag2(u16 flag) {
return checkUncommittedFlag(flag);
}
};
// NOTE: Not actually Enemy Defeat.
// This is a little more than that, it keeps track of live objects based on their id as a whole
class EnemyDefeatManager : public CommittableFlagManager {
public:
FlagSpace mFlagSpace;
BitwiseFlagHelper mFlagHelper;
u16 mSceneIndex;
static u16 sEnemyDefeatFlags[4096];
static EnemyDefeatManager *sInstance;
void clearSavedFlags();
bool checkUncommittedFlag(u16 flag);
u16 checkUncommittedFlag2(u16 flag) {
return checkUncommittedFlag(flag);
}
EnemyDefeatManager();
void init();
void copyFromSave(u16 sceneIndex);
void updateFlagIndex(u16 sceneIndex);
void clearAll();
bool checkIsValidFlag(u16 flag);
bool checkFlag(u16 flag);
virtual ~EnemyDefeatManager() {}
virtual u16 getFlagCount() const;
void setFlag(u16 flag);
virtual void doCommit() override {
FileManager *mgr = FileManager::sInstance;
mgr->setEnemyDefeatFlags(mFlagSpace.getFlagPtrUnchecked(), 0, 0x1000);
};
};
#endif