Fixes
This commit is contained in:
@ -44,27 +44,32 @@ namespace ia::iae
|
||||
|
||||
namespace ia::iae
|
||||
{
|
||||
SceneManager::SceneManager(
|
||||
IN std::function<RefPtr<Node2D>(IN CONST String &, IN CONST Vector<String> &)> getCustomNode,
|
||||
IN std::function<Handle(IN ResourceType type, IN CONST String &, IN INT64)> getResource)
|
||||
: m_customNodeGetter(getCustomNode), m_resourceGetter(getResource)
|
||||
{
|
||||
Map<String, Scene *> SceneManager::s_scenes;
|
||||
std::function<RefPtr<Node2D>(IN CONST String &, IN CONST Vector<String> &)> SceneManager::s_customNodeGetter;
|
||||
std::function<Handle(IN ResourceType type, IN CONST String &, IN INT64)> SceneManager::s_resourceGetter;
|
||||
|
||||
VOID SceneManager::Initialize(){}
|
||||
VOID SceneManager::Terminate(){
|
||||
for (const auto &t : s_scenes)
|
||||
delete t->Value;
|
||||
}
|
||||
|
||||
SceneManager::~SceneManager()
|
||||
VOID SceneManager::Setup(
|
||||
IN std::function<RefPtr<Node2D>(IN CONST String &, IN CONST Vector<String> &)> getCustomNode,
|
||||
IN std::function<Handle(IN ResourceType type, IN CONST String &, IN INT64)> getResource)
|
||||
{
|
||||
for (const auto &t : m_scenes)
|
||||
delete t->Value;
|
||||
s_customNodeGetter = getCustomNode;
|
||||
s_resourceGetter = getResource;
|
||||
}
|
||||
|
||||
VOID SceneManager::SwitchTo(IN CONST String &name)
|
||||
{
|
||||
Engine::ChangeActiveScene(m_scenes[name]);
|
||||
Engine::ChangeActiveScene(s_scenes[name]);
|
||||
}
|
||||
|
||||
Scene *SceneManager::GetScene(IN CONST String &name)
|
||||
{
|
||||
return m_scenes[name];
|
||||
return s_scenes[name];
|
||||
}
|
||||
|
||||
VOID SceneManager::AddScene(IN Scene *scene, IN CONST String &name, IN CONST String &xml)
|
||||
@ -84,13 +89,13 @@ namespace ia::iae
|
||||
{
|
||||
if (!strcmp(t.name(), "Image"))
|
||||
{
|
||||
resources[t.attribute("name").as_string()] = m_resourceGetter(
|
||||
resources[t.attribute("name").as_string()] = s_resourceGetter(
|
||||
ResourceType::IMAGE, t.attribute("path").as_string(), t.attribute("index").as_llong());
|
||||
}
|
||||
else if (!strcmp(t.name(), "Audio"))
|
||||
{
|
||||
resources[t.attribute("name").as_string()] =
|
||||
m_resourceGetter(ResourceType::SOUND, t.attribute("path").as_string(), 0);
|
||||
s_resourceGetter(ResourceType::SOUND, t.attribute("path").as_string(), 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -104,17 +109,17 @@ namespace ia::iae
|
||||
scene->Extent() = Vec2{t.attribute("width").as_float(), t.attribute("height").as_float()};
|
||||
|
||||
t = propRoot.child("DesignViewport");
|
||||
if(t)
|
||||
if (t)
|
||||
scene->DesignViewport() = Vec2{t.attribute("width").as_float(), t.attribute("height").as_float()};
|
||||
else
|
||||
scene->DesignViewport() = Vec2{};
|
||||
|
||||
scene->EnableOnScreenGamePad() = false;
|
||||
t = propRoot.child("GamePad");
|
||||
if(t)
|
||||
if (t)
|
||||
{
|
||||
const auto t2 = t.attribute("enableOnScreen");
|
||||
if(t2 && t2.as_bool())
|
||||
if (t2 && t2.as_bool())
|
||||
scene->EnableOnScreenGamePad() = true;
|
||||
}
|
||||
}
|
||||
@ -136,7 +141,7 @@ namespace ia::iae
|
||||
}
|
||||
else
|
||||
{
|
||||
const auto node = m_customNodeGetter(t.name(), String(t.attribute("id").as_string()).split(';'));
|
||||
const auto node = s_customNodeGetter(t.name(), String(t.attribute("id").as_string()).split(';'));
|
||||
scene->AddNode(node);
|
||||
n = node.get();
|
||||
}
|
||||
@ -165,11 +170,11 @@ namespace ia::iae
|
||||
});
|
||||
scene->UIMarkup() = html;
|
||||
}
|
||||
else {
|
||||
|
||||
else
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
m_scenes[name] = scene;
|
||||
s_scenes[name] = scene;
|
||||
}
|
||||
} // namespace ia::iae
|
||||
Reference in New Issue
Block a user