ff_u_log_reload
Log reloading development file events.
Does not automatically refresh / recreate what is reloaded as this can disrupt testing, or lead to incomprehensible temporary bugs.
Variables
ENABLE__FF_U_LOG_RELOAD: (string) (opt-out) Set to “N” on module to disable unit.
Source code
// @code
#include "ff_i_core"
const string ENABLE__FF_U_LOG_RELOAD = "ENABLE__FF_U_LOG_RELOAD";
// =============================================================================
//! @brief Log that a development resource was added, modified, or removed.
//! @param sAction Human-readable action verb ("added to", "modified in", "removed from").
void OnResourceChange(string sAction);
void OnResourceChange(string sAction)
{
/*
Event Data Tag | Type | Notes
---------------|--------|-------
ALIAS | string | NWNX for /nwnx, DEVELOPMENT for /development. Also supports valid aliases from the Custom Resman Definition File
RESREF | string | The ResRef of the file
TYPE | int | The type of the file, see NWNX_UTIL_RESREF_TYPE_*
*/
string sAlias = NWNX_Events_GetEventData("ALIAS");
string sResRef = NWNX_Events_GetEventData("RESREF");
int nType = StringToInt(NWNX_Events_GetEventData("TYPE"));
string sType = "";
switch (nType)
{
case NWNX_UTIL_RESREF_TYPE_AREA_ARE: return; // Done by GIT event
case NWNX_UTIL_RESREF_TYPE_AREA_GIT: sType = "area"; break;;
case NWNX_UTIL_RESREF_TYPE_AREA_GIC: return; // Done by GIT event
case NWNX_UTIL_RESREF_TYPE_CREATURE: sType = "creature"; break;
case NWNX_UTIL_RESREF_TYPE_DIALOG: sType = "dialog"; break;
case NWNX_UTIL_RESREF_TYPE_DOOR: sType = "door"; break;
case NWNX_UTIL_RESREF_TYPE_ENCOUNTER: sType = "encounter"; break;
case NWNX_UTIL_RESREF_TYPE_ITEM: sType = "item"; break;
case NWNX_UTIL_RESREF_TYPE_NCS: sType = "script"; break;
case NWNX_UTIL_RESREF_TYPE_NSS: return;
case NWNX_UTIL_RESREF_TYPE_PLACEABLE: sType = "placeable"; break;
case NWNX_UTIL_RESREF_TYPE_SOUND: sType = "sound"; break;
case NWNX_UTIL_RESREF_TYPE_STORE: sType = "store"; break;
case NWNX_UTIL_RESREF_TYPE_TRIGGER: sType = "trigger"; break;
case NWNX_UTIL_RESREF_TYPE_TWODA: sType = "2da"; break;
case NWNX_UTIL_RESREF_TYPE_WAYPOINT: sType = "waypoint"; break;
case NWNX_UTIL_RESREF_TYPE_MODULE: sType = "module"; break;
case NWNX_UTIL_RESREF_TYPE_PALETTE: return; // Not interesting to report, eg: 'itempalcus'
default:
sType = IntToString(nType);
break;
}
string sLog = "Resource '" + sResRef + "' (" + sType + ") was " + sAction + " " + sAlias + " folder.";
LogNotice(sLog, CONSOLE_COLOR_YELLOW);
}
// -----------------------------------------------------------------------------
void main()
{
if (!GetModuleFlag(ENABLE__FF_U_LOG_RELOAD, TRUE))
return;
string sEvent = GetCurrentEvent();
if (sEvent == ON_REGISTER)
{
SubscribeToEvent(ON_RESOURCE_ADDED, __FILE__);
SubscribeToEvent(ON_RESOURCE_MODIFIED, __FILE__);
SubscribeToEvent(ON_RESOURCE_REMOVED, __FILE__);
}
else if (sEvent == NWNX_ON_RESOURCE_ADDED)
OnResourceChange("added to");
else if (sEvent == NWNX_ON_RESOURCE_MODIFIED)
OnResourceChange("modified in");
else if (sEvent == NWNX_ON_RESOURCE_REMOVED)
OnResourceChange("removed from");
}