ID:166900
 
I've recently developed a sweet little system for making "thin" walls. (Walls between turfs instead of ON them) They basically operate as overlays to turfs. Turfs "generate" them based on v_walltype and h_walltype variables. My problem is... my walls look cool, but I intend to have some very cool looking things walking around behind them as well. I'd like to be able to toggle the visibility of my walls somehow, but on a per player basis. I'm not sure if this is even really possible on the current version of BYOND without turning all my walls into objs with a degree of invisibility. Any help would be appreciated, I've got very ambitious plans for this system, but that's nothing new, haha
client.image might work. Look up teh /image datum.
In response to CaptFalcon33035
I've got something working now, I'm just not sure how feasible it will be in the long run. Basically, I add part of my wall to the overlays for that turf and the other part to a list of "wall overlay images". I can then either add or remove that list of images to a client's image list. The problem is, I have no way of tracking where the images came from, so when a wall is destroyed, I'll basically have to rebuild the overlays list for every wall on the map. This might not be a problem, but it seems inefficient. Would an associative list help alleviate my problem? Horizontal walls require 2 images, vertical walls require 3. 1 of each of those images is an overlay to the turf, the others I place in the walloverlays list.
In response to DerDragon
If I were in your shoes, I would definitely create a wall handler, probably in a form something like this:

wall
var
list/viewers = new
proc
show(client/c)
var/list/wall_images = new
// add wall images to the list, and
// display them to c
var/viewer/v = new
v.images = wall_images
viewers[c.ckey] = v
remove(client/c)
ASSERT(viewers.Find(c.ckey))
var/viewer/v = viewers[c.ckey]
for(var/i in v.images)
del i
del v
remove_all()
for(var/viewer/v in viewers)
for(var/i in v.images)
del i
del v
viewer
var/list/images = new


At that point, showing or hiding walls on a player-by-player basis is a cakewalk, yes?