Files
dsrc/sku.0/sys.server/compiled/game/script/item/geiger/base.script
T
2013-09-10 23:17:15 -07:00

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);
}