// IAEngine: 2D Game Engine by IA // Copyright (C) 2025 IASoft (PVT) LTD (oss@iasoft.dev) // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . #include #include namespace ia::iae { RefPtr Project::Load(IN CONST String &directory) { auto config = ConfigData::LoadFromFile(BuildString(directory, "/", "Project.iae")); return MakeRefPtr(config->Name(), std::filesystem::canonical(directory.c_str()).string().c_str(), IA_MOVE(config)); } VOID Project::Update() { // Update Window Position const auto windowNode = m_configData->Property("Window"); windowNode.attribute("x").set_value(m_windowPosition.x); windowNode.attribute("y").set_value(m_windowPosition.y); m_configData->WriteChangesToDisk(); } Project::Project(IN CONST String &name, IN CONST String &absolutePath, IN RefPtr &&configData) : m_projectName(name), m_projectAbsolutePath(absolutePath), m_assetDirectory(BuildString(absolutePath, "/Assets/")), m_configData(IA_MOVE(configData)) { IA_ASSERT(std::filesystem::exists(m_assetDirectory.c_str())); const auto windowNode = m_configData->Property("Window"); if(windowNode && windowNode.attribute("x") && windowNode.attribute("y")) { m_windowPosition.x = windowNode.attribute("x").as_int(); m_windowPosition.y = windowNode.attribute("y").as_int(); } } Project::~Project() { } } // namespace ia::iae