mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
RCD overhaul (#37413)
* basics * floors * to the windowwwwwwwwwwwwwww * icon fixes and wood walls * DOOR STUCK * dumb fix lmao * DOOR STUCK * wow guys linters are so fucking cool * fixed some scuff, new buildables * windoors, girders, removed useless changes * relative path fix * more lint * vars moved to parent object * borg * mechs * code cleanup * suggested changes --------- Co-authored-by: west3436 <66280799+west3436@users.noreply.github.com>
This commit is contained in:
@@ -38,10 +38,21 @@
|
||||
var/datum/html_interface/rcd/interface
|
||||
|
||||
var/obj/abstract/screen/close/closer
|
||||
|
||||
|
||||
var/list/settings //for stuff like window directions and construction options.
|
||||
var/current_menu=null //we are keeping both systems of schematics for the sake of backwards compatability
|
||||
var/list/schem_groups=null
|
||||
var/datum/rcd_grouped_schematic/selected_schem=null
|
||||
|
||||
|
||||
|
||||
/obj/item/device/rcd/New()
|
||||
. = ..()
|
||||
|
||||
schem_groups=new()
|
||||
settings=new()
|
||||
|
||||
//interface gets created BEFORE the schematics get created, so they can modify the HEAD content (RPD pipe colour picker).
|
||||
interface = new(src, sanitize(name))
|
||||
data = list()
|
||||
@@ -368,8 +379,159 @@
|
||||
/datum/rcd_schematic/con_walls,
|
||||
/datum/rcd_schematic/con_airlock,
|
||||
/datum/rcd_schematic/con_window,
|
||||
)
|
||||
)
|
||||
current_menu="deconstruct"
|
||||
|
||||
/obj/item/device/rcd/mech/attack_self(var/mob/living/user)
|
||||
if(!selected || user.shown_schematics_background || !selected.show(user))
|
||||
user.hud_used.toggle_show_schematics_display(schematics["Construction"], 0, src)
|
||||
|
||||
/obj/item/device/rcd/mech/New()
|
||||
. = ..()
|
||||
rcd_list += src
|
||||
|
||||
var/datum/rcd_scematic_grouping/destroy/dest_g = new(src)
|
||||
dest_g.schematics+= new /datum/rcd_grouped_schematic/destroy_all(src)
|
||||
|
||||
schem_groups+=dest_g
|
||||
schem_groups+= new /datum/rcd_scematic_grouping/build_wall/engi_std(src)
|
||||
schem_groups+= new /datum/rcd_scematic_grouping/build_floors/engi_std(src)
|
||||
schem_groups+= new /datum/rcd_scematic_grouping/build_airlock/engi_std(src)
|
||||
schem_groups+=new /datum/rcd_scematic_grouping/build_windows/engi_std(src)
|
||||
|
||||
current_menu=schem_groups[1].name
|
||||
schem_groups[1].switch_to()
|
||||
|
||||
|
||||
/obj/item/device/rcd/mech/attack_self(var/mob/user)
|
||||
rebuild_ui()
|
||||
interface.show(user)
|
||||
for(var/datum/rcd_scematic_grouping/schemgroup in schem_groups)
|
||||
schemgroup.send_assets(user.client)
|
||||
for(var/datum/rcd_grouped_schematic/sch)
|
||||
sch.send_assets(user.client)
|
||||
interface.hide(user) //have to do this since loading so many images takes a lot of time. and no images is better than no UI
|
||||
interface.show(user)
|
||||
|
||||
|
||||
/obj/item/device/rcd/mech/Topic(var/href, var/list/href_list)
|
||||
//for(var/i in href_list)
|
||||
// world.log << "[i] = [href_list[i]]"
|
||||
|
||||
if(href_list["set_group"])
|
||||
for(var/datum/rcd_scematic_grouping/schem_group in schem_groups)
|
||||
if(schem_group.name==href_list["set_group"])
|
||||
current_menu=href_list["set_group"]
|
||||
schem_group.switch_to()
|
||||
do_spark()
|
||||
rebuild_ui()
|
||||
return
|
||||
if(href_list["set_schematic"])
|
||||
var/datum/rcd_scematic_grouping/group
|
||||
for(var/datum/rcd_scematic_grouping/schem_group in schem_groups)
|
||||
if(schem_group.name==current_menu)
|
||||
group=schem_group
|
||||
break
|
||||
if(group)
|
||||
for(var/datum/rcd_grouped_schematic/schm in group.schematics)
|
||||
if(schm.name==href_list["set_schematic"])
|
||||
selected_schem=schm
|
||||
do_spark()
|
||||
rebuild_ui()
|
||||
break
|
||||
return
|
||||
if(href_list["set_arg"])
|
||||
if(href_list["value_togglelist"])
|
||||
var/val = href_list["value_isnum"]=="yes" ? text2num(href_list["value"]) : href_list["value"]
|
||||
var/found=FALSE
|
||||
for(var/n in settings[href_list["set_arg"]])
|
||||
if(n==val)
|
||||
found=TRUE
|
||||
break
|
||||
if( found )
|
||||
settings[href_list["set_arg"]] -= val
|
||||
else
|
||||
settings[href_list["set_arg"]] += val
|
||||
else if(href_list["value_resetlist"])
|
||||
settings[href_list["set_arg"]]=new /list()
|
||||
else if(href_list["value_toggle"] )
|
||||
settings[href_list["set_arg"]] = ! settings[href_list["set_arg"]]
|
||||
else if (href_list["value_input"])
|
||||
var/tx=""
|
||||
for(var/datum/rcd_scematic_grouping/schem_group in schem_groups)
|
||||
if(schem_group.name==current_menu)
|
||||
tx=schem_group.selectiondialogue
|
||||
break
|
||||
settings[href_list["set_arg"]] = input(usr, tx, src, "[selected_schem?.name]")
|
||||
else
|
||||
settings[href_list["set_arg"]] = href_list["value_isnum"]=="yes" ? text2num(href_list["value"]) : href_list["value"]
|
||||
rebuild_ui()
|
||||
return
|
||||
|
||||
return
|
||||
|
||||
/obj/item/device/rcd/mech/rebuild_ui()
|
||||
var/dat=""
|
||||
|
||||
//that's right, you can embed a stylesheet in the html body, and you better believe i'm going to do this instead of setting up a whole new file for like 2 rules.
|
||||
dat+={"<style>
|
||||
.grouplisting{
|
||||
text-align:center;
|
||||
font-size:100%;
|
||||
}
|
||||
.grouplisting img {
|
||||
width:64px;
|
||||
height:64px;
|
||||
}
|
||||
|
||||
.grouplisting a{
|
||||
width:100%;
|
||||
height:100%;
|
||||
display:block;
|
||||
background:revert;
|
||||
}
|
||||
|
||||
.clickabletable td{
|
||||
text-align:center;
|
||||
height:100%; /*to make it so that links inhabit the whole size of the td. kinda annoying to have to do all this.*/
|
||||
}
|
||||
|
||||
.clickabletable a{
|
||||
width:100%;
|
||||
height:100%;
|
||||
display:block;
|
||||
}
|
||||
|
||||
img, .clickabletable img, .grouplisting img {
|
||||
border:none;
|
||||
background:none;
|
||||
image-rendering:pixelated;
|
||||
}
|
||||
|
||||
</style>"}
|
||||
|
||||
dat+="<table class='grouplisting'><tr>"
|
||||
for(var/datum/rcd_scematic_grouping/schem_group in schem_groups)
|
||||
dat+="<td class='[schem_group.name==current_menu ? "schem_selected" : "schem" ]'><a href='?src=\ref[interface];set_group=[schem_group.name]'><img src='[schem_group.headerimage]'><br>[schem_group.name]</a></td>"
|
||||
dat+="</tr></table><hr>"
|
||||
|
||||
for(var/datum/rcd_scematic_grouping/schem_group in schem_groups)
|
||||
if(schem_group.name==current_menu)
|
||||
var/t=schem_group.generate_html()
|
||||
dat+=t
|
||||
break
|
||||
|
||||
interface.updateLayout(dat)
|
||||
|
||||
/obj/item/device/rcd/mech/afterattack(var/atom/A, var/mob/user)
|
||||
if(!selected_schem)
|
||||
return 1
|
||||
if( !(user.Adjacent(A) && A.Adjacent(user)) )
|
||||
return 1
|
||||
if(get_dist(A, user) > 1)
|
||||
return 1
|
||||
|
||||
var/c=selected_schem.build(A,user)
|
||||
if(!c)
|
||||
to_chat(user, "<span class='warning'>\The [src]'s error light flickers.</span>")
|
||||
else
|
||||
use_energy(c, user)
|
||||
rebuild_ui()
|
||||
return 1
|
||||
@@ -6,11 +6,32 @@
|
||||
/datum/rcd_schematic/con_airlock,
|
||||
/datum/rcd_schematic/con_window,
|
||||
)
|
||||
current_menu="deconstruct"
|
||||
|
||||
/obj/item/device/rcd/matter/engineering/New()
|
||||
|
||||
/obj/item/device/rcd/matter/engineering/New(var/loc=null,var/no_schematics=FALSE)
|
||||
. = ..()
|
||||
rcd_list += src
|
||||
|
||||
if(!no_schematics)
|
||||
var/datum/rcd_scematic_grouping/destroy/dest_g = new(src)
|
||||
dest_g.schematics+= new /datum/rcd_grouped_schematic/destroy_all(src)
|
||||
|
||||
var/datum/rcd_scematic_grouping/build_wall/engi_std/wall_g = new(src)
|
||||
var/datum/rcd_scematic_grouping/build_floors/engi_std/floor_g = new(src)
|
||||
var/datum/rcd_scematic_grouping/build_windows/engi_std/window_g = new(src)
|
||||
var/datum/rcd_scematic_grouping/build_airlock/engi_std/airlock_g=new(src)
|
||||
|
||||
schem_groups+=dest_g
|
||||
schem_groups+=wall_g
|
||||
schem_groups+=floor_g
|
||||
schem_groups+=airlock_g
|
||||
schem_groups+=window_g
|
||||
|
||||
current_menu=schem_groups[1].name
|
||||
schem_groups[1].switch_to()
|
||||
|
||||
|
||||
/obj/item/device/rcd/matter/engineering/Destroy()
|
||||
. = ..()
|
||||
rcd_list -= src
|
||||
@@ -20,16 +41,159 @@
|
||||
return
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/item/device/rcd/matter/engineering/attack_self(var/mob/user)
|
||||
rebuild_ui()
|
||||
interface.show(user)
|
||||
for(var/datum/rcd_scematic_grouping/schemgroup in schem_groups)
|
||||
schemgroup.send_assets(user.client)
|
||||
for(var/datum/rcd_grouped_schematic/sch)
|
||||
sch.send_assets(user.client)
|
||||
interface.hide(user) //have to do this since loading so many images takes a lot of time. and no images is better than no UI
|
||||
interface.show(user)
|
||||
|
||||
|
||||
/obj/item/device/rcd/matter/engineering/Topic(var/href, var/list/href_list)
|
||||
if(href_list["set_group"])
|
||||
for(var/datum/rcd_scematic_grouping/schem_group in schem_groups)
|
||||
if(schem_group.name==href_list["set_group"])
|
||||
current_menu=href_list["set_group"]
|
||||
schem_group.switch_to()
|
||||
do_spark()
|
||||
rebuild_ui()
|
||||
return
|
||||
if(href_list["set_schematic"])
|
||||
var/datum/rcd_scematic_grouping/group
|
||||
for(var/datum/rcd_scematic_grouping/schem_group in schem_groups)
|
||||
if(schem_group.name==current_menu)
|
||||
group=schem_group
|
||||
break
|
||||
if(group)
|
||||
for(var/datum/rcd_grouped_schematic/schm in group.schematics)
|
||||
if(schm.name==href_list["set_schematic"])
|
||||
selected_schem=schm
|
||||
do_spark()
|
||||
rebuild_ui()
|
||||
break
|
||||
return
|
||||
if(href_list["set_arg"])
|
||||
if(href_list["value_togglelist"])
|
||||
var/val = href_list["value_isnum"]=="yes" ? text2num(href_list["value"]) : href_list["value"]
|
||||
var/found=FALSE
|
||||
for(var/n in settings[href_list["set_arg"]])
|
||||
if(n==val)
|
||||
found=TRUE
|
||||
break
|
||||
if( found )
|
||||
settings[href_list["set_arg"]] -= val
|
||||
else
|
||||
settings[href_list["set_arg"]] += val
|
||||
else if(href_list["value_resetlist"])
|
||||
settings[href_list["set_arg"]]=new /list()
|
||||
else if(href_list["value_toggle"] )
|
||||
settings[href_list["set_arg"]] = ! settings[href_list["set_arg"]]
|
||||
else if (href_list["value_input"])
|
||||
var/tx=""
|
||||
for(var/datum/rcd_scematic_grouping/schem_group in schem_groups)
|
||||
if(schem_group.name==current_menu)
|
||||
tx=schem_group.selectiondialogue
|
||||
break
|
||||
settings[href_list["set_arg"]] = input(usr, tx, src, "[selected_schem?.name]")
|
||||
else
|
||||
settings[href_list["set_arg"]] = href_list["value_isnum"]=="yes" ? text2num(href_list["value"]) : href_list["value"]
|
||||
rebuild_ui()
|
||||
return
|
||||
|
||||
return
|
||||
|
||||
/obj/item/device/rcd/matter/engineering/rebuild_ui()
|
||||
var/dat=""
|
||||
|
||||
dat+="Compressed Matter: [matter]/[max_matter]<hr>"
|
||||
|
||||
//that's right, you can embed a stylesheet in the html body, and you better believe i'm going to do this instead of setting up a whole new file for like 2 rules.
|
||||
dat+={"<style>
|
||||
.grouplisting{
|
||||
text-align:center;
|
||||
font-size:100%;
|
||||
}
|
||||
.grouplisting img {
|
||||
width:64px;
|
||||
height:64px;
|
||||
}
|
||||
|
||||
.grouplisting a{
|
||||
width:100%;
|
||||
height:100%;
|
||||
display:block;
|
||||
background:revert;
|
||||
}
|
||||
|
||||
.clickabletable td{
|
||||
text-align:center;
|
||||
height:100%; /*to make it so that links inhabit the whole size of the td. kinda annoying to have to do all this.*/
|
||||
}
|
||||
|
||||
.clickabletable a{
|
||||
width:100%;
|
||||
height:100%;
|
||||
display:block;
|
||||
}
|
||||
|
||||
img, .clickabletable img, .grouplisting img {
|
||||
border:none;
|
||||
background:none;
|
||||
image-rendering:pixelated;
|
||||
}
|
||||
|
||||
</style>"}
|
||||
|
||||
dat+="<table class='grouplisting'><tr>"
|
||||
for(var/datum/rcd_scematic_grouping/schem_group in schem_groups)
|
||||
dat+="<td class='[schem_group.name==current_menu ? "schem_selected" : "schem" ]'><a href='?src=\ref[interface];set_group=[schem_group.name]'><img src='[schem_group.headerimage]'><br>[schem_group.name]</a></td>"
|
||||
dat+="</tr></table><hr>"
|
||||
|
||||
|
||||
for(var/datum/rcd_scematic_grouping/schem_group in schem_groups)
|
||||
if(schem_group.name==current_menu)
|
||||
var/t=schem_group.generate_html()
|
||||
dat+=t
|
||||
break
|
||||
|
||||
|
||||
interface.updateLayout(dat)
|
||||
|
||||
/obj/item/device/rcd/matter/engineering/afterattack(var/atom/A, var/mob/user)
|
||||
if(!selected_schem)
|
||||
return 1
|
||||
if( !(user.Adjacent(A) && A.Adjacent(user)) )
|
||||
return 1
|
||||
if(get_dist(A, user) > 1)
|
||||
return 1
|
||||
|
||||
var/c=selected_schem.build(A,user)
|
||||
if(!c)
|
||||
to_chat(user, "<span class='warning'>\The [src]'s error light flickers.</span>")
|
||||
else
|
||||
use_energy(c, user)
|
||||
rebuild_ui()
|
||||
return 1
|
||||
|
||||
|
||||
/obj/item/device/rcd/matter/engineering/suicide_act(var/mob/living/user)
|
||||
visible_message("<span class='danger'>[user] is using the deconstruct function on \the [src] on \himself! It looks like \he's trying to commit suicide!</span>")
|
||||
user.death(1)
|
||||
return SUICIDE_ACT_CUSTOM
|
||||
|
||||
/obj/item/device/rcd/matter/engineering/pre_loaded/New() //Comes with max energy
|
||||
..()
|
||||
/obj/item/device/rcd/matter/engineering/pre_loaded/New(var/loc=null,var/no_schematics=FALSE) //Comes with max energy
|
||||
..(loc,no_schematics)
|
||||
matter = max_matter
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/obj/item/device/rcd/borg/engineering
|
||||
schematics = list(
|
||||
/datum/rcd_schematic/decon,
|
||||
@@ -38,6 +202,188 @@
|
||||
/datum/rcd_schematic/con_airlock/borg,
|
||||
/datum/rcd_schematic/con_window/borg,
|
||||
)
|
||||
var/matter=0
|
||||
|
||||
current_menu="deconstruct"
|
||||
|
||||
/obj/item/device/rcd/borg/engineering/New()
|
||||
. = ..()
|
||||
rcd_list += src
|
||||
|
||||
var/datum/rcd_scematic_grouping/destroy/dest_g = new(src)
|
||||
dest_g.schematics+= new /datum/rcd_grouped_schematic/destroy_all(src)
|
||||
|
||||
schem_groups+=dest_g
|
||||
schem_groups+=new /datum/rcd_scematic_grouping/build_wall/engi_std(src)
|
||||
schem_groups+=new /datum/rcd_scematic_grouping/build_floors/engi_std(src)
|
||||
schem_groups+=new /datum/rcd_scematic_grouping/build_airlock/engi_std(src)
|
||||
schem_groups+=new /datum/rcd_scematic_grouping/build_windows/engi_std(src)
|
||||
|
||||
current_menu=schem_groups[1].name
|
||||
schem_groups[1].switch_to()
|
||||
|
||||
|
||||
/obj/item/device/rcd/borg/engineering/attack_self(var/mob/user)
|
||||
if(!isrobot(user))
|
||||
return
|
||||
var/mob/living/silicon/robot/R = user
|
||||
if(!R.cell)
|
||||
matter=0
|
||||
else
|
||||
matter=R.cell.charge / cell_power_per_energy
|
||||
|
||||
rebuild_ui()
|
||||
interface.show(user)
|
||||
for(var/datum/rcd_scematic_grouping/schemgroup in schem_groups)
|
||||
schemgroup.send_assets(user.client)
|
||||
for(var/datum/rcd_grouped_schematic/sch)
|
||||
sch.send_assets(user.client)
|
||||
interface.hide(user) //have to do this since loading so many images takes a lot of time. and no images is better than no UI
|
||||
interface.show(user)
|
||||
|
||||
|
||||
/obj/item/device/rcd/borg/engineering/Topic(var/href, var/list/href_list)
|
||||
//for(var/i in href_list)
|
||||
// world.log << "[i] = [href_list[i]]"
|
||||
|
||||
if(href_list["set_group"])
|
||||
for(var/datum/rcd_scematic_grouping/schem_group in schem_groups)
|
||||
if(schem_group.name==href_list["set_group"])
|
||||
current_menu=href_list["set_group"]
|
||||
schem_group.switch_to()
|
||||
do_spark()
|
||||
rebuild_ui()
|
||||
return
|
||||
if(href_list["set_schematic"])
|
||||
var/datum/rcd_scematic_grouping/group
|
||||
for(var/datum/rcd_scematic_grouping/schem_group in schem_groups)
|
||||
if(schem_group.name==current_menu)
|
||||
group=schem_group
|
||||
break
|
||||
if(group)
|
||||
for(var/datum/rcd_grouped_schematic/schm in group.schematics)
|
||||
if(schm.name==href_list["set_schematic"])
|
||||
selected_schem=schm
|
||||
do_spark()
|
||||
rebuild_ui()
|
||||
break
|
||||
return
|
||||
if(href_list["set_arg"])
|
||||
if(href_list["value_togglelist"])
|
||||
var/val = href_list["value_isnum"]=="yes" ? text2num(href_list["value"]) : href_list["value"]
|
||||
var/found=FALSE
|
||||
for(var/n in settings[href_list["set_arg"]])
|
||||
if(n==val)
|
||||
found=TRUE
|
||||
break
|
||||
if( found )
|
||||
settings[href_list["set_arg"]] -= val
|
||||
else
|
||||
settings[href_list["set_arg"]] += val
|
||||
else if(href_list["value_resetlist"])
|
||||
settings[href_list["set_arg"]]=new /list()
|
||||
else if(href_list["value_toggle"] )
|
||||
settings[href_list["set_arg"]] = ! settings[href_list["set_arg"]]
|
||||
else if (href_list["value_input"])
|
||||
var/tx=""
|
||||
for(var/datum/rcd_scematic_grouping/schem_group in schem_groups)
|
||||
if(schem_group.name==current_menu)
|
||||
tx=schem_group.selectiondialogue
|
||||
break
|
||||
settings[href_list["set_arg"]] = input(usr, tx, src, "[selected_schem?.name]")
|
||||
else
|
||||
settings[href_list["set_arg"]] = href_list["value_isnum"]=="yes" ? text2num(href_list["value"]) : href_list["value"]
|
||||
rebuild_ui()
|
||||
return
|
||||
|
||||
return
|
||||
|
||||
/obj/item/device/rcd/borg/engineering/rebuild_ui()
|
||||
var/dat=""
|
||||
|
||||
dat+="Charge: [floor(matter)]<hr>"
|
||||
|
||||
//that's right, you can embed a stylesheet in the html body, and you better believe i'm going to do this instead of setting up a whole new file for like 2 rules.
|
||||
dat+={"<style>
|
||||
.grouplisting{
|
||||
text-align:center;
|
||||
font-size:100%;
|
||||
}
|
||||
.grouplisting img {
|
||||
width:64px;
|
||||
height:64px;
|
||||
}
|
||||
|
||||
.grouplisting a{
|
||||
width:100%;
|
||||
height:100%;
|
||||
display:block;
|
||||
background:revert;
|
||||
}
|
||||
|
||||
.clickabletable td{
|
||||
text-align:center;
|
||||
height:100%; /*to make it so that links inhabit the whole size of the td. kinda annoying to have to do all this.*/
|
||||
}
|
||||
|
||||
.clickabletable a{
|
||||
width:100%;
|
||||
height:100%;
|
||||
display:block;
|
||||
}
|
||||
|
||||
img, .clickabletable img, .grouplisting img {
|
||||
border:none;
|
||||
background:none;
|
||||
image-rendering:pixelated;
|
||||
}
|
||||
|
||||
</style>"}
|
||||
|
||||
dat+="<table class='grouplisting'><tr>"
|
||||
for(var/datum/rcd_scematic_grouping/schem_group in schem_groups)
|
||||
dat+="<td class='[schem_group.name==current_menu ? "schem_selected" : "schem" ]'><a href='?src=\ref[interface];set_group=[schem_group.name]'><img src='[schem_group.headerimage]'><br>[schem_group.name]</a></td>"
|
||||
dat+="</tr></table><hr>"
|
||||
|
||||
|
||||
for(var/datum/rcd_scematic_grouping/schem_group in schem_groups)
|
||||
if(schem_group.name==current_menu)
|
||||
var/t=schem_group.generate_html()
|
||||
dat+=t
|
||||
break
|
||||
|
||||
|
||||
interface.updateLayout(dat)
|
||||
|
||||
/obj/item/device/rcd/borg/engineering/afterattack(var/atom/A, var/mob/user)
|
||||
if(!selected_schem)
|
||||
return 1
|
||||
if( !(user.Adjacent(A) && A.Adjacent(user)) )
|
||||
return 1
|
||||
if(get_dist(A, user) > 1)
|
||||
return 1
|
||||
|
||||
if(!isrobot(user))
|
||||
return 1
|
||||
var/mob/living/silicon/robot/R = user
|
||||
if(!R.cell)
|
||||
matter=0
|
||||
else
|
||||
matter=R.cell.charge / cell_power_per_energy
|
||||
|
||||
var/c=selected_schem.build(A,user)
|
||||
if(!c)
|
||||
to_chat(user, "<span class='warning'>\The [src]'s error light flickers.</span>")
|
||||
else
|
||||
use_energy(c, user)
|
||||
|
||||
if(!R.cell)
|
||||
matter=0
|
||||
else
|
||||
matter=R.cell.charge / cell_power_per_energy
|
||||
|
||||
rebuild_ui()
|
||||
return 1
|
||||
|
||||
/obj/item/device/rcd/matter/engineering/pre_loaded/adv
|
||||
name = "advanced Rapid-Construction-Device (RCD)"
|
||||
@@ -58,6 +404,23 @@
|
||||
slimeadd_message = "You put the slime extract on the SRCTAG's compressed matter slot"
|
||||
slimes_accepted = SLIME_DARKPURPLE
|
||||
slimeadd_success_message = "It gains a distinct plasma pink hue"
|
||||
|
||||
/obj/item/device/rcd/matter/engineering/pre_loaded/adv/New(var/loc=null,var/no_schematics=FALSE)
|
||||
..(loc,TRUE)
|
||||
|
||||
if(!no_schematics)
|
||||
var/datum/rcd_scematic_grouping/destroy/dest_g = new(src)
|
||||
dest_g.schematics+= new /datum/rcd_grouped_schematic/destroy_all(src)
|
||||
|
||||
schem_groups+=dest_g
|
||||
schem_groups+=new /datum/rcd_scematic_grouping/build_wall/engi_std/CE(src)
|
||||
schem_groups+=new /datum/rcd_scematic_grouping/build_floors/engi_std/CE(src)
|
||||
schem_groups+=new /datum/rcd_scematic_grouping/build_airlock/engi_std/CE(src)
|
||||
schem_groups+=new /datum/rcd_scematic_grouping/build_windows/engi_std(src)
|
||||
|
||||
current_menu=schem_groups[1].name
|
||||
schem_groups[1].switch_to()
|
||||
|
||||
|
||||
/obj/item/device/rcd/matter/engineering/pre_loaded/adv/slime_act(primarytype, mob/user)
|
||||
. = ..()
|
||||
@@ -66,6 +429,15 @@
|
||||
if(!schematics[P.category])
|
||||
schematics[P.category] = list()
|
||||
schematics[P.category] += P
|
||||
|
||||
for(var/datum/rcd_scematic_grouping/schem_group in schem_groups)
|
||||
if(istype(schem_group,/datum/rcd_scematic_grouping/build_windows) )
|
||||
schem_group.schematics+=new /datum/rcd_grouped_schematic/glass/plasma(src)
|
||||
schem_group.schematics+=new /datum/rcd_grouped_schematic/glass/rplas(src)
|
||||
if(istype(schem_group,/datum/rcd_scematic_grouping/build_floors) )
|
||||
schem_group.schematics+= new/datum/rcd_grouped_schematic/plasmaglassfloor(src)
|
||||
rebuild_ui()
|
||||
|
||||
|
||||
/obj/item/device/rcd/matter/engineering/pre_loaded/adv/delay(var/mob/user, var/atom/target, var/amount)
|
||||
return do_after(user, target, amount/2)
|
||||
|
||||
@@ -135,3 +135,53 @@ params:
|
||||
return "<table class=[class]><tr>[fav_html]<td><a href='?src=\ref[interface];schematic=\ref[src];act=select' >[image_html][name]</a><td><tr></table>"
|
||||
|
||||
/datum/rcd_schematic/proc/MouseWheeled(var/mob/user, var/delta_x, var/delta_y, var/params)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/datum/rcd_scematic_grouping
|
||||
var/name = "group" //what's displayed
|
||||
var/list/schematics
|
||||
var/obj/item/device/rcd/linked_rcd=null
|
||||
var/headerimage="" //make sure you send_assets the image first, dummy
|
||||
var/selectiondialogue="enter text"
|
||||
|
||||
/datum/rcd_scematic_grouping/New(var/obj/item/device/rcd/rcdtouse=null)
|
||||
linked_rcd=rcdtouse
|
||||
schematics=new()
|
||||
return src
|
||||
|
||||
/datum/rcd_scematic_grouping/proc/switch_to()
|
||||
return
|
||||
|
||||
/datum/rcd_scematic_grouping/proc/generate_html()
|
||||
var/dat=""
|
||||
for(var/datum/rcd_grouped_schematic/schem in schematics)
|
||||
dat+=schem.generate_html()
|
||||
return dat
|
||||
|
||||
/datum/rcd_scematic_grouping/proc/send_assets(var/client/client)
|
||||
return
|
||||
|
||||
/datum/rcd_grouped_schematic
|
||||
var/name = "schematic" //what's displayed
|
||||
var/cost = 0 //cost is determined by the build proc, to support upgrading having less cost than building whole.
|
||||
var/obj/item/device/rcd/linked_rcd=null
|
||||
|
||||
/datum/rcd_grouped_schematic/New(var/obj/item/device/rcd/rcdtouse=null)
|
||||
linked_rcd=rcdtouse
|
||||
return src
|
||||
|
||||
/datum/rcd_grouped_schematic/proc/generate_html()
|
||||
return ""
|
||||
|
||||
/datum/rcd_grouped_schematic/proc/build(var/atom/A, var/mob/user)
|
||||
return 0
|
||||
|
||||
/datum/rcd_grouped_schematic/proc/send_assets(var/client/client)
|
||||
//register_asset("test.png", new/icon('thing.dmi', "state" ))
|
||||
//send_asset(client, "test.png")
|
||||
return
|
||||
|
||||
|
||||
|
||||
1214
code/modules/RCD/schematics/engineering_rcd.dm
Normal file
1214
code/modules/RCD/schematics/engineering_rcd.dm
Normal file
File diff suppressed because it is too large
Load Diff
@@ -2467,6 +2467,7 @@
|
||||
#include "code\modules\RCD\schematic.dm"
|
||||
#include "code\modules\RCD\tile painter.dm"
|
||||
#include "code\modules\RCD\schematics\engi.dm"
|
||||
#include "code\modules\RCD\schematics\engineering_rcd.dm"
|
||||
#include "code\modules\RCD\schematics\pipe.dm"
|
||||
#include "code\modules\RCD\schematics\rcd_window_spawner.dm"
|
||||
#include "code\modules\RCD\schematics\service.dm"
|
||||
|
||||
Reference in New Issue
Block a user