Files
VOREStation/code/modules/tgui/modules/_base.dm
Verkister fdf6761c11 Squashed commit of the following:
commit 2c04650659
Merge: c2b6efe46c f7328a7935
Author: Verkister <superverkelian@hotmail.com>
Date:   Thu Feb 11 14:54:21 2021 +0200

    Merge branch 'master' into communicator_video_enhancement

commit c2b6efe46c
Merge: 981d50f43c 9a6def6c8a
Author: Verkister <superverkelian@hotmail.com>
Date:   Wed Oct 28 15:07:20 2020 +0200

    Merge branch 'master' into communicator_video_enhancement

commit 981d50f43c
Author: ShadowLarkens <shadowlarkens@gmail.com>
Date:   Mon Sep 21 19:27:32 2020 -0700

    Communicator UI Improvements + Camera Console Moving Camera Fixes
2021-02-11 14:57:29 +02:00

89 lines
2.0 KiB
Plaintext

/*
TGUI MODULES
This allows for datum-based TGUIs that can be hooked into objects.
This is useful for things such as the power monitor, which needs to exist on a physical console in the world, but also as a virtual device the AI can use
Code is pretty much ripped verbatim from nano modules, but with un-needed stuff removed
*/
/datum/tgui_module
var/name
var/datum/host
var/list/using_access
var/tgui_id
var/ntos = FALSE
/datum/tgui_module/New(var/host)
src.host = host
if(ntos)
tgui_id = "Ntos" + tgui_id
/datum/tgui_module/tgui_host()
return host ? host.tgui_host() : src
/datum/tgui_module/tgui_close(mob/user)
if(host)
host.tgui_close(user)
/datum/tgui_module/proc/check_eye(mob/user)
return -1
/datum/tgui_module/proc/can_still_topic(mob/user, datum/tgui_state/state)
return (tgui_status(user, state) == STATUS_INTERACTIVE)
/datum/tgui_module/proc/check_access(mob/user, access)
if(!access)
return 1
if(using_access)
if(access in using_access)
return 1
else
return 0
if(!istype(user))
return 0
var/obj/item/weapon/card/id/I = user.GetIdCard()
if(!I)
return 0
if(access in I.access)
return 1
return 0
/datum/tgui_module/tgui_static_data()
. = ..()
var/obj/item/modular_computer/host = tgui_host()
if(istype(host))
. += host.get_header_data()
/datum/tgui_module/tgui_act(action, params)
if(..())
return TRUE
var/obj/item/modular_computer/host = tgui_host()
if(istype(host))
if(action == "PC_exit")
host.kill_program()
return TRUE
if(action == "PC_shutdown")
host.shutdown_computer()
return TRUE
if(action == "PC_minimize")
host.minimize_program(usr)
return TRUE
// Just a nice little default interact in case the subtypes don't need any special behavior here
/datum/tgui_module/tgui_interact(mob/user, datum/tgui/ui = null, datum/tgui/parent_ui = null)
ui = SStgui.try_update_ui(user, src, ui)
if(!ui)
ui = new(user, src, tgui_id, name, parent_ui)
ui.open()
/datum/tgui_module/proc/relaymove(mob/user, direction)
return FALSE