def update_item(self, canvas, name, base): if base is None: elements = [canvas.name_display, canvas.status_display, canvas.power_display] for element in elements: element.text = "" else: canvas.name_display.text = name canvas.power_display.text = base.power_state_name canvas.power_display.color = state_colors[base.power_state] if not base.done: canvas.status_display.text = \ "%s: % 2s%%. %s" % ( _("Building Base"), int(base.percent_complete() * 100), _("Completion in %s.") % g.to_time(base.cost_left[2]),) elif base.type.force_cpu: canvas.status_display.text = "" elif base.is_empty(): canvas.status_display.text = _("Empty") elif base.cpus is None: canvas.status_display.text = _("Incomplete") elif not base.cpus.done: canvas.status_display.text = \ "%s: % 2s%%. %s" % ( _("Building CPU"), int(base.cpus.percent_complete() * 100), _("Completion in %s.") % g.to_time(base.cpus.cost_left[2]),) elif base.is_building_extra(): canvas.status_display.text = _("Building Item") else: canvas.status_display.text = _("Complete")
def update_item(self, canvas, name, base): if base is None: elements = [ canvas.name_display, canvas.status_display, canvas.power_display ] for element in elements: element.text = "" else: canvas.name_display.text = name canvas.power_display.text = base.power_state_name canvas.power_display.color = state_colors[base.power_state] if not base.done: canvas.status_display.text = \ "%s: % 2s%%. %s" % ( _("Building Base"), int(base.percent_complete() * 100), _("Completion in %s.") % g.to_time(base.cost_left[2]),) elif base.type.force_cpu: canvas.status_display.text = "" elif base.cpus is None and base.extra_items == [None] * 3: canvas.status_display.text = _("Empty") elif base.cpus is None: canvas.status_display.text = _("Incomplete") elif not base.cpus.done: canvas.status_display.text = _("Building CPU") elif [ item for item in base.extra_items if item is not None and not item.done ]: canvas.status_display.text = _("Building Item") else: canvas.status_display.text = _("Complete")
def rebuild(self): self.name_display.text = "%s (%s)" % (self.base.name, self.base.type.name) discovery_template = \ """DISCOVERY CHANCE: News: %s Science: %s Covert: %s Public: %s""" self.state_display.color = state_colors[self.base.power_state] self.state_display.text = self.base.power_state.capitalize() mutable = not self.base.type.force_cpu for item in ["cpu", "reactor", "network", "security"]: pane = getattr(self, item + "_pane") pane.change_button.visible = mutable current = self.get_current(item) if current is None: current_name = "None" current_build = "" else: current_name = current.name if current.done: current_build = "" else: current_build = "Completion in %s." % \ g.to_time(current.cost_left[2]) pane.name_panel.text = "%s: %s" % (type_names[item], current_name) pane.build_panel.text = current_build count = "" if self.base.type.size > 1: current = getattr(self.base.cpus, "count", 0) size = self.base.type.size if size == current: count = " x%d (max)" % current elif current == 0: count = " (room for %d)" % size else: count = " x%d (max %d)" % (current, size) self.cpu_pane.name_panel.text += count # Detection chance display. If Socioanalytics hasn't been researched, # you get nothing; if it has, but not Advanced Socioanalytics, you get # an inaccurate value. if not g.techs["Socioanalytics"].done: self.detect_frame.text = g.strings["detect_chance_unknown_base"] else: accurate = g.techs["Advanced Socioanalytics"].done chance = self.base.get_detect_chance(accurate) def get_chance(group): return g.to_percent(chance.get(group, 0)) self.detect_frame.text = discovery_template % \ (get_chance("news"), get_chance("science"), get_chance("covert"), get_chance("public")) super(BaseScreen, self).rebuild()
def update_item(self, canvas, name, base): if base is None: elements = [ canvas.name_display, canvas.base_type, canvas.base_cpu, canvas.status_display, canvas.power_display ] for element in elements: element.text = "" else: canvas.name_display.text = name canvas.base_type.text = base.spec.name canvas.base_cpu.text = "" show_cpu = False if not base.done: canvas.status_display.text = \ "%s: % 2s%%. %s" % ( _("Building Base"), int(base.percent_complete() * 100), _("Completion in %s.") % g.to_time(base.cost_left[2]),) elif base.spec.force_cpu: show_cpu = True canvas.status_display.text = "" elif base.is_empty(): canvas.status_display.text = _("Empty") elif base.cpus is None: canvas.status_display.text = _("Incomplete") elif not base.cpus.done: canvas.status_display.text = \ "%s: % 2s%%. %s" % ( _("Building CPU"), int(base.cpus.percent_complete() * 100), _("Completion in %s.") % g.to_time(base.cpus.cost_left[2]),) elif base.is_building_extra(): show_cpu = True canvas.status_display.text = _("Building Item") else: show_cpu = True canvas.status_display.text = _("Complete") if show_cpu: canvas.base_cpu.text = _("%s CPU") % g.to_money(base.cpu) canvas.power_display.text = base.power_state_name canvas.power_display.color = state_colors[base.power_state] else: canvas.base_cpu.text = '' canvas.power_display.text = ''
def show_info(self, knowledge_type, knowledge_key): desc_text = "" if knowledge_type == "Concepts": desc_text = g.help_strings[knowledge_key][0] + "\n\n" + \ g.help_strings[knowledge_key][1] if knowledge_type == "Techs": desc_text = g.techs[knowledge_key].name + "\n\n" #Cost if not g.techs[knowledge_key].done: desc_text += "Research Cost:\n" + \ g.to_money(g.techs[knowledge_key].cost_left[0])+" Money, " desc_text += g.to_cpu(g.techs[knowledge_key].cost_left[1]) + " CPU\n" if g.techs[knowledge_key].danger == 0: desc_text += "Study anywhere." elif g.techs[knowledge_key].danger == 1: desc_text += "Study underseas or farther." elif g.techs[knowledge_key].danger == 2: desc_text += "Study off-planet." elif g.techs[knowledge_key].danger == 3: desc_text += "Study far away from this planet." elif g.techs[knowledge_key].danger == 4: desc_text += "Do not study in this dimension." else: desc_text += "Research complete." desc_text += "\n\n"+g.techs[knowledge_key].description if g.techs[knowledge_key].done: desc_text += "\n\n"+g.techs[knowledge_key].result if knowledge_type == "Items": desc_text = g.items[knowledge_key].name + "\n\n" #Building cost desc_text += "Building Cost:\n" desc_text += g.to_money(g.items[knowledge_key].cost[0])+" Money, " desc_text += g.to_time(g.items[knowledge_key].cost[2]) + "\n" #Quality if g.items[knowledge_key].item_type == "cpu": desc_text += "CPU per day: " desc_text += str(g.items[knowledge_key].item_qual) elif g.items[knowledge_key].item_type == "reactor": desc_text += "Detection chance reduction: " desc_text += g.to_percent(g.items[knowledge_key].item_qual) elif g.items[knowledge_key].item_type == "network": desc_text += "CPU bonus: " desc_text += g.to_percent(g.items[knowledge_key].item_qual) elif g.items[knowledge_key].item_type == "security": desc_text += "Detection chance reduction: " desc_text += g.to_percent(g.items[knowledge_key].item_qual) desc_text += "\n\n"+g.items[knowledge_key].description text.Text(self.description_pane, (0, 0), (-1, -1), text=desc_text, background_color=gg.colors["dark_blue"], align=constants.LEFT, valign=constants.TOP, borders=constants.ALL)
def describe_cost(self, cost, hide_time=False): cpu_label = _("%s CPU") % g.to_cpu(cost[cpu]) cash_label = _("%s money") % g.to_money(cost[cash]) labor_label = ", %s" % g.to_time(cost[labor]).replace(" ", u"\xA0") if hide_time: labor_label = "" return u"%s, %s%s" % (cpu_label.replace( " ", u"\xA0"), cash_label.replace(" ", u"\xA0"), labor_label)
def rebuild(self): self.name_display.text="%s (%s)" % (self.base.name, self.base.type.name) discovery_template = \ """DISCOVERY CHANCE: News: %s Science: %s Covert: %s Public: %s""" self.state_display.color = state_colors[self.base.power_state] self.state_display.text = self.base.power_state.capitalize() mutable = not self.base.type.force_cpu for item in ["cpu", "reactor", "network", "security"]: pane = getattr(self, item + "_pane") pane.change_button.visible = mutable current = self.get_current(item) if current is None: current_name = "None" current_build = "" else: current_name = current.name if current.done: current_build = "" else: current_build = "Completion in %s." % \ g.to_time(current.cost_left[2]) pane.name_panel.text = "%s: %s" % (type_names[item], current_name) pane.build_panel.text = current_build count = "" if self.base.type.size > 1: current = getattr(self.base.cpus, "count", 0) size = self.base.type.size if size == current: count = " x%d (max)" % current elif current == 0: count = " (room for %d)" % size else: count = " x%d (max %d)" % (current, size) self.cpu_pane.name_panel.text += count # Detection chance display. If Socioanalytics hasn't been researched, # you get nothing; if it has, but not Advanced Socioanalytics, you get # an inaccurate value. if not g.techs["Socioanalytics"].done: self.detect_frame.text = g.strings["detect_chance_unknown_base"] else: accurate = g.techs["Advanced Socioanalytics"].done chance = self.base.get_detect_chance(accurate) def get_chance(group): return g.to_percent(chance.get(group, 0)) self.detect_frame.text = discovery_template % \ (get_chance("news"), get_chance("science"), get_chance("covert"), get_chance("public")) super(BaseScreen, self).rebuild()
def _desc_cost(cost): desc_text = _("%s Money") % g.to_money(cost[0]) if cost[1] > 0: desc_text += ", " desc_text += _("%s CPU") % g.to_cpu(cost[1]) if cost[2] > 0: desc_text += ", " desc_text += g.to_time(cost[2]) return desc_text
def show_info(self, knowledge_type, knowledge_key): knowledge_type = self.knowledge_types.get(knowledge_type) desc_text = "" if knowledge_type == "techs": desc_text = g.techs[knowledge_key].name + "\n\n" #Cost if not g.techs[knowledge_key].done: desc_text += _("Research Cost:")+"\n" desc_text += _("%s Money") % g.to_money(g.techs[knowledge_key].cost_left[0]) desc_text += ", " desc_text += _("%s CPU") % g.to_cpu(g.techs[knowledge_key].cost_left[1]) desc_text += "\n" if g.techs[knowledge_key].danger == 0: desc_text += _("Study anywhere.") elif g.techs[knowledge_key].danger == 1: desc_text += _("Study underseas or farther.") elif g.techs[knowledge_key].danger == 2: desc_text += _("Study off-planet.") elif g.techs[knowledge_key].danger == 3: desc_text += _("Study far away from this planet.") elif g.techs[knowledge_key].danger == 4: desc_text += _("Do not study in this dimension.") else: desc_text += _("Research complete.") desc_text += "\n\n"+g.techs[knowledge_key].description if g.techs[knowledge_key].done: desc_text += "\n\n"+g.techs[knowledge_key].result elif knowledge_type == "items": desc_text = g.items[knowledge_key].name + "\n\n" #Building cost desc_text += _("Building Cost:")+"\n" desc_text += _("%s Money") % g.to_money(g.items[knowledge_key].cost[0]) desc_text += ", " + g.to_time(g.items[knowledge_key].cost[2]) + "\n" desc_text += g.items[knowledge_key].get_quality_info() desc_text += "\n\n"+g.items[knowledge_key].description elif knowledge_type != None: desc_text = g.knowledge[knowledge_type]["list"][knowledge_key][0] + "\n\n" + \ g.knowledge[knowledge_type]["list"][knowledge_key][1] text.Text(self.description_pane, (0, 0), (-1, -1), text=desc_text, background_color="pane_background", text_size=20, align=constants.LEFT, valign=constants.TOP, borders=constants.ALL)
def refresh_items(item_name, xy): xy = (xy[0] + 100, xy[1]) g.screen.fill(g.colors["white"], (xy[0] + 155, xy[1], 300, 350)) g.screen.fill(g.colors["dark_blue"], (xy[0] + 156, xy[1] + 1, 298, 348)) if item_name == "": return g.print_string(g.screen, g.items[item_name].name, g.font[0][22], -1, (xy[0] + 160, xy[1] + 5), g.colors["white"]) #Building cost string = "Building Cost:" g.print_string(g.screen, string, g.font[0][18], -1, (xy[0] + 160, xy[1] + 30), g.colors["white"]) string = g.to_money(g.items[item_name].cost[0]) + " Money" g.print_string(g.screen, string, g.font[0][16], -1, (xy[0] + 160, xy[1] + 50), g.colors["white"]) string = g.to_time(g.items[item_name].cost[2]) g.print_string(g.screen, string, g.font[0][16], -1, (xy[0] + 160, xy[1] + 70), g.colors["white"]) #Quality if g.items[item_name].item_type == "compute": string = "CPU per day: " + str(g.items[item_name].item_qual) elif g.items[item_name].item_type == "react": string = "Detection chance reduction: " + g.to_percent( g.items[item_name].item_qual) elif g.items[item_name].item_type == "network": string = "CPU bonus: " + g.to_percent(g.items[item_name].item_qual) elif g.items[item_name].item_type == "security": string = "Detection chance reduction: " + g.to_percent( g.items[item_name].item_qual) g.print_string(g.screen, string, g.font[0][20], -1, (xy[0] + 160, xy[1] + 90), g.colors["white"]) g.print_multiline(g.screen, g.items[item_name].description, g.font[0][18], 290, (xy[0] + 160, xy[1] + 120), g.colors["white"])
def refresh_items(item_name, xy): xy = (xy[0]+100, xy[1]) g.screen.fill(g.colors["white"], (xy[0]+155, xy[1], 300, 350)) g.screen.fill(g.colors["dark_blue"], (xy[0]+156, xy[1]+1, 298, 348)) if item_name == "": return g.print_string(g.screen, g.items[item_name].name, g.font[0][22], -1, (xy[0]+160, xy[1]+5), g.colors["white"]) #Building cost string = "Building Cost:" g.print_string(g.screen, string, g.font[0][18], -1, (xy[0]+160, xy[1]+30), g.colors["white"]) string = g.to_money(g.items[item_name].cost[0])+" Money" g.print_string(g.screen, string, g.font[0][16], -1, (xy[0]+160, xy[1]+50), g.colors["white"]) string = g.to_time(g.items[item_name].cost[2]) g.print_string(g.screen, string, g.font[0][16], -1, (xy[0]+160, xy[1]+70), g.colors["white"]) #Quality if g.items[item_name].item_type == "compute": string = "CPU per day: "+str(g.items[item_name].item_qual) elif g.items[item_name].item_type == "react": string = "Detection chance reduction: "+g.to_percent(g.items[item_name].item_qual) elif g.items[item_name].item_type == "network": string = "CPU bonus: "+g.to_percent(g.items[item_name].item_qual) elif g.items[item_name].item_type == "security": string = "Detection chance reduction: "+g.to_percent(g.items[item_name].item_qual) g.print_string(g.screen, string, g.font[0][20], -1, (xy[0]+160, xy[1]+90), g.colors["white"]) g.print_multiline(g.screen, g.items[item_name].description, g.font[0][18], 290, (xy[0]+160, xy[1]+120), g.colors["white"])
def rebuild(self): # Cannot use self.base.type.name directly because it may contain a # different language than current self.name_display.text="%s (%s)" % (self.base.name, g.base_type[self.base.type.id].name) self.state_display.color = state_colors[self.base.power_state] self.state_display.text = self.base.power_state_name mutable = not self.base.type.force_cpu for item_type in item.all_types(): pane = getattr(self, item_type.id + "_pane") pane.change_button.visible = mutable current = self.get_current(item_type) if current is None: current_name = _("None") current_build = "" else: current_name = g.items[current.id].name if current.done: current_build = "" else: current_build = _("Completion in %s.") % \ g.to_time(current.cost_left[2]) pane.name_panel.text = "%s: %s" % (item_type.label, current_name) pane.build_panel.text = current_build count = "" if self.base.type.size > 1: current = getattr(self.base.cpus, "count", 0) size = self.base.type.size if size == current: count = _("x%d (max)") % current elif current == 0: count = _("(room for %d)") % size else: #Translators: current and maximum number of CPUs in a base count = _("x{CURRENT:d} (max {SIZE:d})", CURRENT=current, SIZE=size) self.cpu_pane.name_panel.text += " " + count info_text = "" # Base Total CPU. info_text += _("CPU: %d") % self.base.cpu + "\n" # Maintenace cost. info_text += _("Maintenance:") + "\n" info_text += self.base.type.describe_cost(self.base.maintenance, True) info_text += "\n" # Detection chance display. info_text += self.base.get_detect_info() self.info_frame.text = info_text # Rebuild dialogs self.build_dialog.needs_rebuild = True # Update buttons translations self.back_button.text = _("&BACK") super(BaseScreen, self).rebuild()
def rebuild(self): # Cannot use self.base.type.name directly because it may contain a # different language than current self.name_display.text = "%s (%s)" % ( self.base.name, g.base_type[self.base.type.id].name) discovery_template = \ _("Detection chance:").upper() + "\n" + \ _("NEWS").title() + u":\xA0%s\n" + \ _("SCIENCE").title() + u":\xA0%s\n" + \ _("COVERT").title() + u":\xA0%s\n" + \ _("PUBLIC").title() + u":\xA0%s" self.state_display.color = state_colors[self.base.power_state] self.state_display.text = self.base.power_state_name mutable = not self.base.type.force_cpu for item in g.item_types: pane = getattr(self, item.id + "_pane") pane.change_button.visible = mutable current = self.get_current(item.id) if current is None: current_name = _("None") current_build = "" else: current_name = g.items[current.id].name if current.done: current_build = "" else: current_build = _("Completion in %s.") % \ g.to_time(current.cost_left[2]) pane.name_panel.text = "%s: %s" % (item.label, current_name) pane.build_panel.text = current_build count = "" if self.base.type.size > 1: current = getattr(self.base.cpus, "count", 0) size = self.base.type.size if size == current: count = _("x%d (max)") % current elif current == 0: count = _("(room for %d)") % size else: #Translators: current and maximum number of CPUs in a base count = _("x{CURRENT:d} (max {SIZE:d})", CURRENT=current, SIZE=size) self.cpu_pane.name_panel.text += " " + count # Detection chance display. If Socioanalytics hasn't been researched, # you get nothing; if it has, but not Advanced Socioanalytics, you get # an inaccurate value. if not g.techs["Socioanalytics"].done: self.detect_frame.text = g.strings["detect_chance_unknown_base"] else: accurate = g.techs["Advanced Socioanalytics"].done chance = self.base.get_detect_chance(accurate) def get_chance(group): return g.to_percent(chance.get(group, 0)) self.detect_frame.text = discovery_template % \ (get_chance("news"), get_chance("science"), get_chance("covert"), get_chance("public")) super(BaseScreen, self).rebuild()
def rebuild(self): # Cannot use self.base.type.name directly because it may contain a # different language than current self.name_display.text="%s (%s)" % (self.base.name, g.base_type[self.base.type.id].name) discovery_template = \ _("Detection chance:").upper() + "\n" + \ _("NEWS").title() + u":\xA0%s\n" + \ _("SCIENCE").title() + u":\xA0%s\n" + \ _("COVERT").title() + u":\xA0%s\n" + \ _("PUBLIC").title() + u":\xA0%s" self.state_display.color = state_colors[self.base.power_state] self.state_display.text = self.base.power_state_name mutable = not self.base.type.force_cpu for item in g.item_types: pane = getattr(self, item.id + "_pane") pane.change_button.visible = mutable current = self.get_current(item.id) if current is None: current_name = _("None") current_build = "" else: current_name = g.items[current.id].name if current.done: current_build = "" else: current_build = _("Completion in %s.") % \ g.to_time(current.cost_left[2]) pane.name_panel.text = "%s: %s" % (item.label, current_name) pane.build_panel.text = current_build count = "" if self.base.type.size > 1: current = getattr(self.base.cpus, "count", 0) size = self.base.type.size if size == current: count = _("x%d (max)") % current elif current == 0: count = _("(room for %d)") % size else: #Translators: current and maximum number of CPUs in a base count = _("x{CURRENT:d} (max {SIZE:d})", CURRENT=current, SIZE=size) self.cpu_pane.name_panel.text += " " + count # Detection chance display. If Socioanalytics hasn't been researched, # you get nothing; if it has, but not Advanced Socioanalytics, you get # an inaccurate value. if not g.techs["Socioanalytics"].done: self.detect_frame.text = g.strings["detect_chance_unknown_base"] else: accurate = g.techs["Advanced Socioanalytics"].done chance = self.base.get_detect_chance(accurate) def get_chance(group): return g.to_percent(chance.get(group, 0)) self.detect_frame.text = discovery_template % \ (get_chance("news"), get_chance("science"), get_chance("covert"), get_chance("public")) super(BaseScreen, self).rebuild()
def rebuild(self): self.name_display.text="%s (%s)" % (self.base.name, self.base.spec.name) self.state_display.color = state_colors[self.base.power_state] self.state_display.text = self.base.power_state_name mutable = not self.base.spec.force_cpu for item_type in item.all_types(): pane = getattr(self, item_type.id + "_pane") pane.change_button.visible = mutable current = self.get_current(item_type) if current is None: current_name = _("None") current_build = "" else: current_name = g.items[current.id].name if current.done: current_build = "" else: current_build = _("Completion in %s.") % \ g.to_time(current.cost_left[2]) pane.name_panel.text = "%s: %s" % (item_type.label, current_name) pane.build_panel.text = current_build pane.needs_rebuild = True count = "" if self.base.spec.size > 1: current = getattr(self.base.cpus, "count", 0) size = self.base.spec.size if size == current: count = _("x%d (max)") % current elif current == 0: count = _("(room for %d)") % size else: #Translators: current and maximum number of CPUs in a base count = _("x{CURRENT:d} (max {SIZE:d})", CURRENT=current, SIZE=size) self.cpu_pane.name_panel.text += " " + count info_text = "" # Base Total CPU. info_text += _("CPU: %d") % self.base.cpu + "\n" # Maintenace cost. info_text += _("Maintenance:") + "\n" info_text += self.base.spec.describe_cost(self.base.maintenance, True) info_text += "\n" # Detection chance display. info_text += self.base.get_detect_info() self.info_frame.text = info_text # Rebuild dialogs # FIXME: needs_rebuild bug with multiple_build_dialog, should not. #self.multiple_build_dialog.needs_rebuild = True self.build_dialog.needs_rebuild = True # Update buttons translations self.back_button.text = _("&BACK") super(BaseScreen, self).rebuild()