Files
Petari/source/Game/System/ConfigDataMisc.cpp

90 lines
1.8 KiB
C++

#include "Game/System/ConfigDataMisc.hpp"
#include "JSystem/JSupport/JSUMemoryInputStream.hpp"
#include "JSystem/JSupport/JSUMemoryOutputStream.hpp"
ConfigDataMisc::ConfigDataMisc() {
mData = 1;
mLastModified = 0;
initializeData();
}
bool ConfigDataMisc::isLastLoadedMario() const {
return !((mData & 0x1) - 1);
}
void ConfigDataMisc::setLastLoadedMario(bool lastLoaded) {
if (lastLoaded) {
mData |= 0x1;
}
else {
mData &= 0xFE;
}
}
void ConfigDataMisc::onCompleteEndingMario() {
mData |= 0x2;
}
void ConfigDataMisc::onCompleteEndingLuigi() {
mData |= 0x4;
}
bool ConfigDataMisc::isOnCompleteEndingMario() {
return (mData >> 1) & 0x1;
}
bool ConfigDataMisc::isOnCompleteEndingLuigi() {
return (mData >> 2) & 0x1;
}
OSTime ConfigDataMisc::getLastModified() const {
return mLastModified;
}
void ConfigDataMisc::updateLastModified() {
mLastModified = OSGetTime();
}
u32 ConfigDataMisc::makeHeaderHashCode() const {
return 1;
}
u32 ConfigDataMisc::getSignature() const {
return 0x4D495343;
}
s32 ConfigDataMisc::serialize(u8 *pData, u32 len) const {
JSUMemoryOutputStream stream;
stream.setBuffer(pData, len);
u8 stack_8 = mData;
stream.write(&stack_8, 1);
OSTime stack_10 = mLastModified;
stream.write(&stack_10, 8);
return stream.mPosition;
}
s32 ConfigDataMisc::deserialize(const u8 *pData, u32 len) {
initializeData();
JSUMemoryInputStream stream;
stream.setBuffer(pData, len);
u8 stack_8;
stream.read(&stack_8, 1);
mData = stack_8;
if (!stream.getAvailable()) {
mLastModified = 0;
}
else {
OSTime time;
stream.read(&time, 8);
mLastModified = time;
}
return 0;
}
void ConfigDataMisc::initializeData() {
mData = 1;
mLastModified = 0;
}