mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-27 15:17:01 +01:00
About The Pull Request
Converts more inputs to TGUI. Possibly all user-facing input lists in the game.
Did any surrounding text/number inputs as well
Added null choice support so users can press cancel.
Added some misc TGUI input fixes
Fixed custom vendors while I was there
I refactored a lot of code while just poking around.
Primarily, usage of .len in files where I was already working on lists.
Some code was just awful - look at guardian.dm and its non use of early returns
If there are any disputes, I can revert it just fine, those changes are not integral to the PR.
Why It's Good For The Game
Fixes #63629
Fixes #63307
Fixes custom vendors /again/
Text input is more performant.
Part of a long series of TGUI conversion to make the game more visually appealing
Changelog
cl
refactor: The majority of user facing input lists have been converted to TGUI.
refactor: Tgui text inputs now scale with entered input.
fix: Many inputs now properly accept cancelling out of the menu.
fix: Fixes an edge case where users could not press enter on number inputs.
fix: Custom vendor bluescreen.
fix: You can now press ENTER on text inputs without an entry to cancel.
/cl
130 lines
3.5 KiB
Plaintext
130 lines
3.5 KiB
Plaintext
/obj/item/holochip
|
|
name = "credit holochip"
|
|
desc = "A hard-light chip encoded with an amount of credits. It is a modern replacement for physical money that can be directly converted to virtual currency and viceversa. Keep away from magnets."
|
|
icon = 'icons/obj/economy.dmi'
|
|
icon_state = "holochip"
|
|
base_icon_state = "holochip"
|
|
throwforce = 0
|
|
force = 0
|
|
w_class = WEIGHT_CLASS_TINY
|
|
var/credits = 0
|
|
|
|
/obj/item/holochip/Initialize(mapload, amount)
|
|
. = ..()
|
|
if(amount)
|
|
credits = amount
|
|
update_appearance()
|
|
|
|
/obj/item/holochip/examine(mob/user)
|
|
. = ..()
|
|
. += "[span_notice("It's loaded with [credits] credit[( credits > 1 ) ? "s" : ""]")]\n"+\
|
|
span_notice("Alt-Click to split.")
|
|
|
|
/obj/item/holochip/get_item_credit_value()
|
|
return credits
|
|
|
|
/obj/item/holochip/update_name()
|
|
name = "\improper [credits] credit holochip"
|
|
return ..()
|
|
|
|
/obj/item/holochip/update_icon_state()
|
|
var/icon_suffix = ""
|
|
switch(credits)
|
|
if(1e3 to (1e6 - 1))
|
|
icon_suffix = "_kilo"
|
|
if(1e6 to (1e9 - 1))
|
|
icon_suffix = "_mega"
|
|
if(1e9 to INFINITY)
|
|
icon_suffix = "_giga"
|
|
|
|
icon_state = "[base_icon_state][icon_suffix]"
|
|
return ..()
|
|
|
|
/obj/item/holochip/update_overlays()
|
|
. = ..()
|
|
var/rounded_credits
|
|
switch(credits)
|
|
if(0 to (1e3 - 1))
|
|
rounded_credits = round(credits)
|
|
if(1e3 to (1e6 - 1))
|
|
rounded_credits = round(credits * 1e-3)
|
|
if(1e6 to (1e9 - 1))
|
|
rounded_credits = round(credits * 1e-6)
|
|
if(1e9 to INFINITY)
|
|
rounded_credits = round(credits * 1e-9)
|
|
|
|
var/overlay_color = "#914792"
|
|
switch(rounded_credits)
|
|
if(0 to 4)
|
|
overlay_color = "#8E2E38"
|
|
if(5 to 9)
|
|
overlay_color = "#914792"
|
|
if(10 to 19)
|
|
overlay_color = "#BF5E0A"
|
|
if(20 to 49)
|
|
overlay_color = "#358F34"
|
|
if(50 to 99)
|
|
overlay_color = "#676767"
|
|
if(100 to 199)
|
|
overlay_color = "#009D9B"
|
|
if(200 to 499)
|
|
overlay_color = "#0153C1"
|
|
if(500 to INFINITY)
|
|
overlay_color = "#2C2C2C"
|
|
|
|
var/mutable_appearance/holochip_overlay = mutable_appearance('icons/obj/economy.dmi', "[icon_state]-color")
|
|
holochip_overlay.color = overlay_color
|
|
. += holochip_overlay
|
|
|
|
/obj/item/holochip/proc/spend(amount, pay_anyway = FALSE)
|
|
if(credits >= amount)
|
|
credits -= amount
|
|
if(credits == 0)
|
|
qdel(src)
|
|
update_appearance()
|
|
return amount
|
|
else if(pay_anyway)
|
|
qdel(src)
|
|
return credits
|
|
else
|
|
return 0
|
|
|
|
/obj/item/holochip/attackby(obj/item/I, mob/user, params)
|
|
..()
|
|
if(istype(I, /obj/item/holochip))
|
|
var/obj/item/holochip/H = I
|
|
credits += H.credits
|
|
to_chat(user, span_notice("You insert the credits into [src]."))
|
|
update_appearance()
|
|
qdel(H)
|
|
|
|
/obj/item/holochip/AltClick(mob/user)
|
|
if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user)))
|
|
return
|
|
var/split_amount = tgui_input_number(user, "How many credits do you want to extract from the holochip?", "Holochip", 1, credits, 1)
|
|
if(isnull(split_amount))
|
|
return
|
|
if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user)))
|
|
return
|
|
split_amount = round(split_amount)
|
|
var/new_credits = spend(split_amount, TRUE)
|
|
var/obj/item/holochip/H = new(user ? user : drop_location(), new_credits)
|
|
if(user)
|
|
if(!user.put_in_hands(H))
|
|
H.forceMove(user.drop_location())
|
|
add_fingerprint(user)
|
|
H.add_fingerprint(user)
|
|
to_chat(user, span_notice("You extract [split_amount] credits into a new holochip."))
|
|
|
|
/obj/item/holochip/emp_act(severity)
|
|
. = ..()
|
|
if(. & EMP_PROTECT_SELF)
|
|
return
|
|
var/wipe_chance = 60 / severity
|
|
if(prob(wipe_chance))
|
|
visible_message(span_warning("[src] fizzles and disappears!"))
|
|
qdel(src) //rip cash
|
|
|
|
/obj/item/holochip/thousand
|
|
credits = 1000
|