From 3f9204f4584dd4df30bad604b390809a31717f14 Mon Sep 17 00:00:00 2001 From: Tigercat2000 Date: Mon, 8 Jun 2015 04:55:40 -0700 Subject: [PATCH] Move trams to their own internal loop for speed. --- code/modules/tram/tram.dm | 91 ++++++++++++++++----------- code/modules/tram/tram_control_pad.dm | 2 + 2 files changed, 58 insertions(+), 35 deletions(-) diff --git a/code/modules/tram/tram.dm b/code/modules/tram/tram.dm index c557199069b..0ae4ef41e93 100644 --- a/code/modules/tram/tram.dm +++ b/code/modules/tram/tram.dm @@ -1,36 +1,3 @@ -/obj/tram/ex_act(severity) - switch(severity) - if(1.0) - qdel(src) - return - if(2.0) - if(prob(50)) - qdel(src) - return - if(3.0) - if(prob(25)) - qdel(src) - return - -/obj/tram/blob_act() - if(prob(50)) - qdel(src) - -/obj/tram/meteorhit() - qdel(src) - -/obj/tram/attack_animal(var/mob/living/simple_animal/M as mob) - if(M.melee_damage_upper == 0) return - if(prob(M.melee_damage_upper)) - qdel(src) - src.visible_message("\red [M] has [M.attacktext] [src]!") - M.attack_log += text("\[[time_stamp()]\] attacked [src.name]") - -/obj/tram/bullet_act(var/obj/item/projectile/proj) - if(prob(proj.damage)) - qdel(src) - ..() - /obj/tram/tram_controller name = "" desc = "tram controller" @@ -48,6 +15,11 @@ var/last_played_rail var/automode = 0 + var/fast_mode = 0 + + var/activated = 0 + var/looptick = 0 + var/list/blacklist = list(/obj/tram/rail,/atom/movable/lighting_overlay) var/list/ancwhitelist = list(/obj/tram, /obj/vehicle, /obj/structure/stool/bed/chair, /obj/structure/grille, /obj/structure/window) @@ -59,7 +31,6 @@ 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/Destroy() for(var/obj/tram/floor/F in tram_floors) @@ -68,16 +39,32 @@ remove_wall(TW) for(var/obj/tram/controlpad/CP in controllers) remove_controller(CP) + killLoop() ..() /obj/tram/tram_controller/emp_act(severity) if(automode) automode = 0 ..() +/obj/tram/tram_controller/proc/startLoop() + if(activated) return + activated = 1 + spawn(0) + while(activated) + process() + looptick++ + sleep(1) + +/obj/tram/tram_controller/proc/killLoop() + activated = 0 + looptick = 0 + /obj/tram/tram_controller/process() update_tram() //Update combine to account for new mobs and/or objects if(automode) tram_rail_follow() + if(fast_mode) + tram_rail_follow() /obj/tram/tram_controller/proc/update_tram() tram.Cut() @@ -234,4 +221,38 @@ if(A.light_range) A.set_light() gen_collision() //Generate collision again - return 1 \ No newline at end of file + return 1 + +//////////////////////DAMAGE PROCS +/obj/tram/ex_act(severity) + switch(severity) + if(1.0) + qdel(src) + return + if(2.0) + if(prob(50)) + qdel(src) + return + if(3.0) + if(prob(25)) + qdel(src) + return + +/obj/tram/blob_act() + if(prob(50)) + qdel(src) + +/obj/tram/meteorhit() + qdel(src) + +/obj/tram/attack_animal(var/mob/living/simple_animal/M as mob) + if(M.melee_damage_upper == 0) return + if(prob(M.melee_damage_upper)) + qdel(src) + src.visible_message("\red [M] has [M.attacktext] [src]!") + M.attack_log += text("\[[time_stamp()]\] attacked [src.name]") + +/obj/tram/bullet_act(var/obj/item/projectile/proj) + if(prob(proj.damage)) + qdel(src) + ..() \ No newline at end of file diff --git a/code/modules/tram/tram_control_pad.dm b/code/modules/tram/tram_control_pad.dm index 367e6785648..dd5c7390354 100644 --- a/code/modules/tram/tram_control_pad.dm +++ b/code/modules/tram/tram_control_pad.dm @@ -23,6 +23,8 @@ if(href_list["engine_toggle"]) tram_linked.automode = !tram_linked.automode + if(tram_linked.automode) tram_linked.startLoop() + else tram_linked.killLoop() else if(href_list["close"]) usr.unset_machine() usr << browse(null, "window=trampad")