pyGAP / game / engine / text / language.cpp

#include "text/language.h"

#include <cstdio>

#include "text/pack.h"
#include "io/fs/base.h"

#include "formats/text.h"


namespace text {


Language::Language() :
    fs_(NULL),
    pack_(NULL)
{}


Language::~Language() {
    delete fs_;
    delete pack_;
}


void Language::set(const char* language) {
    if (!language)
        return;

    char buffer[32];
    sprintf(buffer, "assets/text_%s.pak", language);

    delete fs_;
    delete pack_;

    fs_ = ::io::fs::open(buffer);
    pack_ = NULL;
}


void Language::open(const char* filename, const char* language) {
    set(language);

    if (!fs_)
        return;

    uint8_t* buffer = fs_->read(filename);
    if (!buffer)
        return;

    if (pack_)
        delete pack_;
    pack_ = new Pack();
    pack_->init(formats::text::Pack::allocate(buffer));
}


String* Language::create_string(uint16_t id) {
    return pack_ ? pack_->create_string(id) : NULL;
}


} /* namespace text */
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.