changeset 411:5b090546a3c8

Turns out we *can* cache level objects safely.
author Jeremy Thurgood <firxen@gmail.com>
date Sat, 17 Sep 2011 14:43:51 +0200
parents 09ff0abf3e0f
children e2d5d937eac1
files mamba/habitats/levelmenu.py
diffstat 1 files changed, 4 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mamba/habitats/levelmenu.py	Sat Sep 17 09:57:16 2011 +0200
+++ b/mamba/habitats/levelmenu.py	Sat Sep 17 14:43:51 2011 +0200
@@ -12,6 +12,7 @@
 
 
 OFFICIAL_LEVELS = []
+LEVEL_CACHE = {}
 
 
 class LevelMenu(Habitat):
@@ -89,4 +90,6 @@
         return OFFICIAL_LEVELS[:]
 
     def get_level(self, name):
-        return Level(name, self.level_namespace)
+        if name not in LEVEL_CACHE:
+            LEVEL_CACHE[name] = Level(name, self.level_namespace)
+        return LEVEL_CACHE[name]