Modular PDA tweaks and bugfixes (#10440)

rscadd: "Handheld modular computers now use flashlights as a light source. They may be turned on/off via a button in the PC header, and have their brightness adjusted in Hardware Configuration."
    tweak: Message notifications should be much larger.
    tweak: "Chat messages are now logged to the NTNet Monitoring program."
    bugfix: "IDs are now unregistered from computers when the computer is destroyed."
    bugfix: "Fix Eject Battery having a global view range."
    bugfix: "Chat Clients are no longer set to 'silent' by default."
    backend: "Added a new slider component for VueUIs."

Closes #10439
This commit is contained in:
JohnWildkins
2020-11-10 01:12:51 -05:00
committed by GitHub
parent 566b624d53
commit 44664fc90d
30 changed files with 351 additions and 69 deletions
@@ -11,7 +11,7 @@
available_on_ntnet = TRUE
nanomodule_path = /datum/nano_module/program/computer_chatclient
color = LIGHT_COLOR_GREEN
silent = TRUE
silent = FALSE
var/last_message // Used to generate the toolbar icon
var/username
@@ -57,33 +57,18 @@
if(href_list["PRG_speak"])
. = TRUE
if(!channel)
return TRUE
var/mob/living/user = usr
if(ishuman(user))
user.visible_message("[SPAN_BOLD("\The [user]")] taps on [user.get_pronoun("his")] computer's screen.")
var/message = sanitize(input(user, "Enter message or leave blank to cancel: "))
if(!message || !channel)
return
channel.add_message(message, username, usr)
message_dead(FONT_SMALL("<b>([channel.get_dead_title()]) [username]:</b> [message]"))
add_message(send_message())
if(href_list["Reply"])
. = TRUE
if(!channel || channel.title != href_list["target"])
to_chat(usr, SPAN_WARNING("The target chat isn't active on your program anymore!"))
return
var/mob/living/user = usr
if(ishuman(user))
user.visible_message("[SPAN_BOLD("\The [user]")] taps on [user.get_pronoun("his")] computer's screen.")
var/message = sanitize(input(user, "Enter message or leave blank to cancel: "))
if(!message)
return
var/message = send_message()
if(!channel || channel.title != href_list["target"])
to_chat(usr, SPAN_WARNING("The target chat isn't active on your program anymore!"))
return
channel.add_message(message, username, usr)
message_dead(FONT_SMALL("<b>([channel.get_dead_title()]) [username]:</b> [message]"))
add_message(message)
if(href_list["PRG_joinchannel"])
. = TRUE
@@ -221,28 +206,48 @@
channel.password = newpassword
if(href_list["PRG_directmessage"])
. = TRUE
var/clients = list()
var/names = list()
for(var/cl in ntnet_global.chat_clients)
var/datum/computer_file/program/chatclient/C = cl
if(C.set_offline || C == src)
continue
clients[C.username] = C
names += C.username
names += "== Cancel =="
var/picked = input(usr, "Select with whom you would like to start a conversation.") in names
if(picked == "== Cancel ==")
direct_message()
/datum/computer_file/program/chatclient/proc/send_message()
if(!channel)
return
var/mob/living/user = usr
if(ishuman(user))
user.visible_message("[SPAN_BOLD("\The [user]")] taps on [user.get_pronoun("his")] computer's screen.")
var/message = sanitize(input(user, "Enter message or leave blank to cancel: "))
if(!message || !channel)
return
return message
/datum/computer_file/program/chatclient/proc/add_message(var/message)
if(!message)
return
channel.add_message(message, username, usr)
message_dead(FONT_SMALL("<b>([channel.get_dead_title()]) [username]:</b> [message]"))
/datum/computer_file/program/chatclient/proc/direct_message()
var/clients = list()
var/names = list()
for(var/cl in ntnet_global.chat_clients)
var/datum/computer_file/program/chatclient/C = cl
if(C.set_offline || C == src)
continue
clients[C.username] = C
names += C.username
names += "== Cancel =="
var/picked = input(usr, "Select with whom you would like to start a conversation.") in names
if(picked == "== Cancel ==")
return
var/datum/computer_file/program/chatclient/otherClient = clients[picked]
if(picked)
if(directmessagechannels[otherClient])
channel = directmessagechannels[otherClient]
return
var/datum/computer_file/program/chatclient/otherClient = clients[picked]
if(picked)
if(directmessagechannels[otherClient])
channel = directmessagechannels[otherClient]
return
var/datum/ntnet_conversation/C = new /datum/ntnet_conversation("", TRUE)
C.begin_direct(src, otherClient)
channel = C
directmessagechannels[otherClient] = C
otherClient.directmessagechannels[src] = C
var/datum/ntnet_conversation/C = new /datum/ntnet_conversation("", TRUE)
C.begin_direct(src, otherClient)
channel = C
directmessagechannels[otherClient] = C
otherClient.directmessagechannels[src] = C
/datum/computer_file/program/chatclient/process_tick()
@@ -304,9 +309,8 @@
/datum/computer_file/program/chatclient/event_silentmode()
..()
if(silent == computer.silent)
silent = !silent
if(computer.silent != silent)
silent = computer.silent
/datum/nano_module/program/computer_chatclient
name = "Chat Client"
@@ -33,6 +33,7 @@
data["config_systemcontrol"] = ntnet_global.setting_systemcontrol
data["ntnetlogs"] = ntnet_global.logs
data["ntnetmessages"] = ntnet_global.messages
data["ntnetmaxlogs"] = ntnet_global.setting_maxlogcount
@@ -44,6 +44,8 @@
VUEUI_SET_CHECK(data["card_slot"], computer.card_slot, ., data)
if(computer.registered_id)
VUEUI_SET_CHECK(data["registered"], computer.registered_id.registered_name, ., data)
else
VUEUI_SET_CHECK(data["registered"], 0, ., data)
if(!computer.battery_module)
VUEUI_SET_CHECK(data["battery"], 0, ., data)
else
@@ -51,6 +53,14 @@
VUEUI_SET_CHECK(data["battery"]["rating"], computer.battery_module.battery.maxcharge, ., data)
VUEUI_SET_CHECK(data["battery"]["percent"], round(computer.battery_module.battery.percent()), ., data)
if(computer.flashlight)
var/brightness = Clamp(0, round(computer.flashlight.power) * 10, 10)
VUEUI_SET_CHECK_IFNOTSET(data["brightness"], brightness, ., data)
if(data["brightness"])
var/new_brightness = Clamp(0, data["brightness"]/10, 1)
computer.flashlight.tweak_brightness(new_brightness)
LAZYINITLIST(data["hardware"])
for(var/obj/item/computer_hardware/H in hardware)
LAZYINITLIST(data["hardware"][H.name])