mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 20:16:55 +01:00
nanoui shuttle shit
This commit is contained in:
@@ -1,8 +1,3 @@
|
||||
#define SHUTTLE_MANIPULATOR_STATUS 1
|
||||
#define SHUTTLE_MANIPULATOR_TEMPLATE 2
|
||||
#define SHUTTLE_MANIPULATOR_MOD 3
|
||||
#define NUM_SHUTTLE_MANIPULATOR_TABS 3
|
||||
|
||||
|
||||
/obj/machinery/shuttle_manipulator
|
||||
name = "shuttle manipulator"
|
||||
@@ -15,7 +10,7 @@
|
||||
icon = 'icons/obj/machines/shuttle_manipulator.dmi'
|
||||
icon_state = "holograph_on"
|
||||
|
||||
var/current_tab = SHUTTLE_MANIPULATOR_STATUS
|
||||
var/selected_menu_key = "stat"
|
||||
var/busy
|
||||
// UI state variables
|
||||
var/datum/map_template/shuttle/selected
|
||||
@@ -49,15 +44,25 @@
|
||||
attack_hand(user)
|
||||
|
||||
/obj/machinery/shuttle_manipulator/attack_hand(mob/user as mob)
|
||||
user.set_machine(src)
|
||||
interact(user)
|
||||
ui_interact(user)
|
||||
|
||||
/obj/machinery/shuttle_manipulator/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
||||
|
||||
// this is the data which will be sent to the ui
|
||||
var/data[0]
|
||||
data["selectedMenuKey"] = selected_menu_key
|
||||
|
||||
data["templates"] = list()
|
||||
var/list/templates = data["templates"]
|
||||
data["templates_tabs"] = list()
|
||||
data["selected"] = list()
|
||||
|
||||
/obj/machinery/shuttle_manipulator/interact(mob/user)
|
||||
|
||||
for(var/shuttle_id in shuttle_templates)
|
||||
var/datum/map_template/shuttle/S = shuttle_templates[shuttle_id]
|
||||
|
||||
if(!templates[S.port_id])
|
||||
data["templates_tabs"] += S.port_id
|
||||
templates[S.port_id] = list(
|
||||
"port_id" = S.port_id,
|
||||
"templates" = list())
|
||||
@@ -70,12 +75,16 @@
|
||||
L["admin_notes"] = S.admin_notes
|
||||
|
||||
if(selected == S)
|
||||
shuttle_data["selected"] = L
|
||||
data["selected"] = L
|
||||
|
||||
templates[S.port_id]["templates"] += list(L)
|
||||
|
||||
data["templates_tabs"] = sortList(data["templates_tabs"])
|
||||
|
||||
// Status panel
|
||||
data["existing_shuttle"] = null
|
||||
|
||||
// Status panel
|
||||
data["shuttles"] = list()
|
||||
for(var/i in shuttle_master.mobile)
|
||||
var/obj/docking_port/mobile/M = i
|
||||
var/list/L = list()
|
||||
@@ -83,62 +92,30 @@
|
||||
L["id"] = M.id
|
||||
L["timer"] = M.timer
|
||||
L["timeleft"] = M.getTimerStr()
|
||||
L["mode"] = capitalize(M.mode)
|
||||
var/can_fast_travel = FALSE
|
||||
if(M.timer && M.timeLeft() >= 50)
|
||||
can_fast_travel = TRUE
|
||||
L["can_fast_travel"] = can_fast_travel
|
||||
L["mode"] = M.mode
|
||||
L["status"] = M.getStatusText()
|
||||
if(M == existing_shuttle)
|
||||
shuttle_data["existing_shuttle"] = L
|
||||
data["existing_shuttle"] = L
|
||||
|
||||
shuttle_data["shuttles"] += list(L)
|
||||
data["shuttles"] += list(L)
|
||||
|
||||
var/dat = ""
|
||||
dat += "<center>"
|
||||
dat += "<a href='?src=\ref[src];tabchange=1;tab=[SHUTTLE_MANIPULATOR_STATUS]' [current_tab == SHUTTLE_MANIPULATOR_STATUS ? "class='linkOn'" : ""]>Status</a>"
|
||||
dat += "<a href='?src=\ref[src];tabchange=1;tab=[SHUTTLE_MANIPULATOR_TEMPLATE]' [current_tab == SHUTTLE_MANIPULATOR_TEMPLATE ? "class='linkOn'" : ""]>Templates</a>"
|
||||
dat += "<a href='?src=\ref[src];tabchange=1;tab=[SHUTTLE_MANIPULATOR_MOD]' [current_tab == SHUTTLE_MANIPULATOR_MOD ? "class='linkOn'" : ""]>Modification</a>"
|
||||
dat += "</center>"
|
||||
dat += "<HR>"
|
||||
// update the ui if it exists, returns null if no ui is passed/found
|
||||
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||
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, "shuttle_manipulator.tmpl", "Shuttle Manipulator", 660, 700)
|
||||
// when the ui is first opened this is the data it will use
|
||||
ui.set_initial_data(data)
|
||||
// open the new ui window
|
||||
ui.open()
|
||||
// auto update every Master Controller tick
|
||||
ui.set_auto_update(1)
|
||||
|
||||
if(busy)
|
||||
dat += "<div class='statusDisplay'>Shuttle Manipulation in progress...</div>"
|
||||
else
|
||||
dat += "<div class='statusDisplay'>"
|
||||
|
||||
switch(current_tab)
|
||||
if(SHUTTLE_MANIPULATOR_STATUS)
|
||||
dat += "<div class='block'>"
|
||||
for(var/list/shuttle in shuttle_data["shuttles"])
|
||||
dat += "<div class='line'>"
|
||||
dat += "<span class='statusLabel'>[shuttle["name"]] [shuttle["id"]]: [shuttle["mode"]] [shuttle["status"]] [shuttle["timer"]] </span>"
|
||||
dat += "<a href='?src=\ref[src];jump_to=[shuttle["id"]]'>Jump To</a>"
|
||||
dat += "<a href='?src=\ref[src];fast_travel=[shuttle["id"]]'>Fast Travel</a>"
|
||||
dat += "</div>"
|
||||
dat += "</div>"
|
||||
if(SHUTTLE_MANIPULATOR_TEMPLATE)
|
||||
dat += "<div class='block'>"
|
||||
for(var/list/shuttle in shuttle_data["shuttles"])
|
||||
dat += "<div class='line'>"
|
||||
dat += "<span class='statusLabel'> [shuttle["name"]] <br>[shuttle["description"]]<br> [shuttle["admin_notes"]] <br></span>"
|
||||
dat += "<A href='?src=\ref[src];load=[shuttle["id"]]'>Load Template</A>"
|
||||
dat += "<A href='?src=\ref[src];select_template=[shuttle["id"]]'>Select Template</A>"
|
||||
dat += "<a href='?src=\ref[src];preview=[shuttle["id"]]'>Preview Template</A>"
|
||||
dat += "<br></div>"
|
||||
dat += "</div>"
|
||||
if(SHUTTLE_MANIPULATOR_MOD)
|
||||
dat += "<div class='block'>"
|
||||
for(var/list/shuttle in shuttle_data["shuttles"])
|
||||
dat += "<div class='line'>"
|
||||
dat += "<span class='statusLabel'>[shuttle["name"]] [shuttle["id"]] <br>[shuttle["description"]]<br> [shuttle["admin_notes"]] <br> </span>"
|
||||
dat += "<A href='?src=\ref[src];move=[shuttle["id"]]'>Send to port</A>"
|
||||
dat += "<a href='?src=\ref[src];jump_to=[shuttle["id"]]'>Jump To</A>"
|
||||
dat += "<br></div>"
|
||||
dat += "</div>"
|
||||
dat += "</div>"
|
||||
|
||||
var/datum/browser/popup = new(user, "shuttle manipulator", "Shuttle Manipulator", 500, 500)
|
||||
popup.set_content(dat)
|
||||
popup.open()
|
||||
|
||||
return
|
||||
|
||||
/obj/machinery/shuttle_manipulator/Topic(href, href_list)
|
||||
if(..())
|
||||
@@ -187,14 +164,6 @@
|
||||
var/mdp = action_load(S)
|
||||
if(mdp)
|
||||
user.forceMove(get_turf(mdp))
|
||||
if(href_list["tabchange"])
|
||||
var/newtab = text2num(href_list["tab"])
|
||||
// I am NOT making this take like 10 lines
|
||||
if(!(newtab in list(1,2,3)))
|
||||
log_debug("[newtab] is not a valid tab ID!")
|
||||
return
|
||||
. = TRUE
|
||||
current_tab = round(newtab)
|
||||
|
||||
/obj/machinery/shuttle_manipulator/proc/action_load(
|
||||
datum/map_template/shuttle/loading_template)
|
||||
|
||||
@@ -1,133 +0,0 @@
|
||||
<ui-tabs tabs='{{data.tabs}}'>
|
||||
<tab name='Status'>
|
||||
<status/>
|
||||
</tab>
|
||||
<tab name='Templates'>
|
||||
<templates/>
|
||||
</tab>
|
||||
<tab name='Modification'>
|
||||
{{#if data.selected}}
|
||||
<modification/>
|
||||
{{/if}}
|
||||
{{#if !data.selected}}
|
||||
<span class='bad'>No shuttle selected.</span>
|
||||
{{/if}}
|
||||
</tab>
|
||||
</ui-tabs>
|
||||
|
||||
<ui-display title='Selected: {{data.selected.name}}'>
|
||||
{{#if data.selected.description}}
|
||||
<ui-section label='Description'>{{data.selected.description}}</ui-section>
|
||||
{{/if}}
|
||||
{{#if data.selected.admin_notes}}
|
||||
<ui-section label='Admin Notes'>{{data.selected.admin_notes}}</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
|
||||
{{#if data.existing_shuttle}}
|
||||
<ui-display title='Existing Shuttle: {{data.existing_shuttle.name}}'>
|
||||
Status: {{data.existing_shuttle.status}}
|
||||
{{#if data.existing_shuttle.timer}}
|
||||
({{data.existing_shuttle.timeleft}})
|
||||
{{/if}}
|
||||
<ui-button action='jump_to'
|
||||
params='{"type": "mobile", "id": "{{data.existing_shuttle.id}}"}'>
|
||||
Jump To
|
||||
</ui-button>
|
||||
</ui-display>
|
||||
{{/if}}
|
||||
|
||||
{{#if !data.existing_shuttle}}
|
||||
<ui-display title='Existing Shuttle: None'></ui-display>
|
||||
{{/if}}
|
||||
|
||||
<ui-button action='preview'
|
||||
params='{"shuttle_id": "{{data.selected.shuttle_id}}"}'>
|
||||
Preview
|
||||
</ui-button>
|
||||
<ui-button action='load'
|
||||
params='{"shuttle_id": "{{data.selected.shuttle_id}}"}'
|
||||
style='danger'>
|
||||
Load
|
||||
</ui-button>
|
||||
|
||||
<ui-display title='Status'>
|
||||
</ui-display>
|
||||
|
||||
<ui-display title='Selected: {{data.selected.name}}'>
|
||||
{{#if data.selected.description}}
|
||||
<ui-section label='Description'>{{data.selected.description}}</ui-section>
|
||||
{{/if}}
|
||||
{{#if data.selected.admin_notes}}
|
||||
<ui-section label='Admin Notes'>{{data.selected.admin_notes}}</ui-section>
|
||||
{{/if}}
|
||||
</ui-display>
|
||||
|
||||
{{#if data.existing_shuttle}}
|
||||
<ui-display title='Existing Shuttle: {{data.existing_shuttle.name}}'>
|
||||
Status: {{data.existing_shuttle.status}}
|
||||
{{#if data.existing_shuttle.timer}}
|
||||
({{data.existing_shuttle.timeleft}})
|
||||
{{/if}}
|
||||
<ui-button action='jump_to'
|
||||
params='{"type": "mobile", "id": "{{data.existing_shuttle.id}}"}'>
|
||||
Jump To
|
||||
</ui-button>
|
||||
</ui-display>
|
||||
{{/if}}
|
||||
|
||||
{{#if !data.existing_shuttle}}
|
||||
<ui-display title='Existing Shuttle: None'></ui-display>
|
||||
{{/if}}
|
||||
|
||||
<ui-button action='preview'
|
||||
params='{"shuttle_id": "{{data.selected.shuttle_id}}"}'>
|
||||
Preview
|
||||
</ui-button>
|
||||
<ui-button action='load'
|
||||
params='{"shuttle_id": "{{data.selected.shuttle_id}}"}'
|
||||
style='danger'>
|
||||
Load
|
||||
</ui-button>
|
||||
|
||||
<ui-display title='Status'>
|
||||
</ui-display>
|
||||
|
||||
{{#each data.shuttles}}
|
||||
<ui-section label='{{name}} ({{id}})'>
|
||||
{{status}}
|
||||
{{#if timer}}
|
||||
({{timeleft}})
|
||||
{{/if}}
|
||||
<ui-button action='jump_to' params='{"type": "mobile", "id": "{{id}}"}'>
|
||||
Jump To
|
||||
</ui-button>
|
||||
</ui-section>
|
||||
{{/each}}
|
||||
|
||||
|
||||
|
||||
<ui-tabs tabs='{{data.templates_tabs}}'>
|
||||
{{#each data.templates}}
|
||||
<tab name='{{port_id}}'>
|
||||
{{#each templates}}
|
||||
<ui-display title='{{name}}'>
|
||||
{{#if description}}
|
||||
<ui-section label='Description'>{{description}}</ui-section>
|
||||
{{/if}}
|
||||
{{#if admin_notes}}
|
||||
<ui-section label='Admin Notes'>{{admin_notes}}</ui-section>
|
||||
{{/if}}
|
||||
|
||||
<ui-button action='select_template'
|
||||
params='{"shuttle_id": "{{shuttle_id}}"}'
|
||||
state='{{data.selected.shuttle_id == shuttle_id ?
|
||||
"selected" : null}}'>
|
||||
{{data.selected.shuttle_id == shuttle_id ? "Selected" : "Select"}}
|
||||
</ui-button>
|
||||
|
||||
</ui-display>
|
||||
{{/each}}
|
||||
</tab>
|
||||
{{/each}}
|
||||
</ui-tabs>
|
||||
@@ -0,0 +1,77 @@
|
||||
<!--
|
||||
Title: Shuttle Manipulator UI
|
||||
-->
|
||||
|
||||
<h3>Operations</h3>
|
||||
<div class="item">
|
||||
{{:helper.link('Status', 'link', {'selectMenuKey' : 'stat'}, data.selectedMenuKey == 'stat' ? 'selected' : null)}}
|
||||
{{:helper.link('Templates', 'link', {'selectMenuKey' : 'stemp'}, data.selectedMenuKey == 'stemp' ? 'selected' : null)}}
|
||||
{{:helper.link('Modification', 'link', {'selectMenuKey' : 'mod'}, data.selectedMenuKey == 'mod' ? 'selected' : null)}}
|
||||
</div>
|
||||
|
||||
<div class="item"> </div>
|
||||
|
||||
<!-- Shuttle Status Tab -->
|
||||
{{if !data.selectedMenuKey || data.selectedMenuKey == 'stat'}}
|
||||
|
||||
<div class="itemLabelNarrow">
|
||||
|
||||
{{for data.shuttles}}
|
||||
Name: {{value.name}}
|
||||
ID: {{value.shuttle_id}}
|
||||
Shuttle Timer: {{value.timeleft}}
|
||||
Shuttle Mode: {{value.mode}}
|
||||
Shuttle Status: {{value.status}}
|
||||
{{:helper.link('Jump to', 'exclamation-circle', {'jump_to' : 1, 'id' : value.shuttle_id} : null)}}
|
||||
{{:helper.link('Fast Travel', 'exclamation-circle', {'fast_travel' : 1},: null)}}
|
||||
{{/for}}
|
||||
</div>
|
||||
<!-- Shuttle template tab -->
|
||||
{{else data.selectedMenuKey == 'stemp'}}
|
||||
<div class="itemLabelNarrow">
|
||||
|
||||
{{for data.templates}}
|
||||
{{if description}}
|
||||
Description: {{data.description}}
|
||||
{{/if}}
|
||||
{{if admin_notes}}
|
||||
Admin Notes: {{data.admin_notes}}
|
||||
{{/if}}
|
||||
|
||||
{{:helper.link('select template', 'exclamation-circle', {'use_template' : 1}: null)}}
|
||||
{{/for}}
|
||||
</div>
|
||||
<!-- Shuttle Modification tab -->
|
||||
{{else data.selectedMenuKey == 'mod'}}
|
||||
<div class="itemLabelNarrow">
|
||||
|
||||
{{if data.selected.description}}
|
||||
Description: {{data.selected.description}}
|
||||
{{/if}}
|
||||
{{if data.selected.admin_notes}}
|
||||
Admin Notes: {{data.selected.admin_notes}}
|
||||
{{/if}}
|
||||
|
||||
|
||||
|
||||
{{:helper.link('Jump to', 'exclamation-circle', {'jump_to' : 1, 'id' : data.selected.shuttle_id} : null)}}
|
||||
|
||||
|
||||
{{if data.existing_shuttle}}
|
||||
Existing Shuttle: {{data.existing_shuttle.name}}
|
||||
Status: {{data.existing_shuttle.status}}
|
||||
{{if data.existing_shuttle.timer}}
|
||||
({{data.existing_shuttle.timeleft}})
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
|
||||
{{:helper.link('Preview', 'exclamation-circle', {'preview' : 1, 'id' : data.selected.shuttle_id} : null)}}
|
||||
{{:helper.link('Load', 'exclamation-circle', {'load' : 1, 'id' : data.selected.shuttle_id} : null)}}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user