mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-25 22:12:58 +01:00
Suit Sensors Changes (#2121)
* Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Add files via upload * Delete Thumbs.db * Update crew.dm * Update layout_default.tmpl * Delete Aurora-3.png * Delete Aurora-4.png * Delete Aurora-6.png * Add files via upload * Add files via upload
This commit is contained in:
@@ -43,6 +43,8 @@
|
||||
#define isslime(A) istype(A, /mob/living/carbon/slime)
|
||||
|
||||
#define to_chat(target, message) target << message
|
||||
#define MAP_IMAGE_PATH "nano/images/"
|
||||
#define map_image_file_name(z_level) "Aurora-[z_level].png"
|
||||
#define to_world(message) world << message
|
||||
#define sound_to(target, sound) target << sound
|
||||
#define to_file(file_entry, file_content) file_entry << file_content
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
var/global/datum/repository/crew/crew_repository = new()
|
||||
var/list/map_levels = list(3,4,6)
|
||||
|
||||
/datum/repository/crew
|
||||
var/list/cache_data
|
||||
@@ -7,16 +8,15 @@ var/global/datum/repository/crew/crew_repository = new()
|
||||
cache_data = list()
|
||||
..()
|
||||
|
||||
/datum/repository/crew/proc/health_data(var/turf/T)
|
||||
/datum/repository/crew/proc/health_data(var/z_level)
|
||||
var/list/crewmembers = list()
|
||||
if(!T)
|
||||
if(!z_level)
|
||||
return crewmembers
|
||||
|
||||
var/z_level = "[T.z]"
|
||||
var/datum/cache_entry/cache_entry = cache_data[z_level]
|
||||
var/datum/cache_entry/cache_entry = cache_data[num2text(z_level)]
|
||||
if(!cache_entry)
|
||||
cache_entry = new/datum/cache_entry
|
||||
cache_data[z_level] = cache_entry
|
||||
cache_data[num2text(z_level)] = cache_entry
|
||||
|
||||
if(world.time < cache_entry.timestamp)
|
||||
return cache_entry.data
|
||||
@@ -24,13 +24,13 @@ var/global/datum/repository/crew/crew_repository = new()
|
||||
var/tracked = scan()
|
||||
for(var/obj/item/clothing/under/C in tracked)
|
||||
var/turf/pos = get_turf(C)
|
||||
if((C) && (C.has_sensor) && (pos) && (T && pos.z == T.z) && (C.sensor_mode != SUIT_SENSOR_OFF))
|
||||
if((C) && (C.has_sensor) && (pos) && (pos.z == z_level) && (C.sensor_mode != SUIT_SENSOR_OFF))
|
||||
if(istype(C.loc, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = C.loc
|
||||
if(H.w_uniform != C)
|
||||
continue
|
||||
|
||||
var/list/crewmemberData = list("dead"=0, "oxy"=-1, "tox"=-1, "fire"=-1, "brute"=-1, "area"="", "x"=-1, "y"=-1, "ref" = "\ref[H]")
|
||||
var/list/crewmemberData = list("dead"=0, "oxy"=-1, "tox"=-1, "fire"=-1, "brute"=-1, "area"="", "x"=-1, "y"=-1, "z"=-1, "level"="", "ref" = "\ref[H]")
|
||||
|
||||
crewmemberData["sensor_type"] = C.sensor_mode
|
||||
crewmemberData["name"] = H.get_authentification_name(if_no_id="Unknown")
|
||||
@@ -51,6 +51,7 @@ var/global/datum/repository/crew/crew_repository = new()
|
||||
crewmemberData["area"] = sanitize(A.name)
|
||||
crewmemberData["x"] = pos.x
|
||||
crewmemberData["y"] = pos.y
|
||||
crewmemberData["z"] = pos.z
|
||||
|
||||
crewmembers[++crewmembers.len] = crewmemberData
|
||||
|
||||
|
||||
@@ -639,3 +639,31 @@ var/message_delay = 0 // To make sure restarting the recentmessages list is kept
|
||||
|
||||
return signal
|
||||
|
||||
/proc/telecomms_process_active()
|
||||
|
||||
// First, we want to generate a new radio signal
|
||||
var/datum/signal/signal = new
|
||||
signal.transmission_method = 2 // 2 would be a subspace transmission.
|
||||
|
||||
// --- Finally, tag the actual signal with the appropriate values ---
|
||||
signal.data = list(
|
||||
"slow" = 0, // how much to sleep() before broadcasting - simulates net lag
|
||||
"message" = "TEST",
|
||||
"compression" = rand(45, 50), // If the signal is compressed, compress our message too.
|
||||
"traffic" = 0, // dictates the total traffic sum that the signal went through
|
||||
"type" = 4, // determines what type of radio input it is: test broadcast
|
||||
"reject" = 0,
|
||||
"done" = 0,
|
||||
"level" = 5 // The level it is being broadcasted at.
|
||||
)
|
||||
signal.frequency = PUB_FREQ// Common channel
|
||||
|
||||
//#### Sending the signal to all subspace receivers ####//
|
||||
for(var/obj/machinery/telecomms/receiver/R in telecomms_list)
|
||||
R.receive_signal(signal)
|
||||
|
||||
//world<< "Done: [signal.data["done"]]"
|
||||
|
||||
return signal
|
||||
|
||||
|
||||
|
||||
@@ -3,10 +3,7 @@
|
||||
|
||||
/datum/nano_module/crew_monitor/Topic(href, href_list)
|
||||
if(..()) return 1
|
||||
var/turf/T = get_turf(nano_host()) // TODO: Allow setting any config.contact_levels from the interface.
|
||||
if (!T || !(T.z in config.player_levels))
|
||||
usr << "<span class='warning'>Unable to establish a connection</span>: You're too far away from the station!"
|
||||
return 0
|
||||
|
||||
if(href_list["track"])
|
||||
if(isAI(usr))
|
||||
var/mob/living/silicon/ai/AI = usr
|
||||
@@ -17,15 +14,20 @@
|
||||
|
||||
/datum/nano_module/crew_monitor/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/datum/topic_state/state = default_state)
|
||||
var/list/data = host.initial_data()
|
||||
var/turf/T = get_turf(nano_host())
|
||||
|
||||
data["isAI"] = isAI(user)
|
||||
data["crewmembers"] = crew_repository.health_data(T)
|
||||
// This checks if TCOMS is online using the test proc. If it isn't, the suit sensor data isn't loaded.
|
||||
var/datum/signal/signal
|
||||
signal = telecomms_process_active()
|
||||
if(signal.data["done"] == 1)
|
||||
data["isAI"] = isAI(user)
|
||||
data["crewmembers"] = list()
|
||||
for(var/z_level in map_levels)
|
||||
data["crewmembers"] += crew_repository.health_data(z_level)
|
||||
|
||||
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "crew_monitor.tmpl", "Crew Monitoring Computer", 900, 800, state = state)
|
||||
|
||||
// adding a template with the key "mapContent" enables the map ui functionality
|
||||
ui.add_template("mapContent", "crew_monitor_map_content.tmpl")
|
||||
// adding a template with the key "mapHeader" replaces the map header content
|
||||
|
||||
@@ -74,7 +74,7 @@
|
||||
world.log << "NanoMapGen: <B>[count] tiles done</B>"
|
||||
sleep(1)
|
||||
|
||||
var/mapFilename = "nanomap_z[currentZ]-new.png"
|
||||
var/mapFilename = "new_Aurora[currentZ]"
|
||||
|
||||
world.log << "NanoMapGen: <B>sending [mapFilename] to client</B>"
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ nanoui is used to open and update nano browser uis
|
||||
// show the map ui, this is used by the default layout
|
||||
var/show_map = 0
|
||||
// the map z level to display
|
||||
var/map_z_level = 1
|
||||
var/map_z_level = 3
|
||||
// initial data, containing the full data structure, must be sent to the ui (the data structure cannot be extended later on)
|
||||
var/list/initial_data[0]
|
||||
// set to 1 to update the ui automatically every master_controller tick
|
||||
@@ -185,7 +185,9 @@ nanoui is used to open and update nano browser uis
|
||||
"autoUpdateLayout" = auto_update_layout,
|
||||
"autoUpdateContent" = auto_update_content,
|
||||
"showMap" = show_map,
|
||||
"mapName" = "Aurora",
|
||||
"mapZLevel" = map_z_level,
|
||||
"mapZLevels" = map_levels,
|
||||
"user" = list("name" = user.name)
|
||||
)
|
||||
return config_data
|
||||
@@ -488,8 +490,12 @@ nanoui is used to open and update nano browser uis
|
||||
map_update = 1
|
||||
|
||||
if(href_list["mapZLevel"])
|
||||
set_map_z_level(text2num(href_list["mapZLevel"]))
|
||||
map_update = 1
|
||||
var/map_z = (text2num(href_list["mapZLevel"]))
|
||||
if(map_z in map_levels)
|
||||
set_map_z_level(map_z)
|
||||
map_update = 1
|
||||
else
|
||||
return
|
||||
|
||||
if ((src_object && src_object.Topic(href, href_list, state)) || map_update)
|
||||
nanomanager.update_uis(src_object) // update all UIs attached to src_object
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 63 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 89 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 80 KiB |
@@ -87,8 +87,8 @@ NanoBaseCallbacks = function ()
|
||||
marginTop: '-' + Math.floor(uiMapHeight / 2) + 'px'
|
||||
});
|
||||
});
|
||||
|
||||
$('#uiMapImage').attr('src', 'nanomap_z' + updateData['config']['mapZLevel'] + '.png');
|
||||
|
||||
$('#uiMapImage').attr('src', updateData['config']['mapName'] + '-' + updateData['config']['mapZLevel'] + '.png');
|
||||
|
||||
return updateData;
|
||||
}
|
||||
|
||||
@@ -1,30 +1,32 @@
|
||||
<!--
|
||||
Title: Crew Monitoring Console (Main content)
|
||||
Used In File(s): \code\game\machinery\computer\crew.dm
|
||||
-->
|
||||
<style type="text/css">
|
||||
table.wideTable {
|
||||
width:100%;
|
||||
}
|
||||
|
||||
td.living {
|
||||
width:180px;
|
||||
}
|
||||
|
||||
td.tracking {
|
||||
width:40px;
|
||||
}
|
||||
</style>
|
||||
|
||||
{{:helper.link('Show Tracker Map', 'pin-s', {'showMap' : 1})}}
|
||||
<table class='wideTable'><tbody>
|
||||
{{for data.crewmembers}}
|
||||
{{if value.sensor_type == 1}}
|
||||
<tr><td>{{:value.name}} ({{:value.assignment}})</td><td class='living'>{{:value.dead ? "<span class='bad'>Deceased</span>" : "<span class='good'>Living</span>"}}</td><td><span class="neutral">Not Available</span></td>{{if data.isAI}}<td class='tracking'>{{:helper.link('Track', null, {}, 'disabled')}}</td>{{/if}}</tr>
|
||||
{{else value.sensor_type == 2}}
|
||||
<tr><td>{{:value.name}} ({{:value.assignment}})</td><td class='living'>{{:value.dead ? "<span class='bad'>Deceased</span>" : "<span class='good'>Living</span>"}} (<span class="oxyloss">{{:value.oxy}}</span>/<span class="toxin">{{:value.tox}}</span>/<span class="burn">{{:value.fire}}</span>/<span class="brute">{{:value.brute}}</span>)</td><td><span class="neutral">Not Available</td></td>{{if data.isAI}}<td class='tracking'>{{:helper.link('Track', null, {}, 'disabled')}}</td>{{/if}}</tr>
|
||||
{{else value.sensor_type == 3}}
|
||||
<tr><td>{{:value.name}} ({{:value.assignment}})</td><td class='living'>{{:value.dead ? "<span class='bad'>Deceased</span>" : "<span class='good'>Living</span>"}} (<span class="oxyloss">{{:value.oxy}}</span>/<span class="toxin">{{:value.tox}}</span>/<span class="burn">{{:value.fire}}</span>/<span class="brute">{{:value.brute}}</span>)</td><td>{{:value.area}}({{:value.x}}, {{:value.y}})</td>{{if data.isAI}}<td class='tracking'>{{:helper.link('Track', null, {'track' : value.ref})}}</td>{{/if}}</tr>
|
||||
{{/if}}
|
||||
{{/for}}
|
||||
</tbody></table>
|
||||
<!--
|
||||
Title: Crew Monitoring Console (Main content)
|
||||
Used In File(s): \code\game\machinery\computer\crew.dm
|
||||
-->
|
||||
<style type="text/css">
|
||||
table.wideTable {
|
||||
width:100%;
|
||||
}
|
||||
|
||||
td.living {
|
||||
width:180px;
|
||||
}
|
||||
|
||||
td.tracking {
|
||||
width:40px;
|
||||
}
|
||||
</style>
|
||||
|
||||
{{:helper.link('Show Tracker Map', 'pin-s', {'showMap' : 1})}}
|
||||
<table class='wideTable'><tbody>
|
||||
{{for data.crewmembers}}
|
||||
{{if value.sensor_type == 1}}
|
||||
<tr><td>{{:value.name}} ({{:value.assignment}})</td><td class='living'>{{:value.dead ? "<span class='bad'>Deceased</span>" : "<span class='good'>Living</span>"}}</td><td><span class="neutral">Not Available</span></td>{{if data.isAI}}<td class='tracking'>{{:helper.link('Track', null, {}, 'disabled')}}</td>{{/if}}</tr>
|
||||
{{else value.sensor_type == 2}}
|
||||
<tr><td>{{:value.name}} ({{:value.assignment}})</td><td class='living'>{{:value.dead ? "<span class='bad'>Deceased</span>" : "<span class='good'>Living</span>"}} (<span class="oxyloss">{{:value.oxy}}</span>/<span class="toxin">{{:value.tox}}</span>/<span class="burn">{{:value.fire}}</span>/<span class="brute">{{:value.brute}}</span>)</td><td><span class="neutral">Not Available</td></td>{{if data.isAI}}<td class='tracking'>{{:helper.link('Track', null, {}, 'disabled')}}</td>{{/if}}</tr>
|
||||
{{else value.sensor_type == 3}}
|
||||
<tr><td>{{:value.name}} ({{:value.assignment}})</td><td class='living'>{{:value.dead ? "<span class='bad'>Deceased</span>" : "<span class='good'>Living</span>"}} (<span class="oxyloss">{{:value.oxy}}</span>/<span class="toxin">{{:value.tox}}</span>/<span class="burn">{{:value.fire}}</span>/<span class="brute">{{:value.brute}}</span>)</td><td>{{:value.area}}({{:value.x}}, {{:value.y}}, {{:value.z}})</td>{{if data.isAI}}<td class='tracking'>{{:helper.link('Track', null, {'track' : value.ref})}}</td>{{/if}}</tr>
|
||||
{{/if}}
|
||||
{{empty}}
|
||||
"<span class = 'bad'> Unable to establish a connection to telecommunications!</span>"
|
||||
{{/for}}
|
||||
</tbody></table>
|
||||
@@ -3,6 +3,13 @@ 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('Hide Map', 'close', {'showMap' : 0})}}
|
||||
<div style="float: right; width: 240px;">
|
||||
<span style="float: left;">Z Level: </span>
|
||||
{{for config.mapZLevels :zValue:zIndex}}
|
||||
{{:helper.link(zValue, 'close', {'mapZLevel' : zValue}, null, config.mapZLevel == zValue ? 'selected' : null)}}
|
||||
{{/for}}
|
||||
</div>
|
||||
<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>
|
||||
|
||||
@@ -39,6 +39,13 @@
|
||||
<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;">Z Level: </span>
|
||||
{{for config.mapZLevels :zValue:zIndex}}
|
||||
{{:helper.link(zValue, 'close', {'mapZLevel' : zValue}, null, config.mapZLevel == zValue ? 'selected' : null)}}
|
||||
{{/for}}
|
||||
</div>
|
||||
|
||||
<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>
|
||||
@@ -50,7 +57,7 @@
|
||||
</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" />
|
||||
<img id="uiMapImage" src="{{:config.mapName}}-{{: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 -->
|
||||
@@ -64,4 +71,4 @@
|
||||
</div>
|
||||
<div id='uiContent' unselectable="on">
|
||||
<div id='uiLoadingNotice'>Initiating...</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user