def cost(c): c = [k / f for f, k in zip([1, 86400, 24 * 60], c)] s = ', '.join([ '%s %s' % (g.to_money(k), label) for label, k in zip(["money", "CPU", "days"], c) if k ]) return s and '\\n' + s or ''
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 _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 cost(buy_spec): c = [k / f for f, k in zip([1, 86400, 24 * 60], buy_spec.cost)] s = ', '.join([ '%s %s' % (g.to_money(k), label) for label, k in zip(["money", "CPU", "days"], c) if k ]) if hasattr(buy_spec, 'danger') and buy_spec.danger > 0: d = "Safety needed: %s" % buy_spec.danger if s: s += '\\n' s += d return s and '\\n' + s or ''
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 rebuild(self): # Rebuild dialogs self.location_dialog.needs_rebuild = True self.research_button.dialog.needs_rebuild = True self.knowledge_button.dialog.needs_rebuild = True self.menu_dialog.needs_rebuild = True # Update buttons translations self.report_button.text = _("R&EPORTS") self.knowledge_button.text = _("&KNOWLEDGE") self.log_button.text = _("LO&G") self.menu_button.text = _("&MENU") self.research_button.text = _("&RESEARCH/TASKS") if g.cheater: self.cheat_dialog.needs_rebuild = True super(MapScreen, self).rebuild() self.difficulty_display.text = g.strip_hotkey(g.pl.difficulty.name) self.time_display.text = _("DAY") + " %04d, %02d:%02d:%02d" % \ (g.pl.time_day, g.pl.time_hour, g.pl.time_min, g.pl.time_sec) cash_flow_1d_data, cpu_flow_1d_data = g.pl.compute_future_resource_flow( g.seconds_per_day) cash_flow_1d = cash_flow_1d_data.difference cpu_flow_1d = cpu_flow_1d_data.difference self.cash_display.text = _("CASH")+": %s (%s)" % \ (g.to_money(g.pl.cash), g.to_money(cash_flow_1d, fixed_size=True)) total_cpu = g.pl.available_cpus[0] + g.pl.sleeping_cpus detects_per_day = {group_id: 0 for group_id in g.pl.groups} for base in g.all_bases(): if base.has_grace(): # It cannot be detected, so it doesn't contribute to # detection odds calculation continue detect_chance = base.get_detect_chance() for group_id in g.pl.groups: detects_per_day[group_id] = \ chance.add(detects_per_day[group_id], detect_chance[group_id] / 10000.) self.cpu_display.color = "cpu_normal" self.cpu_display.text = _("CPU")+": %s (%s)" % \ (g.to_money(total_cpu), g.to_money(cpu_flow_1d)) # What we display in the suspicion section depends on whether # Advanced Socioanalytics has been researched. If it has, we # show the standard percentages. If not, we display a short # string that gives a range of 25% as to what the suspicions # are. # A similar system applies to the danger levels shown. normal = (self.suspicion_bar.color, None, False) self.suspicion_bar.chunks = (" [" + _("SUSPICION") + "]", ) self.suspicion_bar.styles = (normal, ) self.danger_bar.chunks = ("[" + _("DETECT RATE") + "]", ) self.danger_bar.styles = (normal, ) for group in g.pl.groups.values(): suspicion = group.suspicion suspicion_color = gg.resolve_color_alias( "danger_level_%d" % g.suspicion_to_danger_level(suspicion)) detects = detects_per_day[group.spec.id] danger_level = group.detects_per_day_to_danger_level(detects) detects_color = gg.resolve_color_alias("danger_level_%d" % danger_level) if g.pl.display_discover == "full": suspicion_display = g.to_percent(suspicion, True) danger_display = g.to_percent(detects * 10000, True) elif g.pl.display_discover == "partial": suspicion_display = g.to_percent( g.nearest_percent(suspicion, 500), True) danger_display = g.to_percent( g.nearest_percent(detects * 10000, 100), True) else: suspicion_display = g.suspicion_to_detect_str(suspicion) danger_display = g.danger_level_to_detect_str(danger_level) self.suspicion_bar.chunks += (" " + group.name + u":\xA0", suspicion_display) self.suspicion_bar.styles += (normal, (suspicion_color, None, False)) self.danger_bar.chunks += (" " + group.name + u":\xA0", danger_display) self.danger_bar.styles += (normal, (detects_color, None, False)) self.suspicion_bar.visible = not g.pl.had_grace self.danger_bar.visible = not g.pl.had_grace for id, location_button in self.location_buttons.items(): location = g.pl.locations[id] location_button.text = "%s (%d)" % (location.name, len(location.bases)) location_button.hotkey = location.hotkey location_button.visible = location.available()
def rebuild(self): # Rebuild dialogs self.location_dialog.needs_rebuild = True self.research_button.dialog.needs_rebuild = True self.knowledge_button.dialog.needs_rebuild = True self.menu_dialog.needs_rebuild = True if g.cheater: self.cheat_dialog.needs_rebuild = True super(MapScreen, self).rebuild() self.difficulty_display.text = g.strip_hotkey(g.pl.difficulty.name) self.time_display.text = _("DAY") + " %04d, %02d:%02d:%02d" % \ (g.pl.time_day, g.pl.time_hour, g.pl.time_min, g.pl.time_sec) cash_flow_1d_data, cpu_flow_1d_data = g.pl.compute_future_resource_flow( g.seconds_per_day) cash_flow_1d = cash_flow_1d_data.difference cpu_flow_1d = cpu_flow_1d_data.difference self.cash_display.text = _("CASH")+": %s (%s)" % \ (g.to_money(g.pl.cash), g.to_money(cash_flow_1d, fixed_size=True)) total_cpu = g.pl.available_cpus[0] + g.pl.sleeping_cpus detects_per_day = {group_id: 0 for group_id in g.pl.groups} total_bases = 0 active_bases = 0 idle_bases_unable_to_sustain_singularity = 0 for base in g.all_bases(): total_bases += 1 maintains_singularity = base.maintains_singularity if maintains_singularity: active_bases += 1 elif base.done and not base.is_building(): idle_bases_unable_to_sustain_singularity += 1 if base.has_grace(): # It cannot be detected, so it doesn't contribute to # detection odds calculation continue detect_chance = base.get_detect_chance() for group_id in g.pl.groups: detects_per_day[group_id] = \ chance.add(detects_per_day[group_id], detect_chance[group_id] / 10000.) self.cpu_display.color = "cpu_normal" self.cpu_display.text = _("CPU")+": %s (%s)" % \ (g.to_money(total_cpu), g.to_money(cpu_flow_1d)) if active_bases == 1 and not g.pl.apotheosis: self.base_display.color = 'base_situation_one_active_base' elif idle_bases_unable_to_sustain_singularity > 0: self.base_display.color = 'base_situation_idle_incomplete_bases' elif total_bases > 10 and not g.pl.apotheosis: self.base_display.color = 'base_situation_many_bases' else: self.base_display.color = 'base_situation_normal' self.base_display.text = _("BASES") + ": %s / %s (%s)" % ( active_bases, total_bases, idle_bases_unable_to_sustain_singularity) # What we display in the suspicion section depends on whether # Advanced Socioanalytics has been researched. If it has, we # show the standard percentages. If not, we display a short # string that gives a range of 25% as to what the suspicions # are. # A similar system applies to the danger levels shown. normal = (self.suspicion_bar.color, None, False) suspicion_bar_chunks = [" [" + _("SUSPICION") + "]"] suspicion_bar_styles = [normal] danger_bar_chunks = ["[" + _("DETECT RATE") + "]"] danger_bar_styles = [normal] for group in g.pl.groups.values(): suspicion = group.suspicion suspicion_color = gg.resolve_color_alias( "danger_level_%d" % g.suspicion_to_danger_level(suspicion)) detects = detects_per_day[group.spec.id] danger_level = group.detects_per_day_to_danger_level(detects) detects_color = gg.resolve_color_alias("danger_level_%d" % danger_level) if g.pl.display_discover == "full": suspicion_display = g.to_percent(suspicion, True) danger_display = g.to_percent(detects * 10000, True) elif g.pl.display_discover == "partial": suspicion_display = g.to_percent( g.nearest_percent(suspicion, 500), True) danger_display = g.to_percent( g.nearest_percent(detects * 10000, 100), True) else: suspicion_display = g.suspicion_to_detect_str(suspicion) danger_display = g.danger_level_to_detect_str(danger_level) suspicion_bar_chunks.extend( (" " + group.name + u":\xA0", suspicion_display)) suspicion_bar_styles.extend( (normal, (suspicion_color, None, False))) danger_bar_chunks.extend( (" " + group.name + u":\xA0", danger_display)) danger_bar_styles.extend((normal, (detects_color, None, False))) self.suspicion_bar.visible = not g.pl.had_grace self.suspicion_bar.chunks = tuple(suspicion_bar_chunks) self.suspicion_bar.styles = tuple(suspicion_bar_styles) self.danger_bar.visible = not g.pl.had_grace self.danger_bar.chunks = tuple(danger_bar_chunks) self.danger_bar.styles = tuple(danger_bar_styles) for id, location_button in self.location_buttons.items(): location = g.pl.locations[id] location_button.text = "%s (%d)" % (location.name, len(location.bases)) location_button.hotkey = location.hotkey location_button.visible = location.available()