mirror of
https://github.com/SWG-Source/dsrc.git
synced 2026-08-01 01:15:59 -04:00
96 lines
3.0 KiB
Plaintext
96 lines
3.0 KiB
Plaintext
include library.geiger;
|
|
include library.utils;
|
|
include library.sui;
|
|
|
|
|
|
trigger OnObjectMenuRequest(obj_id player, menu_info mi)
|
|
{
|
|
mi.addRootMenuOrServerNotify (menu_info_types.ITEM_USE, null);
|
|
mi.addRootMenu(menu_info_types.SERVER_MENU1, new string_id("quest/quest_journal/fs_quests_sad", "instructions_title"));
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
trigger OnObjectMenuSelect(obj_id player, int item)
|
|
{
|
|
LOG("geiger", "OnObjectMenuSelect");
|
|
if ( item == menu_info_types.ITEM_USE )
|
|
{
|
|
obj_id inv = utils.getDatapad(player);
|
|
if ( isIdValid(inv) && utils.isNestedWithin(self, inv) )
|
|
{
|
|
LOG("geiger", "enqueing command");
|
|
openWindow(player, self);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
}
|
|
else if ( item == menu_info_types.SERVER_MENU1 )
|
|
{
|
|
sui.msgbox(player, new string_id("quest/quest_journal/fs_quests_sad", "instructions_text"));
|
|
}
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
trigger OnDestroy()
|
|
{
|
|
obj_id player = utils.getObjIdObjVar(self, geiger.OBJVAR_GEIGER_PLAYER);
|
|
utils.removeObjVar(player, geiger.OBJVAR_GEIGER_OBJECT);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler updateGeiger()
|
|
{
|
|
LOG("geiger", "geiger updateGeiger");
|
|
if(!hasObjVar(self, geiger.OBJVAR_GEIGER_PLAYER))
|
|
return SCRIPT_CONTINUE;
|
|
obj_id player = utils.getObjIdObjVar(self, geiger.OBJVAR_GEIGER_PLAYER);
|
|
if(!hasObjVar(player, geiger.OBJVAR_GEIGER_PID))
|
|
return SCRIPT_CONTINUE;
|
|
int pid = utils.getIntObjVar(player, geiger.OBJVAR_GEIGER_PID);
|
|
if ( params == null )
|
|
return SCRIPT_CONTINUE;
|
|
int paramPid = params.getInt("pid");
|
|
if ( paramPid != pid )
|
|
return SCRIPT_CONTINUE;
|
|
geiger.updateGeiger(player, self);
|
|
messageTo(self, "updateGeiger", params, 3.0f, false);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
messageHandler geigerCallback()
|
|
{
|
|
LOG("geiger", "geigerCallback");
|
|
String widgetName = params.getString("eventWidgetName");
|
|
obj_id player = utils.getObjIdObjVar(self, geiger.OBJVAR_GEIGER_PLAYER);
|
|
int pid = utils.getIntObjVar(player, geiger.OBJVAR_GEIGER_PID);
|
|
if(widgetName.equalsIgnoreCase("") ||
|
|
widgetName.equalsIgnoreCase("%buttonOK%"))
|
|
{
|
|
LOG("geiger", "geigerCallback removing pid");
|
|
utils.removeObjVar(player, geiger.OBJVAR_GEIGER_PID);
|
|
forceCloseSUIPage(pid);
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
return SCRIPT_CONTINUE;
|
|
}
|
|
|
|
void openWindow(obj_id player, obj_id geigerObj)
|
|
{
|
|
if(utils.hasObjVar(player, geiger.OBJVAR_GEIGER_PID))
|
|
{
|
|
forceCloseSUIPage(utils.getIntObjVar(player, geiger.OBJVAR_GEIGER_PID));
|
|
}
|
|
int pid = createSUIPage("/PDA.Questpopup", geigerObj, player, "geigerCallback");
|
|
utils.setObjVar(player, geiger.OBJVAR_GEIGER_PID, pid);
|
|
if(pid < 0) return;
|
|
subscribeToSUIEvent(pid, sui_event_type.SET_onButton, "%buttonOK%", "geigerCallback");
|
|
setSUIProperty(pid, "%viewer%", "SetObject", "" + geigerObj);
|
|
float value = geiger.calculateGeigerNumber(player);
|
|
setSUIProperty(pid, "%info%", "Text", "\n\nEnemy Threat Level: Detecting...");
|
|
setSUIProperty(pid, "%title%", "Text", "Radiation Sensor");
|
|
setSUIAssociatedObject(pid, player);
|
|
showSUIPage(pid);
|
|
dictionary pidDict = new dictionary();
|
|
pidDict.put("pid", pid);
|
|
messageTo(geigerObj, "updateGeiger", pidDict, 3.0f, false);
|
|
}
|