mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-20 19:49:39 +01:00
* Icon smooth refactor (#52864) bitflag list construct added: an associative list of bitflags for cheap and quick element comparison between two lists using the same system. canSmoothWith list turned into a bitflag list. smoothing_groups list added to substitute the type path list. smoothing procs turned into atom procs, refactored and optimized a bit. smooth directions redefined in order to fit in 8 bits for a future smoothing system some variable names changed, foreseeing a second smoothing system SMOOTH_OBJ flag added, for things that need to scan turfs for smoothing. The old locate() optimization has the risk of returning false negatives by finding a child and returning null while there might be one of the wanted type as well, as it doesn't match the type exactly. SMOOTH_TRUE and SMOOTH_MORE condensed into SMOOTH_CORNERS. The old behavior can be replicated using smoothing groups without loss. Does very minor code cleanup. Processing-wise didn't find a noticeable difference. The system loses on init a bit by setting the bitflag_lists, and by scanning whole turf contents for object smoothing (increasing accuracy), and gains by making less checks per target to smooth, through the same bitflag_lists. Memory-wise there should be a small improvement, given that on the old system we had 63512 canSmoothWith lists (a few typelists, most unique), and on this new system canSmoothWith + smoothing_groups are both bitflag_lists from the same pool, totaling 46 in number. Could be tested a bit to see if I missed any icons not properly smoothing. * Icon smooth refactor Co-authored-by: Rohesie <rohesie@gmail.com>
139 lines
3.2 KiB
Plaintext
139 lines
3.2 KiB
Plaintext
/turf/open/floor/holofloor
|
|
icon_state = "floor"
|
|
thermal_conductivity = 0
|
|
flags_1 = NONE
|
|
|
|
/turf/open/floor/holofloor/attackby(obj/item/I, mob/living/user)
|
|
return // HOLOFLOOR DOES NOT GIVE A FUCK
|
|
|
|
/turf/open/floor/holofloor/tool_act(mob/living/user, obj/item/I, tool_type)
|
|
return
|
|
|
|
/turf/open/floor/holofloor/burn_tile()
|
|
return //you can't burn a hologram!
|
|
|
|
/turf/open/floor/holofloor/break_tile()
|
|
return //you can't break a hologram!
|
|
|
|
/turf/open/floor/holofloor/plating
|
|
name = "holodeck projector floor"
|
|
icon_state = "engine"
|
|
|
|
/turf/open/floor/holofloor/plating/burnmix
|
|
name = "burn-mix floor"
|
|
initial_gas_mix = BURNMIX_ATMOS
|
|
|
|
/turf/open/floor/holofloor/grass
|
|
gender = PLURAL
|
|
name = "lush grass"
|
|
icon_state = "grass"
|
|
bullet_bounce_sound = null
|
|
tiled_dirt = FALSE
|
|
|
|
/turf/open/floor/holofloor/beach
|
|
gender = PLURAL
|
|
name = "sand"
|
|
icon = 'icons/misc/beach.dmi'
|
|
icon_state = "sand"
|
|
bullet_bounce_sound = null
|
|
tiled_dirt = FALSE
|
|
|
|
/turf/open/floor/holofloor/beach/coast_t
|
|
gender = NEUTER
|
|
name = "coastline"
|
|
icon_state = "sandwater_t"
|
|
|
|
/turf/open/floor/holofloor/beach/coast_b
|
|
gender = NEUTER
|
|
name = "coastline"
|
|
icon_state = "sandwater_b"
|
|
|
|
/turf/open/floor/holofloor/beach/water
|
|
name = "water"
|
|
icon_state = "water"
|
|
bullet_sizzle = TRUE
|
|
|
|
/turf/open/floor/holofloor/asteroid
|
|
gender = PLURAL
|
|
name = "asteroid sand"
|
|
icon_state = "asteroid"
|
|
tiled_dirt = FALSE
|
|
|
|
/turf/open/floor/holofloor/asteroid/Initialize()
|
|
icon_state = "asteroid[rand(0, 12)]"
|
|
. = ..()
|
|
|
|
/turf/open/floor/holofloor/basalt
|
|
gender = PLURAL
|
|
name = "basalt"
|
|
icon_state = "basalt0"
|
|
tiled_dirt = FALSE
|
|
|
|
/turf/open/floor/holofloor/basalt/Initialize()
|
|
. = ..()
|
|
if(prob(15))
|
|
icon_state = "basalt[rand(0, 12)]"
|
|
set_basalt_light(src)
|
|
|
|
/turf/open/floor/holofloor/space
|
|
name = "\proper space"
|
|
icon = 'icons/turf/space.dmi'
|
|
icon_state = "0"
|
|
|
|
/turf/open/floor/holofloor/space/Initialize()
|
|
icon_state = SPACE_ICON_STATE // so realistic
|
|
. = ..()
|
|
|
|
/turf/open/floor/holofloor/hyperspace
|
|
name = "\proper hyperspace"
|
|
icon = 'icons/turf/space.dmi'
|
|
icon_state = "speedspace_ns_1"
|
|
bullet_bounce_sound = null
|
|
tiled_dirt = FALSE
|
|
|
|
/turf/open/floor/holofloor/hyperspace/Initialize()
|
|
icon_state = "speedspace_ns_[(x + 5*y + (y%2+1)*7)%15+1]"
|
|
. = ..()
|
|
|
|
/turf/open/floor/holofloor/hyperspace/ns/Initialize()
|
|
. = ..()
|
|
icon_state = "speedspace_ns_[(x + 5*y + (y%2+1)*7)%15+1]"
|
|
|
|
/turf/open/floor/holofloor/carpet
|
|
name = "carpet"
|
|
desc = "Electrically inviting."
|
|
icon = 'icons/turf/floors/carpet.dmi'
|
|
icon_state = "carpet"
|
|
floor_tile = /obj/item/stack/tile/carpet
|
|
smoothing_flags = SMOOTH_CORNERS
|
|
canSmoothWith = null
|
|
bullet_bounce_sound = null
|
|
tiled_dirt = FALSE
|
|
|
|
/turf/open/floor/holofloor/carpet/Initialize()
|
|
. = ..()
|
|
addtimer(CALLBACK(src, /atom/.proc/update_icon), 1)
|
|
|
|
/turf/open/floor/holofloor/carpet/update_icon()
|
|
. = ..()
|
|
if(intact)
|
|
QUEUE_SMOOTH(src)
|
|
|
|
/turf/open/floor/holofloor/wood
|
|
icon_state = "wood"
|
|
tiled_dirt = FALSE
|
|
|
|
/turf/open/floor/holofloor/snow
|
|
gender = PLURAL
|
|
name = "snow"
|
|
desc = "Looks cold."
|
|
icon = 'icons/turf/snow.dmi'
|
|
icon_state = "snow"
|
|
slowdown = 2
|
|
bullet_sizzle = TRUE
|
|
bullet_bounce_sound = null
|
|
tiled_dirt = FALSE
|
|
|
|
/turf/open/floor/holofloor/snow/cold
|
|
initial_gas_mix = "nob=7500;TEMP=2.7"
|