From 5b3512039d35e82a9313832d3517e7c6bff2f527 Mon Sep 17 00:00:00 2001 From: monster860 Date: Tue, 29 Mar 2016 16:57:57 -0400 Subject: [PATCH] Adds areaediting mode. --- code/modules/admin/buildmode.dm | 48 ++++++++++++++++++++++++++++++-- icons/misc/buildmode.dmi | Bin 1284 -> 1449 bytes 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/code/modules/admin/buildmode.dm b/code/modules/admin/buildmode.dm index ebe37bc9697..535ffed740e 100644 --- a/code/modules/admin/buildmode.dm +++ b/code/modules/admin/buildmode.dm @@ -4,7 +4,8 @@ #define THROW_BUILDMODE 4 #define AREA_BUILDMODE 5 #define COPY_BUILDMODE 6 -#define NUM_BUILDMODES 6 +#define AREAEDIT_BUILDMODE 7 +#define NUM_BUILDMODES 7 /obj/screen/buildmode icon = 'icons/misc/buildmode.dmi' @@ -128,11 +129,19 @@ var/varholder = "name" var/valueholder = "derp" var/objholder = /obj/structure/closet + var/area/storedarea = null + var/image/areaimage var/atom/movable/stored = null +/datum/click_intercept/buildmode/New(client/c) + ..() + areaimage = image('icons/turf/areas.dmi',null,"yellow") + holder.images += areaimage + /datum/click_intercept/buildmode/Destroy() stored = null Reset() + qdel(areaimage) ..() /datum/click_intercept/buildmode/create_buttons() @@ -188,6 +197,12 @@ user << "Left Mouse Button on obj/turf/mob = Spawn a Copy of selected target" user << "Right Mouse Button on obj/mob = Select target to copy" user << "***********************************************************" + if(AREAEDIT_BUILDMODE) + user << "***********************************************************" + user << "Left Mouse Button on obj/turf/mob = Paint area" + user << "Right Mouse Button on obj/turf/mob = Select area to paint" + user << "Right Mouse Button on buildmode button = Create new area" + user << "***********************************************************" /datum/click_intercept/buildmode/proc/change_settings(mob/user) switch(mode) @@ -199,7 +214,7 @@ objholder = text2path(target_path) if(!ispath(objholder)) objholder = pick_closest_path(target_path) - if(!objholder) + if(!objholder || ispath(objholder, /area)) objholder = /obj/structure/closet alert("That path is not allowed.") else @@ -234,6 +249,20 @@ generator_path = type cornerA = null cornerB = null + if(AREAEDIT_BUILDMODE) + var/target_path = input(user,"Enter typepath:", "Typepath", "/area") + var/areatype = text2path(target_path) + if(ispath(areatype,/area)) + var/areaname = input(user,"Enter area name:", "Area name", "Area") + if(!areaname || !length(areaname)) + return + storedarea = new areatype + storedarea.power_equip = 0 + storedarea.power_light = 0 + storedarea.power_environ = 0 + storedarea.always_unpowered = 0 + storedarea.name = areaname + areaimage.loc = storedarea /datum/click_intercept/buildmode/proc/change_dir() switch(build_dir) @@ -257,6 +286,10 @@ /datum/click_intercept/buildmode/proc/Reset()//Reset temporary variables deselect_region() + if(mode == AREAEDIT_BUILDMODE) + areaimage.loc = storedarea + else + areaimage.loc = null /datum/click_intercept/buildmode/proc/select_tile(var/turf/T) return new /obj/effect/buildmode_reticule(T, holder) @@ -396,3 +429,14 @@ if(ismovableatom(object)) // No copying turfs for now. user << "[object] set as template." stored = object + if(AREAEDIT_BUILDMODE) + if(left_click) + if(!storedarea) + return + var/turf/T = get_turf(object) + if(get_area(T) != storedarea) + storedarea.contents.Add(T) + else if(right_click) + var/turf/T = get_turf(object) + storedarea = get_area(T) + areaimage.loc = storedarea diff --git a/icons/misc/buildmode.dmi b/icons/misc/buildmode.dmi index ca9d1fd05ccad5c5e5804d31f60fddc673455e70..3ac5c80d1a51eea335ba4ca99ff40fa4f7bc0dc0 100644 GIT binary patch delta 1293 zcmV+o1@iiY3aJYviBL{Q4GJ0x0000DNk~Le0001>0001h1Oos70Det>C;$KeA(15@ z8Zr|FC=LdyiqrrA00DGTPE!Ct=GbNc005(rT#|pp84prwj!UVsf~%hkI86WmWS^OR z7)dK#000DsNklv=H^(I{E$0o zKVn!-x?%dCJo<|)Tfd#z-hB|;`>T4peG%LJs@`t*@(XVFt9rYARK@n~epPR`m)AXQ zzkYw*SsN#Hy}!~1z>(f=pUQ9eerF9Jb-iC|uu5qN+7s@@hTpj7Z%n%0FSQ}zP@fTM zJ3vUsD*c3zW7tP%;_+?~p^ZwfAvF1Tw}endB1-%#^CYJxq`42vlbyX@l(RXRy~d34&l8I z5VrD=MkhN+_#_W$bL$A{{56C*rez9iZRuw*eDi;Y|J@({ zk^1wSKRjJOoYrTnA_H1y@5A0k_`8W2Jw(Ohq4akX#1Q>s@;0S=nwT#~M2Iy-_`8{y z5+b_BNkZ?l0D>W7zX%K%tDYT4iRz;g&$}C7TE1F56J<%3UV)#HrhEUG^@~X%S z@`RYUU9@sJx08A3PXIilnESctx!K!TOS8A$l_VS7Ryp^JvjU#$Ih=pJd6U}LQ$h?& z!ssjtLcs5x9BrtR@ExA5V-IP{K?Bd8r;KO<42Ww8A^JyHLl^-O@%xIZ_cMF&-)mwh z^qW6iVCU)sYQ2qa&0840;MYcwhcDRjd&3uO`Mu!_(ujNdJb8kUCvJHi27QDJ|Lv26 z7TwA$A*~DnWT$|L^Mt%E6B;_l z5MVlnVTqNWcOI-E%n{N9)T6pQN661+!KFOhFXW+)&u01QEG@J}_cccdapRSwFe%`_ ztQaTsB<)62!IFXvgjoIZS8^ZN1ioUo5I-rmoD zcsaedJHDP12B`7&e#XdPHH#!L0f1=n_I|-V1}+?9kaX~5@DDQZg5y059MB4c)8&T2 zR^k=r{{@8QDsC9;J@Yh!rq*xiU|8!tD-7Gc=Lb&)Wae-;1CFu)^m8Bz_oDIv9lY3Q zqQo(WACTIPCfCF1{aGKVC#GziJ#8F+izm`Sa8NvL0`qC~;#N^l+YDv~atzWI&Gu{Jl7mFo%&r zOopZ3Bw-E{1LqvY#1Mi=n8L)sdrw-8F^YsKtPDt{R>CkA9jw6L{EQP={XnXJ^J3>= ztbUNrSGMyoRtA!piiBaj*qUcs1C3xhjZSwAa@wXaN2I75rie3xIU=R=6*S_^V2R2U zVm*|oJApeD$~b=32haMz&JQ@uAE;Da?t$*C)j-OZ;mvKdy}kT z{D=w0+!S|osyo5pSsz?&@T}6MHGnXM{{AU888JN9BJR^(|kS6P#nvorCMeNMkko3;9?la zfF6<#qQ?|KVlxA&ii}n4dncb~{SZ408dfoHzMRhbdD<@w_^By>BdXRZEqUt~wvuHN z==+AI6{J8gv$MKu3zxh>#}BX|0MbHXfb>cY6$cmu&d!+unV?j0Zl3{c7-*-ez4IP} zD@Jfh?x=W&!PVJ_YjVfznUx>xF%SYw!9*nE2YU=a=LMxkN*j#D10_Hdj9>7(rq_|E t{JqRfe&+i^;7ENQAaVKstPf_>`)?OjOp##nxfB2Z002ovPDHLkV1l}E1x)||