Merge pull request #28435 from lzimann/typecaches

Changes a lot of is_type_in_list to use a typecache
This commit is contained in:
Joan Lung
2017-06-17 12:33:03 -04:00
committed by GitHub
11 changed files with 57 additions and 59 deletions
@@ -15,8 +15,8 @@
obj_integrity = 150
max_integrity = 150
// Motion, EMP-Proof, X-Ray
var/list/obj/item/possible_upgrades = list(/obj/item/device/assembly/prox_sensor, /obj/item/stack/sheet/mineral/plasma, /obj/item/device/analyzer)
var/list/upgrades = list()
var/static/list/possible_upgrades = typecacheof(list(/obj/item/device/assembly/prox_sensor, /obj/item/stack/sheet/mineral/plasma, /obj/item/device/analyzer))
var/list/upgrades
var/state = 1
/*
@@ -26,15 +26,14 @@
4 = Screwdriver panel closed and is fully built (you cannot attach upgrades)
*/
/obj/structure/camera_assembly/New(loc, ndir, building)
..()
/obj/structure/camera_assembly/Initialize(mapload, ndir, building)
. = ..()
if(building)
setDir(ndir)
upgrades = list()
/obj/structure/camera_assembly/Destroy()
for(var/I in upgrades)
qdel(I)
upgrades.Cut()
QDEL_LIST(upgrades)
return ..()
/obj/structure/camera_assembly/attackby(obj/item/W, mob/living/user, params)
@@ -110,7 +109,7 @@
return
// Upgrades!
if(is_type_in_list(W, possible_upgrades) && !is_type_in_list(W, upgrades)) // Is a possible upgrade and isn't in the camera already.
if(is_type_in_typecache(W, possible_upgrades) && !is_type_in_list(W, upgrades)) // Is a possible upgrade and isn't in the camera already.
if(!user.drop_item(W))
return
to_chat(user, "<span class='notice'>You attach \the [W] into the assembly inner circuits.</span>")
+5 -5
View File
@@ -8,12 +8,12 @@
idle_power_usage = 4
active_power_usage = 250
var/obj/item/charging = null
var/list/allowed_devices = list(/obj/item/weapon/gun/energy,/obj/item/weapon/melee/baton,/obj/item/ammo_box/magazine/recharge,/obj/item/device/modular_computer)
var/static/list/allowed_devices = typecacheof(list(/obj/item/weapon/gun/energy, /obj/item/weapon/melee/baton, /obj/item/ammo_box/magazine/recharge,/obj/item/device/modular_computer))
var/recharge_coeff = 1
/obj/machinery/recharger/New()
..()
var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/recharger(null)
/obj/machinery/recharger/Initialize()
. = ..()
var/obj/item/weapon/circuitboard/machine/recharger/B = new()
B.apply_default_parts(src)
/obj/item/weapon/circuitboard/machine/recharger
@@ -37,7 +37,7 @@
playsound(loc, G.usesound, 75, 1)
return
var/allowed = is_type_in_list(G, allowed_devices)
var/allowed = is_type_in_typecache(G, allowed_devices)
if(allowed)
if(anchored)
+5 -4
View File
@@ -154,10 +154,11 @@
icon_state = "charger_draw"
flags = NOBLUDGEON
var/mode = "draw"
var/list/charge_machines = list(/obj/machinery/cell_charger, /obj/machinery/recharger,
/obj/machinery/recharge_station, /obj/machinery/mech_bay_recharge_port)
var/list/charge_items = list(/obj/item/weapon/stock_parts/cell, /obj/item/weapon/gun/energy,
)
var/static/list/charge_machines = typecacheof(list(/obj/machinery/cell_charger, /obj/machinery/recharger, /obj/machinery/recharge_station, /obj/machinery/mech_bay_recharge_port))
var/static/list/charge_items = typecacheof(list(/obj/item/weapon/stock_parts/cell, /obj/item/weapon/gun/energy))
/obj/item/borg/charger/Initialize()
. = ..()
/obj/item/borg/charger/update_icon()
..()
@@ -246,7 +246,7 @@ Pipelines + Other Objects -> Pipe network
var/obj/machinery/atmospherics/target_move = findConnecting(direction)
if(target_move)
if(target_move.can_crawl_through())
if(is_type_in_list(target_move, GLOB.ventcrawl_machinery))
if(is_type_in_typecache(target_move, GLOB.ventcrawl_machinery))
user.forceMove(target_move.loc) //handle entering and so on.
user.visible_message("<span class='notice'>You hear something squeezing through the ducts...</span>","<span class='notice'>You climb out the ventilation system.")
else
@@ -259,7 +259,7 @@ Pipelines + Other Objects -> Pipe network
user.last_played_vent = world.time
playsound(src, 'sound/machines/ventcrawl.ogg', 50, 1, -3)
else
if((direction & initialize_directions) || is_type_in_list(src, GLOB.ventcrawl_machinery) && can_crawl_through()) //if we move in a way the pipe can connect, but doesn't - or we're in a vent
if((direction & initialize_directions) || is_type_in_typecache(src, GLOB.ventcrawl_machinery) && can_crawl_through()) //if we move in a way the pipe can connect, but doesn't - or we're in a vent
user.forceMove(src.loc)
user.visible_message("<span class='notice'>You hear something squeezing through the ducts...</span>","<span class='notice'>You climb out the ventilation system.")
user.canmove = 0
+6 -3
View File
@@ -71,11 +71,14 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they
var/total_cost = 0
var/total_amount = 0
var/init_cost
/datum/export/New()
..()
SSprocessing.processing += src
init_cost = cost
export_types = typecacheof(export_types)
exclude_types = typecacheof(exclude_types)
/datum/export/Destroy()
SSprocessing.processing -= src
@@ -108,7 +111,7 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they
return FALSE
if(!include_subtypes && !(O.type in export_types))
return FALSE
if(include_subtypes && (!is_type_in_list(O, export_types) || is_type_in_list(O, exclude_types)))
if(include_subtypes && (!is_type_in_typecache(O, export_types) || is_type_in_typecache(O, exclude_types)))
return FALSE
if(!get_cost(O, contr, emag))
return FALSE
@@ -127,7 +130,7 @@ Credit dupes that require a lot of manual work shouldn't be removed, unless they
total_amount += amount*MINERAL_MATERIAL_AMOUNT
else
total_amount += amount
cost *= GLOB.E**(-1*k_elasticity*amount) //marginal cost modifier
SSblackbox.add_details("export_sold_amount","[O.type]|[amount]")
SSblackbox.add_details("export_sold_cost","[O.type]|[the_cost]")
@@ -11,8 +11,8 @@
idle_power_usage = 5
active_power_usage = 100
pass_flags = PASSTABLE
var/obj/item/weapon/reagent_containers/beaker = null
var/global/list/allowed_items = list (
var/obj/item/weapon/reagent_containers/beaker
var/static/list/allowed_items = list(
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato = "tomatojuice",
/obj/item/weapon/reagent_containers/food/snacks/grown/carrot = "carrotjuice",
/obj/item/weapon/reagent_containers/food/snacks/grown/berries = "berryjuice",
@@ -27,10 +27,10 @@
/obj/item/weapon/reagent_containers/food/snacks/watermelonslice = "watermelonjuice",
/obj/item/weapon/reagent_containers/food/snacks/grown/berries/poison = "poisonberryjuice",
/obj/item/weapon/reagent_containers/food/snacks/grown/pumpkin = "pumpkinjuice",
/obj/item/weapon/reagent_containers/food/snacks/grown/blumpkin = "blumpkinjuice",
)
/obj/item/weapon/reagent_containers/food/snacks/grown/blumpkin = "blumpkinjuice")
/obj/machinery/juicer/New()
/obj/machinery/juicer/Initialize()
. = ..()
beaker = new /obj/item/weapon/reagent_containers/glass/beaker/large(src)
/obj/machinery/juicer/update_icon()
+4 -1
View File
@@ -50,6 +50,9 @@
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/deus,
/obj/item/weapon/reagent_containers/food/snacks/grown/wheat)
/obj/item/weapon/grown/log/Initialize()
. = ..()
accepted = typecacheof(accepted)
/obj/item/weapon/grown/log/attackby(obj/item/weapon/W, mob/user, params)
if(W.sharpness)
@@ -66,7 +69,7 @@
to_chat(user, "<span class='notice'>You add the newly-formed [plank_name] to the stack. It now contains [plank.amount] [plank_name].</span>")
qdel(src)
if(is_type_in_list(W,accepted))
if(is_type_in_typecache(W,accepted))
var/obj/item/weapon/reagent_containers/food/snacks/grown/leaf = W
if(leaf.dry)
user.show_message("<span class='notice'>You wrap \the [W] around the log, turning it into a torch!</span>")
@@ -21,7 +21,7 @@
var/trash = 0
var/pests = 0
var/list/target_types = list()
var/list/target_types
var/obj/effect/decal/cleanable/target
var/max_targets = 50 //Maximum number of targets a cleanbot can ignore.
var/oldloc = null
@@ -32,7 +32,7 @@
var/next_dest_loc
/mob/living/simple_animal/bot/cleanbot/Initialize()
..()
. = ..()
get_targets()
icon_state = "cleanbot[on]"
@@ -87,7 +87,7 @@
var/mob/living/carbon/C = A
if(C.stat != DEAD && C.lying)
return C
else if(is_type_in_list(A, target_types))
else if(is_type_in_typecache(A, target_types))
return A
/mob/living/simple_animal/bot/cleanbot/handle_automated_action()
@@ -193,6 +193,8 @@
if(trash)
target_types += /obj/item/trash
target_types = typecacheof(target_types)
/mob/living/simple_animal/bot/cleanbot/UnarmedAttack(atom/A)
if(istype(A, /obj/effect/decal/cleanable))
anchored = 1
@@ -21,20 +21,19 @@
gold_core_spawnable = 2
obj_damage = 0
environment_smash = ENVIRONMENT_SMASH_NONE
var/list/edibles = list(/mob/living/simple_animal/butterfly,/mob/living/simple_animal/cockroach) //list of atoms, however turfs won't affect AI, but will affect consumption.
var/static/list/edibles = typecacheof(list(/mob/living/simple_animal/butterfly,/mob/living/simple_animal/cockroach)) //list of atoms, however turfs won't affect AI, but will affect consumption.
/mob/living/simple_animal/hostile/lizard/CanAttack(atom/the_target)//Can we actually attack a possible target?
if(see_invisible < the_target.invisibility)//Target's invisible to us, forget it
return 0
if(is_type_in_list(the_target,edibles))
return 1
return 0
return FALSE
if(is_type_in_typecache(the_target,edibles))
return TRUE
return FALSE
/mob/living/simple_animal/hostile/lizard/AttackingTarget()
if(is_type_in_list(target,edibles)) //Makes sure player lizards only consume edibles.
if(is_type_in_typecache(target,edibles)) //Makes sure player lizards only consume edibles.
visible_message("[name] consumes [target] in a single gulp", "<span class='notice'>You consume [target] in a single gulp</span>")
qdel(target) //Nom
target = null
QDEL_NULL(target) //Nom
adjustBruteLoss(-2)
return TRUE
else
+4 -2
View File
@@ -1,5 +1,7 @@
GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/components/unary/vent_pump, /obj/machinery/atmospherics/components/unary/vent_scrubber))
GLOBAL_LIST_INIT(ventcrawl_machinery, typecacheof(list(
/obj/machinery/atmospherics/components/unary/vent_pump,
/obj/machinery/atmospherics/components/unary/vent_scrubber)))
//VENTCRAWLING
@@ -32,7 +34,7 @@ GLOBAL_LIST_INIT(ventcrawl_machinery, list(/obj/machinery/atmospherics/component
if(!vent_found)
for(var/obj/machinery/atmospherics/machine in range(1,src))
if(is_type_in_list(machine, GLOB.ventcrawl_machinery))
if(is_type_in_typecache(machine, GLOB.ventcrawl_machinery))
vent_found = machine
if(!vent_found.can_crawl_through())
@@ -13,8 +13,8 @@
var/operating = FALSE
var/obj/item/weapon/reagent_containers/beaker = null
var/limit = 10
var/list/blend_items = list (
var/static/list/blend_items = list(
//Sheets
/obj/item/stack/sheet/mineral/plasma = list("plasma" = 20),
/obj/item/stack/sheet/metal = list("iron" = 20),
@@ -31,7 +31,6 @@
/obj/item/weapon/grown/nettle/basic = list("sacid" = 0),
/obj/item/weapon/grown/nettle/death = list("facid" = 0, "sacid" = 0),
/obj/item/weapon/grown/novaflower = list("capsaicin" = 0, "condensedcapsaicin" = 0),
//Blender Stuff
/obj/item/weapon/reagent_containers/food/snacks/grown/soybeans = list("soymilk" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato = list("ketchup" = 0),
@@ -42,25 +41,19 @@
/obj/item/weapon/reagent_containers/food/snacks/grown/cherries = list("cherryjelly" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/bluecherries = list("bluecherryjelly" = 0),
/obj/item/weapon/reagent_containers/food/snacks/egg = list("eggyolk" = -5),
//Grinder stuff, but only if dry
/obj/item/weapon/reagent_containers/food/snacks/grown/coffee/robusta = list("coffeepowder" = 0, "morphine" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/coffee = list("coffeepowder" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/tea/astra = list("teapowder" = 0, "salglu_solution" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/tea = list("teapowder" = 0),
//All types that you can put into the grinder to transfer the reagents to the beaker. !Put all recipes above this.!
/obj/item/slime_extract = list(),
/obj/item/weapon/reagent_containers/pill = list(),
/obj/item/weapon/reagent_containers/food = list(),
/obj/item/weapon/reagent_containers/honeycomb = list(),
/obj/item/toy/crayon = list()
)
var/list/juice_items = list (
/obj/item/toy/crayon = list())
var/static/list/juice_items = list(
//Juicer Stuff
/obj/item/weapon/reagent_containers/food/snacks/grown/corn = list("corn_starch" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato = list("tomatojuice" = 0),
@@ -78,16 +71,14 @@
/obj/item/weapon/reagent_containers/food/snacks/grown/blumpkin = list("blumpkinjuice" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/apple = list("applejuice" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/grapes = list("grapejuice" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/grapes/green = list("grapejuice" = 0),
)
/obj/item/weapon/reagent_containers/food/snacks/grown/grapes/green = list("grapejuice" = 0))
var/list/dried_items = list(
var/static/list/dried_items = list(
//Grinder stuff, but only if dry,
/obj/item/weapon/reagent_containers/food/snacks/grown/coffee/robusta = list("coffeepowder" = 0, "morphine" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/coffee = list("coffeepowder" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/tea/astra = list("teapowder" = 0, "salglu_solution" = 0),
/obj/item/weapon/reagent_containers/food/snacks/grown/tea = list("teapowder" = 0)
)
/obj/item/weapon/reagent_containers/food/snacks/grown/tea = list("teapowder" = 0))
var/list/holdingitems = list()
@@ -96,9 +87,7 @@
beaker = new /obj/item/weapon/reagent_containers/glass/beaker/large(src)
/obj/machinery/reagentgrinder/Destroy()
if(beaker)
qdel(beaker)
beaker = null
QDEL_NULL(beaker)
return ..()
/obj/machinery/reagentgrinder/contents_explosion(severity, target)