Exemple #1
0
 def get_name():
     star = Systems.get_current_star()
     if star is not None and star.has_name:
         name = star.name
     else:
         name = str(star)
     return name
Exemple #2
0
    def tune_value(self, delta):
        if not self.locked:
            self.increment = self.update_increment()
            self.increment *= delta

            if Systems.get_current_star().validate_orbit(self.value.m +
                                                         self.increment):
                self.value += q(self.increment, self.value.u)
                self.increment = 0
                self.parent.sort_markers()
Exemple #3
0
 def link_astrobody_to_stellar_orbit(self, astrobody):
     locked = [i for i in self.buttons if i.locked]
     if len(locked):
         orbit = PseudoOrbit(locked[0].linked_marker.orbit)
         locked[0].linked_marker.orbit = orbit
         locked[0].linked_type.show()
         locked[0].linked_type.link_astrobody(astrobody)
         self.add_orbits_button.disable()
         if astrobody.celestial_type == 'planet':
             self.recomendation.suggest(astrobody, orbit,
                                        Systems.get_current_star())
             self.recomendation.show_suggestion(astrobody,
                                                orbit.temperature)
Exemple #4
0
 def set_current(self):
     self.toggle_current_markers_and_buttons(False)
     star = Systems.get_current_star()
     self.current = star
     self.curr_idx = self.indexes.index(star)
     self.orbits = self._orbits[star]
     self.markers = self._markers[star]
     self.buttons = self._buttons[star]
     if not len(self.markers) or not self.markers[0].locked:
         self.populate()
     self.toggle_current_markers_and_buttons(True)
     self.sort_buttons()
     self.add_orbits_button.enable()
     self.visible_markers = False
     self.toggle_stellar_orbits()
Exemple #5
0
    def add_new(self, obj):
        if obj not in self.added:
            self.added.append(obj)
        obj_name = obj.cls
        pln_habitable = Systems.get_current().is_habitable(self.current)
        pln_hill = self.current.hill_sphere.m
        obj_type = obj.celestial_type
        roches = self.create_roches_marker(obj)

        text = "A satellite's mass must be less than or equal to the\nmass of the planet."
        text += '\n\nConsider using a less massive satellite for this planet.'
        assert self.current.mass.to('earth_mass').m >= obj.mass.to(
            'earth_mass').m, text

        pos = q(
            round(
                roll(self.current.roches_limit.m,
                     self.current.hill_sphere.m / 2), 3), 'earth_radius')
        orbit = RawOrbit(Systems.get_current_star(), pos)
        obj_marker = Marker(self,
                            obj_name,
                            pos,
                            color=COLOR_SELECTED,
                            lock=False)

        max_value = pln_hill
        if pln_habitable and obj_type != 'asteroid':
            max_value /= 2
        obj_marker.set_max_value(max_value)
        obj_marker.set_min_value(roches.m)
        obj_marker.links(orbit, obj)

        self.markers.append(obj_marker)
        self.properties.add(obj_marker, layer=3)
        self.sort_markers()

        return orbit, obj_marker