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
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()
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)
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()
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