3#include <egg/core/SceneManager.hh>
5#include <game/field/CollisionDirector.hh>
6#include <game/field/ObjectDirector.hh>
7#include <game/field/ObjectDrivableDirector.hh>
8#include <game/field/RailManager.hh>
10#include <game/item/ItemDirector.hh>
12#include <game/kart/KartObjectManager.hh>
13#include <game/kart/KartParamFileManager.hh>
15#include <game/system/CourseMap.hh>
16#include <game/system/KPadDirector.hh>
17#include <game/system/RaceConfig.hh>
18#include <game/system/RaceManager.hh>
23 m_contextMemory = malloc(MEMORY_SPACE_SIZE);
24 ASSERT(m_contextMemory && EGG::SceneManager::s_rootHeap);
25 memcpy(m_contextMemory, EGG::SceneManager::s_rootHeap, MEMORY_SPACE_SIZE);
27 m_ptrs.m_rootList = Abstract::Memory::MEMiHeapHead::s_rootList;
29 m_ptrs.m_heapList = EGG::Heap::s_heapList;
30 m_ptrs.m_currentHeap = EGG::Heap::s_currentHeap;
31 m_ptrs.m_heapForCreateScene = EGG::SceneManager::s_heapForCreateScene;
32 m_ptrs.m_boxColMgr = Field::BoxColManager::s_instance;
33 m_ptrs.m_colDir = Field::CollisionDirector::s_instance;
34 m_ptrs.m_courseColMgr = Field::CourseColMgr::s_instance;
35 m_ptrs.m_objDir = Field::ObjectDirector::s_instance;
36 m_ptrs.m_objDrivableDir = Field::ObjectDrivableDirector::s_instance;
37 m_ptrs.m_railMgr = Field::RailManager::s_instance;
38 m_ptrs.m_itemDir = Item::ItemDirector::s_instance;
39 m_ptrs.m_kartObjMgr = Kart::KartObjectManager::s_instance;
40 m_ptrs.m_paramFileMgr = Kart::KartParamFileManager::s_instance;
41 m_ptrs.m_courseMap = System::CourseMap::s_instance;
42 m_ptrs.m_padDir = System::KPadDirector::s_instance;
43 m_ptrs.m_raceConfig = System::RaceConfig::s_instance;
46 m_ptrs.m_raceMgr = System::RaceManager::s_instance;
47 m_ptrs.m_resMgr = System::ResourceManager::s_instance;
50Context::Context(
const Context &c) {
51 m_contextMemory = malloc(MEMORY_SPACE_SIZE);
52 ASSERT(m_contextMemory && c.m_contextMemory);
53 memcpy(m_contextMemory, c.m_contextMemory, MEMORY_SPACE_SIZE);
59 m_contextMemory = c.m_contextMemory;
60 c.m_contextMemory =
nullptr;
66 free(m_contextMemory);
69Context &Context::operator=(
const Context &rhs) {
74 ASSERT(m_contextMemory && rhs.m_contextMemory && m_contextMemory != rhs.m_contextMemory);
75 memcpy(m_contextMemory, rhs.m_contextMemory, MEMORY_SPACE_SIZE);
81Context &Context::operator=(Context &&rhs) {
82 free(m_contextMemory);
83 m_contextMemory = rhs.m_contextMemory;
84 rhs.m_contextMemory =
nullptr;
91bool Context::operator==(
const Context &rhs)
const {
92 bool ret = m_contextMemory == rhs.m_contextMemory;
93 ret = ret && m_ptrs.m_rootList == rhs.m_ptrs.m_rootList;
94 ret = ret && m_ptrs.m_archiveList == rhs.m_ptrs.m_archiveList;
95 ret = ret && m_ptrs.m_heapList == rhs.m_ptrs.m_heapList;
96 ret = ret && m_ptrs.m_currentHeap == rhs.m_ptrs.m_currentHeap;
97 ret = ret && m_ptrs.m_heapForCreateScene == rhs.m_ptrs.m_heapForCreateScene;
98 ret = ret && m_ptrs.m_boxColMgr == rhs.m_ptrs.m_boxColMgr;
99 ret = ret && m_ptrs.m_colDir == rhs.m_ptrs.m_colDir;
100 ret = ret && m_ptrs.m_courseColMgr == rhs.m_ptrs.m_courseColMgr;
101 ret = ret && m_ptrs.m_objDir == rhs.m_ptrs.m_objDir;
102 ret = ret && m_ptrs.m_objDrivableDir == rhs.m_ptrs.m_objDrivableDir;
103 ret = ret && m_ptrs.m_railMgr == rhs.m_ptrs.m_railMgr;
104 ret = ret && m_ptrs.m_itemDir == rhs.m_ptrs.m_itemDir;
105 ret = ret && m_ptrs.m_kartObjMgr == rhs.m_ptrs.m_kartObjMgr;
106 ret = ret && m_ptrs.m_paramFileMgr == rhs.m_ptrs.m_paramFileMgr;
107 ret = ret && m_ptrs.m_courseMap == rhs.m_ptrs.m_courseMap;
108 ret = ret && m_ptrs.m_padDir == rhs.m_ptrs.m_padDir;
109 ret = ret && m_ptrs.m_raceConfig == rhs.m_ptrs.m_raceConfig;
110 ret = ret && m_ptrs.m_onInitCallbackArg == rhs.m_ptrs.m_onInitCallbackArg;
111 ret = ret && m_ptrs.m_raceMgr == rhs.m_ptrs.m_raceMgr;
112 ret = ret && m_ptrs.m_resMgr == rhs.m_ptrs.m_resMgr;
117void Context::SetActiveContext(
const Context &rhs) {
118 ASSERT(EGG::SceneManager::s_rootHeap && rhs.m_contextMemory);
119 memcpy(
reinterpret_cast<void *
>(EGG::SceneManager::s_rootHeap), rhs.m_contextMemory,
122 Abstract::Memory::MEMiHeapHead::s_rootList = rhs.m_ptrs.m_rootList;
124 EGG::Heap::s_heapList = rhs.m_ptrs.m_heapList;
125 EGG::Heap::s_currentHeap = rhs.m_ptrs.m_currentHeap;
126 EGG::SceneManager::s_heapForCreateScene = rhs.m_ptrs.m_heapForCreateScene;
127 Field::BoxColManager::s_instance = rhs.m_ptrs.m_boxColMgr;
128 Field::CollisionDirector::s_instance = rhs.m_ptrs.m_colDir;
129 Field::CourseColMgr::s_instance = rhs.m_ptrs.m_courseColMgr;
130 Field::ObjectDirector::s_instance = rhs.m_ptrs.m_objDir;
131 Field::ObjectDrivableDirector::s_instance = rhs.m_ptrs.m_objDrivableDir;
132 Field::RailManager::s_instance = rhs.m_ptrs.m_railMgr;
133 Item::ItemDirector::s_instance = rhs.m_ptrs.m_itemDir;
134 Kart::KartObjectManager::s_instance = rhs.m_ptrs.m_kartObjMgr;
135 Kart::KartParamFileManager::s_instance = rhs.m_ptrs.m_paramFileMgr;
136 System::CourseMap::s_instance = rhs.m_ptrs.m_courseMap;
137 System::KPadDirector::s_instance = rhs.m_ptrs.m_padDir;
138 System::RaceConfig::s_instance = rhs.m_ptrs.m_raceConfig;
141 System::RaceManager::s_instance = rhs.m_ptrs.m_raceMgr;
142 System::ResourceManager::s_instance = rhs.m_ptrs.m_resMgr;
static Abstract::Memory::MEMList s_archiveList
The linked list of all mounted archives.
Contexts can be used to restore a previous memory state for the current session.
static void * s_onInitCallbackArg
The argument sent into the callback. This is expected to be reinterpret_casted.
static InitCallback s_onInitCallback
Host-agnostic way of initializing RaceConfig. The type of the first player must be set to either Loca...
Represents the host application.