Example #1
0
    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})
Example #2
0
    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})
Example #3
0
 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)
Example #5
0
 def on_mousebuttondown(self, event):
     if event.button == 1 and self.enabled:
         EventHandler.trigger('ClearData', 'NewButton',
                              {'panel': self.parent.current})
Example #6
0
 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)
Example #7
0
 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()