#include <stdio.h>
#include "PNGImageLoader.h"
#include "Game.h"
String vmfiles[] =
{
"luasrc/Consts.lua",
"luasrc/Entity.lua",
"luasrc/AbstractTimer.lua",
"luasrc/Timer.lua",
"uisrc/UICore.lua",
"uisrc/test.lua"
};
RTexture* loadPng(Renderer* renderer, const char* file);
int main(int argc, char** argv)
{
Game TheGame;
//Read game configuration file, and then process command line arguments
//so that they can override what is stored on disk.
TheGame.readConfig();
if(argc > 1)
{
int i;
for(i=1; i<argc; i++)
{
//Accept '-game' command line argument
if(strcmp(argv[i], "-game") == 0)
{
if(i+1 < argc)
TheGame.setConfigValue("GAME", argv[i+1]);
else
{
printf("Expected game name after '-game'\n");
return 1;
}
}
}
}
if(!TheGame.initialize())
return 2;
//Main game loop. Simple, I know.
while(TheGame.frame())
;
#if 0
UIGC* gc;
UIEngine UI(&vm);
bool exit_time = false;
gc = UI.getGC();
gc->renderer = &renderer;
gc->wndclose = loadPng(&renderer, "images/wndclose.png");
gc->wndborder = loadPng(&renderer, "images/wndborder.png");
gc->wndcorner = loadPng(&renderer, "images/wndcorner.png");
gc->wndbkg = loadPng(&renderer, "images/wndbkg.png");
gc->button = loadPng(&renderer, "images/btn.png");
gc->minalpha = 0.1f;
gc->maxalpha = 1.0f;
int i;
for(i=0; i<sizeof(vmfiles)/sizeof(String); i++)
{
if(vm.loadScriptFromFile(vmfiles[i]) == false)
printf("Failed to load %s!\n", vmfiles[i].c_str());
else
printf("Loaded %s!\n", vmfiles[i].c_str());
}
#endif
TheGame.shutdown();
}
RTexture* loadPng(Renderer* renderer, const char* file)
{
FILE* fp = fopen(file, "rb");
RTexture* tex = NULL;
int size;
void* buf;
if(fp == NULL)
return NULL;
fseek(fp, 0, SEEK_END);
size = ftell(fp);
rewind(fp);
buf = malloc(size);
fread(buf, 1, size, fp);
fclose(fp);
PNGImageLoader loader(buf, size);
if(!loader.readHeader())
printf("Failed to read PNG header\n");
else
{
printf("%dx%dx%d surface\n", loader.getWidth(), loader.getHeight(), loader.getBPP());
tex = renderer->createTexture(loader.getWidth(), loader.getHeight(), loader.hasAlpha(), false);
void* addr = tex->lock();
if(loader.readData(addr))
printf("successfully loaded png\n");
else
printf("png load fail\n");
tex->unlock();
}
free(buf);
return tex;
}