mirror of
https://github.com/KabKebab/GS13.git
synced 2026-07-18 19:39:53 +01:00
Merge pull request #10575 from Arturlang/TGUIs_Nexties
[TESTMERGE] Properly working TGUI Next
This commit is contained in:
@@ -21,6 +21,8 @@
|
||||
var/flush_count = 0 //this var adds 1 once per tick. When it reaches flush_every_ticks it resets and tries to flush.
|
||||
var/last_sound = 0
|
||||
var/obj/structure/disposalconstruct/stored
|
||||
ui_x = 300
|
||||
ui_y = 180
|
||||
// create a new disposal
|
||||
// find the attached trunk (if present) and init gas resvr.
|
||||
|
||||
@@ -281,59 +283,57 @@
|
||||
var/datum/oracle_ui/themed/nano/ui
|
||||
obj_flags = CAN_BE_HIT | USES_TGUI | SHOVABLE_ONTO
|
||||
|
||||
/obj/machinery/disposal/bin/Initialize(mapload, obj/structure/disposalconstruct/make_from)
|
||||
. = ..()
|
||||
ui = new /datum/oracle_ui/themed/nano(src, 330, 190, "disposal_bin")
|
||||
ui.auto_refresh = TRUE
|
||||
ui.can_resize = FALSE
|
||||
|
||||
// attack by item places it in to disposal
|
||||
/obj/machinery/disposal/bin/attackby(obj/item/I, mob/user, params)
|
||||
if(istype(I, /obj/item/storage/bag/trash)) //Not doing component overrides because this is a specific type.
|
||||
var/obj/item/storage/bag/trash/T = I
|
||||
var/datum/component/storage/STR = T.GetComponent(/datum/component/storage)
|
||||
to_chat(user, "<span class='warning'>You empty the bag.</span>")
|
||||
for(var/obj/item/O in T.contents)
|
||||
STR.remove_from_storage(O,src)
|
||||
T.update_icon()
|
||||
add_fingerprint(user)
|
||||
if(!pressure_charging && !full_pressure && !flush)
|
||||
if(I.tool_behaviour == TOOL_SCREWDRIVER)
|
||||
panel_open = !panel_open
|
||||
I.play_tool_sound(src)
|
||||
to_chat(user, "<span class='notice'>You [panel_open ? "remove":"attach"] the screws around the power connection.</span>")
|
||||
return
|
||||
else if(I.tool_behaviour == TOOL_WELDER && panel_open)
|
||||
if(!I.tool_start_check(user, amount=0))
|
||||
return
|
||||
|
||||
to_chat(user, "<span class='notice'>You start slicing the floorweld off \the [src]...</span>")
|
||||
if(I.use_tool(src, user, 20, volume=100) && panel_open)
|
||||
to_chat(user, "<span class='notice'>You slice the floorweld off \the [src].</span>")
|
||||
deconstruct()
|
||||
return
|
||||
|
||||
if(user.a_intent != INTENT_HARM)
|
||||
if((I.item_flags & ABSTRACT) || !user.temporarilyRemoveItemFromInventory(I))
|
||||
return
|
||||
place_item_in_disposal(I, user)
|
||||
update_icon()
|
||||
ui.soft_update_fields()
|
||||
return TRUE //no afterattack
|
||||
else
|
||||
ui.soft_update_fields()
|
||||
return ..()
|
||||
|
||||
// handle machine interaction
|
||||
|
||||
/obj/machinery/disposal/bin/ui_interact(mob/user, state)
|
||||
/obj/machinery/disposal/bin/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = FALSE, \
|
||||
datum/tgui/master_ui = null, datum/ui_state/state = GLOB.notcontained_state)
|
||||
if(stat & BROKEN)
|
||||
return
|
||||
if(user.loc == src)
|
||||
to_chat(user, "<span class='warning'>You cannot reach the controls from inside!</span>")
|
||||
return
|
||||
ui.render(user)
|
||||
ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open)
|
||||
if(!ui)
|
||||
ui = new(user, src, ui_key, "disposal_unit", name, ui_x, ui_y, master_ui, state)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/disposal/bin/oui_canview(mob/user)
|
||||
if(user.loc == src)
|
||||
return FALSE
|
||||
if(stat & BROKEN)
|
||||
return FALSE
|
||||
if(Adjacent(user))
|
||||
return TRUE
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/machinery/disposal/bin/oui_data(mob/user)
|
||||
/obj/machinery/disposal/bin/ui_data(mob/user)
|
||||
var/list/data = list()
|
||||
data["flush"] = flush ? ui.act("Disengage", user, "handle-0", class="active") : ui.act("Engage", user, "handle-1")
|
||||
data["full_pressure"] = full_pressure ? "Ready" : (pressure_charging ? "Pressurizing" : "Off")
|
||||
data["pressure_charging"] = pressure_charging ? ui.act("Turn Off", user, "pump-0", class="active", disabled=full_pressure) : ui.act("Turn On", user, "pump-1", disabled=full_pressure)
|
||||
var/per = full_pressure ? 100 : CLAMP(100* air_contents.return_pressure() / (SEND_PRESSURE), 0, 99)
|
||||
data["per"] = "[round(per, 1)]%"
|
||||
data["contents"] = ui.act("Eject Contents", user, "eject", disabled=contents.len < 1)
|
||||
data["flush"] = flush
|
||||
data["full_pressure"] = full_pressure
|
||||
data["pressure_charging"] = pressure_charging
|
||||
data["panel_open"] = panel_open
|
||||
data["per"] = CLAMP01(air_contents.return_pressure() / (SEND_PRESSURE))
|
||||
data["isai"] = isAI(user)
|
||||
return data
|
||||
|
||||
/obj/machinery/disposal/bin/oui_act(mob/user, action, list/params)
|
||||
/obj/machinery/disposal/bin/ui_act(action, params)
|
||||
if(..())
|
||||
return
|
||||
|
||||
@@ -360,7 +360,6 @@
|
||||
if("eject")
|
||||
eject()
|
||||
. = TRUE
|
||||
ui.soft_update_fields()
|
||||
|
||||
|
||||
/obj/machinery/disposal/bin/hitby(atom/movable/AM, skipcatch = FALSE, hitpush = TRUE, blocked = FALSE, datum/thrownthing/throwingdatum)
|
||||
@@ -391,7 +390,6 @@
|
||||
full_pressure = FALSE
|
||||
pressure_charging = TRUE
|
||||
update_icon()
|
||||
ui.soft_update_fields()
|
||||
|
||||
/obj/machinery/disposal/bin/update_icon()
|
||||
cut_overlays()
|
||||
@@ -435,8 +433,6 @@
|
||||
do_flush()
|
||||
flush_count = 0
|
||||
|
||||
ui.soft_update_fields()
|
||||
|
||||
if(flush && air_contents.return_pressure() >= SEND_PRESSURE) // flush can happen even without power
|
||||
do_flush()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user