// A função que carrega o Player // bool MiniShooter_Carrega() { return ATOR_CarregaAtorEstatico(MINISHOOTER, "miniShooter.png", 48, 48, 0, 0, 48, 48, animaMiniShooter, true, 0, 0, &MiniShooter_Atualiza); }
// Carrega dados do ator a partir de um arquivo de script lua bool ATOR_CarregaAtorEstaticoLua(const char *arquivo_lua, bool (*atualiza)(Ator* a, unsigned int mapa), char *chave) { // Nome do arquivo char arquivo[1024] = ""; // Inicia lua lua_State *estado_lua; CL2_Inicia(&estado_lua); CL2_AbreArquivo(arquivo_lua, estado_lua); // Carrega dados simples CL2_IniciaEstrutura(chave, estado_lua); int id = (int) CL2_DoubleEstrutura("id", estado_lua); int largura = (int) CL2_DoubleEstrutura("largura_quadro", estado_lua); int altura = (int) CL2_DoubleEstrutura("altura_quadro", estado_lua); int xbb = (int) CL2_DoubleEstrutura("x_bounding_box", estado_lua); int ybb = (int) CL2_DoubleEstrutura("y_bounding_box", estado_lua); int lbb = (int) CL2_DoubleEstrutura("largura_bounding_box", estado_lua); int abb = (int) CL2_DoubleEstrutura("altura_bounding_box", estado_lua); bool rotacionar = CL2_BoolEstrutura("rotacionar", estado_lua); CL2_StringEstrutura(arquivo, "arquivo", estado_lua); // Inicia animações CL2_IniciaSubEstrutura("animacoes", estado_lua); int qtde = (int)lua_objlen(estado_lua, -1) / 2; Animacao *animacoes = new Animacao[qtde]; // Carrega animações for (int i = 0; i < qtde; i++) { // Tempo lua_pushinteger(estado_lua, i*2+1); lua_gettable(estado_lua, -2); animacoes[i].tempo = lua_tointeger(estado_lua, -1); lua_pop(estado_lua,1); // Sequência de animação lua_pushinteger(estado_lua, i*2+2); lua_gettable(estado_lua, -2); animacoes[i].numQuadros = (int)lua_objlen(estado_lua, -1); int *quadros = new int[animacoes[i].numQuadros]; for (unsigned int j = 1; j <= animacoes[i].numQuadros; j++) { lua_pushinteger(estado_lua, j); lua_gettable(estado_lua, -2); quadros[j-1] = lua_tointeger(estado_lua, -1); lua_pop(estado_lua, 1); } memcpy(animacoes[i].quadros, quadros, animacoes[i].numQuadros * sizeof(int)); lua_pop(estado_lua,1); } CL2_EncerraSubEstrutura(estado_lua); bool aux = ATOR_CarregaAtorEstatico(id, arquivo, largura, altura, xbb, ybb, lbb, abb, animacoes, rotacionar, 0, 0, atualiza, qtde); estados_lua[id+ATOR_LUA_INI] = estado_lua; return aux; }
// A função que carrega o Player // bool Nave_Carrega() { return ATOR_CarregaAtorEstatico(NAVE, "nave_sheet.png", 96, 96, 5, 5, 90, 90, animaNave, true, sons, 3, &Nave_Atualiza); }
// A função que carrega o DarkPhoenix. // bool JOGO_CarregaBola() { return ATOR_CarregaAtorEstatico(BOLA, "graficos/inimigobola.png", 28, 28, 0, 0, 28, 28, animBola, false, 0, 0, &AtualizaBola); }