MT/TS: Rails

This commit converts the MT/TS control system from a debugging move panel
to a on-rails system. The controlpad has been repurposed as an on/off
button.
This commit is contained in:
Tigercat2000
2015-05-18 15:24:35 -07:00
parent 22fd91853f
commit f9a3951139
6 changed files with 66 additions and 11 deletions
+41 -6
View File
@@ -12,23 +12,44 @@
var/list/collide_list = list()
var/list/stored_anchor = list()
var/last_played_rail
var/automode = 0
var/list/blacklist = list(/obj/tram/rail,/atom/movable/lighting_overlay)
/obj/tram/tram_controller/New()
init_floors() //Search and link floors
init_walls() //Search and link walls
spawn(1)
init_tram() //Combine walls and floors and anything inside the tram
init_controllers() //Find control pads
gen_collision() //Generate collision system
processing_objects.Add(src) //Add to processing objects manually
init_floors() //Search and link floors
init_walls() //Search and link walls
spawn(1)
init_tram() //Combine walls and floors and anything inside the tram
init_controllers() //Find control pads
gen_collision() //Generate collision system
processing_objects.Add(src) //Add to processing objects manually
/obj/tram/tram_controller/process()
update_tram() //Update combine to account for new mobs and/or objects
if(automode)
tram_rail_follow()
/obj/tram/tram_controller/proc/update_tram()
tram.Cut()
init_tram()
/obj/tram/tram_controller/proc/tram_rail_follow()
var/stored_rail = null
for(var/obj/tram/rail/RT in get_turf(src))
if(RT.godir)
handle_move(RT.godir)
last_played_rail = RT
return
stored_rail = RT
for(var/cdir in cardinal)
for(var/obj/tram/rail/R in get_step(src,cdir))
if(R != last_played_rail)
handle_move(get_dir(src,R))
last_played_rail = stored_rail
//INITIALIZATION PROCS
/obj/tram/tram_controller/proc/init_floors()
@@ -66,6 +87,7 @@
var/turf/T = get_turf(OT)
for(var/atom/movable/AM in T) //Including anything inside of it
if(AM in tram) continue
if(is_type_in_list(AM, blacklist)) continue
tram += AM
/obj/tram/tram_controller/proc/init_controllers()
@@ -129,6 +151,17 @@
if(A.density)
if(tram.Find(A)) continue
collisions += cdir
for(var/obj/tram/floor/F in tram_floors)
for(var/cdir in cardinal)
var/turf/T = get_step(F, cdir)
if(istype(T))
if(T.density)
collisions += cdir
if(!T.density)
for(var/atom/movable/A in T)
if(A.density)
if(tram.Find(A)) continue
collisions += cdir
collide_list = collisions
/obj/tram/tram_controller/proc/handle_move(var/dir)
@@ -138,5 +171,7 @@
for(var/atom/movable/A in tram)
var/turf/T = get_step(A,dir)
A.forceMove(T) //Move everything inside the tram and the tram itself manually
if(A.light_range)
A.set_light()
gen_collision() //Generate collision again
return 1
+17 -5
View File
@@ -4,16 +4,28 @@
icon = 'icons/obj/airlock_machines.dmi'
icon_state = "airlock_control_standby"
var/obj/tram/tram_controller/tram_linked
var/list/cdir2readable = list("North","South",null,"East",null,null,null,"West")
/obj/tram/controlpad/attack_hand(var/mob/user)
usr.set_machine(src)
if(!tram_linked) return
var/dat = "Tram Controller"
for(var/cdir in cardinal)
dat += "<br>Move to: <a href=?src=\ref[src];movedir=[cdir]>[cdir]</a>"
dat += "<br>Tram engine: <a href=?src=\ref[src];engine_toggle=1>[tram_linked.automode ? "<font color='green'>On</font>" : "<font color='red'>Off</font>"]</a>"
dat += "<br><A href='?src=\ref[src];close=1'>Close console</A>"
user << browse(dat, "window=trampad")
onclose(user,"trampad")
/obj/tram/controlpad/Topic(href, href_list)
if(href_list["movedir"])
var/dir = text2num(href_list["movedir"])
tram_linked.handle_move(dir)
if(..())
usr << browse(null, "window=publiclibrary")
onclose(usr, "publiclibrary")
return
if(href_list["engine_toggle"])
tram_linked.automode = !tram_linked.automode
else if(href_list["close"])
usr.unset_machine()
usr << browse(null, "window=trampad")
src.add_fingerprint(usr)
src.updateUsrDialog()
+1
View File
@@ -4,6 +4,7 @@
icon_state = "floor"
var/obj/tram/tram_controller/controller
anchored = 1
layer = TURF_LAYER + 0.2
/obj/tram/floor/proc/spread_floors()
var/turf/T = get_turf(src)
+6
View File
@@ -0,0 +1,6 @@
/obj/tram/rail
name = "tram rail"
desc = "A guiding rail for trams"
icon = 'icons/obj/tram/tram_rail.dmi'
icon_state = "rail"
var/godir = null