def save_systems(self, event): data = [] for button in self.system_buttons.widgets(): current = button.object_data d = { 'primary': current.primary.id, 'secondary': current.secondary.id, 'avg_s': current.average_separation.m, 'ecc_p': current.ecc_p.m, "ecc_s": current.ecc_s.m, "id": current.id, "name": current.name } data.append(d) EventHandler.trigger(event.tipo + 'Data', 'Systems', {'Systems': data})
def save_orbits(self, event): orbits = self._loaded_orbits for system in Systems.get_systems(): if system.star_system.letter == 'S': for star in system: for marker in self._orbits.get(star, []): d = self.create_save_data(marker.orbit) orbits.append(d) else: star = system.star_system for marker in self._orbits.get(star, []): d = self.create_save_data(marker.orbit) orbits.append(d) EventHandler.trigger(event.tipo + 'Data', 'Orbit', {'Stellar Orbits': orbits})
def save_planets(self, event): data = self.current.loaded_data if self.current.loaded_data is not None else [] for system in Systems.get_systems(): for planet in self.planets: if planet in system.planets: planet_data = { 'name': planet.name, 'mass': planet.mass.m, 'radius': planet.radius.m, 'unit': planet.unit, 'atmosphere': planet.atmosphere, 'composition': planet.composition, 'clase': planet.clase, 'system': system.id, 'id': planet.id, 'albedo': planet.albedo.m, 'tilt': planet.tilt.m } data.append(planet_data) EventHandler.trigger(event.tipo + 'Data', 'Planet', {"Planets": data})
def compound_save_data(cls, event): cls.save_data.update(event.data) if not EventHandler.is_quequed('SaveDataFile'): EventHandler.trigger('SaveDataFile', 'EngineData', cls.save_data)
def on_mousebuttondown(self, event): if event.button == 1 and self.enabled: EventHandler.trigger('ClearData', 'NewButton', {'panel': self.parent.current})
def on_mousebuttondown(self, event): ruta = join(getcwd(), 'data', 'savedata.json') if event.button == 1 and exists(ruta): data = abrir_json(ruta) if len(data): EventHandler.trigger('LoadData', 'LoadButton', data)
def on_mousebuttondown(self, event): if event.button == 1: EventHandler.trigger('Save', 'SaveButton', {}) self.parent.load_button.enable()
def update(cls): cls.clock.tick(60) events = event.get( [KEYDOWN, MOUSEBUTTONDOWN, MOUSEBUTTONUP, QUIT, MOUSEMOTION]) event.clear() for e in events: if e.type == QUIT or (e.type == KEYDOWN and e.key == K_ESCAPE): EventHandler.trigger('salir', 'engine', {'mensaje': 'normal'}) elif e.type == KEYDOWN and not cls.locked: if e.key in (K_KP_ENTER, K_KP_EQUALS): EventHandler.trigger('Fin', cls.origin) elif e.key == K_BACKSPACE: EventHandler.trigger('BackSpace', cls.origin) elif e.key == K_UP: EventHandler.trigger('Arrow', cls.origin, { 'word': 'arriba', 'delta': -1 }) elif e.key == K_DOWN: EventHandler.trigger('Arrow', cls.origin, { 'word': 'abajo', 'delta': +1 }) else: name = key.name(e.key).strip('[]') if len( name ) == 1: # single character, excludes "space" and things like that. if name == '.': # bc there's not other way to identifying it. EventHandler.trigger('Key', cls.origin, {'value': '.'}) elif name.isdigit(): EventHandler.trigger('Key', cls.origin, {'value': name}) elif name.isalpha(): if e.mod & KMOD_LSHIFT or e.mod & KMOD_RSHIFT: name = name.capitalize() EventHandler.trigger('Typed', cls.origin, {'value': name}) elif name == 'space': EventHandler.trigger('Typed', cls.origin, {'value': ' '}) elif e.type == MOUSEBUTTONDOWN: widgets = [ i for i in cls.contents.sprites() if i.rect.collidepoint(e.pos) ] widgets.sort(key=lambda o: o.layer, reverse=True) if not cls.locked or widgets[0] is cls.the_one: cls.origin = widgets[0].on_mousebuttondown(e) else: cls.the_one.blink() elif e.type == MOUSEBUTTONUP: widgets = [ i for i in cls.contents.sprites() if i.rect.collidepoint(e.pos) ] widgets.sort(key=lambda o: o.layer, reverse=True) widgets[0].on_mousebuttonup(e) elif e.type == MOUSEMOTION: x, y = e.pos for widget in cls.contents.sprites(): if widget.rect.collidepoint((x, y)): widget.on_mousemotion(e.rel) x, y = mouse.get_pos() for widget in cls.contents.sprites(): if widget.rect.collidepoint( (x, y)) and (not cls.locked or widget is cls.the_one): widget.on_mouseover() cls.contents.update()