Files
tww/src/JSystem/JAudio/JAIDummyObject.cpp
T
2024-01-07 00:51:09 -08:00

97 lines
3.3 KiB
C++

//
// Generated by dtk
// Translation Unit: JAIDummyObject.cpp
//
#include "JSystem/JAudio/JAIDummyObject.h"
#include "JSystem/JAudio/JAIBasic.h"
#include "JSystem/JAudio/JAIGlobalParameter.h"
#include "JSystem/JAudio/JAISound.h"
#include "JSystem/JKernel/JKRSolidHeap.h"
JAInter::DummyVec* JAInter::DummyObjectMgr::deadObjectFreePointer;
JAInter::DummyVec* JAInter::DummyObjectMgr::deadObjectUsedPointer;
JAInter::DummyVec* JAInter::DummyObjectMgr::deadObjectObject;
/* 802919A0-80291B40 .text init__Q27JAInter14DummyObjectMgrFv */
void JAInter::DummyObjectMgr::init() {
deadObjectObject = new (JAIBasic::getCurrentJAIHeap(), 0x20) DummyVec[JAIGlobalParameter::getParamDummyObjectMax()];
JUT_ASSERT_MSG(37, deadObjectObject, "JAIDummyObjectMgr::init Cannot Alloc Heap!!\n");
deadObjectFreePointer = deadObjectObject;
deadObjectUsedPointer = NULL;
deadObjectObject[0].field_0x0 = NULL;
deadObjectObject[0].field_0x4 = deadObjectObject + 1;
int i;
for (i = 1; i < JAIGlobalParameter::getParamDummyObjectMax() - 1; i++) {
deadObjectObject[i].field_0x0 = deadObjectObject + (i - 1);
deadObjectObject[i].field_0x4 = deadObjectObject + (i + 1);
}
deadObjectObject[i].field_0x0 = deadObjectObject + (i - 1);
deadObjectObject[i].field_0x4 = NULL;
}
/* 80291B40-80291BAC .text getPointer__Q27JAInter14DummyObjectMgrFUlb */
JAInter::DummyVec* JAInter::DummyObjectMgr::getPointer(u32 param_1, bool param_2) {
DummyVec** r5 = &deadObjectFreePointer;
DummyVec** r6 = &deadObjectUsedPointer;
DummyVec* r7;
if (deadObjectFreePointer) {
r7 = *r5;
*r5 = r7->field_0x4;
if (*r6) {
r7->field_0x4 = *r6;
(*r6)->field_0x0 = r7;
} else {
r7->field_0x4 = NULL;
}
r7->field_0x0 = NULL;
*r6 = r7;
r7->field_0x18 = param_1;
r7->field_0x1c = param_2;
r7->field_0x8 = NULL;
} else {
r7 = NULL;
}
return r7;
}
/* 80291BAC-80291C20 .text releasePointer__Q27JAInter14DummyObjectMgrFPQ27JAInter8DummyVec */
void JAInter::DummyObjectMgr::releasePointer(DummyVec* param_1) {
DummyVec** r5 = &deadObjectFreePointer;
DummyVec** r4 = &deadObjectUsedPointer;
if (deadObjectUsedPointer != param_1) {
param_1->field_0x0->field_0x4 = param_1->field_0x4;
if (param_1->field_0x4) {
param_1->field_0x4->field_0x0 = param_1->field_0x0;
}
} else {
*r4 = param_1->field_0x4;
if (param_1->field_0x4) {
param_1->field_0x4->field_0x0 = NULL;
}
}
param_1->field_0x4 = *r5;
if (param_1->field_0x4) {
param_1->field_0x4->field_0x0 = param_1;
}
*r5 = param_1;
}
/* 80291C20-80291CCC .text check__Q27JAInter14DummyObjectMgrFv */
void JAInter::DummyObjectMgr::check() {
DummyVec* r31 = deadObjectUsedPointer;
while (r31) {
DummyVec* r30 = r31->field_0x4;
r31->field_0x18--;
if (r31->field_0x18 == 0 || (!r31->field_0x1c && r31->field_0x8 == NULL)) {
if (r31->field_0x1c == true) {
JAIBasic::getInterface()->stopAllSound(&r31->field_0xc);
} else if (r31->field_0x8) {
r31->field_0x8->stop(0);
}
releasePointer(r31);
}
r31 = r30;
}
}