Things added to mob.screen will use pixel_x & pixel_y instead of screen_loc for positioning.
mob/var/tmp/obj/screen/screen
mob/Login()
screen = new(client)
screen.Add("Pie",new/obj/pie{pixel_x=196;pixel_y=64})
screen.Show("Pie")
obj/screen
appearance_flags = PLANE_MASTER
screen_loc = "1,1"
New(client/c){hud=new;c.screen+=src}
var list/hud
proc
Add(id,o)
if(id in hud){return FALSE}
hud[id] = o
return TRUE
Show(id)
if(!(id in hud)){return FALSE}
vis_contents |= hud[id]
return TRUE
Hide(id)
if(!(id in hud)){return FALSE}
vis_contents -= hud[id]
return TRUE