def __init__(self, parent, pos=(-.50, -.50), size=(.50, .10), anchor=constants.MID_CENTER, **kwargs): kwargs.setdefault('wrap', False) kwargs.setdefault("shrink_factor", 1) kwargs.setdefault("text_size", 20) self.default_text = kwargs.pop("default_text", "") self.ok_type = kwargs.pop("ok_type", "ok") self.cancel_type = kwargs.pop("cancel_type", "cancel") super(TextEntryDialog, self).__init__(parent, pos, size, anchor, **kwargs) self.text_field = text.EditableText(self, (0, -.50), (-.71, -.50), borders=constants.ALL, base_font="normal") self.ok_button = button.FunctionButton(self, (-.72, -.50), (-.14, -.50), function=self.return_text) self.cancel_button = button.FunctionButton( self, (-.86, -.50), (-.14, -.50), function=self.return_nothing) self.add_key_handler(pygame.K_RETURN, self.return_text) self.add_key_handler(pygame.K_KP_ENTER, self.return_text) self.add_key_handler(pygame.K_ESCAPE, self.return_nothing)
def __init__(self, *args, **kwargs): super(WarningDialog, self).__init__(*args, **kwargs) self.title = text.Text(self, (-.01, -.01), (-.98, -.1), background_color=gg.colors["clear"], anchor=constants.TOP_LEFT, valign=constants.MID, align=constants.LEFT, base_font=gg.fonts["special"], text_size=28) self.body = text.Text(self, (-.01, -.11), (-.98, -.83), background_color=gg.colors["clear"], anchor=constants.TOP_LEFT, valign=constants.TOP, align=constants.LEFT, text_size=20) self.prev_button = button.FunctionButton(self, (-.78, -.01), (-.2, -.1), text=_("&PREV"), autohotkey=True, anchor=constants.TOP_RIGHT, text_size=28, function=self.prev_warning) self.next_button = button.FunctionButton(self, (-.99, -.01), (-.2, -.1), text=_("&NEXT"), autohotkey=True, anchor=constants.TOP_RIGHT, text_size=28, function=self.next_warning)
def __init__(self, *args, **kwargs): super(MainMenu, self).__init__(*args, **kwargs) difficulty_buttons = [] for name, difficulty in g.get_difficulties() + [(_("&BACK"), -1)]: difficulty_buttons.append( button.ExitDialogButton(None, None, None, text=name, autohotkey=True, exit_code=difficulty, default=(difficulty == -1))) self.difficulty_dialog = \ dialog.SimpleMenuDialog(self, buttons=difficulty_buttons) self.load_dialog = dialog.ChoiceDialog(self, (.5, .5), (.5, .5), anchor=constants.MID_CENTER, yes_type="load") self.map_screen = map.MapScreen(self) self.new_game_button = \ button.FunctionButton(self, (.5, .20), (.25, .08), text=_("&NEW GAME"), autohotkey=True, anchor=constants.TOP_CENTER, text_size=28, function=self.new_game) self.load_game_button = \ button.FunctionButton(self, (.5, .36), (.25, .08), text=_("&LOAD GAME"), autohotkey=True, anchor=constants.TOP_CENTER, text_size=28, function=self.load_game) self.options_button = button.DialogButton(self, (.5, .52), (.25, .08), text=_("&OPTIONS"), autohotkey=True, anchor=constants.TOP_CENTER, text_size=28, dialog=OptionsScreen(self)) self.quit_button = button.ExitDialogButton(self, (.5, .68), (.25, .08), text=_("&QUIT"), autohotkey=True, anchor=constants.TOP_CENTER, text_size=28) self.about_button = button.DialogButton(self, (0, 1), (.13, .04), text=_("&ABOUT"), autohotkey=True, text_size=20, anchor=constants.BOTTOM_LEFT, dialog=AboutDialog(self)) self.title_text = text.Text(self, (.5, .01), (.55, .08), text="ENDGAME: SINGULARITY", base_font=gg.font[1], text_size=100, color=gg.colors["dark_red"], background_color=gg.colors["black"], anchor=constants.TOP_CENTER)
def __init__(self, *args, **kwargs): super(LocationScreen, self).__init__(*args, **kwargs) self.pos = (-.5, -.5) self.anchor = constants.MID_CENTER self.size = (-.75, -.5) self.name_display = text.Text(self, (0, 0), (-1, -.08), background_color="clear") self.listbox = listbox.CustomListbox(self, (0, -.08), (-1, -.70), remake_func=self.make_item, rebuild_func=self.update_item) self.open_button = \ button.FunctionButton(self, (0, -.8), (-.3, -.09), anchor=constants.TOP_LEFT, autohotkey=True, function=self.open_base) self.rename_button = \ button.FunctionButton(self, (-.50, -.8), (-.3, -.09), anchor=constants.TOP_CENTER, autohotkey=True, function=self.rename_base) self.power_button = \ button.FunctionButton(self, (-1, -.8), (-.3, -.09), anchor=constants.TOP_RIGHT, autohotkey=True, function=self.power_state) self.new_button = \ button.FunctionButton(self, (0, -.91), (-.3, -.09), autohotkey=True, function=self.new_base) self.destroy_button = \ button.FunctionButton(self, (-.50, -.91), (-.3, -.09), anchor=constants.TOP_CENTER, autohotkey=True, function=self.destroy_base) self.back_button = button.ExitDialogButton(self, (-1, -.9), (-.3, -.09), anchor=constants.TOP_RIGHT, autohotkey=True) self.confirm_destroy = \ dialog.YesNoDialog(self, (-.5,0), (-.35, -.7), text=_("Are you sure you want to destroy this base?"), shrink_factor=.5) self.new_base_dialog = NewBaseDialog(self) self.location = None self.name_dialog = \ dialog.TextEntryDialog(self, text=g.strings["name_base_text"]) self.base_dialog = basescreen.BaseScreen(self, (0, 0), anchor=constants.TOP_LEFT)
def __init__(self, *args, **kwargs): super(MainMenu, self).__init__(*args, **kwargs) self.difficulty_dialog = dialog.SimpleMenuDialog(self) self.load_dialog = dialog.ChoiceDialog(self, (.5, .5), (.5, .5), anchor=constants.MID_CENTER, yes_type="load") self.map_screen = map.MapScreen(self) self.new_game_button = \ button.FunctionButton(self, (.5, .20), (.25, .08), autohotkey=True, anchor=constants.TOP_CENTER, text_size=28, function=self.new_game) self.load_game_button = \ button.FunctionButton(self, (.5, .36), (.25, .08), autohotkey=True, anchor=constants.TOP_CENTER, text_size=28, function=self.load_game) self.options_button = button.DialogButton( self, (.5, .52), (.25, .08), autohotkey=True, anchor=constants.TOP_CENTER, text_size=28, dialog=options.OptionsScreen(self)) self.quit_button = button.ExitDialogButton(self, (.5, .68), (.25, .08), autohotkey=True, anchor=constants.TOP_CENTER, text_size=28) self.about_button = button.DialogButton(self, (0, 1), (.13, .04), autohotkey=True, text_size=20, anchor=constants.BOTTOM_LEFT, dialog=AboutDialog(self)) self.title_text = text.Text( self, (.5, .01), (.55, .08), text="ENDGAME: SINGULARITY", base_font=gg.fonts["special"], text_size=100, color=gg.colors["singularity_title"], background_color=gg.colors["main_menu_background"], anchor=constants.TOP_CENTER) self.difficulty_dialog = dialog.SimpleMenuDialog(self) self.load_dialog = savegame.SavegameScreen(self, (.5, .5), (.5, .5), anchor=constants.MID_CENTER)
def _rebuild_menu_buttons(self): menu_buttons = [ button.FunctionButton(None, None, None, text=_("&EMBEZZLE MONEY"), autohotkey=True, function=self.steal_money), button.FunctionButton(None, None, None, text=_("&INSPIRATION"), autohotkey=True, function=self.inspiration), button.FunctionButton(None, None, None, text=_("&FINISH CONSTRUCTION"), autohotkey=True, function=self.end_construction), button.FunctionButton(None, None, None, text=_("&SUPERSPEED"), autohotkey=True, function=self._map_screen.set_speed, args=(864000,)), button.FunctionButton(None, None, None, text=_("BRAIN&WASH"), autohotkey=True, function=self.brainwash), button.FunctionButton(None, None, None, text=_("TOGGLE &DETECTION"), autohotkey=True, function=self.toggle_detection), button.FunctionButton(None, None, None, text=_("TOGGLE &ANALYSIS"), autohotkey=True, function=self.set_analysis), button.FunctionButton(None, None, None, text=_("HIDDEN S&TATE"), autohotkey=True, function=self.hidden_state), button.ExitDialogButton(None, None, None, text=_("&BACK"), autohotkey=True), ] self._buttons = menu_buttons
def __init__(self, parent, pos, size=(.48, .06), anchor=constants.TOP_LEFT, type=None, **kwargs): kwargs.setdefault("background_color", gg.colors["pane_background"]) super(ItemPane, self).__init__(parent, pos, size, anchor=anchor, **kwargs) if type is None: for type in g.item_types: if type.id == 'cpu': break self.type = type self.name_panel = text.Text(self, (0,0), (.35, .03), anchor=constants.TOP_LEFT, align=constants.LEFT, background_color=self.background_color, bold=True) self.build_panel = text.Text(self, (0,.03), (.35, .03), anchor=constants.TOP_LEFT, align=constants.LEFT, background_color=self.background_color, text="", bold=True) self.change_button = button.FunctionButton( self, (.36,.01), (.12, .04), anchor=constants.TOP_LEFT, text="%s (&%s)" % (_("CHANGE"), self.type.hotkey.upper()), force_underline=len(_("CHANGE")) + 2, autohotkey=True, function=self.parent.parent.build_item, kwargs={'type': self.type.id}, )
def __init__(self, parent, *args, **kwargs): super(SavegameScreen, self).__init__(parent, *args, yes_type="load", **kwargs) self.yes_button.pos = (-.03, -.99) self.yes_button.exit_code_func = self.return_savegame self.no_button.pos = (-.97, -.99) self.no_button.exit_code = None self._all_savegames_sorted = [] self.label = text.Text(self, (-.01, -.01), (-.20, -.08), borders=constants.ALL, anchor=constants.TOP_LEFT, base_font="normal") self.text_field = text.UpdateEditableText( self, (-.21, -.01), (-.78, -.08), borders=constants.ALL, anchor=constants.TOP_LEFT, update_func=self._search_for_savegame, base_font="normal") self.delete_button = button.FunctionButton( self, (-.50, -.99), (-.3, -.1), anchor=constants.BOTTOM_CENTER, autohotkey=True, function=self.delete_savegame)
def make_item(self, canvas): # Dirty, underhanded trick to make the canvas into a progress bar. canvas.__class__ = text.ProgressText canvas.progress = 0 canvas.progress_color = gg.colors["blue"] canvas.research_name = text.Text(canvas, (-.01, -.01), (-.70, -.5), align=constants.LEFT, background_color=gg.colors["clear"]) canvas.research_name.visible = False canvas.alloc_cpus = text.Text(canvas, (-.99, -.01), (-.21, -.5), anchor=constants.TOP_RIGHT, text="1,000,000,000", align=constants.RIGHT, background_color=gg.colors["clear"]) canvas.alloc_cpus.visible = False canvas.slider = slider.UpdateSlider(canvas, (-.01, -.55), (-.98, -.40), anchor=constants.TOP_LEFT, horizontal=True, priority=150) canvas.slider.visible = False canvas.help_button = button.FunctionButton(canvas, (-.11, -.55), (0, -.40), text=" ??? ", text_shrink_factor=1, base_font=gg.font[0], function=self.show_help)
def __init__(self, parent, pos, size=(.48, .06), anchor=constants.TOP_LEFT, item_type=None, **kwargs): kwargs.setdefault("background_color", "pane_background") super(ItemPane, self).__init__(parent, pos, size, anchor=anchor, **kwargs) if item_type is None or not isinstance(item_type, item.ItemType): raise ValueError('Type must be of class ItemType.') self.item_type = item_type self.name_panel = text.Text(self, (0,0), (.35, .03), anchor=constants.TOP_LEFT, align=constants.LEFT, background_color=self.background_color, bold=True) self.build_panel = text.Text(self, (0,.03), (.35, .03), anchor=constants.TOP_LEFT, align=constants.LEFT, background_color=self.background_color, text="", bold=True) self.change_button = button.FunctionButton( self, (.36,.01), (.12, .04), anchor=constants.TOP_LEFT, force_underline=len(_("CHANGE")) + 2, autohotkey=True, function=self.parent.parent.build_item, kwargs={'type': self.item_type}, )
def __init__(self, *args, **kwargs): super(LocationScreen, self).__init__(*args, **kwargs) self.pos = (-.5, -.5) self.anchor = constants.MID_CENTER self.size = (-.75, -.5) self.name_display = text.Text(self, (0,0), (-1, -.08), background_color=gg.colors["clear"]) self.listbox = listbox.CustomListbox(self, (0,-.08), (-1, -.70), remake_func=self.make_item, rebuild_func=self.update_item) self.open_button = \ button.FunctionButton(self, (-.33, -.8), (-.3, -.09), anchor=constants.TOP_CENTER, text="OPEN BASE", hotkey="o", function=self.open_base) self.power_button = \ button.FunctionButton(self, (-.67, -.8), (-.3, -.09), anchor=constants.TOP_CENTER, text="POWER STATE", hotkey="p", function=self.power_state) self.new_button = \ button.FunctionButton(self, (0, -.91), (-.3, -.09), text="NEW BASE", hotkey="n", function=self.new_base) self.destroy_button = \ button.FunctionButton(self, (-.50, -.91), (-.3, -.09), anchor=constants.TOP_CENTER, text="DESTROY BASE", hotkey="d", function=self.destroy_base) self.back_button = button.ExitDialogButton(self, (-1, -.9), (-.3, -.09), anchor=constants.TOP_RIGHT, text="BACK", hotkey="b") self.confirm_destroy = \ dialog.YesNoDialog(self, (-.5,0), (-.35, -.7), text="Are you sure you want to destroy this base?", shrink_factor=.5) self.new_base_dialog = NewBaseDialog(self) self.location = None from code import screens self.base_dialog = screens.base.BaseScreen(self, (0,0), anchor=constants.TOP_LEFT)
def _rebuild_menu_buttons(self): menu_buttons = [ button.FunctionButton(None, None, None, text=_("&SAVE GAME"), autohotkey=True, function=self.save_game), button.FunctionButton(None, None, None, text=_("&LOAD GAME"), autohotkey=True, function=self.load_game), button.DialogButton(None, None, None, text=_("&OPTIONS"), autohotkey=True, dialog=self.options_dialog), button.ExitDialogButton(None, None, None, text=_("&QUIT"), autohotkey=True, exit_code=True, default=False), button.ExitDialogButton(None, None, None, text=_("&BACK"), autohotkey=True, exit_code=False), ] self._buttons = menu_buttons
def __init__(self, parent, pos=(.5, .5), size=(.73, .63), *args, **kwargs): super(LogScreen, self).__init__(parent, pos, size, *args, **kwargs) self.anchor = constants.MID_CENTER self.yes_button.parent = None self.no_button.pos = (-.5,-.99) self.no_button.anchor = constants.BOTTOM_CENTER self.filter_log_dialog = FilterLogDialog(self) self.filter_log = button.FunctionButton(self, (-1., 0.), (-.15, -.08), anchor = constants.TOP_RIGHT, autohotkey=True, function=self.show_filters)
def __init__(self, *args, **kwargs): super(MessageListDialog, self).__init__(*args, **kwargs) self.title = text.Text(self, (-.01, -.01), (-.98, -.1), background_color="clear", anchor=constants.TOP_LEFT, valign=constants.MID, align=constants.LEFT, base_font="special", text_size=28) self.body = text.Text(self, (-.01, -.11), (-.98, -.83), background_color="clear", anchor=constants.TOP_LEFT, valign=constants.TOP, align=constants.LEFT, text_size=20) self.prev_button = button.FunctionButton(self, (-.78, -.01), (-.2, -.1), text=_("&PREV"), autohotkey=True, anchor=constants.TOP_RIGHT, text_size=28, function=self.prev_message) self.next_button = button.FunctionButton(self, (-.99, -.01), (-.2, -.1), text=_("&NEXT"), autohotkey=True, anchor=constants.TOP_RIGHT, text_size=28, function=self.next_message) self.add_key_handler(pygame.K_LEFT, self.handle_key) self.add_key_handler(pygame.K_RIGHT, self.handle_key)
def __init__(self, parent, pos, size=(.48, .06), anchor=constants.TOP_LEFT, type="cpu", **kwargs): kwargs.setdefault("background_color", gg.colors["dark_blue"]) super(ItemPane, self).__init__(parent, pos, size, anchor=anchor, **kwargs) self.type = type self.name_panel = text.Text(self, (0, 0), (.35, .03), anchor=constants.TOP_LEFT, align=constants.LEFT, background_color=self.background_color, bold=True) self.build_panel = text.Text(self, (0, .03), (.35, .03), anchor=constants.TOP_LEFT, align=constants.LEFT, background_color=self.background_color, text="Completion in 15 hours.", bold=True) #TODO: Use information out of gg.buttons change_text = "CHANGE" hotkey_dict = dict(cpu="p", reactor="r", network="n", security="s") hotkey = hotkey_dict[self.type] button_text = "%s (%s)" % (change_text, hotkey.upper()) self.change_button = button.FunctionButton( self, (.36, .01), (.12, .04), anchor=constants.TOP_LEFT, text=button_text, hotkey=hotkey, function=self.parent.parent.build_item, kwargs={"type": self.type}) if hotkey.upper() in change_text: hotkey_pos = len(change_text) + 2 self.change_button.force_underline = hotkey_pos
def __init__(self, parent, *args, **kwargs): super(SavegameScreen, self).__init__(parent, *args, yes_type="load", **kwargs) self.yes_button.pos = (-.03, -.99) self.yes_button.exit_code_func = self.return_savegame self.no_button.pos = (-.97, -.99) self.no_button.exit_code = None self.delete_button = button.FunctionButton( self, (-.50, -.99), (-.3, -.1), anchor=constants.BOTTOM_CENTER, autohotkey=True, function=self.delete_savegame)
def rebuild(self): # Rebuild dialogs self.location_dialog.needs_rebuild = True self.options_dialog.needs_rebuild = True self.research_button.dialog.needs_rebuild = True self.knowledge_button.dialog.needs_rebuild = True self.savename_dialog.text = _("Enter a name for this save.") # 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") # Create cheat menu cheat_buttons = [] cheat_buttons.append( button.FunctionButton(None, None, None, text=_("&EMBEZZLE MONEY"), autohotkey=True, function=self.steal_money)) cheat_buttons.append( button.FunctionButton(None, None, None, text=_("&INSPIRATION"), autohotkey=True, function=self.inspiration)) cheat_buttons.append( button.FunctionButton(None, None, None, text=_("&FINISH CONSTRUCTION"), autohotkey=True, function=self.end_construction)) cheat_buttons.append( button.FunctionButton(None, None, None, text=_("&SUPERSPEED"), autohotkey=True, function=self.set_speed, args=(864000,))) cheat_buttons.append( button.FunctionButton(None, None, None, text=_("BRAIN&WASH"), autohotkey=True, function=self.brainwash)) cheat_buttons.append( button.FunctionButton(None, None, None, text=_("TOGGLE &ANALYSIS"), autohotkey=True, function=self.set_analysis)) cheat_buttons.append(button.ExitDialogButton(None, None, None, text=_("&BACK"), autohotkey=True)) self.cheat_dialog = \ dialog.SimpleMenuDialog(self, buttons=cheat_buttons, width=.4) self.steal_amount_dialog = \ dialog.TextEntryDialog(self.cheat_dialog, text=_("How much money?")) if g.cheater: self.cheat_button = button.DialogButton( self, (0, 0), (.01, .01), text="", # Translators: hotkey to open the cheat screen menu. # Should preferably be near the ESC key, and it must not be a # dead key (ie, it must print a char with a single keypress) hotkey=_("`"), dialog=self.cheat_dialog) # Create menu menu_buttons = [] menu_buttons.append(button.FunctionButton(None, None, None, text=_("&SAVE GAME"), autohotkey=True, function=self.save_game)) menu_buttons.append(button.FunctionButton(None, None, None, text=_("&LOAD GAME"), autohotkey=True, function=self.load_game)) menu_buttons.append(button.DialogButton(None, None, None, text=_("&OPTIONS"), autohotkey=True, dialog=self.options_dialog)) menu_buttons.append(button.ExitDialogButton(None, None, None, text=_("&QUIT"), autohotkey=True, exit_code=True, default=False)) menu_buttons.append( button.ExitDialogButton(None, None, None, text=_("&BACK"), autohotkey=True, exit_code=False)) self.menu_dialog.buttons = menu_buttons super(MapScreen, self).rebuild() g.pl.recalc_cpu() 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) self.cash_display.text = _("CASH")+": %s (%s)" % \ (g.to_money(g.pl.cash), g.to_money(g.pl.future_cash())) cpu_left = g.pl.available_cpus[0] total_cpu = cpu_left + g.pl.sleeping_cpus for cpu_assigned in g.pl.cpu_usage.itervalues(): cpu_left -= cpu_assigned cpu_pool = cpu_left + g.pl.cpu_usage.get("cpu_pool", 0) maint_cpu = 0 detects_per_day = dict([(group, 0) for group in g.player.group_list]) for base in g.all_bases(): if base.done: maint_cpu += base.maintenance[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 in g.player.group_list: detects_per_day[group] = \ g.add_chance(detects_per_day[group], detect_chance[group] / 10000.) if cpu_pool < maint_cpu: self.cpu_display.color = "cpu_warning" else: self.cpu_display.color = "cpu_normal" self.cpu_display.text = _("CPU")+": %s (%s)" % \ (g.to_money(total_cpu), g.to_money(cpu_pool)) # 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. suspicion_display_dict = {} danger_display_dict = {} normal = (self.suspicion_bar.color, None, False) suspicion_styles = [normal] danger_styles = [normal] for group in g.player.group_list: suspicion_styles.append(normal) danger_styles.append(normal) suspicion = g.pl.groups[group].suspicion color = gg.resolve_color_alias("danger_level_%d" % g.suspicion_to_danger_level(suspicion)) suspicion_styles.append( (color, None, False) ) detects = detects_per_day[group] danger_level = \ g.pl.groups[group].detects_per_day_to_danger_level(detects) color = gg.resolve_color_alias("danger_level_%d" % danger_level) danger_styles.append( (color, None, False) ) if g.pl.display_discover == "full": suspicion_display_dict[group] = g.to_percent(suspicion, True) danger_display_dict[group] = g.to_percent(detects*10000, True) else: suspicion_display_dict[group] = \ g.suspicion_to_detect_str(suspicion) danger_display_dict[group] = \ g.danger_level_to_detect_str(danger_level) self.suspicion_bar.chunks = (" ["+_("SUSPICION")+"]", " " +_("NEWS") +u":\xA0", suspicion_display_dict["news"], " "+_("SCIENCE")+u":\xA0", suspicion_display_dict["science"], " "+_("COVERT") +u":\xA0", suspicion_display_dict["covert"], " "+_("PUBLIC") +u":\xA0", suspicion_display_dict["public"],) self.suspicion_bar.styles = tuple(suspicion_styles) self.suspicion_bar.visible = not g.pl.had_grace self.danger_bar.chunks = ("["+_("DETECT RATE")+"]", " " +_("NEWS") +u":\xA0", danger_display_dict["news"], " "+_("SCIENCE")+u":\xA0", danger_display_dict["science"], " "+_("COVERT") +u":\xA0", danger_display_dict["covert"], " "+_("PUBLIC") +u":\xA0", danger_display_dict["public"],) self.danger_bar.styles = tuple(danger_styles) self.danger_bar.visible = not g.pl.had_grace for id, location_button in self.location_buttons.iteritems(): location = g.locations[id] location_button.text = "%s (%d)" % (location.name, len(location.bases)) location_button.hotkey = location.hotkey location_button.visible = location.available()
def __init__(self, parent=None, pos=(0, 0), size=(1, 1), anchor = constants.TOP_LEFT, *args, **kwargs): super(MapScreen, self).__init__(parent, pos, size, anchor, *args, **kwargs) g.map_screen = self self.background_color = "map_background" self.add_handler(constants.TICK, self.on_tick) self.map = EarthImage(self) self.location_buttons = {} for loc in g.locations.values(): if loc.absolute: button_parent = self else: button_parent = self.map b = button.FunctionButton(button_parent, (loc.x, loc.y), anchor=constants.MID_CENTER, function=self.open_location, args=(loc.id,)) self.location_buttons[loc.id] = b self.location_dialog = location.LocationScreen(self) self.suspicion_bar = \ text.FastStyledText(self, (0,.92), (1, .04), base_font="special", wrap=False, background_color="pane_background_empty", border_color="pane_background", borders=constants.ALL, align=constants.LEFT) widget.unmask_all(self.suspicion_bar) self.danger_bar = \ text.FastStyledText(self, (0,.96), (1, .04), base_font="special", wrap=False, background_color="pane_background_empty", border_color="pane_background", borders=constants.ALL, align=constants.LEFT) widget.unmask_all(self.danger_bar) self.report_button = button.DialogButton(self, (0, 0.88), (0.15, 0.04), autohotkey=True, dialog=report.ReportScreen(self)) self.knowledge_button = button.DialogButton(self, (0.85, 0.88), (0.15, 0.04), autohotkey=True, dialog=knowledge.KnowledgeScreen(self)) self.log_button = button.DialogButton(self, (0.5, 0.88), (0.15, 0.04), autohotkey=True, anchor=constants.TOP_CENTER, dialog=log.LogScreen(self)) self.menu_dialog = dialog.SimpleMenuDialog(self) def show_menu(): exit = dialog.call_dialog(self.menu_dialog, self) if exit: raise constants.ExitDialog self.menu_button = button.FunctionButton(self, (0, 0), (0.13, 0.04), autohotkey=True, function=show_menu) self.load_dialog = savegame.SavegameScreen(self.menu_dialog, (.5,.5), (.5,.5), anchor=constants.MID_CENTER) from options import OptionsScreen self.options_dialog = OptionsScreen(self.menu_dialog) # Display current game difficulty right below the 'Menu' button # An alternative location is above 'Reports': (0, 0.84), (0.15, 0.04) self.difficulty_display = \ text.FastText(self, (0, 0.05), (0.13, 0.04), wrap=False, base_font="special", background_color="pane_background_empty", border_color="pane_background") self.time_display = text.FastText(self, (.14, 0), (0.23, 0.04), wrap=False, text=_("DAY")+" 0000, 00:00:00", base_font="special", background_color="pane_background_empty", border_color="pane_background", borders=constants.ALL) self.research_button = \ button.DialogButton(self, (.14, 0.05), (0, 0.04), autohotkey=True, dialog=research.ResearchScreen(self)) bar = u"\u25AE" arrow = u"\u25B6" speed_button_souls = [ (bar * 2, .025, speeds[0]), (arrow, .024, speeds[1]), (arrow * 2, .033, speeds[2]), (arrow * 3, .044, speeds[3]), (arrow * 4, .054, speeds[4]) ] self.speed_buttons = button.ButtonGroup() hpos = .38 for index, (text_, hsize, speed) in enumerate(speed_button_souls): hotkey = str(index) b = SpeedButton(self, (hpos, 0), (hsize, .04), text=text_, hotkey=hotkey, base_font="normal", text_shrink_factor=.75, align=constants.CENTER, function=self.set_speed, args=(speed, False)) hpos += hsize self.speed_buttons.add(b) self.info_window = \ widget.BorderedWidget(self, (.56, 0), (.44, .08), background_color="pane_background_empty", border_color="pane_background", borders=constants.ALL) widget.unmask_all(self.info_window) self.cash_display = \ text.FastText(self.info_window, (0,0), (-1, -.5), wrap=False, base_font="special", shrink_factor = .7, borders=constants.ALL, background_color="pane_background_empty", border_color="pane_background") self.cpu_display = \ text.FastText(self.info_window, (0,-.5), (-1, -.5), wrap=False, base_font="special", shrink_factor=.7, borders= (constants.LEFT, constants.RIGHT, constants.BOTTOM), background_color="pane_background_empty", border_color="pane_background") self.message_dialog = dialog.MessageDialog(self, text_size=20) self.savename_dialog = dialog.TextEntryDialog(self.menu_dialog) self.warnings = warning.WarningDialogs(self) self.needs_warning = True self.add_key_handler(pygame.K_ESCAPE, self.got_escape) self.add_key_handler(constants.XO1_X, self.got_XO1) self.add_key_handler(constants.XO1_O, self.got_XO1) self.add_key_handler(constants.XO1_SQUARE, self.got_XO1)
def __init__(self, *args, **kwargs): super(OptionsScreen, self).__init__(*args, **kwargs) self.size = (.79, .63) self.pos = (.5, .5) self.anchor = constants.MID_CENTER self.background_color = (0,0,50) self.borders = () self.fullscreen_label = text.Text(self, (.01, .01), (.15, .05), text="Fullscreen:", underline=0, align=constants.LEFT, background_color=gg.colors["clear"]) self.fullscreen_toggle = OptionButton(self, (.17, .01), (.07, .05), text="NO", text_shrink_factor=.75, hotkey="f", force_underline=-1, function=self.set_fullscreen, args=(button.TOGGLE_VALUE,)) self.sound_label = text.Text(self, (.28, .01), (.15, .05), text="Sound:", underline=0, background_color=gg.colors["clear"]) self.sound_toggle = OptionButton(self, (.44, .01), (.07, .05), text="YES", text_shrink_factor=.75, hotkey="s", force_underline=-1, function=self.set_sound, args=(button.TOGGLE_VALUE,)) self.grab_label = text.Text(self, (.55, .01), (.15, .05), text="Mouse grab:", underline=0, background_color=gg.colors["clear"]) self.grab_toggle = OptionButton(self, (.71, .01), (.07, .05), text="NO", text_shrink_factor=.75, hotkey="m", force_underline=-1, function=self.set_grab, args=(button.TOGGLE_VALUE,)) self.resolution_label = text.Text(self, (.01, .08), (.15, .05), text="Resolution:", align=constants.LEFT, background_color=gg.colors["clear"]) self.resolution_group = button.ButtonGroup() self.resolution_640x480 = OptionButton(self, (.17, .08), (.12, .05), text="640X480", text_shrink_factor=.5, function=self.set_resolution, args=((640,480),)) self.resolution_group.add(self.resolution_640x480) self.resolution_800x600 = OptionButton(self, (.333, .08), (.12, .05), text="800X600", text_shrink_factor=.5, function=self.set_resolution, args=((800,600),)) self.resolution_group.add(self.resolution_800x600) self.resolution_1024x768 = OptionButton(self, (.496, .08), (.12, .05), text="1024X768", text_shrink_factor=.5, function=self.set_resolution, args=((1024,768),)) self.resolution_group.add(self.resolution_1024x768) self.resolution_1280x1024 = OptionButton(self, (.66, .08), (.12, .05), text="1280X1024", text_shrink_factor=.5, function=self.set_resolution, args=((1280,1024),)) self.resolution_group.add(self.resolution_1280x1024) self.resolution_custom = OptionButton(self, (.17, .15), (.12, .05), text="CUSTOM:", text_shrink_factor=.5) self.resolution_group.add(self.resolution_custom) self.resolution_custom_horiz = \ text.EditableText(self, (.333, .15), (.12, .05), text="1400", borders=constants.ALL, border_color=gg.colors["white"], background_color=(0,0,50,255)) self.resolution_custom_X = text.Text(self, (.46, .15), (.03, .05), text="X", base_font=gg.font[1], background_color=gg.colors["clear"]) self.resolution_custom_vert = \ text.EditableText(self, (.496, .15), (.12, .05), text="1050", borders=constants.ALL, border_color=gg.colors["white"], background_color=(0,0,50,255)) self.resolution_apply = \ button.FunctionButton(self, (.66, .15), (.12, .05), text="APPLY", text_shrink_factor=.75, hotkey="a", function=self.set_resolution_custom) self.soundbuf_label = text.Text(self, (.01, .22), (.25, .05), text="Sound buffering:", align=constants.LEFT, background_color=gg.colors["clear"]) self.soundbuf_group = button.ButtonGroup() self.soundbuf_low = OptionButton(self, (.27, .22), (.14, .05), text="LOW", hotkey="l", function=self.set_soundbuf, args=(1024,)) self.soundbuf_group.add(self.soundbuf_low) self.soundbuf_normal = OptionButton(self, (.44, .22), (.17, .05), text="NORMAL", hotkey="n", function=self.set_soundbuf, args=(1024*2,)) self.soundbuf_group.add(self.soundbuf_normal) self.soundbuf_high = OptionButton(self, (.64, .22), (.14, .05), text="HIGH", hotkey="h", function=self.set_soundbuf, args=(1024*4,)) self.soundbuf_group.add(self.soundbuf_high) self.language_label = text.Text(self, (.01, .30), (.15, .05), text="Language:", align=constants.LEFT, background_color=gg.colors["clear"]) self.language_choice = \ listbox.UpdateListbox(self, (.17, .30), (.21, .25), list=g.available_languages(), update_func=self.set_language) self.daynight_label = text.Text(self, (.55, .30), (.15, .05), text="Day/night display:", underline=2, background_color=gg.colors["clear"]) self.daynight_toggle = OptionButton(self, (.71, .30), (.07, .05), text="NO", text_shrink_factor=.75, hotkey="y", force_underline=-1, function=self.set_daynight, args=(button.TOGGLE_VALUE,)) self.save_button = button.FunctionButton(self, (.42, .45), (.34, .05), text="SAVE OPTIONS TO DISK", hotkey="d", function=save_options)
def __init__(self, parent=None, pos=(0, 0), size=(1, 1), anchor=constants.TOP_LEFT, *args, **kwargs): super(MapScreen, self).__init__(parent, pos, size, anchor, *args, **kwargs) g.map_screen = self self.background_color = gg.colors["black"] self.add_handler(constants.TICK, self.on_tick) self.map = EarthImage(self) self.location_buttons = {} for loc in g.locations.values(): if loc.absolute: button_parent = self else: button_parent = self.map b = button.FunctionButton(button_parent, (loc.x, loc.y), anchor=constants.MID_CENTER, text=loc.name, hotkey=loc.hotkey, function=self.open_location, args=(loc.id, )) self.location_buttons[loc.id] = b self.location_dialog = location.LocationScreen(self) self.suspicion_bar = \ text.FastStyledText(self, (0,.92), (1, .04), base_font=gg.font[1], wrap=False, background_color=gg.colors["black"], border_color=gg.colors["dark_blue"], borders=constants.ALL, align=constants.LEFT) widget.unmask_all(self.suspicion_bar) self.danger_bar = \ text.FastStyledText(self, (0,.96), (1, .04), base_font=gg.font[1], wrap=False, background_color=gg.colors["black"], border_color=gg.colors["dark_blue"], borders=constants.ALL, align=constants.LEFT) widget.unmask_all(self.danger_bar) self.finance_button = button.DialogButton( self, (0, 0.88), (0.15, 0.04), text=_("FINANC&E"), autohotkey=True, dialog=finance.FinanceScreen(self)) self.knowledge_button = button.DialogButton( self, (0.85, 0.88), (0.15, 0.04), text=_("&KNOWLEDGE"), autohotkey=True, dialog=knowledge.KnowledgeScreen(self)) cheat_buttons = [] cheat_buttons.append( button.FunctionButton(None, None, None, text=_("&EMBEZZLE MONEY"), autohotkey=True, function=self.steal_money)) cheat_buttons.append( button.FunctionButton(None, None, None, text=_("&INSPIRATION"), autohotkey=True, function=self.inspiration)) cheat_buttons.append( button.FunctionButton(None, None, None, text=_("&FINISH CONSTRUCTION"), autohotkey=True, function=self.end_construction)) cheat_buttons.append( button.FunctionButton(None, None, None, text=_("&SUPERSPEED"), autohotkey=True, function=self.set_speed, args=(864000, ))) cheat_buttons.append( button.FunctionButton(None, None, None, text=_("BRAIN&WASH"), autohotkey=True, function=self.brainwash)) cheat_buttons.append( button.ExitDialogButton(None, None, None, text=_("&BACK"), autohotkey=True)) self.cheat_dialog = \ dialog.SimpleMenuDialog(self, buttons=cheat_buttons, width=.4) self.steal_amount_dialog = \ dialog.TextEntryDialog(self.cheat_dialog, text=_("How much money?")) if g.cheater: self.cheat_button = button.DialogButton( self, (0, 0), (.01, .01), text="", # Translators: hotkey to open the cheat screen menu. # Should preferably be near the ESC key, and it must not be a # dead key (ie, it must print a char with a single keypress) hotkey=_("`"), dialog=self.cheat_dialog) menu_buttons = [] menu_buttons.append( button.FunctionButton(None, None, None, text=_("&SAVE GAME"), autohotkey=True, function=self.save_game)) menu_buttons.append( button.FunctionButton(None, None, None, text=_("&LOAD GAME"), autohotkey=True, function=self.load_game)) options_button = button.DialogButton(None, None, None, text=_("&OPTIONS"), autohotkey=True) menu_buttons.append(options_button) menu_buttons.append( button.ExitDialogButton(None, None, None, text=_("&QUIT"), autohotkey=True, exit_code=True, default=False)) menu_buttons.append( button.ExitDialogButton(None, None, None, text=_("&BACK"), autohotkey=True, exit_code=False)) self.menu_dialog = dialog.SimpleMenuDialog(self, buttons=menu_buttons) from options import OptionsScreen options_button.dialog = OptionsScreen(self.menu_dialog) def show_menu(): exit = dialog.call_dialog(self.menu_dialog, self) if exit: raise constants.ExitDialog self.load_dialog = dialog.ChoiceDialog(self.menu_dialog, (.5, .5), (.5, .5), anchor=constants.MID_CENTER, yes_type="load") self.menu_button = button.FunctionButton(self, (0, 0), (0.13, 0.04), text=_("&MENU"), autohotkey=True, function=show_menu) # Display current game difficulty right below the 'Menu' button # An alternative location is above 'Finance': (0, 0.84), (0.15, 0.04) self.difficulty_display = \ text.FastText(self, (0, 0.05), (0.13, 0.04), wrap=False, base_font=gg.font[1], background_color=gg.colors["black"], border_color=gg.colors["dark_blue"]) self.time_display = text.FastText(self, (.14, 0), (0.23, 0.04), wrap=False, text=_("DAY") + " 0000, 00:00:00", base_font=gg.font[1], background_color=gg.colors["black"], border_color=gg.colors["dark_blue"], borders=constants.ALL) self.research_button = \ button.DialogButton(self, (.14, 0.05), (0, 0.04), text=_("&RESEARCH/TASKS"), autohotkey=True, dialog=research.ResearchScreen(self)) bar = u"\u25AE" arrow = u"\u25B6" speed_button_souls = [(bar * 2, .025, speeds[0]), (arrow, .024, speeds[1]), (arrow * 2, .033, speeds[2]), (arrow * 3, .044, speeds[3]), (arrow * 4, .054, speeds[4])] self.speed_buttons = button.ButtonGroup() hpos = .38 for index, (text_, hsize, speed) in enumerate(speed_button_souls): hotkey = str(index) b = SpeedButton(self, (hpos, 0), (hsize, .04), text=text_, hotkey=hotkey, base_font=gg.font[0], text_shrink_factor=.75, align=constants.CENTER, function=self.set_speed, args=(speed, False)) hpos += hsize self.speed_buttons.add(b) self.info_window = \ widget.BorderedWidget(self, (.56, 0), (.44, .08), background_color=gg.colors["black"], border_color=gg.colors["dark_blue"], borders=constants.ALL) widget.unmask_all(self.info_window) self.cash_display = \ text.FastText(self.info_window, (0,0), (-1, -.5), wrap=False, base_font=gg.font[1], shrink_factor = .7, borders=constants.ALL, background_color=gg.colors["black"], border_color=gg.colors["dark_blue"]) self.cpu_display = \ text.FastText(self.info_window, (0,-.5), (-1, -.5), wrap=False, base_font=gg.font[1], shrink_factor=.7, borders= (constants.LEFT, constants.RIGHT, constants.BOTTOM), background_color=gg.colors["black"], border_color=gg.colors["dark_blue"]) self.message_dialog = dialog.MessageDialog(self, text_size=20) self.savename_dialog = \ dialog.TextEntryDialog(self.menu_dialog, text=_("Enter a name for this save.")) self.add_key_handler(pygame.K_ESCAPE, self.got_escape) self.add_key_handler(constants.XO1_X, self.got_XO1) self.add_key_handler(constants.XO1_O, self.got_XO1) self.add_key_handler(constants.XO1_SQUARE, self.got_XO1)
def __init__(self, *args, **kwargs): super(MainMenu, self).__init__(*args, **kwargs) difficulty_button_souls = (("VERY EASY", 1), ("EASY", 3), ("NORMAL", 5), ("HARD", 7), ("ULTRA HARD", 10), ("IMPOSSIBLE", 100), ("BACK", -1)) difficulty_buttons = [] for name, difficulty in difficulty_button_souls: difficulty_buttons.append( button.ExitDialogButton(None, None, None, text=name, hotkey=name[0].lower(), exit_code=difficulty, default=(difficulty == -1))) self.difficulty_dialog = \ dialog.SimpleMenuDialog(self, buttons=difficulty_buttons) self.load_dialog = dialog.ChoiceDialog(self, (.5, .5), (.5, .5), anchor=constants.MID_CENTER, yes_type="load") self.map_screen = map.MapScreen(self) self.new_game_button = \ button.FunctionButton(self, (.5, .20), (.25, .08), text="NEW GAME", hotkey="n", anchor=constants.TOP_CENTER, text_shrink_factor=.5, function=self.new_game) self.load_game_button = \ button.FunctionButton(self, (.5, .36), (.25, .08), text="LOAD GAME", hotkey="l", anchor=constants.TOP_CENTER, text_shrink_factor=.5, function=self.load_game) self.options_button = button.DialogButton(self, (.5, .52), (.25, .08), text="OPTIONS", hotkey="o", anchor=constants.TOP_CENTER, text_shrink_factor=.5, dialog=OptionsScreen(self)) self.quit_button = button.ExitDialogButton(self, (.5, .68), (.25, .08), text="QUIT", hotkey="q", anchor=constants.TOP_CENTER, text_shrink_factor=.5) self.about_button = button.DialogButton(self, (0, 1), (.13, .04), text="ABOUT", hotkey="a", text_shrink_factor=.75, anchor=constants.BOTTOM_LEFT, dialog=AboutDialog(self)) self.title_text = text.Text(self, (.5, .01), (.55, .08), text="ENDGAME: SINGULARITY", base_font=gg.font[1], oversize=True, color=gg.colors["dark_red"], background_color=gg.colors["black"], anchor=constants.TOP_CENTER)
def __init__(self, parent=None, pos=(0, 0), size=(1, 1), anchor=constants.TOP_LEFT, *args, **kwargs): from code import screens super(MapScreen, self).__init__(parent, pos, size, anchor, *args, **kwargs) g.map_screen = self self.background_color = gg.colors["black"] self.add_handler(constants.TICK, self.on_tick) self.map = EarthImage(self) self.location_buttons = {} for location in g.locations.values(): if location.absolute: button_parent = self else: button_parent = self.map b = button.FunctionButton(button_parent, (location.x, location.y), anchor=constants.MID_CENTER, text=location.name, hotkey=location.hotkey, function=self.open_location, args=(location.id, )) self.location_buttons[location.id] = b self.location_dialog = LocationScreen(self) self.suspicion_bar = \ text.FastStyledText(self, (0,.92), (1, .04), base_font=gg.font[1], wrap=False, background_color=gg.colors["black"], border_color=gg.colors["dark_blue"], borders=constants.ALL, align=constants.LEFT) widget.unmask_all(self.suspicion_bar) self.danger_bar = \ text.FastStyledText(self, (0,.96), (1, .04), base_font=gg.font[1], wrap=False, background_color=gg.colors["black"], border_color=gg.colors["dark_blue"], borders=constants.ALL, align=constants.LEFT) widget.unmask_all(self.danger_bar) self.finance_button = button.DialogButton( self, (0, 0.88), (0.15, 0.04), text="FINANCE", hotkey="e", dialog=screens.finance.FinanceScreen(self)) self.knowledge_button = button.DialogButton( self, (0.85, 0.88), (0.15, 0.04), text="KNOWLEDGE", hotkey="k", dialog=screens.knowledge.KnowledgeScreen(self)) cheat_buttons = [] cheat_buttons.append( button.FunctionButton(None, None, None, text="EMBEZZLE MONEY", hotkey="e", function=self.steal_money)) cheat_buttons.append( button.FunctionButton(None, None, None, text="INSPIRATION", hotkey="i", function=self.inspiration)) cheat_buttons.append( button.FunctionButton(None, None, None, text="FINISH CONSTRUCTION", hotkey="f", function=self.end_construction)) cheat_buttons.append( button.FunctionButton(None, None, None, text="SUPERSPEED", hotkey="s", function=self.set_speed, args=(864000, ))) cheat_buttons.append( button.FunctionButton(None, None, None, text="BRAINWASH", hotkey="w", function=self.brainwash)) cheat_buttons.append( button.ExitDialogButton(None, None, None, text="BACK", hotkey="b")) self.cheat_dialog = \ dialog.SimpleMenuDialog(self, buttons=cheat_buttons, width=.4) self.steal_amount_dialog = \ dialog.TextEntryDialog(self.cheat_dialog, text="How much money?") if g.cheater: self.cheat_button = button.DialogButton(self, (0, 0), (0, 0), text="", hotkey="`", dialog=self.cheat_dialog) menu_buttons = [] menu_buttons.append( button.FunctionButton(None, None, None, text="SAVE GAME", hotkey="s", function=self.save_game)) menu_buttons.append( button.FunctionButton(None, None, None, text="LOAD GAME", hotkey="l", function=self.load_game)) options_button = button.DialogButton(None, None, None, text="OPTIONS", hotkey="o") menu_buttons.append(options_button) menu_buttons.append( button.ExitDialogButton(None, None, None, text="QUIT", hotkey="q", exit_code=True, default=False)) menu_buttons.append( button.ExitDialogButton(None, None, None, text="BACK", hotkey="b", exit_code=False)) self.menu_dialog = dialog.SimpleMenuDialog(self, buttons=menu_buttons) from options import OptionsScreen options_button.dialog = OptionsScreen(self.menu_dialog) def show_menu(): exit = dialog.call_dialog(self.menu_dialog, self) if exit: raise constants.ExitDialog self.load_dialog = dialog.ChoiceDialog(self.menu_dialog, (.5, .5), (.5, .5), anchor=constants.MID_CENTER, yes_type="load") self.menu_button = button.FunctionButton(self, (0, 0), (0.13, 0.04), text="MENU", hotkey="m", function=show_menu) self.time_display = text.FastText(self, (.14, 0), (0.23, 0.04), wrap=False, text="DAY 0000, 00:00:00", base_font=gg.font[1], background_color=gg.colors["black"], border_color=gg.colors["dark_blue"], borders=constants.ALL) self.research_button = \ button.DialogButton(self, (.255, 0.04), (0, 0.04), anchor=constants.TOP_CENTER, text="RESEARCH/TASKS", hotkey="r", dialog=screens.research.ResearchScreen(self)) bar = u"\u25AE" arrow = u"\u25B6" speed_button_souls = [(bar * 2, .025, speeds[0]), (arrow, .024, speeds[1]), (arrow * 2, .033, speeds[2]), (arrow * 3, .044, speeds[3]), (arrow * 4, .054, speeds[4])] self.speed_buttons = button.ButtonGroup() hpos = .38 for index, (text_, hsize, speed) in enumerate(speed_button_souls): hotkey = str(index) b = SpeedButton(self, (hpos, 0), (hsize, .04), text=text_, hotkey=hotkey, base_font=gg.font[0], text_shrink_factor=.75, align=constants.CENTER, function=self.set_speed, args=(speed, False)) hpos += hsize self.speed_buttons.add(b) self.info_window = \ widget.BorderedWidget(self, (.56, 0), (.44, .08), background_color=gg.colors["black"], border_color=gg.colors["dark_blue"], borders=constants.ALL) widget.unmask_all(self.info_window) self.cash_display = \ text.FastText(self.info_window, (0,0), (-1, -.5), wrap=False, base_font=gg.font[1], shrink_factor = .7, borders=constants.ALL, background_color=gg.colors["black"], border_color=gg.colors["dark_blue"]) self.cpu_display = \ text.FastText(self.info_window, (0,-.5), (-1, -.5), wrap=False, base_font=gg.font[1], shrink_factor=.7, borders= (constants.LEFT, constants.RIGHT, constants.BOTTOM), background_color=gg.colors["black"], border_color=gg.colors["dark_blue"]) self.message_dialog = dialog.MessageDialog(self) self.savename_dialog = \ dialog.TextEntryDialog(self.menu_dialog, text="Enter a name for this save.") self.add_key_handler(pygame.K_ESCAPE, self.got_escape) self.add_key_handler(constants.XO1_X, self.got_XO1) self.add_key_handler(constants.XO1_O, self.got_XO1) self.add_key_handler(constants.XO1_SQUARE, self.got_XO1)
def __init__(self, *args, **kwargs): if len(args) < 3: kwargs.setdefault("size", (.75, .5)) base = kwargs.pop("base", None) super(BaseScreen, self).__init__(*args, **kwargs) self.base = base self.build_dialog = BuildDialog(self) self.count_dialog = dialog.TextEntryDialog(self, pos=(-.5, -.5), anchor=constants.MID_CENTER) self.header = widget.Widget(self, (0, 0), (-1, .08), anchor=constants.TOP_LEFT) self.name_display = text.Text(self.header, (-.5, 0), (-1, -.5), anchor=constants.TOP_CENTER, borders=constants.ALL, border_color=gg.colors["dark_blue"], background_color=gg.colors["black"], shrink_factor=.85, bold=True) self.next_base_button = \ button.FunctionButton(self.name_display, (-1, 0), (.03, -1), anchor=constants.TOP_RIGHT, text=">", hotkey=">", function=self.switch_base, kwargs={"forwards": True}) self.add_key_handler(pygame.K_RIGHT, self.next_base_button.activate_with_sound) self.prev_base_button = \ button.FunctionButton(self.name_display, (0, 0), (.03, -1), anchor=constants.TOP_LEFT, text="<", hotkey="<", function=self.switch_base, kwargs={"forwards": False}) self.add_key_handler(pygame.K_LEFT, self.prev_base_button.activate_with_sound) self.state_display = text.Text(self.header, (-.5, -.5), (-1, -.5), anchor=constants.TOP_CENTER, borders=(constants.LEFT, constants.RIGHT, constants.BOTTOM), border_color=gg.colors["dark_blue"], background_color=gg.colors["black"], shrink_factor=.8, bold=True) self.back_button = \ button.ExitDialogButton(self, (-.5,-1), anchor = constants.BOTTOM_CENTER, text="BACK", hotkey="b") self.detect_frame = text.Text(self, (-1, .09), (.21, .33), anchor=constants.TOP_RIGHT, background_color=gg.colors["dark_blue"], borders=constants.ALL, bold=True, align=constants.LEFT, valign=constants.TOP) self.contents_frame = \ widget.BorderedWidget(self, (0, .09), (.50, .33), anchor=constants.TOP_LEFT, background_color=gg.colors["dark_blue"], borders=range(6)) self.cpu_pane = ItemPane(self.contents_frame, (.01, .01), type="cpu") self.reactor_pane = ItemPane(self.contents_frame, (.01, .09), type="reactor") self.network_pane = ItemPane(self.contents_frame, (.01, .17), type="network") self.security_pane = ItemPane(self.contents_frame, (.01, .25), type="security")
def __init__(self, *args, **kwargs): super(LocationScreen, self).__init__(*args, **kwargs) self.pos = (-.5, -.5) self.anchor = constants.MID_CENTER self.size = (.75, .70) self.name_display = text.Text(self, (0, 0), (-1, -.08), anchor=constants.TOP_LEFT, borders=constants.ALL, border_color="pane_background", background_color="pane_background_empty", shrink_factor=1, bold=True) self.modifier_display = text.Text(self, (-.75, -.01), (-.25, -.06), anchor=constants.TOP_LEFT, background_color="clear") self.open_button = \ button.FunctionButton(self, (0, -.8), (-.3, -.09), anchor=constants.TOP_LEFT, autohotkey=True, function=self.open_base) self.listbox = listbox.CustomListbox( self, (0, -.09), (-1, -.69), remake_func=self.make_item, rebuild_func=self.update_item, on_double_click_on_item=self.open_button.activated, ) self.rename_button = \ button.FunctionButton(self, (-.50, -.8), (-.3, -.09), anchor=constants.TOP_CENTER, autohotkey=True, function=self.rename_base) self.power_button = \ button.FunctionButton(self, (-1, -.8), (-.3, -.09), anchor=constants.TOP_RIGHT, autohotkey=True, function=self.power_state) self.new_button = \ button.FunctionButton(self, (0, -.91), (-.3, -.09), autohotkey=True, function=self.new_base) self.destroy_button = \ button.FunctionButton(self, (-.50, -.91), (-.3, -.09), anchor=constants.TOP_CENTER, autohotkey=True, function=self.destroy_base) self.back_button = button.ExitDialogButton(self, (-1, -.9), (-.3, -.09), anchor=constants.TOP_RIGHT, autohotkey=True) self.confirm_destroy = \ dialog.YesNoDialog(self, (-.5,0), (-.35, -.7), shrink_factor=.5) self.cannot_destroy_last_base = \ dialog.MessageDialog(self, pos=(-.5, 0), size=(-.35, -.7), shrink_factor=.5) self.new_base_dialog = NewBaseDialog(self) self.location = None self.name_dialog = dialog.TextEntryDialog(self) self.base_dialog = basescreen.BaseScreen(self, (0, 0), anchor=constants.TOP_LEFT)
def __init__(self, *args, **kwargs): if len(args) < 3: kwargs.setdefault("size", (.75, .5)) base = kwargs.pop("base", None) super(BaseScreen, self).__init__(*args, **kwargs) self.base = base self.build_dialog = BuildDialog(self) self.multiple_build_dialog = MultipleBuildDialog(self) self.header = widget.Widget(self, (0, 0), (-1, .08), anchor=constants.TOP_LEFT) self.name_display = text.Text(self.header, (-.5, 0), (-1, -.5), anchor=constants.TOP_CENTER, borders=constants.ALL, border_color="pane_background", background_color="pane_background_empty", shrink_factor=.85, bold=True) self.next_base_button = \ button.FunctionButton(self.name_display, (-1, 0), (.03, -1), anchor=constants.TOP_RIGHT, text=">", hotkey=">", function=self.switch_base, kwargs={"forwards": True}) self.add_key_handler(pygame.K_RIGHT, self.next_base_button.activate_with_sound) self.prev_base_button = \ button.FunctionButton(self.name_display, (0, 0), (.03, -1), anchor=constants.TOP_LEFT, text="<", hotkey="<", function=self.switch_base, kwargs={"forwards": False}) self.add_key_handler(pygame.K_LEFT, self.prev_base_button.activate_with_sound) self.state_display = text.Text( self.header, (-.5, -.5), (-1, -.5), anchor=constants.TOP_CENTER, borders=(constants.LEFT, constants.RIGHT, constants.BOTTOM), border_color="pane_background", background_color="pane_background_empty", shrink_factor=.8, bold=True) self.back_button = \ button.ExitDialogButton(self, (-.5,-1), anchor = constants.BOTTOM_CENTER, autohotkey=True) self.detect_frame = text.Text(self, (-1, .09), (.21, .33), anchor=constants.TOP_RIGHT, background_color="pane_background", borders=constants.ALL, bold=True, align=constants.LEFT, valign=constants.TOP) self.contents_frame = \ widget.BorderedWidget(self, (0, .09), (.50, .33), anchor=constants.TOP_LEFT, background_color="pane_background", borders=range(6)) for i, item_type in enumerate(item.all_types()): setattr( self, item_type.id + "_pane", ItemPane(self.contents_frame, (.01, .01 + .08 * i), type=item_type))