def __init__(self, *args, **kwargs): Server.__init__(self, *args, **kwargs) api.server = self api.send_message = self.send_message api.send_message_to_all = self.send_message_to_all api.exec_chat_command = self.exec_chat_command self.players = WeakKeyDictionary() self.waiting_for_join = WeakKeyDictionary() self.player_stats = {'active': True} self.player_stats_max = {} self.chat_commands = api.chat_commands api.register_chat_command('help', self.command_help) self.players_count = 0 self.object_classes = api.object_classes self.tile_classes = api.tile_classes self.install_mods() self.world = None self.load_world('default_world') self.last_time = sys_time() print("Server launched") start_new_thread(self.command_input, ())
def set(self, key, val, time=0): key = str(key) if time < 0: time = 0 self._app_cache[key] = (val, sys_time(), time) return val
def set(cls, key, value, time=None, min_compress_len=0): if time is None: time = cls.DEFAULT_TIMEOUT cls._prune() cls.mem_cache[key] = (sys_time() + time, pickle.dumps(value, pickle.HIGHEST_PROTOCOL)) return True
def get(self, key): key = str(key) _store = self._app_cache.get(key, None) if not _store: return None value, begin, seconds = _store if seconds and sys_time() > begin + seconds: del self._app_cache[key] return None return value
def incr(self, key, delta=1): key = str(key) _store = self._app_cache.get(key, None) if not _store: return None value, begin, seconds = _store if seconds and sys_time() > begin + seconds: del self._app_cache[key] return None if isinstance(value, basestring): value = int(value) value = value + delta self.set(key, value) return value
def draw_messages(self, lifetime=5): if (lifetime == None): for i, message in enumerate( list(reversed(self.messages))[self.message_show_from:]): if (i == self.messages_on_screen): return pos = (10, screen_size[1] - 50 - i * 21) gui.fill_alpha(screen, (60, 60, 60), 0.5, rect=(*pos, 500, 21)) screen.blit(font.render(message['text'], 1, message['color']), pos) else: for i, message in enumerate(reversed(self.messages)): if (i == self.messages_on_screen): return if (sys_time() - message['time'] < lifetime): pos = (10, screen_size[1] - 50 - i * 21) gui.fill_alpha(screen, (60, 60, 60), 0.5, rect=(*pos, 500, 21)) screen.blit( font.render(message['text'], 1, message['color']), pos)
def get(cls, key): expires, value = cls.mem_cache.get(key, (0, None)) if expires > sys_time(): return pickle.loads(value) return None
def _prune(cls): if len(cls.mem_cache) > cls.MAX_ITEMS: now = sys_time() for idx, (key, (expires, _)) in enumerate(cls.mem_cache.items()): if expires <= now or idx % 3 == 0: cls.mem_cache.pop(key, None)
def patch_time(offset): return sys_time() + offset
def get_delta_time(self): delta_time = (sys_time() - self.last_time) * 1000 self.last_time = sys_time() return delta_time
def __init__(self, text = None, time = None, offset = -1, length = 0): self.text = text self.time = time if time is not None else sys_time() self.offset = offset self.length = length
def execute(self): current_time: float = sys_time() self.state_field_registry.update(StateField.TIME, current_time) if self.state_field_registry.get(StateField.BOOT_TIME) == -1: self.state_field_registry.update(StateField.BOOT_TIME, current_time)
def get_system_time(): return Fraction(int(sys_time() * 1000), 1000)
def add_message(self, text, color=api.WHITE, player=None): self.messages.append({ 'text': text, 'color': color, 'time': sys_time() })