#pragma once #include "Cli.hpp" #include #include #include #include #include #include namespace LibCmo::CK2 { class CKContext; namespace ObjImpls { class CKGroup; class CK3dObject; class CKMesh; class CKMaterial; class CKTexture; class CKTargetLight; } // namespace ObjImpls } // namespace LibCmo::CK2 namespace BMapInspector::Map { enum class Error { BadTempDir, ///< Fail to set temporary directory. BadBallance, ///< Fail to set Ballance texture directory. BadEncoding, ///< Fail to set encoding for loading map. BadMap, ///< Can not load given map. }; template using Result = std::expected; class Level { public: Level(const Cli::Args& args); ~Level(); YYCC_DELETE_COPY(Level) YYCC_DECL_MOVE(Level) public: Result GetLoadStatus() const; LibCmo::CK2::CKContext* GetCKContext() const; private: LibCmo::CK2::CKContext* m_Context; Result m_LoadStatus; ///< Nothing or error occurs when loading user given map. public: const std::vector& GetGroups() const; const std::vector& Get3dObjects() const; const std::vector& GetMeshes() const; const std::vector& GetMaterials() const; const std::vector& GetTextures() const; const std::vector& GetTargetLights() const; private: std::vector m_ObjGroups; std::vector m_Obj3dObjects; std::vector m_ObjMeshes; std::vector m_ObjMaterials; std::vector m_ObjTextures; std::vector m_ObjTargetLights; }; Result load(const Cli::Args& args); } // namespace BMapInspector::Map