mirror of
https://forgejo.xatacraft.ru/Sunshine/mkxp-sunshine.git
synced 2026-08-22 23:06:18 +00:00
Fixes and replasing simple messegeboxed with crash()
This commit is contained in:
parent
50edfe0e12
commit
c0c0e4d8ba
2 changed files with 22 additions and 30 deletions
|
|
@ -149,10 +149,6 @@ static void mriBindingInit(){
|
||||||
rb_gv_set("BTEST", rb_bool_new(shState->config().editor.battleTest));
|
rb_gv_set("BTEST", rb_bool_new(shState->config().editor.battleTest));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void showMsg(const std::string &msg){
|
|
||||||
shState->eThread().showMessageBox(msg.c_str());
|
|
||||||
}
|
|
||||||
|
|
||||||
static void printP(int argc, VALUE *argv, const char *convMethod, const char *sep){
|
static void printP(int argc, VALUE *argv, const char *convMethod, const char *sep){
|
||||||
VALUE dispString = rb_str_buf_new(128);
|
VALUE dispString = rb_str_buf_new(128);
|
||||||
ID conv = rb_intern(convMethod);
|
ID conv = rb_intern(convMethod);
|
||||||
|
|
@ -165,7 +161,7 @@ static void printP(int argc, VALUE *argv, const char *convMethod, const char *se
|
||||||
rb_str_buf_cat2(dispString, sep);
|
rb_str_buf_cat2(dispString, sep);
|
||||||
}
|
}
|
||||||
|
|
||||||
showMsg(RSTRING_PTR(dispString));
|
shState->eThread().showMessageBox(RSTRING_PTR(dispString));
|
||||||
}
|
}
|
||||||
|
|
||||||
RB_METHOD(mriPrint){
|
RB_METHOD(mriPrint){
|
||||||
|
|
@ -332,14 +328,15 @@ static VALUE evalString(VALUE string, VALUE filename, int *state){
|
||||||
|
|
||||||
static void runCustomScript(const std::string &filename){
|
static void runCustomScript(const std::string &filename){
|
||||||
std::string scriptData;
|
std::string scriptData;
|
||||||
|
char msg[1024];
|
||||||
|
|
||||||
if (!readFileSDL(filename.c_str(), scriptData)){
|
if (!readFileSDL(filename.c_str(), scriptData)){
|
||||||
showMsg(std::string("Unable to open '") + filename + "'");
|
snprintf(msg, sizeof msg, "Unable to open %s", filename);
|
||||||
|
crash(msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
evalString(newStringUTF8(scriptData.c_str(), scriptData.size()),
|
evalString(newStringUTF8(scriptData.c_str(), scriptData.size()), newStringUTF8(filename.c_str(), filename.size()), NULL);
|
||||||
newStringUTF8(filename.c_str(), filename.size()), NULL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
VALUE kernelLoadDataInt(const char *filename, bool rubyExc);
|
VALUE kernelLoadDataInt(const char *filename, bool rubyExc);
|
||||||
|
|
@ -354,14 +351,11 @@ struct BacktraceData{
|
||||||
static void runRMXPScripts(BacktraceData &btData){
|
static void runRMXPScripts(BacktraceData &btData){
|
||||||
const Config &conf = shState->rtData().config;
|
const Config &conf = shState->rtData().config;
|
||||||
const std::string &scriptPack = conf.game.scripts;
|
const std::string &scriptPack = conf.game.scripts;
|
||||||
|
char msg[512];
|
||||||
if (scriptPack.empty()){
|
|
||||||
showMsg("No game scripts specified (missing Game.ini?)");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!shState->fileSystem().exists(scriptPack.c_str())){
|
if (!shState->fileSystem().exists(scriptPack.c_str())){
|
||||||
showMsg("Unable to open '" + scriptPack + "'");
|
snprintf(msg, sizeof msg, "Unable to open '%s'", scriptPack.c_str());
|
||||||
|
crash(msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -373,12 +367,13 @@ static void runRMXPScripts(BacktraceData &btData){
|
||||||
scriptArray = kernelLoadDataInt(scriptPack.c_str(), false);
|
scriptArray = kernelLoadDataInt(scriptPack.c_str(), false);
|
||||||
printf("[runRMXPScripts] %s\n", scriptPack.c_str());
|
printf("[runRMXPScripts] %s\n", scriptPack.c_str());
|
||||||
}catch (const Exception &e){
|
}catch (const Exception &e){
|
||||||
showMsg(std::string("Failed to read script data: ") + e.msg);
|
snprintf(msg, sizeof msg, "Failed to read script data: %s", e.msg);
|
||||||
|
crash(msg);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!RB_TYPE_P(scriptArray, RUBY_T_ARRAY)){
|
if (!RB_TYPE_P(scriptArray, RUBY_T_ARRAY)){
|
||||||
showMsg("Failed to read script data");
|
crash("Failed to read script data");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -429,7 +424,7 @@ static void runRMXPScripts(BacktraceData &btData){
|
||||||
if (result != Z_OK){
|
if (result != Z_OK){
|
||||||
static char buffer[256];
|
static char buffer[256];
|
||||||
snprintf(buffer, sizeof(buffer), "Error decoding script %ld: '%s'\n", i, RSTRING_PTR(scriptName));
|
snprintf(buffer, sizeof(buffer), "Error decoding script %ld: '%s'\n", i, RSTRING_PTR(scriptName));
|
||||||
showMsg(buffer);
|
crash(buffer);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
21
src/main.cpp
21
src/main.cpp
|
|
@ -98,6 +98,7 @@ int rgssThreadFun(void *userdata){
|
||||||
initGLFunctions();
|
initGLFunctions();
|
||||||
}
|
}
|
||||||
catch (const Exception &exc){
|
catch (const Exception &exc){
|
||||||
|
crash(exc.msg.c_str());
|
||||||
rgssThreadError(threadData, exc.msg);
|
rgssThreadError(threadData, exc.msg);
|
||||||
SDL_GL_DestroyContext(glCtx);
|
SDL_GL_DestroyContext(glCtx);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
@ -129,7 +130,6 @@ int rgssThreadFun(void *userdata){
|
||||||
crash("Error creating OpenAL context");
|
crash("Error creating OpenAL context");
|
||||||
rgssThreadError(threadData, "Error creating OpenAL context");
|
rgssThreadError(threadData, "Error creating OpenAL context");
|
||||||
SDL_GL_DestroyContext(glCtx);
|
SDL_GL_DestroyContext(glCtx);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -138,6 +138,7 @@ int rgssThreadFun(void *userdata){
|
||||||
try{
|
try{
|
||||||
SharedState::initInstance(threadData);
|
SharedState::initInstance(threadData);
|
||||||
}catch (const Exception &exc){
|
}catch (const Exception &exc){
|
||||||
|
crash(exc.msg.c_str());
|
||||||
rgssThreadError(threadData, exc.msg);
|
rgssThreadError(threadData, exc.msg);
|
||||||
alcDestroyContext(alcCtx);
|
alcDestroyContext(alcCtx);
|
||||||
SDL_GL_DestroyContext(glCtx);
|
SDL_GL_DestroyContext(glCtx);
|
||||||
|
|
@ -160,7 +161,6 @@ int rgssThreadFun(void *userdata){
|
||||||
}
|
}
|
||||||
|
|
||||||
static void showInitError(const std::string &msg){
|
static void showInitError(const std::string &msg){
|
||||||
Debug() << msg;
|
|
||||||
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Error :(", msg.c_str(), 0);
|
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Error :(", msg.c_str(), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -194,7 +194,7 @@ static void setGamePathInRegistry() {
|
||||||
long keyCreateError = RegCreateKeyEx(HKEY_CURRENT_USER, TEXT("Software\\OneShot\\"), 0L, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &key, NULL);
|
long keyCreateError = RegCreateKeyEx(HKEY_CURRENT_USER, TEXT("Software\\OneShot\\"), 0L, NULL, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, NULL, &key, NULL);
|
||||||
|
|
||||||
if (keyCreateError != ERROR_SUCCESS){
|
if (keyCreateError != ERROR_SUCCESS){
|
||||||
showInitError("Unable to create key in registry.");
|
crash("Unable to create key in registry.");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
keyOpenError = ERROR_SUCCESS;
|
keyOpenError = ERROR_SUCCESS;
|
||||||
|
|
@ -202,7 +202,7 @@ static void setGamePathInRegistry() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (keyOpenError != ERROR_SUCCESS){
|
if (keyOpenError != ERROR_SUCCESS){
|
||||||
showInitError("Unable to open registry.");
|
crash("Unable to open registry.");
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
DWORD dataSize = (strlen(dataDir) + 1) * sizeof(char);
|
DWORD dataSize = (strlen(dataDir) + 1) * sizeof(char);
|
||||||
|
|
@ -211,12 +211,11 @@ static void setGamePathInRegistry() {
|
||||||
}
|
}
|
||||||
RegCloseKey(key);
|
RegCloseKey(key);
|
||||||
}
|
}
|
||||||
//SDL_free(dataDir); // not needed in sdl3
|
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
//TODO handle this for Linux/Mac
|
//TODO handle this for Linux/Mac
|
||||||
}
|
}
|
||||||
int main(int argc, char *argv[]){
|
int main(int argc, char *argv[]){
|
||||||
char msg[512];
|
char msg[512];
|
||||||
loadLanguageMetadata(); //there will be a segfault on fclose if I don't move it here
|
loadLanguageMetadata(); //there will be a segfault on fclose if I don't move it here
|
||||||
|
|
||||||
|
|
@ -281,7 +280,8 @@ int main(int argc, char *argv[]){
|
||||||
|
|
||||||
if (!conf.gameFolder.empty())
|
if (!conf.gameFolder.empty())
|
||||||
if (chdir(conf.gameFolder.c_str()) != 0){
|
if (chdir(conf.gameFolder.c_str()) != 0){
|
||||||
showInitError(std::string("Unable to switch into gameFolder ") + conf.gameFolder);
|
snprintf(msg, sizeof msg, "Unable to switch into gameFolder %s", conf.gameFolder);
|
||||||
|
crash(msg);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -296,7 +296,6 @@ int main(int argc, char *argv[]){
|
||||||
snprintf(msg, sizeof msg, "Error initializing SDL_ttf: %s", SDL_GetError());
|
snprintf(msg, sizeof msg, "Error initializing SDL_ttf: %s", SDL_GetError());
|
||||||
crash(msg);
|
crash(msg);
|
||||||
SDL_Quit();
|
SDL_Quit();
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -355,8 +354,7 @@ int main(int argc, char *argv[]){
|
||||||
|
|
||||||
#ifndef STEAM
|
#ifndef STEAM
|
||||||
/* Add controller bindings from embedded controller DB */
|
/* Add controller bindings from embedded controller DB */
|
||||||
SDL_IOStream *controllerDB = SDL_IOFromConstMem(assets_gamecontrollerdb_txt,
|
SDL_IOStream *controllerDB = SDL_IOFromConstMem(assets_gamecontrollerdb_txt, assets_gamecontrollerdb_txt_len);
|
||||||
assets_gamecontrollerdb_txt_len);
|
|
||||||
SDL_AddGamepadMappingsFromIO(controllerDB, 1);
|
SDL_AddGamepadMappingsFromIO(controllerDB, 1);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
@ -396,8 +394,7 @@ int main(int argc, char *argv[]){
|
||||||
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, conf.windowTitle.c_str(), "The RGSS script seems to be stuck and OneShot: Sunshine will now force quit", win);
|
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, conf.windowTitle.c_str(), "The RGSS script seems to be stuck and OneShot: Sunshine will now force quit", win);
|
||||||
|
|
||||||
if (!rtData.rgssErrorMsg.empty()){
|
if (!rtData.rgssErrorMsg.empty()){
|
||||||
Debug() << rtData.rgssErrorMsg;
|
crash(rtData.rgssErrorMsg.c_str());
|
||||||
SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, conf.windowTitle.c_str(), rtData.rgssErrorMsg.c_str(), win);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Clean up any remainin events */
|
/* Clean up any remainin events */
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue