hand optimizations

This commit is contained in:
silicons
2022-05-14 05:12:08 -07:00
parent 0110904cf5
commit b46d2cb773
4 changed files with 43 additions and 19 deletions

View File

@@ -55,31 +55,37 @@
// i need to learn how to use the icon cutter
// anyways, 1 to 4 means NORTH SOUTH EAST WEST
var/dir
for(var/i in 0 to 3)
dir = (1 << i)
for(var/i in 1 to 4)
I = image('icons/turf/wall_masks.dmi', "[material.icon_base][wall_connections[i]]", dir = 1<<(i-1))
I.color = material.icon_colour
add_overlay(I)
var/state
if(reinf_material)
// normal and reinf
if(construction_stage != null && construction_stage < 6)
I = image('icons/turf/wall_masks.dmi', "reinf_construct-[construction_stage]")
I.color = reinf_material.icon_colour
add_overlay(I)
else
if("[reinf_material.icon_reinf]0" in icon_states('icons/turf/wall_masks.dmi'))
// Directional icon
for(var/i = 1 to 4)
I = image('icons/turf/wall_masks.dmi', "[reinf_material.icon_reinf][wall_connections[i]]", dir = 1<<(i-1))
I.color = reinf_material.icon_colour
add_overlay(I)
else
I = image('icons/turf/wall_masks.dmi', reinf_material.icon_reinf)
I.color = reinf_material.icon_colour
if(reinf_material.icon_reinf_directionals)
for(var/i in 0 to 3)
state = get_corner_state_using_junctions(i)
dir = (1<<i)
I = image('icons/turf/wall_masks.dmi', "[material.icon_base][state]", dir = dir)
I.color = material.icon_colour
add_overlay(I)
I = image('icons/turf/wall_masks.dmi', "[reinf_material.icon_reinf][state]", dir = dir)
I.color = material.icon_colour
add_overlay(I)
else
for(var/i in 0 to 3)
I = image('icons/turf/wall_masks.dmi', "[material.icon_base][get_corner_state_using_junctions(i)]", dir = (1<<i))
I.color = material.icon_colour
add_overlay(I)
I = image('icons/turf/wall_masks.dmi', reinf_material.icon_reinf)
I.color = reinf_material.icon_colour
add_overlay(I)
else
// just normal
for(var/i in 0 to 3)
I = image('icons/turf/wall_masks.dmi', "[material.icon_base][get_corner_state_using_junctions(i)]", dir = (1<<i))
I.color = material.icon_colour
add_overlay(I)
// handle damage overlays
if(damage != 0)

View File

@@ -295,6 +295,7 @@
hardness = 20
icon_base = "stone"
icon_reinf = "reinf_stone"
icon_reinf_directionals = TRUE
door_icon_base = "stone"
sheet_singular_name = "sheet"
sheet_plural_name = "sheets"

View File

@@ -94,6 +94,8 @@ var/list/name_to_material
var/icon_base = "metal" // Wall and table base icon tag. See header.
var/door_icon_base = "metal" // Door base icon tag. See header.
var/icon_reinf = "reinf_metal" // Overlay used
/// do we have directional reinforced states on walls?
var/icon_reinf_directionals = FALSE
var/list/stack_origin_tech = list(TECH_MATERIAL = 1) // Research level for stacks.
var/pass_stack_colors = FALSE // Will stacks made from this material pass their colors onto objects?
@@ -251,6 +253,7 @@ var/list/name_to_material
radioactivity = 12
icon_base = "stone"
icon_reinf = "reinf_stone"
icon_reinf_directionals = TRUE
icon_colour = "#007A00"
weight = 22
stack_origin_tech = list(TECH_MATERIAL = 5)
@@ -350,6 +353,7 @@ var/list/name_to_material
stack_type = /obj/item/stack/material/sandstone
icon_base = "stone"
icon_reinf = "reinf_stone"
icon_reinf_directionals = TRUE
icon_colour = "#D9C179"
shard_type = SHARD_STONE_PIECE
weight = 22
@@ -917,6 +921,7 @@ var/list/name_to_material
icon_colour = "#42291a"
icon_base = "stone"
icon_reinf = "reinf_stone"
icon_reinf_directionals = TRUE
integrity = 65 //a bit stronger than regular wood
hardness = 20
weight = 20 //likewise, heavier
@@ -965,6 +970,7 @@ var/list/name_to_material
stack_type = /obj/item/stack/material/snowbrick
icon_base = "stone"
icon_reinf = "reinf_stone"
icon_reinf_directionals = TRUE
icon_colour = "#D8FDFF"
integrity = 50
weight = 2

View File

@@ -511,7 +511,18 @@ var/list/table_icon_cache = list()
/atom/proc/get_corner_state_using_junctions(corner)
// north, south, east, west, in that order
// which translates to northwest, southeast, northeast, southwest in that order
// honestly fuck you, precompute.
// cache for sanic speed
var/smoothing_junction = src.smoothing_junction
switch(corner)
if(1)
return ((smoothing_junction & NORTHWEST_JUNCTION)? CORNER_DIAGONAL : NONE) | ((smoothing_junction & NORTH_JUNCTION)? CORNER_CLOCKWISE : NONE) | ((smoothing_junction & WEST_JUNCTION)? CORNER_COUNTERCLOCKWISE : NONE)
if(2)
return ((smoothing_junction & SOUTHEAST_JUNCTION)? CORNER_DIAGONAL : NONE) | ((smoothing_junction & SOUTH_JUNCTION)? CORNER_CLOCKWISE : NONE) | ((smoothing_junction & EAST_JUNCTION)? CORNER_COUNTERCLOCKWISE : NONE)
if(3)
return ((smoothing_junction & NORTHEAST_JUNCTION)? CORNER_DIAGONAL : NONE) | ((smoothing_junction & EAST_JUNCTION)? CORNER_CLOCKWISE : NONE) | ((smoothing_junction & NORTH_JUNCTION)? CORNER_COUNTERCLOCKWISE : NONE)
if(4)
return ((smoothing_junction & SOUTHWEST_JUNCTION)? CORNER_DIAGONAL : NONE) | ((smoothing_junction & WEST_JUNCTION)? CORNER_CLOCKWISE : NONE) | ((smoothing_junction & SOUTH_JUNCTION)? CORNER_COUNTERCLOCKWISE : NONE)
#undef CORNER_NONE
#undef CORNER_COUNTERCLOCKWISE