mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2025-12-20 14:45:05 +00:00
* Tablet UI update (mostly fixes) (#74844) ## About The Pull Request Tablet UIs are now changed when opening/closing an app, instead of constantly checking for a UI change every ui update. Program UI acts no longer call parent, as it was unnecessary, Computers are the ones that should be calling it. Fixes a ton of problems with static data not updating, such as in Messenger, ID management, Siliconnect, and Chat client Chat Client's Admin mode also works again, which was broken when accesses to check was turned into a list. Turns a few lists in Robocontrol into static ones when we aren't changing anything, and makes it actually scan your ID's access. Fixes budget ordering being unable to show the cart/call the cargo shuttle. ## Why It's Good For The Game While I can't seem to find a single issue report on any of the above, these are still problems that should be fixed. ## Changelog 🆑 fix: SiliConnect can download borg logs again. fix: The RD can once again enable Admin mode on Wirecarp fix: NT IRN can once again see the shopping cart and call the cargo shuttle. fix: Chat Client, ID Management and Messenger should now update their UIs properly. code: PDAs will hopefully not lag as much when clicking on buttons (such as in ID management). /🆑 * Tablet UI update (mostly fixes) --------- Co-authored-by: John Willard <53777086+JohnFulpWillard@users.noreply.github.com>
134 lines
4.9 KiB
Plaintext
134 lines
4.9 KiB
Plaintext
/datum/computer_file/program/bounty_board
|
|
filename = "bountyboard"
|
|
filedesc = "Bounty Board Request Network"
|
|
category = PROGRAM_CATEGORY_SUPL
|
|
program_icon_state = "bountyboard"
|
|
extended_desc = "A multi-platform network for placing requests across the station, with payment across the network being possible.."
|
|
requires_ntnet = TRUE
|
|
size = 10
|
|
tgui_id = "NtosBountyBoard"
|
|
///Reference to the currently logged in user.
|
|
var/datum/bank_account/current_user
|
|
///The station request datum being affected by UI actions.
|
|
var/datum/station_request/active_request
|
|
///Value of the currently bounty input
|
|
var/bounty_value = 1
|
|
///Text of the currently written bounty
|
|
var/bounty_text = ""
|
|
///Has the app been added to the network yet?
|
|
var/networked = FALSE
|
|
|
|
/datum/computer_file/program/bounty_board/ui_data(mob/user)
|
|
var/list/data = list()
|
|
var/list/formatted_requests = list()
|
|
var/list/formatted_applicants = list()
|
|
if(current_user)
|
|
data["user"] = list()
|
|
data["user"]["name"] = current_user.account_holder
|
|
if(current_user.account_job)
|
|
data["user"]["job"] = current_user.account_job.title
|
|
data["user"]["department"] = current_user.account_job.paycheck_department
|
|
else
|
|
data["user"]["job"] = "No Job"
|
|
data["user"]["department"] = DEPARTMENT_UNASSIGNED
|
|
else
|
|
data["user"] = list()
|
|
data["user"]["name"] = user.name
|
|
data["user"]["job"] = "N/A"
|
|
data["user"]["department"] = "N/A"
|
|
if(!networked)
|
|
GLOB.allbountyboards += computer
|
|
networked = TRUE
|
|
if(computer.computer_id_slot)
|
|
current_user = computer.computer_id_slot?.registered_account
|
|
for(var/i in GLOB.request_list)
|
|
if(!i)
|
|
continue
|
|
var/datum/station_request/request = i
|
|
formatted_requests += list(list("owner" = request.owner, "value" = request.value, "description" = request.description, "acc_number" = request.req_number))
|
|
if(request.applicants)
|
|
for(var/datum/bank_account/j in request.applicants)
|
|
formatted_applicants += list(list("name" = j.account_holder, "request_id" = request.owner_account.account_id, "requestee_id" = j.account_id))
|
|
if(current_user)
|
|
data["accountName"] = current_user.account_holder
|
|
data["requests"] = formatted_requests
|
|
data["applicants"] = formatted_applicants
|
|
data["bountyValue"] = bounty_value
|
|
data["bountyText"] = bounty_text
|
|
return data
|
|
|
|
/datum/computer_file/program/bounty_board/ui_act(action, list/params)
|
|
var/current_ref_num = params["request"]
|
|
var/current_app_num = params["applicant"]
|
|
var/datum/bank_account/request_target
|
|
if(current_ref_num)
|
|
for(var/datum/station_request/i in GLOB.request_list)
|
|
if("[i.req_number]" == "[current_ref_num]")
|
|
active_request = i
|
|
break
|
|
if(active_request)
|
|
for(var/datum/bank_account/j in active_request.applicants)
|
|
if("[j.account_id]" == "[current_app_num]")
|
|
request_target = j
|
|
break
|
|
switch(action)
|
|
if("createBounty")
|
|
if(!current_user || !bounty_text)
|
|
playsound(src, 'sound/machines/buzz-sigh.ogg', 20, TRUE)
|
|
return TRUE
|
|
for(var/datum/station_request/i in GLOB.request_list)
|
|
if("[i.req_number]" == "[current_user.account_id]")
|
|
computer.say("Account already has active bounty.")
|
|
return TRUE
|
|
var/datum/station_request/curr_request = new /datum/station_request(current_user.account_holder, bounty_value,bounty_text,current_user.account_id, current_user)
|
|
GLOB.request_list += list(curr_request)
|
|
for(var/obj/i in GLOB.allbountyboards)
|
|
i.say("New bounty has been added!")
|
|
playsound(i.loc, 'sound/effects/cashregister.ogg', 30, TRUE)
|
|
return TRUE
|
|
if("apply")
|
|
if(!current_user)
|
|
computer.say("Please swipe a valid ID first.")
|
|
return TRUE
|
|
if(current_user.account_holder == active_request.owner)
|
|
playsound(computer, 'sound/machines/buzz-sigh.ogg', 20, TRUE)
|
|
return TRUE
|
|
active_request.applicants += list(current_user)
|
|
if("payApplicant")
|
|
if(!current_user)
|
|
return
|
|
if(!current_user.has_money(active_request.value) || (current_user.account_holder != active_request.owner))
|
|
playsound(computer, 'sound/machines/buzz-sigh.ogg', 30, TRUE)
|
|
return
|
|
request_target.transfer_money(current_user, active_request.value, "Bounties: Request Completed")
|
|
computer.say("Paid out [active_request.value] credits.")
|
|
GLOB.request_list.Remove(active_request)
|
|
return TRUE
|
|
if("clear")
|
|
if(current_user)
|
|
current_user = null
|
|
computer.say("Account Reset.")
|
|
return TRUE
|
|
if("deleteRequest")
|
|
if(!current_user)
|
|
playsound(computer, 'sound/machines/buzz-sigh.ogg', 20, TRUE)
|
|
return TRUE
|
|
if(active_request.owner != current_user.account_holder)
|
|
playsound(computer, 'sound/machines/buzz-sigh.ogg', 20, TRUE)
|
|
return TRUE
|
|
computer.say("Deleted current request.")
|
|
GLOB.request_list.Remove(active_request)
|
|
return TRUE
|
|
if("bountyVal")
|
|
bounty_value = text2num(params["bountyval"])
|
|
if(!bounty_value)
|
|
bounty_value = 1
|
|
return TRUE
|
|
if("bountyText")
|
|
bounty_text = (params["bountytext"])
|
|
return TRUE
|
|
|
|
/datum/computer_file/program/bounty_board/Destroy()
|
|
GLOB.allbountyboards -= computer
|
|
. = ..()
|