Imported from archive.
[mudpy.git] / lib / muff / muffuniv.py
index 91a4ca5..9fd9850 100644 (file)
@@ -17,8 +17,16 @@ class Element:
        def __init__(self, key, origin, universe):
                """Default values for the in-memory element variables."""
                self.key = key
+               if not origin.startswith(os.sep):
+                       origin = os.getcwd() + os.sep + origin
                self.origin = origin
                universe.contents[key] = self
+               if key.find(":"):
+                       category = key.split(":", 1)
+                       if category[0] in universe.categories:
+                               exec("universe." + category[0] + "s[category[1]] = self")
+               if not origin in universe.files.keys():
+                       DataFile(origin, universe)
                if not universe.files[origin].data.has_section(key):
                        universe.files[origin].data.add_section(key)
        def facets(self):
@@ -32,10 +40,16 @@ class Element:
                                return universe.files[self.origin].data.get(self.key, facet)
                        except:
                                return None
+       def getint(self, facet):
+               """Convenience method to coerce return values as type int."""
+               value = self.get(facet)
+               if not value: value = 0
+               elif type(value) is str: value = value.rstrip("L")
+               return int(value)
        def set(self, facet, value):
                """Set values."""
                if facet in universe.files[self.origin].data.options(self.key):
-                       universe.files[self.origin].data.set(self.key, facet, value)
+                       universe.files[self.origin].data.set(self.key, facet, repr(value))
                else: self.facet = value
        def rec(self, facet, value):
                """Add initial values to the record."""
@@ -70,11 +84,14 @@ class DataFile:
 class Universe:
        """The universe."""
        def __init__(self):
-               filename = muffconf.get("files", "data")
-               if not filename.startswith(os.sep): filename = os.getcwd() + os.sep + filename
                self.contents = {}
                self.files = {}
-               DataFile(filename, self)
+               self.categories = [ "account", "actor", "command", "internal", "item", "menu", "room" ]
+               for item in self.categories: exec("self." + item + "s = {}")
+               for item in [ "avatars", "commands", "internals", "universe" ]:
+                       filename = muffconf.get("files", item)
+                       if not filename.startswith(os.sep): filename = os.getcwd() + os.sep + filename
+                       DataFile(filename, self)
        def save(self):
                for key in self.files.keys(): self.files[key].save()
 
@@ -82,7 +99,7 @@ def element_exists(key): return key in universe.contents.keys()
 
 # reload the muffconf module if the files:data setting does not exist
 try:
-       if muffconf.get("files", "data"): pass
+       if muffconf.has_section("files"): pass
 except AttributeError:
        reload(muffconf)