ff_i_debug
Debug functions.
-
DEBUG
(bool) Constant that can set on module, areas, and/or PC
-
int GetIsDebug(object oObject = OBJECT_INVALID)
- Parameters:
oObject – Checked for DEBUG variable, then its area, then module. Defaults to OBJECT_INVALID (env-var only).
Return TRUE if DEBUG is set on oObject, area of oObject, or module. As a last resort, return TRUE if environment variable NWN_DEBUG is set.
-
string GetObjectTypeString(object oObject)
- Parameters:
oObject – An object.
Return a string description the object type.
-
void LogLocalVars(object oObject, string sPrefix = "")
- Parameters:
oObject – An object whose local variables are printed.
sPrefix – Prepended to every printed line. Defaults to “”.
Write all string and int variables to console.
-
void LogStackTrace(string sFile, string sFunction, int nLine)
- Parameters:
sFile – Set to
sFunction – Set to
nLine – Set to
Write stack trace to console.
Source code
// @code
#include "ff_i_consts"
#include "ff_i_envvar"
#include "nwnx_object"
#include "nwnx_encounter"
//! @brief (bool) Constant that can set on module, areas, and/or PC
const string DEBUG = "DEBUG";
// -----------------------------------------------------------------------------
//! @brief Return TRUE if DEBUG is set on oObject, area of oObject, or module. As a last resort, return TRUE if environment variable :ev:`NWN_DEBUG` is set.
//! @param oObject Checked for DEBUG variable, then its area, then module. Defaults to OBJECT_INVALID (env-var only).
int GetIsDebug(object oObject = OBJECT_INVALID);
int GetIsDebug(object oObject = OBJECT_INVALID)
{
if (GetEnvironmentVariableAsBool(NWN_DEBUG) == "T")
return TRUE;
return FALSE;
}
// -----------------------------------------------------------------------------
//! @brief Return a string description the object type.
//! @param oObject An object.
string GetObjectTypeString(object oObject);
string GetObjectTypeString(object oObject)
{
if (GetIsDM(oObject))
return "DM";
if (GetIsPC(oObject))
return "PC";
if (!GetIsObjectValid(oObject))
return "invalid";
switch (NWNX_Object_GetInternalObjectType(oObject))
{
case NWNX_OBJECT_TYPE_INTERNAL_INVALID: return "invalid";
case NWNX_OBJECT_TYPE_INTERNAL_AREA: return "area";
case NWNX_OBJECT_TYPE_INTERNAL_AREAOFEFFECT: return "AOE";
case NWNX_OBJECT_TYPE_INTERNAL_CREATURE: return "creature";
case NWNX_OBJECT_TYPE_INTERNAL_DOOR: return "door";
case NWNX_OBJECT_TYPE_INTERNAL_ENCOUNTER: return "encounter";
case NWNX_OBJECT_TYPE_INTERNAL_ITEM: return "item";
case NWNX_OBJECT_TYPE_INTERNAL_MODULE: return "module";
case NWNX_OBJECT_TYPE_INTERNAL_PLACEABLE: return "placeable";
case NWNX_OBJECT_TYPE_INTERNAL_SOUND: return "sound";
case NWNX_OBJECT_TYPE_INTERNAL_STORE: return "store";
case NWNX_OBJECT_TYPE_INTERNAL_TRIGGER: return "trigger";
case NWNX_OBJECT_TYPE_INTERNAL_WAYPOINT: return "waypoint";
}
return "<error>";
}
// -----------------------------------------------------------------------------
//! @brief Write all string and int variables to console.
//! @param oObject An object whose local variables are printed.
//! @param sPrefix Prepended to every printed line. Defaults to "".
void LogLocalVars(object oObject, string sPrefix = "");
void LogLocalVars(object oObject, string sPrefix = "")
{
int nCount = NWNX_Object_GetLocalVariableCount(oObject);
int i;
for (i = 0; i <= nCount; i++)
{
struct NWNX_Object_LocalVariable stVar = NWNX_Object_GetLocalVariable(oObject, i);
switch (stVar.type)
{
case NWNX_OBJECT_LOCALVAR_TYPE_INT:
NWNX_Util_RawPrint(sPrefix + "[var] " + stVar.key + ": " + IntToString(GetLocalInt(oObject, stVar.key)));
break;
case NWNX_OBJECT_LOCALVAR_TYPE_FLOAT:
NWNX_Util_RawPrint(sPrefix + "[var] " + stVar.key + ": " + FloatToString(GetLocalFloat(oObject, stVar.key), 7, 5));
break;
case NWNX_OBJECT_LOCALVAR_TYPE_STRING:
NWNX_Util_RawPrint(sPrefix + "[var] " + stVar.key + ": " + GetLocalString(oObject, stVar.key));
break;
case NWNX_OBJECT_LOCALVAR_TYPE_OBJECT:
NWNX_Util_RawPrint(sPrefix + "[var] " + stVar.key + ": " + GetObjectUUID(GetLocalObject(oObject, stVar.key)));
break;
case NWNX_OBJECT_LOCALVAR_TYPE_LOCATION:
NWNX_Util_RawPrint(sPrefix + "[var] " + stVar.key + ": <LOCATION>");
break;
case NWNX_OBJECT_LOCALVAR_TYPE_JSON:
NWNX_Util_RawPrint(sPrefix + "[var] " + stVar.key + ": <JSON>");
break;
break;
}
}
}
// -----------------------------------------------------------------------------
//! @brief Write stack trace to console.
//! @param sFile Set to __FILE__
//! @param sFunction Set to __FUNCTION__
//! @param nLine Set to __LINE__
void LogStackTrace(string sFile, string sFunction, int nLine);
void LogStackTrace(string sFile, string sFunction, int nLine)
{
string sSpacing = "";
int nDepth = 0;
string sTrace = NWNX_Util_GetCurrentScriptName(nDepth);
if (sFile != "")
NWNX_Util_RawPrint("error: in " + sFile + "::" + sFunction + ":" + IntToString(nLine));
while (sTrace != "")
{
string sMessage = "[trace] " + IntToString(nDepth) + ": " + sTrace;
sSpacing += " ";
NWNX_Util_RawPrint(sMessage);
sTrace = NWNX_Util_GetCurrentScriptName(++nDepth);
}
}