diff --git a/byond-extools.dll b/byond-extools.dll index bd6b34c48e..718b475f9a 100644 Binary files a/byond-extools.dll and b/byond-extools.dll differ diff --git a/code/__DEFINES/_extools.dm b/code/__DEFINES/_extools.dm new file mode 100644 index 0000000000..4513243aae --- /dev/null +++ b/code/__DEFINES/_extools.dm @@ -0,0 +1 @@ +#define EXTOOLS (world.system_type == MS_WINDOWS ? "byond-extools.dll" : "libbyond-extools.so") diff --git a/code/__DEFINES/atmospherics.dm b/code/__DEFINES/atmospherics.dm index 621af2c811..dad2a38afd 100644 --- a/code/__DEFINES/atmospherics.dm +++ b/code/__DEFINES/atmospherics.dm @@ -281,8 +281,6 @@ GLOBAL_LIST_INIT(atmos_adjacent_savings, list(0,0)) #define CALCULATE_ADJACENT_TURFS(T) SSadjacent_air.queue[T] = 1 #endif -#define EXTOOLS (world.system_type == MS_WINDOWS ? "byond-extools.dll" : "libbyond-extools.so") - GLOBAL_VAR(atmos_extools_initialized) // this must be an uninitialized (null) one or init_monstermos will be called twice because reasons #define ATMOS_EXTOOLS_CHECK if(!GLOB.atmos_extools_initialized){\ GLOB.atmos_extools_initialized=TRUE;\ diff --git a/code/__HELPERS/_extools_api.dm b/code/__HELPERS/_extools_api.dm new file mode 100644 index 0000000000..af348dc939 --- /dev/null +++ b/code/__HELPERS/_extools_api.dm @@ -0,0 +1,5 @@ +#define EXTOOLS_LOGGING // rust_g is used as a fallback if this is undefined + +/proc/extools_log_write() + +/proc/extools_finalize_logging() diff --git a/code/__HELPERS/_logging.dm b/code/__HELPERS/_logging.dm index 62e6c4daf9..888c20003f 100644 --- a/code/__HELPERS/_logging.dm +++ b/code/__HELPERS/_logging.dm @@ -4,10 +4,15 @@ #define SEND_SOUND(target, sound) DIRECT_OUTPUT(target, sound) #define SEND_TEXT(target, text) DIRECT_OUTPUT(target, text) #define WRITE_FILE(file, text) DIRECT_OUTPUT(file, text) +#ifdef EXTOOLS_LOGGING +// proc hooked, so we can just put in standard TRUE and FALSE +#define WRITE_LOG(log, text) extools_log_write(log,text,TRUE) +#define WRITE_LOG_NO_FORMAT(log, text) extools_log_write(log,text,FALSE) +#else //This is an external call, "true" and "false" are how rust parses out booleans #define WRITE_LOG(log, text) rustg_log_write(log, text, "true") #define WRITE_LOG_NO_FORMAT(log, text) rustg_log_write(log, text, "false") - +#endif //print a warning message to world.log #define WARNING(MSG) warning("[MSG] in [__FILE__] at line [__LINE__] src: [UNLINT(src)] usr: [usr].") /proc/warning(msg) @@ -216,7 +221,11 @@ /* Close open log handles. This should be called as late as possible, and no logging should hapen after. */ /proc/shutdown_logging() +#ifdef EXTOOLS_LOGGING + extools_finalize_logging() +#else rustg_log_close_all() +#endif /* Helper procs for building detailed log lines */ diff --git a/code/game/world.dm b/code/game/world.dm index 2d174c86e5..121d51136d 100644 --- a/code/game/world.dm +++ b/code/game/world.dm @@ -11,6 +11,11 @@ GLOBAL_LIST(topic_status_cache) /world/New() if (fexists(EXTOOLS)) call(EXTOOLS, "maptick_initialize")() + #ifdef EXTOOLS_LOGGING + call(EXTOOLS, "init_logging")() + else + CRASH("[EXTOOLS] does not exist!") + #endif enable_debugger() #ifdef REFERENCE_TRACKING enable_reference_tracking() @@ -274,6 +279,7 @@ GLOBAL_LIST(topic_status_cache) GM.__gasmixture_unregister() num_deleted++ log_world("Deallocated [num_deleted] gas mixtures") + shutdown_logging() // makes sure the thread is closed before end, else we terminate ..() /world/proc/update_status() diff --git a/libbyond-extools.so b/libbyond-extools.so index 8e17f952f2..052a8cb037 100644 Binary files a/libbyond-extools.so and b/libbyond-extools.so differ diff --git a/tgstation.dme b/tgstation.dme index e742498527..f0ca748803 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -17,6 +17,7 @@ #include "_maps\_basemap.dm" #include "code\_compile_options.dm" #include "code\world.dm" +#include "code\__DEFINES\_extools.dm" #include "code\__DEFINES\_globals.dm" #include "code\__DEFINES\_protect.dm" #include "code\__DEFINES\_tick.dm" @@ -147,6 +148,7 @@ #include "code\__DEFINES\storage\_storage.dm" #include "code\__DEFINES\storage\volumetrics.dm" #include "code\__HELPERS\_cit_helpers.dm" +#include "code\__HELPERS\_extools_api.dm" #include "code\__HELPERS\_lists.dm" #include "code\__HELPERS\_logging.dm" #include "code\__HELPERS\_string_lists.dm"