- Es pot canviar la resolució des del programa abm res(w,h)

- La finestra es resizable
- Es permet arrancar des d'un arxiu .lua passat com a paràmetre.
This commit is contained in:
2023-11-28 19:03:13 +01:00
parent 7569c24d04
commit 63eaaa857e
5 changed files with 44 additions and 14 deletions

12
lua.cpp
View File

@@ -825,6 +825,13 @@ extern "C" {
} }
} }
static int cpp_res(lua_State *L) {
const int w = luaL_optinteger(L, 1, 160);
const int h = luaL_optinteger(L, 2, 120);
setres(w, h);
return 0;
}
static int cpp_getconf(lua_State *L) { static int cpp_getconf(lua_State *L) {
const char* key = luaL_checkstring(L, 1); const char* key = luaL_checkstring(L, 1);
const char* value = getconfig(key); const char* value = getconfig(key);
@@ -991,6 +998,7 @@ void push_lua_funcs() {
lua_pushcfunction(L,cpp_zoom); lua_setglobal(L, "zoom"); lua_pushcfunction(L,cpp_zoom); lua_setglobal(L, "zoom");
lua_pushcfunction(L,cpp_fullscreen); lua_setglobal(L, "fullscreen"); lua_pushcfunction(L,cpp_fullscreen); lua_setglobal(L, "fullscreen");
lua_pushcfunction(L,cpp_cursor); lua_setglobal(L, "cursor"); lua_pushcfunction(L,cpp_cursor); lua_setglobal(L, "cursor");
lua_pushcfunction(L,cpp_res); lua_setglobal(L, "res");
lua_pushcfunction(L,cpp_getconf); lua_setglobal(L, "getconf"); lua_pushcfunction(L,cpp_getconf); lua_setglobal(L, "getconf");
lua_pushcfunction(L,cpp_setconf); lua_setglobal(L, "setconf"); lua_pushcfunction(L,cpp_setconf); lua_setglobal(L, "setconf");
@@ -1154,7 +1162,7 @@ int MiniLoader(lua_State *L) {
return 1; return 1;
} }
void lua_init() { void lua_init(const char *main_lua_file) {
L = luaL_newstate(); L = luaL_newstate();
luaL_openlibs(L); luaL_openlibs(L);
push_lua_funcs(); push_lua_funcs();
@@ -1162,7 +1170,7 @@ void lua_init() {
luaL_dostring(L, "table.insert(package.searchers,2,mini_loader)\n"); luaL_dostring(L, "table.insert(package.searchers,2,mini_loader)\n");
int size; int size;
char* buffer = file_getfilebuffer("main.lua", size); char* buffer = file_getfilebuffer(main_lua_file, size);
if (luaL_loadbuffer(L, buffer, size, "main")) { if (luaL_loadbuffer(L, buffer, size, "main")) {
debug("LOADING ERROR: "); debug("LOADING ERROR: ");
debug("%s\n",lua_tostring(L, -1)); debug("%s\n",lua_tostring(L, -1));

2
lua.h
View File

@@ -1,7 +1,7 @@
#pragma once #pragma once
bool lua_is_playing(); bool lua_is_playing();
void lua_init(); void lua_init(const char* main_lua_file = "main.lua");
void lua_call_init(); void lua_call_init();
void lua_call_update(); void lua_call_update();
void lua_quit(); void lua_quit();

View File

@@ -41,6 +41,8 @@ FILE *file = NULL;
//uint8_t file_mode = 0; //uint8_t file_mode = 0;
bool file_ignore_comma=true; bool file_ignore_comma=true;
char main_lua_file[200] = "main.lua";
bool override_ini = false;
//char lua_files[1024]; //char lua_files[1024];
#define DEST(x, y) dest_surface->p[x+y*dest_surface->w] #define DEST(x, y) dest_surface->p[x+y*dest_surface->w]
@@ -229,7 +231,7 @@ void createDisplay() {
if (screen_zoom <= 0) screen_zoom = 1; if (screen_zoom <= 0) screen_zoom = 1;
while (screen_width*screen_zoom > desktop_width || screen_height*screen_zoom > desktop_height) screen_zoom--; while (screen_width*screen_zoom > desktop_width || screen_height*screen_zoom > desktop_height) screen_zoom--;
mini_win = SDL_CreateWindow(window_title, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, screen_width*screen_zoom, screen_height*screen_zoom, screen_fullscreen?SDL_WINDOW_FULLSCREEN_DESKTOP:SDL_WINDOW_SHOWN); mini_win = SDL_CreateWindow(window_title, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, screen_width*screen_zoom, screen_height*screen_zoom, screen_fullscreen?SDL_WINDOW_FULLSCREEN_DESKTOP:SDL_WINDOW_RESIZABLE);
windowID = SDL_GetWindowID(mini_win); windowID = SDL_GetWindowID(mini_win);
mini_ren = SDL_CreateRenderer(mini_win, -1, 0); mini_ren = SDL_CreateRenderer(mini_win, -1, 0);
//SDL_CreateWindowAndRenderer(512,512,0,&mini_win,&mini_ren); //SDL_CreateWindowAndRenderer(512,512,0,&mini_win,&mini_ren);
@@ -262,6 +264,15 @@ void initGamePad() {
int main(int argc,char*argv[]){ int main(int argc,char*argv[]){
if (argc>1)
{
file_setresourcefolder("./");
file_setsource(SOURCE_FOLDER);
strcpy(main_lua_file, argv[1]);
strcpy(window_title, argv[1]);
override_ini = true;
}
while (!should_quit) { while (!should_quit) {
should_exit=false; should_exit=false;
@@ -279,6 +290,8 @@ int main(int argc,char*argv[]){
strcat(res_file, "/../Resources/data.jrf"); strcat(res_file, "/../Resources/data.jrf");
file_setresourcefilename(res_file); file_setresourcefilename(res_file);
#endif #endif
if (!override_ini)
{
read_ini(); read_ini();
file_setconfigfolder(config_folder); file_setconfigfolder(config_folder);
const char *zoom = file_getconfigvalue("zoom"); const char *zoom = file_getconfigvalue("zoom");
@@ -287,6 +300,7 @@ int main(int argc,char*argv[]){
if (fullscreen) screen_fullscreen=strcmp(fullscreen, "true")==0?true:false; if (fullscreen) screen_fullscreen=strcmp(fullscreen, "true")==0?true:false;
const char *cursor = file_getconfigvalue("cursor"); const char *cursor = file_getconfigvalue("cursor");
if (cursor) screen_cursor=strcmp(cursor, "true")?true:false; if (cursor) screen_cursor=strcmp(cursor, "true")?true:false;
}
setdest(newsurf(screen_width, screen_height)); setdest(newsurf(screen_width, screen_height));
@@ -314,7 +328,7 @@ int main(int argc,char*argv[]){
#ifdef DEBUG #ifdef DEBUG
debug("MINI v%s\n",MINI_VERSION); debug("MINI v%s\n",MINI_VERSION);
#endif #endif
lua_init(); lua_init(main_lua_file);
lua_call_init(); lua_call_init();
Uint32 dt=SDL_GetTicks(); Uint32 dt=SDL_GetTicks();
@@ -1270,6 +1284,13 @@ void setzoom(const int value) {
file_setconfigvalue("zoom", SDL_itoa(screen_zoom, strzoom, 10)); file_setconfigvalue("zoom", SDL_itoa(screen_zoom, strzoom, 10));
} }
void setres(const int w, const int h) {
screen_width = w;
screen_height = h;
destroyDisplay();
createDisplay();
}
bool getfullscreen() { bool getfullscreen() {
return screen_fullscreen; return screen_fullscreen;
} }

1
mini.h
View File

@@ -285,6 +285,7 @@ void stopsound(int soundchannel);
int getzoom(); int getzoom();
void setzoom(const int value); void setzoom(const int value);
void setres(const int w, const int h);
bool getfullscreen(); bool getfullscreen();
void setfullscreen(const bool value); void setfullscreen(const bool value);
bool getcursor(); bool getcursor();

View File

@@ -1,3 +1,3 @@
#pragma once #pragma once
#define MINI_VERSION "0.9.82d" #define MINI_VERSION "0.9.86d"