mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2026-08-25 14:16:58 +01:00
a whole lot of nanoui upgrades
This commit is contained in:
@@ -82,6 +82,13 @@
|
||||
if(config.log_world_output)
|
||||
diary << "\[[time_stamp()]]DD_OUTPUT: [text][log_end]"
|
||||
|
||||
/*
|
||||
Standardized method for tracking startup times.
|
||||
*/
|
||||
/proc/log_startup_progress(var/message)
|
||||
admin_notice("<span class='danger'>[message]</span>", R_DEBUG)
|
||||
log_to_dd(message)
|
||||
|
||||
/proc/log_misc(text)
|
||||
diary << "\[[time_stamp()]]MISC: [text][log_end]"
|
||||
|
||||
|
||||
@@ -55,3 +55,16 @@ var/round_start_time = 0
|
||||
last_round_duration = "[hours]:[mins]"
|
||||
next_duration_update = world.time + 1 MINUTES
|
||||
return last_round_duration
|
||||
|
||||
/*
|
||||
Returns "watch handle" (really just a timestamp)
|
||||
*/
|
||||
/proc/start_watch()
|
||||
return world.timeofday
|
||||
|
||||
/*
|
||||
Returns number of seconds elapsed.
|
||||
@param wh number The "Watch Handle" from start_watch(). (timestamp)
|
||||
*/
|
||||
/proc/stop_watch(wh)
|
||||
return round(0.1*(world.timeofday-wh),0.1)
|
||||
@@ -21,11 +21,13 @@ datum/controller/game_controller/New()
|
||||
qdel(master_controller)
|
||||
master_controller = src
|
||||
|
||||
var/watch = 0
|
||||
if(!job_master)
|
||||
watch = start_watch()
|
||||
job_master = new /datum/controller/occupations()
|
||||
job_master.SetupOccupations()
|
||||
job_master.LoadJobs("config/jobs.txt")
|
||||
admin_notice("<span class='danger'>Job setup complete</span>", R_DEBUG)
|
||||
log_startup_progress("Job setup complete in [stop_watch(watch)]s.")
|
||||
|
||||
if(!syndicate_code_phrase) syndicate_code_phrase = generate_code_phrase()
|
||||
if(!syndicate_code_response) syndicate_code_response = generate_code_phrase()
|
||||
@@ -44,31 +46,56 @@ datum/controller/game_controller/proc/setup()
|
||||
|
||||
|
||||
datum/controller/game_controller/proc/setup_objects()
|
||||
admin_notice("<span class='danger'>Initializing objects</span>", R_DEBUG)
|
||||
sleep(-1)
|
||||
var/watch = start_watch()
|
||||
var/count = 0
|
||||
var/overwatch = start_watch() //Overall.
|
||||
|
||||
log_startup_progress("Populating asset cache...")
|
||||
populate_asset_cache()
|
||||
log_startup_progress(" Populated [asset_cache.len] assets in [stop_watch(watch)]s.")
|
||||
|
||||
watch = start_watch()
|
||||
log_startup_progress("Initializing objects")
|
||||
// sleep(-1)
|
||||
for(var/atom/movable/object in world)
|
||||
if(isnull(object.gcDestroyed))
|
||||
object.initialize()
|
||||
count++
|
||||
log_startup_progress(" Initialized [count] objects in [stop_watch(watch)]s.")
|
||||
|
||||
admin_notice("<span class='danger'>Initializing areas</span>", R_DEBUG)
|
||||
sleep(-1)
|
||||
watch = start_watch()
|
||||
count = 0
|
||||
log_startup_progress("Initializing areas")
|
||||
// sleep(-1)
|
||||
for(var/area/area in all_areas)
|
||||
area.initialize()
|
||||
count++
|
||||
log_startup_progress(" Initialized [count] areas in [stop_watch(watch)]s.")
|
||||
|
||||
admin_notice("<span class='danger'>Initializing pipe networks</span>", R_DEBUG)
|
||||
sleep(-1)
|
||||
watch = start_watch()
|
||||
count = 0
|
||||
log_startup_progress("Initializing pipe networks")
|
||||
// sleep(-1)
|
||||
for(var/obj/machinery/atmospherics/machine in machines)
|
||||
machine.build_network()
|
||||
count++
|
||||
log_startup_progress(" Initialized [count] pipe networks in [stop_watch(watch)]s.")
|
||||
|
||||
admin_notice("<span class='danger'>Initializing atmos machinery.</span>", R_DEBUG)
|
||||
sleep(-1)
|
||||
watch = start_watch()
|
||||
count = 0
|
||||
log_startup_progress("Initializing atmos machinery.")
|
||||
// sleep(-1)
|
||||
for(var/obj/machinery/atmospherics/unary/U in machines)
|
||||
if(istype(U, /obj/machinery/atmospherics/unary/vent_pump))
|
||||
var/obj/machinery/atmospherics/unary/vent_pump/T = U
|
||||
T.broadcast_status()
|
||||
count++
|
||||
else if(istype(U, /obj/machinery/atmospherics/unary/vent_scrubber))
|
||||
var/obj/machinery/atmospherics/unary/vent_scrubber/T = U
|
||||
T.broadcast_status()
|
||||
count++
|
||||
log_startup_progress(" Initialized [count] atmospherics devices in [stop_watch(watch)]s.")
|
||||
log_startup_progress("Finished object initializations in [stop_watch(overwatch)]s.")
|
||||
|
||||
// Set up antagonists.
|
||||
populate_antag_type_list()
|
||||
@@ -76,5 +103,5 @@ datum/controller/game_controller/proc/setup_objects()
|
||||
//Set up spawn points.
|
||||
populate_spawn_points()
|
||||
|
||||
admin_notice("<span class='danger'>Initializations complete.</span>", R_DEBUG)
|
||||
sleep(-1)
|
||||
log_startup_progress("Initializations complete.")
|
||||
// sleep(-1)
|
||||
|
||||
@@ -198,7 +198,7 @@
|
||||
dat += {"
|
||||
<b><font size='3px'>pAI Request Module</font></b><br><br>
|
||||
<p>Requesting AI personalities from central database... If there are no entries, or if a suitable entry is not listed, check again later as more personalities may be added.</p>
|
||||
<img src='loading.gif' /> Searching for personalities<br><br>
|
||||
Searching for personalities, please wait...<br><br>
|
||||
|
||||
<table>
|
||||
<tr>
|
||||
|
||||
@@ -138,6 +138,9 @@
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/card/id/proc/show(mob/user as mob)
|
||||
var/datum/asset/assets = get_asset_datum(/datum/asset/simple/paper)
|
||||
assets.send(user)
|
||||
|
||||
if(front && side)
|
||||
user << browse_rsc(front, "front.png")
|
||||
user << browse_rsc(side, "side.png")
|
||||
|
||||
@@ -959,3 +959,18 @@
|
||||
log_admin("[key_name(src)] has toggled [M.key]'s [blockname] block [state]!")
|
||||
else
|
||||
alert("Invalid mob")
|
||||
|
||||
/client/proc/reload_nanoui_resources()
|
||||
set category = "Debug"
|
||||
set name = "Reload NanoUI Resources"
|
||||
set desc = "Force the client to redownload NanoUI Resources"
|
||||
|
||||
// Close open NanoUIs.
|
||||
nanomanager.close_user_uis(usr)
|
||||
|
||||
// Re-load the assets.
|
||||
var/datum/asset/assets = get_asset_datum(/datum/asset/nanoui)
|
||||
assets.register()
|
||||
|
||||
// Clear the user's cache so they get resent.
|
||||
usr.client.cache = list()
|
||||
@@ -162,6 +162,7 @@ var/list/debug_verbs = list (
|
||||
,/client/proc/setup_supermatter_engine
|
||||
,/client/proc/atmos_toggle_debug
|
||||
,/client/proc/spawn_tanktransferbomb
|
||||
,/client/proc/reload_nanoui_resources
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -476,7 +476,7 @@
|
||||
usr << "This can only be done on mobs with clients"
|
||||
return
|
||||
|
||||
nanomanager.send_resources(H.client)
|
||||
H.client.reload_nanoui_resources()
|
||||
|
||||
usr << "Resource files sent"
|
||||
H << "Your NanoUI Resource files have been refreshed"
|
||||
|
||||
@@ -3,7 +3,7 @@ proc/createRandomZlevel()
|
||||
return
|
||||
|
||||
var/list/potentialRandomZlevels = list()
|
||||
admin_notice("\red \b Searching for away missions...", R_DEBUG)
|
||||
log_startup_progress("Searching for away missions...")
|
||||
var/list/Lines = file2list("maps/RandomZLevels/fileList.txt")
|
||||
if(!Lines.len) return
|
||||
for (var/t in Lines)
|
||||
@@ -35,7 +35,7 @@ proc/createRandomZlevel()
|
||||
|
||||
|
||||
if(potentialRandomZlevels.len)
|
||||
admin_notice("\red \b Loading away mission...", R_DEBUG)
|
||||
log_startup_progress("Loading away mission...")
|
||||
|
||||
var/map = pick(potentialRandomZlevels)
|
||||
var/file = file(map)
|
||||
@@ -48,8 +48,8 @@ proc/createRandomZlevel()
|
||||
continue
|
||||
awaydestinations.Add(L)
|
||||
|
||||
admin_notice("\red \b Away mission loaded.", R_DEBUG)
|
||||
log_startup_progress("Away mission loaded.")
|
||||
|
||||
else
|
||||
admin_notice("\red \b No away missions found.", R_DEBUG)
|
||||
log_startup_progress("No away missions found.")
|
||||
return
|
||||
|
||||
@@ -47,4 +47,6 @@
|
||||
|
||||
preload_rsc = 0 // This is 0 so we can set it to an URL once the player logs in and have them download the resources from a different server.
|
||||
var/global/obj/screen/click_catcher/void
|
||||
|
||||
|
||||
//NanoUI//
|
||||
var/topic_debugging = 0 //if set to true, allows client to see nanoUI errors -- yes i realize this is messy but it'll make live testing infinitely easier
|
||||
@@ -28,11 +28,17 @@
|
||||
|
||||
#if defined(TOPIC_DEBUGGING)
|
||||
world << "[src]'s Topic: [href] destined for [hsrc]."
|
||||
#endif
|
||||
|
||||
if(href_list["nano_err"]) //nano throwing errors
|
||||
world << "## NanoUI, Subject [src]: " + html_decode(href_list["nano_err"]) //NANO DEBUG HOOK
|
||||
if(topic_debugging)
|
||||
src << "## NanoUI: " + html_decode(href_list["nano_err"]) //NANO DEBUG HOOK
|
||||
|
||||
#endif
|
||||
if(href_list["asset_cache_confirm_arrival"])
|
||||
//src << "ASSET JOB [href_list["asset_cache_confirm_arrival"]] ARRIVED."
|
||||
var/job = text2num(href_list["asset_cache_confirm_arrival"])
|
||||
completed_asset_jobs += job
|
||||
return
|
||||
|
||||
//search the href for script injection
|
||||
if( findtext(href,"<script",1,0) )
|
||||
@@ -154,13 +160,15 @@
|
||||
log_client_to_db()
|
||||
|
||||
send_resources()
|
||||
nanomanager.send_resources(src)
|
||||
|
||||
if(!void)
|
||||
void = new()
|
||||
void.MakeGreed()
|
||||
screen += void
|
||||
|
||||
if(!winexists(src, "asset_cache_browser")) // The client is using a custom skin, tell them.
|
||||
src << "<span class='warning'>Unable to access asset cache browser, if you are using a custom skin file, please allow DS to download the updated version, if you are not, then make a bug report. This is not a critical issue but can cause issues with resource downloading, as it is impossible to know when extra resources arrived to you.</span>"
|
||||
|
||||
if(prefs.lastchangelog != changelog_hash) //bolds the changelog button on the interface so we know there are updates.
|
||||
src << "<span class='info'>You have unread updates in the changelog.</span>"
|
||||
winset(src, "rpane.changelog", "background-color=#eaeaea;font-style=bold")
|
||||
@@ -279,55 +287,18 @@
|
||||
/client/proc/last_activity_seconds()
|
||||
return inactivity / 10
|
||||
|
||||
//send resources to the client. It's here in its own proc so we can move it around easiliy if need be
|
||||
//Send resources to the client.
|
||||
/client/proc/send_resources()
|
||||
|
||||
// Most assets are now handled through global_cache.dm
|
||||
getFiles(
|
||||
'html/search.js',
|
||||
'html/panels.css',
|
||||
'html/images/loading.gif',
|
||||
'html/images/ntlogo.png',
|
||||
'html/images/talisman.png',
|
||||
'icons/pda_icons/pda_atmos.png',
|
||||
'icons/pda_icons/pda_back.png',
|
||||
'icons/pda_icons/pda_bell.png',
|
||||
'icons/pda_icons/pda_blank.png',
|
||||
'icons/pda_icons/pda_boom.png',
|
||||
'icons/pda_icons/pda_bucket.png',
|
||||
'icons/pda_icons/pda_crate.png',
|
||||
'icons/pda_icons/pda_cuffs.png',
|
||||
'icons/pda_icons/pda_eject.png',
|
||||
'icons/pda_icons/pda_exit.png',
|
||||
'icons/pda_icons/pda_flashlight.png',
|
||||
'icons/pda_icons/pda_honk.png',
|
||||
'icons/pda_icons/pda_mail.png',
|
||||
'icons/pda_icons/pda_medical.png',
|
||||
'icons/pda_icons/pda_menu.png',
|
||||
'icons/pda_icons/pda_mule.png',
|
||||
'icons/pda_icons/pda_notes.png',
|
||||
'icons/pda_icons/pda_power.png',
|
||||
'icons/pda_icons/pda_rdoor.png',
|
||||
'icons/pda_icons/pda_reagent.png',
|
||||
'icons/pda_icons/pda_refresh.png',
|
||||
'icons/pda_icons/pda_scanner.png',
|
||||
'icons/pda_icons/pda_signaler.png',
|
||||
'icons/pda_icons/pda_status.png',
|
||||
'icons/spideros_icons/sos_1.png',
|
||||
'icons/spideros_icons/sos_2.png',
|
||||
'icons/spideros_icons/sos_3.png',
|
||||
'icons/spideros_icons/sos_4.png',
|
||||
'icons/spideros_icons/sos_5.png',
|
||||
'icons/spideros_icons/sos_6.png',
|
||||
'icons/spideros_icons/sos_7.png',
|
||||
'icons/spideros_icons/sos_8.png',
|
||||
'icons/spideros_icons/sos_9.png',
|
||||
'icons/spideros_icons/sos_10.png',
|
||||
'icons/spideros_icons/sos_11.png',
|
||||
'icons/spideros_icons/sos_12.png',
|
||||
'icons/spideros_icons/sos_13.png',
|
||||
'icons/spideros_icons/sos_14.png'
|
||||
'html/search.js', // Used in various non-NanoUI HTML windows for search functionality
|
||||
'html/panels.css' // Used for styling certain panels, such as in the new player panel
|
||||
)
|
||||
|
||||
spawn (10)
|
||||
//Precache the client with all other assets slowly, so as to not block other browse() calls
|
||||
getFilesSlow(src, asset_cache, register_asset = FALSE)
|
||||
|
||||
mob/proc/MayRespawn()
|
||||
return 0
|
||||
|
||||
@@ -144,6 +144,12 @@ var/list/_client_preferences_by_type
|
||||
enabled_description = "Fancy"
|
||||
disabled_description = "Plain"
|
||||
|
||||
/datum/client_preference/nanoui_style
|
||||
description = "Fancy NanoUI style"
|
||||
key = "NANO_STYLED"
|
||||
enabled_description = "Fancy"
|
||||
disabled_description = "Plain"
|
||||
|
||||
/********************
|
||||
* Staff Preferences *
|
||||
********************/
|
||||
|
||||
@@ -258,7 +258,7 @@ datum/preferences
|
||||
if(be_random_name)
|
||||
real_name = random_name(identifying_gender,species)
|
||||
|
||||
// Ask the preferences datums to apply their own settings to the new mob
|
||||
// Ask the preferences datums to apply their own settings to the new mob
|
||||
player_setup.copy_to_mob(character)
|
||||
|
||||
if(icon_updates)
|
||||
|
||||
@@ -5,32 +5,6 @@
|
||||
var/open_uis[0]
|
||||
// a list of current open /nanoui UIs, not grouped, for use in processing
|
||||
var/list/processing_uis = list()
|
||||
// a list of asset filenames which are to be sent to the client on user logon
|
||||
var/list/asset_files = list()
|
||||
|
||||
/**
|
||||
* Create a new nanomanager instance.
|
||||
* This proc generates a list of assets which are to be sent to each client on connect
|
||||
*
|
||||
* @return /nanomanager new nanomanager object
|
||||
*/
|
||||
/datum/nanomanager/New()
|
||||
var/list/nano_asset_dirs = list(\
|
||||
"nano/css/",\
|
||||
"nano/images/",\
|
||||
"nano/js/",\
|
||||
"nano/templates/"\
|
||||
)
|
||||
|
||||
var/list/filenames = null
|
||||
for (var/path in nano_asset_dirs)
|
||||
filenames = flist(path)
|
||||
for(var/filename in filenames)
|
||||
if(copytext(filename, length(filename)) != "/") // filenames which end in "/" are actually directories, which we want to ignore
|
||||
if(fexists(path + filename))
|
||||
asset_files.Add(fcopy_rsc(path + filename)) // add this file to asset_files for sending to clients when they connect
|
||||
|
||||
return
|
||||
|
||||
/**
|
||||
* Get an open /nanoui ui for the current user, src_object and ui_key and try to update it with data
|
||||
@@ -254,18 +228,4 @@
|
||||
|
||||
oldMob.open_uis.Cut()
|
||||
|
||||
return 1 // success
|
||||
|
||||
/**
|
||||
* Sends all nano assets to the client
|
||||
* This is called on user login
|
||||
*
|
||||
* @param client /client The user's client
|
||||
*
|
||||
* @return nothing
|
||||
*/
|
||||
|
||||
/datum/nanomanager/proc/send_resources(client)
|
||||
for(var/file in asset_files)
|
||||
client << browse_rsc(file) // send the file to the client
|
||||
|
||||
return 1 // success
|
||||
+23
-14
@@ -96,6 +96,9 @@ nanoui is used to open and update nano browser uis
|
||||
|
||||
add_common_assets()
|
||||
|
||||
var/datum/asset/assets = get_asset_datum(/datum/asset/nanoui)
|
||||
assets.send(user, ntemplate_filename)
|
||||
|
||||
/**
|
||||
* Use this proc to add assets which are common to (and required by) all nano uis
|
||||
*
|
||||
@@ -103,15 +106,13 @@ nanoui is used to open and update nano browser uis
|
||||
*/
|
||||
/datum/nanoui/proc/add_common_assets()
|
||||
add_script("libraries.min.js") // A JS file comprising of jQuery, doT.js and jQuery Timer libraries (compressed together)
|
||||
add_script("nano_utility.js") // The NanoUtility JS, this is used to store utility functions.
|
||||
add_script("nano_template.js") // The NanoTemplate JS, this is used to render templates.
|
||||
add_script("nano_state_manager.js") // The NanoStateManager JS, it handles updates from the server and passes data to the current state
|
||||
add_script("nano_state.js") // The NanoState JS, this is the base state which all states must inherit from
|
||||
add_script("nano_state_default.js") // The NanoStateDefault JS, this is the "default" state (used by all UIs by default), which inherits from NanoState
|
||||
add_script("nano_base_callbacks.js") // The NanoBaseCallbacks JS, this is used to set up (before and after update) callbacks which are common to all UIs
|
||||
add_script("nano_base_helpers.js") // The NanoBaseHelpers JS, this is used to set up template helpers which are common to all UIs
|
||||
add_stylesheet("shared.css") // this CSS sheet is common to all UIs
|
||||
add_stylesheet("icons.css") // this CSS sheet is common to all UIs
|
||||
add_script("nano.js") // A JS file of the NanoUI JavaScript compressed into one file.
|
||||
add_stylesheet("nanoui.css") // Concatenated CSS sheet common to all UIs, contains all of the standard NanoUI styling.
|
||||
|
||||
// CodeMirror
|
||||
add_script("codemirror-compressed.js") // A custom minified JavaScript file of CodeMirror, with the following plugins: CSS Mode, NTSL Mode, CSS-hint addon, Search addon, Sublime Keymap.
|
||||
add_stylesheet("codemirror.css") // A CSS sheet containing the basic stylings and formatting information for CodeMirror.
|
||||
add_stylesheet("cm_lesser-dark.css") // A theme for CodeMirror to use, which closely resembles the rest of the NanoUI style.
|
||||
|
||||
/**
|
||||
* Set the current status (also known as visibility) of this ui.
|
||||
@@ -186,7 +187,15 @@ nanoui is used to open and update nano browser uis
|
||||
"autoUpdateContent" = auto_update_content,
|
||||
"showMap" = show_map,
|
||||
"mapZLevel" = map_z_level,
|
||||
"user" = list("name" = user.name)
|
||||
"user" = list(
|
||||
"name" = user.name,
|
||||
"fancy" = user.client.is_preference_enabled(/datum/client_preference/browser_style)
|
||||
),
|
||||
"window" = list(
|
||||
"width" = width,
|
||||
"height" = height,
|
||||
"ref" = window_id
|
||||
)
|
||||
)
|
||||
return config_data
|
||||
|
||||
@@ -334,7 +343,7 @@ nanoui is used to open and update nano browser uis
|
||||
/datum/nanoui/proc/get_html()
|
||||
|
||||
// before the UI opens, add the layout files based on the layout key
|
||||
add_stylesheet("layout_[layout_key].css")
|
||||
//add_stylesheet("layout_[layout_key].css")
|
||||
add_template("layout", "layout_[layout_key].tmpl")
|
||||
|
||||
var/head_content = ""
|
||||
@@ -383,9 +392,9 @@ nanoui is used to open and update nano browser uis
|
||||
</div>
|
||||
<noscript>
|
||||
<div id='uiNoScript'>
|
||||
<h2>JAVASCRIPT REQUIRED</h2>
|
||||
<p>Your Internet Explorer's Javascript is disabled (or broken).<br/>
|
||||
Enable Javascript and then open this UI again.</p>
|
||||
<h1>Javascript Required</h1>
|
||||
<p>Javascript is required in order to use this NanoUI interface.</p>
|
||||
<p>Please enable Javascript in Internet Explorer, and restart your game.</p>
|
||||
</div>
|
||||
</noscript>
|
||||
</body>
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
return
|
||||
|
||||
/obj/item/weapon/clipboard/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
|
||||
|
||||
if(istype(W, /obj/item/weapon/paper) || istype(W, /obj/item/weapon/photo))
|
||||
user.drop_item()
|
||||
W.loc = src
|
||||
@@ -106,20 +106,20 @@
|
||||
|
||||
else if(href_list["write"])
|
||||
var/obj/item/weapon/P = locate(href_list["write"])
|
||||
|
||||
|
||||
if(P && (P.loc == src) && istype(P, /obj/item/weapon/paper) && (P == toppaper) )
|
||||
|
||||
|
||||
var/obj/item/I = usr.get_active_hand()
|
||||
|
||||
|
||||
if(istype(I, /obj/item/weapon/pen))
|
||||
|
||||
|
||||
P.attackby(I, usr)
|
||||
|
||||
else if(href_list["remove"])
|
||||
var/obj/item/P = locate(href_list["remove"])
|
||||
|
||||
|
||||
if(P && (P.loc == src) && (istype(P, /obj/item/weapon/paper) || istype(P, /obj/item/weapon/photo)) )
|
||||
|
||||
|
||||
P.loc = usr.loc
|
||||
usr.put_in_hands(P)
|
||||
if(P == toppaper)
|
||||
@@ -129,30 +129,25 @@
|
||||
toppaper = newtop
|
||||
else
|
||||
toppaper = null
|
||||
|
||||
|
||||
else if(href_list["rename"])
|
||||
var/obj/item/weapon/O = locate(href_list["rename"])
|
||||
|
||||
|
||||
if(O && (O.loc == src))
|
||||
if(istype(O, /obj/item/weapon/paper))
|
||||
var/obj/item/weapon/paper/to_rename = O
|
||||
to_rename.rename()
|
||||
|
||||
|
||||
else if(istype(O, /obj/item/weapon/photo))
|
||||
var/obj/item/weapon/photo/to_rename = O
|
||||
to_rename.rename()
|
||||
|
||||
else if(href_list["read"])
|
||||
var/obj/item/weapon/paper/P = locate(href_list["read"])
|
||||
|
||||
|
||||
if(P && (P.loc == src) && istype(P, /obj/item/weapon/paper) )
|
||||
|
||||
if(!(istype(usr, /mob/living/carbon/human) || istype(usr, /mob/observer/dead) || istype(usr, /mob/living/silicon)))
|
||||
usr << browse("<HTML><HEAD><TITLE>[P.name]</TITLE></HEAD><BODY>[stars(P.info)][P.stamps]</BODY></HTML>", "window=[P.name]")
|
||||
onclose(usr, "[P.name]")
|
||||
else
|
||||
usr << browse("<HTML><HEAD><TITLE>[P.name]</TITLE></HEAD><BODY>[P.info][P.stamps]</BODY></HTML>", "window=[P.name]")
|
||||
onclose(usr, "[P.name]")
|
||||
|
||||
P.show_content(usr)
|
||||
|
||||
else if(href_list["look"])
|
||||
var/obj/item/weapon/photo/P = locate(href_list["look"])
|
||||
|
||||
@@ -102,12 +102,7 @@
|
||||
else if(href_list["read"])
|
||||
var/obj/item/weapon/paper/P = locate(href_list["read"])
|
||||
if(P && (P.loc == src) && istype(P))
|
||||
if(!(istype(usr, /mob/living/carbon/human) || istype(usr, /mob/observer/dead) || istype(usr, /mob/living/silicon)))
|
||||
usr << browse("<HTML><HEAD><TITLE>[P.name]</TITLE></HEAD><BODY>[stars(P.info)][P.stamps]</BODY></HTML>", "window=[P.name]")
|
||||
onclose(usr, "[P.name]")
|
||||
else
|
||||
usr << browse("<HTML><HEAD><TITLE>[P.name]</TITLE></HEAD><BODY>[P.info][P.stamps]</BODY></HTML>", "window=[P.name]")
|
||||
onclose(usr, "[P.name]")
|
||||
P.show_content(usr)
|
||||
else if(href_list["look"])
|
||||
var/obj/item/weapon/photo/P = locate(href_list["look"])
|
||||
if(P && (P.loc == src) && istype(P))
|
||||
|
||||
@@ -79,13 +79,22 @@
|
||||
user << "<span class='notice'>You have to go closer if you want to read it.</span>"
|
||||
return
|
||||
|
||||
/obj/item/weapon/paper/proc/show_content(var/mob/user, var/forceshow=0)
|
||||
if(!(istype(user, /mob/living/carbon/human) || istype(user, /mob/observer/dead) || istype(user, /mob/living/silicon)) && !forceshow)
|
||||
user << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[stars(info)][stamps]</BODY></HTML>", "window=[name]")
|
||||
onclose(user, "[name]")
|
||||
/obj/item/weapon/paper/proc/show_content(var/mob/user, var/forceshow = 0, var/forcestars = 0, var/infolinks = 0, var/view = 1)
|
||||
var/datum/asset/assets = get_asset_datum(/datum/asset/simple/paper)
|
||||
assets.send(user)
|
||||
|
||||
var/data
|
||||
if((!(istype(usr, /mob/living/carbon/human) || istype(usr, /mob/observer/dead) || istype(usr, /mob/living/silicon)) && !forceshow) || forcestars)
|
||||
data = "<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[stars(info)][stamps]</BODY></HTML>"
|
||||
if(view)
|
||||
usr << browse(data, "window=[name]")
|
||||
onclose(usr, "[name]")
|
||||
else
|
||||
user << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[info][stamps]</BODY></HTML>", "window=[name]")
|
||||
onclose(user, "[name]")
|
||||
data = "<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[infolinks ? info_links : info][stamps]</BODY></HTML>"
|
||||
if(view)
|
||||
usr << browse(data, "window=[name]")
|
||||
onclose(usr, "[name]")
|
||||
return data
|
||||
|
||||
/obj/item/weapon/paper/verb/rename()
|
||||
set name = "Rename paper"
|
||||
@@ -132,11 +141,9 @@
|
||||
else //cyborg or AI not seeing through a camera
|
||||
dist = get_dist(src, user)
|
||||
if(dist < 2)
|
||||
usr << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[info][stamps]</BODY></HTML>", "window=[name]")
|
||||
onclose(usr, "[name]")
|
||||
show_content(user, forceshow = 1)
|
||||
else
|
||||
usr << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[stars(info)][stamps]</BODY></HTML>", "window=[name]")
|
||||
onclose(usr, "[name]")
|
||||
show_content(user, forcestars = 1)
|
||||
return
|
||||
|
||||
/obj/item/weapon/paper/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||
|
||||
@@ -122,10 +122,7 @@
|
||||
|
||||
if(istype(pages[page], /obj/item/weapon/paper))
|
||||
var/obj/item/weapon/paper/P = W
|
||||
if(!(istype(usr, /mob/living/carbon/human) || istype(usr, /mob/observer/dead) || istype(usr, /mob/living/silicon)))
|
||||
dat+= "<HTML><HEAD><TITLE>[P.name]</TITLE></HEAD><BODY>[stars(P.info)][P.stamps]</BODY></HTML>"
|
||||
else
|
||||
dat+= "<HTML><HEAD><TITLE>[P.name]</TITLE></HEAD><BODY>[P.info][P.stamps]</BODY></HTML>"
|
||||
dat += P.show_content(usr, view = 0)
|
||||
user << browse(dat, "window=[name]")
|
||||
else if(istype(pages[page], /obj/item/weapon/photo))
|
||||
var/obj/item/weapon/photo/P = W
|
||||
|
||||
@@ -784,7 +784,7 @@
|
||||
if (!ui)
|
||||
// the ui does not exist, so we'll create a new() one
|
||||
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
|
||||
ui = new(user, src, ui_key, "apc.tmpl", "[area.name] - APC", 520, data["siliconUser"] ? 465 : 440)
|
||||
ui = new(user, src, ui_key, "apc.tmpl", "[area.name] - APC", 520, data["siliconUser"] ? 535 : 460)
|
||||
// when the ui is first opened this is the data it will use
|
||||
ui.set_initial_data(data)
|
||||
// open the new ui window
|
||||
|
||||
+48
-97
@@ -1,5 +1,4 @@
|
||||
body
|
||||
{
|
||||
body {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
background-color: #272727;
|
||||
@@ -8,14 +7,12 @@ body
|
||||
line-height: 170%;
|
||||
}
|
||||
|
||||
hr
|
||||
{
|
||||
hr {
|
||||
background-color: #40628a;
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
a, a:link, a:visited, a:active, .linkOn, .linkOff
|
||||
{
|
||||
a, a:link, a:visited, a:active, .linkOn, .linkOff {
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
background: #40628a;
|
||||
@@ -26,14 +23,12 @@ a, a:link, a:visited, a:active, .linkOn, .linkOff
|
||||
white-space:nowrap;
|
||||
}
|
||||
|
||||
a:hover
|
||||
{
|
||||
a:hover {
|
||||
color: #40628a;
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
a.white, a.white:link, a.white:visited, a.white:active
|
||||
{
|
||||
a.white, a.white:link, a.white:visited, a.white:active {
|
||||
color: #40628a;
|
||||
text-decoration: none;
|
||||
background: #ffffff;
|
||||
@@ -43,34 +38,29 @@ a.white, a.white:link, a.white:visited, a.white:active
|
||||
cursor:default;
|
||||
}
|
||||
|
||||
a.white:hover
|
||||
{
|
||||
a.white:hover {
|
||||
color: #ffffff;
|
||||
background: #40628a;
|
||||
}
|
||||
|
||||
.linkOn, a.linkOn:link, a.linkOn:visited, a.linkOn:active, a.linkOn:hover
|
||||
{
|
||||
.linkOn, a.linkOn:link, a.linkOn:visited, a.linkOn:active, a.linkOn:hover {
|
||||
color: #ffffff;
|
||||
background: #2f943c;
|
||||
border-color: #24722e;
|
||||
}
|
||||
|
||||
.linkOff, a.linkOff:link, a.linkOff:visited, a.linkOff:active, a.linkOff:hover
|
||||
{
|
||||
.linkOff, a.linkOff:link, a.linkOff:visited, a.linkOff:active, a.linkOff:hover {
|
||||
color: #ffffff;
|
||||
background: #999999;
|
||||
border-color: #666666;
|
||||
}
|
||||
|
||||
a.icon, .linkOn.icon, .linkOff.icon
|
||||
{
|
||||
a.icon, .linkOn.icon, .linkOff.icon {
|
||||
position: relative;
|
||||
padding: 1px 4px 2px 20px;
|
||||
}
|
||||
|
||||
a.icon img, .linkOn.icon img
|
||||
{
|
||||
a.icon img, .linkOn.icon img {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
@@ -78,15 +68,13 @@ a.icon img, .linkOn.icon img
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
a.icon64, .linkOn.icon64, .linkOff.icon64
|
||||
{
|
||||
a.icon64, .linkOn.icon64, .linkOff.icon64 {
|
||||
position: relative;
|
||||
padding: 1px 4px 2px 68px;
|
||||
font-size: 55px;
|
||||
}
|
||||
|
||||
a.icon64 img, .linkOn.icon64 img
|
||||
{
|
||||
a.icon64 img, .linkOn.icon64 img {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
@@ -94,60 +82,49 @@ a.icon64 img, .linkOn.icon64 img
|
||||
height: 66px;
|
||||
}
|
||||
|
||||
ul
|
||||
{
|
||||
ul {
|
||||
padding: 4px 0 0 10px;
|
||||
margin: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
li
|
||||
{
|
||||
li {
|
||||
padding: 0 0 2px 0;
|
||||
}
|
||||
|
||||
img, a img
|
||||
{
|
||||
img, a img {
|
||||
border-style:none;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6
|
||||
{
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin: 0;
|
||||
padding: 16px 0 8px 0;
|
||||
color: #517087;
|
||||
}
|
||||
|
||||
h1
|
||||
{
|
||||
h1 {
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
h2
|
||||
{
|
||||
h2 {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
h3
|
||||
{
|
||||
h3 {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
h4
|
||||
{
|
||||
h4 {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.uiWrapper
|
||||
{
|
||||
|
||||
.uiWrapper {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
padding-top:32px;
|
||||
}
|
||||
|
||||
.uiTitle
|
||||
{
|
||||
.uiTitle {
|
||||
clear: both;
|
||||
padding: 6px 8px 6px 8px;
|
||||
border-bottom: 2px solid #161616;
|
||||
@@ -156,8 +133,7 @@ h4
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.uiTitleWrapper
|
||||
{
|
||||
.uiTitleWrapper {
|
||||
position:fixed;
|
||||
top:0px;
|
||||
left:0px;
|
||||
@@ -165,8 +141,7 @@ h4
|
||||
z-index: 10
|
||||
}
|
||||
|
||||
.uiTitleButtons
|
||||
{
|
||||
.uiTitleButtons {
|
||||
position:fixed;
|
||||
top:0px;
|
||||
right:0px;
|
||||
@@ -175,47 +150,39 @@ h4
|
||||
}
|
||||
|
||||
|
||||
.uiTitle.icon
|
||||
{
|
||||
.uiTitle.icon {
|
||||
padding: 6px 8px 6px 42px;
|
||||
background-position: 2px 50%;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
.uiContent
|
||||
{
|
||||
.uiContent {
|
||||
clear: both;
|
||||
padding: 8px;
|
||||
font-family: Verdana, Geneva, sans-serif;
|
||||
}
|
||||
|
||||
.good
|
||||
{
|
||||
.good {
|
||||
color: #00ff00;
|
||||
}
|
||||
|
||||
.average
|
||||
{
|
||||
.average {
|
||||
color: #d09000;
|
||||
}
|
||||
|
||||
.bad
|
||||
{
|
||||
.bad {
|
||||
color: #ff0000;
|
||||
}
|
||||
|
||||
.highlight
|
||||
{
|
||||
.highlight {
|
||||
color: #8BA5C4;
|
||||
}
|
||||
|
||||
.dark
|
||||
{
|
||||
.dark {
|
||||
color: #272727;
|
||||
}
|
||||
|
||||
.notice
|
||||
{
|
||||
.notice {
|
||||
position: relative;
|
||||
background: #E9C183;
|
||||
color: #15345A;
|
||||
@@ -225,13 +192,11 @@ h4
|
||||
margin: 4px;
|
||||
}
|
||||
|
||||
.notice.icon
|
||||
{
|
||||
.notice.icon {
|
||||
padding: 2px 4px 0 20px;
|
||||
}
|
||||
|
||||
.notice img
|
||||
{
|
||||
.notice img {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
@@ -239,13 +204,11 @@ h4
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
div.notice
|
||||
{
|
||||
div.notice {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.statusDisplay
|
||||
{
|
||||
.statusDisplay {
|
||||
background: #000000;
|
||||
color: #ffffff;
|
||||
border: 1px solid #40628a;
|
||||
@@ -253,21 +216,18 @@ div.notice
|
||||
margin: 3px 0;
|
||||
}
|
||||
|
||||
.block
|
||||
{
|
||||
.block {
|
||||
padding: 8px;
|
||||
margin: 10px 4px 4px 4px;
|
||||
border: 1px solid #40628a;
|
||||
background-color: #202020;
|
||||
}
|
||||
|
||||
.block h3
|
||||
{
|
||||
.block h3 {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.progressBar
|
||||
{
|
||||
.progressBar {
|
||||
width: 240px;
|
||||
height: 14px;
|
||||
border: 1px solid #666666;
|
||||
@@ -276,55 +236,46 @@ div.notice
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progressFill
|
||||
{
|
||||
.progressFill {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: #40628a;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.progressFill.good
|
||||
{
|
||||
.progressFill.good {
|
||||
color: #ffffff;
|
||||
background: #00ff00;
|
||||
}
|
||||
|
||||
.progressFill.average
|
||||
{
|
||||
.progressFill.average {
|
||||
color: #ffffff;
|
||||
background: #d09000;
|
||||
}
|
||||
|
||||
.progressFill.bad
|
||||
{
|
||||
.progressFill.bad {
|
||||
color: #ffffff;
|
||||
background: #ff0000;
|
||||
}
|
||||
|
||||
.progressFill.highlight
|
||||
{
|
||||
.progressFill.highlight {
|
||||
color: #ffffff;
|
||||
background: #8BA5C4;
|
||||
}
|
||||
|
||||
.clearBoth
|
||||
{
|
||||
.clearBoth {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.clearLeft
|
||||
{
|
||||
.clearLeft {
|
||||
clear: left;
|
||||
}
|
||||
|
||||
.clearRight
|
||||
{
|
||||
.clearRight {
|
||||
clear: right;
|
||||
}
|
||||
|
||||
.line
|
||||
{
|
||||
.line {
|
||||
width: 100%;
|
||||
clear: both;
|
||||
}
|
||||
@@ -1,11 +1,9 @@
|
||||
.statusLabel
|
||||
{
|
||||
.statusLabel {
|
||||
width: 128px;
|
||||
float: left;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.statusValue
|
||||
{
|
||||
.statusValue {
|
||||
float: left;
|
||||
}
|
||||
|
||||
@@ -1,25 +1,21 @@
|
||||
.getblockstring
|
||||
{
|
||||
.getblockstring {
|
||||
font-family: Fixed, monospace;
|
||||
}
|
||||
|
||||
.blockString
|
||||
{
|
||||
.blockString {
|
||||
width: 55px;
|
||||
height: 19px;
|
||||
padding: 0 8px 8px 0;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.statusLabel
|
||||
{
|
||||
.statusLabel {
|
||||
width: 128px;
|
||||
float: left;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.statusValue
|
||||
{
|
||||
.statusValue {
|
||||
float: left;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
.statusLabel
|
||||
{
|
||||
.statusLabel {
|
||||
width: 128px;
|
||||
float: left;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.statusValue
|
||||
{
|
||||
.statusValue {
|
||||
float: left;
|
||||
}
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 9.8 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 61 KiB |
@@ -1700,6 +1700,32 @@ window "mainwindow"
|
||||
macro = "macro"
|
||||
menu = "menu"
|
||||
on-close = ""
|
||||
elem "asset_cache_browser"
|
||||
type = BROWSER
|
||||
pos = 424,208
|
||||
size = 1x1
|
||||
anchor1 = none
|
||||
anchor2 = none
|
||||
font-family = ""
|
||||
font-size = 0
|
||||
font-style = ""
|
||||
text-color = #000000
|
||||
background-color = none
|
||||
is-visible = false
|
||||
is-disabled = false
|
||||
is-transparent = false
|
||||
is-default = false
|
||||
border = none
|
||||
drop-zone = false
|
||||
right-click = false
|
||||
saved-params = ""
|
||||
on-size = ""
|
||||
show-history = false
|
||||
show-url = false
|
||||
auto-format = true
|
||||
use-title = false
|
||||
on-show = ""
|
||||
on-hide = ""
|
||||
elem "hotkey_toggle"
|
||||
type = BUTTON
|
||||
pos = 560,420
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
copy css\* "%USERPROFILE%\Documents\BYOND\cache" /y
|
||||
copy images\* "%USERPROFILE%\Documents\BYOND\cache" /y
|
||||
copy js\* "%USERPROFILE%\Documents\BYOND\cache" /y
|
||||
copy templates\* "%USERPROFILE%\Documents\BYOND\cache" /y
|
||||
@@ -1,329 +0,0 @@
|
||||
/* Icons
|
||||
----------------------------------*/
|
||||
|
||||
.icon24
|
||||
{
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
}
|
||||
|
||||
.icon24.uiStatusGood
|
||||
{
|
||||
background: url(uiIcons24.png) 0 0 no-repeat;
|
||||
}
|
||||
|
||||
.icon24.uiStatusAverage
|
||||
{
|
||||
background: url(uiIcons24.png) 0 -24px no-repeat;
|
||||
}
|
||||
|
||||
.icon24.uiStatusBad
|
||||
{
|
||||
background: url(uiIcons24.png) 0 -48px no-repeat;
|
||||
}
|
||||
|
||||
/* states and images */
|
||||
.uiIcon16 {
|
||||
float: left;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin: 2px 2px 0 2px;
|
||||
background-image: url(uiIcons16.png);
|
||||
}
|
||||
|
||||
.uiLinkPendingIcon {
|
||||
display: none;
|
||||
float: left;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin: 2px 2px 0 2px;
|
||||
background-image: url(uiLinkPendingIcon.gif);
|
||||
}
|
||||
|
||||
.linkPending .uiIcon16 {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.linkPending .uiLinkPendingIcon {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* positioning */
|
||||
.uiIcon16.icon-blank { background-position: 16px 16px; }
|
||||
.uiIcon16.icon-carat-1-n { background-position: 0 0; }
|
||||
.uiIcon16.icon-carat-1-ne { background-position: -16px 0; }
|
||||
.uiIcon16.icon-carat-1-e { background-position: -32px 0; }
|
||||
.uiIcon16.icon-carat-1-se { background-position: -48px 0; }
|
||||
.uiIcon16.icon-carat-1-s { background-position: -64px 0; }
|
||||
.uiIcon16.icon-carat-1-sw { background-position: -80px 0; }
|
||||
.uiIcon16.icon-carat-1-w { background-position: -96px 0; }
|
||||
.uiIcon16.icon-carat-1-nw { background-position: -112px 0; }
|
||||
.uiIcon16.icon-carat-2-n-s { background-position: -128px 0; }
|
||||
.uiIcon16.icon-carat-2-e-w { background-position: -144px 0; }
|
||||
.uiIcon16.icon-triangle-1-n { background-position: 0 -16px; }
|
||||
.uiIcon16.icon-triangle-1-ne { background-position: -16px -16px; }
|
||||
.uiIcon16.icon-triangle-1-e { background-position: -32px -16px; }
|
||||
.uiIcon16.icon-triangle-1-se { background-position: -48px -16px; }
|
||||
.uiIcon16.icon-triangle-1-s { background-position: -64px -16px; }
|
||||
.uiIcon16.icon-triangle-1-sw { background-position: -80px -16px; }
|
||||
.uiIcon16.icon-triangle-1-w { background-position: -96px -16px; }
|
||||
.uiIcon16.icon-triangle-1-nw { background-position: -112px -16px; }
|
||||
.uiIcon16.icon-triangle-2-n-s { background-position: -128px -16px; }
|
||||
.uiIcon16.icon-triangle-2-e-w { background-position: -144px -16px; }
|
||||
.uiIcon16.icon-arrow-1-n { background-position: 0 -32px; }
|
||||
.uiIcon16.icon-arrow-1-ne { background-position: -16px -32px; }
|
||||
.uiIcon16.icon-arrow-1-e { background-position: -32px -32px; }
|
||||
.uiIcon16.icon-arrow-1-se { background-position: -48px -32px; }
|
||||
.uiIcon16.icon-arrow-1-s { background-position: -64px -32px; }
|
||||
.uiIcon16.icon-arrow-1-sw { background-position: -80px -32px; }
|
||||
.uiIcon16.icon-arrow-1-w { background-position: -96px -32px; }
|
||||
.uiIcon16.icon-arrow-1-nw { background-position: -112px -32px; }
|
||||
.uiIcon16.icon-arrow-2-n-s { background-position: -128px -32px; }
|
||||
.uiIcon16.icon-arrow-2-ne-sw { background-position: -144px -32px; }
|
||||
.uiIcon16.icon-arrow-2-e-w { background-position: -160px -32px; }
|
||||
.uiIcon16.icon-arrow-2-se-nw { background-position: -176px -32px; }
|
||||
.uiIcon16.icon-arrowstop-1-n { background-position: -192px -32px; }
|
||||
.uiIcon16.icon-arrowstop-1-e { background-position: -208px -32px; }
|
||||
.uiIcon16.icon-arrowstop-1-s { background-position: -224px -32px; }
|
||||
.uiIcon16.icon-arrowstop-1-w { background-position: -240px -32px; }
|
||||
.uiIcon16.icon-arrowthick-1-n { background-position: 0 -48px; }
|
||||
.uiIcon16.icon-arrowthick-1-ne { background-position: -16px -48px; }
|
||||
.uiIcon16.icon-arrowthick-1-e { background-position: -32px -48px; }
|
||||
.uiIcon16.icon-arrowthick-1-se { background-position: -48px -48px; }
|
||||
.uiIcon16.icon-arrowthick-1-s { background-position: -64px -48px; }
|
||||
.uiIcon16.icon-arrowthick-1-sw { background-position: -80px -48px; }
|
||||
.uiIcon16.icon-arrowthick-1-w { background-position: -96px -48px; }
|
||||
.uiIcon16.icon-arrowthick-1-nw { background-position: -112px -48px; }
|
||||
.uiIcon16.icon-arrowthick-2-n-s { background-position: -128px -48px; }
|
||||
.uiIcon16.icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
|
||||
.uiIcon16.icon-arrowthick-2-e-w { background-position: -160px -48px; }
|
||||
.uiIcon16.icon-arrowthick-2-se-nw { background-position: -176px -48px; }
|
||||
.uiIcon16.icon-arrowthickstop-1-n { background-position: -192px -48px; }
|
||||
.uiIcon16.icon-arrowthickstop-1-e { background-position: -208px -48px; }
|
||||
.uiIcon16.icon-arrowthickstop-1-s { background-position: -224px -48px; }
|
||||
.uiIcon16.icon-arrowthickstop-1-w { background-position: -240px -48px; }
|
||||
.uiIcon16.icon-arrowreturnthick-1-w { background-position: 0 -64px; }
|
||||
.uiIcon16.icon-arrowreturnthick-1-n { background-position: -16px -64px; }
|
||||
.uiIcon16.icon-arrowreturnthick-1-e { background-position: -32px -64px; }
|
||||
.uiIcon16.icon-arrowreturnthick-1-s { background-position: -48px -64px; }
|
||||
.uiIcon16.icon-arrowreturn-1-w { background-position: -64px -64px; }
|
||||
.uiIcon16.icon-arrowreturn-1-n { background-position: -80px -64px; }
|
||||
.uiIcon16.icon-arrowreturn-1-e { background-position: -96px -64px; }
|
||||
.uiIcon16.icon-arrowreturn-1-s { background-position: -112px -64px; }
|
||||
.uiIcon16.icon-arrowrefresh-1-w { background-position: -128px -64px; }
|
||||
.uiIcon16.icon-arrowrefresh-1-n { background-position: -144px -64px; }
|
||||
.uiIcon16.icon-arrowrefresh-1-e { background-position: -160px -64px; }
|
||||
.uiIcon16.icon-arrowrefresh-1-s { background-position: -176px -64px; }
|
||||
.uiIcon16.icon-arrow-4 { background-position: 0 -80px; }
|
||||
.uiIcon16.icon-arrow-4-diag { background-position: -16px -80px; }
|
||||
.uiIcon16.icon-extlink { background-position: -32px -80px; }
|
||||
.uiIcon16.icon-newwin { background-position: -48px -80px; }
|
||||
.uiIcon16.icon-refresh { background-position: -64px -80px; }
|
||||
.uiIcon16.icon-shuffle { background-position: -80px -80px; }
|
||||
.uiIcon16.icon-transfer-e-w { background-position: -96px -80px; }
|
||||
.uiIcon16.icon-transferthick-e-w { background-position: -112px -80px; }
|
||||
.uiIcon16.icon-radiation { background-position: -128px -80px; }
|
||||
.uiIcon16.icon-folder-collapsed { background-position: 0 -96px; }
|
||||
.uiIcon16.icon-folder-open { background-position: -16px -96px; }
|
||||
.uiIcon16.icon-document { background-position: -32px -96px; }
|
||||
.uiIcon16.icon-document-b { background-position: -48px -96px; }
|
||||
.uiIcon16.icon-note { background-position: -64px -96px; }
|
||||
.uiIcon16.icon-mail-closed { background-position: -80px -96px; }
|
||||
.uiIcon16.icon-mail-open { background-position: -96px -96px; }
|
||||
.uiIcon16.icon-suitcase { background-position: -112px -96px; }
|
||||
.uiIcon16.icon-comment { background-position: -128px -96px; }
|
||||
.uiIcon16.icon-person { background-position: -144px -96px; }
|
||||
.uiIcon16.icon-print { background-position: -160px -96px; }
|
||||
.uiIcon16.icon-trash { background-position: -176px -96px; }
|
||||
.uiIcon16.icon-locked { background-position: -192px -96px; }
|
||||
.uiIcon16.icon-unlocked { background-position: -208px -96px; }
|
||||
.uiIcon16.icon-bookmark { background-position: -224px -96px; }
|
||||
.uiIcon16.icon-tag { background-position: -240px -96px; }
|
||||
.uiIcon16.icon-home { background-position: 0 -112px; }
|
||||
.uiIcon16.icon-flag { background-position: -16px -112px; }
|
||||
.uiIcon16.icon-calendar { background-position: -32px -112px; }
|
||||
.uiIcon16.icon-cart { background-position: -48px -112px; }
|
||||
.uiIcon16.icon-pencil { background-position: -64px -112px; }
|
||||
.uiIcon16.icon-clock { background-position: -80px -112px; }
|
||||
.uiIcon16.icon-disk { background-position: -96px -112px; }
|
||||
.uiIcon16.icon-calculator { background-position: -112px -112px; }
|
||||
.uiIcon16.icon-zoomin { background-position: -128px -112px; }
|
||||
.uiIcon16.icon-zoomout { background-position: -144px -112px; }
|
||||
.uiIcon16.icon-search { background-position: -160px -112px; }
|
||||
.uiIcon16.icon-wrench { background-position: -176px -112px; }
|
||||
.uiIcon16.icon-gear { background-position: -192px -112px; }
|
||||
.uiIcon16.icon-heart { background-position: -208px -112px; }
|
||||
.uiIcon16.icon-star { background-position: -224px -112px; }
|
||||
.uiIcon16.icon-link { background-position: -240px -112px; }
|
||||
.uiIcon16.icon-cancel { background-position: 0 -128px; }
|
||||
.uiIcon16.icon-plus { background-position: -16px -128px; }
|
||||
.uiIcon16.icon-plusthick { background-position: -32px -128px; }
|
||||
.uiIcon16.icon-minus { background-position: -48px -128px; }
|
||||
.uiIcon16.icon-minusthick { background-position: -64px -128px; }
|
||||
.uiIcon16.icon-close { background-position: -80px -128px; }
|
||||
.uiIcon16.icon-closethick { background-position: -96px -128px; }
|
||||
.uiIcon16.icon-key { background-position: -112px -128px; }
|
||||
.uiIcon16.icon-lightbulb { background-position: -128px -128px; }
|
||||
.uiIcon16.icon-scissors { background-position: -144px -128px; }
|
||||
.uiIcon16.icon-clipboard { background-position: -160px -128px; }
|
||||
.uiIcon16.icon-copy { background-position: -176px -128px; }
|
||||
.uiIcon16.icon-contact { background-position: -192px -128px; }
|
||||
.uiIcon16.icon-image { background-position: -208px -128px; }
|
||||
.uiIcon16.icon-video { background-position: -224px -128px; }
|
||||
.uiIcon16.icon-script { background-position: -240px -128px; }
|
||||
.uiIcon16.icon-alert { background-position: 0 -144px; }
|
||||
.uiIcon16.icon-alert-red { background-image: url(uiIcons16Red.png); background-position: 0 -144px; }
|
||||
.uiIcon16.icon-info { background-position: -16px -144px; }
|
||||
.uiIcon16.icon-notice { background-position: -32px -144px; }
|
||||
.uiIcon16.icon-help { background-position: -48px -144px; }
|
||||
.uiIcon16.icon-check { background-position: -64px -144px; }
|
||||
.uiIcon16.icon-bullet { background-position: -80px -144px; }
|
||||
.uiIcon16.icon-radio-on { background-position: -96px -144px; }
|
||||
.uiIcon16.icon-radio-off { background-position: -112px -144px; }
|
||||
.uiIcon16.icon-pin-w { background-position: -128px -144px; }
|
||||
.uiIcon16.icon-pin-s { background-position: -144px -144px; }
|
||||
.uiIcon16.icon-phone { background-position: -160px -144px; }
|
||||
.uiIcon16.icon-list { background-position: -176px -144px; }
|
||||
.uiIcon16.icon-syringe { background-position: -192px -144px; }
|
||||
.uiIcon16.icon-play { background-position: 0 -160px; }
|
||||
.uiIcon16.icon-pause { background-position: -16px -160px; }
|
||||
.uiIcon16.icon-seek-next { background-position: -32px -160px; }
|
||||
.uiIcon16.icon-seek-prev { background-position: -48px -160px; }
|
||||
.uiIcon16.icon-seek-end { background-position: -64px -160px; }
|
||||
.uiIcon16.icon-seek-start { background-position: -80px -160px; }
|
||||
/* uiIcon-seek-first is deprecated, use uiIcon-seek-start instead */
|
||||
.uiIcon16.icon-seek-first { background-position: -80px -160px; }
|
||||
.uiIcon16.icon-stop { background-position: -96px -160px; }
|
||||
.uiIcon16.icon-eject { background-position: -112px -160px; }
|
||||
.uiIcon16.icon-volume-off { background-position: -128px -160px; }
|
||||
.uiIcon16.icon-volume-on { background-position: -144px -160px; }
|
||||
.uiIcon16.icon-power { background-position: 0 -176px; }
|
||||
.uiIcon16.icon-signal-diag { background-position: -16px -176px; }
|
||||
.uiIcon16.icon-signal { background-position: -32px -176px; }
|
||||
.uiIcon16.icon-signal-green { background-image: url(uiIcons16Green.png); background-position: -32px -176px; }
|
||||
.uiIcon16.icon-battery-0 { background-position: -48px -176px; }
|
||||
.uiIcon16.icon-battery-1 { background-position: -64px -176px; }
|
||||
.uiIcon16.icon-battery-2 { background-position: -80px -176px; }
|
||||
.uiIcon16.icon-battery-3 { background-position: -96px -176px; }
|
||||
.uiIcon16.icon-circle-plus { background-position: 0 -192px; }
|
||||
.uiIcon16.icon-circle-minus { background-position: -16px -192px; }
|
||||
.uiIcon16.icon-circle-close { background-position: -32px -192px; }
|
||||
.uiIcon16.icon-circle-triangle-e { background-position: -48px -192px; }
|
||||
.uiIcon16.icon-circle-triangle-s { background-position: -64px -192px; }
|
||||
.uiIcon16.icon-circle-triangle-w { background-position: -80px -192px; }
|
||||
.uiIcon16.icon-circle-triangle-n { background-position: -96px -192px; }
|
||||
.uiIcon16.icon-circle-arrow-e { background-position: -112px -192px; }
|
||||
.uiIcon16.icon-circle-arrow-s { background-position: -128px -192px; }
|
||||
.uiIcon16.icon-circle-arrow-w { background-position: -144px -192px; }
|
||||
.uiIcon16.icon-circle-arrow-n { background-position: -160px -192px; }
|
||||
.uiIcon16.icon-circle-zoomin { background-position: -176px -192px; }
|
||||
.uiIcon16.icon-circle-zoomout { background-position: -192px -192px; }
|
||||
.uiIcon16.icon-circle-check { background-position: -208px -192px; }
|
||||
.uiIcon16.icon-circlesmall-plus { background-position: 0 -208px; }
|
||||
.uiIcon16.icon-circlesmall-minus { background-position: -16px -208px; }
|
||||
.uiIcon16.icon-circlesmall-close { background-position: -32px -208px; }
|
||||
.uiIcon16.icon-squaresmall-plus { background-position: -48px -208px; }
|
||||
.uiIcon16.icon-squaresmall-minus { background-position: -64px -208px; }
|
||||
.uiIcon16.icon-squaresmall-close { background-position: -80px -208px; }
|
||||
.uiIcon16.icon-grip-dotted-vertical { background-position: 0 -224px; }
|
||||
.uiIcon16.icon-grip-dotted-horizontal { background-position: -16px -224px; }
|
||||
.uiIcon16.icon-grip-solid-vertical { background-position: -32px -224px; }
|
||||
.uiIcon16.icon-grip-solid-horizontal { background-position: -48px -224px; }
|
||||
.uiIcon16.icon-gripsmall-diagonal-se { background-position: -64px -224px; }
|
||||
.uiIcon16.icon-grip-diagonal-se { background-position: -80px -224px; }
|
||||
.uiIcon16.icon-batt_full { background-image: url(c_max.gif); background-position: 0px 0px }
|
||||
.uiIcon16.icon-batt_disc { background-image: url(c_discharging.gif); background-position: 0px 0px }
|
||||
.uiIcon16.icon-batt_chrg { background-image: url(c_charging.gif); background-position: 0px 0px }
|
||||
/*yes, defining these all like this is awful, but unless the javascript for icon handling is sorted out this will have to do*/
|
||||
.uiIcon16.icon-empty64 { background-image: url(uiIcons64.png); background-position: 0 0; width: 64px; height: 64px; }
|
||||
.uiIcon16.icon-phone64 { background-image: url(uiIcons64.png); background-position: -64px 0; width: 64px; height: 64px; }
|
||||
.uiIcon16.icon-comment64 { background-image: url(uiIcons64.png); background-position: -128px 0; width: 64px; height: 64px; }
|
||||
.uiIcon16.icon-list64 { background-image: url(uiIcons64.png); background-position: -192px 0; width: 64px; height: 64px; }
|
||||
.uiIcon16.icon-gear64 { background-image: url(uiIcons64.png); background-position: -256px 0; width: 64px; height: 64px; }
|
||||
.uiIcon16.icon-person64 { background-image: url(uiIcons64.png); background-position: -320px 0; width: 64px; height: 64px; }
|
||||
.uiIcon16.icon-newspaper64 { background-image: url(uiIcons64.png); background-position: 0 -64px; width: 64px; height: 64px; }
|
||||
.uiIcon16.icon-note64 { background-image: url(uiIcons64.png); background-position: -64px -64px; width: 64px; height: 64px; }
|
||||
.uiIcon16.icon-close64 { background-image: url(uiIcons64.png); background-position: -128px -64px; width: 64px; height: 64px; }
|
||||
|
||||
.mapIcon16 {
|
||||
position: absolute;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
background-image: url(uiIcons16Green.png);
|
||||
background-position: -144px -96px;
|
||||
background-repeat: no-repeat;
|
||||
zoom: 0.125;
|
||||
margin-left: -1px;
|
||||
/*margin-bottom: -1px;*/
|
||||
}
|
||||
.mapIcon16.dead {
|
||||
background-image: url(uiIcons16Red.png);
|
||||
}
|
||||
|
||||
/* Command Positions */
|
||||
.mapIcon16.rank-captain {
|
||||
background-position: -224px -112px;
|
||||
}
|
||||
.mapIcon16.rank-headofpersonnel {
|
||||
background-position: -112px -96px;
|
||||
}
|
||||
.mapIcon16.rank-headofsecurity {
|
||||
background-position: -112px -128px;
|
||||
}
|
||||
.mapIcon16.rank-chiefengineer {
|
||||
background-position: -176px -112px;
|
||||
}
|
||||
.mapIcon16.rank-researchdirector {
|
||||
background-position: -128px -128px;
|
||||
}
|
||||
.mapIcon16.rank-chiefmedicalofficer {
|
||||
background-position: -32px -128px;
|
||||
}
|
||||
|
||||
/* Engineering Positions */
|
||||
.mapIcon16.rank-stationengineer {
|
||||
background-position: -176px -112px;
|
||||
}
|
||||
.mapIcon16.rank-atmospherictechnician {
|
||||
background-position: -176px -112px;
|
||||
}
|
||||
|
||||
/* Medical Positions */
|
||||
.mapIcon16.rank-medicaldoctor {
|
||||
background-position: -32px -128px;
|
||||
}
|
||||
.mapIcon16.rank-geneticist {
|
||||
background-position: -32px -128px;
|
||||
}
|
||||
.mapIcon16.rank-psychiatrist {
|
||||
background-position: -32px -128px;
|
||||
}
|
||||
.mapIcon16.rank-chemist {
|
||||
background-position: -32px -128px;
|
||||
}
|
||||
|
||||
/* Science Positions */
|
||||
.mapIcon16.rank-scientist {
|
||||
background-position: -128px -128px;
|
||||
}
|
||||
.mapIcon16.rank-geneticist {
|
||||
background-position: -128px -128px;
|
||||
}
|
||||
.mapIcon16.rank-roboticist {
|
||||
background-position: -128px -128px;
|
||||
}
|
||||
.mapIcon16.rank-xenobiologist {
|
||||
background-position: -128px -128px;
|
||||
}
|
||||
|
||||
/* Security Positions */
|
||||
.mapIcon16.rank-warden {
|
||||
background-position: -112px -128px;
|
||||
}
|
||||
.mapIcon16.rank-detective {
|
||||
background-position: -112px -128px;
|
||||
}
|
||||
.mapIcon16.rank-securityofficer {
|
||||
background-position: -112px -128px;
|
||||
}
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
body {
|
||||
background: #272727 url(uiBasicBackground.png) 50% 0 repeat-x;
|
||||
}
|
||||
|
||||
#uiContent {
|
||||
clear: both;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
#uiLoadingNotice {
|
||||
position: relative;
|
||||
background: url(uiNoticeBackground.jpg) 50% 50%;
|
||||
color: #000000;
|
||||
font-size: 14px;
|
||||
font-style: italic;
|
||||
font-weight: bold;
|
||||
padding: 3px 4px 3px 4px;
|
||||
margin: 4px 0 4px 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,128 +0,0 @@
|
||||
body {
|
||||
background: #272727 url(uiBackground.png) 50% 0 repeat-x;
|
||||
}
|
||||
|
||||
#uiWrapper {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
#uiTitleWrapper {
|
||||
position: relative;
|
||||
height: 30px;
|
||||
}
|
||||
|
||||
#uiTitleText {
|
||||
position: absolute;
|
||||
top: 6px;
|
||||
left: 44px;
|
||||
width: 66%;
|
||||
overflow: hidden;
|
||||
color: #E9C183;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
#uiTitle.icon {
|
||||
padding: 6px 8px 6px 42px;
|
||||
background-position: 2px 50%;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
#uiTitleFluff {
|
||||
position: absolute;
|
||||
top: 4px;
|
||||
right: 12px;
|
||||
width: 42px;
|
||||
height: 24px;
|
||||
background: url(uiTitleFluff.png) 50% 50% no-repeat;
|
||||
}
|
||||
|
||||
#uiStatusIcon {
|
||||
position: absolute;
|
||||
top: 4px;
|
||||
left: 12px;
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
}
|
||||
|
||||
#uiMapWrapper {
|
||||
clear: both;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
#uiMapHeader {
|
||||
position: relative;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
#uiMapContainer {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
height: 600px;
|
||||
overflow: hidden;
|
||||
border: 1px solid #40628a;
|
||||
background: url(nanomapBackground.png);
|
||||
}
|
||||
|
||||
#uiMap {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin: -512px 0 0 -512px;
|
||||
width: 300px;
|
||||
height: 300px;
|
||||
overflow: hidden;
|
||||
zoom: 4;
|
||||
}
|
||||
|
||||
#uiMapImage {
|
||||
position: absolute;
|
||||
bottom: 1px;
|
||||
left: 1px;
|
||||
width: 300px;
|
||||
height: 300px;
|
||||
}
|
||||
|
||||
#uiMapContent {
|
||||
position: absolute;
|
||||
bottom: 0px;
|
||||
left: 0px;
|
||||
width: 300px;
|
||||
height: 300px;
|
||||
}
|
||||
|
||||
#uiMapFooter {
|
||||
position: relative;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
#uiContent {
|
||||
clear: both;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
#uiMapTooltip {
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
top: 10px;
|
||||
border: 1px solid #40628a;
|
||||
background-color: #272727;
|
||||
padding: 8px;
|
||||
display: none;
|
||||
z-index: 9999;
|
||||
}
|
||||
|
||||
#uiLoadingNotice {
|
||||
position: relative;
|
||||
background: url(uiNoticeBackground.jpg) 50% 50%;
|
||||
color: #000000;
|
||||
font-size: 14px;
|
||||
font-style: italic;
|
||||
font-weight: bold;
|
||||
padding: 3px 4px 3px 4px;
|
||||
margin: 4px 0 4px 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,766 +0,0 @@
|
||||
body {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
font-size: 12px;
|
||||
color: #ffffff;
|
||||
line-height: 170%;
|
||||
font-family: Verdana, Geneva, sans-serif;
|
||||
background: #272727;
|
||||
}
|
||||
|
||||
#uiNoScript {
|
||||
position: fixed;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
margin: -60px 0 0 -150px;
|
||||
width: 280px;
|
||||
height: 120px;
|
||||
background: #ffffff;
|
||||
border: 2px solid #ff0000;
|
||||
color: #000000;
|
||||
font-size: 10px;
|
||||
font-weight: bold;
|
||||
z-index: 9999;
|
||||
padding: 0px 10px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
hr {
|
||||
background-color: #40628a;
|
||||
height: 1px;
|
||||
}
|
||||
|
||||
.link, .linkOn, .linkOff, .selected, .disabled, .yellowButton, .redButton {
|
||||
float: left;
|
||||
min-width: 15px;
|
||||
height: 16px;
|
||||
text-align: center;
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
background: #40628a;
|
||||
border: 1px solid #161616;
|
||||
padding: 0px 4px 4px 4px;
|
||||
margin: 0 2px 2px 0;
|
||||
cursor: default;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.hasIcon {
|
||||
padding: 0px 4px 4px 0px;
|
||||
}
|
||||
|
||||
a:hover, .zoomLink:hover, .linkActive:hover {
|
||||
background: #507aac;
|
||||
}
|
||||
|
||||
.linkPending, .linkPending:hover {
|
||||
color: #ffffff;
|
||||
background: #507aac;
|
||||
}
|
||||
|
||||
a.white, a.white:link, a.white:visited, a.white:active {
|
||||
color: #40628a;
|
||||
text-decoration: none;
|
||||
background: #ffffff;
|
||||
border: 1px solid #161616;
|
||||
padding: 1px 4px 1px 4px;
|
||||
margin: 0 2px 0 0;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
a.white:hover {
|
||||
color: #ffffff;
|
||||
background: #40628a;
|
||||
}
|
||||
|
||||
.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.linkOn, a.linkOn:link, a.linkOn:visited, a.linkOn:active, a.linkOn:hover, .selected, a.selected:link, a.selected:visited, a.selected:active, a.selected:hover {
|
||||
color: #ffffff;
|
||||
background: #2f943c;
|
||||
}
|
||||
|
||||
.linkOff, a.linkOff:link, a.linkOff:visited, a.linkOff:active, a.linkOff:hover, .disabled, a.disabled:link, a.disabled:visited, a.disabled:active, a.disabled:hover {
|
||||
color: #ffffff;
|
||||
background: #999999;
|
||||
border-color: #666666;
|
||||
}
|
||||
|
||||
a.icon, .linkOn.icon, .linkOff.icon, .selected.icon, .disabled.icon {
|
||||
position: relative;
|
||||
padding: 1px 4px 2px 20px;
|
||||
}
|
||||
|
||||
a.icon img, .linkOn.icon img, .linkOff.icon img, .selected.icon img, .disabled.icon img {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
}
|
||||
|
||||
.linkDanger, a.linkDanger:link, a.linkDanger:visited, a.linkDanger:active {
|
||||
color: #ffffff;
|
||||
background-color: #ff0000;
|
||||
border-color: #aa0000;
|
||||
}
|
||||
|
||||
.linkDanger:hover {
|
||||
background-color: #ff6666;
|
||||
}
|
||||
|
||||
ul {
|
||||
padding: 4px 0 0 10px;
|
||||
margin: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
li {
|
||||
padding: 0 0 2px 0;
|
||||
}
|
||||
|
||||
img, a img {
|
||||
border-style: none;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin: 0;
|
||||
padding: 12px 0 6px 0;
|
||||
color: #FFFFFF;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.white {
|
||||
color: white;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.good {
|
||||
color: #4f7529;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.average {
|
||||
color: #cd6500;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.bad {
|
||||
color: #ee0000;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.idle {
|
||||
color: #272727;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.redButton {
|
||||
background: #ea0000;
|
||||
}
|
||||
|
||||
.yellowButton {
|
||||
background: #cacc00;
|
||||
}
|
||||
|
||||
.highlight {
|
||||
color: #8BA5C4;
|
||||
}
|
||||
|
||||
.dark {
|
||||
color: #272727;
|
||||
}
|
||||
|
||||
.caption {
|
||||
font-size: 10px;
|
||||
font-weight: bold;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.footer {
|
||||
font-size: 10px;
|
||||
}
|
||||
|
||||
.noticePlaceholder {
|
||||
position: relative;
|
||||
font-size: 12px;
|
||||
font-style: italic;
|
||||
font-weight: bold;
|
||||
padding: 3px 4px 3px 4px;
|
||||
margin: 4px 0 4px 0;
|
||||
}
|
||||
|
||||
.notice {
|
||||
position: relative;
|
||||
background: url(uiNoticeBackground.jpg) 50% 50%;
|
||||
color: #000000;
|
||||
font-size: 12px;
|
||||
font-style: italic;
|
||||
font-weight: bold;
|
||||
padding: 3px 4px 3px 4px;
|
||||
margin: 4px 0 4px 0;
|
||||
}
|
||||
|
||||
.notice.icon {
|
||||
padding: 2px 4px 0 20px;
|
||||
}
|
||||
|
||||
.notice img {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
div.notice {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.itemGroup {
|
||||
border: 1px solid #e9c183;
|
||||
background: #2c2c2c;
|
||||
padding: 4px;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.item {
|
||||
width: 100%;
|
||||
margin: 4px 0 0 0;
|
||||
clear: both;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.itemContentNarrow, .itemContent {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.itemContentNarrow {
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
.itemContent {
|
||||
width: 69%;
|
||||
}
|
||||
|
||||
.itemLabelNarrow, .itemLabel, .itemLabelWide, .itemLabelWider, .itemLabelWidest {
|
||||
float: left;
|
||||
color: #e9c183;
|
||||
}
|
||||
|
||||
.itemLabelNarrow {
|
||||
width: 20%;
|
||||
}
|
||||
|
||||
.itemLabel {
|
||||
width: 30%;
|
||||
}
|
||||
|
||||
.itemLabelWide {
|
||||
width: 45%;
|
||||
}
|
||||
|
||||
.itemLabelWider {
|
||||
width: 69%;
|
||||
}
|
||||
|
||||
.itemLabelWidest {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.itemContentWide {
|
||||
float: left;
|
||||
width: 79%;
|
||||
}
|
||||
|
||||
.itemContentSmall {
|
||||
float: left;
|
||||
width: 33%;
|
||||
}
|
||||
|
||||
.itemContentMedium {
|
||||
float: left;
|
||||
width: 55%;
|
||||
}
|
||||
|
||||
.statusDisplay {
|
||||
background: #000000;
|
||||
color: #ffffff;
|
||||
border: 1px solid #40628a;
|
||||
padding: 4px;
|
||||
margin: 3px 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.statusDisplayRecords {
|
||||
background: #000000;
|
||||
color: #ffffff;
|
||||
border: 1px solid #40628a;
|
||||
padding: 4px;
|
||||
margin: 3px 0;
|
||||
overflow-x: hidden;
|
||||
overflow-y: auto;
|
||||
}
|
||||
|
||||
.statusDisplayComm {
|
||||
width: 100%;
|
||||
background: rgba(0, 0, 0, 0.5);
|
||||
color: #ffffff;
|
||||
padding-bottom: 4px;
|
||||
border-top: 0 none;
|
||||
border-left: 0 none;
|
||||
border-right: 0 none;
|
||||
border-bottom: 2px inset #40628a;
|
||||
margin: 3px 0;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.statusLabel {
|
||||
width: 138px;
|
||||
float: left;
|
||||
overflow: hidden;
|
||||
color: #98B0C3;
|
||||
}
|
||||
|
||||
.statusValue {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.block {
|
||||
padding: 8px;
|
||||
margin: 10px 4px 4px 4px;
|
||||
border: 1px solid #40628a;
|
||||
background-color: #202020;
|
||||
}
|
||||
|
||||
.block h3 {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.displayBar {
|
||||
position: relative;
|
||||
width: 236px;
|
||||
height: 16px;
|
||||
border: 1px solid #666666;
|
||||
float: left;
|
||||
margin: 0 5px 0 0;
|
||||
overflow: hidden;
|
||||
background: #000000;
|
||||
}
|
||||
|
||||
.displayBarText, .displayBarVerticalText, .displayBarBeakerText{
|
||||
position: absolute;
|
||||
top: -2px;
|
||||
left: 5px;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
color: #ffffff;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.displayBarFill {
|
||||
width: 0%;
|
||||
height: 100%;
|
||||
background: #40628a;
|
||||
overflow: hidden;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.displayBarVertical {
|
||||
position: relative;
|
||||
width: 16px;
|
||||
height: 200px;
|
||||
border: 1px solid #666666;
|
||||
float: left;
|
||||
margin: 0 5px 0 0;
|
||||
overflow: hidden;
|
||||
background: #40628a;
|
||||
}
|
||||
|
||||
.displayBarVerticalFill {
|
||||
width: 100%;
|
||||
height: 0%;
|
||||
overflow: hidden;
|
||||
float: left;
|
||||
background: #000000;
|
||||
}
|
||||
|
||||
/*used in xenobio2 computer*/
|
||||
|
||||
.displayBarBeaker {
|
||||
position: relative;
|
||||
width: 100px;
|
||||
height: 110px;
|
||||
border-right: 2px solid rgb(102, 179, 255);
|
||||
border-left: 2px solid rgb(102, 179, 255);
|
||||
border-bottom: 2px solid rgb(102, 179, 255);
|
||||
float: left;
|
||||
margin: 0 5px 0 0;
|
||||
overflow: hidden;
|
||||
background: #40628a;
|
||||
}
|
||||
|
||||
.displayBarBeakerFill {
|
||||
width: 100%;
|
||||
height: 0%;
|
||||
overflow: hidden;
|
||||
float: left;
|
||||
background: rgba(153, 204, 255, 0.3);
|
||||
}
|
||||
|
||||
.displayBarFill.alignRight {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.displayBarFill.good {
|
||||
color: #ffffff;
|
||||
background: #4f7529;
|
||||
}
|
||||
|
||||
.displayBarFill.average {
|
||||
color: #ffffff;
|
||||
background: #cd6500;
|
||||
}
|
||||
|
||||
.displayBarFill.bad {
|
||||
color: #ffffff;
|
||||
background: #ee0000;
|
||||
}
|
||||
|
||||
.displayBarFill.highlight {
|
||||
color: #ffffff;
|
||||
background: #8BA5C4;
|
||||
}
|
||||
|
||||
.clearBoth {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.clearLeft {
|
||||
clear: left;
|
||||
}
|
||||
|
||||
.clearRight {
|
||||
clear: right;
|
||||
}
|
||||
|
||||
.line {
|
||||
width: 100%;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.inactive, a.inactive:link, a.inactive:visited, a.inactive:active, a.inactive:hover {
|
||||
color: #ffffff;
|
||||
background: #999999;
|
||||
border-color: #666666;
|
||||
}
|
||||
|
||||
.fixedLeft {
|
||||
width: 110px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.fixedLeftWide {
|
||||
width: 165px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.fixedLeftWider {
|
||||
width: 220px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.fixedLeftWidest {
|
||||
width: 250px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.fixedLeftWiderRed {
|
||||
width: 220px;
|
||||
float: left;
|
||||
background: #ee0000;
|
||||
}
|
||||
|
||||
.floatRight {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.floatLeft {
|
||||
float: left;
|
||||
}
|
||||
|
||||
/* Used in PDA */
|
||||
|
||||
.wholeScreen {
|
||||
position: absolute;
|
||||
color: #517087;
|
||||
font-size: 16px;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.pdalink {
|
||||
float: left;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/* DNA Modifier UI (dna_modifier.tmpl) */
|
||||
|
||||
.dnaBlock {
|
||||
float: left;
|
||||
width: 90px;
|
||||
padding: 0 0 5px 0;
|
||||
}
|
||||
|
||||
.dnaBlockNumber {
|
||||
font-family: Fixed, monospace;
|
||||
float: left;
|
||||
color: #ffffff;
|
||||
background: #363636;
|
||||
min-width: 20px;
|
||||
height: 20px;
|
||||
padding: 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.dnaSubBlock {
|
||||
font-family: Fixed, monospace;
|
||||
float: left;
|
||||
padding: 0;
|
||||
min-width: 16px;
|
||||
height: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.mask {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background: url(uiMaskBackground.png);
|
||||
}
|
||||
|
||||
.maskContent {
|
||||
width: 100%;
|
||||
height: 200px;
|
||||
margin: 200px 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
table.fixed {
|
||||
table-layout:fixed;
|
||||
}
|
||||
|
||||
table.fixed td {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* Table stuffs for power monitor */
|
||||
table.pmon {
|
||||
border: 2px solid RoyalBlue;
|
||||
}
|
||||
|
||||
table.pmon td, table.pmon th {
|
||||
border-bottom: 1px dotted black;
|
||||
padding: 0px 5px 0px 5px;
|
||||
}
|
||||
|
||||
/* Table Stuffs for manifest*/
|
||||
|
||||
th.command {
|
||||
background: #3333FF;
|
||||
font-weight: bold;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
th.sec {
|
||||
background: #8e0000;
|
||||
font-weight: bold;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
th.med {
|
||||
background: #006600;
|
||||
font-weight: bold;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
th.eng {
|
||||
background: #b27300;
|
||||
font-weight: bold;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
th.sci {
|
||||
background: #a65ba6;
|
||||
font-weight: bold;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
th.car {
|
||||
background: #bb9040;
|
||||
font-weight: bold;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
th.civ {
|
||||
background: #a32800;
|
||||
font-weight: bold;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
th.misc {
|
||||
background: #666666;
|
||||
font-weight: bold;
|
||||
color: #ffffff;
|
||||
}
|
||||
|
||||
/* Damage colors for crew monitoring computer */
|
||||
|
||||
.burn {
|
||||
color: orange;
|
||||
}
|
||||
|
||||
.brute {
|
||||
color: red;
|
||||
}
|
||||
|
||||
.toxin {
|
||||
color: green;
|
||||
}
|
||||
|
||||
.oxyloss {
|
||||
color: blue;
|
||||
}
|
||||
|
||||
/* 75px width used in power monitoring console buttons */
|
||||
.width75btn {
|
||||
width: 75px;
|
||||
}
|
||||
|
||||
/*Communicator Homescreen*/
|
||||
div.homeContainer {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
margin: auto;
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
div.homeScreen {
|
||||
padding: 0 20px 0 20px;
|
||||
}
|
||||
|
||||
.link64 {
|
||||
float: left;
|
||||
min-width: 15px;
|
||||
max-width: 68px;
|
||||
height: 64px;
|
||||
text-align: center;
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
background: rgba(64, 98, 138, 0.6);
|
||||
border: 1px solid #161616;
|
||||
padding: 0 0 4px 0;
|
||||
margin: 0 0 30px 5.5%;
|
||||
cursor: default;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.link64:hover {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
/*Communicator Dialing*/
|
||||
.dialPad {
|
||||
clear: both;
|
||||
text-align: center;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
.dialPadKeys {
|
||||
float: left;
|
||||
width: 47px;
|
||||
height: 47px;
|
||||
font-size: 32px;
|
||||
text-align: center;
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
background: rgba(64, 98, 138, 0.15);
|
||||
border: 1px inset rgba(100, 100, 100, 0.25);
|
||||
cursor: default;
|
||||
line-height: 47px;
|
||||
}
|
||||
|
||||
.dialPadKeys:hover {
|
||||
background: rgba(80, 122, 172, 0.5);
|
||||
}
|
||||
|
||||
.dialPadButtons {
|
||||
float: left;
|
||||
width: 63.2px;
|
||||
height: 63.2px;
|
||||
text-align: center;
|
||||
color: #ffffff;
|
||||
text-decoration: none;
|
||||
background: rgba(64, 98, 138, 0.15);
|
||||
border: 1px inset rgba(100, 100, 100, 0.25);
|
||||
padding: 0 0 4px 0;
|
||||
cursor: default;
|
||||
margin-bottom: 25px;
|
||||
}
|
||||
|
||||
.dialPadButtons:hover {
|
||||
background: rgba(80, 122, 172, 0.5);
|
||||
font-size: 13px;
|
||||
|
||||
}
|
||||
|
||||
.dialPadAddress {
|
||||
float: left;
|
||||
width: 192px;
|
||||
height: 18px;
|
||||
background: rgba(64, 98, 138, 0.15);
|
||||
color: #ffffff;
|
||||
border-left: 1px inset #40628a;
|
||||
border-top: 1px inset #40628a;
|
||||
border-bottom: 1px inset #40628a;
|
||||
|
||||
}
|
||||
|
||||
.dialPadAddress:hover{
|
||||
background: rgba(80, 122, 172, 0.5);
|
||||
}
|
||||
|
||||
.dialPadClear {
|
||||
float: left;
|
||||
width: 19%;
|
||||
height: 18px;
|
||||
background: rgba(64, 98, 138, 0.15);
|
||||
color: #ffffff;
|
||||
border-right: 1px inset #40628a;
|
||||
border-top: 1px inset #40628a;
|
||||
border-bottom: 1px inset #40628a;
|
||||
}
|
||||
|
||||
.dialPadClear:hover{
|
||||
background: rgba(80, 122, 172, 0.5);
|
||||
}
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.0 KiB |
Vendored
-1
File diff suppressed because one or more lines are too long
Vendored
-50
File diff suppressed because one or more lines are too long
@@ -1,157 +0,0 @@
|
||||
(function () {
|
||||
"use strict";
|
||||
|
||||
var doT = {
|
||||
version: '1.0.1-nanoui',
|
||||
templateSettings: {
|
||||
evaluate: /\{\{([\s\S]+?)\}\}/g,
|
||||
interpolate: /\{\{:([\s\S]+?)\}\}/g,
|
||||
encode: /\{\{>([\s\S]+?)\}\}/g,
|
||||
use: /\{\{#([\s\S]+?)\}\}/g,
|
||||
define: /\{\{##\s*([\w\.$]+)\s*(\:|=)([\s\S]+?)#\}\}/g,
|
||||
conditional: /\{\{\/?if\s*([\s\S]*?)\s*\}\}/g,
|
||||
conditionalElse: /\{\{else\s*([\s\S]*?)\s*\}\}/g,
|
||||
iterate: /\{\{\/?for\s*(?:\}\}|([\s\S]+?)\s*(?:\:\s*([\w$]+))?\s*(?:\:\s*([\w$]+))?\s*\}\})/g,
|
||||
props: /\{\{\/?props\s*(?:\}\}|([\s\S]+?)\s*(?:\:\s*([\w$]+))?\s*(?:\:\s*([\w$]+))?\s*\}\})/g,
|
||||
empty: /\{\{empty\}\}/g,
|
||||
varname: 'data, config, helper',
|
||||
strip: true,
|
||||
append: true,
|
||||
selfcontained: false
|
||||
},
|
||||
template: undefined, //fn, compile template
|
||||
compile: undefined //fn, for express
|
||||
}, global;
|
||||
|
||||
if (typeof module !== 'undefined' && module.exports) {
|
||||
module.exports = doT;
|
||||
} else if (typeof define === 'function' && define.amd) {
|
||||
define(function () {
|
||||
return doT;
|
||||
});
|
||||
} else {
|
||||
global = (function () {
|
||||
return this || (0, eval)('this');
|
||||
}());
|
||||
global.doT = doT;
|
||||
}
|
||||
|
||||
function encodeHTMLSource() {
|
||||
var encodeHTMLRules = { "&": "&", "<": "<", ">": ">", '"': '"', "'": ''', "/": '/' },
|
||||
matchHTML = /&(?!#?\w+;)|<|>|"|'|\//g;
|
||||
return function () {
|
||||
return this ? this.replace(matchHTML, function (m) {
|
||||
return encodeHTMLRules[m] || m;
|
||||
}) : this;
|
||||
};
|
||||
}
|
||||
|
||||
String.prototype.encodeHTML = encodeHTMLSource();
|
||||
|
||||
var startend = {
|
||||
append: { start: "'+(", end: ")+'", endencode: "||'').toString().encodeHTML()+'" },
|
||||
split: { start: "';out+=(", end: ");out+='", endencode: "||'').toString().encodeHTML();out+='"}
|
||||
}, skip = /$^/;
|
||||
|
||||
function resolveDefs(c, block, def) {
|
||||
return ((typeof block === 'string') ? block : block.toString())
|
||||
.replace(c.define || skip, function (m, code, assign, value) {
|
||||
if (code.indexOf('def.') === 0) {
|
||||
code = code.substring(4);
|
||||
}
|
||||
if (!(code in def)) {
|
||||
if (assign === ':') {
|
||||
if (c.defineParams) value.replace(c.defineParams, function (m, param, v) {
|
||||
def[code] = {arg: param, text: v};
|
||||
});
|
||||
if (!(code in def)) def[code] = value;
|
||||
} else {
|
||||
new Function("def", "def['" + code + "']=" + value)(def);
|
||||
}
|
||||
}
|
||||
return '';
|
||||
})
|
||||
.replace(c.use || skip, function (m, code) {
|
||||
if (c.useParams) code = code.replace(c.useParams, function (m, s, d, param) {
|
||||
if (def[d] && def[d].arg && param) {
|
||||
var rw = (d + ":" + param).replace(/'|\\/g, '_');
|
||||
def.__exp = def.__exp || {};
|
||||
def.__exp[rw] = def[d].text.replace(new RegExp("(^|[^\\w$])" + def[d].arg + "([^\\w$])", "g"), "$1" + param + "$2");
|
||||
return s + "def.__exp['" + rw + "']";
|
||||
}
|
||||
});
|
||||
var v = new Function("def", "return " + code)(def);
|
||||
return v ? resolveDefs(c, v, def) : v;
|
||||
});
|
||||
}
|
||||
|
||||
function unescape(code) {
|
||||
return code.replace(/\\('|\\)/g, "$1").replace(/[\r\t\n]/g, ' ');
|
||||
}
|
||||
|
||||
doT.template = function (tmpl, c, def) {
|
||||
c = c || doT.templateSettings;
|
||||
var cse = c.append ? startend.append : startend.split, needhtmlencode, sid = 0,
|
||||
str = (c.use || c.define) ? resolveDefs(c, tmpl, def || {}) : tmpl;
|
||||
|
||||
str = ("var out='" + (c.strip ? str.replace(/(^|\r|\n)\t* +| +\t*(\r|\n|$)/g, ' ')
|
||||
.replace(/\r|\n|\t|\/\*[\s\S]*?\*\//g, '') : str)
|
||||
.replace(/'|\\/g, '\\$&')
|
||||
.replace(c.interpolate || skip, function (m, code) {
|
||||
return cse.start + unescape(code) + cse.end;
|
||||
})
|
||||
.replace(c.encode || skip, function (m, code) {
|
||||
needhtmlencode = true;
|
||||
return cse.start + unescape(code) + cse.endencode;
|
||||
})
|
||||
.replace(c.conditional || skip, function (m, code) {
|
||||
return (code ? "';if(" + unescape(code) + "){out+='" : "';}out+='");
|
||||
})
|
||||
.replace(c.conditionalElse || skip, function (m, code) {
|
||||
return (code ? "';}else if(" + unescape(code) + "){out+='" : "';}else{out+='");
|
||||
})
|
||||
.replace(c.iterate || skip, function (m, iterate, vname, iname) {
|
||||
if (!iterate) return "';} } out+='";
|
||||
sid += 1;
|
||||
vname = vname || "value";
|
||||
iname = iname || "index";
|
||||
iterate = unescape(iterate);
|
||||
var arrayName = "arr" + sid;
|
||||
return "';var " + arrayName + "=" + iterate + ";if(" + arrayName + " && " + arrayName + ".length > 0){var " + vname + "," + iname + "=-1,l" + sid + "=" + arrayName + ".length-1;while(" + iname + "<l" + sid + "){"
|
||||
+ vname + "=" + arrayName + "[" + iname + "+=1];out+='";
|
||||
})
|
||||
.replace(c.props || skip, function (m, iterate, vname, iname) {
|
||||
if (!iterate) return "';} } out+='";
|
||||
sid += 1;
|
||||
vname = vname || "value";
|
||||
iname = iname || "key";
|
||||
iterate = unescape(iterate);
|
||||
var objectName = "arr" + sid;
|
||||
return "';var " + objectName + "=" + iterate + ";if(" + objectName + " && Object.size(" + objectName + ") > 0){var " + vname + ";for( var " + iname + " in " + objectName + "){ if (!" + objectName + ".hasOwnProperty(" + iname + ")) continue; " + vname + "=" + objectName + "[" + iname + "];out+='";
|
||||
})
|
||||
.replace(c.empty || skip, function (m) {
|
||||
return "';}}else{if(true){out+='"; // The "if(true)" condition is required to account for the for tag closing with two brackets
|
||||
})
|
||||
.replace(c.evaluate || skip, function (m, code) {
|
||||
return "';" + unescape(code) + "out+='";
|
||||
})
|
||||
+ "';return out;")
|
||||
.replace(/\n/g, '\\n').replace(/\t/g, '\\t').replace(/\r/g, '\\r')
|
||||
.replace(/(\s|;|\}|^|\{)out\+='';/g, '$1').replace(/\+''/g, '')
|
||||
.replace(/(\s|;|\}|^|\{)out\+=''\+/g, '$1out+=');
|
||||
|
||||
if (needhtmlencode && c.selfcontained) {
|
||||
str = "String.prototype.encodeHTML=(" + encodeHTMLSource.toString() + "());" + str;
|
||||
}
|
||||
try {
|
||||
return new Function(c.varname, str);
|
||||
} catch (e) {
|
||||
if (typeof console !== 'undefined') console.log("Could not create a template function: " + str);
|
||||
throw e;
|
||||
}
|
||||
};
|
||||
|
||||
doT.compile = function (tmpl, def) {
|
||||
return doT.template(tmpl, null, def);
|
||||
};
|
||||
}());
|
||||
Vendored
-2670
File diff suppressed because it is too large
Load Diff
Vendored
-10340
File diff suppressed because it is too large
Load Diff
@@ -1,138 +0,0 @@
|
||||
/**
|
||||
* jQuery.timers - Timer abstractions for jQuery
|
||||
* Written by Blair Mitchelmore (blair DOT mitchelmore AT gmail DOT com)
|
||||
* Licensed under the WTFPL (http://sam.zoy.org/wtfpl/).
|
||||
* Date: 2009/10/16
|
||||
*
|
||||
* @author Blair Mitchelmore
|
||||
* @version 1.2
|
||||
*
|
||||
**/
|
||||
|
||||
jQuery.fn.extend({
|
||||
everyTime: function(interval, label, fn, times) {
|
||||
return this.each(function() {
|
||||
jQuery.timer.add(this, interval, label, fn, times);
|
||||
});
|
||||
},
|
||||
oneTime: function(interval, label, fn) {
|
||||
return this.each(function() {
|
||||
jQuery.timer.add(this, interval, label, fn, 1);
|
||||
});
|
||||
},
|
||||
stopTime: function(label, fn) {
|
||||
return this.each(function() {
|
||||
jQuery.timer.remove(this, label, fn);
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
jQuery.extend({
|
||||
timer: {
|
||||
global: [],
|
||||
guid: 1,
|
||||
dataKey: "jQuery.timer",
|
||||
regex: /^([0-9]+(?:\.[0-9]*)?)\s*(.*s)?$/,
|
||||
powers: {
|
||||
// Yeah this is major overkill...
|
||||
'ms': 1,
|
||||
'cs': 10,
|
||||
'ds': 100,
|
||||
's': 1000,
|
||||
'das': 10000,
|
||||
'hs': 100000,
|
||||
'ks': 1000000
|
||||
},
|
||||
timeParse: function(value) {
|
||||
if (value == undefined || value == null)
|
||||
return null;
|
||||
var result = this.regex.exec(jQuery.trim(value.toString()));
|
||||
if (result[2]) {
|
||||
var num = parseFloat(result[1]);
|
||||
var mult = this.powers[result[2]] || 1;
|
||||
return num * mult;
|
||||
} else {
|
||||
return value;
|
||||
}
|
||||
},
|
||||
add: function(element, interval, label, fn, times) {
|
||||
var counter = 0;
|
||||
|
||||
if (jQuery.isFunction(label)) {
|
||||
if (!times)
|
||||
times = fn;
|
||||
fn = label;
|
||||
label = interval;
|
||||
}
|
||||
|
||||
interval = jQuery.timer.timeParse(interval);
|
||||
|
||||
if (typeof interval != 'number' || isNaN(interval) || interval < 0)
|
||||
return;
|
||||
|
||||
if (typeof times != 'number' || isNaN(times) || times < 0)
|
||||
times = 0;
|
||||
|
||||
times = times || 0;
|
||||
|
||||
var timers = jQuery.data(element, this.dataKey) || jQuery.data(element, this.dataKey, {});
|
||||
|
||||
if (!timers[label])
|
||||
timers[label] = {};
|
||||
|
||||
fn.timerID = fn.timerID || this.guid++;
|
||||
|
||||
var handler = function() {
|
||||
if ((++counter > times && times !== 0) || fn.call(element, counter) === false)
|
||||
jQuery.timer.remove(element, label, fn);
|
||||
};
|
||||
|
||||
handler.timerID = fn.timerID;
|
||||
|
||||
if (!timers[label][fn.timerID])
|
||||
timers[label][fn.timerID] = window.setInterval(handler,interval);
|
||||
|
||||
this.global.push( element );
|
||||
|
||||
},
|
||||
remove: function(element, label, fn) {
|
||||
var timers = jQuery.data(element, this.dataKey), ret;
|
||||
|
||||
if ( timers ) {
|
||||
|
||||
if (!label) {
|
||||
for ( label in timers )
|
||||
this.remove(element, label, fn);
|
||||
} else if ( timers[label] ) {
|
||||
if ( fn ) {
|
||||
if ( fn.timerID ) {
|
||||
window.clearInterval(timers[label][fn.timerID]);
|
||||
delete timers[label][fn.timerID];
|
||||
}
|
||||
} else {
|
||||
for ( var fn in timers[label] ) {
|
||||
window.clearInterval(timers[label][fn]);
|
||||
delete timers[label][fn];
|
||||
}
|
||||
}
|
||||
|
||||
for ( ret in timers[label] ) break;
|
||||
if ( !ret ) {
|
||||
ret = null;
|
||||
delete timers[label];
|
||||
}
|
||||
}
|
||||
|
||||
for ( ret in timers ) break;
|
||||
if ( !ret )
|
||||
jQuery.removeData(element, this.dataKey);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
jQuery(window).bind("unload", function() {
|
||||
jQuery.each(jQuery.timer.global, function(index, item) {
|
||||
jQuery.timer.remove(item);
|
||||
});
|
||||
});
|
||||
@@ -1,126 +0,0 @@
|
||||
// NanoBaseCallbacks is where the base callbacks (common to all templates) are stored
|
||||
NanoBaseCallbacks = function ()
|
||||
{
|
||||
// _canClick is used to disable clicks for a short period after each click (to avoid mis-clicks)
|
||||
var _canClick = true;
|
||||
|
||||
var _baseBeforeUpdateCallbacks = {}
|
||||
|
||||
var _baseAfterUpdateCallbacks = {
|
||||
// this callback is triggered after new data is processed
|
||||
// it updates the status/visibility icon and adds click event handling to buttons/links
|
||||
status: function (updateData) {
|
||||
var uiStatusClass;
|
||||
if (updateData['config']['status'] == 2)
|
||||
{
|
||||
uiStatusClass = 'icon24 uiStatusGood';
|
||||
$('.linkActive').removeClass('inactive');
|
||||
}
|
||||
else if (updateData['config']['status'] == 1)
|
||||
{
|
||||
uiStatusClass = 'icon24 uiStatusAverage';
|
||||
$('.linkActive').addClass('inactive');
|
||||
}
|
||||
else
|
||||
{
|
||||
uiStatusClass = 'icon24 uiStatusBad'
|
||||
$('.linkActive').addClass('inactive');
|
||||
}
|
||||
$('#uiStatusIcon').attr('class', uiStatusClass);
|
||||
|
||||
$('.linkActive').stopTime('linkPending');
|
||||
$('.linkActive').removeClass('linkPending');
|
||||
|
||||
$('.linkActive')
|
||||
.off('click')
|
||||
.on('click', function (event) {
|
||||
event.preventDefault();
|
||||
var href = $(this).data('href');
|
||||
if (href != null && _canClick)
|
||||
{
|
||||
_canClick = false;
|
||||
$('body').oneTime(300, 'enableClick', function () {
|
||||
_canClick = true;
|
||||
});
|
||||
if (updateData['config']['status'] == 2)
|
||||
{
|
||||
$(this).oneTime(300, 'linkPending', function () {
|
||||
$(this).addClass('linkPending');
|
||||
});
|
||||
}
|
||||
window.location.href = href;
|
||||
}
|
||||
});
|
||||
|
||||
return updateData;
|
||||
},
|
||||
nanomap: function (updateData) {
|
||||
$('.mapIcon')
|
||||
.off('mouseenter mouseleave')
|
||||
.on('mouseenter',
|
||||
function (event) {
|
||||
var self = this;
|
||||
$('#uiMapTooltip')
|
||||
.html($(this).children('.tooltip').html())
|
||||
.show()
|
||||
.stopTime()
|
||||
.oneTime(5000, 'hideTooltip', function () {
|
||||
$(this).fadeOut(500);
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
$('.zoomLink')
|
||||
.off('click')
|
||||
.on('click', function (event) {
|
||||
event.preventDefault();
|
||||
var zoomLevel = $(this).data('zoomLevel');
|
||||
var uiMapObject = $('#uiMap');
|
||||
var uiMapWidth = uiMapObject.width() * zoomLevel;
|
||||
var uiMapHeight = uiMapObject.height() * zoomLevel;
|
||||
|
||||
uiMapObject.css({
|
||||
zoom: zoomLevel,
|
||||
left: '50%',
|
||||
top: '50%',
|
||||
marginLeft: '-' + Math.floor(uiMapWidth / 2) + 'px',
|
||||
marginTop: '-' + Math.floor(uiMapHeight / 2) + 'px'
|
||||
});
|
||||
});
|
||||
|
||||
$('#uiMapImage').attr('src', 'nanomap_z' + updateData['config']['mapZLevel'] + '.png');
|
||||
|
||||
return updateData;
|
||||
}
|
||||
};
|
||||
|
||||
return {
|
||||
addCallbacks: function () {
|
||||
NanoStateManager.addBeforeUpdateCallbacks(_baseBeforeUpdateCallbacks);
|
||||
NanoStateManager.addAfterUpdateCallbacks(_baseAfterUpdateCallbacks);
|
||||
},
|
||||
removeCallbacks: function () {
|
||||
for (var callbackKey in _baseBeforeUpdateCallbacks)
|
||||
{
|
||||
if (_baseBeforeUpdateCallbacks.hasOwnProperty(callbackKey))
|
||||
{
|
||||
NanoStateManager.removeBeforeUpdateCallback(callbackKey);
|
||||
}
|
||||
}
|
||||
for (var callbackKey in _baseAfterUpdateCallbacks)
|
||||
{
|
||||
if (_baseAfterUpdateCallbacks.hasOwnProperty(callbackKey))
|
||||
{
|
||||
NanoStateManager.removeAfterUpdateCallback(callbackKey);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
} ();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,227 +0,0 @@
|
||||
// NanoBaseHelpers is where the base template helpers (common to all templates) are stored
|
||||
NanoBaseHelpers = function ()
|
||||
{
|
||||
var _baseHelpers = {
|
||||
// change ui styling to "syndicate mode"
|
||||
syndicateMode: function() {
|
||||
$('body').css("background-color","#8f1414");
|
||||
$('body').css("background-image","url('uiBackground-Syndicate.png')");
|
||||
$('body').css("background-position","50% 0");
|
||||
$('body').css("background-repeat","repeat-x");
|
||||
|
||||
$('#uiTitleFluff').css("background-image","url('uiTitleFluff-Syndicate.png')");
|
||||
$('#uiTitleFluff').css("background-position","50% 50%");
|
||||
$('#uiTitleFluff').css("background-repeat", "no-repeat");
|
||||
|
||||
return '';
|
||||
},
|
||||
// Generate a Byond link
|
||||
link: function( text, icon, parameters, status, elementClass, elementId) {
|
||||
|
||||
var iconHtml = '';
|
||||
var iconClass = 'noIcon';
|
||||
if (typeof icon != 'undefined' && icon)
|
||||
{
|
||||
iconHtml = '<div class="uiLinkPendingIcon"></div><div class="uiIcon16 icon-' + icon + '"></div>';
|
||||
iconClass = 'hasIcon';
|
||||
}
|
||||
|
||||
if (typeof elementClass == 'undefined' || !elementClass)
|
||||
{
|
||||
elementClass = 'link';
|
||||
}
|
||||
|
||||
var elementIdHtml = '';
|
||||
if (typeof elementId != 'undefined' && elementId)
|
||||
{
|
||||
elementIdHtml = 'id="' + elementId + '"';
|
||||
}
|
||||
|
||||
if (typeof status != 'undefined' && status)
|
||||
{
|
||||
return '<div unselectable="on" class="link ' + iconClass + ' ' + elementClass + ' ' + status + '" ' + elementIdHtml + '>' + iconHtml + text + '</div>';
|
||||
}
|
||||
|
||||
return '<div unselectable="on" class="linkActive ' + iconClass + ' ' + elementClass + '" data-href="' + NanoUtility.generateHref(parameters) + '" ' + elementIdHtml + '>' + iconHtml + text + '</div>';
|
||||
},
|
||||
// Round a number to the nearest integer
|
||||
round: function(number) {
|
||||
return Math.round(number);
|
||||
},
|
||||
// Returns the number fixed to 1 decimal
|
||||
fixed: function(number) {
|
||||
return Math.round(number * 10) / 10;
|
||||
},
|
||||
// Round a number down to integer
|
||||
floor: function(number) {
|
||||
return Math.floor(number);
|
||||
},
|
||||
// Round a number up to integer
|
||||
ceil: function(number) {
|
||||
return Math.ceil(number);
|
||||
},
|
||||
// Format a string (~string("Hello {0}, how are {1}?", 'Martin', 'you') becomes "Hello Martin, how are you?")
|
||||
string: function() {
|
||||
if (arguments.length == 0)
|
||||
{
|
||||
return '';
|
||||
}
|
||||
else if (arguments.length == 1)
|
||||
{
|
||||
return arguments[0];
|
||||
}
|
||||
else if (arguments.length > 1)
|
||||
{
|
||||
stringArgs = [];
|
||||
for (var i = 1; i < arguments.length; i++)
|
||||
{
|
||||
stringArgs.push(arguments[i]);
|
||||
}
|
||||
return arguments[0].format(stringArgs);
|
||||
}
|
||||
return '';
|
||||
},
|
||||
formatNumber: function(x) {
|
||||
// From http://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript
|
||||
var parts = x.toString().split(".");
|
||||
parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ",");
|
||||
return parts.join(".");
|
||||
},
|
||||
// Capitalize the first letter of a string. From http://stackoverflow.com/questions/1026069/capitalize-the-first-letter-of-string-in-javascript
|
||||
capitalizeFirstLetter: function(string) {
|
||||
return string.charAt(0).toUpperCase() + string.slice(1);
|
||||
},
|
||||
// Display a bar. Used to show health, capacity, etc. Use difClass if the entire display bar class should be different
|
||||
displayBar: function(value, rangeMin, rangeMax, styleClass, showText, difClass, direction) {
|
||||
|
||||
if (rangeMin < rangeMax)
|
||||
{
|
||||
if (value < rangeMin)
|
||||
{
|
||||
value = rangeMin;
|
||||
}
|
||||
else if (value > rangeMax)
|
||||
{
|
||||
value = rangeMax;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (value > rangeMin)
|
||||
{
|
||||
value = rangeMin;
|
||||
}
|
||||
else if (value < rangeMax)
|
||||
{
|
||||
value = rangeMax;
|
||||
}
|
||||
}
|
||||
|
||||
if (typeof styleClass == 'undefined' || !styleClass)
|
||||
{
|
||||
styleClass = '';
|
||||
}
|
||||
|
||||
if (typeof showText == 'undefined' || !showText)
|
||||
{
|
||||
showText = '';
|
||||
}
|
||||
|
||||
if (typeof difClass == 'undefined' || !difClass)
|
||||
{
|
||||
difClass = ''
|
||||
}
|
||||
|
||||
if(typeof direction == 'undefined' || !direction)
|
||||
{
|
||||
direction = 'width'
|
||||
}
|
||||
else
|
||||
{
|
||||
direction = 'height'
|
||||
}
|
||||
|
||||
var percentage = Math.round((value - rangeMin) / (rangeMax - rangeMin) * 100);
|
||||
|
||||
return '<div class="displayBar' + difClass + ' ' + styleClass + '"><div class="displayBar' + difClass + 'Fill ' + styleClass + '" style="' + direction + ': ' + percentage + '%;"></div><div class="displayBar' + difClass + 'Text ' + styleClass + '">' + showText + '</div></div>';
|
||||
},
|
||||
// Display DNA Blocks (for the DNA Modifier UI)
|
||||
displayDNABlocks: function(dnaString, selectedBlock, selectedSubblock, blockSize, paramKey) {
|
||||
if (!dnaString)
|
||||
{
|
||||
return '<div class="notice">Please place a valid subject into the DNA modifier.</div>';
|
||||
}
|
||||
|
||||
var characters = dnaString.split('');
|
||||
|
||||
var html = '<div class="dnaBlock"><div class="link dnaBlockNumber">1</div>';
|
||||
var block = 1;
|
||||
var subblock = 1;
|
||||
for (index in characters)
|
||||
{
|
||||
if (!characters.hasOwnProperty(index) || typeof characters[index] === 'object')
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
var parameters;
|
||||
if (paramKey.toUpperCase() == 'UI')
|
||||
{
|
||||
parameters = { 'selectUIBlock' : block, 'selectUISubblock' : subblock };
|
||||
}
|
||||
else
|
||||
{
|
||||
parameters = { 'selectSEBlock' : block, 'selectSESubblock' : subblock };
|
||||
}
|
||||
|
||||
var status = 'linkActive';
|
||||
if (block == selectedBlock && subblock == selectedSubblock)
|
||||
{
|
||||
status = 'selected';
|
||||
}
|
||||
|
||||
html += '<div class="link ' + status + ' dnaSubBlock" data-href="' + NanoUtility.generateHref(parameters) + '" id="dnaBlock' + index + '">' + characters[index] + '</div>'
|
||||
|
||||
index++;
|
||||
if (index % blockSize == 0 && index < characters.length)
|
||||
{
|
||||
block++;
|
||||
subblock = 1;
|
||||
html += '</div><div class="dnaBlock"><div class="link dnaBlockNumber">' + block + '</div>';
|
||||
}
|
||||
else
|
||||
{
|
||||
subblock++;
|
||||
}
|
||||
}
|
||||
|
||||
html += '</div>';
|
||||
|
||||
return html;
|
||||
}
|
||||
};
|
||||
|
||||
return {
|
||||
addHelpers: function ()
|
||||
{
|
||||
NanoTemplate.addHelpers(_baseHelpers);
|
||||
},
|
||||
removeHelpers: function ()
|
||||
{
|
||||
for (var helperKey in _baseHelpers)
|
||||
{
|
||||
if (_baseHelpers.hasOwnProperty(helperKey))
|
||||
{
|
||||
NanoTemplate.removeHelper(helperKey);
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
} ();
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,119 +0,0 @@
|
||||
// This is the base state class, it is not to be used directly
|
||||
|
||||
function NanoStateClass() {
|
||||
/*if (typeof this.key != 'string' || !this.key.length)
|
||||
{
|
||||
alert('ERROR: Tried to create a state with an invalid state key: ' + this.key);
|
||||
return;
|
||||
}
|
||||
|
||||
this.key = this.key.toLowerCase();
|
||||
|
||||
NanoStateManager.addState(this);*/
|
||||
}
|
||||
|
||||
NanoStateClass.prototype.key = null;
|
||||
NanoStateClass.prototype.layoutRendered = false;
|
||||
NanoStateClass.prototype.contentRendered = false;
|
||||
NanoStateClass.prototype.mapInitialised = false;
|
||||
|
||||
NanoStateClass.prototype.isCurrent = function () {
|
||||
return NanoStateManager.getCurrentState() == this;
|
||||
};
|
||||
|
||||
NanoStateClass.prototype.onAdd = function (previousState) {
|
||||
// Do not add code here, add it to the 'default' state (nano_state_defaut.js) or create a new state and override this function
|
||||
|
||||
NanoBaseCallbacks.addCallbacks();
|
||||
NanoBaseHelpers.addHelpers();
|
||||
};
|
||||
|
||||
NanoStateClass.prototype.onRemove = function (nextState) {
|
||||
// Do not add code here, add it to the 'default' state (nano_state_defaut.js) or create a new state and override this function
|
||||
|
||||
NanoBaseCallbacks.removeCallbacks();
|
||||
NanoBaseHelpers.removeHelpers();
|
||||
};
|
||||
|
||||
NanoStateClass.prototype.onBeforeUpdate = function (data) {
|
||||
// Do not add code here, add it to the 'default' state (nano_state_defaut.js) or create a new state and override this function
|
||||
|
||||
data = NanoStateManager.executeBeforeUpdateCallbacks(data);
|
||||
|
||||
return data; // Return data to continue, return false to prevent onUpdate and onAfterUpdate
|
||||
};
|
||||
|
||||
NanoStateClass.prototype.onUpdate = function (data) {
|
||||
// Do not add code here, add it to the 'default' state (nano_state_defaut.js) or create a new state and override this function
|
||||
|
||||
try
|
||||
{
|
||||
if (!this.layoutRendered || (data['config'].hasOwnProperty('autoUpdateLayout') && data['config']['autoUpdateLayout']))
|
||||
{
|
||||
$("#uiLayout").html(NanoTemplate.parse('layout', data)); // render the 'mail' template to the #mainTemplate div
|
||||
this.layoutRendered = true;
|
||||
}
|
||||
if (!this.contentRendered || (data['config'].hasOwnProperty('autoUpdateContent') && data['config']['autoUpdateContent']))
|
||||
{
|
||||
$("#uiContent").html(NanoTemplate.parse('main', data)); // render the 'mail' template to the #mainTemplate div
|
||||
this.contentRendered = true;
|
||||
}
|
||||
if (NanoTemplate.templateExists('mapContent'))
|
||||
{
|
||||
if (!this.mapInitialised)
|
||||
{
|
||||
// Add drag functionality to the map ui
|
||||
$('#uiMap').draggable();
|
||||
|
||||
$('#uiMapTooltip')
|
||||
.off('click')
|
||||
.on('click', function (event) {
|
||||
event.preventDefault();
|
||||
$(this).fadeOut(400);
|
||||
});
|
||||
|
||||
this.mapInitialised = true;
|
||||
}
|
||||
|
||||
$("#uiMapContent").html(NanoTemplate.parse('mapContent', data)); // render the 'mapContent' template to the #uiMapContent div
|
||||
|
||||
if (data['config'].hasOwnProperty('showMap') && data['config']['showMap'])
|
||||
{
|
||||
$('#uiContent').addClass('hidden');
|
||||
$('#uiMapWrapper').removeClass('hidden');
|
||||
}
|
||||
else
|
||||
{
|
||||
$('#uiMapWrapper').addClass('hidden');
|
||||
$('#uiContent').removeClass('hidden');
|
||||
}
|
||||
}
|
||||
if (NanoTemplate.templateExists('mapHeader'))
|
||||
{
|
||||
$("#uiMapHeader").html(NanoTemplate.parse('mapHeader', data)); // render the 'mapHeader' template to the #uiMapHeader div
|
||||
}
|
||||
if (NanoTemplate.templateExists('mapFooter'))
|
||||
{
|
||||
$("#uiMapFooter").html(NanoTemplate.parse('mapFooter', data)); // render the 'mapFooter' template to the #uiMapFooter div
|
||||
}
|
||||
}
|
||||
catch(error)
|
||||
{
|
||||
alert('ERROR: An error occurred while rendering the UI: ' + error.message);
|
||||
return;
|
||||
}
|
||||
};
|
||||
|
||||
NanoStateClass.prototype.onAfterUpdate = function (data) {
|
||||
// Do not add code here, add it to the 'default' state (nano_state_defaut.js) or create a new state and override this function
|
||||
|
||||
NanoStateManager.executeAfterUpdateCallbacks(data);
|
||||
};
|
||||
|
||||
NanoStateClass.prototype.alertText = function (text) {
|
||||
// Do not add code here, add it to the 'default' state (nano_state_defaut.js) or create a new state and override this function
|
||||
|
||||
alert(text);
|
||||
};
|
||||
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
|
||||
NanoStateDefaultClass.inheritsFrom(NanoStateClass);
|
||||
var NanoStateDefault = new NanoStateDefaultClass();
|
||||
|
||||
function NanoStateDefaultClass() {
|
||||
|
||||
this.key = 'default';
|
||||
|
||||
//this.parent.constructor.call(this);
|
||||
|
||||
this.key = this.key.toLowerCase();
|
||||
|
||||
NanoStateManager.addState(this);
|
||||
}
|
||||
@@ -1,224 +0,0 @@
|
||||
// NanoStateManager handles data from the server and uses it to render templates
|
||||
NanoStateManager = function ()
|
||||
{
|
||||
// _isInitialised is set to true when all of this ui's templates have been processed/rendered
|
||||
var _isInitialised = false;
|
||||
|
||||
// the data for this ui
|
||||
var _data = null;
|
||||
|
||||
// this is an array of callbacks which are called when new data arrives, before it is processed
|
||||
var _beforeUpdateCallbacks = {};
|
||||
// this is an array of callbacks which are called when new data arrives, before it is processed
|
||||
var _afterUpdateCallbacks = {};
|
||||
|
||||
// this is an array of state objects, these can be used to provide custom javascript logic
|
||||
var _states = {};
|
||||
|
||||
var _currentState = null;
|
||||
|
||||
// the init function is called when the ui has loaded
|
||||
// this function sets up the templates and base functionality
|
||||
var init = function ()
|
||||
{
|
||||
// We store initialData and templateData in the body tag, it's as good a place as any
|
||||
_data = $('body').data('initialData');
|
||||
|
||||
if (_data == null || !_data.hasOwnProperty('config') || !_data.hasOwnProperty('data'))
|
||||
{
|
||||
alert('Error: Initial data did not load correctly.');
|
||||
}
|
||||
|
||||
var stateKey = 'default';
|
||||
if (_data['config'].hasOwnProperty('stateKey') && _data['config']['stateKey'])
|
||||
{
|
||||
stateKey = _data['config']['stateKey'].toLowerCase();
|
||||
}
|
||||
|
||||
NanoStateManager.setCurrentState(stateKey);
|
||||
|
||||
$(document).on('templatesLoaded', function () {
|
||||
doUpdate(_data);
|
||||
|
||||
_isInitialised = true;
|
||||
});
|
||||
};
|
||||
|
||||
// Receive update data from the server
|
||||
var receiveUpdateData = function (jsonString)
|
||||
{
|
||||
var updateData;
|
||||
|
||||
//alert("recieveUpdateData called." + "<br>Type: " + typeof jsonString); //debug hook
|
||||
try
|
||||
{
|
||||
// parse the JSON string from the server into a JSON object
|
||||
updateData = jQuery.parseJSON(jsonString);
|
||||
}
|
||||
catch (error)
|
||||
{
|
||||
alert("recieveUpdateData failed. " + "<br>Error name: " + error.name + "<br>Error Message: " + error.message);
|
||||
return;
|
||||
}
|
||||
|
||||
//alert("recieveUpdateData passed trycatch block."); //debug hook
|
||||
|
||||
if (!updateData.hasOwnProperty('data'))
|
||||
{
|
||||
if (_data && _data.hasOwnProperty('data'))
|
||||
{
|
||||
updateData['data'] = _data['data'];
|
||||
}
|
||||
else
|
||||
{
|
||||
updateData['data'] = {};
|
||||
}
|
||||
}
|
||||
|
||||
if (_isInitialised) // all templates have been registered, so render them
|
||||
{
|
||||
doUpdate(updateData);
|
||||
}
|
||||
else
|
||||
{
|
||||
_data = updateData; // all templates have not been registered. We set _data directly here which will be applied after the template is loaded with the initial data
|
||||
}
|
||||
};
|
||||
|
||||
// This function does the update by calling the methods on the current state
|
||||
var doUpdate = function (data)
|
||||
{
|
||||
if (_currentState == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
data = _currentState.onBeforeUpdate(data);
|
||||
|
||||
if (data === false)
|
||||
{
|
||||
alert('data is false, return');
|
||||
return; // A beforeUpdateCallback returned a false value, this prevents the render from occuring
|
||||
}
|
||||
|
||||
_data = data;
|
||||
|
||||
_currentState.onUpdate(_data);
|
||||
|
||||
_currentState.onAfterUpdate(_data);
|
||||
};
|
||||
|
||||
// Execute all callbacks in the callbacks array/object provided, updateData is passed to them for processing and potential modification
|
||||
var executeCallbacks = function (callbacks, data)
|
||||
{
|
||||
for (var key in callbacks)
|
||||
{
|
||||
if (callbacks.hasOwnProperty(key) && jQuery.isFunction(callbacks[key]))
|
||||
{
|
||||
data = callbacks[key].call(this, data);
|
||||
}
|
||||
}
|
||||
|
||||
return data;
|
||||
};
|
||||
|
||||
return {
|
||||
init: function ()
|
||||
{
|
||||
init();
|
||||
},
|
||||
receiveUpdateData: function (jsonString)
|
||||
{
|
||||
receiveUpdateData(jsonString);
|
||||
},
|
||||
addBeforeUpdateCallback: function (key, callbackFunction)
|
||||
{
|
||||
_beforeUpdateCallbacks[key] = callbackFunction;
|
||||
},
|
||||
addBeforeUpdateCallbacks: function (callbacks) {
|
||||
for (var callbackKey in callbacks) {
|
||||
if (!callbacks.hasOwnProperty(callbackKey))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
NanoStateManager.addBeforeUpdateCallback(callbackKey, callbacks[callbackKey]);
|
||||
}
|
||||
},
|
||||
removeBeforeUpdateCallback: function (key)
|
||||
{
|
||||
if (_beforeUpdateCallbacks.hasOwnProperty(key))
|
||||
{
|
||||
delete _beforeUpdateCallbacks[key];
|
||||
}
|
||||
},
|
||||
executeBeforeUpdateCallbacks: function (data) {
|
||||
return executeCallbacks(_beforeUpdateCallbacks, data);
|
||||
},
|
||||
addAfterUpdateCallback: function (key, callbackFunction)
|
||||
{
|
||||
_afterUpdateCallbacks[key] = callbackFunction;
|
||||
},
|
||||
addAfterUpdateCallbacks: function (callbacks) {
|
||||
for (var callbackKey in callbacks) {
|
||||
if (!callbacks.hasOwnProperty(callbackKey))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
NanoStateManager.addAfterUpdateCallback(callbackKey, callbacks[callbackKey]);
|
||||
}
|
||||
},
|
||||
removeAfterUpdateCallback: function (key)
|
||||
{
|
||||
if (_afterUpdateCallbacks.hasOwnProperty(key))
|
||||
{
|
||||
delete _afterUpdateCallbacks[key];
|
||||
}
|
||||
},
|
||||
executeAfterUpdateCallbacks: function (data) {
|
||||
return executeCallbacks(_afterUpdateCallbacks, data);
|
||||
},
|
||||
addState: function (state)
|
||||
{
|
||||
if (!(state instanceof NanoStateClass))
|
||||
{
|
||||
alert('ERROR: Attempted to add a state which is not instanceof NanoStateClass');
|
||||
return;
|
||||
}
|
||||
if (!state.key)
|
||||
{
|
||||
alert('ERROR: Attempted to add a state with an invalid stateKey');
|
||||
return;
|
||||
}
|
||||
_states[state.key] = state;
|
||||
},
|
||||
setCurrentState: function (stateKey)
|
||||
{
|
||||
if (typeof stateKey == 'undefined' || !stateKey) {
|
||||
alert('ERROR: No state key was passed!');
|
||||
return false;
|
||||
}
|
||||
if (!_states.hasOwnProperty(stateKey))
|
||||
{
|
||||
alert('ERROR: Attempted to set a current state which does not exist: ' + stateKey);
|
||||
return false;
|
||||
}
|
||||
|
||||
var previousState = _currentState;
|
||||
|
||||
_currentState = _states[stateKey];
|
||||
|
||||
if (previousState != null) {
|
||||
previousState.onRemove(_currentState);
|
||||
}
|
||||
|
||||
_currentState.onAdd(previousState);
|
||||
|
||||
return true;
|
||||
},
|
||||
getCurrentState: function ()
|
||||
{
|
||||
return _currentState;
|
||||
}
|
||||
};
|
||||
} ();
|
||||
|
||||
@@ -1,135 +0,0 @@
|
||||
|
||||
var NanoTemplate = function () {
|
||||
|
||||
var _templateData = {};
|
||||
|
||||
var _templates = {};
|
||||
var _compiledTemplates = {};
|
||||
|
||||
var _helpers = {};
|
||||
|
||||
var init = function () {
|
||||
// We store templateData in the body tag, it's as good a place as any
|
||||
_templateData = $('body').data('templateData');
|
||||
|
||||
if (_templateData == null)
|
||||
{
|
||||
alert('Error: Template data did not load correctly.');
|
||||
}
|
||||
|
||||
loadNextTemplate();
|
||||
};
|
||||
|
||||
var loadNextTemplate = function () {
|
||||
// we count the number of templates for this ui so that we know when they've all been rendered
|
||||
var templateCount = Object.size(_templateData);
|
||||
|
||||
if (!templateCount)
|
||||
{
|
||||
$(document).trigger('templatesLoaded');
|
||||
return;
|
||||
}
|
||||
|
||||
// load markup for each template and register it
|
||||
for (var key in _templateData)
|
||||
{
|
||||
if (!_templateData.hasOwnProperty(key))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
$.when($.ajax({
|
||||
url: _templateData[key],
|
||||
cache: false,
|
||||
dataType: 'text'
|
||||
}))
|
||||
.done(function(templateMarkup) {
|
||||
|
||||
templateMarkup += '<div class="clearBoth"></div>';
|
||||
|
||||
try
|
||||
{
|
||||
NanoTemplate.addTemplate(key, templateMarkup);
|
||||
}
|
||||
catch(error)
|
||||
{
|
||||
alert('ERROR: An error occurred while loading the UI: ' + error.message);
|
||||
return;
|
||||
}
|
||||
|
||||
delete _templateData[key];
|
||||
|
||||
loadNextTemplate();
|
||||
})
|
||||
.fail(function () {
|
||||
alert('ERROR: Loading template ' + key + '(' + _templateData[key] + ') failed!');
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
var compileTemplates = function () {
|
||||
|
||||
for (var key in _templates) {
|
||||
try {
|
||||
_compiledTemplates[key] = doT.template(_templates[key], null, _templates)
|
||||
}
|
||||
catch (error) {
|
||||
alert(error.message);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
return {
|
||||
init: function () {
|
||||
init();
|
||||
},
|
||||
addTemplate: function (key, templateString) {
|
||||
_templates[key] = templateString;
|
||||
},
|
||||
templateExists: function (key) {
|
||||
return _templates.hasOwnProperty(key);
|
||||
},
|
||||
parse: function (templateKey, data) {
|
||||
if (!_compiledTemplates.hasOwnProperty(templateKey) || !_compiledTemplates[templateKey]) {
|
||||
if (!_templates.hasOwnProperty(templateKey)) {
|
||||
alert('ERROR: Template "' + templateKey + '" does not exist in _compiledTemplates!');
|
||||
return '<h2>Template error (does not exist)</h2>';
|
||||
}
|
||||
compileTemplates();
|
||||
}
|
||||
if (typeof _compiledTemplates[templateKey] != 'function') {
|
||||
alert(_compiledTemplates[templateKey]);
|
||||
alert('ERROR: Template "' + templateKey + '" failed to compile!');
|
||||
return '<h2>Template error (failed to compile)</h2>';
|
||||
}
|
||||
return _compiledTemplates[templateKey].call(this, data['data'], data['config'], _helpers);
|
||||
},
|
||||
addHelper: function (helperName, helperFunction) {
|
||||
if (!jQuery.isFunction(helperFunction)) {
|
||||
alert('NanoTemplate.addHelper failed to add ' + helperName + ' as it is not a function.');
|
||||
return;
|
||||
}
|
||||
|
||||
_helpers[helperName] = helperFunction;
|
||||
},
|
||||
addHelpers: function (helpers) {
|
||||
for (var helperName in helpers) {
|
||||
if (!helpers.hasOwnProperty(helperName))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
NanoTemplate.addHelper(helperName, helpers[helperName]);
|
||||
}
|
||||
},
|
||||
removeHelper: function (helperName) {
|
||||
if (helpers.hasOwnProperty(helperName))
|
||||
{
|
||||
delete _helpers[helperName];
|
||||
}
|
||||
}
|
||||
}
|
||||
}();
|
||||
|
||||
|
||||
@@ -1,169 +0,0 @@
|
||||
// NanoUtility is the place to store utility functions
|
||||
var NanoUtility = function ()
|
||||
{
|
||||
var _urlParameters = {}; // This is populated with the base url parameters (used by all links), which is probaby just the "src" parameter
|
||||
|
||||
return {
|
||||
init: function ()
|
||||
{
|
||||
var body = $('body'); // We store data in the body tag, it's as good a place as any
|
||||
|
||||
_urlParameters = body.data('urlParameters');
|
||||
},
|
||||
// generate a Byond href, combines _urlParameters with parameters
|
||||
generateHref: function (parameters)
|
||||
{
|
||||
var queryString = '?';
|
||||
|
||||
for (var key in _urlParameters)
|
||||
{
|
||||
if (_urlParameters.hasOwnProperty(key))
|
||||
{
|
||||
if (queryString !== '?')
|
||||
{
|
||||
queryString += ';';
|
||||
}
|
||||
queryString += key + '=' + _urlParameters[key];
|
||||
}
|
||||
}
|
||||
|
||||
for (var key in parameters)
|
||||
{
|
||||
if (parameters.hasOwnProperty(key))
|
||||
{
|
||||
if (queryString !== '?')
|
||||
{
|
||||
queryString += ';';
|
||||
}
|
||||
queryString += key + '=' + parameters[key];
|
||||
}
|
||||
}
|
||||
return queryString;
|
||||
}
|
||||
}
|
||||
} ();
|
||||
|
||||
if (typeof jQuery == 'undefined') {
|
||||
alert('ERROR: Javascript library failed to load!');
|
||||
}
|
||||
if (typeof doT == 'undefined') {
|
||||
alert('ERROR: Template engine failed to load!');
|
||||
}
|
||||
|
||||
(function() {
|
||||
var _alert = window.alert;
|
||||
window.alert = function(str) {
|
||||
window.location = "byond://?nano_err=" + encodeURIComponent(str);
|
||||
_alert(str);
|
||||
};
|
||||
})();
|
||||
|
||||
// All scripts are initialised here, this allows control of init order
|
||||
$(document).ready(function () {
|
||||
NanoUtility.init();
|
||||
NanoStateManager.init();
|
||||
NanoTemplate.init();
|
||||
});
|
||||
|
||||
if (!Array.prototype.indexOf)
|
||||
{
|
||||
Array.prototype.indexOf = function(elt /*, from*/)
|
||||
{
|
||||
var len = this.length;
|
||||
|
||||
var from = Number(arguments[1]) || 0;
|
||||
from = (from < 0)
|
||||
? Math.ceil(from)
|
||||
: Math.floor(from);
|
||||
if (from < 0)
|
||||
from += len;
|
||||
|
||||
for (; from < len; from++)
|
||||
{
|
||||
if (from in this &&
|
||||
this[from] === elt)
|
||||
return from;
|
||||
}
|
||||
return -1;
|
||||
};
|
||||
};
|
||||
|
||||
if (!String.prototype.format)
|
||||
{
|
||||
String.prototype.format = function (args) {
|
||||
var str = this;
|
||||
return str.replace(String.prototype.format.regex, function(item) {
|
||||
var intVal = parseInt(item.substring(1, item.length - 1));
|
||||
var replace;
|
||||
if (intVal >= 0) {
|
||||
replace = args[intVal];
|
||||
} else if (intVal === -1) {
|
||||
replace = "{";
|
||||
} else if (intVal === -2) {
|
||||
replace = "}";
|
||||
} else {
|
||||
replace = "";
|
||||
}
|
||||
return replace;
|
||||
});
|
||||
};
|
||||
String.prototype.format.regex = new RegExp("{-?[0-9]+}", "g");
|
||||
};
|
||||
|
||||
Object.size = function(obj) {
|
||||
var size = 0, key;
|
||||
for (var key in obj) {
|
||||
if (obj.hasOwnProperty(key)) size++;
|
||||
}
|
||||
return size;
|
||||
};
|
||||
|
||||
if(!window.console) {
|
||||
window.console = {
|
||||
log : function(str) {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
String.prototype.toTitleCase = function () {
|
||||
var smallWords = /^(a|an|and|as|at|but|by|en|for|if|in|of|on|or|the|to|vs?\.?|via)$/i;
|
||||
|
||||
return this.replace(/([^\W_]+[^\s-]*) */g, function (match, p1, index, title) {
|
||||
if (index > 0 && index + p1.length !== title.length &&
|
||||
p1.search(smallWords) > -1 && title.charAt(index - 2) !== ":" &&
|
||||
title.charAt(index - 1).search(/[^\s-]/) < 0) {
|
||||
return match.toLowerCase();
|
||||
}
|
||||
|
||||
if (p1.substr(1).search(/[A-Z]|\../) > -1) {
|
||||
return match;
|
||||
}
|
||||
|
||||
return match.charAt(0).toUpperCase() + match.substr(1);
|
||||
});
|
||||
};
|
||||
|
||||
$.ajaxSetup({
|
||||
cache: false
|
||||
});
|
||||
|
||||
Function.prototype.inheritsFrom = function (parentClassOrObject) {
|
||||
this.prototype = new parentClassOrObject;
|
||||
this.prototype.constructor = this;
|
||||
this.prototype.parent = parentClassOrObject.prototype;
|
||||
return this;
|
||||
};
|
||||
|
||||
if (!String.prototype.trim) {
|
||||
String.prototype.trim = function () {
|
||||
return this.replace(/^\s+|\s+$/g, '');
|
||||
};
|
||||
}
|
||||
|
||||
// Replicate the ckey proc from BYOND
|
||||
if (!String.prototype.ckey) {
|
||||
String.prototype.ckey = function () {
|
||||
return this.replace(/\W/g, '').toLowerCase();
|
||||
};
|
||||
}
|
||||
@@ -95,7 +95,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class='item'>
|
||||
{{:helper.link(data.suspended ? "Unsuspend" : "Suspend", 'gear', {'choice' : 'toggle_suspension'})}}
|
||||
{{:helper.link(data.suspended ? "Unsuspend" : "Suspend", 'cog', {'choice' : 'toggle_suspension'})}}
|
||||
</div>
|
||||
|
||||
<div class="statusDisplay" style="overflow: auto;">
|
||||
@@ -123,7 +123,7 @@
|
||||
</tbody>
|
||||
</table>
|
||||
{{else}}
|
||||
<span class='alert'>This account has no financial transactions on record for today.</span>
|
||||
<span class='exclamation-triangle'>This account has no financial transactions on record for today.</span>
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class='item'>
|
||||
@@ -133,7 +133,7 @@
|
||||
<div class='fixedLeft'>
|
||||
Payroll:
|
||||
</div>
|
||||
{{:helper.link('Revoke', 'transferthick-e-w', {'choice' : 'revoke_payroll'}, data.account_number == data.station_account_number ? 'disabled' : null, 'linkDanger')}}
|
||||
{{:helper.link('Revoke', 'exchange', {'choice' : 'revoke_payroll'}, data.account_number == data.station_account_number ? 'disabled' : null, 'linkDanger')}}
|
||||
</div>
|
||||
{{if data.access_level >= 2}}
|
||||
<div class='item'>
|
||||
@@ -160,7 +160,7 @@
|
||||
{{/for}}
|
||||
</table>
|
||||
{{else}}
|
||||
<span class='alert'>There are no accounts available.</span>
|
||||
<span class='exclamation-triangle'>There are no accounts available.</span>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
<div class="itemContent">
|
||||
{{:helper.displayBar(data.external_pressure, 0, 200, (data.external_pressure < 80 || data.external_pressure > 120) ? 'bad' : (data.external_pressure < 95 || data.external_pressure > 110) ? 'average' : 'good')}}
|
||||
<div class="statusValue">
|
||||
{{:data.external_pressure}} kPa
|
||||
{{:helper.smoothRound(data.external_pressure)}} kPa
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -17,7 +17,7 @@
|
||||
<div class="itemContent">
|
||||
{{:helper.displayBar(data.chamber_pressure, 0, 200, (data.chamber_pressure < 80 || data.chamber_pressure > 120) ? 'bad' : (data.chamber_pressure < 95 || data.chamber_pressure > 110) ? 'average' : 'good')}}
|
||||
<div class="statusValue">
|
||||
{{:data.chamber_pressure}} kPa
|
||||
{:helper.smoothRound(data.chamber_pressure)}} kPa
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -28,7 +28,7 @@
|
||||
<div class="itemContent">
|
||||
{{:helper.displayBar(data.internal_pressure, 0, 200, (data.internal_pressure < 80 || data.internal_pressure > 120) ? 'bad' : (data.internal_pressure < 95 || data.internal_pressure > 110) ? 'average' : 'good')}}
|
||||
<div class="statusValue">
|
||||
{{:data.internal_pressure}} kPa
|
||||
{{:helper.smoothRound(data.internal_pressure)}} kPa
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -36,8 +36,8 @@
|
||||
<div class="item" style="padding-top: 10px">
|
||||
<div class="item" style="width: auto; float: left">
|
||||
<div class="itemContent">
|
||||
{{:helper.link('Cycle to Exterior', 'arrowthickstop-1-w', {'command' : 'cycle_ext'}, data.processing ? 'disabled' : null)}}
|
||||
{{:helper.link('Cycle to Interior', 'arrowthickstop-1-e', {'command' : 'cycle_int'}, data.processing ? 'disabled' : null)}}
|
||||
{{:helper.link('Cycle to Exterior', 'arrow-circle-o-left', {'command' : 'cycle_ext'}, data.processing ? 'disabled' : null)}}
|
||||
{{:helper.link('Cycle to Interior', 'arrow-circle-right', {'command' : 'cycle_int'}, data.processing ? 'disabled' : null)}}
|
||||
</div>
|
||||
<div class="itemContent" style="padding-top: 2px">
|
||||
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_ext'}, null, data.processing ? 'yellowButton' : null)}}
|
||||
@@ -50,11 +50,11 @@
|
||||
{{:helper.link('Purge', 'refresh', {'command' : 'purge'}, data.processing ? 'disabled' : null, data.purge ? 'linkOn' : null)}}
|
||||
</div>
|
||||
<div class="itemContent" style="width: auto">
|
||||
{{:helper.link('Secure', data.secure ? 'locked' : 'unlocked', {'command' : 'secure'}, data.processing ? 'disabled' : null, data.secure ? 'linkOn' : null)}}
|
||||
{{:helper.link('Secure', data.secure ? 'lock' : 'unlock', {'command' : 'secure'}, data.processing ? 'disabled' : null, data.secure ? 'linkOn' : null)}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item" style="padding-top: 10px">
|
||||
{{:helper.link('Abort', 'cancel', {'command' : 'abort'}, data.processing ? null : 'disabled', data.processing ? 'redButton' : null)}}
|
||||
{{:helper.link('Abort', 'ban', {'command' : 'abort'}, data.processing ? null : 'disabled', data.processing ? 'redButton' : null)}}
|
||||
</div>
|
||||
</div>
|
||||
@@ -93,7 +93,7 @@ Used In File(s): \code\game\objects\items\devices\aicard.dm
|
||||
{{else}}
|
||||
<tr>
|
||||
<td><span class='itemLabelWidest'>Wipe AI</span></td>
|
||||
<td>{{:helper.link("Wipe", 'radiation', {'wipe' : 1}, null, 'redButton')}}</td>
|
||||
<td>{{:helper.link("Wipe", 'exclamation-circle', {'wipe' : 1}, null, 'redButton')}}</td>
|
||||
</tr>
|
||||
{{/if}}
|
||||
</table>
|
||||
|
||||
+10
-10
@@ -4,7 +4,7 @@
|
||||
Interface Lock:
|
||||
</div>
|
||||
<div class="itemContentFull">
|
||||
{{:helper.link('Engaged', 'locked', {'toggleaccess' : 1}, data.locked ? 'selected' : null)}}{{:helper.link('Disengaged', 'unlocked', {'toggleaccess' : 1}, data.malfStatus >= 2 ? 'linkOff' : (data.locked ? null : 'selected'))}}
|
||||
{{:helper.link('Engaged', 'lock', {'toggleaccess' : 1}, data.locked ? 'selected' : null)}}{{:helper.link('Disengaged', 'unlock', {'toggleaccess' : 1}, data.malfStatus >= 2 ? 'linkOff' : (data.locked ? null : 'selected'))}}
|
||||
</div>
|
||||
<div class="clearBoth"></div>
|
||||
{{else}}
|
||||
@@ -32,7 +32,7 @@
|
||||
<span class='bad'>Off</span>
|
||||
{{/if}}
|
||||
{{else}}
|
||||
{{:helper.link('On', 'power', {'breaker' : 1}, data.isOperating ? 'selected' : null)}}{{:helper.link('Off', 'close', {'breaker' : 1}, data.isOperating ? null : 'selected')}}
|
||||
{{:helper.link('On', 'power-off', {'breaker' : 1}, data.isOperating ? 'selected' : null)}}{{:helper.link('Off', 'close', {'breaker' : 1}, data.isOperating ? null : 'selected')}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
@@ -64,7 +64,7 @@
|
||||
|
||||
{{:helper.displayBar(data.powerCellStatus, 0, 100, (data.powerCellStatus >= 50) ? 'good' : (data.powerCellStatus >= 25) ? 'average' : 'bad')}}
|
||||
<div class="itemContent" style="width: 60px">
|
||||
{{:helper.round(data.powerCellStatus*10)/10}}%
|
||||
{{:helper.smoothRound(data.powerCellStatus, 1)}}%
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
@@ -105,7 +105,7 @@
|
||||
{{:value.title}}:
|
||||
</div>
|
||||
<div class="itemContent" style="width: 70px; text-align: right">
|
||||
{{:value.powerLoad}} W
|
||||
{{:helper.smoothRound(value.powerLoad)}} W
|
||||
</div>
|
||||
<div class="itemContent" style="width: 105px">
|
||||
|
||||
@@ -125,7 +125,7 @@
|
||||
{{if !data.locked || data.siliconUser}}
|
||||
<div class="itemContentFull">
|
||||
{{:helper.link('Auto', 'refresh', value.topicParams.auto, (value.status == 1 || value.status == 3) ? 'selected' : null)}}
|
||||
{{:helper.link('On', 'power', value.topicParams.on, (value.status == 2) ? 'selected' : null)}}
|
||||
{{:helper.link('On', 'power-off', value.topicParams.on, (value.status == 2) ? 'selected' : null)}}
|
||||
{{:helper.link('Off', 'close', value.topicParams.off, (value.status == 0) ? 'selected' : null)}}
|
||||
</div>
|
||||
{{/if}}
|
||||
@@ -138,9 +138,9 @@
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{if data.totalCharging}}
|
||||
{{:data.totalLoad}}W (+ {{:data.totalCharging}}W Charging)
|
||||
{{:helper.smoothRound(data.totalLoad)}} W (+ {{:data.totalCharging}}W Charging)
|
||||
{{else}}
|
||||
{{:data.totalLoad}}W
|
||||
{{:helper.smoothRound(data.totalLoad)}} W
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
@@ -159,7 +159,7 @@
|
||||
<span class='bad'>Disengaged</span>
|
||||
{{/if}}
|
||||
{{else}}
|
||||
{{:helper.link('Engaged', 'locked', {'lock' : 1}, data.coverLocked ? 'selected' : null)}}{{:helper.link('Disengaged', 'unlocked', {'lock' : 1}, data.coverLocked ? null : 'selected')}}
|
||||
{{:helper.link('Engaged', 'lock', {'lock' : 1}, data.coverLocked ? 'selected' : null)}}{{:helper.link('Disengaged', 'unlock', {'lock' : 1}, data.coverLocked ? null : 'selected')}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
@@ -168,9 +168,9 @@
|
||||
<h3>System Overrides</h3>
|
||||
|
||||
<div class="item">
|
||||
{{:helper.link('Overload Lighting Circuit', 'lightbulb', {'overload' : 1})}}
|
||||
{{:helper.link('Overload Lighting Circuit', 'lightbulb-o', {'overload' : 1})}}
|
||||
{{if data.malfStatus == 1}}
|
||||
{{:helper.link('Override Programming', 'script', {'malfhack' : 1})}}
|
||||
{{:helper.link('Override Programming', 'file-text', {'malfhack' : 1})}}
|
||||
{{else data.malfStatus > 1}}
|
||||
<div class='notice'>APC Hacked</div>
|
||||
{{/if}}
|
||||
|
||||
@@ -31,7 +31,7 @@ Used In File(s): \code\modules\hydroponics\seed_machines.dm
|
||||
<div class="itemContent">
|
||||
{{:data.locus}}
|
||||
</div>
|
||||
{{:helper.link('Eject Disk', 'circle-arrow-e', {'eject_disk' : 1}, null)}}
|
||||
{{:helper.link('Eject Disk', 'arrow-circle-right', {'eject_disk' : 1}, null)}}
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="notice">No disk loaded.</div>
|
||||
@@ -48,7 +48,7 @@ Used In File(s): \code\modules\hydroponics\seed_machines.dm
|
||||
{{if data.degradation <= 100}}
|
||||
{{:helper.link('Apply Gene Mods', 'gear', {'apply_gene' : 1}, null)}}
|
||||
{{/if}}
|
||||
{{:helper.link('Eject Target', 'circle-arrow-e', {'eject_packet' : 1}, null)}}
|
||||
{{:helper.link('Eject Target', 'arrow-circle-right', {'eject_packet' : 1}, null)}}
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="notice">No target seed packet loaded</div>
|
||||
|
||||
@@ -29,7 +29,7 @@ Used In File(s): \code\modules\hydroponics\seed_machines.dm
|
||||
{{:value.mask}}
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:helper.link('Extract', 'circle-arrow-s', {'get_gene' : value.tag}, null)}}
|
||||
{{:helper.link('Extract', 'arrow-circle-down', {'get_gene' : value.tag}, null)}}
|
||||
</div>
|
||||
</div>
|
||||
{{empty}}
|
||||
@@ -37,7 +37,7 @@ Used In File(s): \code\modules\hydroponics\seed_machines.dm
|
||||
{{/for}}
|
||||
<br>
|
||||
<div class="item">
|
||||
{{:helper.link('Eject Loaded Disk', 'circle-arrow-e', {'eject_disk' : 1}, null)}}
|
||||
{{:helper.link('Eject Loaded Disk', 'arrow-circle-right', {'eject_disk' : 1}, null)}}
|
||||
{{:helper.link('Clear Genetic Buffer', 'gear', {'clear_buffer' : 1}, null)}}
|
||||
</div>
|
||||
{{else}}
|
||||
@@ -48,7 +48,7 @@ Used In File(s): \code\modules\hydroponics\seed_machines.dm
|
||||
{{if data.disk}}
|
||||
<br>
|
||||
<div class="item">
|
||||
{{:helper.link('Eject Loaded Disk', 'circle-arrow-e', {'eject_disk' : 1}, null)}}
|
||||
{{:helper.link('Eject Loaded Disk', 'arrow-circle-right', {'eject_disk' : 1}, null)}}
|
||||
</div>
|
||||
{{else}}
|
||||
<div class="notice">No disk inserted.</div>
|
||||
@@ -64,7 +64,7 @@ Used In File(s): \code\modules\hydroponics\seed_machines.dm
|
||||
{{:data.loaded}}
|
||||
</div>
|
||||
<div class="item">
|
||||
{{:helper.link('Process Genome', 'gear', {'scan_genome' : 1}, null)}}{{:helper.link('Eject Packet', 'circle-arrow-e', {'eject_packet' : 1}, null)}}
|
||||
{{:helper.link('Process Genome', 'gear', {'scan_genome' : 1}, null)}}{{:helper.link('Eject Packet', 'arrow-circle-right', {'eject_packet' : 1}, null)}}
|
||||
</div>
|
||||
</div>
|
||||
{{else}}
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
Tank Pressure:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:data.tankPressure}} kPa
|
||||
{{:helper.smoothRound(data.tankPressure)}} kPa
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
Tank Pressure:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:data.holdingTank.tankPressure}} kPa
|
||||
{{:helper.smoothRound(data.holdingTank.tankPressure)}} kPa
|
||||
</div>
|
||||
</div>
|
||||
{{else}}
|
||||
@@ -77,7 +77,7 @@
|
||||
Release Valve:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:helper.link('Open', 'unlocked', {'toggle' : 1}, data.valveOpen ? 'selected' : null)}}{{:helper.link('Close', 'locked', {'toggle' : 1}, data.valveOpen ? null : 'selected')}}
|
||||
{{:helper.link('Open', 'unlock', {'toggle' : 1}, data.valveOpen ? 'selected' : null)}}{{:helper.link('Close', 'lock', {'toggle' : 1}, data.valveOpen ? null : 'selected')}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--
|
||||
Title: Chem Dispenser 5000 UI
|
||||
<!--
|
||||
Title: Chem Dispenser 5000 UI
|
||||
Used In File(s): \code\modules\reagents\Chemistry-Machinery.dm
|
||||
-->
|
||||
<div class="item">
|
||||
@@ -25,7 +25,7 @@ Used In File(s): \code\modules\reagents\Chemistry-Machinery.dm
|
||||
<div class="itemContentWide" style="width: 100%;">
|
||||
{{if data.chemicals.length}}
|
||||
{{for data.chemicals}}
|
||||
{{:helper.link(value.label + " ("+value.amount+")", 'circle-arrow-s', {"dispense":value.label}, null, 'fixedLeftWide')}}
|
||||
{{:helper.link(value.label + " ("+value.amount+")", 'arrow-circle-down', {"dispense":value.label}, null, 'fixedLeftWide')}}
|
||||
{{/for}}
|
||||
{{else}}
|
||||
<span class='bad'>No cartridges installed!</span>
|
||||
@@ -49,7 +49,7 @@ Used In File(s): \code\modules\reagents\Chemistry-Machinery.dm
|
||||
<div class="item">
|
||||
<div class="itemContent" style="width: 100%;">
|
||||
{{if data.isBeakerLoaded}}
|
||||
<b>Volume: {{:data.beakerCurrentVolume}} / {{:data.beakerMaxVolume}}</b><br>
|
||||
<b>Volume: {{:helper.smoothRound(data.beakerCurrentVolume)}} / {{:data.beakerMaxVolume}}</b><br>
|
||||
{{for data.beakerContents}}
|
||||
<span class="highlight">{{:value.volume}} units of {{:value.name}}</span><br>
|
||||
{{empty}}
|
||||
|
||||
@@ -105,9 +105,9 @@ Used In File(s): code\game\objects\items\devices\communicator\communicator.dm
|
||||
<div class="itemContent">
|
||||
{{:helper.link('Disconnect', 'close', {'disconnect' : value.true_name}, null, 'redButton')}}
|
||||
{{if data.video_comm == null}}
|
||||
{{:helper.link('Start Video', 'signal-diag', {'startvideo' : value.ref})}}
|
||||
{{:helper.link('Start Video', 'signal', {'startvideo' : value.ref})}}
|
||||
{{else data.video_comm == value.ref}}
|
||||
{{:helper.link('End Video', 'signal-diag', {'endvideo' : value.true_name}, null, 'redButton')}}
|
||||
{{:helper.link('End Video', 'signal', {'endvideo' : value.true_name}, null, 'redButton')}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
@@ -119,7 +119,7 @@ Used In File(s): code\game\objects\items\devices\communicator\communicator.dm
|
||||
{{:value.name}}
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
<div style="float: left; width: 300px;">{{:value.address}}</div> {{:helper.link('Accept', 'signal-diag', {'dial' : value.address})}}{{:helper.link('Decline', 'close', {'decline' : value.ref})}}
|
||||
<div style="float: left; width: 300px;">{{:value.address}}</div> {{:helper.link('Accept', 'signal', {'dial' : value.address})}}{{:helper.link('Decline', 'close', {'decline' : value.ref})}}
|
||||
</div>
|
||||
</div>
|
||||
{{/for}}
|
||||
@@ -170,7 +170,7 @@ Used In File(s): code\game\objects\items\devices\communicator\communicator.dm
|
||||
<div class='item' style="margin-top: 5px;">
|
||||
<div class="itemGroup" style="float: left;">
|
||||
<div style="width: 100%;">
|
||||
<span class="itemLabel" style="margin-right: 5px;">{{:value.name}}</span><span class='itemContent' style="margin-right: 5px;">{{:value.address}}</span>{{:helper.link('View', 'mail-closed', {'copy' : value.address, 'copy_name' : value.name, 'switch_tab' : 40})}}
|
||||
<span class="itemLabel" style="margin-right: 5px;">{{:value.name}}</span><span class='itemContent' style="margin-right: 5px;">{{:value.address}}</span>{{:helper.link('View', 'envelope', {'copy' : value.address, 'copy_name' : value.name, 'switch_tab' : 40})}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -183,7 +183,7 @@ Used In File(s): code\game\objects\items\devices\communicator\communicator.dm
|
||||
<h3>Conversation With: {{:data.targetAddressName}}</h3>
|
||||
|
||||
<HR>
|
||||
<div class="itemContent" style="width: 100%;">{{:helper.link('Back', 'arrowreturnthick-1-w', {'switch_tab' : 4})}}</div><BR>
|
||||
<div class="itemContent" style="width: 100%;">{{:helper.link('Back', 'arrow-circle-o-left', {'switch_tab' : 4})}}</div><BR>
|
||||
|
||||
<div class='statusDisplay' style='overflow: auto; float: left; width: 95%;'>
|
||||
<div class='item' style='width: 100%;'>
|
||||
@@ -279,7 +279,7 @@ Used In File(s): code\game\objects\items\devices\communicator\communicator.dm
|
||||
<div style="float: left; width: 180px;">{{:data.address}}</div>
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
<div style="float: left; width: 180px;">{{:helper.link('Visible', 'signal-diag', {'toggle_visibility' : 1}, data.visible ? 'selected' : null)}}{{:helper.link('Invisible', 'close', {'toggle_visibility' : 1}, data.visible ? null : 'selected')}}</div>
|
||||
<div style="float: left; width: 180px;">{{:helper.link('Visible', 'signal', {'toggle_visibility' : 1}, data.visible ? 'selected' : null)}}{{:helper.link('Invisible', 'close', {'toggle_visibility' : 1}, data.visible ? null : 'selected')}}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -288,7 +288,7 @@ Used In File(s): code\game\objects\items\devices\communicator\communicator.dm
|
||||
Ringer:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
<div style="float: left; width: 180px;">{{:helper.link('On', 'volume-on', {'toggle_ringer' : 1}, data.ring ? 'selected' : null)}}{{:helper.link('Off', 'volume-off', {'toggle_ringer' : 1}, data.ring ? null : 'selected')}}</div>
|
||||
<div style="float: left; width: 180px;">{{:helper.link('On', 'volume-up', {'toggle_ringer' : 1}, data.ring ? 'selected' : null)}}{{:helper.link('Off', 'volume-off', {'toggle_ringer' : 1}, data.ring ? null : 'selected')}}</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ Used In File(s): \code\game\machinery\computer\crew.dm
|
||||
}
|
||||
</style>
|
||||
|
||||
{{:helper.link('Show Tracker Map', 'pin-s', {'showMap' : 1})}}
|
||||
{{:helper.link('Show Tracker Map', 'thumb-tack', {'showMap' : 1})}}
|
||||
<table class='wideTable'><tbody>
|
||||
{{for data.crewmembers}}
|
||||
{{if value.sensor_type == 1}}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Title: Crew Monitoring Console (Map header)
|
||||
Used In File(s): \code\game\machinery\computer\crew.dm
|
||||
-->
|
||||
{{:helper.link('Show Detail List', 'script', {'showMap' : 0})}}
|
||||
{{:helper.link('Show Detail List', 'file-text', {'showMap' : 0})}}
|
||||
<div style="float: right; width: 240px;">
|
||||
<span style="float: left;">Zoom Level: </span>
|
||||
<div unselectable="on" class="link zoomLink" data-zoom-level="4">x1.0</div>
|
||||
|
||||
@@ -27,38 +27,38 @@ Used In File(s): \code\game\machinery\cryo.dm
|
||||
{{else}}
|
||||
{{:helper.displayBar(data.occupant.health, 0, data.occupant.minHealth, 'average alignRight')}}
|
||||
{{/if}}
|
||||
<div class="statusValue">{{:helper.round(data.occupant.health)}}</div>
|
||||
<div class="statusValue">{{:helper.smoothRound(data.occupant.health)}}</div>
|
||||
</div>
|
||||
|
||||
<div class="line">
|
||||
<div class="statusLabel">=> Brute Damage:</div>
|
||||
{{:helper.displayBar(data.occupant.bruteLoss, 0, data.occupant.maxHealth, 'bad')}}
|
||||
<div class="statusValue">{{:helper.round(data.occupant.bruteLoss)}}</div>
|
||||
<div class="statusValue">{{:helper.smoothRound(data.occupant.bruteLoss)}}</div>
|
||||
</div>
|
||||
|
||||
<div class="line">
|
||||
<div class="statusLabel">=> Resp. Damage:</div>
|
||||
{{:helper.displayBar(data.occupant.oxyLoss, 0, data.occupant.maxHealth, 'bad')}}
|
||||
<div class="statusValue">{{:helper.round(data.occupant.oxyLoss)}}</div>
|
||||
<div class="statusValue">{{:helper.smoothRound(data.occupant.oxyLoss)}}</div>
|
||||
</div>
|
||||
|
||||
<div class="line">
|
||||
<div class="statusLabel">=> Toxin Damage:</div>
|
||||
{{:helper.displayBar(data.occupant.toxLoss, 0, data.occupant.maxHealth, 'bad')}}
|
||||
<div class="statusValue">{{:helper.round(data.occupant.toxLoss)}}</div>
|
||||
<div class="statusValue">{{:helper.smoothRound(data.occupant.toxLoss)}}</div>
|
||||
</div>
|
||||
|
||||
<div class="line">
|
||||
<div class="statusLabel">=> Burn Severity:</div>
|
||||
{{:helper.displayBar(data.occupant.fireLoss, 0, data.occupant.maxHealth, 'bad')}}
|
||||
<div class="statusValue">{{:helper.round(data.occupant.fireLoss)}}</div>
|
||||
<div class="statusValue">{{:helper.smoothRound(data.occupant.fireLoss)}}</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
<hr>
|
||||
<div class="line">
|
||||
<div class="statusLabel">Cell Temperature:</div><div class="statusValue">
|
||||
<span class="{{:data.cellTemperatureStatus}}">{{:data.cellTemperature}} K</span>
|
||||
<span class="{{:data.cellTemperatureStatus}}">{{:helper.smoothRound(data.cellTemperature)}} K</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -69,10 +69,10 @@ Used In File(s): \code\game\machinery\cryo.dm
|
||||
Cryo Cell Status:
|
||||
</div>
|
||||
<div class="itemContent" style="width: 40%;">
|
||||
{{:helper.link('On', 'power', {'switchOn' : 1}, data.isOperating ? 'selected' : null)}}{{:helper.link('Off', 'close', {'switchOff' : 1}, data.isOperating ? null : 'selected')}}
|
||||
{{:helper.link('On', 'power-off', {'switchOn' : 1}, data.isOperating ? 'selected' : null)}}{{:helper.link('Off', 'close', {'switchOff' : 1}, data.isOperating ? null : 'selected')}}
|
||||
</div>
|
||||
<div class="itemContent" style="width: 26%;">
|
||||
{{:helper.link('Eject Occupant', 'arrowreturnthick-1-s', {'ejectOccupant' : 1}, data.hasOccupant ? null : 'disabled')}}
|
||||
{{:helper.link('Eject Occupant', 'arrow-circle-o-down', {'ejectOccupant' : 1}, data.hasOccupant ? null : 'disabled')}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="item"> </div>
|
||||
@@ -84,7 +84,7 @@ Used In File(s): \code\game\machinery\cryo.dm
|
||||
{{if data.isBeakerLoaded}}
|
||||
{{:data.beakerLabel ? data.beakerLabel : '<span class="average">No label</span>'}}<br>
|
||||
{{if data.beakerVolume}}
|
||||
<span class="highlight">{{:data.beakerVolume}} units remaining</span><br>
|
||||
<span class="highlight">{{:helper.smoothRound(data.beakerVolume)}} units remaining</span><br>
|
||||
{{else}}
|
||||
<span class="bad">Beaker is empty</span>
|
||||
{{/if}}
|
||||
|
||||
@@ -74,11 +74,11 @@
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
{{for data.effects}}
|
||||
{{:helper.link(value.stage, 'transferthick-e-w', { 'grab' : value.reference })}}
|
||||
{{:helper.link(value.stage, 'exchange', { 'grab' : value.reference })}}
|
||||
{{/for}}
|
||||
</div>
|
||||
<div class='itemContent'>
|
||||
{{:helper.link('Species', 'transferthick-e-w', { 'affected_species' : 1 })}}
|
||||
{{:helper.link('Species', 'exchange', { 'affected_species' : 1 })}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
@@ -103,7 +103,7 @@
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
{{:helper.link('Save To Disk', 'disk', { 'disk' : 1 }, (data.buffer || data.species_buffer) ? null : 'disabled')}}
|
||||
{{:helper.link('Save To Disk', 'floppy-o', { 'disk' : 1 }, (data.buffer || data.species_buffer) ? null : 'disabled')}}
|
||||
{{if data.species_buffer}}
|
||||
{{:helper.link('Splice Species', 'pencil', { 'splice' : 5 }, (data.species_buffer && !data.info) ? null : 'disabled')}}
|
||||
{{else data.buffer}}
|
||||
|
||||
@@ -12,11 +12,11 @@
|
||||
Power:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:helper.link('On', 'power', { 'power' : 1 }, !data.dish_inserted ? 'disabled' : data.on ? 'selected' : null)}}{{:helper.link('Off', 'close', { 'power' : 1 }, data.on ? null : 'selected')}}
|
||||
{{:helper.link('On', 'power-off', { 'power' : 1 }, !data.dish_inserted ? 'disabled' : data.on ? 'selected' : null)}}{{:helper.link('Off', 'close', { 'power' : 1 }, data.on ? null : 'selected')}}
|
||||
</div>
|
||||
</div>
|
||||
<div class='item'>
|
||||
{{:helper.link('Add Radiation', 'radiation', {'rad' : 1})}}
|
||||
{{:helper.link('Add Radiation', 'exclamation-circle', {'rad' : 1})}}
|
||||
{{:helper.link('Flush System', 'trash', {'flush' : 1}, data.system_in_use ? null : 'disabled')}}
|
||||
</div>
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
</div>
|
||||
<div class='item'>
|
||||
{{:helper.link('Eject Chemicals', 'eject', { 'ejectchem' : 1 }, data.chemicals_inserted ? null : 'disabled')}}
|
||||
{{:helper.link('Breed Virus', 'circle-arrow-s', { 'virus' : 1 }, data.can_breed_virus ? null : 'disabled')}}
|
||||
{{:helper.link('Breed Virus', 'arrow-circle-down', { 'virus' : 1 }, data.can_breed_virus ? null : 'disabled')}}
|
||||
</div>
|
||||
|
||||
{{if data.chemicals_inserted}}
|
||||
|
||||
@@ -31,13 +31,13 @@ Used In File(s): D:\Development\SS13-BS12\code\game\dna\dna_modifier.dm
|
||||
{{else}}
|
||||
{{:helper.displayBar(data.occupant.health, 0, data.occupant.minHealth, 'average alignRight')}}
|
||||
{{/if}}
|
||||
<div class="statusValue">{{:helper.round(data.occupant.health)}}</div>
|
||||
<div class="statusValue">{{:helper.smoothRound(data.occupant.health)}}</div>
|
||||
</div>
|
||||
|
||||
<div class="line">
|
||||
<div class="statusLabel">Radiation:</div>
|
||||
{{:helper.displayBar(data.occupant.radiationLevel, 0, 100, 'average')}}
|
||||
<div class="statusValue">{{:helper.round(data.occupant.radiationLevel)}}</div>
|
||||
<div class="statusValue">{{:helper.smoothRound(data.occupant.radiationLevel)}}</div>
|
||||
</div>
|
||||
|
||||
<div class="line">
|
||||
@@ -63,8 +63,8 @@ Used In File(s): D:\Development\SS13-BS12\code\game\dna\dna_modifier.dm
|
||||
<div class="item">
|
||||
{{:helper.link('Modify U.I.', 'link', {'selectMenuKey' : 'ui'}, data.selectedMenuKey == 'ui' ? 'selected' : null)}}
|
||||
{{:helper.link('Modify S.E.', 'link', {'selectMenuKey' : 'se'}, data.selectedMenuKey == 'se' ? 'selected' : null)}}
|
||||
{{:helper.link('Transfer Buffers', 'disk', {'selectMenuKey' : 'buffer'}, data.selectedMenuKey == 'buffer' ? 'selected' : null)}}
|
||||
{{:helper.link('Rejuvenators', 'plusthick', {'selectMenuKey' : 'rejuvenators'}, data.selectedMenuKey == 'rejuvenators' ? 'selected' : null)}}
|
||||
{{:helper.link('Transfer Buffers', 'floppy-o', {'selectMenuKey' : 'buffer'}, data.selectedMenuKey == 'buffer' ? 'selected' : null)}}
|
||||
{{:helper.link('Rejuvenators', 'plus', {'selectMenuKey' : 'rejuvenators'}, data.selectedMenuKey == 'rejuvenators' ? 'selected' : null)}}
|
||||
</div>
|
||||
|
||||
<div class="item"> </div>
|
||||
@@ -85,7 +85,7 @@ Used In File(s): D:\Development\SS13-BS12\code\game\dna\dna_modifier.dm
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="itemContentWide">
|
||||
{{:helper.link('Irradiate Block', 'radiation', {'pulseUIRadiation' : 1}, !data.occupant.isViableSubject ? 'disabled' : null)}}
|
||||
{{:helper.link('Irradiate Block', 'exclamation-circle', {'pulseUIRadiation' : 1}, !data.occupant.isViableSubject ? 'disabled' : null)}}
|
||||
</div>
|
||||
</div>
|
||||
{{else data.selectedMenuKey == 'se'}}
|
||||
@@ -94,7 +94,7 @@ Used In File(s): D:\Development\SS13-BS12\code\game\dna\dna_modifier.dm
|
||||
<div class="clearBoth"></div>
|
||||
<div class="item">
|
||||
<div class="itemContentWide">
|
||||
{{:helper.link('Irradiate Block', 'radiation', {'pulseSERadiation' : 1}, !data.occupant.isViableSubject ? 'disabled' : null)}}
|
||||
{{:helper.link('Irradiate Block', 'exclamation-circle', {'pulseSERadiation' : 1}, !data.occupant.isViableSubject ? 'disabled' : null)}}
|
||||
</div>
|
||||
</div>
|
||||
{{else data.selectedMenuKey == 'buffer'}}
|
||||
@@ -110,7 +110,7 @@ Used In File(s): D:\Development\SS13-BS12\code\game\dna\dna_modifier.dm
|
||||
{{:helper.link('Subject U.I.', 'link', {'bufferOption' : 'saveUI', 'bufferId' : (index + 1)}, !data.hasOccupant ? 'disabled' : null)}}
|
||||
{{:helper.link('Subject U.I. + U.E.', 'link', {'bufferOption' : 'saveUIAndUE', 'bufferId' : (index + 1)}, !data.hasOccupant ? 'disabled' : null)}}
|
||||
{{:helper.link('Subject S.E.', 'link', {'bufferOption' : 'saveSE', 'bufferId' : (index + 1)}, !data.hasOccupant ? 'disabled' : null)}}
|
||||
{{:helper.link('From Disk', 'disk', {'bufferOption' : 'loadDisk', 'bufferId' : (index + 1)}, (!data.hasDisk || !data.disk.data) ? 'disabled' : null)}}
|
||||
{{:helper.link('From Disk', 'floppy-o', {'bufferOption' : 'loadDisk', 'bufferId' : (index + 1)}, (!data.hasDisk || !data.disk.data) ? 'disabled' : null)}}
|
||||
</div>
|
||||
</div>
|
||||
{{if value.data}}
|
||||
@@ -119,7 +119,7 @@ Used In File(s): D:\Development\SS13-BS12\code\game\dna\dna_modifier.dm
|
||||
Label:
|
||||
</div>
|
||||
<div class="itemContentWide">
|
||||
{{:helper.link(value.label, 'document-b', {'bufferOption' : 'changeLabel', 'bufferId' : (index + 1)})}}
|
||||
{{:helper.link(value.label, 'file', {'bufferOption' : 'changeLabel', 'bufferId' : (index + 1)})}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
@@ -152,10 +152,10 @@ Used In File(s): D:\Development\SS13-BS12\code\game\dna\dna_modifier.dm
|
||||
</div>
|
||||
<div class="itemContentWide">
|
||||
{{:helper.link('Clear', 'trash', {'bufferOption' : 'clear', 'bufferId' : (index + 1)}, !value.data ? 'disabled' : null)}}
|
||||
{{:helper.link('Injector', data.isInjectorReady ? 'pencil' : 'clock', {'bufferOption' : 'createInjector', 'bufferId' : (index + 1)}, (!data.isInjectorReady || !value.data) ? 'disabled' : null)}}
|
||||
{{:helper.link('Block Injector', data.isInjectorReady ? 'pencil' : 'clock', {'bufferOption' : 'createInjector', 'bufferId' : (index + 1), 'createBlockInjector' : 1}, (!data.isInjectorReady || !value.data) ? 'disabled' : null)}}
|
||||
{{:helper.link('Transfer', 'radiation', {'bufferOption' : 'transfer', 'bufferId' : (index + 1)}, (!data.hasOccupant || !value.data) ? 'disabled' : null)}}
|
||||
{{:helper.link('Save To Disk', 'disk', {'bufferOption' : 'saveDisk', 'bufferId' : (index + 1)}, (!value.data || !data.hasDisk) ? 'disabled' : null)}}
|
||||
{{:helper.link('Injector', data.isInjectorReady ? 'pencil' : 'clock-o', {'bufferOption' : 'createInjector', 'bufferId' : (index + 1)}, (!data.isInjectorReady || !value.data) ? 'disabled' : null)}}
|
||||
{{:helper.link('Block Injector', data.isInjectorReady ? 'pencil' : 'clock-o', {'bufferOption' : 'createInjector', 'bufferId' : (index + 1), 'createBlockInjector' : 1}, (!data.isInjectorReady || !value.data) ? 'disabled' : null)}}
|
||||
{{:helper.link('Transfer', 'exclamation-circle', {'bufferOption' : 'transfer', 'bufferId' : (index + 1)}, (!data.hasOccupant || !value.data) ? 'disabled' : null)}}
|
||||
{{:helper.link('Save To Disk', 'floppy-o', {'bufferOption' : 'saveDisk', 'bufferId' : (index + 1)}, (!value.data || !data.hasDisk) ? 'disabled' : null)}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -280,7 +280,7 @@ Used In File(s): D:\Development\SS13-BS12\code\game\dna\dna_modifier.dm
|
||||
|
||||
</div>
|
||||
<div class="itemContentWide">
|
||||
{{:helper.link('Pulse Radiation', 'radiation', {'pulseRadiation' : 1}, !data.hasOccupant ? 'disabled' : null)}}
|
||||
{{:helper.link('Pulse Radiation', 'exclamation-circle', {'pulseRadiation' : 1}, !data.hasOccupant ? 'disabled' : null)}}
|
||||
</div>
|
||||
</div>
|
||||
{{/if}}
|
||||
@@ -302,8 +302,8 @@ Used In File(s): D:\Development\SS13-BS12\code\game\dna\dna_modifier.dm
|
||||
Door Lock:
|
||||
</div>
|
||||
<div class="itemContentWide">
|
||||
{{:helper.link('Engaged', 'locked', {'toggleLock' : 1}, data.locked ? 'selected' : !data.hasOccupant ? 'disabled' : null)}}
|
||||
{{:helper.link('Disengaged', 'unlocked', {'toggleLock' : 1}, !data.locked ? 'selected' : data.irradiating ? 'disabled' : null)}}
|
||||
{{:helper.link('Engaged', 'lock', {'toggleLock' : 1}, data.locked ? 'selected' : !data.hasOccupant ? 'disabled' : null)}}
|
||||
{{:helper.link('Disengaged', 'unlock', {'toggleLock' : 1}, !data.locked ? 'selected' : data.irradiating ? 'disabled' : null)}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
<h3>Machine Status</h3>
|
||||
<div class="item">
|
||||
<div class="itemContent" style="width: 20%;">
|
||||
{{:helper.link(data.scanning ? 'Halt Scan' : 'Begin Scan', 'signal-diag', {'scanItem' : 1}, null)}}
|
||||
{{:helper.link(data.scanning ? 'Halt Scan' : 'Begin Scan', 'signal', {'scanItem' : 1}, null)}}
|
||||
</div>
|
||||
<div class="itemContent" style="width: 20%;">
|
||||
{{:helper.link((data.lidstate ? 'Open Lid' : 'Close Lid'), (data.lidstate ? 'unlocked' : 'locked'), {'toggleLid' : 1}, null)}}
|
||||
{{:helper.link((data.lidstate ? 'Open Lid' : 'Close Lid'), (data.lidstate ? 'unlock' : 'lock'), {'toggleLid' : 1}, null)}}
|
||||
</div>
|
||||
<div class="itemContent" style="width: 20%;">
|
||||
{{:helper.link('Eject item', 'eject', {'ejectItem' : 1}, (data.bloodsamp && !data.scanning) ? null : 'disabled')}}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<span class="bad" style="float:left">DOCKED-OVERRIDE ENABLED</span>
|
||||
{{/if}}
|
||||
<span style="float:right">
|
||||
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redButton' : null)}}
|
||||
{{:helper.link('Override', 'exclamation-triangle', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redButton' : null)}}
|
||||
</span>
|
||||
</div>
|
||||
{{else data.docking_status == "docking"}}
|
||||
@@ -22,7 +22,7 @@
|
||||
<span class="bad" style="float:left">DOCKING-OVERRIDE ENABLED</span>
|
||||
{{/if}}
|
||||
<span style="float:right">
|
||||
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redButton' : null)}}
|
||||
{{:helper.link('Override', 'exclamation-triangle', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redButton' : null)}}
|
||||
</span>
|
||||
</div>
|
||||
{{else data.docking_status == "undocking"}}
|
||||
@@ -33,7 +33,7 @@
|
||||
<span class="bad" style="float:left">UNDOCKING-OVERRIDE ENABLED</span>
|
||||
{{/if}}
|
||||
<span style="float:right">
|
||||
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redButton' : null)}}
|
||||
{{:helper.link('Override', 'exclamation-triangle', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redButton' : null)}}
|
||||
</span>
|
||||
</div>
|
||||
{{else data.docking_status == "undocked"}}
|
||||
@@ -44,12 +44,12 @@
|
||||
<span class="bad" style="float:left">OVERRIDE ENABLED</span>
|
||||
{{/if}}
|
||||
<span style="float:right">
|
||||
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redButton' : null)}}
|
||||
{{:helper.link('Override', 'exclamation-triangle', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redButton' : null)}}
|
||||
</span>
|
||||
</div>
|
||||
{{else}}
|
||||
<span class="bad">ERROR</span>
|
||||
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redButton' : null)}}
|
||||
{{:helper.link('Override', 'exclamation-triangle', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redButton' : null)}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
@@ -61,7 +61,7 @@
|
||||
<div class="itemContent">
|
||||
{{:helper.displayBar(data.chamber_pressure, 0, 200, (data.chamber_pressure < 80 || data.chamber_pressure > 120) ? 'bad' : (data.chamber_pressure < 95 || data.chamber_pressure > 110) ? 'average' : 'good')}}
|
||||
<div class="statusValue">
|
||||
{{:data.chamber_pressure}} kPa
|
||||
{{:helper.smoothRound(data.chamber_pressure)}} kPa
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -69,28 +69,28 @@
|
||||
<div class="item" style="padding-top: 10px">
|
||||
<div class="item">
|
||||
<div class="itemContent" style="width: 100%">
|
||||
{{:helper.link('Cycle to Exterior', 'arrowthickstop-1-w', {'command' : 'cycle_ext'}, (data.processing || data.airlock_disabled) ? 'disabled' : null)}}
|
||||
{{:helper.link('Cycle to Interior', 'arrowthickstop-1-e', {'command' : 'cycle_int'}, (data.processing || data.airlock_disabled) ? 'disabled' : null)}}
|
||||
{{:helper.link('Cycle to Exterior', 'arrow-circle-o-left', {'command' : 'cycle_ext'}, (data.processing || data.airlock_disabled) ? 'disabled' : null)}}
|
||||
{{:helper.link('Cycle to Interior', 'arrow-circle-right', {'command' : 'cycle_int'}, (data.processing || data.airlock_disabled) ? 'disabled' : null)}}
|
||||
</div>
|
||||
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
||||
{{if data.airlock_disabled}}
|
||||
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_ext'}, 'disabled', null)}}
|
||||
{{:helper.link('Force interior door', 'alert', {'command' : 'force_int'}, 'disabled', null)}}
|
||||
{{:helper.link('Force exterior door', 'exclamation-triangle', {'command' : 'force_ext'}, 'disabled', null)}}
|
||||
{{:helper.link('Force interior door', 'exclamation-triangle', {'command' : 'force_int'}, 'disabled', null)}}
|
||||
{{else}}
|
||||
{{if data.interior_status.state == "open"}}
|
||||
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_ext'}, null, 'redButton')}}
|
||||
{{:helper.link('Force exterior door', 'exclamation-triangle', {'command' : 'force_ext'}, null, 'redButton')}}
|
||||
{{else}}
|
||||
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_ext'}, null, data.processing ? 'yellowButton' : null)}}
|
||||
{{:helper.link('Force exterior door', 'exclamation-triangle', {'command' : 'force_ext'}, null, data.processing ? 'yellowButton' : null)}}
|
||||
{{/if}}
|
||||
{{if data.exterior_status.state == "open"}}
|
||||
{{:helper.link('Force interior door', 'alert', {'command' : 'force_int'}, null, 'redButton')}}
|
||||
{{:helper.link('Force interior door', 'exclamation-triangle', {'command' : 'force_int'}, null, 'redButton')}}
|
||||
{{else}}
|
||||
{{:helper.link('Force interior door', 'alert', {'command' : 'force_int'}, null, data.processing ? 'yellowButton' : null)}}
|
||||
{{:helper.link('Force interior door', 'exclamation-triangle', {'command' : 'force_int'}, null, data.processing ? 'yellowButton' : null)}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="item" style="padding-top: 10px; width: 100%">
|
||||
{{:helper.link('Abort', 'cancel', {'command' : 'abort'}, (data.processing && !data.airlock_disabled) ? null : 'disabled', (data.processing && !data.airlock_disabled) ? 'redButton' : null)}}
|
||||
{{:helper.link('Abort', 'ban', {'command' : 'abort'}, (data.processing && !data.airlock_disabled) ? null : 'disabled', (data.processing && !data.airlock_disabled) ? 'redButton' : null)}}
|
||||
</div>
|
||||
</div>
|
||||
@@ -28,14 +28,14 @@
|
||||
<div class="item">
|
||||
<div class="itemContent" style="width: 100%">
|
||||
{{if data.exterior_status.state == "open"}}
|
||||
{{:helper.link('Lock Exterior Door', 'alert', {'command' : 'force_ext'}, data.processing ? 'disabled' : null)}}
|
||||
{{:helper.link('Lock Exterior Door', 'exclamation-triangle', {'command' : 'force_ext'}, data.processing ? 'disabled' : null)}}
|
||||
{{else}}
|
||||
{{:helper.link('Cycle to Exterior', 'arrowthickstop-1-w', {'command' : 'cycle_ext_door'}, data.processing ? 'disabled' : null)}}
|
||||
{{:helper.link('Cycle to Exterior', 'arrow-circle-o-left', {'command' : 'cycle_ext_door'}, data.processing ? 'disabled' : null)}}
|
||||
{{/if}}
|
||||
{{if data.interior_status.state == "open"}}
|
||||
{{:helper.link('Lock Interior Door', 'alert', {'command' : 'force_int'}, data.processing ? 'disabled' : null)}}
|
||||
{{:helper.link('Lock Interior Door', 'exclamation-triangle', {'command' : 'force_int'}, data.processing ? 'disabled' : null)}}
|
||||
{{else}}
|
||||
{{:helper.link('Cycle to Interior', 'arrowthickstop-1-e', {'command' : 'cycle_int_door'}, data.processing ? 'disabled' : null)}}
|
||||
{{:helper.link('Cycle to Interior', 'arrow-circle-right', {'command' : 'cycle_int_door'}, data.processing ? 'disabled' : null)}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<div class="item">
|
||||
{{:helper.link('Overall status', 'note', {'state' :'status'}, null, data.state == 'status' ? 'selected' : null)}}
|
||||
{{:helper.link('Details', 'note', {'state' : 'engines'}, null, data.state == 'engines' ? 'selected' : null)}}
|
||||
{{:helper.link('Overall status', 'sticky-note', {'state' :'status'}, null, data.state == 'status' ? 'selected' : null)}}
|
||||
{{:helper.link('Details', 'sticky-note', {'state' : 'engines'}, null, data.state == 'engines' ? 'selected' : null)}}
|
||||
</div>
|
||||
|
||||
{{if data.state == "engines"}}
|
||||
@@ -11,7 +11,7 @@
|
||||
<span class='white'>Engine #{{:(index + 1)}}:</span>
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:helper.link(value.eng_on ? 'Shutdown' : 'Power up', 'power', { 'toggle' : 1, 'engine' : value.eng_reference }, null, value.eng_on ? 'selected' : null)}}
|
||||
{{:helper.link(value.eng_on ? 'Shutdown' : 'Power up', 'power-off', { 'toggle' : 1, 'engine' : value.eng_reference }, null, value.eng_on ? 'selected' : null)}}
|
||||
</div>
|
||||
</div>
|
||||
<div class='statusDisplay'>
|
||||
@@ -45,9 +45,9 @@
|
||||
<span class='average'>Thrust limit:</span>
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:helper.link('', 'circle-plus', { 'limit' : 0.1, 'engine' : value.eng_reference }, null, null)}}
|
||||
{{:helper.link('', 'plus-circle', { 'limit' : 0.1, 'engine' : value.eng_reference }, null, null)}}
|
||||
{{:helper.link(value.eng_thrust_limiter+'%', null, { 'set_limit' : 1, 'engine' : value.eng_reference }, null, null)}}
|
||||
{{:helper.link('', 'circle-minus', { 'limit' : -0.1, 'engine' : value.eng_reference }, null, null)}}
|
||||
{{:helper.link('', 'minus-circle', { 'limit' : -0.1, 'engine' : value.eng_reference }, null, null)}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -63,7 +63,7 @@
|
||||
<span class='white'>Engine #{{:(index + 1)}}:</span>
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:helper.link(value.eng_on ? 'Shutdown' : 'Power up', 'power', { 'toggle' : 1, 'engine' : value.eng_reference }, null, value.eng_on ? 'selected' : null)}}
|
||||
{{:helper.link(value.eng_on ? 'Shutdown' : 'Power up', 'power-off', { 'toggle' : 1, 'engine' : value.eng_reference }, null, value.eng_on ? 'selected' : null)}}
|
||||
</div>
|
||||
</div>
|
||||
<div class='item'>
|
||||
|
||||
@@ -27,15 +27,15 @@
|
||||
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
||||
{{if data.armed}}
|
||||
{{if data.docking_status == "docked"}}
|
||||
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_door'}, data.override_enabled ? null : 'disabled', null)}}
|
||||
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redButton' : null)}}
|
||||
{{:helper.link('Force exterior door', 'exclamation-triangle', {'command' : 'force_door'}, data.override_enabled ? null : 'disabled', null)}}
|
||||
{{:helper.link('Override', 'exclamation-triangle', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redButton' : null)}}
|
||||
{{else}}
|
||||
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_door'}, data.override_enabled ? null : 'disabled', data.override_enabled ? 'redButton' : null)}}
|
||||
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redButton' : 'yellowButton')}}
|
||||
{{:helper.link('Force exterior door', 'exclamation-triangle', {'command' : 'force_door'}, data.override_enabled ? null : 'disabled', data.override_enabled ? 'redButton' : null)}}
|
||||
{{:helper.link('Override', 'exclamation-triangle', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redButton' : 'yellowButton')}}
|
||||
{{/if}}
|
||||
{{else}}
|
||||
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_door'}, 'disabled', null)}}
|
||||
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, 'disabled', null)}}
|
||||
{{:helper.link('Force exterior door', 'exclamation-triangle', {'command' : 'force_door'}, 'disabled', null)}}
|
||||
{{:helper.link('Override', 'exclamation-triangle', {'command' : 'toggle_override'}, 'disabled', null)}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -76,11 +76,11 @@
|
||||
<div class="item">
|
||||
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
||||
{{if data.docking_status == "docked"}}
|
||||
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_door'}, data.override_enabled ? null : 'disabled', null)}}
|
||||
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redButton' : null)}}
|
||||
{{:helper.link('Force exterior door', 'exclamation-triangle', {'command' : 'force_door'}, data.override_enabled ? null : 'disabled', null)}}
|
||||
{{:helper.link('Override', 'exclamation-triangle', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redButton' : null)}}
|
||||
{{else}}
|
||||
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_door'}, data.override_enabled ? null : 'disabled', data.override_enabled ? 'redButton' : null)}}
|
||||
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redButton' : 'yellowButton')}}
|
||||
{{:helper.link('Force exterior door', 'exclamation-triangle', {'command' : 'force_door'}, data.override_enabled ? null : 'disabled', data.override_enabled ? 'redButton' : null)}}
|
||||
{{:helper.link('Override', 'exclamation-triangle', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redButton' : 'yellowButton')}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
@@ -88,8 +88,8 @@
|
||||
<div class="item" style="padding-top: 10px">
|
||||
<div class="item">
|
||||
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
||||
{{:helper.link('ARM', 'alert', {'command' : 'manual_arm'}, data.is_armed ? 'disabled' : null, data.is_armed ? 'redButton' : 'yellowButton')}}
|
||||
{{:helper.link('MANUAL EJECT', 'alert', {'command' : 'force_launch'}, data.can_force ? null : 'disabled', data.can_force ? 'yellowButton' : null)}}
|
||||
{{:helper.link('ARM', 'exclamation-triangle', {'command' : 'manual_arm'}, data.is_armed ? 'disabled' : null, data.is_armed ? 'redButton' : 'yellowButton')}}
|
||||
{{:helper.link('MANUAL EJECT', 'exclamation-triangle', {'command' : 'force_launch'}, data.can_force ? null : 'disabled', data.can_force ? 'yellowButton' : null)}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -76,9 +76,9 @@
|
||||
<div class="item" style="padding-top: 10px">
|
||||
<div class="item">
|
||||
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
||||
{{:helper.link('Launch Shuttle', 'arrowthickstop-1-e', {'move' : '1'}, data.can_launch ? null : 'disabled' , null)}}
|
||||
{{:helper.link('Cancel Launch', 'cancel', {'cancel' : '1'}, data.can_cancel ? null : 'disabled' , null)}}
|
||||
{{:helper.link('Force Launch', 'alert', {'force' : '1'}, data.can_force ? null : 'disabled' , data.can_force ? 'redButton' : null)}}
|
||||
{{:helper.link('Launch Shuttle', 'arrow-circle-right', {'move' : '1'}, data.can_launch ? null : 'disabled' , null)}}
|
||||
{{:helper.link('Cancel Launch', 'ban', {'cancel' : '1'}, data.can_cancel ? null : 'disabled' , null)}}
|
||||
{{:helper.link('Force Launch', 'exclamation-triangle', {'force' : '1'}, data.can_force ? null : 'disabled' , data.can_force ? 'redButton' : null)}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -9,7 +9,7 @@ Used In File(s): code\game\machinery/exonet_node.dm
|
||||
Power:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:helper.link('On', 'power', {'toggle_power' : 1}, data.on ? 'selected' : null)}}{{:helper.link('Off', 'close', {'toggle_power' : 1}, data.on ? null : 'selected', data.on ? 'redButton' : null)}}
|
||||
{{:helper.link('On', 'power-off', {'toggle_power' : 1}, data.on ? 'selected' : null)}}{{:helper.link('Off', 'close', {'toggle_power' : 1}, data.on ? null : 'selected', data.on ? 'redButton' : null)}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
Status:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:helper.link('On', 'power', {'toggleStatus' : 1}, data.on ? 'selected' : null)}}{{:helper.link('Off', 'close', {'toggleStatus' : 1}, data.on ? null : 'selected')}}
|
||||
{{:helper.link('On', 'power-off', {'toggleStatus' : 1}, data.on ? 'selected' : null)}}{{:helper.link('Off', 'close', {'toggleStatus' : 1}, data.on ? null : 'selected')}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
Gas Pressure:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:data.gasPressure}} kPa
|
||||
{{:helper.smoothRound(data.gasPressure)}} kPa
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
<div class="itemContent">
|
||||
{{:helper.displayBar(data.gasTemperature, data.minGasTemperature, data.maxGasTemperature, data.gasTemperatureClass)}}
|
||||
<div class="statusValue">
|
||||
<span class="{{:data.gasTemperatureClass}}">{{:data.gasTemperature}} K</span>
|
||||
<span class="{{:data.gasTemperatureClass}}">{{:helper.smoothRound(data.gasTemperature)}} K</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -6,7 +6,7 @@ Used In File(s): \code\modules\research\xenoarchaeology\machinery\geosample_scan
|
||||
<h3>Machine Status</h3>
|
||||
<div class="item">
|
||||
<div class="itemContent" style="width: 20%;">
|
||||
{{:helper.link(data.scanning ? 'Halt Scan' : 'Begin Scan', 'signal-diag', {'scanItem' : 1}, null)}}
|
||||
{{:helper.link(data.scanning ? 'Halt Scan' : 'Begin Scan', 'signal', {'scanItem' : 1}, null)}}
|
||||
</div>
|
||||
<div class="itemContent" style="width: 20%;">
|
||||
{{:helper.link('Eject item', 'eject', {'ejectItem' : 1}, (data.scanned_item && !data.scanning) ? null : 'disabled')}}
|
||||
@@ -39,7 +39,7 @@ Used In File(s): \code\modules\research\xenoarchaeology\machinery\geosample_scan
|
||||
<div class="itemLabel" style="width: 21%;">Scan progress:</div>
|
||||
<div class="itemContent" style="width: 35%;">
|
||||
{{:helper.displayBar(data.scan_progress, 0, 100, 'good')}}
|
||||
{{:data.scan_progress}} %
|
||||
{{:helper.smoothRound(data.scan_progress)}} %
|
||||
</div>
|
||||
<div class="itemContent" style="width: 44%;">
|
||||
{{if data.scan_progress >= 100}}
|
||||
@@ -51,7 +51,7 @@ Used In File(s): \code\modules\research\xenoarchaeology\machinery\geosample_scan
|
||||
<div class="itemLabel" style="width: 21%;">Vacuum seal integrity:</div>
|
||||
<div class="itemContent" style="width: 35%;">
|
||||
{{:helper.displayBar(data.scanner_seal_integrity, 0, 100, ((data.scanner_seal_integrity < 66) ? ((data.scanner_seal_integrity < 33) ? 'bad' : 'average') : 'good'))}}
|
||||
{{:data.scanner_seal_integrity}} %
|
||||
{{:helper.smoothRound(data.scanner_seal_integrity)}} %
|
||||
</div>
|
||||
<div class="itemContent" style="width: 44%;">
|
||||
{{if data.scanner_seal_integrity < 25}}
|
||||
@@ -110,7 +110,7 @@ Used In File(s): \code\modules\research\xenoarchaeology\machinery\geosample_scan
|
||||
<div class="itemLabel" style="width: 21%;">Internal temperature:</div>
|
||||
<div class="itemContent" style="width: 35%;">
|
||||
{{:helper.displayBar(data.scanner_temperature, 0, 1273, (data.scanner_temperature > 250 ? (data.scanner_temperature > 1000 ? 'bad' : 'average') : 'good'))}}
|
||||
{{:data.scanner_temperature}} K
|
||||
{{:helper.smoothRound(data.scanner_temperature)}} K
|
||||
</div>
|
||||
<div class="itemContent" style="width: 44%;">
|
||||
{{if data.scanner_temperature > 1000}}
|
||||
@@ -124,10 +124,10 @@ Used In File(s): \code\modules\research\xenoarchaeology\machinery\geosample_scan
|
||||
<div class="itemLabel" style="width: 21%;">Ambient radiation:</div>
|
||||
<div class="itemContent" style="width: 35%;">
|
||||
{{:helper.displayBar(data.radiation, 0, 100, ((data.radiation > 15) ? ((data.radiation > 65) ? 'bad' : 'average') : 'good'))}}
|
||||
{{:data.radiation}} mSv
|
||||
{{:helper.smoothRound(data.radiation)}} mSv
|
||||
</div>
|
||||
<div class="itemContent" style="width: 44%;">
|
||||
{{:helper.link(data.rad_shield_on ? 'Disable Radiation Shielding' : 'Enable Radiation Shielding', 'radiation', {'toggle_rad_shield' : 1}, null)}}
|
||||
{{:helper.link(data.rad_shield_on ? 'Disable Radiation Shielding' : 'Enable Radiation Shielding', 'exclamation-circle', {'toggle_rad_shield' : 1}, null)}}
|
||||
{{if data.rad_shield_on}}
|
||||
<span class="notice" style="width: 100%;">Shield blocking scanner.</span>
|
||||
{{/if}}
|
||||
@@ -139,7 +139,7 @@ Used In File(s): \code\modules\research\xenoarchaeology\machinery\geosample_scan
|
||||
<div class="itemLabel" style="width: 21%;">Coolant remaining:</div>
|
||||
<div class="itemContent" style="width: 35%;">
|
||||
{{:helper.displayBar(data.unused_coolant_per, 0, 100, ((data.unused_coolant_per < 66) ? ((data.unused_coolant_per < 33) ? 'bad' : 'average') : 'good'))}}
|
||||
{{:data.unused_coolant_abs}} u
|
||||
{{:helper.smoothRound(data.unused_coolant_abs)}} u
|
||||
</div>
|
||||
<div class="itemContent" style="width: 44%;">
|
||||
{{if data.unused_coolant_per < 20}}
|
||||
@@ -151,7 +151,7 @@ Used In File(s): \code\modules\research\xenoarchaeology\machinery\geosample_scan
|
||||
<div class="itemLabel" style="width: 21%;">Coolant flow rate:</div>
|
||||
<div class="itemContent" style="width: 35%;">
|
||||
{{:helper.displayBar(data.coolant_usage_rate, 0, 10, 'good')}}
|
||||
{{:data.coolant_usage_rate}} u/s
|
||||
{{:helper.smoothRound(data.coolant_usage_rate)}} u/s
|
||||
</div>
|
||||
<div class="itemContent" style="text-align:left; width: 22%;">
|
||||
{{:helper.link('Min u/s', null, {'coolantRate' : -10}, null)}}
|
||||
|
||||
@@ -53,7 +53,7 @@ Used In File(s): /code/modules/clothing/spacesuits/rig/rig.dm
|
||||
Power supply
|
||||
</div>
|
||||
<div>
|
||||
{{:helper.displayBar(data.chargestatus, 0, 50, (data.chargestatus >= 35) ? 'good' : (data.chargestatus >= 15) ? 'average' : 'bad')}} {{:data.charge}}/{{:data.maxcharge}}
|
||||
{{:helper.displayBar(data.chargestatus, 0, 50, (data.chargestatus >= 35) ? 'good' : (data.chargestatus >= 15) ? 'average' : 'bad')}} {{:helper.smoothRound(data.charge)}}/{{:data.maxcharge}}
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
@@ -69,7 +69,7 @@ Used In File(s): /code/modules/clothing/spacesuits/rig/rig.dm
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class='fixedLeft'>
|
||||
{{:helper.link('Toggle', 'circle-arrow-s', {'toggle_ai_control' : 1}, null)}}
|
||||
{{:helper.link('Toggle', 'arrow-circle-down', {'toggle_ai_control' : 1}, null)}}
|
||||
</div>
|
||||
</div>
|
||||
<div class='inlineBlock'>
|
||||
@@ -88,7 +88,7 @@ Used In File(s): /code/modules/clothing/spacesuits/rig/rig.dm
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class='fixedLeft'>
|
||||
{{:helper.link('Toggle', 'circle-arrow-s', {'toggle_seals' : 1}, null)}}
|
||||
{{:helper.link('Toggle', 'arrow-circle-down', {'toggle_seals' : 1}, null)}}
|
||||
</div>
|
||||
</div>
|
||||
<div class='inlineBlock'>
|
||||
@@ -107,7 +107,7 @@ Used In File(s): /code/modules/clothing/spacesuits/rig/rig.dm
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class='fixedLeft'>
|
||||
{{:helper.link('Toggle', 'circle-arrow-s', {'toggle_suit_lock' : 1}, null)}}
|
||||
{{:helper.link('Toggle', 'arrow-circle-down', {'toggle_suit_lock' : 1}, null)}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -126,7 +126,7 @@ Used In File(s): /code/modules/clothing/spacesuits/rig/rig.dm
|
||||
</div>
|
||||
{{if data.sealing != 1}}
|
||||
<div class='fixedLeft'>
|
||||
{{:helper.link('Toggle', 'circle-arrow-s', {'toggle_piece' : 'helmet'}, null)}}
|
||||
{{:helper.link('Toggle', 'arrow-circle-down', {'toggle_piece' : 'helmet'}, null)}}
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
@@ -139,7 +139,7 @@ Used In File(s): /code/modules/clothing/spacesuits/rig/rig.dm
|
||||
</div>
|
||||
{{if data.sealing != 1}}
|
||||
<div class='fixedLeft'>
|
||||
{{:helper.link('Toggle', 'circle-arrow-s', {'toggle_piece' : 'gauntlets'}, null)}}
|
||||
{{:helper.link('Toggle', 'arrow-circle-down', {'toggle_piece' : 'gauntlets'}, null)}}
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
@@ -152,7 +152,7 @@ Used In File(s): /code/modules/clothing/spacesuits/rig/rig.dm
|
||||
</div>
|
||||
{{if data.sealing != 1}}
|
||||
<div class='fixedLeft'>
|
||||
{{:helper.link('Toggle', 'circle-arrow-s', {'toggle_piece' : 'boots'}, null)}}
|
||||
{{:helper.link('Toggle', 'arrow-circle-down', {'toggle_piece' : 'boots'}, null)}}
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
@@ -165,7 +165,7 @@ Used In File(s): /code/modules/clothing/spacesuits/rig/rig.dm
|
||||
</div>
|
||||
{{if data.sealing != 1}}
|
||||
<div class='fixedLeft'>
|
||||
{{:helper.link('Toggle', 'circle-arrow-s', {'toggle_piece' : 'chest'}, null)}}
|
||||
{{:helper.link('Toggle', 'arrow-circle-down', {'toggle_piece' : 'chest'}, null)}}
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
@@ -210,7 +210,7 @@ Used In File(s): /code/modules/clothing/spacesuits/rig/rig.dm
|
||||
<div class='floatLeft' style='width: 48%'>
|
||||
{{if value.can_use == 1}}
|
||||
<div class='inlineBlock'>
|
||||
{{:helper.link(value.engagestring, 'circle-arrow-s', {'interact_module' : value.index, 'module_mode' : 'engage'}, null)}}
|
||||
{{:helper.link(value.engagestring, 'arrow-circle-down', {'interact_module' : value.index, 'module_mode' : 'engage'}, null)}}
|
||||
</div>
|
||||
{{/if}}
|
||||
{{if value.can_select == 1}}
|
||||
@@ -218,16 +218,16 @@ Used In File(s): /code/modules/clothing/spacesuits/rig/rig.dm
|
||||
{{if value.name == data.primarysystem}}
|
||||
<div class ='good boldText'>SELECTED</div>
|
||||
{{else}}
|
||||
{{:helper.link('Select', 'circle-arrow-s', {'interact_module' : value.index, 'module_mode' : 'select'}, null)}}
|
||||
{{:helper.link('Select', 'arrow-circle-down', {'interact_module' : value.index, 'module_mode' : 'select'}, null)}}
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/if}}
|
||||
{{if value.can_toggle == 1}}
|
||||
<div class='inlineBlock'>
|
||||
{{if value.is_active == 1}}
|
||||
{{:helper.link(value.deactivatestring, 'circle-arrow-s', {'interact_module' : value.index, 'module_mode' : 'deactivate'}, null)}}
|
||||
{{:helper.link(value.deactivatestring, 'arrow-circle-down', {'interact_module' : value.index, 'module_mode' : 'deactivate'}, null)}}
|
||||
{{else}}
|
||||
{{:helper.link(value.activatestring, 'circle-arrow-s', {'interact_module' : value.index, 'module_mode' : 'activate'}, null)}}
|
||||
{{:helper.link(value.activatestring, 'arrow-circle-down', {'interact_module' : value.index, 'module_mode' : 'activate'}, null)}}
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
+12
-12
@@ -46,26 +46,26 @@
|
||||
<div class='item'>
|
||||
<div class="itemLabel">
|
||||
<div class='item'>
|
||||
{{:helper.link('', 'triangle-1-nw', { 'move' : 9 }, null, null)}}
|
||||
{{:helper.link('', 'triangle-1-n', { 'move' : 1 }, null, null)}}
|
||||
{{:helper.link('', 'triangle-1-ne', { 'move' : 5 }, null, null)}}
|
||||
{{:helper.link('', 'caret-left fa-rotate-45', { 'move' : 9 }, null, null)}}
|
||||
{{:helper.link('', 'caret-up', { 'move' : 1 }, null, null)}}
|
||||
{{:helper.link('', 'caret-up fa-rotate-45', { 'move' : 5 }, null, null)}}
|
||||
</div>
|
||||
<div class='item'>
|
||||
{{:helper.link('', 'triangle-1-w', { 'move' : 8 }, null, null)}}
|
||||
{{:helper.link('', 'caret-left', { 'move' : 8 }, null, null)}}
|
||||
{{:helper.link('', 'circle-close', { 'brake' : 1 }, null, null)}}
|
||||
{{:helper.link('', 'triangle-1-e', { 'move' : 4 }, null, null)}}
|
||||
{{:helper.link('', 'caret-right', { 'move' : 4 }, null, null)}}
|
||||
</div>
|
||||
<div class='item'>
|
||||
{{:helper.link('', 'triangle-1-sw', { 'move' : 10 }, null, null)}}
|
||||
{{:helper.link('', 'triangle-1-s', { 'move' : 2 }, null, null)}}
|
||||
{{:helper.link('', 'triangle-1-se', { 'move' : 6 }, null, null)}}
|
||||
{{:helper.link('', 'caret-down fa-rotate-45', { 'move' : 10 }, null, null)}}
|
||||
{{:helper.link('', 'caret-down', { 'move' : 2 }, null, null)}}
|
||||
{{:helper.link('', 'caret-right fa-rotate-45', { 'move' : 6 }, null, null)}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="itemContent">
|
||||
<div class='item'>
|
||||
<span class='white'>Direct control</span>
|
||||
{{:helper.link(data.manual_control ? 'Engaged' : 'Disengaged', 'shuffle', { 'manual' : 1 }, data.manual_control ? 'selected' : null, null)}}
|
||||
{{:helper.link(data.manual_control ? 'Engaged' : 'Disengaged', 'random', { 'manual' : 1 }, data.manual_control ? 'selected' : null, null)}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -94,8 +94,8 @@
|
||||
|
||||
<h3>Navigation data</h3>
|
||||
<div class='item'>
|
||||
{{:helper.link('Save current position', 'disk', { 'add' : 'current' }, null)}}
|
||||
{{:helper.link('Add new entry', 'document', { 'add' : 'new' }, null)}}
|
||||
{{:helper.link('Save current position', 'floppy-o', { 'add' : 'current' }, null)}}
|
||||
{{:helper.link('Add new entry', 'file-o', { 'add' : 'new' }, null)}}
|
||||
</div>
|
||||
|
||||
<div class='statusDisplay'>
|
||||
@@ -106,7 +106,7 @@
|
||||
<span class='white'>{{:value.x}} : {{:value.y}}</span>
|
||||
</div>
|
||||
<div class='item'>
|
||||
{{:helper.link('Plot course', 'arrowreturnthick-1-e', { 'x' : value.x, 'y' : value.y }, null, null)}}
|
||||
{{:helper.link('Plot course', 'arrow-right', { 'x' : value.x, 'y' : value.y }, null, null)}}
|
||||
{{:helper.link('Remove entry', 'close', { 'remove' : value.reference }, null, null)}}
|
||||
</div>
|
||||
{{/for}}
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
</div>
|
||||
|
||||
{{if !data.authenticated}}
|
||||
<span class='alert'><i>Please insert the IDs into the terminal to proceed.</i></span><br>
|
||||
<span class='exclamation-triangle'><i>Please insert the IDs into the terminal to proceed.</i></span><br>
|
||||
{{/if}}
|
||||
|
||||
<div class='item'>
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
<div id='uiContent'>
|
||||
<div id='uiLoadingNotice'>Initiating...</div>
|
||||
</div>
|
||||
@@ -1,30 +0,0 @@
|
||||
<div id='uiTitleWrapper' unselectable="on"><div id='uiStatusIcon' class='icon24 uiStatusGood' unselectable="on"></div><div id='uiTitleText' unselectable="on">{{:config.title}}</div><div id='uiTitleFluff' unselectable="on"></div></div>
|
||||
<div id='uiMapWrapper' class="hidden" unselectable="on">
|
||||
<div id='uiMapHeader' unselectable="on">
|
||||
{{:helper.link('Hide Map', 'close', {'showMap' : 0})}}
|
||||
<div style="float: right; width: 240px;">
|
||||
<span style="float: left;">Zoom Level: </span>
|
||||
<div unselectable="on" class="link zoomLink" data-zoom-level="4">x1.0</div>
|
||||
<div unselectable="on" class="link zoomLink" data-zoom-level="6">x1.5</div>
|
||||
<div unselectable="on" class="link zoomLink" data-zoom-level="8">x2.0</div>
|
||||
<div unselectable="on" class="link zoomLink" data-zoom-level="12">x2.5</div>
|
||||
</div>
|
||||
<!-- Add a template with the key "mapHeader" to have it rendered here -->
|
||||
</div>
|
||||
<div id='uiMapContainer' unselectable="on">
|
||||
<div id='uiMap' unselectable="on">
|
||||
<img id="uiMapImage" src="nanomap_z{{:config.mapZLevel}}.png" width="256" height="256" unselectable="on" />
|
||||
<div id='uiMapContent' unselectable="on">
|
||||
<!-- Add a template with the key "mapContent" to have it rendered here (on the map) -->
|
||||
<!-- Having a "mapContent" template enables the map functionality -->
|
||||
</div>
|
||||
</div>
|
||||
<div id="uiMapTooltip"></div>
|
||||
</div>
|
||||
<div id='uiMapFooter' unselectable="on">
|
||||
<!-- Add a template with the key "mapFooter" to have it rendered here -->
|
||||
</div>
|
||||
</div>
|
||||
<div id='uiContent' unselectable="on">
|
||||
<div id='uiLoadingNotice'>Initiating...</div>
|
||||
</div>
|
||||
@@ -44,7 +44,7 @@
|
||||
<div class="white" style="height: 26px">Lock</div>
|
||||
{{for data.ports}}
|
||||
<div style="height: 26px">
|
||||
{{:helper.link(' ', value.con_lock ? 'locked' : 'unlocked', {'command' : 'switch_conlock', 'dir' : value.dir}, value.input ? null : 'disabled', value.con_lock ? 'selected' : null)}}
|
||||
{{:helper.link(' ', value.con_lock ? 'lock' : 'unlock', {'command' : 'switch_conlock', 'dir' : value.dir}, value.input ? null : 'disabled', value.con_lock ? 'selected' : null)}}
|
||||
</div>
|
||||
{{/for}}
|
||||
</div>
|
||||
|
||||
+10
-10
@@ -15,9 +15,9 @@
|
||||
</div>
|
||||
<div class = "itemContent">
|
||||
{{if data.active}}
|
||||
{{:helper.link('STOP', 'power', {'action' : "disable"})}}
|
||||
{{:helper.link('STOP', 'power-off', {'action' : "disable"})}}
|
||||
{{else}}
|
||||
{{:helper.link('START', 'power', {'action' : "enable"})}}
|
||||
{{:helper.link('START', 'power-off', {'action' : "enable"})}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
@@ -35,27 +35,27 @@
|
||||
<div class="itemContent">
|
||||
{{if data.fuel_stored >= 5000}}
|
||||
{{:helper.displayBar(data.fuel_stored, 0, data.fuel_capacity, 'good')}}
|
||||
<br><span class="good">{{:data.fuel_stored}}/{{:data.fuel_capacity}} cm3</span>
|
||||
<br><span class="good">{{:helper.smoothRound(data.fuel_stored)}}/{{:data.fuel_capacity}} cm3</span>
|
||||
{{else data.fuel_stored >= 1000}}
|
||||
{{:helper.displayBar(data.fuel_stored, 0, data.fuel_capacity, 'average')}}
|
||||
<br><span class="average">{{:data.fuel_stored}}/{{:data.fuel_capacity}} cm3</span>
|
||||
<br><span class="average">{{:helper.smoothRound(data.fuel_stored)}}/{{:data.fuel_capacity}} cm3</span>
|
||||
{{else}}
|
||||
{{:helper.displayBar(data.fuel_stored, 0, data.fuel_capacity, 'bad')}}
|
||||
<br><span class="bad">{{:data.fuel_stored}}/{{:data.fuel_capacity}} cm3</span>
|
||||
<br><span class="bad">{{:helper.smoothRound(data.fuel_stored)}}/{{:data.fuel_capacity}} cm3</span>
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="itemLabel">
|
||||
Fuel Usage:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
<span class="good">{{:data.fuel_usage}} cm3/s</span>
|
||||
<span class="good">{{:helper.smoothRound(data.fuel_usage)}} cm3/s</span>
|
||||
</div>
|
||||
{{if !data.is_ai}}
|
||||
<div class="itemLabel">
|
||||
Control:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:helper.link('EJECT FUEL', 'arrowupthick-1-s', {'action' : "eject"}, data.active ? 'disabled' : null)}}
|
||||
{{:helper.link('EJECT FUEL', 'arrow-down', {'action' : "eject"}, data.active ? 'disabled' : null)}}
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
@@ -87,13 +87,13 @@
|
||||
<div class="itemContent">
|
||||
{{if data.temperature_current < (data.temperature_max * 0.8)}}
|
||||
{{:helper.displayBar(data.temperature_current, 0, (data.temperature_max * 1.5), 'good')}}
|
||||
<br><span class="good">{{:data.temperature_current}} C</span>
|
||||
<br><span class="good">{{:helper.smoothRound(data.temperature_current)}} C</span>
|
||||
{{else data.temperature_current < data.temperature_max}}
|
||||
{{:helper.displayBar(data.temperature_current, 0, (data.temperature_max * 1.5), 'average')}}
|
||||
<br><span class="average">{{:data.temperature_current}} C</span>
|
||||
<br><span class="average">{{:helper.smoothRound(data.temperature_current)}} C</span>
|
||||
{{else}}
|
||||
{{:helper.displayBar(data.temperature_current, 0, (data.temperature_max * 1.5), 'bad')}}
|
||||
<br><span class="bad">{{:data.temperature_current}} C</span>
|
||||
<br><span class="bad">{{:helper.smoothRound(data.temperature_current)}} C</span>
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="itemLabel">
|
||||
|
||||
@@ -8,7 +8,7 @@ code/modules/mob/living/silicon/pai/software_modules.dm
|
||||
Pressure:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:data.pressure}} kPa
|
||||
{{:helper.smoothRound(data.pressure)}} kPa
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -17,7 +17,7 @@ code/modules/mob/living/silicon/pai/software_modules.dm
|
||||
Temperature:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:data.temperature}}K ({{:data.temperatureC}}°C)
|
||||
{{:helper.smoothRound(data.temperature)}}K ({{:helper.smoothRound(data.temperatureC)}}°C)
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -27,7 +27,7 @@ code/modules/mob/living/silicon/pai/software_modules.dm
|
||||
{{:value.name}}:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:value.percent}}%
|
||||
{{:helper.smoothRound(value.percent)}}%
|
||||
</div>
|
||||
</div>
|
||||
{{/for}}
|
||||
|
||||
@@ -25,11 +25,11 @@ code/modules/mob/living/silicon/pai/software_modules.dm
|
||||
<div class="itemContent">
|
||||
{{if data.inprogress}}
|
||||
{{if data.progress_a <= 33}}
|
||||
<div class='bad'>{{:data.progress_a}}.{{:data.progress_b}}%</div>
|
||||
<div class='bad'>{{:helper.smoothRound(data.progress_a)}}.{{:helper.smoothRound(data.progress_b)}}%</div>
|
||||
{{else data.progress_a <= 67}}
|
||||
<div class='average'>{{:data.progress_a}}.{{:data.progress_b}}%</div>
|
||||
<div class='average'>{{:helper.smoothRound(data.progress_a)}}.{{:helper.smoothRound(data.progress_b)}}%</div>
|
||||
{{else}}
|
||||
<div class='good'>{{:data.progress_a}}.{{:data.progress_b}}%</div>
|
||||
<div class='good'>{{:helper.smoothRound(data.progress_a)}}.{{:helper.smoothRound(data.progress_b)}}%</div>
|
||||
{{/if}}
|
||||
{{:helper.link("Cancel", '', {"stopic":"door_jack", "cancel":1}, null, 'redButton')}}
|
||||
{{else}}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
<div class="item">
|
||||
{{if !data.isolating}}
|
||||
{{:helper.link('Home', 'home', {'home' : 1}, data.state == 'home' ? 'disabled' : null, 'fixedLeft')}}
|
||||
{{:helper.link('List', 'note', {'list' : 1}, data.state == 'list' ? 'disabled' : null, 'fixedLeft')}}
|
||||
{{:helper.link('List', 'sticky-note', {'list' : 1}, data.state == 'list' ? 'disabled' : null, 'fixedLeft')}}
|
||||
{{:helper.link('Pathogen', 'folder-open', {'entry' : 1}, data.state == 'entry' ? 'disabled' : null, 'fixedLeft')}}
|
||||
{{/if}}
|
||||
<br>
|
||||
@@ -82,7 +82,7 @@
|
||||
{{for data.database}}
|
||||
<div class='itemContent'>
|
||||
<div class='highlight fixedLeft'>{{:value.name}}</div>
|
||||
{{:helper.link('Details', 'circle-arrow-s', { 'entry' : 1, 'view' : value.record }, null, 'fixedLeft')}}
|
||||
{{:helper.link('Details', 'arrow-circle-down', { 'entry' : 1, 'view' : value.record }, null, 'fixedLeft')}}
|
||||
</div>
|
||||
{{/for}}
|
||||
{{else}}
|
||||
|
||||
+21
-21
@@ -12,7 +12,7 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm
|
||||
<!--{{:helper.link('Refresh', 'refresh', {'choice' : "Refresh"}, null, 'fixedLeft')}}-->
|
||||
{{:helper.link('Close', 'gear', {'choice' : "Close"}, null, 'fixedLeft')}}
|
||||
{{if data.idInserted}} {{:helper.link('Update PDA Info', 'eject', {'choice' : "UpdateInfo"}, null, 'fixedLeftWide')}} {{/if}}
|
||||
{{if data.mode != 0}} {{:helper.link('Return', 'arrowreturn-1-w', {'choice' : "Return"}, null, 'fixedLeft')}} {{/if}}
|
||||
{{if data.mode != 0}} {{:helper.link('Return', 'arrow-left', {'choice' : "Return"}, null, 'fixedLeft')}} {{/if}}
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
@@ -66,9 +66,9 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm
|
||||
<b>General</b>:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:helper.link('Notekeeper', 'note', {'choice' : "1"}, null, 'fixedLeftWide')}}
|
||||
{{:helper.link('Messenger', data.new_Message ? 'mail-closed' : 'mail-open', {'choice' : "2"}, null, 'fixedLeftWide')}}
|
||||
{{:helper.link('Crew Manifest', 'contact', {'choice' : "41"}, null, 'fixedLeftWide')}}
|
||||
{{:helper.link('Notekeeper', 'sticky-note', {'choice' : "1"}, null, 'fixedLeftWide')}}
|
||||
{{:helper.link('Messenger', data.new_Message ? 'envelope' : 'envelope-o', {'choice' : "2"}, null, 'fixedLeftWide')}}
|
||||
{{:helper.link('Crew Manifest', 'user', {'choice' : "41"}, null, 'fixedLeftWide')}}
|
||||
{{:helper.link('News', data.new_News ? 'mail-closed' : 'mail-open', {'choice' : "6"}, null, 'fixedLeftWide')}}
|
||||
</div>
|
||||
</div>
|
||||
@@ -91,7 +91,7 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm
|
||||
<b>Engineering</b>:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:helper.link('Power Monitor', 'alert', {'choice' : "43"}, null, 'fixedLeftWide')}}
|
||||
{{:helper.link('Power Monitor', 'exclamation-triangle', {'choice' : "43"}, null, 'fixedLeftWide')}}
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
@@ -165,7 +165,7 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{:helper.link('Atmospheric Scan', 'gear', {'choice' : "3"}, null, 'fixedLeftWide')}}
|
||||
{{:helper.link(data.fon==1 ? 'Disable Flashlight' : 'Enable Flashlight', 'lightbulb', {'choice' : "Light"}, null,'fixedLeftWide')}}
|
||||
{{:helper.link(data.fon==1 ? 'Disable Flashlight' : 'Enable Flashlight', 'lightbulb-o', {'choice' : "Light"}, null,'fixedLeftWide')}}
|
||||
</div>
|
||||
</div>
|
||||
{{if data.pai}}
|
||||
@@ -208,7 +208,7 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm
|
||||
<b>Messenger Functions</b>:
|
||||
</div>
|
||||
<div class ="itemContent">
|
||||
{{:helper.link(data.message_silent==1 ? 'Ringer: Off' : 'Ringer: On', data.message_silent==1 ? 'volume-off' : 'volume-on', {'choice' : "Toggle Ringer"}, null, 'fixedLeftWide')}}
|
||||
{{:helper.link(data.message_silent==1 ? 'Ringer: Off' : 'Ringer: On', data.message_silent==1 ? 'volume-off' : 'volume-up', {'choice' : "Toggle Ringer"}, null, 'fixedLeftWide')}}
|
||||
{{:helper.link(data.toff==1 ? 'Messenger: Off' : 'Messenger: On',data.toff==1 ? 'close':'check', {'choice' : "Toggle Messenger"}, null, 'fixedLeftWide')}}
|
||||
{{:helper.link('Set Ringtone', 'comment', {'choice' : "Ringtone"}, null, 'fixedLeftWide')}}
|
||||
{{:helper.link('Delete all Conversations', 'trash', {'choice' : "Clear", 'option' : "All"}, null, 'fixedLeftWider')}}
|
||||
@@ -234,16 +234,16 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm
|
||||
<H3>Current Conversations</H3>
|
||||
{{for data.convopdas}}
|
||||
<div class="item">
|
||||
{{:helper.link(value.Name, 'circle-arrow-s', {'choice' : "Select Conversation", 'convo' : value.Reference } , null, value.fixedLeftWider)}}
|
||||
{{:helper.link(value.Name, 'arrow-circle-down', {'choice' : "Select Conversation", 'convo' : value.Reference } , null, value.fixedLeftWider)}}
|
||||
{{if data.cartridge}}
|
||||
{{if data.cartridge.access.access_detonate_pda && value.Detonate}}
|
||||
{{:helper.link('*Detonate*', 'radiation', {'choice' : "Detonate", 'target' : value.Reference}, null, 'fixedLeft')}}
|
||||
{{:helper.link('*Detonate*', 'exclamation-circle', {'choice' : "Detonate", 'target' : value.Reference}, null, 'fixedLeft')}}
|
||||
{{/if}}
|
||||
{{if data.cartridge.access.access_clown}}
|
||||
{{:helper.link('*Send Virus*', 'star', {'choice' : "Send Honk", 'target' : value.Reference}, null, 'fixedLeft')}}
|
||||
{{/if}}
|
||||
{{if data.cartridge.access.access_mime}}
|
||||
{{:helper.link('*Send Virus*', 'circle-arrow-s', {'choice' : "Send Silence", 'target' : value.Reference}, null, 'fixedLeft')}}
|
||||
{{:helper.link('*Send Virus*', 'arrow-circle-down', {'choice' : "Send Silence", 'target' : value.Reference}, null, 'fixedLeft')}}
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
</div>
|
||||
@@ -251,11 +251,11 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm
|
||||
<H3>Other PDAs</H3>
|
||||
{{for data.pdas}}
|
||||
<div class="item">
|
||||
{{:helper.link(value.Name, 'circle-arrow-s', {'choice' : "Message", 'target' : value.Reference}, null, value.fixedLeftWider)}}
|
||||
{{:helper.link(value.Name, 'arrow-circle-down', {'choice' : "Message", 'target' : value.Reference}, null, value.fixedLeftWider)}}
|
||||
{{if data.cartridge}}
|
||||
{{if data.cartridge.access.access_detonate_pda && value.Detonate}} {{:helper.link('*Detonate*', 'radiation', {'choice' : "Detonate", 'target' : value.Reference}, null, 'fixedLeft')}} {{/if}}
|
||||
{{if data.cartridge.access.access_detonate_pda && value.Detonate}} {{:helper.link('*Detonate*', 'exclamation-circle', {'choice' : "Detonate", 'target' : value.Reference}, null, 'fixedLeft')}} {{/if}}
|
||||
{{if data.cartridge.access.access_clown}} {{:helper.link('*Send Virus*', 'star', {'choice' : "Send Honk", 'target' : value.Reference}, null, 'fixedLeft')}} {{/if}}
|
||||
{{if data.cartridge.access.access_mime}} {{:helper.link('*Send Virus*', 'circle-arrow-s', {'choice' : "Send Silence", 'target' : value.Reference}, null, 'fixedLeft')}} {{/if}}
|
||||
{{if data.cartridge.access.access_mime}} {{:helper.link('*Send Virus*', 'arrow-circle-down', {'choice' : "Send Silence", 'target' : value.Reference}, null, 'fixedLeft')}} {{/if}}
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/for}}
|
||||
@@ -471,7 +471,7 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
{{:helper.link('Send Signal', 'radiation', {'cartmenu' : "1", 'choice' : "Send Signal"}, null, null)}}
|
||||
{{:helper.link('Send Signal', 'exclamation-circle', {'cartmenu' : "1", 'choice' : "Send Signal"}, null, null)}}
|
||||
</div>
|
||||
|
||||
|
||||
@@ -511,10 +511,10 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm
|
||||
<b> ALERT!</b>:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:helper.link('None', 'alert', {'cartmenu' : "1", 'choice' : "Status",'statdisp' : "alert", 'alert' : "default"}, null, null)}}
|
||||
{{:helper.link('Red Alert', 'alert', {'cartmenu' : "1", 'choice' : "Status",'statdisp' : "alert", 'alert' : "redalert"}, null, null)}}
|
||||
{{:helper.link('Lockdown', 'caution', {'cartmenu' : "1", 'choice' : "Status",'statdisp' : "alert", 'alert' : "lockdown"}, null, null)}}
|
||||
{{:helper.link('Biohazard', 'radiation', {'cartmenu' : "1", 'choice' : "Status",'statdisp' : "alert", 'alert' : "biohazard"}, null, null)}}
|
||||
{{:helper.link('None', 'exclamation-triangle', {'cartmenu' : "1", 'choice' : "Status",'statdisp' : "alert", 'alert' : "default"}, null, null)}}
|
||||
{{:helper.link('Red Alert', 'exclamation-triangle', {'cartmenu' : "1", 'choice' : "Status",'statdisp' : "alert", 'alert' : "redalert"}, null, null)}}
|
||||
{{:helper.link('Lockdown', 'bell', {'cartmenu' : "1", 'choice' : "Status",'statdisp' : "alert", 'alert' : "lockdown"}, null, null)}}
|
||||
{{:helper.link('Biohazard', 'exclamation-circle', {'cartmenu' : "1", 'choice' : "Status",'statdisp' : "alert", 'alert' : "biohazard"}, null, null)}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -850,7 +850,7 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm
|
||||
<b>Functions</b>:
|
||||
</div>
|
||||
<div class ="itemContent">
|
||||
{{:helper.link(data.news_silent==1 ? 'Ringer: Off' : 'Ringer: On', data.news_silent==1 ? 'volume-off' : 'volume-on', {'choice' : "Toggle News"}, null, 'fixedLeftWide')}}
|
||||
{{:helper.link(data.news_silent==1 ? 'Ringer: Off' : 'Ringer: On', data.news_silent==1 ? 'volume-off' : 'volume-up', {'choice' : "Toggle News"}, null, 'fixedLeftWide')}}
|
||||
{{:helper.link('Set news tone', 'comment', {'choice' : "Newstone"}, null, 'fixedLeftWide')}}
|
||||
</div>
|
||||
</div>
|
||||
@@ -863,9 +863,9 @@ Used In File(s): \code\game\objects\items\devices\PDA\PDA.dm
|
||||
<div class="itemContent">
|
||||
{{for data.feedChannels}}
|
||||
{{if value.censored}}
|
||||
{{:helper.link(value.name, 'circle-arrow-s', {'choice' : "Select Feed", 'feed' : value.feed, 'name' : value.name } , null, 'fixedLeftWiderRed')}}
|
||||
{{:helper.link(value.name, 'arrow-circle-down', {'choice' : "Select Feed", 'feed' : value.feed, 'name' : value.name } , null, 'fixedLeftWiderRed')}}
|
||||
{{else}}
|
||||
{{:helper.link(value.name, 'circle-arrow-s', {'choice' : "Select Feed", 'feed' : value.feed, 'name' : value.name } , null, 'fixedLeftWider')}}
|
||||
{{:helper.link(value.name, 'arrow-circle-down', {'choice' : "Select Feed", 'feed' : value.feed, 'name' : value.name } , null, 'fixedLeftWider')}}
|
||||
{{/if}}
|
||||
{{empty}}
|
||||
<I>No active channels found...</I>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
Tank Pressure:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:data.tankPressure}} kPa
|
||||
{{:helper.smoothRound(data.tankPressure)}} kPa
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
Tank Pressure:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:data.holdingTank.tankPressure}} kPa
|
||||
{{:helper.smoothRound(data.holdingTank.tankPressure)}} kPa
|
||||
</div>
|
||||
</div>
|
||||
{{else}}
|
||||
@@ -86,7 +86,7 @@
|
||||
Power Switch:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:helper.link('On', 'unlocked', {'power' : 1}, data.on ? 'selected' : null)}} {{:helper.link('Off', 'locked', {'power' : 1}, data.on ? null : 'selected')}}
|
||||
{{:helper.link('On', 'unlock', {'power' : 1}, data.on ? 'selected' : null)}} {{:helper.link('Off', 'lock', {'power' : 1}, data.on ? null : 'selected')}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -95,6 +95,6 @@
|
||||
Pump Direction:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:helper.link('Out', 'arrowreturn-1-e', {'direction' : 1}, data.pump_dir ? 'selected' : null)}} {{:helper.link('In', 'arrowreturn-1-w', {'direction' : 1}, data.pump_dir ? null : 'selected')}}
|
||||
{{:helper.link('Out', 'arrow-right', {'direction' : 1}, data.pump_dir ? 'selected' : null)}} {{:helper.link('In', 'arrow-left', {'direction' : 1}, data.pump_dir ? null : 'selected')}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
Tank Pressure:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:data.tankPressure}} kPa
|
||||
{{:data.helper.smoothRound(tankPressure)}} kPa
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
Tank Pressure:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:data.holdingTank.tankPressure}} kPa
|
||||
{{:helper.smoothRound(data.holdingTank.tankPressure)}} kPa
|
||||
</div>
|
||||
</div>
|
||||
{{else}}
|
||||
@@ -86,6 +86,6 @@
|
||||
Power Switch:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:helper.link('On', 'unlocked', {'power' : 1}, data.on ? 'selected' : null)}} {{:helper.link('Off', 'locked', {'power' : 1}, data.on ? null : 'selected')}}
|
||||
{{:helper.link('On', 'unlock', {'power' : 1}, data.on ? 'selected' : null)}} {{:helper.link('Off', 'lock', {'power' : 1}, data.on ? null : 'selected')}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{{if data.focus}}
|
||||
<div class="notice" style="height: 22px">
|
||||
{{:helper.link('Show List', 'cancel', { 'clear' : 1})}} Sensor selected: {{:data.focus.name}}
|
||||
{{:helper.link('Show List', 'ban', { 'clear' : 1})}} Sensor selected: {{:data.focus.name}}
|
||||
</div>
|
||||
{{if data.focus.error}}
|
||||
{{:data.focus.error}}
|
||||
@@ -64,11 +64,11 @@
|
||||
<td>{{:value.s_lighting}}
|
||||
<td>{{:value.s_environment}}
|
||||
{{if value.cell_status == "N"}}
|
||||
<td>{{:helper.link(value.cell_charge + '%', 'batt_disc', null,'disabled', 'width75btn')}}
|
||||
<td>{{:helper.link(value.cell_charge + '%', 'battery-empty', null,'disabled', 'width75btn')}}
|
||||
{{else value.cell_status == "C"}}
|
||||
<td>{{:helper.link(value.cell_charge + '%', 'batt_chrg', null,'disabled', 'width75btn')}}
|
||||
<td>{{:helper.link(value.cell_charge + '%', 'battery-half', null,'disabled', 'width75btn')}}
|
||||
{{else}}
|
||||
<td>{{:helper.link(value.cell_charge + '%', 'batt_full', null,'disabled', 'width75btn')}}
|
||||
<td>{{:helper.link(value.cell_charge + '%', 'battery-full', null,'disabled', 'width75btn')}}
|
||||
{{/if}}
|
||||
<td>{{:value.total_load}}
|
||||
{{empty}}
|
||||
|
||||
@@ -29,12 +29,12 @@
|
||||
<tr><td>
|
||||
Input: {{:value.input_val}} kW - {{:value.input_set ? "AUTO" : "OFF"}}
|
||||
<td>
|
||||
{{:helper.link('', 'power', { 'smes_in_toggle' : value.RCON_tag})}}
|
||||
{{:helper.link('', 'power-off', { 'smes_in_toggle' : value.RCON_tag})}}
|
||||
{{:helper.link('', 'pencil', { 'smes_in_set' : value.RCON_tag})}}
|
||||
<tr><td>
|
||||
Output: {{:value.output_val}} kW - {{:value.output_set ? "ONLINE" : "OFFLINE"}}
|
||||
<td>
|
||||
{{:helper.link('', 'power', { 'smes_out_toggle' : value.RCON_tag})}}
|
||||
{{:helper.link('', 'power-off', { 'smes_out_toggle' : value.RCON_tag})}}
|
||||
{{:helper.link('', 'pencil', { 'smes_out_set' : value.RCON_tag})}}
|
||||
|
||||
<tr><td>
|
||||
@@ -63,7 +63,7 @@
|
||||
<tr><td>
|
||||
{{:value.enabled ? "[<span class='good'>ENABLED</span>]" : "[<span class='bad'>DISABLED</span>]"}}
|
||||
<td>
|
||||
{{:helper.link('', 'power', {'toggle_breaker' : value.RCON_tag})}}
|
||||
{{:helper.link('', 'power-off', {'toggle_breaker' : value.RCON_tag})}}
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -29,7 +29,7 @@ Used In File(s): \code\game\machinery\requests_console.dm
|
||||
<tr><td><div class="itemLabel">There are no available departments to request assistance from.</div></td></tr>
|
||||
{{/for}}
|
||||
</table><br>
|
||||
<div class="item">{{:helper.link('Back', 'arrowreturnthick-1-w', { 'setScreen' : 0 })}}</div>
|
||||
<div class="item">{{:helper.link('Back', 'arrow-left', { 'setScreen' : 0 })}}</div>
|
||||
{{else data.screen == 2}}
|
||||
<div class="item"><h3>Request supplies from another department.</h3></div>
|
||||
<table class="block">
|
||||
@@ -45,7 +45,7 @@ Used In File(s): \code\game\machinery\requests_console.dm
|
||||
<tr><td><div class="itemLabel">There are no available departments to request supplies from.</div></td></tr>
|
||||
{{/for}}
|
||||
</table><br>
|
||||
<div class="item">{{:helper.link('Back', 'arrowreturnthick-1-w', { 'setScreen' : 0 })}}</div>
|
||||
<div class="item">{{:helper.link('Back', 'arrow-left', { 'setScreen' : 0 })}}</div>
|
||||
{{else data.screen == 3}}
|
||||
<div class="item"><h3>Relay info to another department.</h3></div>
|
||||
<table class="block">
|
||||
@@ -61,13 +61,13 @@ Used In File(s): \code\game\machinery\requests_console.dm
|
||||
<tr><td><div class="itemLabel">There are no available departments to relay information to.</div></td></tr>
|
||||
{{/for}}
|
||||
</table><br>
|
||||
<div class="item">{{:helper.link('Back', 'arrowreturnthick-1-w', { 'setScreen' : 0 })}}</div>
|
||||
<div class="item">{{:helper.link('Back', 'arrow-left', { 'setScreen' : 0 })}}</div>
|
||||
{{else data.screen == 4}}
|
||||
<div class="item"><b>Message sent successfully.</b></div>
|
||||
<div class="item">{{:helper.link('Continue', 'arrowthick-1-e', { 'setScreen' : 0 })}}</div>
|
||||
<div class="item">{{:helper.link('Continue', 'arrow-right', { 'setScreen' : 0 })}}</div>
|
||||
{{else data.screen == 5}}
|
||||
<div class="item"><b>An Error occured. Message not sent.</b></div>
|
||||
<div class="item">{{:helper.link('Continue', 'arrowthick-1-e', { 'setScreen' : 0 })}}</div>
|
||||
<div class="item">{{:helper.link('Continue', 'arrow-right', { 'setScreen' : 0 })}}</div>
|
||||
{{else data.screen == 6}}
|
||||
<div class="statusDisplay" style="overflow: auto;">
|
||||
{{for data.message_log}}
|
||||
@@ -76,7 +76,7 @@ Used In File(s): \code\game\machinery\requests_console.dm
|
||||
<div class="item">No messages have been recieved.</div>
|
||||
{{/for}}
|
||||
</div>
|
||||
<div class="item">{{:helper.link('Back', 'arrowreturnthick-1-w', { 'setScreen' : 0 })}}</div>
|
||||
<div class="item">{{:helper.link('Back', 'arrow-left', { 'setScreen' : 0 })}}</div>
|
||||
{{else data.screen == 7}}
|
||||
<div class="item"><h2>Message Authentication</h2></div><br>
|
||||
<div class="statusDisplay" style="overflow: auto;">
|
||||
@@ -85,8 +85,8 @@ Used In File(s): \code\game\machinery\requests_console.dm
|
||||
<div class="item"><b>Stamped by:</b> {{:data.msgStamped}}</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
{{:helper.link('Send Message', 'arrowthick-1-e', { 'department' : data.recipient })}}
|
||||
{{:helper.link('Back', 'arrowreturnthick-1-w', { 'setScreen' : 0 })}}
|
||||
{{:helper.link('Send Message', 'arrow-right', { 'department' : data.recipient })}}
|
||||
{{:helper.link('Back', 'arrow-left', { 'setScreen' : 0 })}}
|
||||
</div>
|
||||
{{else data.screen == 8}}
|
||||
<div class="item"><h2>Station wide announcement</h2></div>
|
||||
@@ -99,8 +99,8 @@ Used In File(s): \code\game\machinery\requests_console.dm
|
||||
{{/if}}
|
||||
<br>
|
||||
<div class="item">
|
||||
{{:helper.link('Announce', 'signal-diag', { 'sendAnnouncement' : 1 }, (data.announceAuth && data.message) ? null : 'disabled' )}}
|
||||
{{:helper.link('Back', 'arrowreturnthick-1-w', { 'setScreen' : 0 })}}
|
||||
{{:helper.link('Announce', 'signal', { 'sendAnnouncement' : 1 }, (data.announceAuth && data.message) ? null : 'disabled' )}}
|
||||
{{:helper.link('Back', 'arrow-left', { 'setScreen' : 0 })}}
|
||||
</div>
|
||||
{{else}}
|
||||
{{if data.newmessagepriority == 1}}
|
||||
@@ -108,15 +108,15 @@ Used In File(s): \code\game\machinery\requests_console.dm
|
||||
{{else data.newmessagepriority == 2}}
|
||||
<div class="item"><font color='red'><b>NEW PRIORITY MESSAGES</b></font></div>
|
||||
{{/if}}
|
||||
<div class="item">{{:helper.link('View Messages', data.newmessagepriority ? 'mail-closed' : 'mail-open', { 'setScreen' : 6 })}}</div>
|
||||
<div class="item">{{:helper.link('View Messages', data.newmessagepriority ? 'envelope' : 'envelope-open', { 'setScreen' : 6 })}}</div>
|
||||
<br>
|
||||
<div class="item">{{:helper.link('Request Assistance', 'gear', { 'setScreen' : 1 })}}</div>
|
||||
<div class="item">{{:helper.link('Request Supplies', 'gear', { 'setScreen' : 2 })}}</div>
|
||||
<div class="item">{{:helper.link('Relay Anonymous Information', 'gear', { 'setScreen' : 3})}}</div>
|
||||
<br>
|
||||
{{if data.announcementConsole}}
|
||||
<div class="item">{{:helper.link('Send Station-wide Announcement', 'signal-diag', { 'setScreen' : 8})}}</div>
|
||||
<div class="item">{{:helper.link('Send Station-wide Announcement', 'signal', { 'setScreen' : 8})}}</div>
|
||||
<br>
|
||||
{{/if}}
|
||||
<div class="item">{{:helper.link(data.silent ? 'Speaker OFF' : 'Speaker ON', data.silent ? 'volume-off' : 'volume-on', { 'toggleSilent' : 1})}}</div>
|
||||
<div class="item">{{:helper.link(data.silent ? 'Speaker OFF' : 'Speaker ON', data.silent ? 'volume-off' : 'volume-up', { 'toggleSilent' : 1})}}</div>
|
||||
{{/if}}
|
||||
@@ -5,11 +5,11 @@
|
||||
</div>
|
||||
<div class="itemContentFull">
|
||||
{{if data.safety}}
|
||||
{{:helper.link('ARM', 'unlocked', {'arm' : 1})}}
|
||||
{{:helper.link('DETONATE', 'radiation', {'nuke' : 1}, 'disabled')}}
|
||||
{{:helper.link('ARM', 'unlock', {'arm' : 1})}}
|
||||
{{:helper.link('DETONATE', 'exclamation-circle', {'nuke' : 1}, 'disabled')}}
|
||||
{{else}}
|
||||
{{:helper.link('DISARM', 'locked', {'arm' : 1})}}
|
||||
{{:helper.link('DETONATE', 'radiation', {'nuke' : 1}, null, 'redButton')}}
|
||||
{{:helper.link('DISARM', 'lock', {'arm' : 1})}}
|
||||
{{:helper.link('DETONATE', 'exclamation-circle', {'nuke' : 1}, null, 'redButton')}}
|
||||
{{/if}}
|
||||
</div>
|
||||
<div class="clearBoth"></div>
|
||||
@@ -63,7 +63,7 @@
|
||||
{{:value.cell_capacity}}
|
||||
</span>
|
||||
{{:helper.displayBar(value.cell_percentage, 0, 100, (value.cell_percentage >= 50) ? 'good' : (value.cell_percentage >= 25) ? 'average' : 'bad')}}
|
||||
<b> {{:value.cell_percentage}} %</b>
|
||||
<b> {{:helper.smoothRound(value.cell_percentage)}} %</b>
|
||||
{{else}}
|
||||
<b><i>Not Installed</i></b>
|
||||
{{:helper.displayBar(100, 0, 100, 'bad')}}
|
||||
@@ -71,11 +71,11 @@
|
||||
{{/if}}
|
||||
<h3>Actions</h3>
|
||||
{{if value.status == "Operational"}}
|
||||
{{:helper.link('Lockdown', 'locked', {'lockdown' : value.name})}}
|
||||
{{:helper.link('Lockdown', 'lock', {'lockdown' : value.name})}}
|
||||
{{else}}
|
||||
{{:helper.link('Unlock', 'unlocked', {'lockdown' : value.name})}}
|
||||
{{:helper.link('Unlock', 'unlock', {'lockdown' : value.name})}}
|
||||
{{/if}}
|
||||
{{:helper.link('Self-Destruct', 'radiation', {'detonate' : value.name}, null, 'redButton')}}
|
||||
{{:helper.link('Self-Destruct', 'exclamation-circle', {'detonate' : value.name}, null, 'redButton')}}
|
||||
{{if value.hackable}}
|
||||
{{:helper.link('Hack', 'calculator', {'hack' : value.name}, null, 'redButton')}}
|
||||
{{/if}}
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Title: Security Camera Console (Main content)
|
||||
Used In File(s): \code\game\machinery\computer\camera.dm
|
||||
-->
|
||||
{{:helper.link('Show Map', 'pin-s', {'showMap' : 1})}}
|
||||
{{:helper.link('Show Map', 'thumb-tack', {'showMap' : 1})}}
|
||||
{{:helper.link('Reset', 'refresh', {'reset' : 1})}}
|
||||
<div style="float:left;">
|
||||
<div class='item'>
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
Title: Security Camera Console (Map header)
|
||||
Used In File(s): \code\game\machinery\computer\camera.dm
|
||||
-->
|
||||
{{:helper.link('Show Camera List', 'script', {'showMap' : 0})}}
|
||||
{{:helper.link('Show Camera List', 'file-text', {'showMap' : 0})}}
|
||||
{{:helper.link('Reset', 'refresh', {'reset' : 1})}}
|
||||
<div style="float:left;">
|
||||
<div class='item'>
|
||||
|
||||
@@ -58,9 +58,9 @@
|
||||
<div class="item" style="padding-top: 10px">
|
||||
<div class="item">
|
||||
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
||||
{{:helper.link('Launch Shuttle', 'arrowthickstop-1-e', {'move' : '1'}, data.can_launch? null : 'disabled' , null)}}
|
||||
{{:helper.link('Cancel Launch', 'cancel', {'cancel' : '1'}, data.can_cancel ? null : 'disabled' , null)}}
|
||||
{{:helper.link('Force Launch', 'alert', {'force' : '1'}, data.can_force? null : 'disabled' , data.can_force ? 'redButton' : null)}}
|
||||
{{:helper.link('Launch Shuttle', 'arrow-circle-right', {'move' : '1'}, data.can_launch? null : 'disabled' , null)}}
|
||||
{{:helper.link('Cancel Launch', 'ban', {'cancel' : '1'}, data.can_cancel ? null : 'disabled' , null)}}
|
||||
{{:helper.link('Force Launch', 'exclamation-triangle', {'force' : '1'}, data.can_force? null : 'disabled' , data.can_force ? 'redButton' : null)}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -58,16 +58,16 @@
|
||||
</div>
|
||||
<span class="average">{{:data.destination_name}}</span>
|
||||
<div class="item">
|
||||
{{:helper.link('Choose Destination', 'arrowreturn-1-s', {'pick' : '1'}, data.can_pick ? null : 'disabled' , null)}}
|
||||
{{:helper.link('Choose Destination', 'arrow-down', {'pick' : '1'}, data.can_pick ? null : 'disabled' , null)}}
|
||||
</div>
|
||||
</div>
|
||||
<h3>Shuttle Control</h3>
|
||||
<div class="item" style="padding-top: 10px">
|
||||
<div class="item">
|
||||
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
||||
{{:helper.link('Launch Shuttle', 'arrowthickstop-1-e', {'move' : '1'}, data.can_launch ? null : 'disabled' , null)}}
|
||||
{{:helper.link('Cancel Launch', 'cancel', {'cancel' : '1'}, data.can_cancel ? null : 'disabled' , null)}}
|
||||
{{:helper.link('Force Launch', 'alert', {'force' : '1'}, data.can_force ? null : 'disabled' , data.can_force ? 'redButton' : null)}}
|
||||
{{:helper.link('Launch Shuttle', 'arrow-circle-right', {'move' : '1'}, data.can_launch ? null : 'disabled' , null)}}
|
||||
{{:helper.link('Cancel Launch', 'ban', {'cancel' : '1'}, data.can_cancel ? null : 'disabled' , null)}}
|
||||
{{:helper.link('Force Launch', 'exclamation-triangle', {'force' : '1'}, data.can_force ? null : 'disabled' , data.can_force ? 'redButton' : null)}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -6,7 +6,7 @@
|
||||
<div class="itemContent">
|
||||
{{:helper.displayBar(data.chamber_pressure, 0, 200, (data.chamber_pressure < 80) || (data.chamber_pressure > 120) ? 'bad' : (data.chamber_pressure < 95) || (data.chamber_pressure > 110) ? 'average' : 'good')}}
|
||||
<div class="statusValue">
|
||||
{{:data.chamber_pressure}} kPa
|
||||
{{:helper.smoothRound(data.chamber_pressure)}} kPa
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -14,23 +14,23 @@
|
||||
<div class="item" style="padding-top: 10px">
|
||||
<div class="item">
|
||||
<div class="itemContent" style="width: 100%">
|
||||
{{:helper.link('Cycle to Exterior', 'arrowthickstop-1-w', {'command' : 'cycle_ext'}, data.processing ? 'disabled' : null)}}
|
||||
{{:helper.link('Cycle to Interior', 'arrowthickstop-1-e', {'command' : 'cycle_int'}, data.processing ? 'disabled' : null)}}
|
||||
{{:helper.link('Cycle to Exterior', 'arrow-circle-o-left', {'command' : 'cycle_ext'}, data.processing ? 'disabled' : null)}}
|
||||
{{:helper.link('Cycle to Interior', 'arrow-circle-right', {'command' : 'cycle_int'}, data.processing ? 'disabled' : null)}}
|
||||
</div>
|
||||
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
||||
{{if data.interior_status.state == "open"}}
|
||||
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_ext'}, null, 'redButton')}}
|
||||
{{:helper.link('Force exterior door', 'exclamation-triangle', {'command' : 'force_ext'}, null, 'redButton')}}
|
||||
{{else}}
|
||||
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_ext'}, null, data.processing ? 'yellowButton' : null)}}
|
||||
{{:helper.link('Force exterior door', 'exclamation-triangle', {'command' : 'force_ext'}, null, data.processing ? 'yellowButton' : null)}}
|
||||
{{/if}}
|
||||
{{if data.exterior_status.state == "open"}}
|
||||
{{:helper.link('Force interior door', 'alert', {'command' : 'force_int'}, null, 'redButton')}}
|
||||
{{:helper.link('Force interior door', 'exclamation-triangle', {'command' : 'force_int'}, null, 'redButton')}}
|
||||
{{else}}
|
||||
{{:helper.link('Force interior door', 'alert', {'command' : 'force_int'}, null, data.processing ? 'yellowButton' : null)}}
|
||||
{{:helper.link('Force interior door', 'exclamation-triangle', {'command' : 'force_int'}, null, data.processing ? 'yellowButton' : null)}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="item" style="padding-top: 10px; width: 100%">
|
||||
{{:helper.link('Abort', 'cancel', {'command' : 'abort'}, data.processing ? null : 'disabled', data.processing ? 'redButton' : null)}}
|
||||
{{:helper.link('Abort', 'ban', {'command' : 'abort'}, data.processing ? null : 'disabled', data.processing ? 'redButton' : null)}}
|
||||
</div>
|
||||
</div>
|
||||
@@ -88,11 +88,11 @@
|
||||
<div class="item">
|
||||
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
||||
{{if data.docking_status == "docked"}}
|
||||
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_door'}, data.override_enabled ? null : 'disabled', null)}}
|
||||
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redButton' : null)}}
|
||||
{{:helper.link('Force exterior door', 'exclamation-triangle', {'command' : 'force_door'}, data.override_enabled ? null : 'disabled', null)}}
|
||||
{{:helper.link('Override', 'exclamation-triangle', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redButton' : null)}}
|
||||
{{else}}
|
||||
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_door'}, data.override_enabled ? null : 'disabled', data.override_enabled ? 'redButton' : null)}}
|
||||
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redButton' : 'yellowButton')}}
|
||||
{{:helper.link('Force exterior door', 'exclamation-triangle', {'command' : 'force_door'}, data.override_enabled ? null : 'disabled', data.override_enabled ? 'redButton' : null)}}
|
||||
{{:helper.link('Override', 'exclamation-triangle', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redButton' : 'yellowButton')}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -88,13 +88,13 @@
|
||||
<div class="item">
|
||||
<div class="itemContent" style="padding-top: 2px; width: 100%">
|
||||
{{if data.docking_status == "docked"}}
|
||||
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_door'}, data.override_enabled ? null : 'disabled', null)}}
|
||||
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redButton' : null)}}
|
||||
{{:helper.link('MANUAL EJECT', 'alert', {'command' : 'toggle_override'}, 'disabled', null)}}
|
||||
{{:helper.link('Force exterior door', 'exclamation-triangle', {'command' : 'force_door'}, data.override_enabled ? null : 'disabled', null)}}
|
||||
{{:helper.link('Override', 'exclamation-triangle', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redButton' : null)}}
|
||||
{{:helper.link('MANUAL EJECT', 'exclamation-triangle', {'command' : 'toggle_override'}, 'disabled', null)}}
|
||||
{{else}}
|
||||
{{:helper.link('Force exterior door', 'alert', {'command' : 'force_door'}, data.override_enabled ? null : 'disabled', data.override_enabled ? 'redButton' : null)}}
|
||||
{{:helper.link('Override', 'alert', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redButton' : 'yellowButton')}}
|
||||
{{:helper.link('MANUAL EJECT', 'alert', {'command' : 'toggle_override'}, data.can_force ? null : 'disabled', data.can_force ? 'redButton' : null)}}
|
||||
{{:helper.link('Force exterior door', 'exclamation-triangle', {'command' : 'force_door'}, data.override_enabled ? null : 'disabled', data.override_enabled ? 'redButton' : null)}}
|
||||
{{:helper.link('Override', 'exclamation-triangle', {'command' : 'toggle_override'}, null, data.override_enabled ? 'redButton' : 'yellowButton')}}
|
||||
{{:helper.link('MANUAL EJECT', 'exclamation-triangle', {'command' : 'toggle_override'}, data.can_force ? null : 'disabled', data.can_force ? 'redButton' : null)}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
Occupant status:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
Health: {{:data.health}}% ({{:data.stat}}).
|
||||
Health: {{:helper.smoothRound(data.health)}}% ({{:data.stat}}).
|
||||
</div>
|
||||
<div class="itemLabel">
|
||||
Pulse:
|
||||
@@ -28,25 +28,25 @@
|
||||
Brute damage:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:helper.displayBar(data.brute, 0, 100, (data.brute <= 25) ? 'good' : (data.brute <= 50) ? 'average' : 'bad')}}{{:helper.round(data.brute)}}
|
||||
{{:helper.displayBar(data.brute, 0, 100, (data.brute <= 25) ? 'good' : (data.brute <= 50) ? 'average' : 'bad')}}{{:helper.smoothRound(data.brute)}}
|
||||
</div>
|
||||
<div class="itemLabel">
|
||||
Burn severity:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:helper.displayBar(data.burn, 0, 100, (data.burn <= 25) ? 'good' : (data.burn <= 50) ? 'average' : 'bad')}}{{:helper.round(data.burn)}}
|
||||
{{:helper.displayBar(data.burn, 0, 100, (data.burn <= 25) ? 'good' : (data.burn <= 50) ? 'average' : 'bad')}}{{:helper.smoothRound(data.burn)}}
|
||||
</div>
|
||||
<div class="itemLabel">
|
||||
Respiratory damage:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:helper.displayBar(data.oxy, 0, 100, (data.oxy <= 25) ? 'good' : (data.oxy <= 50) ? 'average' : 'bad')}}{{:helper.round(data.oxy)}}
|
||||
{{:helper.displayBar(data.oxy, 0, 100, (data.oxy <= 25) ? 'good' : (data.oxy <= 50) ? 'average' : 'bad')}}{{:helper.smoothRound(data.oxy)}}
|
||||
</div>
|
||||
<div class="itemLabel">
|
||||
Toxin content:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:helper.displayBar(data.tox, 0, 100, (data.tox <= 25) ? 'good' : (data.tox <= 50) ? 'average' : 'bad')}}{{:helper.round(data.tox)}}
|
||||
{{:helper.displayBar(data.tox, 0, 100, (data.tox <= 25) ? 'good' : (data.tox <= 50) ? 'average' : 'bad')}}{{:helper.smoothRound(data.tox)}}
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:helper.link(data.filtering ? "Dialysis active" : "Dialysis inactive", null, {'filter' : !data.filtering})}}
|
||||
@@ -77,7 +77,7 @@
|
||||
Beaker:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:data.beaker}} units of free space remaining.
|
||||
{{:helper.smoothRound(data.beaker)}} units of free space remaining.
|
||||
{{:helper.link("Eject", null, {'beaker' : 0})}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -15,18 +15,18 @@
|
||||
{{for data.contents}}
|
||||
<div class='item'>
|
||||
<span class='highlight'>{{:value.display_name}} ({{:value.quantity}} available)</span>
|
||||
<div style="float: left;">Vend: </div> {{:helper.link('x1', 'circle-arrow-s', { "vend" : value.vend, "amount" : 1 }, null, 'statusValue')}}
|
||||
<div style="float: left;">Vend: </div> {{:helper.link('x1', 'arrow-circle-down', { "vend" : value.vend, "amount" : 1 }, null, 'statusValue')}}
|
||||
{{if value.quantity >= 5}}
|
||||
{{:helper.link('x5', 'circle-arrow-s', { "vend" : value.vend, "amount" : 5 }, null, 'statusValue')}}
|
||||
{{:helper.link('x5', 'arrow-circle-down', { "vend" : value.vend, "amount" : 5 }, null, 'statusValue')}}
|
||||
{{/if}}
|
||||
{{if value.quantity >= 10}}
|
||||
{{:helper.link('x10', 'circle-arrow-s', { "vend" : value.vend, "amount" : 10 }, null, 'statusValue')}}
|
||||
{{:helper.link('x10', 'arrow-circle-down', { "vend" : value.vend, "amount" : 10 }, null, 'statusValue')}}
|
||||
{{/if}}
|
||||
{{if value.quantity >= 25}}
|
||||
{{:helper.link('x25', 'circle-arrow-s', { "vend" : value.vend, "amount" : 25 }, null, 'statusValue')}}
|
||||
{{:helper.link('x25', 'arrow-circle-down', { "vend" : value.vend, "amount" : 25 }, null, 'statusValue')}}
|
||||
{{/if}}
|
||||
{{if value.quantity > 1}}
|
||||
{{:helper.link('All', 'circle-arrow-s', { "vend" : value.vend, "amount" : value.quantity }, null, 'statusValue')}}
|
||||
{{:helper.link('All', 'arrow-circle-down', { "vend" : value.vend, "amount" : value.quantity }, null, 'statusValue')}}
|
||||
{{/if}}
|
||||
</div>
|
||||
{{/for}}
|
||||
|
||||
@@ -5,10 +5,10 @@
|
||||
<div class="itemContent">
|
||||
{{:helper.displayBar(data.storedCapacity, 0, 100, data.charging ? 'good' : 'average')}}
|
||||
<div class="statusValue">
|
||||
{{:helper.round(data.storedCapacity)}}%
|
||||
{{:helper.smoothRound(data.storedCapacity)}}%
|
||||
</div><br>
|
||||
<div class="statusValue">
|
||||
{{:data.storedCapacityAbs}} kWh / {{:data.storedCapacityMax}} kWh
|
||||
{{:helper.smoothRound(data.storedCapacityAbs)}} kWh / {{:data.storedCapacityMax}} kWh
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -53,7 +53,7 @@
|
||||
<div class="itemContent">
|
||||
{{:helper.displayBar(data.chargeLoad, 0, data.chargeMax, (data.chargeLoad < data.chargeLevel) ? 'good' : 'average')}}
|
||||
<div class="statusValue">
|
||||
{{:data.chargeLoad}} kW
|
||||
{{:helper.smoothRound(data.chargeLoad)}} kW
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -64,7 +64,7 @@
|
||||
Output Status:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:helper.link('Online', 'power', {'online' : 1}, data.outputOnline ? 'selected' : null)}}{{:helper.link('Offline', 'close', {'online' : 1}, data.outputOnline ? null : 'selected')}}
|
||||
{{:helper.link('Online', 'power-off', {'online' : 1}, data.outputOnline ? 'selected' : null)}}{{:helper.link('Offline', 'close', {'online' : 1}, data.outputOnline ? null : 'selected')}}
|
||||
|
||||
{{if data.outputting == 2}}
|
||||
[<span class='good'>Outputting</span>]
|
||||
@@ -98,7 +98,7 @@
|
||||
<div class="itemContent">
|
||||
{{:helper.displayBar(data.outputLoad, 0, data.outputMax, (data.outputLoad < data.outputLevel) ? 'good' : 'average')}}
|
||||
<div class="statusValue">
|
||||
{{:data.outputLoad}} kW
|
||||
{{:helper.smoothRound(data.outputLoad)}} kW
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -7,19 +7,19 @@
|
||||
{{else}}
|
||||
<h3>Crystal Integrity</h3>
|
||||
{{:helper.displayBar(data.integrity_percentage, 0, 100, (data.integrity_percentage >= 90) ? 'good' : (data.integrity_percentage >= 25) ? 'average' : 'bad')}}
|
||||
<b>{{:data.integrity_percentage}} %</b>
|
||||
<b>{{:helper.smoothRound(data.integrity_percentage)}} %</b>
|
||||
<h3>Environment</h3>
|
||||
<span class="itemLabel">
|
||||
Temperature:
|
||||
</span>
|
||||
<span class="itemContent">
|
||||
{{:helper.displayBar(data.ambient_temp, 0, 10000, (data.ambient_temp >= 5000) ? 'bad' : (data.ambient_temp >= 4000) ? 'average' : 'good')}}
|
||||
{{:data.ambient_temp}} K
|
||||
{{:helper.smoothRound(data.ambient_temp)}} K
|
||||
</span>
|
||||
<span class="itemLabel">
|
||||
Pressure:
|
||||
</span>
|
||||
<span class="itemContent">
|
||||
{{:data.ambient_pressure}} kPa
|
||||
{{:helper.smoothRound(data.ambient_pressure)}} kPa
|
||||
</span>
|
||||
{{/if}}
|
||||
@@ -11,7 +11,7 @@
|
||||
<div class="itemContent">
|
||||
{{:helper.displayBar(data.tankPressure, 0, 1013, (data.tankPressure > 200) ? 'good' : ((data.tankPressure > 100) ? 'average' : 'bad'))}}
|
||||
<div class="statusValue">
|
||||
{{:data.tankPressure}} kPa
|
||||
{{:helper.smoothRound(data.tankPressure)}} kPa
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -41,7 +41,7 @@
|
||||
Mask Release Valve:
|
||||
</div>
|
||||
<div class="itemContent">
|
||||
{{:helper.link('Open', 'unlocked', {'stat' : 1}, (!data.maskConnected) ? 'disabled' : (data.valveOpen ? 'selected' : null))}}{{:helper.link('Close', 'locked', {'stat' : 1}, data.valveOpen ? null : 'selected')}}
|
||||
{{:helper.link('Open', 'unlock', {'stat' : 1}, (!data.maskConnected) ? 'disabled' : (data.valveOpen ? 'selected' : null))}}{{:helper.link('Close', 'lock', {'stat' : 1}, data.valveOpen ? null : 'selected')}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user