Files
ss/include/d/flag/itemflag_manager.h
T
2024-10-25 15:30:28 +02:00

61 lines
1.8 KiB
C++

#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 mItemFlags;
ItemflagManager();
virtual ~ItemflagManager() {}
bool commit();
/** 0x0C */ virtual void initFlagSpace() override {
mpFlagSpace = &mItemFlags;
}
/** 0x10 */ virtual void onDirty() override;
/** 0x14 */ virtual void copyFlagsFromSaveFirstTime();
/** 0x18 */ virtual void setupFlagIndex();
/** 0x1C */ virtual void doCommit() {
u16 sz = mFlagCount;
u16 *flags = mpFlagSpace->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