Este blog esta em reforma no momento.

Implementações na GameKit pt1


Deu um trampo mexer no CMake. Mas depois que peguei as manhas foi só jogar as coisas.
As classes que eu já tinha montado, Carregamento de dados pela Web e Banco de Dados não deram trabalho adicional para se misturarem no código.

A OgreKit tem bons recursos, mas não tem o de carregar arquivos de uma página da Internet.
Assim criei minha própria classe de carregamento WWP_URLLoader.

Além da classe carregar os arquivos da Internet eu adicionei o opcional dela gravar os arquivos numa pasta temporária, antes de iniciar o carregamento o sistema procura por um arquivo correspondente ao endereço sendo carregado e o retorna no lugar do HTML.

No script Lua fica fácil controlar o cache e sua sintaxe não ficou humanamente ruim:
WWPNet.load( "http://url...", "funcaoQueRecebeOsDados", "funcaoQueTrataErros", usarArquivo[true/false])

Isso também permite que eu carregue imagens e outros arquivos da Internet (como os paths de atualização).
Alguém ai quer por um banner no jogo?

Outra necessidade foi implementar um banco de dados, a minha classe de SQLite estava pronta. Apesar de primária, apenas retorna uma tabela SQL em forma de metatabela de Lua, ela esta funcionando e dando conta do recado.

Agora tenho todos os dados de arranque da Engine dentro do banco de dados.

Agora a engine conta com as seguintes novas funções:
SQLite.open_databaseSQLite.close
SQLite.getMainDatabase{SQLite}:query
{SQLite}:fetch{SQLite}:reset
{SQLite}:sql_errorWWPNet.load
WWPNet.clearCacheWWPNet.checkUpdates

Preparar para receber funções de Lua em C++ exige bastante cuidado, por isso Lua tem muitas funções de teste. Aqui nesta função eu faço testes para ver se o argumento existe e se o tipo dele bate com a função.

Não notei onde fica isso na GameKit, talvez tenham tido pouca preocupação com isso.

O próximo trabalho sera fazer uma implementação emergencial para manipular a libRocket.

Um pouco de desanimo ocorreu quando eu tentei trabalhar com o padrão da GameKit, mas falta comentários no código e o manual das API não passa de um arquivo gerado automaticamente apartir do código, ou seja não tem nenhuma informação a mais além de nomes de variáveis para você adivinhar a funcionalidade.

Comentários