1#include "Game/System/GameEventFlagStorage.hpp"
2#include "Game/System/GameEventFlagTable.hpp"
3#include "JSystem/JSupport/JSUMemoryOutputStream.hpp"
5GameEventFlagStorage::GameEventFlagStorage() {
6 mFlagBitArray =
nullptr;
7 mFlagBitArray =
new MR::BitArray(GameEventFlagTable::getTableSize());
10void GameEventFlagStorage::set(
const GameEventFlag *pFlag,
bool flag_set) {
11 mFlagBitArray->set(GameEventFlagTable::getIndex(pFlag), flag_set);
14bool GameEventFlagStorage::isOn(
const GameEventFlag *pFlag)
const {
15 return mFlagBitArray->isOn(GameEventFlagTable::getIndex(pFlag));
18u32 GameEventFlagStorage::getSignature()
const {
24s32 GameEventFlagStorage::serialize(u8 *pData, u32 size)
const {
25 JSUMemoryOutputStream stream;
26 stream.setBuffer(pData, size);
28 for (
GameEventFlagIter iter = GameEventFlagTable::getBeginIter(); !iter.isEnd(); iter.goNext()) {
29 if (!(iter.getFlag()->_5 & 0x1)) {
31 s16 hash = MR::getHashCode(accessor.getName()) & 0x7FFF;
32 s16 data = hash | (mFlagBitArray->isOn(GameEventFlagTable::getIndex(iter.getFlag())) ? 0x8000 : 0);
33 stream.write(&data, 2);
37 return stream.mPosition;
43void GameEventFlagStorage::initializeData() {
44 for (
int i = 0; i < mFlagBitArray->mArraySize; i++) {
45 mFlagBitArray->set(i,
false);
49u32 GameEventFlagStorage::makeHeaderHashCode()
const {
50 return MR::getHashCode(
"2bytes/flag");