From 78e4b1615358fcf6d5247ab7ef7c865d6f2113fa Mon Sep 17 00:00:00 2001 From: ZakatTeamI2P Date: Sun, 19 Apr 2026 11:30:25 +0200 Subject: [PATCH] efesdg --- assets/oneshot.desktop | 0 scripts/Window_Settings.rb | 2 +- src/config.cpp | 39 ++++------- src/filesystem.cpp | 130 ++++++++++++------------------------- src/main.cpp | 3 +- src/oneshot.cpp | 4 +- windows/icon.ico | Bin 16958 -> 27125 bytes 7 files changed, 58 insertions(+), 120 deletions(-) mode change 100644 => 100755 assets/oneshot.desktop diff --git a/assets/oneshot.desktop b/assets/oneshot.desktop old mode 100644 new mode 100755 diff --git a/scripts/Window_Settings.rb b/scripts/Window_Settings.rb index 90eb5fe..8fa7ad3 100644 --- a/scripts/Window_Settings.rb +++ b/scripts/Window_Settings.rb @@ -155,7 +155,7 @@ class Window_Settings tr('Frameskip'), tr('In-Game Timer'), tr('Language'), - tr('Debug mode(DEVS ONLY!)'), + tr('Debug mode(!)'), tr('One Shot Mode(!)'), ] diff --git a/src/config.cpp b/src/config.cpp index b3ddaf2..624cbef 100644 --- a/src/config.cpp +++ b/src/config.cpp @@ -35,20 +35,16 @@ #include "util.h" #include "sdl-util.h" -namespace std -{ - std::ostream& operator<<(std::ostream &os, const std::vector &vec) - { - for (auto item : vec) - { +namespace std{ + std::ostream& operator<<(std::ostream &os, const std::vector &vec){ + for (auto item : vec){ os << item << " "; } return os; } } -static std::string prefPath(const char *org, const char *app) -{ +static std::string prefPath(const char *org, const char *app){ const char *path = PHYSFS_getPrefDir(org, app); if (!path) @@ -71,8 +67,7 @@ namespace po = boost::program_options; Config::Config() {} -void Config::read(int argc, char *argv[]) -{ +void Config::read(int argc, char *argv[]){ #define PO_DESC_ALL \ PO_DESC(debugMode, bool, false) \ PO_DESC(screenMode, bool, false) \ @@ -104,8 +99,7 @@ void Config::read(int argc, char *argv[]) editor.battleTest = false; /* Read arguments sent from the editor */ - if (argc > 1) - { + if (argc > 1){ std::string argv1 = argv[1]; /* RGSS1 uses "debug", 2 and 3 use "test" */ if (argv1 == "debug" || argv1 == "test") @@ -114,8 +108,7 @@ void Config::read(int argc, char *argv[]) editor.battleTest = true; /* Fix offset */ - if (editor.debug || editor.battleTest) - { + if (editor.debug || editor.battleTest){ argc--; argv++; } @@ -134,29 +127,24 @@ void Config::read(int argc, char *argv[]) po::variables_map vm; /* Parse command line options */ - try - { + try{ po::parsed_options cmdPo = po::command_line_parser(argc, argv).options(podesc).run(); po::store(cmdPo, vm); } - catch (po::error &error) - { + catch (po::error &error){ Debug() << "Command line:" << error.what(); } /* Parse configuration file */ SDLRWStream confFile(CONF_FILE, "r"); - if (confFile) - { - try - { + if (confFile){ + try{ po::store(po::parse_config_file(confFile.stream(), podesc, true), vm); po::notify(vm); } - catch (po::error &error) - { + catch (po::error &error){ Debug() << CONF_FILE":" << error.what(); } } @@ -188,8 +176,7 @@ void Config::read(int argc, char *argv[]) #ifdef STEAM /* Override fullscreen config if Big Picture */ - if (const char *env = std::getenv("SteamTenfoot")) - { + if (const char *env = std::getenv("SteamTenfoot")){ if (!strcmp(env, "1")) fullscreen = true; } diff --git a/src/filesystem.cpp b/src/filesystem.cpp index 546cc4f..c1aaeac 100644 --- a/src/filesystem.cpp +++ b/src/filesystem.cpp @@ -66,34 +66,28 @@ struct SDLRWIoContext static PHYSFS_Io *createSDLRWIo(const char *filename); -static SDL_IOStream *getSDLRWops(PHYSFS_Io *io) -{ +static SDL_IOStream *getSDLRWops(PHYSFS_Io *io){ return static_cast(io->opaque)->ops; } -static PHYSFS_sint64 SDLRWIoRead(struct PHYSFS_Io *io, void *buf, PHYSFS_uint64 len) -{ +static PHYSFS_sint64 SDLRWIoRead(struct PHYSFS_Io *io, void *buf, PHYSFS_uint64 len){ // return SDL_ReadIO(getSDLRWops(io), buf, 1, len); return SDL_ReadIO(getSDLRWops(io), buf, len); } -static int SDLRWIoSeek(struct PHYSFS_Io *io, PHYSFS_uint64 offset) -{ +static int SDLRWIoSeek(struct PHYSFS_Io *io, PHYSFS_uint64 offset){ return (SDL_SeekIO(getSDLRWops(io), offset, SDL_IOWhence::SDL_IO_SEEK_SET) != -1); } -static PHYSFS_sint64 SDLRWIoTell(struct PHYSFS_Io *io) -{ +static PHYSFS_sint64 SDLRWIoTell(struct PHYSFS_Io *io){ return SDL_SeekIO(getSDLRWops(io), 0, SDL_IOWhence::SDL_IO_SEEK_CUR); } -static PHYSFS_sint64 SDLRWIoLength(struct PHYSFS_Io *io) -{ +static PHYSFS_sint64 SDLRWIoLength(struct PHYSFS_Io *io){ return SDL_GetIOSize(getSDLRWops(io)); } -static struct PHYSFS_Io *SDLRWIoDuplicate(struct PHYSFS_Io *io) -{ +static struct PHYSFS_Io *SDLRWIoDuplicate(struct PHYSFS_Io *io){ SDLRWIoContext *ctx = static_cast(io->opaque); int64_t offset = io->tell(io); PHYSFS_Io *dup = createSDLRWIo(ctx->filename.c_str()); @@ -104,14 +98,12 @@ static struct PHYSFS_Io *SDLRWIoDuplicate(struct PHYSFS_Io *io) return dup; } -static void SDLRWIoDestroy(struct PHYSFS_Io *io) -{ +static void SDLRWIoDestroy(struct PHYSFS_Io *io){ delete static_cast(io->opaque); delete io; } -static PHYSFS_Io SDLRWIoTemplate = -{ +static PHYSFS_Io SDLRWIoTemplate ={ 0, 0, /* version, opaque */ SDLRWIoRead, 0, /* write */ @@ -123,16 +115,12 @@ static PHYSFS_Io SDLRWIoTemplate = SDLRWIoDestroy }; -static PHYSFS_Io *createSDLRWIo(const char *filename) -{ +static PHYSFS_Io *createSDLRWIo(const char *filename){ SDLRWIoContext *ctx; - try - { + try{ ctx = new SDLRWIoContext(filename); - } - catch (const Exception &e) - { + }catch (const Exception &e){ Debug() << "Failed mounting" << filename; return 0; } @@ -144,13 +132,11 @@ static PHYSFS_Io *createSDLRWIo(const char *filename) return io; } -static inline PHYSFS_File *sdlPHYS(void *userdata) -{ +static inline PHYSFS_File *sdlPHYS(void *userdata){ return static_cast(userdata); } -static Sint64 SDL_RWopsSize(void *userdata) -{ +static Sint64 SDL_RWopsSize(void *userdata){ PHYSFS_File *f = sdlPHYS(userdata); if (!f) @@ -159,8 +145,7 @@ static Sint64 SDL_RWopsSize(void *userdata) return PHYSFS_fileLength(f); } -static Sint64 SDL_RWopsSeek(void *userdata, Sint64 offset, SDL_IOWhence whence) -{ +static Sint64 SDL_RWopsSeek(void *userdata, Sint64 offset, SDL_IOWhence whence){ PHYSFS_File *f = sdlPHYS(userdata); if (!f) @@ -187,8 +172,7 @@ static Sint64 SDL_RWopsSeek(void *userdata, Sint64 offset, SDL_IOWhence whence) return (result != 0) ? PHYSFS_tell(f) : -1; } -static size_t SDL_RWopsRead(void *userdata, void *ptr, size_t size, SDL_IOStatus *status) -{ +static size_t SDL_RWopsRead(void *userdata, void *ptr, size_t size, SDL_IOStatus *status){ PHYSFS_File *f = sdlPHYS(userdata); if (!f) @@ -204,8 +188,7 @@ static size_t SDL_RWopsRead(void *userdata, void *ptr, size_t size, SDL_IOStatus return (result != -1) ? (result) : 0; } -static size_t SDL_RWopsWrite(void *userdata, const void *ptr, size_t size, SDL_IOStatus *status) -{ +static size_t SDL_RWopsWrite(void *userdata, const void *ptr, size_t size, SDL_IOStatus *status){ PHYSFS_File *f = sdlPHYS(userdata); if (!f) @@ -219,8 +202,7 @@ static size_t SDL_RWopsWrite(void *userdata, const void *ptr, size_t size, SDL_I return (result != -1) ? (result) : 0; } -static bool SDL_RWopsClose(void *userdata) -{ +static bool SDL_RWopsClose(void *userdata){ PHYSFS_File *f = sdlPHYS(userdata); if (!f) @@ -269,13 +251,10 @@ strcpySafe(char *dst, const char *src, /* Attempt to locate an extension string in a filename. * Either a pointer into the input string pointing at the * extension, or null is returned */ -static const char * -findExt(const char *filename) -{ +static const char *findExt(const char *filename){ size_t len; - for (len = strlen(filename); len > 0; --len) - { + for (len = strlen(filename); len > 0; --len){ if (filename[len] == '/') return 0; @@ -310,16 +289,14 @@ initReadOps(PHYSFS_File *handle, ops = SDL_OpenIO(&iface, handle); } -static void strTolower(std::string &str) -{ +static void strTolower(std::string &str){ for (size_t i = 0; i < str.size(); ++i) str[i] = tolower(str[i]); } // const Uint32 SDL_RWOPS_PHYSFS = SDL_RWOPS_UNKNOWN+10; -struct FileSystemPrivate -{ +struct FileSystemPrivate{ /* Maps: lower case full filepath, * To: mixed case full filepath */ BoostHash pathCache; @@ -345,16 +322,14 @@ FileSystem::FileSystem(bool allowSymlinks) PHYSFS_permitSymbolicLinks(1); } -FileSystem::~FileSystem() -{ +FileSystem::~FileSystem(){ delete p; if (PHYSFS_deinit() == 0) Debug() << "PhyFS failed to deinit."; } -void FileSystem::addPath(const char *path) -{ +void FileSystem::addPath(const char *path){ /* Try the normal mount first */ if (!PHYSFS_mount(path, 0, 1)) { @@ -367,8 +342,7 @@ void FileSystem::addPath(const char *path) } } -struct CacheEnumData -{ +struct CacheEnumData{ FileSystemPrivate *p; std::stack*> fileLists; @@ -393,8 +367,7 @@ struct CacheEnumData } /* Converts in-place */ - void toNFC(char *inout) - { + void toNFC(char *inout){ #ifdef OS_OSX size_t srcSize = strlen(inout); size_t bufSize = sizeof(buf); @@ -417,8 +390,7 @@ struct CacheEnumData }; static PHYSFS_EnumerateCallbackResult -cacheEnumCB(void *d, const char *origdir, const char *fname) -{ +cacheEnumCB(void *d, const char *origdir, const char *fname){ CacheEnumData &data = *static_cast(d); char fullPath[512]; @@ -437,8 +409,7 @@ cacheEnumCB(void *d, const char *origdir, const char *fname) PHYSFS_Stat stat; PHYSFS_stat(fullPath, &stat); - if (stat.filetype == PHYSFS_FILETYPE_DIRECTORY) - { + if (stat.filetype == PHYSFS_FILETYPE_DIRECTORY){ /* Create a new list for this directory */ std::vector &list = data.p->fileLists[lowerCase]; @@ -446,9 +417,7 @@ cacheEnumCB(void *d, const char *origdir, const char *fname) data.fileLists.push(&list); PHYSFS_enumerate(fullPath, cacheEnumCB, d); data.fileLists.pop(); - } - else - { + }else{ /* Get the file list for the directory we're currently * traversing and append this filename to it */ std::vector &list = *data.fileLists.top(); @@ -463,8 +432,7 @@ cacheEnumCB(void *d, const char *origdir, const char *fname) return PHYSFS_ENUM_OK; } -void FileSystem::createPathCache() -{ +void FileSystem::createPathCache(){ CacheEnumData data(p); data.fileLists.push(&p->fileLists[""]); PHYSFS_enumerate("", cacheEnumCB, &data); @@ -472,15 +440,13 @@ void FileSystem::createPathCache() p->havePathCache = true; } -struct FontSetsCBData -{ +struct FontSetsCBData{ FileSystemPrivate *p; SharedFontState *sfs; }; static PHYSFS_EnumerateCallbackResult -fontSetEnumCB (void *data, const char *dir, const char *fname) -{ +fontSetEnumCB (void *data, const char *dir, const char *fname){ FontSetsCBData *d = static_cast(data); /* Only consider filenames with font extensions */ @@ -516,15 +482,13 @@ fontSetEnumCB (void *data, const char *dir, const char *fname) return PHYSFS_ENUM_OK; } -void FileSystem::initFontSets(SharedFontState &sfs) -{ +void FileSystem::initFontSets(SharedFontState &sfs){ FontSetsCBData d = { p, &sfs }; PHYSFS_enumerate("Fonts", fontSetEnumCB, &d); } -struct OpenReadEnumData -{ +struct OpenReadEnumData{ FileSystem::OpenHandler &handler; SDL_IOStream* ops; @@ -554,8 +518,7 @@ struct OpenReadEnumData }; static PHYSFS_EnumerateCallbackResult -openReadEnumCB(void *d, const char *dirpath, const char *filename) -{ +openReadEnumCB(void *d, const char *dirpath, const char *filename){ OpenReadEnumData &data = *static_cast(d); char buffer[512]; const char *fullPath; @@ -567,12 +530,10 @@ openReadEnumCB(void *d, const char *dirpath, const char *filename) if (strncmp(filename, data.filename, data.filenameN) != 0) return PHYSFS_ENUM_OK; - if (!*dirpath) - { + if (!*dirpath){ fullPath = filename; } - else - { + else{ snprintf(buffer, sizeof(buffer), "%s/%s", dirpath, filename); fullPath = buffer; } @@ -592,8 +553,7 @@ openReadEnumCB(void *d, const char *dirpath, const char *filename) PHYSFS_File *phys = PHYSFS_openRead(fullPath); - if (!phys) - { + if (!phys){ /* Failing to open this file here means there must * be a deeper rooted problem somewhere within PhysFS. * Just abort alltogether. */ @@ -614,8 +574,7 @@ openReadEnumCB(void *d, const char *dirpath, const char *filename) return PHYSFS_ENUM_OK; } -void FileSystem::openRead(OpenHandler &handler, const char *filename) -{ +void FileSystem::openRead(OpenHandler &handler, const char *filename){ char buffer[512]; size_t len = strcpySafe(buffer, filename, sizeof(buffer), -1); char *delim; @@ -634,8 +593,7 @@ void FileSystem::openRead(OpenHandler &handler, const char *filename) const char *file = buffer; const char *dir = ""; - if (!root) - { + if (!root){ /* Cut the buffer in half so we can use it * for both filename and directory path */ *delim = '\0'; @@ -646,17 +604,14 @@ void FileSystem::openRead(OpenHandler &handler, const char *filename) OpenReadEnumData data(handler, file, len + buffer - delim - !root, p->havePathCache ? &p->pathCache : 0); - if (p->havePathCache) - { + if (p->havePathCache){ /* Get the list of files contained in this directory * and manually iterate over them */ const std::vector &fileList = p->fileLists[dir]; for (size_t i = 0; i < fileList.size(); ++i) openReadEnumCB(&data, dir, fileList[i].c_str()); - } - else - { + }else{ PHYSFS_enumerate(dir, openReadEnumCB, &data); } @@ -678,7 +633,6 @@ void FileSystem::openReadRaw(SDL_IOStream* &stream, initReadOps(handle, stream); } -bool FileSystem::exists(const char *filename) -{ +bool FileSystem::exists(const char *filename){ return PHYSFS_exists(filename); } diff --git a/src/main.cpp b/src/main.cpp index d41c1c8..78c5c6c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -389,8 +389,7 @@ int main(int argc, char *argv[]){ if (rtData.rqTermAck) SDL_WaitThread(rgssThread, 0); else - SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, conf.windowTitle.c_str(), - "The RGSS script seems to be stuck and OneShot 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()){ Debug() << rtData.rgssErrorMsg; diff --git a/src/oneshot.cpp b/src/oneshot.cpp index 4d0ec02..fd77b99 100644 --- a/src/oneshot.cpp +++ b/src/oneshot.cpp @@ -22,7 +22,6 @@ #include #include #include - #include #elif defined __APPLE__ || __linux__ #include #include @@ -164,8 +163,7 @@ static WCHAR *w32_toWide(const char *str){ #endif Oneshot::Oneshot(RGSSThreadData &threadData) : - threadData(threadData) -{ + threadData(threadData){ p = new OneshotPrivate(); p->window = threadData.window; p->savePath = threadData.config.commonDataPath.substr(0, threadData.config.commonDataPath.size() - 1); diff --git a/windows/icon.ico b/windows/icon.ico index 2a10780dd1c609077bcc4a2cbd42ddfe422d5aac..4ba96df546ae0a75d8190d14b8bf95ee74e65c06 100644 GIT binary patch literal 27125 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 SZf9`!013un+F|~m8U8=8=%V)k literal 16958 zcmd^{ONbps6ozXaVaUc1L_sBw8zhY4!hj?y!W~2iJ_AwQh>Ju>LUx}W{;KYJ zoT`a2bNaWkV)VP)EI(_^{l=JOv69THm~=-gyJ~*VD#6_G*ublSbY!GWxpEiSCW0m!^WP`l%XtjI$dMu7t*r(I?;^{)25CTUKS7F-m}o&?8kqVW36fn z@;|y^>}%f``{<$4_XAt7X&Tg(k{jX-_PKdupEzplhrf@Gxu{(}_|4eI-!OJ=E~~q5 z3pQcfBKBD=?(e&Q!%AAT;`2H1v;w z?TyFo+xF}&WB0w8Yy)f`h4_|2zcZg5`l>y+J$@fP|Cz={jl;3ciZ>k(x~iKQ>)MRn zx4|pt2k?UdEOm&vG&9HX&U+ng5BDD%Xalg+Ss$>T2=7rxV_loR_p0{CR&0(jC=RA! zi1lQs%N*B+alQ(3J|CO0J;tJV)moYTL}op|k@I^VQ{885&*2AK*`A3#Rj9+duCC6q z@~8hW_VCxn@_jD9XzYXgdQ6-&@|e%dWYowi;&pg6DtggOP`QulO z-T7qUx;wWf`tosX zrYoKE8{%Zk;%NmGIf%=RGN&7grHwC`+AS6Ea7655N@5Qyk2m@Ugml*7!~RHhimz zcm7Aoe#9%P5mJY`!ER(X9S^_+wn!eBA$;s%oxf+LdEYZ$Nmk6*zeU`XsGDg6bkunt zkJ!bzRJxryuVHQUDYy#jPNa>qv_m;PgSyF_UAGot?8W4 z{GOA|H#{yvR*;XbVf!U62ew#_;{Hr3qz~hxj%5;OU6=DoGKLQ`)~VP~gsdFUs|ACz~ zKp4Lot$*aRn)>=jI#c6YSz5vR=TwZp@%mRjt5}ZWlUx5vR~gQtyu|t!?Cb%8?d%bX z>X)T&;{8u%|J%{IK^e}nyteOu!4~zk-~TGf-7#}{_*t5sceL660j8W^%KJaSpYeZj z-=?ge%ktXl{{oY6#vJ>R@bBS!@SG#9#ws8D;K2aKCQcXVTMXBi^;d-N35*558S4D-zm``*qwgn}*%v(80L7 zWB(od`&hspyY8Zr{&eck&{v{P3c&czhB+^?I4{iEnOcy6HI!2p&f zbWD}Pcfg#?{kl=?n`B+E=jJ+W2g4|IUX?=|5Xbl4ru%Sw?}>LFo3VXVT9knH-hb9O zpBU@FKCb)Ev>$CS@E**_{de$t;#|ejWIw^4D(syV4{eZ-m! z=`Q*EN5Kn({{X)NzLjv7Q1QaHsF{aMWTOLJZ6^GQ_!sf94$K!y8@5fTiwtDN_Z9WH zX~^F(^LLH>ofCiefb)0a{w#8;fB$Z+U0>3VwR*kI5XvpNjc`q0HX-e-;9tV7wYLa& zxni#18qX@YN;uamP6Zwn^3saVxatz%s!M5o y$LT}g4nFkl