1
0
Files
libcmo21/Ballance/BMapInspector/Map.hpp

60 lines
1.9 KiB
C++
Raw Normal View History

2026-02-02 14:17:31 +08:00
#pragma once
#include "Cli.hpp"
#include <VTAll.hpp>
2026-02-02 14:17:31 +08:00
#include <yycc.hpp>
#include <yycc/macro/class_copy_move.hpp>
#include <string>
#include <vector>
#include <optional>
#include <expected>
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<typename T>
using Result = std::expected<T, Error>;
class Level {
public:
Level(const Cli::Args& args);
~Level();
YYCC_DELETE_COPY(Level)
YYCC_DECL_MOVE(Level)
public:
Result<void> GetLoadStatus() const;
LibCmo::CK2::CKContext* GetCKContext() const;
private:
LibCmo::CK2::CKContext* m_Context;
Result<void> m_LoadStatus; ///< Nothing or error occurs when loading user given map.
public:
const std::vector<LibCmo::CK2::ObjImpls::CKGroup*>& GetGroups() const;
const std::vector<LibCmo::CK2::ObjImpls::CK3dObject*>& Get3dObjects() const;
const std::vector<LibCmo::CK2::ObjImpls::CKMesh*>& GetMeshes() const;
const std::vector<LibCmo::CK2::ObjImpls::CKMaterial*>& GetMaterials() const;
const std::vector<LibCmo::CK2::ObjImpls::CKTexture*>& GetTextures() const;
const std::vector<LibCmo::CK2::ObjImpls::CKTargetLight*>& GetTargetLights() const;
const std::vector<LibCmo::CK2::ObjImpls::CKTargetCamera*>& GetTargetCameras() const;
2026-02-02 14:17:31 +08:00
private:
std::vector<LibCmo::CK2::ObjImpls::CKGroup*> m_ObjGroups;
std::vector<LibCmo::CK2::ObjImpls::CK3dObject*> m_Obj3dObjects;
std::vector<LibCmo::CK2::ObjImpls::CKMesh*> m_ObjMeshes;
std::vector<LibCmo::CK2::ObjImpls::CKMaterial*> m_ObjMaterials;
std::vector<LibCmo::CK2::ObjImpls::CKTexture*> m_ObjTextures;
std::vector<LibCmo::CK2::ObjImpls::CKTargetLight*> m_ObjTargetLights;
std::vector<LibCmo::CK2::ObjImpls::CKTargetCamera*> m_ObjTargetCameras;
2026-02-02 14:17:31 +08:00
};
Result<Level> load(const Cli::Args& args);
} // namespace BMapInspector::Map