Files
CHOMPStation2/code/datums/progressbar.dm
2020-02-12 19:38:43 -05:00

47 lines
1.2 KiB
Plaintext

/datum/progressbar
var/goal = 1
var/image/bar
var/shown = 0
var/mob/user
var/client/client
/datum/progressbar/New(mob/user, goal_number, atom/target)
. = ..()
if(!target) target = user
if (!istype(target))
EXCEPTION("Invalid target given")
if (goal_number)
goal = goal_number
bar = image('icons/effects/progessbar.dmi', target, "prog_bar_0")
bar.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA
bar.pixel_y = 32
bar.plane = PLANE_PLAYER_HUD
src.user = user
if(user)
client = user.client
/datum/progressbar/Destroy()
if (client)
client.images -= bar
QDEL_NULL(bar)
user = null
client = null
return ..()
/datum/progressbar/proc/update(progress)
//to_world("Update [progress] - [goal] - [(progress / goal)] - [((progress / goal) * 100)] - [round(((progress / goal) * 100), 5)]")
if (!user || !user.client)
shown = 0
return
if (user.client != client)
if (client)
client.images -= bar
shown = 0
client = user.client
progress = CLAMP(progress, 0, goal)
bar.icon_state = "prog_bar_[round(((progress / goal) * 100), 5)]"
if (!shown && user.is_preference_enabled(/datum/client_preference/show_progress_bar))
user.client.images += bar
shown = 1