mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
* Cherry picks the unicode part 2 PR from TG * Things * drop 512 support * TAN --> tan * Manually does the things that was in renamed files * CLAMP --> clamp * ismovableatom -> ismovable * bugfixes, tg is bad * Ports sanitize_name * Bumps checks * Fixes new linter errors (#48126) About The Pull Request This fixes the errors raised by the new feature I'm adding to the linter: SpaceManiac/SpacemanDMM#119 * Update SpacemanDMM suite to 1.2 (#48785) * Update SpacemanDMM suite to 1.2 * Fix new lint errors * Removes unreachable code (#48143) About The Pull Request As detected by SpaceManiac/SpacemanDMM#123 * casually fixes 50 bugs * stoopid evil dreamchecker * stoopid evil dreamchecker * stoopid evil dreamchecker * almost the same thing * Makes all UIs UTF-8 * Fixes bugs * Fixes runtimes, some related to 513, some not * Fixes agent ids Co-authored-by: MrPerson <spamtaffic@gmail.com> Co-authored-by: alexkar598 <> Co-authored-by: spookydonut <github@spooksoftware.com>
68 lines
1.5 KiB
Plaintext
68 lines
1.5 KiB
Plaintext
#define PROGRESSBAR_HEIGHT 6
|
|
|
|
/datum/progressbar
|
|
var/goal = 1
|
|
var/image/bar
|
|
var/shown = 0
|
|
var/mob/user
|
|
var/client/client
|
|
var/listindex
|
|
|
|
/datum/progressbar/New(mob/User, goal_number, atom/target)
|
|
. = ..()
|
|
if (!istype(target))
|
|
EXCEPTION("Invalid target given")
|
|
if (goal_number)
|
|
goal = goal_number
|
|
bar = image('icons/effects/progessbar.dmi', target, "prog_bar_0", HUD_LAYER)
|
|
bar.plane = ABOVE_HUD_PLANE
|
|
bar.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA
|
|
user = User
|
|
if(user)
|
|
client = user.client
|
|
|
|
LAZYINITLIST(user.progressbars)
|
|
LAZYINITLIST(user.progressbars[bar.loc])
|
|
var/list/bars = user.progressbars[bar.loc]
|
|
bars.Add(src)
|
|
listindex = bars.len
|
|
bar.pixel_y = 32 + (PROGRESSBAR_HEIGHT * (listindex - 1))
|
|
|
|
/datum/progressbar/proc/update(progress)
|
|
if (!user || !user.client)
|
|
shown = 0
|
|
return
|
|
if (user.client != client)
|
|
if (client)
|
|
client.images -= bar
|
|
if (user.client)
|
|
user.client.images += bar
|
|
|
|
progress = clamp(progress, 0, goal)
|
|
bar.icon_state = "prog_bar_[round(((progress / goal) * 100), 5)]"
|
|
if (!shown)
|
|
user.client.images += bar
|
|
shown = 1
|
|
|
|
/datum/progressbar/proc/shiftDown()
|
|
--listindex
|
|
bar.pixel_y -= PROGRESSBAR_HEIGHT
|
|
|
|
/datum/progressbar/Destroy()
|
|
for(var/I in user.progressbars[bar.loc])
|
|
var/datum/progressbar/P = I
|
|
if(P != src && P.listindex > listindex)
|
|
P.shiftDown()
|
|
|
|
var/list/bars = user.progressbars[bar.loc]
|
|
bars.Remove(src)
|
|
if(!bars.len)
|
|
LAZYREMOVE(user.progressbars, bar.loc)
|
|
|
|
if (client)
|
|
client.images -= bar
|
|
qdel(bar)
|
|
. = ..()
|
|
|
|
#undef PROGRESSBAR_HEIGHT
|