ff_u_v_mousecurs

Set SetObjectMouseCursor on the object to prevent default mouse icons.

Useful for example on doors that are plot, locked, and only for decor.

List of keywords: DEFAULT, WALK, NOWALK, ATTACK, NOATTACK, TALK, NOTALK, FOLLOW, EXAMINE, NOEXAMINE, TRANSITION, DOOR, USE, NOUSE, MAGIC, NOMAGIC, DISARM, NODISARM, ACTION, NOACTION, LOCK, NOLOCK, PUSHPIN, CREATE, NOCREATE, KILL, NOKILL, HEAL, NOHEAL, RUNARROW, WALKARROW, PICKUP

Variables

ENABLE__FF_U_V_MOUSECURSOR: (string) (opt-out) Set to “N” on module to disable.

MOUSECURSOR: (string) Set to “” (skips the event) or a value DEFAULT, ACTION, ATTACK, …

Source code

// @code

#include "ff_i_core"

const string ENABLE__FF_U_V_MOUSECURSOR = "ENABLE__FF_U_V_MOUSECURSOR";

const string MOUSECURSOR = "MOUSECURSOR";


// -----------------------------------------------------------------------------

//! @brief Apply the MOUSECURSOR variable on oObject to set its mouse cursor icon.
//! @param oObject An object.
void SetDiscovery(object oObject);
void SetDiscovery(object oObject)
{
  if (!GetIsObjectValid(oObject))
    return;

  string sVariable = GetLocalString(oObject, MOUSECURSOR);
  if (sVariable == "")
    return;

  sVariable = GetStringUpperCase(sVariable);
  sVariable = GetStringReplace(sVariable, "MOUSECURSOR_", "");

  if (FALSE) {}
  else if (sVariable == "DEFAULT")   { SetObjectMouseCursor(oObject, MOUSECURSOR_DEFAULT); }
  else if (sVariable == "WALK")      { SetObjectMouseCursor(oObject, MOUSECURSOR_WALK); }
  else if (sVariable == "NOWALK")    { SetObjectMouseCursor(oObject, MOUSECURSOR_NOWALK); }
  else if (sVariable == "ATTACK")    { SetObjectMouseCursor(oObject, MOUSECURSOR_ATTACK); }
  else if (sVariable == "NOATTACK")  { SetObjectMouseCursor(oObject, MOUSECURSOR_NOATTACK); }
  else if (sVariable == "TALK")      { SetObjectMouseCursor(oObject, MOUSECURSOR_TALK); }
  else if (sVariable == "NOTALK")    { SetObjectMouseCursor(oObject, MOUSECURSOR_NOTALK); }
  else if (sVariable == "FOLLOW")    { SetObjectMouseCursor(oObject, MOUSECURSOR_FOLLOW); }
  else if (sVariable == "EXAMINE")   { SetObjectMouseCursor(oObject, MOUSECURSOR_EXAMINE); }
  else if (sVariable == "NOEXAMINE") { SetObjectMouseCursor(oObject, MOUSECURSOR_NOEXAMINE); }
  else if (sVariable == "TRANSITION"){ SetObjectMouseCursor(oObject, MOUSECURSOR_TRANSITION); }
  else if (sVariable == "DOOR")      { SetObjectMouseCursor(oObject, MOUSECURSOR_DOOR); }
  else if (sVariable == "USE")       { SetObjectMouseCursor(oObject, MOUSECURSOR_USE); }
  else if (sVariable == "NOUSE")     { SetObjectMouseCursor(oObject, MOUSECURSOR_NOUSE); }
  else if (sVariable == "MAGIC")     { SetObjectMouseCursor(oObject, MOUSECURSOR_MAGIC); }
  else if (sVariable == "NOMAGIC")   { SetObjectMouseCursor(oObject, MOUSECURSOR_NOMAGIC); }
  else if (sVariable == "DISARM")    { SetObjectMouseCursor(oObject, MOUSECURSOR_DISARM); }
  else if (sVariable == "NODISARM")  { SetObjectMouseCursor(oObject, MOUSECURSOR_NODISARM); }
  else if (sVariable == "ACTION")    { SetObjectMouseCursor(oObject, MOUSECURSOR_ACTION); }
  else if (sVariable == "NOACTION")  { SetObjectMouseCursor(oObject, MOUSECURSOR_NOACTION); }
  else if (sVariable == "LOCK")      { SetObjectMouseCursor(oObject, MOUSECURSOR_LOCK); }
  else if (sVariable == "NOLOCK")    { SetObjectMouseCursor(oObject, MOUSECURSOR_NOLOCK); }
  else if (sVariable == "PUSHPIN")   { SetObjectMouseCursor(oObject, MOUSECURSOR_PUSHPIN); }
  else if (sVariable == "CREATE")    { SetObjectMouseCursor(oObject, MOUSECURSOR_CREATE); }
  else if (sVariable == "NOCREATE")  { SetObjectMouseCursor(oObject, MOUSECURSOR_NOCREATE); }
  else if (sVariable == "KILL")      { SetObjectMouseCursor(oObject, MOUSECURSOR_KILL); }
  else if (sVariable == "NOKILL")    { SetObjectMouseCursor(oObject, MOUSECURSOR_NOKILL); }
  else if (sVariable == "HEAL")      { SetObjectMouseCursor(oObject, MOUSECURSOR_HEAL); }
  else if (sVariable == "NOHEAL")    { SetObjectMouseCursor(oObject, MOUSECURSOR_NOHEAL); }
  else if (sVariable == "RUNARROW")  { SetObjectMouseCursor(oObject, MOUSECURSOR_RUNARROW); }
  else if (sVariable == "WALKARROW") { SetObjectMouseCursor(oObject, MOUSECURSOR_WALKARROW); }
  else if (sVariable == "PICKUP")    { SetObjectMouseCursor(oObject, MOUSECURSOR_PICKUP); }
  else if (GetStringIsInt(sVariable))
  {
    int iVariable = StringToInt(sVariable);
    SetObjectMouseCursor(oObject, iVariable);
  }
  else
    LogError("Object " + GetObjectInfo(oObject) + " mousecursor (variable: 'MOUSECURSOR', value: '" + sVariable + "') is invalid");
}


// -----------------------------------------------------------------------------

void main()
{
  if (!GetModuleFlag(ENABLE__FF_U_V_MOUSECURSOR, TRUE))
    return;

  string sEvent = GetCurrentEvent();
  if (sEvent == ON_REGISTER)
    SubscribeToEvent(ON_OBJECT_CREATED, __FILE__);
  else if (sEvent == ON_OBJECT_CREATED)
    SetDiscovery(OBJECT_SELF);
}