diff --git a/data/file_list.yml b/data/file_list.yml index fa6390cb29..596a3655af 100644 --- a/data/file_list.yml +++ b/data/file_list.yml @@ -297741,15 +297741,15 @@ Unknown/ActorItemInfo.o: label: - _ZN2al13ActorItemInfoC1EPKcS2_S2_i - _ZN2al13ActorItemInfoC2EPKcS2_S2_i - status: NotDecompiled + status: Matching - offset: 0xa94110 size: 40 label: _ZNK2al13ActorItemInfo13isEqualTimingEPKc - status: NotDecompiled + status: Matching - offset: 0xa94138 size: 40 label: _ZNK2al13ActorItemInfo13isEqualFactorEPKc - status: NotDecompiled + status: Matching Unknown/RollingCubePose.o: '.text': - offset: 0xa94160 diff --git a/lib/al/Library/Item/ActorItemInfo.cpp b/lib/al/Library/Item/ActorItemInfo.cpp new file mode 100644 index 0000000000..3562a476e2 --- /dev/null +++ b/lib/al/Library/Item/ActorItemInfo.cpp @@ -0,0 +1,27 @@ +#include "Library/Item/ActorItemInfo.h" + +#include "Library/Base/StringUtil.h" + +namespace al { + +ActorItemInfo::ActorItemInfo(const char* name, const char* timing, const char* factor, s32 value) { + mName = name; + mTiming = timing; + mFactor = factor; + _18 = 0; + mValue = value; +} + +bool ActorItemInfo::isEqualTiming(const char* timing) const { + if (timing != nullptr && mTiming != nullptr) + return isEqualString(timing, mTiming); + return timing == nullptr && mTiming == nullptr; +} + +bool ActorItemInfo::isEqualFactor(const char* factor) const { + if (factor != nullptr && mFactor != nullptr) + return isEqualString(factor, mFactor); + return factor == nullptr && mFactor == nullptr; +} + +} // namespace al diff --git a/lib/al/Library/Item/ActorItemInfo.h b/lib/al/Library/Item/ActorItemInfo.h new file mode 100644 index 0000000000..61a13f7055 --- /dev/null +++ b/lib/al/Library/Item/ActorItemInfo.h @@ -0,0 +1,24 @@ +#pragma once + +#include + +namespace al { + +class ActorItemInfo { +public: + ActorItemInfo(const char* name, const char* timing, const char* factor, s32 value); + + bool isEqualTiming(const char* timing) const; + bool isEqualFactor(const char* factor) const; + +private: + const char* mName; + const char* mTiming; + const char* mFactor; + s32 _18; + s32 mValue; +}; + +static_assert(sizeof(ActorItemInfo) == 0x20); + +} // namespace al