Files
CHOMPStation2/code/modules/power/singularity/particle_accelerator/particle_control.dm
baloh.matevz e8c6b08419 - Object tree grouped a bit more.
Two new categories were made: station_objects and effects. station_objects, which I'm sure someone will want renamed to 'structures' contains the objects which don't need process() or power code.

Effects contains objects which are either landmarks, triggers, spawners or decal.

Screenshot:
http://www.kamletos.si/new%20object%20tree.PNG

I didn't notice any bugs, but with a revision editing 276 files of byond code, you never know.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2323 316c924e-a436-60f5-8080-3fe189b3f50e
2011-10-03 06:54:28 +00:00

186 lines
4.4 KiB
Plaintext

/obj/machinery/particle_accelerator/control_box
name = "Particle Accelerator Control Box"
desc = "Part of a Particle Accelerator."
icon = 'particle_accelerator.dmi'
icon_state = "control_box"
anchored = 0
density = 1
use_power = 0
idle_power_usage = 500
active_power_usage = 10000
construction_state = 0
active = 0
var
list/obj/station_objects/particle_accelerator/connected_parts
assembled = 0
strength = 0
New()
connected_parts = list()
..()
attack_hand(mob/user as mob)
if(construction_state >= 3)
interact(user)
update_state()
if(construction_state < 3)
use_power = 0
assembled = 0
active = 0
connected_parts = list()
return
if(!part_scan())
assembled = 0
return
Topic(href, href_list)
..()
if( href_list["close"] )
usr << browse(null, "window=pacontrol")
usr.machine = null
return
if(href_list["togglep"])
src.toggle_power()
if(href_list["scan"])
src.part_scan()
if(href_list["strengthup"])
src.strength++
if(src.strength > 2)
src.strength = 2
if(href_list["strengthdown"])
src.strength--
if(src.strength < 0)
src.strength = 0
src.updateDialog()
power_change()
..()
if(stat & NOPOWER)
active = 0
use_power = 0
else if(!stat)
use_power = 1
return
process()
if(src.active)
for(var/obj/station_objects/particle_accelerator/particle_emitter/PE in connected_parts)
if(PE)
PE.emit_particle(src.strength)
// for(var/obj/station_objects/particle_accelerator/fuel_chamber/PF in connected_parts)
// PF.doshit()
// for(var/obj/station_objects/particle_accelerator/power_box/PB in connected_parts)
// PB.doshit()
//finish up putting the fuel run and power use things in here
return
proc
part_scan()
connected_parts = list()
var/tally = 0
var/ldir = 0
var/rdir = 0
var/odir = 0
switch(src.dir)
if(1)
ldir = 4
rdir = 8
odir = 2
if(2)
ldir = 8
rdir = 4
odir = 1
if(4)
ldir = 1
rdir = 2
odir = 8
if(8)
ldir = 2
rdir = 1
odir = 4
var/turf/T = src.loc
T = get_step(T,rdir)
if(check_part(T,/obj/station_objects/particle_accelerator/fuel_chamber))
tally++
T = get_step(T,odir)
if(check_part(T,/obj/station_objects/particle_accelerator/end_cap))
tally++
T = get_step(T,dir)
T = get_step(T,dir)
if(check_part(T,/obj/station_objects/particle_accelerator/power_box))
tally++
T = get_step(T,dir)
if(check_part(T,/obj/station_objects/particle_accelerator/particle_emitter/center))
tally++
T = get_step(T,ldir)
if(check_part(T,/obj/station_objects/particle_accelerator/particle_emitter/left))
tally++
T = get_step(T,rdir)
T = get_step(T,rdir)
if(check_part(T,/obj/station_objects/particle_accelerator/particle_emitter/right))
tally++
if(tally >= 6)
assembled = 1
return 1
else
assembled = 0
return 0
check_part(var/turf/T, var/type)
if(!(T)||!(type))
return 0
var/obj/station_objects/particle_accelerator/PA = locate(/obj/station_objects/particle_accelerator) in T
if(istype(PA, type))
if(PA.connect_master(src))
if(PA.report_ready(src))
src.connected_parts.Add(PA)
return 1
return 0
toggle_power()
src.active = !src.active
if(src.active)
src.use_power = 2
else
src.use_power = 1
return 1
interact(mob/user)
if ( (get_dist(src, user) > 1 ) || (stat & (BROKEN|NOPOWER)) )
if (!istype(user, /mob/living/silicon))
user.machine = null
user << browse(null, "window=pacontrol")
return
user.machine = src
var/dat = ""
dat += "Particle Accelerator Control Panel<BR>"
dat += "<A href='?src=\ref[src];close=1'>Close</A><BR><BR>"
dat += "Status:<BR>"
if(!assembled)
dat += "Unable to detect all parts!<BR>"
dat += "<A href='?src=\ref[src];scan=1'>Run Scan</A><BR><BR>"
else
dat += "All parts in place.<BR><BR>"
dat += "Power:"
if(active)
dat += "On<BR>"
else
dat += "Off <BR>"
dat += "<A href='?src=\ref[src];togglep=1'>Toggle Power</A><BR><BR>"
dat += "Particle Strength: [src.strength] "
dat += "<A href='?src=\ref[src];strengthdown=1'>--</A>|<A href='?src=\ref[src];strengthup=1'>++</A><BR><BR>"
user << browse(dat, "window=pacontrol;size=420x500")
onclose(user, "pacontrol")