forked from ParadiseSS13/Paradise
-
Notifications
You must be signed in to change notification settings - Fork 8
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Optimize memory usage by eliminating/changing some lists
Ported from TG: Object armors are no longer defined in (unique) lists but rather datums that can be cached depending on their armor values. Add LAZYSET define to lazily initialize a list then assigning a key to a value Add alldirs2 global which is the same as alldirs except diagonals go first Optimize mob memory by making alerts list lazy Optimize obj/machinery memory by making use_log and settagwhitelist lists lazy Optimize atom memory by not creating hud_list list for all atoms Optimize turf memory by not creating footstep_sounds list for all turfs Clean up code where possible
- Loading branch information
Showing
11 changed files
with
285 additions
and
218 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
#define ARMORID "armor-[melee]-[bullet]-[laser]-[energy]-[bomb]-[bio]-[rad]-[fire]-[acid]" | ||
|
||
/proc/getArmor(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) | ||
. = locate(ARMORID) | ||
if (!.) | ||
. = new /datum/armor(melee, bullet, laser, energy, bomb, bio, rad, fire, acid) | ||
|
||
/datum/armor | ||
var/melee | ||
var/bullet | ||
var/laser | ||
var/energy | ||
var/bomb | ||
var/bio | ||
var/rad | ||
var/fire | ||
var/acid | ||
|
||
/datum/armor/New(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) | ||
src.melee = melee | ||
src.bullet = bullet | ||
src.laser = laser | ||
src.energy = energy | ||
src.bomb = bomb | ||
src.bio = bio | ||
src.rad = rad | ||
src.fire = fire | ||
src.acid = acid | ||
tag = ARMORID | ||
|
||
/datum/armor/proc/modifyRating(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0) | ||
return getArmor(src.melee + melee, src.bullet + bullet, src.laser + laser, src.energy + energy, src.bomb + bomb, src.bio + bio, src.rad + rad, src.fire + fire, src.acid + acid) | ||
|
||
/datum/armor/proc/modifyAllRatings(modifier = 0) | ||
return getArmor(melee + modifier, bullet + modifier, laser + modifier, energy + modifier, bomb + modifier, bio + modifier, rad + modifier, fire + modifier, acid + modifier) | ||
|
||
/datum/armor/proc/setRating(melee, bullet, laser, energy, bomb, bio, rad, fire, acid) | ||
return getArmor((isnull(melee) ? src.melee : melee),\ | ||
(isnull(bullet) ? src.bullet : bullet),\ | ||
(isnull(laser) ? src.laser : laser),\ | ||
(isnull(energy) ? src.energy : energy),\ | ||
(isnull(bomb) ? src.bomb : bomb),\ | ||
(isnull(bio) ? src.bio : bio),\ | ||
(isnull(rad) ? src.rad : rad),\ | ||
(isnull(fire) ? src.fire : fire),\ | ||
(isnull(acid) ? src.acid : acid)) | ||
|
||
/datum/armor/proc/getRating(rating) | ||
return vars[rating] | ||
|
||
/datum/armor/proc/getList() | ||
return list("melee" = melee, "bullet" = bullet, "laser" = laser, "energy" = energy, "bomb" = bomb, "bio" = bio, "rad" = rad, "fire" = fire, "acid" = acid) | ||
|
||
/datum/armor/proc/attachArmor(datum/armor/AA) | ||
return getArmor(melee + AA.melee, bullet + AA.bullet, laser + AA.laser, energy + AA.energy, bomb + AA.bomb, bio + AA.bio, rad + AA.rad, fire + AA.fire, acid + AA.acid) | ||
|
||
/datum/armor/proc/detachArmor(datum/armor/AA) | ||
return getArmor(melee - AA.melee, bullet - AA.bullet, laser - AA.laser, energy - AA.energy, bomb - AA.bomb, bio - AA.bio, rad - AA.rad, fire - AA.fire, acid - AA.acid) | ||
|
||
/datum/armor/vv_edit_var(var_name, var_value) | ||
if (var_name == NAMEOF(src, tag)) | ||
return FALSE | ||
. = ..() | ||
tag = ARMORID // update tag in case armor values were edited | ||
|
||
#undef ARMORID |
Oops, something went wrong.