Implement/match ViewLODListManager::Create (#611)

* Implement/match ViewLODListManager::Create

* Add stdio.h header

* Add remaining annotations
This commit is contained in:
Christian Semmler
2024-03-01 16:32:10 -05:00
committed by GitHub
parent fb6eed9bff
commit 0067c24ead
4 changed files with 85 additions and 24 deletions

View File

@@ -2,7 +2,15 @@
#include "decomp.h"
DECOMP_SIZE_ASSERT(ViewLODListManager, 0x14);
#include <stdio.h>
DECOMP_SIZE_ASSERT(ViewLODListManager, 0x14)
DECOMP_SIZE_ASSERT(LODListBase, 0x10)
DECOMP_SIZE_ASSERT(LODList<ViewLOD>, 0x10)
DECOMP_SIZE_ASSERT(ViewLODList, 0x18)
// GLOBAL: LEGO1 0x10101064
int g_unk0x10101064 = 0;
// FUNCTION: LEGO1 0x100a6fd0
ViewLODListManager::ViewLODListManager()
@@ -15,7 +23,7 @@ ViewLODListManager::~ViewLODListManager()
// TODO
}
// STUB: LEGO1 0x100a72c0
// FUNCTION: LEGO1 0x100a72c0
ViewLODList* ViewLODListManager::Create(const ROIName& rROIName, int lodCount)
{
// returned ViewLODList has a refCount of 1, i.e. caller must call Release()
@@ -27,12 +35,25 @@ ViewLODList* ViewLODListManager::Create(const ROIName& rROIName, int lodCount)
assert(!Lookup(rROIName));
pLODList = new ViewLODList(lodCount);
pLODList = new ViewLODList(lodCount, this);
refCount = pLODList->AddRef();
assert(refCount == 1);
pROIName = new char[strlen(rROIName) + 1];
strcpy(pROIName, rROIName);
ViewLODList* list = Lookup(rROIName);
if (list != NULL) {
list->Release();
char num[12];
sprintf(num, "%d", g_unk0x10101064);
pROIName = new char[strlen(rROIName) + strlen(num) + 1];
strcpy(pROIName, rROIName);
strcat(pROIName, num);
g_unk0x10101064++;
}
else {
pROIName = new char[strlen(rROIName) + 1];
strcpy(pROIName, rROIName);
}
m_map[pROIName] = pLODList;