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:
Ron
2017-04-23 18:25:39 -04:00
committed by LordFowl
parent 6bb907c672
commit 388cad2c7f
13 changed files with 108 additions and 53 deletions
+2
View File
@@ -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
+8 -7
View File
@@ -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
+10 -8
View File
@@ -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
+1 -1
View File
@@ -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>"
+9 -3
View File
@@ -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

+2 -2
View File
@@ -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;
}
+32 -30
View File
@@ -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:&nbsp;</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:&nbsp;</span>
<div unselectable="on" class="link zoomLink" data-zoom-level="4">x1.0</div>
+9 -2
View File
@@ -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:&nbsp;</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:&nbsp;</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>