X-Git-Url: https://mudpy.org/gitweb?p=mudpy.git;a=blobdiff_plain;f=mudpy%2Fmisc.py;h=4e32cccd5e99073b7f718bb3a7bbfc7eedb3086d;hp=59bef18153de904f7a6d86500489c822f85246ec;hb=31bd5bdf5962b81cd22df5173775d7886405be80;hpb=87f655b9fd09c77b168f90139239f88fad7576eb diff --git a/mudpy/misc.py b/mudpy/misc.py index 59bef18..4e32ccc 100644 --- a/mudpy/misc.py +++ b/mudpy/misc.py @@ -1,6 +1,6 @@ """Miscellaneous functions for the mudpy engine.""" -# Copyright (c) 2004-2016 Jeremy Stanley . Permission +# Copyright (c) 2004-2017 Jeremy Stanley . Permission # to use, copy, modify, and distribute this software is granted under # terms provided in the LICENSE file distributed with this software. @@ -164,7 +164,7 @@ class Element: else: node = ".".join((self.key, facet)) self.origin.data[node] = value - self.facethash[node] = self.origin.data[node] + self.facethash[facet] = self.origin.data[node] self.origin.modified = True def append(self, facet, value): @@ -347,6 +347,7 @@ class Universe: self.contents = {} self.default_origins = {} self.directions = set() + self.loading = False self.loglines = [] self.private_files = [] self.reload_flag = False @@ -375,6 +376,9 @@ class Universe: def load(self): """Load universe data from persistent storage.""" + # while loading, it's safe to update elements from read-only files + self.loading = True + # it's possible for this to enter before logging configuration is read pending_loglines = [] @@ -425,6 +429,10 @@ class Universe: for element in self.contents.values(): element.update_location() element.clean_contents() + + # done loading, so disallow updating elements from read-only files + self.loading = False + return pending_loglines def new(self): @@ -536,9 +544,8 @@ class User: def check_idle(self): """Warn or disconnect idle users as appropriate.""" idletime = universe.get_time() - self.last_input - linkdead_dict = universe.categories["internal"]["time"].get( - "linkdead" - ) + linkdead_dict = universe.contents[ + "mudpy.timing.idle.disconnect"].facets() if self.state in linkdead_dict: linkdead_state = self.state else: @@ -560,7 +567,7 @@ class User: log(logline, 2) self.state = "disconnecting" self.menu_seen = False - idle_dict = universe.categories["internal"]["time"].get("idle") + idle_dict = universe.contents["mudpy.timing.idle.warn"].facets() if self.state in idle_dict: idle_state = self.state else: @@ -1308,7 +1315,7 @@ def replace_macros(user, text, is_input=False): replacement = replacement[:-2] else: replacement = "" - log("Couldn't read included " + incfile + " file.", 6) + log("Couldn't read included " + incfile + " file.", 7) # if we get here, log and replace it with null else: @@ -1371,9 +1378,7 @@ def on_pulse(): if not universe.categories["internal"]["counters"].get("mark"): log(str(len(universe.userlist)) + " connection(s)") universe.categories["internal"]["counters"].set( - "mark", universe.categories["internal"]["time"].get( - "frequency_log" - ) + "mark", universe.contents["mudpy.timing"].get("status") ) else: universe.categories["internal"]["counters"].set( @@ -1386,9 +1391,7 @@ def on_pulse(): if not universe.categories["internal"]["counters"].get("save"): universe.save() universe.categories["internal"]["counters"].set( - "save", universe.categories["internal"]["time"].get( - "frequency_save" - ) + "save", universe.contents["mudpy.timing"].get("save") ) else: universe.categories["internal"]["counters"].set( @@ -1398,8 +1401,7 @@ def on_pulse(): ) # pause for a configurable amount of time (decimal seconds) - time.sleep(universe.categories["internal"] - ["time"].get("increment")) + time.sleep(universe.contents["mudpy.timing"].get("increment")) # increase the elapsed increment counter universe.categories["internal"]["counters"].set( @@ -1892,7 +1894,7 @@ def command_reload(actor): log( "User " + actor.owner.account.get("name") + " reloaded the world.", - 8 + 6 ) # set a flag to reload