mirror of
https://github.com/isledecomp/isle-portable.git
synced 2024-12-20 21:02:28 -05:00
b5fee6b240
* Complete `LegoCarBuildAnimPresenter` * fix CI errors * Drive-by BETA10 fixes * Address review comments --------- Co-authored-by: jonschz <jonschz@users.noreply.github.com>
101 lines
2.5 KiB
C++
101 lines
2.5 KiB
C++
#ifndef __LEGOTREE_H
|
|
#define __LEGOTREE_H
|
|
|
|
#ifdef _DEBUG
|
|
#include <stdio.h>
|
|
#endif
|
|
#include "legotypes.h"
|
|
|
|
class LegoStorage;
|
|
|
|
// VTABLE: LEGO1 0x100db778
|
|
// SIZE 0x04
|
|
class LegoTreeNodeData {
|
|
public:
|
|
LegoTreeNodeData() {}
|
|
|
|
// FUNCTION: LEGO1 0x1009a0e0
|
|
virtual ~LegoTreeNodeData() {}
|
|
|
|
// FUNCTION: LEGO1 0x10099fe0
|
|
virtual LegoResult Read(LegoStorage* p_storage) { return SUCCESS; } // vtable+0x04
|
|
|
|
// FUNCTION: LEGO1 0x10099ff0
|
|
virtual LegoResult Write(LegoStorage* p_storage) { return SUCCESS; } // vtable+0x08
|
|
|
|
// SYNTHETIC: LEGO1 0x1009a000
|
|
// LegoTreeNodeData::`scalar deleting destructor'
|
|
};
|
|
|
|
// VTABLE: LEGO1 0x100db764
|
|
// VTABLE: BETA10 0x101c37f4
|
|
// SIZE 0x10
|
|
class LegoTreeNode {
|
|
public:
|
|
LegoTreeNode();
|
|
virtual ~LegoTreeNode();
|
|
|
|
// FUNCTION: BETA10 0x100595a0
|
|
LegoTreeNodeData* GetData() { return m_data; }
|
|
|
|
// FUNCTION: BETA10 0x100736f0
|
|
void SetData(LegoTreeNodeData* p_data) { m_data = p_data; }
|
|
|
|
// FUNCTION: BETA10 0x10012150
|
|
LegoU32 GetNumChildren() { return m_numChildren; }
|
|
|
|
// FUNCTION: BETA10 0x10073370
|
|
void SetNumChildren(LegoU32 p_numChildren) { m_numChildren = p_numChildren; }
|
|
|
|
// FUNCTION: BETA10 0x10012180
|
|
LegoTreeNode* GetChild(LegoU32 p_i) { return m_children[p_i]; }
|
|
|
|
void SetChild(LegoU32 p_i, LegoTreeNode* p_child) { m_children[p_i] = p_child; }
|
|
|
|
// FUNCTION: BETA10 0x100733a0
|
|
LegoTreeNode** GetChildren() { return m_children; }
|
|
|
|
// FUNCTION: BETA10 0x10073720
|
|
void SetChildren(LegoTreeNode** p_children) { m_children = p_children; }
|
|
|
|
// SYNTHETIC: LEGO1 0x10099d80
|
|
// SYNTHETIC: BETA10 0x10188cb0
|
|
// LegoTreeNode::`scalar deleting destructor'
|
|
|
|
protected:
|
|
LegoTreeNodeData* m_data; // 0x04
|
|
LegoU32 m_numChildren; // 0x08
|
|
LegoTreeNode** m_children; // 0x0c
|
|
};
|
|
|
|
// VTABLE: LEGO1 0x100db768
|
|
// SIZE 0x08
|
|
class LegoTree {
|
|
public:
|
|
LegoTree();
|
|
virtual ~LegoTree();
|
|
|
|
// FUNCTION: BETA10 0x100121b0
|
|
LegoTreeNode* GetRoot() { return m_root; }
|
|
|
|
// FUNCTION: BETA10 0x10073750
|
|
void SetRoot(LegoTreeNode* p_root) { m_root = p_root; }
|
|
|
|
virtual LegoResult Read(LegoStorage* p_storage); // vtable+0x04
|
|
virtual LegoResult Write(LegoStorage* p_storage); // vtable+0x08
|
|
|
|
// SYNTHETIC: LEGO1 0x10099de0
|
|
// LegoTree::`scalar deleting destructor'
|
|
|
|
protected:
|
|
LegoResult Read(LegoStorage* p_storage, LegoTreeNode*& p_node);
|
|
LegoResult Write(LegoStorage* p_storage, LegoTreeNode* p_node);
|
|
void Delete(LegoTreeNode* p_node);
|
|
|
|
// FUNCTION: LEGO1 0x10099f70
|
|
virtual LegoTreeNodeData* CreateData() { return new LegoTreeNodeData(); } // vtable+0x0c
|
|
|
|
LegoTreeNode* m_root; // 0x04
|
|
};
|
|
|
|
#endif // __LEGOTREE_H
|