diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm index 9fdbd663d65..fc13cd479be 100644 --- a/code/game/objects/effects/aliens.dm +++ b/code/game/objects/effects/aliens.dm @@ -7,6 +7,10 @@ * effect/acid */ +#define WEED_NORTH_EDGING "north" +#define WEED_SOUTH_EDGING "south" +#define WEED_EAST_EDGING "east" +#define WEED_WEST_EDGING "west" /obj/structure/alien icon = 'icons/mob/alien.dmi' @@ -167,6 +171,7 @@ layer = 2 var/health = 15 var/obj/structure/alien/weeds/node/linked_node = null + var/static/list/weedImageCache /obj/structure/alien/weeds/New(pos, node) @@ -251,22 +256,31 @@ /obj/structure/alien/weeds/proc/updateWeedOverlays() overlays.Cut() + + if(!weedImageCache || !weedImageCache.len) + weedImageCache = list() + weedImageCache.len = 4 + weedImageCache[WEED_NORTH_EDGING] = image('icons/mob/alien.dmi', "weeds_side_n", layer=2.11, pixel_y = -32) + weedImageCache[WEED_SOUTH_EDGING] = image('icons/mob/alien.dmi', "weeds_side_s", layer=2.11, pixel_y = 32) + weedImageCache[WEED_EAST_EDGING] = image('icons/mob/alien.dmi', "weeds_side_e", layer=2.11, pixel_x = -32) + weedImageCache[WEED_WEST_EDGING] = image('icons/mob/alien.dmi', "weeds_side_w", layer=2.11, pixel_x = 32) + var/turf/N = get_step(src, NORTH) var/turf/S = get_step(src, SOUTH) var/turf/E = get_step(src, EAST) var/turf/W = get_step(src, WEST) if(!locate(/obj/structure/alien) in N.contents) if(istype(N, /turf/simulated/floor)) - src.overlays += image('icons/mob/alien.dmi', "weeds_side_s", layer=2.11, pixel_y = 32) + overlays += weedImageCache[WEED_SOUTH_EDGING] if(!locate(/obj/structure/alien) in S.contents) if(istype(S, /turf/simulated/floor)) - src.overlays += image('icons/mob/alien.dmi', "weeds_side_n", layer=2.11, pixel_y = -32) + overlays += weedImageCache[WEED_NORTH_EDGING] if(!locate(/obj/structure/alien) in E.contents) if(istype(E, /turf/simulated/floor)) - src.overlays += image('icons/mob/alien.dmi', "weeds_side_w", layer=2.11, pixel_x = 32) + overlays += weedImageCache[WEED_WEST_EDGING] if(!locate(/obj/structure/alien) in W.contents) if(istype(W, /turf/simulated/floor)) - src.overlays += image('icons/mob/alien.dmi', "weeds_side_e", layer=2.11, pixel_x = -32) + overlays += weedImageCache[WEED_EAST_EDGING] /obj/structure/alien/weeds/proc/fullUpdateWeedOverlays() @@ -494,4 +508,9 @@ spawn(1) if(src) - tick() \ No newline at end of file + tick() + +#undef WEED_NORTH_EDGING +#undef WEED_SOUTH_EDGING +#undef WEED_EAST_EDGING +#undef WEED_WEST_EDGING \ No newline at end of file diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm index 451271a5f5e..d68eefd448e 100644 --- a/code/modules/mining/mine_turfs.dm +++ b/code/modules/mining/mine_turfs.dm @@ -1,5 +1,11 @@ /**********************Mineral deposits**************************/ +var/global/list/rockTurfEdgeCache +#define NORTH_EDGING "north" +#define SOUTH_EDGING "south" +#define EAST_EDGING "east" +#define WEST_EDGING "west" + /turf/simulated/mineral //wall piece name = "rock" icon = 'icons/turf/mining.dmi' @@ -32,25 +38,32 @@ return /turf/simulated/mineral/New() + if(!rockTurfEdgeCache || !rockTurfEdgeCache.len) + rockTurfEdgeCache = list() + rockTurfEdgeCache.len = 4 + rockTurfEdgeCache[NORTH_EDGING] = image('icons/turf/mining.dmi', "rock_side_n", layer = 6) + rockTurfEdgeCache[SOUTH_EDGING] = image('icons/turf/mining.dmi', "rock_side_s") + rockTurfEdgeCache[EAST_EDGING] = image('icons/turf/mining.dmi', "rock_side_e", layer = 6) + rockTurfEdgeCache[WEST_EDGING] = image('icons/turf/mining.dmi', "rock_side_w", layer = 6) spawn(1) var/turf/T if((istype(get_step(src, NORTH), /turf/simulated/floor)) || (istype(get_step(src, NORTH), /turf/space)) || (istype(get_step(src, NORTH), /turf/simulated/shuttle/floor))) T = get_step(src, NORTH) if (T) - T.overlays += image('icons/turf/mining.dmi', "rock_side_s") + T.overlays += rockTurfEdgeCache[SOUTH_EDGING] if((istype(get_step(src, SOUTH), /turf/simulated/floor)) || (istype(get_step(src, SOUTH), /turf/space)) || (istype(get_step(src, SOUTH), /turf/simulated/shuttle/floor))) T = get_step(src, SOUTH) if (T) - T.overlays += image('icons/turf/mining.dmi', "rock_side_n", layer=6) + T.overlays += rockTurfEdgeCache[NORTH_EDGING] if((istype(get_step(src, EAST), /turf/simulated/floor)) || (istype(get_step(src, EAST), /turf/space)) || (istype(get_step(src, EAST), /turf/simulated/shuttle/floor))) T = get_step(src, EAST) if (T) - T.overlays += image('icons/turf/mining.dmi', "rock_side_w", layer=6) + T.overlays += rockTurfEdgeCache[WEST_EDGING] if((istype(get_step(src, WEST), /turf/simulated/floor)) || (istype(get_step(src, WEST), /turf/space)) || (istype(get_step(src, WEST), /turf/simulated/shuttle/floor))) T = get_step(src, WEST) if (T) - T.overlays += image('icons/turf/mining.dmi', "rock_side_e", layer=6) + T.overlays += rockTurfEdgeCache[EAST_EDGING] if (mineralType && mineralAmt && spread && spreadChance) for(var/dir in cardinal) @@ -589,13 +602,13 @@ src.overlays.Cut() if(istype(get_step(src, NORTH), /turf/simulated/mineral)) - src.overlays += image('icons/turf/mining.dmi', "rock_side_n") + src.overlays += rockTurfEdgeCache[NORTH_EDGING] if(istype(get_step(src, SOUTH), /turf/simulated/mineral)) - src.overlays += image('icons/turf/mining.dmi', "rock_side_s", layer=6) + src.overlays += rockTurfEdgeCache[SOUTH_EDGING] if(istype(get_step(src, EAST), /turf/simulated/mineral)) - src.overlays += image('icons/turf/mining.dmi', "rock_side_e", layer=6) + src.overlays += rockTurfEdgeCache[EAST_EDGING] if(istype(get_step(src, WEST), /turf/simulated/mineral)) - src.overlays += image('icons/turf/mining.dmi', "rock_side_w", layer=6) + src.overlays += rockTurfEdgeCache[WEST_EDGING] /turf/simulated/mineral/updateMineralOverlays() return @@ -603,3 +616,9 @@ /turf/proc/fullUpdateMineralOverlays() for (var/turf/t in range(1,src)) t.updateMineralOverlays() + + +#undef NORTH_EDGING +#undef SOUTH_EDGING +#undef EAST_EDGING +#undef WEST_EDGING \ No newline at end of file diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm index 20efaea4d8d..e97f5462d7d 100644 --- a/code/modules/power/smes.dm +++ b/code/modules/power/smes.dm @@ -3,6 +3,17 @@ #define SMESRATE 0.05 // rate of internal charge to external power +//Cache defines +#define SMES_CLEVEL_1 1 +#define SMES_CLEVEL_2 2 +#define SMES_CLEVEL_3 3 +#define SMES_CLEVEL_4 4 +#define SMES_CLEVEL_5 5 +#define SMES_OUTPUTTING 6 +#define SMES_NOT_OUTPUTTING 7 +#define SMES_INPUTTING 8 +#define SMES_INPUT_ATTEMPT 9 + /obj/machinery/power/smes name = "power storage unit" desc = "A high-capacity superconducting magnetic energy storage (SMES) unit." @@ -27,6 +38,8 @@ var/obj/machinery/power/terminal/terminal = null + var/static/list/smesImageCache + /obj/machinery/power/smes/New() ..() @@ -177,18 +190,35 @@ if(panel_open) return + if(!smesImageCache || !smesImageCache.len) + smesImageCache = list() + smesImageCache.len = 9 - overlays += image('icons/obj/power.dmi', "smes-op[outputting]") + smesImageCache[SMES_CLEVEL_1] = image('icons/obj/power.dmi',"smes-og1") + smesImageCache[SMES_CLEVEL_2] = image('icons/obj/power.dmi',"smes-og2") + smesImageCache[SMES_CLEVEL_3] = image('icons/obj/power.dmi',"smes-og3") + smesImageCache[SMES_CLEVEL_4] = image('icons/obj/power.dmi',"smes-og4") + smesImageCache[SMES_CLEVEL_5] = image('icons/obj/power.dmi',"smes-og5") + + smesImageCache[SMES_OUTPUTTING] = image('icons/obj/power.dmi', "smes-op1") + smesImageCache[SMES_NOT_OUTPUTTING] = image('icons/obj/power.dmi',"smes-op0") + smesImageCache[SMES_INPUTTING] = image('icons/obj/power.dmi', "smes-oc1") + smesImageCache[SMES_INPUT_ATTEMPT] = image('icons/obj/power.dmi', "smes-oc0") + + if(outputting) + overlays += smesImageCache[SMES_OUTPUTTING] + else + overlays += smesImageCache[SMES_NOT_OUTPUTTING] if(inputting) - overlays += image('icons/obj/power.dmi', "smes-oc1") + overlays += smesImageCache[SMES_INPUTTING] else if(input_attempt) - overlays += image('icons/obj/power.dmi', "smes-oc0") + overlays += smesImageCache[SMES_INPUT_ATTEMPT] var/clevel = chargedisplay() if(clevel>0) - overlays += image('icons/obj/power.dmi', "smes-og[clevel]") + overlays += smesImageCache[clevel] return @@ -420,4 +450,14 @@ ..() -#undef SMESRATE \ No newline at end of file +#undef SMESRATE + +#undef SMES_CLEVEL_1 +#undef SMES_CLEVEL_2 +#undef SMES_CLEVEL_3 +#undef SMES_CLEVEL_4 +#undef SMES_CLEVEL_5 +#undef SMES_OUTPUTTING +#undef SMES_NOT_OUTPUTTING +#undef SMES_INPUTTING +#undef SMES_INPUT_ATTEMPT \ No newline at end of file