Skip to content

Commit 6550146

Browse files
committed
(building) add memoize and update a few baseset presets
I'm still not sure about the idea of providing baseset layouts though... Feel like they are only useful for demos and Emperor's New Station.
1 parent e5f85ca commit 6550146

File tree

3 files changed

+17
-8
lines changed

3 files changed

+17
-8
lines changed

agrf/lib/building/baseset_layouts.py

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
"""
44

55
from agrf.lib.building.layout import ALayout
6-
from agrf.lib.building.baseset_sprites import default_grassland, default_railroad, default_railroad_y
6+
from agrf.lib.building.baseset_sprites import default_grassland, default_railroad, building_ground
7+
from agrf.lib.building.symmetry import BuildingSymmetrical, BuildingCylindrical
78

8-
grassland_tile = ALayout(default_grassland, [], False)
9-
railroad_tile = ALayout(default_railroad, [], True)
10-
railroad_y_tile = ALayout(default_railroad_y, [], True)
9+
grassland_tile = BuildingCylindrical.memoize(ALayout(default_grassland, [], False))
10+
railroad_tile = BuildingSymmetrical.memoize(ALayout(default_railroad, [], True))
11+
building_ground_tile = BuildingCylindrical.memoize(ALayout(building_ground, [], False))

agrf/lib/building/baseset_sprites.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66

77
from agrf.lib.building.layout import ADefaultGroundSprite
88
from agrf.lib.building.registers import Registers
9+
from agrf.lib.building.symmetry import BuildingSymmetrical, BuildingCylindrical
910

10-
default_grassland = ADefaultGroundSprite(3981, flags={"add": Registers.CLIMATE_OFFSET})
11-
12-
default_railroad = ADefaultGroundSprite(1011, flags={"add": Registers.CLIMATE_RAIL_OFFSET})
13-
default_railroad_y = ADefaultGroundSprite(1012, flags={"add": Registers.CLIMATE_RAIL_OFFSET})
11+
default_grassland = BuildingCylindrical.memoize(ADefaultGroundSprite(3981, flags={"add": Registers.CLIMATE_OFFSET}))
12+
default_railroad = BuildingSymmetrical.memoize(ADefaultGroundSprite(1012, flags={"add": Registers.CLIMATE_RAIL_OFFSET}))
13+
building_ground = BuildingCylindrical.memoize(ADefaultGroundSprite(1420, flags={"add": Registers.ZERO}))

agrf/lib/building/symmetry.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,14 @@ def create_variants(classobj, variants):
1717
v.symmetry = classobj
1818
return variants[0]
1919

20+
# This is a weird method
21+
# Use this when item already have properties `item.R` `item.M` `item.T`, but calling these creates a new object
22+
# memoize() then uses these to create as many new objects as the symmetry needs
23+
# and links them so that future calls to these properties always returns the memoized ones
24+
@classmethod
25+
def memoize(cls, item):
26+
return cls.create_variants(cls.get_all_variants(item))
27+
2028
@property
2129
def M(self):
2230
return self._M

0 commit comments

Comments
 (0)