Added libarchive support to Dawn.
This commit is contained in:
@ -19,22 +19,20 @@ void LanguageAsset::updateSync() {
|
||||
}
|
||||
|
||||
void LanguageAsset::updateAsync() {
|
||||
assertTrue(this->state == 0x00, "LanguageAsset::updateAsync: State must be 0x00");
|
||||
assertTrue(
|
||||
this->state == LANGUAGE_ASSET_LOAD_STATE_NOT_LOADING,
|
||||
"LanguageAsset::updateAsync: State must be NOT_LOADING"
|
||||
);
|
||||
|
||||
// Open Asset
|
||||
this->state = 0x01;
|
||||
this->state = LANGUAGE_ASSET_LOAD_STATE_OPENING;
|
||||
this->loader.open();
|
||||
|
||||
// Get Length
|
||||
this->state = 0x02;
|
||||
this->loader.end();
|
||||
this->state = 0x03;
|
||||
size_t len = this->loader.getPosition();
|
||||
this->state = 0x04;
|
||||
this->loader.rewind();
|
||||
size_t len = this->loader.getSize();
|
||||
|
||||
// Create buffer
|
||||
this->state = 0x05;
|
||||
this->state = LANGUAGE_ASSET_LOAD_STATE_CREATING_BUFFER;
|
||||
size_t position = 0;
|
||||
|
||||
// Loop over CSV
|
||||
@ -55,23 +53,22 @@ void LanguageAsset::updateAsync() {
|
||||
|
||||
// Prepare for next string.
|
||||
position = position + (size_t)(valueEnd - buffer + 1);
|
||||
this->loader.rewind();
|
||||
this->loader.skip(position);
|
||||
this->loader.setPosition(position);
|
||||
|
||||
// Store strings.
|
||||
std::string key((char *)keyStart);
|
||||
this->values[key] = value;
|
||||
}
|
||||
|
||||
this->state = 0x06;
|
||||
this->loader.rewind();
|
||||
|
||||
this->state = 0x07;
|
||||
this->state = LANGUAGE_ASSET_LOAD_STATE_READY_TO_READ;
|
||||
this->loaded = true;
|
||||
}
|
||||
|
||||
std::string LanguageAsset::getValue(std::string key) {
|
||||
assertTrue(this->state == 0x07, "LanguageAsset::getValue: State must be 0x07");
|
||||
assertTrue(
|
||||
this->state == LANGUAGE_ASSET_LOAD_STATE_READY_TO_READ,
|
||||
"LanguageAsset::getValue: State must be LANGUAGE_ASSET_LOAD_STATE_READY_TO_READ"
|
||||
);
|
||||
assertMapHasKey(this->values, key, "LanguageAsset::getValue: Key does not exist");
|
||||
assertTrue(this->values[key].begin >= 0 && this->values[key].length > 0, "LanguageAsset::getValue: Value is invalid");
|
||||
|
||||
|
@ -13,10 +13,17 @@ namespace Dawn {
|
||||
size_t length;
|
||||
};
|
||||
|
||||
enum LangageAssetLoadState {
|
||||
LANGUAGE_ASSET_LOAD_STATE_NOT_LOADING,
|
||||
LANGUAGE_ASSET_LOAD_STATE_OPENING,
|
||||
LANGUAGE_ASSET_LOAD_STATE_CREATING_BUFFER,
|
||||
LANGUAGE_ASSET_LOAD_STATE_READY_TO_READ
|
||||
};
|
||||
|
||||
class LanguageAsset : public Asset {
|
||||
protected:
|
||||
AssetLoader loader;
|
||||
uint8_t state = 0x00;
|
||||
enum LangageAssetLoadState state = LANGUAGE_ASSET_LOAD_STATE_NOT_LOADING;
|
||||
std::map<std::string, struct AssetLanguageValue> values;
|
||||
uint8_t buffer[1024];
|
||||
|
||||
|
@ -37,7 +37,11 @@ void TextureAsset::updateSync() {
|
||||
void TextureAsset::updateAsync() {
|
||||
if(this->state != 0x00) return;
|
||||
this->state = 0x01;
|
||||
this->loader.loadRaw(&this->buffer);
|
||||
std::cout << "Update texture tool" << std::endl;
|
||||
this->loader.open();
|
||||
this->buffer = (uint8_t*)memoryAllocate(this->loader.getSize());
|
||||
this->loader.read(this->buffer, this->loader.getSize());
|
||||
this->loader.close();
|
||||
this->state = 0x02;
|
||||
|
||||
// Parse header data.
|
||||
|
@ -19,11 +19,13 @@ void TilesetAsset::updateSync() {
|
||||
}
|
||||
|
||||
void TilesetAsset::updateAsync() {
|
||||
uint8_t *buffer;
|
||||
assertTrue(this->state == 0x00, "TilesetAsset::updateAsync: Initial state should be 0x00");
|
||||
|
||||
this->state = 0x01;
|
||||
this->loader.loadRaw(&buffer);
|
||||
this->loader.open();
|
||||
uint8_t *buffer = (uint8_t*)memoryAllocate(this->loader.getSize());
|
||||
this->loader.read(buffer, this->loader.getSize());
|
||||
this->loader.close();
|
||||
this->state = 0x02;
|
||||
|
||||
char *strCurrent = (char *)buffer;
|
||||
|
@ -103,7 +103,6 @@ void TrueTypeAsset::updateAsync() {
|
||||
struct TrueTypeAssetStyle style;
|
||||
|
||||
// Buffer
|
||||
this->loader.rewind();
|
||||
this->loader.setPosition(styleListBegin);
|
||||
read = this->loader.read(buffer, 32);
|
||||
assertTrue(read == 32, "TrueTypeAsset::updateAsync: Could not read variant");
|
||||
@ -116,7 +115,6 @@ void TrueTypeAsset::updateAsync() {
|
||||
styleListBegin += i + 1;
|
||||
|
||||
// Buffer
|
||||
this->loader.rewind();
|
||||
this->loader.setPosition(styleListBegin);
|
||||
read = this->loader.read(buffer, 32);
|
||||
assertTrue(read == 32, "TrueTypeAsset::updateAsync: Could not read variant style");
|
||||
|
Reference in New Issue
Block a user