LEO

Код для работы с файлами игровых уровней построенных при помощи редактора уровней Level Editor Open и его онлайн версии.

Платформа: Linux/Windows
Язык программирования: C++
Лицензия: GNU General Public License v3

Данный код предоставляет основные возможности для работы с leo-файлами. Не являясь статической или распределяемой библиотекой, этот код легко подключить к проекту в компиляцию и сразу же приступить к использованию.

Пример загрузки уровня:

#include "leo.h"

...

    if( leoLoad( "test.leo" ) != LEO_OK )
        return false;

Загрузка уровня выполняется вызовом одной функции leoLoad( char *fileName ). Учтите (!), что модуль LEO НЕ выполняет загрузку текстур, используемых в уровне.

Пример получения информации о слоях:

#include "leo.h"

...

    int result = leoOpen( "test.leo" );
    if( result != LEO_OK ) {
        printf( "ERROR: 0x%04x\n", result );
        return 0;
    }

    /* Счётчик слоёв */
    int i = 0;

    /* Переменная используется для вычисления размера чанка */
    long p = 4;

    /* Выполняем цикл, пока возвращается код отсутствия ошибок */
    while( ( result = leoGetLayerDescription( i, &leoLayerDesc ) ) == LEO_OK ) {
        /* Выводим информацию о слое */
        printf( "Layer #%i\n\tTitle: %s\n\tType: %s\n\tTexture: %s\n\tTexture size: %ix%i\n",
            i++,
            leoLayerDesc.title,
            types[ leoLayerDesc.chunk.type ],
            leoLayerDesc.fileName,
            leoLayerDesc.tex_width, leoLayerDesc.tex_height );

        /* Если это тайловый слой, то покажем размеры кадра, карты и точку данных в файле */
        if( leoLayerDesc.chunk.type == LEO_LAYER_TYPE_TILES )
            printf( "\tFrame size: %ix%i\n\tMap size: %ix%i\n\tData: 0x%08x\n",
                leoLayerDesc.spr_width, leoLayerDesc.spr_height,
                leoLayerDesc.width,
                leoLayerDesc.height,
                leoLayerDesc.data );

        /* Размер чанка */
        printf( "\tSize of chunk: %i\n", leoLayerDesc.chunk.next - p );

        /* Запоминаем текущую точку, чтобы вычислить размер очередного чанка */
        p = leoLayerDesc.chunk.next;

        /* Освобождаем дескриптор */
        delete( leoLayerDesc.title );
        delete( leoLayerDesc.fileName );
    }

    /* Закрываем файл */
    leoClose();

Полный код программы, извлекающей информацию о слоях, доступен в архиве leo. Файл leodesc.cpp.

В начало