refactor: adapt new yycc for ck2 module kernel except CKContext
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
|
||||
#pragma region Help & Save Functions
|
||||
|
||||
static constexpr const LibCmo::CK2::CK_ID INVALID_CKID = 0;
|
||||
static constexpr LibCmo::CK2::CK_ID INVALID_CKID = 0;
|
||||
static LibCmo::CK2::CK_ID SafeGetID(LibCmo::CK2::ObjImpls::CKObject* obj) {
|
||||
if (obj == nullptr) return INVALID_CKID;
|
||||
else return obj->GetID();
|
||||
|
||||
0
DEVNOTE.md
Normal file
0
DEVNOTE.md
Normal file
@@ -4,14 +4,15 @@
|
||||
#include "CKFile.hpp"
|
||||
#include "DataHandlers/CKBitmapHandler.hpp"
|
||||
#include "MgrImpls/CKPathManager.hpp"
|
||||
#include <yycc/cenum.hpp>
|
||||
#include <memory>
|
||||
|
||||
namespace LibCmo::CK2 {
|
||||
|
||||
#pragma region Assist RW Functions
|
||||
|
||||
constexpr const CKDWORD c_SpecificFmtHasTransparent = 2;
|
||||
constexpr const CKDWORD c_SpecificFmtNoTransparent = 1;
|
||||
constexpr CKDWORD c_SpecificFmtHasTransparent = 2;
|
||||
constexpr CKDWORD c_SpecificFmtNoTransparent = 1;
|
||||
|
||||
bool CKBitmapData::ReadSpecificFormatBitmap(CKStateChunk* chk, VxMath::VxImageDescEx* slot) {
|
||||
// read transparent prop
|
||||
@@ -521,7 +522,7 @@ namespace LibCmo::CK2 {
|
||||
m_Slots.resize(count);
|
||||
|
||||
if (count == 0) {
|
||||
YYCC::EnumHelper::Add(m_BitmapFlags, CK_BITMAPDATA_FLAGS::CKBITMAPDATA_INVALID);
|
||||
yycc::cenum::add(m_BitmapFlags, CK_BITMAPDATA_FLAGS::CKBITMAPDATA_INVALID);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -535,8 +536,8 @@ namespace LibCmo::CK2 {
|
||||
m_CurrentSlot = slot;
|
||||
|
||||
// NOTE: idk what the fuck this is. just interpter the IDA decompiled code.
|
||||
if (YYCC::EnumHelper::Has(m_BitmapFlags, CK_BITMAPDATA_FLAGS::CKBITMAPDATA_CUBEMAP)) {
|
||||
YYCC::EnumHelper::Add(m_BitmapFlags, CK_BITMAPDATA_FLAGS::CKBITMAPDATA_FORCERESTORE);
|
||||
if (yycc::cenum::has(m_BitmapFlags, CK_BITMAPDATA_FLAGS::CKBITMAPDATA_CUBEMAP)) {
|
||||
yycc::cenum::add(m_BitmapFlags, CK_BITMAPDATA_FLAGS::CKBITMAPDATA_FORCERESTORE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -660,14 +661,14 @@ namespace LibCmo::CK2 {
|
||||
// but we decide split the flag settings and slot.
|
||||
// User should set slot count manually.
|
||||
if (is_cube) {
|
||||
YYCC::EnumHelper::Add(m_BitmapFlags, CK_BITMAPDATA_FLAGS::CKBITMAPDATA_CUBEMAP);
|
||||
yycc::cenum::add(m_BitmapFlags, CK_BITMAPDATA_FLAGS::CKBITMAPDATA_CUBEMAP);
|
||||
} else {
|
||||
YYCC::EnumHelper::Remove(m_BitmapFlags, CK_BITMAPDATA_FLAGS::CKBITMAPDATA_CUBEMAP);
|
||||
yycc::cenum::remove(m_BitmapFlags, CK_BITMAPDATA_FLAGS::CKBITMAPDATA_CUBEMAP);
|
||||
}
|
||||
}
|
||||
|
||||
bool CKBitmapData::IsCubeMap() const {
|
||||
return YYCC::EnumHelper::Has(m_BitmapFlags, CK_BITMAPDATA_FLAGS::CKBITMAPDATA_CUBEMAP);
|
||||
return yycc::cenum::has(m_BitmapFlags, CK_BITMAPDATA_FLAGS::CKBITMAPDATA_CUBEMAP);
|
||||
}
|
||||
|
||||
const CKBitmapProperties& CKBitmapData::GetSaveFormat() const {
|
||||
@@ -688,14 +689,14 @@ namespace LibCmo::CK2 {
|
||||
|
||||
void CKBitmapData::SetTransparent(bool Transparency) {
|
||||
if (Transparency) {
|
||||
YYCC::EnumHelper::Add(m_BitmapFlags, CK_BITMAPDATA_FLAGS::CKBITMAPDATA_TRANSPARENT);
|
||||
yycc::cenum::add(m_BitmapFlags, CK_BITMAPDATA_FLAGS::CKBITMAPDATA_TRANSPARENT);
|
||||
} else {
|
||||
YYCC::EnumHelper::Remove(m_BitmapFlags, CK_BITMAPDATA_FLAGS::CKBITMAPDATA_TRANSPARENT);
|
||||
yycc::cenum::remove(m_BitmapFlags, CK_BITMAPDATA_FLAGS::CKBITMAPDATA_TRANSPARENT);
|
||||
}
|
||||
}
|
||||
|
||||
bool CKBitmapData::IsTransparent() const {
|
||||
return YYCC::EnumHelper::Has(m_BitmapFlags, CK_BITMAPDATA_FLAGS::CKBITMAPDATA_TRANSPARENT);
|
||||
return yycc::cenum::has(m_BitmapFlags, CK_BITMAPDATA_FLAGS::CKBITMAPDATA_TRANSPARENT);
|
||||
}
|
||||
|
||||
void CKBitmapData::SetTransparentColor(CKDWORD col) {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "../VTInternal.hpp"
|
||||
#include <yycc/macro/class_copy_move.hpp>
|
||||
|
||||
namespace LibCmo::CK2 {
|
||||
|
||||
@@ -26,7 +27,7 @@ namespace LibCmo::CK2 {
|
||||
CKBitmapSlot() :
|
||||
m_ImageData(), m_FileName() {}
|
||||
~CKBitmapSlot() {}
|
||||
YYCC_DEF_CLS_COPY_MOVE(CKBitmapSlot);
|
||||
YYCC_DEFAULT_COPY_MOVE(CKBitmapSlot)
|
||||
|
||||
VxMath::VxImageDescEx m_ImageData;
|
||||
XContainer::XString m_FileName;
|
||||
@@ -36,7 +37,7 @@ namespace LibCmo::CK2 {
|
||||
public:
|
||||
CKBitmapData(CKContext* ctx);
|
||||
~CKBitmapData();
|
||||
YYCC_DEL_CLS_COPY_MOVE(CKBitmapData);
|
||||
YYCC_DELETE_COPY_MOVE(CKBitmapData)
|
||||
|
||||
#pragma region RW Funcs
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "../VTInternal.hpp"
|
||||
#include <yycc/macro/class_copy_move.hpp>
|
||||
#include <map>
|
||||
#include <deque>
|
||||
#include <functional>
|
||||
@@ -21,7 +22,7 @@ namespace LibCmo::CK2 {
|
||||
public:
|
||||
CKContext();
|
||||
~CKContext();
|
||||
YYCC_DEL_CLS_COPY_MOVE(CKContext);
|
||||
YYCC_DELETE_COPY_MOVE(CKContext)
|
||||
|
||||
// ========== Engine runtime ==========
|
||||
public:
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
#include "CKTypes.hpp"
|
||||
#include "CKGlobals.hpp"
|
||||
#include <yycc/macro/class_copy_move.hpp>
|
||||
|
||||
namespace LibCmo::CK2 {
|
||||
|
||||
@@ -9,39 +10,39 @@ namespace LibCmo::CK2 {
|
||||
|
||||
// Virtools Managers GUID second DWORD must be 0
|
||||
|
||||
constexpr const CKDWORD OBJECT_MANAGER_GUID1 = 0x7cbb3b91;
|
||||
constexpr const CKDWORD ATTRIBUTE_MANAGER_GUID1 = 0x3d242466;
|
||||
constexpr const CKDWORD MESSAGE_MANAGER_GUID1 = 0x466a0fac;
|
||||
constexpr const CKDWORD FLOOR_MANAGER_GUID1 = 0x420936f9;
|
||||
constexpr const CKDWORD COLLISION_MANAGER_GUID1 = 0x38244712;
|
||||
constexpr const CKDWORD GRID_MANAGER_GUID1 = 0x7f004791;
|
||||
constexpr const CKDWORD TIME_MANAGER_GUID1 = 0x89ce7b32;
|
||||
constexpr const CKDWORD BEHAVIOR_MANAGER_GUID1 = 0x58d621ae;
|
||||
constexpr const CKDWORD INPUT_MANAGER_GUID1 = 0xf787c904;
|
||||
constexpr const CKDWORD SOUND_MANAGER_GUID1 = 0xdce135f6;
|
||||
constexpr const CKDWORD MIDI_MANAGER_GUID1 = 0x594154a6;
|
||||
constexpr const CKDWORD INTERFACE_MANAGER_GUID1 = 0x9a4b8e3d;
|
||||
constexpr const CKDWORD RENDER_MANAGER_GUID1 = 0xa213c8d5;
|
||||
constexpr const CKDWORD PARAMETER_MANAGER_GUID1 = 0x9ce57ab6;
|
||||
constexpr const CKDWORD PATH_MANAGER_GUID1 = 0x15fd54b9;
|
||||
constexpr const CKDWORD VARIABLE_MANAGER_GUID1 = 0x98cc3cc9;
|
||||
constexpr CKDWORD OBJECT_MANAGER_GUID1 = 0x7cbb3b91;
|
||||
constexpr CKDWORD ATTRIBUTE_MANAGER_GUID1 = 0x3d242466;
|
||||
constexpr CKDWORD MESSAGE_MANAGER_GUID1 = 0x466a0fac;
|
||||
constexpr CKDWORD FLOOR_MANAGER_GUID1 = 0x420936f9;
|
||||
constexpr CKDWORD COLLISION_MANAGER_GUID1 = 0x38244712;
|
||||
constexpr CKDWORD GRID_MANAGER_GUID1 = 0x7f004791;
|
||||
constexpr CKDWORD TIME_MANAGER_GUID1 = 0x89ce7b32;
|
||||
constexpr CKDWORD BEHAVIOR_MANAGER_GUID1 = 0x58d621ae;
|
||||
constexpr CKDWORD INPUT_MANAGER_GUID1 = 0xf787c904;
|
||||
constexpr CKDWORD SOUND_MANAGER_GUID1 = 0xdce135f6;
|
||||
constexpr CKDWORD MIDI_MANAGER_GUID1 = 0x594154a6;
|
||||
constexpr CKDWORD INTERFACE_MANAGER_GUID1 = 0x9a4b8e3d;
|
||||
constexpr CKDWORD RENDER_MANAGER_GUID1 = 0xa213c8d5;
|
||||
constexpr CKDWORD PARAMETER_MANAGER_GUID1 = 0x9ce57ab6;
|
||||
constexpr CKDWORD PATH_MANAGER_GUID1 = 0x15fd54b9;
|
||||
constexpr CKDWORD VARIABLE_MANAGER_GUID1 = 0x98cc3cc9;
|
||||
|
||||
constexpr const CKGUID OBJECT_MANAGER_GUID { OBJECT_MANAGER_GUID1, 0 };
|
||||
constexpr const CKGUID ATTRIBUTE_MANAGER_GUID { ATTRIBUTE_MANAGER_GUID1, 0 };
|
||||
constexpr const CKGUID MESSAGE_MANAGER_GUID { MESSAGE_MANAGER_GUID1, 0 };
|
||||
constexpr const CKGUID TIME_MANAGER_GUID { TIME_MANAGER_GUID1, 0 };
|
||||
constexpr const CKGUID SOUND_MANAGER_GUID { SOUND_MANAGER_GUID1, 0 };
|
||||
constexpr const CKGUID MIDI_MANAGER_GUID { MIDI_MANAGER_GUID1, 0 };
|
||||
constexpr const CKGUID INPUT_MANAGER_GUID { INPUT_MANAGER_GUID1, 0 };
|
||||
constexpr const CKGUID BEHAVIOR_MANAGER_GUID { BEHAVIOR_MANAGER_GUID1, 0 };
|
||||
constexpr const CKGUID FLOOR_MANAGER_GUID { FLOOR_MANAGER_GUID1, 0 };
|
||||
constexpr const CKGUID COLLISION_MANAGER_GUID { COLLISION_MANAGER_GUID1, 0 };
|
||||
constexpr const CKGUID GRID_MANAGER_GUID { GRID_MANAGER_GUID1, 0 };
|
||||
constexpr const CKGUID INTERFACE_MANAGER_GUID { INTERFACE_MANAGER_GUID1, 0 };
|
||||
constexpr const CKGUID RENDER_MANAGER_GUID { RENDER_MANAGER_GUID1, 0 };
|
||||
constexpr const CKGUID PARAMETER_MANAGER_GUID { PARAMETER_MANAGER_GUID1, 0 };
|
||||
constexpr const CKGUID PATH_MANAGER_GUID { PATH_MANAGER_GUID1, 0 };
|
||||
constexpr const CKGUID VARIABLE_MANAGER_GUID { VARIABLE_MANAGER_GUID1, 0 };
|
||||
constexpr CKGUID OBJECT_MANAGER_GUID { OBJECT_MANAGER_GUID1, 0 };
|
||||
constexpr CKGUID ATTRIBUTE_MANAGER_GUID { ATTRIBUTE_MANAGER_GUID1, 0 };
|
||||
constexpr CKGUID MESSAGE_MANAGER_GUID { MESSAGE_MANAGER_GUID1, 0 };
|
||||
constexpr CKGUID TIME_MANAGER_GUID { TIME_MANAGER_GUID1, 0 };
|
||||
constexpr CKGUID SOUND_MANAGER_GUID { SOUND_MANAGER_GUID1, 0 };
|
||||
constexpr CKGUID MIDI_MANAGER_GUID { MIDI_MANAGER_GUID1, 0 };
|
||||
constexpr CKGUID INPUT_MANAGER_GUID { INPUT_MANAGER_GUID1, 0 };
|
||||
constexpr CKGUID BEHAVIOR_MANAGER_GUID { BEHAVIOR_MANAGER_GUID1, 0 };
|
||||
constexpr CKGUID FLOOR_MANAGER_GUID { FLOOR_MANAGER_GUID1, 0 };
|
||||
constexpr CKGUID COLLISION_MANAGER_GUID { COLLISION_MANAGER_GUID1, 0 };
|
||||
constexpr CKGUID GRID_MANAGER_GUID { GRID_MANAGER_GUID1, 0 };
|
||||
constexpr CKGUID INTERFACE_MANAGER_GUID { INTERFACE_MANAGER_GUID1, 0 };
|
||||
constexpr CKGUID RENDER_MANAGER_GUID { RENDER_MANAGER_GUID1, 0 };
|
||||
constexpr CKGUID PARAMETER_MANAGER_GUID { PARAMETER_MANAGER_GUID1, 0 };
|
||||
constexpr CKGUID PATH_MANAGER_GUID { PATH_MANAGER_GUID1, 0 };
|
||||
constexpr CKGUID VARIABLE_MANAGER_GUID { VARIABLE_MANAGER_GUID1, 0 };
|
||||
|
||||
#pragma endregion
|
||||
|
||||
@@ -50,17 +51,17 @@ namespace LibCmo::CK2 {
|
||||
/**
|
||||
* @brief The identifier of Virtools file.
|
||||
*/
|
||||
constexpr const CKCHAR CKNEMOFI[] = u8"Nemo Fi";
|
||||
constexpr CKCHAR CKNEMOFI[] = u8"Nemo Fi";
|
||||
/**
|
||||
* @brief Current Version of CK Engine (Day/Month/Year)
|
||||
*/
|
||||
constexpr const CKDWORD CKVERSION = 0x13022002u;
|
||||
constexpr CKDWORD CKVERSION = 0x13022002u;
|
||||
/**
|
||||
* @brief Current Version of Dev
|
||||
*/
|
||||
constexpr const CKDWORD DEVBUILD = 0x02010001u;
|
||||
constexpr const CKDWORD DEVVERSION = 0u;
|
||||
constexpr const CKGUID VIRTOOLS_GUID = CKGUID(0x56495254u, 0x4f4f4c53u);
|
||||
constexpr CKDWORD DEVBUILD = 0x02010001u;
|
||||
constexpr CKDWORD DEVVERSION = 0u;
|
||||
constexpr CKGUID VIRTOOLS_GUID = CKGUID(0x56495254u, 0x4f4f4c53u);
|
||||
|
||||
#pragma endregion
|
||||
|
||||
@@ -135,7 +136,7 @@ namespace LibCmo::CK2 {
|
||||
m_ReaderGuid(), m_Ext() {}
|
||||
CKBitmapProperties(const CKGUID& guid, CKSTRING ext) :
|
||||
m_ReaderGuid(guid), m_Ext(ext) {}
|
||||
YYCC_DEF_CLS_COPY_MOVE(CKBitmapProperties);
|
||||
YYCC_DEFAULT_COPY_MOVE(CKBitmapProperties)
|
||||
|
||||
CKGUID m_ReaderGuid; /**< CKGUID that uniquely identifies the reader that created this properties structure */
|
||||
CKFileExtension m_Ext; /**< File Extension of the image being described by this structure */
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "../VTInternal.hpp"
|
||||
#include <yycc/macro/class_copy_move.hpp>
|
||||
|
||||
namespace LibCmo::XContainer {
|
||||
using XIntArray = XArray<CKINT>;
|
||||
@@ -40,7 +41,7 @@ namespace LibCmo::CK2 {
|
||||
~CKBufferParser() {
|
||||
if (this->m_NeedManualFree) delete[](this->m_MemBegin);
|
||||
}
|
||||
YYCC_DEL_CLS_COPY_MOVE(CKBufferParser);
|
||||
YYCC_DELETE_COPY_MOVE(CKBufferParser)
|
||||
|
||||
const void* GetPtr(CKINT extraoff = 0) { return (this->m_MemBegin + m_MemPos + extraoff); }
|
||||
void* GetMutablePtr(CKINT extraoff = 0) { return (this->m_MemBegin + m_MemPos + extraoff); }
|
||||
@@ -96,7 +97,7 @@ namespace LibCmo::CK2 {
|
||||
ObjectCount(0u), ManagerCount(0u), MaxIDSaved(0u), Crc(0u),
|
||||
Hdr1PackSize(0u), Hdr1UnPackSize(0u), DataPackSize(0u), DataUnPackSize(0u) {}
|
||||
~CKFileInfo() {}
|
||||
YYCC_DEF_CLS_COPY_MOVE(CKFileInfo);
|
||||
YYCC_DEFAULT_COPY_MOVE(CKFileInfo)
|
||||
|
||||
CKDWORD ProductVersion; /**< Virtools Version (Dev/Creation). (CK_VIRTOOLS_VERSION) */
|
||||
CKDWORD ProductBuild; /**< Virtools Build Number. */
|
||||
@@ -155,7 +156,7 @@ namespace LibCmo::CK2 {
|
||||
CKFilePluginDependencies() :
|
||||
m_PluginCategory(CK_PLUGIN_TYPE::CKPLUGIN_MANAGER_DLL), m_Guids() {}
|
||||
~CKFilePluginDependencies() {}
|
||||
YYCC_DEF_CLS_COPY_MOVE(CKFilePluginDependencies);
|
||||
YYCC_DEFAULT_COPY_MOVE(CKFilePluginDependencies)
|
||||
|
||||
CK_PLUGIN_TYPE m_PluginCategory;
|
||||
XContainer::XArray<CKGUID> m_Guids;
|
||||
@@ -187,7 +188,7 @@ namespace LibCmo::CK2 {
|
||||
public:
|
||||
CKFileReader(CKContext* ctx);
|
||||
~CKFileReader();
|
||||
YYCC_DEL_CLS_COPY_MOVE(CKFileReader);
|
||||
YYCC_DELETE_COPY_MOVE(CKFileReader)
|
||||
|
||||
// ========== Loading ==========
|
||||
CKERROR ShallowLoad(CKSTRING u8_filename);
|
||||
@@ -228,7 +229,7 @@ namespace LibCmo::CK2 {
|
||||
CKFileWriter(CKContext* ctx);
|
||||
CKFileWriter(CKContext* ctx, CKFileReader* reader, bool is_shallow);
|
||||
~CKFileWriter();
|
||||
YYCC_DEL_CLS_COPY_MOVE(CKFileWriter);
|
||||
YYCC_DELETE_COPY_MOVE(CKFileWriter)
|
||||
|
||||
// ========== Saving Preparing ==========
|
||||
bool AddSavedObject(ObjImpls::CKObject* obj, CKDWORD flags = CK_STATESAVE_ALL);
|
||||
|
||||
@@ -4,6 +4,8 @@
|
||||
#include "MgrImpls/CKPathManager.hpp"
|
||||
#include "../VxMath/VxMemoryMappedFile.hpp"
|
||||
#include "CKContext.hpp"
|
||||
#include <yycc/cenum.hpp>
|
||||
#include <yycc/patch/fopen.hpp>
|
||||
#include <memory>
|
||||
|
||||
namespace LibCmo::CK2 {
|
||||
@@ -234,8 +236,8 @@ namespace LibCmo::CK2 {
|
||||
std::string name_conv;
|
||||
|
||||
// ========== compress feature process ==========
|
||||
if (YYCC::EnumHelper::Has(this->m_FileInfo.FileWriteMode, CK_FILE_WRITEMODE::CKFILE_CHUNKCOMPRESSED_OLD) ||
|
||||
YYCC::EnumHelper::Has(this->m_FileInfo.FileWriteMode, CK_FILE_WRITEMODE::CKFILE_WHOLECOMPRESSED)) {
|
||||
if (yycc::cenum::has(this->m_FileInfo.FileWriteMode, CK_FILE_WRITEMODE::CKFILE_CHUNKCOMPRESSED_OLD)
|
||||
|| yycc::cenum::has(this->m_FileInfo.FileWriteMode, CK_FILE_WRITEMODE::CKFILE_WHOLECOMPRESSED)) {
|
||||
|
||||
void* decomp_buffer = CKUnPackData(this->m_FileInfo.DataUnPackSize, parser->GetPtr(), this->m_FileInfo.DataPackSize);
|
||||
if (decomp_buffer != nullptr) {
|
||||
@@ -351,7 +353,7 @@ namespace LibCmo::CK2 {
|
||||
|
||||
// read file body
|
||||
XContainer::XString tempfilename = m_Ctx->GetPathManager()->GetTempFilePath(file.c_str());
|
||||
FILE* fp = YYCC::IOHelper::UTF8FOpen(tempfilename.c_str(), u8"wb");
|
||||
FILE* fp = yycc::patch::fopen::fopen(tempfilename.c_str(), u8"wb");
|
||||
if (fp != nullptr) {
|
||||
std::fwrite(parser->GetPtr(), sizeof(CKBYTE), filebodylen, fp);
|
||||
std::fclose(fp);
|
||||
|
||||
@@ -5,6 +5,8 @@
|
||||
#include "MgrImpls/CKBaseManager.hpp"
|
||||
#include "MgrImpls/CKPathManager.hpp"
|
||||
#include "../VxMath/VxMemoryMappedFile.hpp"
|
||||
#include <yycc/cenum.hpp>
|
||||
#include <yycc/patch/fopen.hpp>
|
||||
#include <memory>
|
||||
|
||||
namespace LibCmo::CK2 {
|
||||
@@ -216,8 +218,8 @@ namespace LibCmo::CK2 {
|
||||
}
|
||||
|
||||
// compress header if needed
|
||||
if (YYCC::EnumHelper::Has(fileWriteMode, CK_FILE_WRITEMODE::CKFILE_CHUNKCOMPRESSED_OLD) ||
|
||||
YYCC::EnumHelper::Has(fileWriteMode, CK_FILE_WRITEMODE::CKFILE_WHOLECOMPRESSED)) {
|
||||
if (yycc::cenum::has(fileWriteMode, CK_FILE_WRITEMODE::CKFILE_CHUNKCOMPRESSED_OLD)
|
||||
|| yycc::cenum::has(fileWriteMode, CK_FILE_WRITEMODE::CKFILE_WHOLECOMPRESSED)) {
|
||||
|
||||
CKDWORD comp_buf_size = 0;
|
||||
void* comp_buffer = CKPackData(hdrparser->GetBase(), hdrparser->GetSize(), comp_buf_size, m_Ctx->GetCompressionLevel());
|
||||
@@ -263,8 +265,8 @@ namespace LibCmo::CK2 {
|
||||
}
|
||||
|
||||
// compress header if needed
|
||||
if (YYCC::EnumHelper::Has(fileWriteMode, CK_FILE_WRITEMODE::CKFILE_CHUNKCOMPRESSED_OLD) ||
|
||||
YYCC::EnumHelper::Has(fileWriteMode, CK_FILE_WRITEMODE::CKFILE_WHOLECOMPRESSED)) {
|
||||
if (yycc::cenum::has(fileWriteMode, CK_FILE_WRITEMODE::CKFILE_CHUNKCOMPRESSED_OLD)
|
||||
|| yycc::cenum::has(fileWriteMode, CK_FILE_WRITEMODE::CKFILE_WHOLECOMPRESSED)) {
|
||||
|
||||
CKDWORD comp_buf_size = 0;
|
||||
void* comp_buffer = CKPackData(datparser->GetBase(), datparser->GetSize(), comp_buf_size, m_Ctx->GetCompressionLevel());
|
||||
@@ -303,7 +305,7 @@ namespace LibCmo::CK2 {
|
||||
|
||||
// ========== Open File & Write Essential Data ==========
|
||||
// open file and test
|
||||
FILE* fs = YYCC::IOHelper::UTF8FOpen(u8_filename, u8"wb");
|
||||
FILE* fs = yycc::patch::fopen::fopen(u8_filename, u8"wb");
|
||||
if (fs == nullptr) return CKERROR::CKERR_CANTWRITETOFILE;
|
||||
// write small header + header + data
|
||||
std::fwrite(&rawHeader, sizeof(CKRawFileInfo), 1, fs);
|
||||
@@ -363,7 +365,7 @@ namespace LibCmo::CK2 {
|
||||
|
||||
// try open file to check whether we can write it.
|
||||
CKERROR err;
|
||||
FILE* tryfile = YYCC::IOHelper::UTF8FOpen(filename, u8"ab");
|
||||
FILE* tryfile = yycc::patch::fopen::fopen(filename, u8"ab");
|
||||
if (tryfile == nullptr) {
|
||||
err = CKERROR::CKERR_CANTWRITETOFILE;
|
||||
} else {
|
||||
|
||||
@@ -1,15 +1,18 @@
|
||||
// Idk why I need import this first when I refactoring this file.
|
||||
// But I keep it because I don't want to raise any potential bugs.
|
||||
#include "../VTUtils.hpp"
|
||||
#if defined(YYCC_OS_WINDOWS)
|
||||
#define ZLIB_WINAPI
|
||||
#endif
|
||||
// We import zlib first to prevent any possible conflict.
|
||||
#include <zconf.h>
|
||||
#include <zlib.h>
|
||||
|
||||
// Import self header
|
||||
#include "CKGlobals.hpp"
|
||||
|
||||
// Import STL and YYCC headers
|
||||
#include <yycc/string/reinterpret.hpp>
|
||||
#include <algorithm>
|
||||
#include <initializer_list>
|
||||
|
||||
// Import implementations.
|
||||
#include "ObjImpls/CKObject.hpp"
|
||||
#include "ObjImpls/CKSceneObject.hpp"
|
||||
#include "ObjImpls/CKBeObject.hpp"
|
||||
@@ -128,7 +131,7 @@ namespace LibCmo::CK2 {
|
||||
|
||||
CKDWORD CKStrLen(CKSTRING strl) {
|
||||
if (strl == nullptr) return 0u;
|
||||
size_t len = std::strlen(YYCC::EncodingHelper::ToOrdinary(strl));
|
||||
size_t len = std::strlen(yycc::string::reinterpret::as_ordinary(strl));
|
||||
if (len > static_cast<size_t>(std::numeric_limits<CKDWORD>::max()))
|
||||
throw RuntimeException("Exceed maximum value when cast size_t to CKDWORD.");
|
||||
return static_cast<CKDWORD>(len);
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
#include "CKTypes.hpp"
|
||||
#include "../XContainer/XTypes.hpp"
|
||||
#include <yycc/macro/class_copy_move.hpp>
|
||||
#include <functional>
|
||||
#include <memory>
|
||||
|
||||
@@ -146,7 +147,7 @@ namespace LibCmo::CK2 {
|
||||
DerivationLevel(0),
|
||||
Parents(), Children(), ToBeNotify(), CommonToBeNotify()
|
||||
{}
|
||||
YYCC_DEF_CLS_COPY_MOVE(CKClassDesc);
|
||||
YYCC_DEFAULT_COPY_MOVE(CKClassDesc)
|
||||
};
|
||||
|
||||
// ========== CKClass Registration ==========
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
|
||||
namespace LibCmo::CK2 {
|
||||
|
||||
constexpr const CKDWORD CK_STATESAVE_ALL = 0xFFFFFFFF;
|
||||
constexpr CKDWORD CK_STATESAVE_ALL = 0xFFFFFFFF;
|
||||
|
||||
/**
|
||||
Object
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#pragma once
|
||||
|
||||
#include "../VTInternal.hpp"
|
||||
#include <yycc/macro/class_copy_move.hpp>
|
||||
#include <memory>
|
||||
#include <functional>
|
||||
#include <type_traits>
|
||||
@@ -54,7 +55,7 @@ namespace LibCmo::CK2 {
|
||||
LockedReadBufferDeleter() : m_Host(nullptr), m_ConsumedSize(0) {}
|
||||
LockedReadBufferDeleter(CKStateChunk* host, CKDWORD init_size) :
|
||||
m_Host(host), m_ConsumedSize(init_size) {}
|
||||
YYCC_DEF_CLS_COPY_MOVE(LockedReadBufferDeleter);
|
||||
YYCC_DEFAULT_COPY_MOVE(LockedReadBufferDeleter)
|
||||
|
||||
void operator()(const void* /*buf*/);
|
||||
void SetConsumedSize(CKDWORD newsize);
|
||||
@@ -68,7 +69,7 @@ namespace LibCmo::CK2 {
|
||||
LockedWriteBufferDeleter() : m_Host(nullptr), m_ConsumedSize(0) {}
|
||||
LockedWriteBufferDeleter(CKStateChunk* host, CKDWORD init_size) :
|
||||
m_Host(host), m_ConsumedSize(init_size) {}
|
||||
YYCC_DEF_CLS_COPY_MOVE(LockedWriteBufferDeleter);
|
||||
YYCC_DEFAULT_COPY_MOVE(LockedWriteBufferDeleter)
|
||||
|
||||
void operator()(const void* /*buf*/);
|
||||
void SetConsumedSize(CKDWORD newsize);
|
||||
@@ -82,7 +83,7 @@ namespace LibCmo::CK2 {
|
||||
BufferDeleter() : m_Host(nullptr), m_BufSize(0) {}
|
||||
BufferDeleter(CKStateChunk* host, CKDWORD bufsize) :
|
||||
m_Host(host), m_BufSize(bufsize) {}
|
||||
YYCC_DEF_CLS_COPY_MOVE(BufferDeleter);
|
||||
YYCC_DEFAULT_COPY_MOVE(BufferDeleter)
|
||||
|
||||
void operator()(const void* buf);
|
||||
CKDWORD GetBufferSize() const;
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
#include "CKStateChunk.hpp"
|
||||
#include "CKFile.hpp"
|
||||
#include "CKContext.hpp"
|
||||
#include <yycc/cenum.hpp>
|
||||
|
||||
namespace LibCmo::CK2 {
|
||||
|
||||
@@ -419,23 +420,23 @@ namespace LibCmo::CK2 {
|
||||
std::memcpy(this->m_pData, dwbuf + bufpos, sizeof(CKDWORD) * this->m_DataDwSize);
|
||||
bufpos += this->m_DataDwSize;
|
||||
}
|
||||
if (!YYCC::EnumHelper::Has(options, CK_STATECHUNK_CHUNKOPTIONS::CHNK_OPTION_FILE)) {
|
||||
if (!yycc::cenum::has(options, CK_STATECHUNK_CHUNKOPTIONS::CHNK_OPTION_FILE)) {
|
||||
// forced no bind file
|
||||
this->m_BindFile = nullptr;
|
||||
}
|
||||
if (YYCC::EnumHelper::Has(options, CK_STATECHUNK_CHUNKOPTIONS::CHNK_OPTION_IDS)) {
|
||||
if (yycc::cenum::has(options, CK_STATECHUNK_CHUNKOPTIONS::CHNK_OPTION_IDS)) {
|
||||
this->m_ObjectList.resize(dwbuf[bufpos]);
|
||||
bufpos += 1u;
|
||||
std::memcpy(this->m_ObjectList.data(), dwbuf + bufpos, sizeof(CKDWORD) * this->m_ObjectList.size());
|
||||
bufpos += this->m_ObjectList.size();
|
||||
}
|
||||
if (YYCC::EnumHelper::Has(options, CK_STATECHUNK_CHUNKOPTIONS::CHNK_OPTION_CHN)) {
|
||||
if (yycc::cenum::has(options, CK_STATECHUNK_CHUNKOPTIONS::CHNK_OPTION_CHN)) {
|
||||
this->m_ChunkList.resize(dwbuf[bufpos]);
|
||||
bufpos += 1u;
|
||||
std::memcpy(this->m_ChunkList.data(), dwbuf + bufpos, sizeof(CKDWORD) * this->m_ChunkList.size());
|
||||
bufpos += this->m_ChunkList.size();
|
||||
}
|
||||
if (YYCC::EnumHelper::Has(options, CK_STATECHUNK_CHUNKOPTIONS::CHNK_OPTION_MAN)) {
|
||||
if (yycc::cenum::has(options, CK_STATECHUNK_CHUNKOPTIONS::CHNK_OPTION_MAN)) {
|
||||
this->m_ManagerList.resize(dwbuf[bufpos]);
|
||||
bufpos += 1u;
|
||||
std::memcpy(this->m_ManagerList.data(), dwbuf + bufpos, sizeof(CKDWORD) * this->m_ManagerList.size());
|
||||
@@ -459,19 +460,19 @@ namespace LibCmo::CK2 {
|
||||
|
||||
if (!m_ObjectList.empty()) {
|
||||
size += CKSizeof(CKDWORD) * static_cast<CKDWORD>(m_ObjectList.size()) + sizeof(CKDWORD);
|
||||
YYCC::EnumHelper::Add(options, CK_STATECHUNK_CHUNKOPTIONS::CHNK_OPTION_IDS);
|
||||
yycc::cenum::add(options, CK_STATECHUNK_CHUNKOPTIONS::CHNK_OPTION_IDS);
|
||||
}
|
||||
if (!m_ChunkList.empty()) {
|
||||
size += CKSizeof(CKDWORD) * static_cast<CKDWORD>(m_ChunkList.size()) + sizeof(CKDWORD);
|
||||
YYCC::EnumHelper::Add(options, CK_STATECHUNK_CHUNKOPTIONS::CHNK_OPTION_CHN);
|
||||
yycc::cenum::add(options, CK_STATECHUNK_CHUNKOPTIONS::CHNK_OPTION_CHN);
|
||||
}
|
||||
if (!m_ManagerList.empty()) {
|
||||
size += CKSizeof(CKDWORD) * static_cast<CKDWORD>(m_ManagerList.size()) + sizeof(CKDWORD);
|
||||
YYCC::EnumHelper::Add(options, CK_STATECHUNK_CHUNKOPTIONS::CHNK_OPTION_MAN);
|
||||
yycc::cenum::add(options, CK_STATECHUNK_CHUNKOPTIONS::CHNK_OPTION_MAN);
|
||||
}
|
||||
|
||||
if (this->m_BindFile != nullptr) {
|
||||
YYCC::EnumHelper::Add(options, CK_STATECHUNK_CHUNKOPTIONS::CHNK_OPTION_FILE);
|
||||
yycc::cenum::add(options, CK_STATECHUNK_CHUNKOPTIONS::CHNK_OPTION_FILE);
|
||||
}
|
||||
|
||||
// if buffer provided, write it
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
#include "VTUtils.hpp"
|
||||
|
||||
// Check LibCmo build type first.
|
||||
#if !(defined(LIBCMO_BUILD_DEBUG) ^ defined(LIBCMO_BUILD_RELEASE))
|
||||
#error "You must define ONE of LIBCMO_BUILD_DEBUG and LIBCMO_BUILD_RELEASE to indicate build type!"
|
||||
#endif
|
||||
|
||||
// Check YYCC library version
|
||||
#include <yycc/macro/version_cmp.hpp>
|
||||
#if YYCC_VERCMP_NE(YYCC_VER_MAJOR, YYCC_VER_MINOR, YYCC_VER_PATCH, 2, 0, 0)
|
||||
|
||||
@@ -1,10 +1,5 @@
|
||||
#pragma once
|
||||
|
||||
// Check LibCmo build type first.
|
||||
#if !(defined(LIBCMO_BUILD_DEBUG) ^ defined(LIBCMO_BUILD_RELEASE))
|
||||
#error "You must define ONE of LIBCMO_BUILD_DEBUG and LIBCMO_BUILD_RELEASE to indicate build type!"
|
||||
#endif
|
||||
|
||||
// Include YYCC library core header for all headers
|
||||
#include <yycc.hpp>
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
namespace Unvirt {
|
||||
namespace AccessibleValue {
|
||||
|
||||
constexpr const char8_t c_InvalidEnumName[] = u8"[undefined]";
|
||||
constexpr char8_t c_InvalidEnumName[] = u8"[undefined]";
|
||||
|
||||
#pragma region Size Formatter
|
||||
|
||||
|
||||
Reference in New Issue
Block a user