mirror of
https://github.com/MonsterDruide1/OdysseyDecomp
synced 2026-04-27 19:14:06 +00:00
65 lines
1.8 KiB
C++
65 lines
1.8 KiB
C++
#include "Library/Camera/CameraTicketId.h"
|
|
|
|
#include "Library/Base/StringUtil.h"
|
|
#include "Library/Placement/PlacementId.h"
|
|
#include "Library/Yaml/ByamlUtil.h"
|
|
|
|
namespace al {
|
|
|
|
CameraTicketId::CameraTicketId(const PlacementId* placementId, const char* suffix)
|
|
: mPlacementId(placementId), mSuffix(suffix) {}
|
|
|
|
bool CameraTicketId::isEqual(const CameraTicketId& other) const {
|
|
if (!mPlacementId && other.mPlacementId)
|
|
return false;
|
|
if (mPlacementId && !other.mPlacementId)
|
|
return false;
|
|
|
|
if (!mPlacementId && !other.mPlacementId)
|
|
return isEqualString(mSuffix, other.mSuffix);
|
|
if (!mPlacementId->isEqual(*other.mPlacementId))
|
|
return false;
|
|
|
|
bool noneSuffix = !mSuffix && !other.mSuffix;
|
|
if (mSuffix && other.mSuffix)
|
|
return isEqualString(mSuffix, other.mSuffix);
|
|
|
|
return noneSuffix;
|
|
}
|
|
|
|
bool CameraTicketId::isEqual(const CameraTicketId& ticket1, const CameraTicketId& ticket2) {
|
|
return ticket1.isEqual(ticket2);
|
|
}
|
|
|
|
// NON_MATCHING: https://decomp.me/scratch/4vdbx
|
|
bool CameraTicketId::isEqual(const ByamlIter& iter) const {
|
|
const char* id = getObjId();
|
|
const char* otherId = tryGetByamlKeyStringOrNULL(iter, "ObjId");
|
|
if (id && otherId) {
|
|
if (!isEqualString(id, otherId))
|
|
return false;
|
|
} else if (id || otherId)
|
|
return false;
|
|
|
|
const char* suffix = mSuffix;
|
|
const char* otherSuffix = tryGetByamlKeyStringOrNULL(iter, "Suffix");
|
|
if (suffix && otherSuffix) {
|
|
if (!isEqualString(suffix, otherSuffix))
|
|
return false;
|
|
} else
|
|
return !suffix && !otherSuffix;
|
|
return true;
|
|
}
|
|
|
|
const char* CameraTicketId::tryGetObjId() const {
|
|
if (!mPlacementId)
|
|
return nullptr;
|
|
return mPlacementId->getId();
|
|
}
|
|
|
|
const char* CameraTicketId::getObjId() const {
|
|
return tryGetObjId();
|
|
}
|
|
|
|
} // namespace al
|