client
var
ScreenBuilder/screen_area = /ScreenBuilder/Screen1
proc
SetScreenArea(new_screen)
client/New()
. = ..()
usr = .
SetScreenArea(screen_area)
ScreenBuilder/GetScreenList()
if(!screen)
screen = list()
var
max_inner_x = 0
max_inner_y = 0
inner_x = world.maxx
inner_y = world.maxy
for(var/turf/T in contents)
if(T.type == /ScreenBuilder/InnerMap)
if(T.x < inner_x) inner_x = T.x
if(T.y < inner_y) inner_y = T.y
if(T.x > max_inner_x) max_inner_x = T.x
if(T.y > max_inner_y) max_inner_y = T.y
for(var/atom/movable/O in T)
screen += O
inner_width = max_inner_x - inner_x + 1
inner_height = max_inner_y - inner_y + 1
if(inner_height < 0) inner_height = 0
if(inner_width < 0) inner_width = 0
for(var/atom/movable/O in screen)
O.screen_loc = "[O.x-inner_x+1],[O.y-inner_y+1]"
return screen
ScreenBuilder/Entered(atom/movable/O)
O.screen_loc = "[O.x-inner_x+1],[O.y-inner_y+1]"
ScreenBuilder/InnerMap/Entered(O)
var/ScreenBuilder/screen_area = loc
if(istype(screen_area)) screen_area.Entered(O)
ScreenBuilder/MapBorder/Entered(O)
var/ScreenBuilder/screen_area = loc
if(istype(screen_area)) screen_area.Entered(O)
client/SetScreenArea(ScreenBuilder/new_screen)
if(!isloc(new_screen)) new_screen = locate(new_screen)
if(new_screen == screen_area) return
if(isloc(screen_area))
screen -= screen_area.GetScreenList()
if(new_screen)
screen += new_screen.GetScreenList()
view = "[new_screen.inner_width]x[new_screen.inner_height]"
screen_area = new_screen
Problem description: Ok thats my current screen code and my problem is that I have objects on it which i change and if i change them they change for every user so im assuming the problem is that i need a seperate screen to be generated for each player so if anyone knows how to change the above code to do that it would be helpful.
-Exophus