def __init__(self, *args, **kwargs): super(KnowledgeScreen, self).__init__(*args, **kwargs) self.cur_knowledge_type = "" self.cur_knowledge = None self.knowledge_inner_list = () self.knowledge_inner_list_key = () self.knowledge_choice = \ listbox.UpdateListbox(self, (0.04, .18), (.18, .25), update_func=self.set_knowledge_type) # Tech names are typically a lot longer than knowledge concepts. # Therefore, we make knowledge_inner a lot wider than # knowledge_choice. self.knowledge_inner = \ listbox.UpdateListbox(self, (.26, .18), (.37, .25), update_func=self.set_knowledge) self.description_pane = \ widget.BorderedWidget(self, (0.66, 0), (0.30, 0.7), anchor = constants.TOP_LEFT) self.back_button = button.ExitDialogButton(self, (0.17, 0.46), (-.3, -.1), autotranslate=True, text=N_("&BACK"), anchor=constants.TOP_LEFT, autohotkey=True) self.took_focus(self.knowledge_choice) self.add_key_handler(pygame.K_LEFT, self.key_handle) self.add_key_handler(pygame.K_RIGHT, self.key_handle)
def __init__(self, parent, pos=(.5, .1), size=(.93, .73), *args, **kwargs): super(ReportScreen, self).__init__(parent, pos, size, *args, **kwargs) kwargs.setdefault("background_color", "clear") self.format_buttons = button.ButtonGroup() self.stats_button = button.DialogButton(self, (-.49, -.99), (-.3, -.1), autotranslate=True, text=N_("&STATISTICS"), anchor=constants.BOTTOM_RIGHT, dialog=stat.StatScreen(self)) self.back_button = button.ExitDialogButton( self, (-.51, -.99), (-.3, -.1), autotranslate=True, text=N_("&BACK"), anchor=constants.BOTTOM_LEFT, ) self.add_key_handler(pygame.K_ESCAPE, self.back_button.activate_with_sound) self.money_report_pane = widget.BorderedWidget( self, (0, .08), (-.45, -.72), anchor=constants.TOP_LEFT) self.cpu_report_pane = widget.BorderedWidget( self, (-1, .08), (-.45, -.72), anchor=constants.TOP_RIGHT) self.format_button_midnight = FormatButton(self, (-.5, 0), (-.15, -.08), autotranslate=True, text=N_("&Midnight"), anchor=constants.TOP_RIGHT, function=self.format_toggle) self.format_button_midnight.args = (self.format_button_midnight, True) self.format_buttons.add(self.format_button_midnight) self.format_button_24hours = FormatButton(self, (-.5, 0), (-.15, -.08), autotranslate=True, text=N_("24 &Hours"), anchor=constants.TOP_LEFT, function=self.format_toggle) self.format_button_24hours.args = (self.format_button_24hours, False) self.format_buttons.add(self.format_button_24hours) self.format_button_midnight.chosen_one() self.midnight_stop = True
def __init__(self, parent, *args, **kwargs): self.parent = parent self.key_list = kwargs.pop("key_list", None) self.desc_func = kwargs.pop("desc_func", lambda pane, key: NullDialog) super(ChoiceDescriptionDialog, self).__init__(parent, *args, **kwargs) self.description_pane = \ widget.BorderedWidget(self, (-1, 0), (-.45, -.85), anchor = constants.TOP_RIGHT)
def __init__(self, *args, **kwargs): super(KnowledgeScreen, self).__init__(*args, **kwargs) self.cur_knowledge_type = "" self.cur_knowledge = None self.knowledge_inner_list = () self.knowledge_inner_list_key = () self.cur_focus = 0 self.knowledge_choice = \ listbox.UpdateListbox(self, (0.05, .18), (.21, .25), update_func=self.set_knowledge_type) self.knowledge_inner = \ listbox.UpdateListbox(self, (.30, .18), (.21, .25), update_func=self.set_knowledge) self.description_pane = \ widget.BorderedWidget(self, (0.55, 0), (0.40, 0.7), anchor = constants.TOP_LEFT) self.back_button = button.ExitDialogButton(self, (0.17, 0.46), (-.3, -.1), anchor=constants.TOP_LEFT, autohotkey=True) #Set up the key handling. #This is likely not the best way to do it. self.remove_key_handler(pygame.K_UP, self.knowledge_choice.got_key) self.remove_key_handler(pygame.K_DOWN, self.knowledge_choice.got_key) self.remove_key_handler(pygame.K_PAGEUP, self.knowledge_choice.got_key) self.remove_key_handler(pygame.K_PAGEDOWN, self.knowledge_choice.got_key) self.remove_key_handler(pygame.K_UP, self.knowledge_inner.got_key) self.remove_key_handler(pygame.K_DOWN, self.knowledge_inner.got_key) self.remove_key_handler(pygame.K_PAGEUP, self.knowledge_inner.got_key) self.remove_key_handler(pygame.K_PAGEDOWN, self.knowledge_inner.got_key) self.add_key_handler(pygame.K_UP, self.key_handle, only_on_event_type=pygame.KEYDOWN) self.add_key_handler(pygame.K_DOWN, self.key_handle, only_on_event_type=pygame.KEYDOWN) self.add_key_handler(pygame.K_LEFT, self.key_handle, only_on_event_type=pygame.KEYDOWN) self.add_key_handler(pygame.K_RIGHT, self.key_handle, only_on_event_type=pygame.KEYDOWN)
def __init__(self, *args, **kwargs): super(KnowledgeScreen, self).__init__(*args, **kwargs) self.knowledge_types = collections.OrderedDict() self.knowledge_type_index = collections.defaultdict(int) self.cur_knowledge_type = "" self.cur_knowledge = None self.knowledge_inner_list = () self.knowledge_inner_list_key = () self.knowledge_choice_title = button.HotkeyText( self, (.08, .04), (.42, .05), autotranslate=True, text=N_("&Sections:"), align=constants.LEFT, background_color="clear") self.knowledge_choice = \ listbox.UpdateListbox(self, (.08, .09), (.42, .22), update_func=self.set_knowledge_type) self.knowledge_choice_title.hotkey_func = lambda e: self.took_focus( self.knowledge_choice) self.knowledge_inner_title = button.HotkeyText( self, (.08, .35), (.42, .05), autotranslate=True, text=N_("&Entries:"), align=constants.LEFT, background_color="clear") self.knowledge_inner = \ listbox.UpdateListbox(self, (.08, .40), (.42, .22), update_func=self.set_knowledge) self.knowledge_inner_title.hotkey_func = lambda e: self.took_focus( self.knowledge_inner) self.description_pane = \ widget.BorderedWidget(self, (.54, .04), (.38, .70), anchor = constants.TOP_LEFT) self.back_button = button.ExitDialogButton(self, (.18, .68), (.22, .06), autotranslate=True, text=N_("&BACK"), anchor=constants.TOP_LEFT, autohotkey=True) self.took_focus(self.knowledge_choice)
def __init__(self, *args, **kwargs): buttons = kwargs.pop("buttons", []) width = kwargs.pop("width", .20) super(SimpleMenuDialog, self).__init__(*args, **kwargs) self.size = (-1, -1) self.pos = (0, 0) self.anchor = constants.TOP_LEFT self.width = width self.button_panel = \ widget.BorderedWidget(self, (-.5, -.5), (0.22, 0.43), anchor=constants.MID_CENTER, background_color="simple_menu_background", border_color="simple_menu_border", borders=constants.ALL) self.buttons = buttons
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 = 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)) if g.cheater: # Create cheat menu # Cheat menu button must be created before menu button to avoid bug. self.cheat_dialog = CheatMenuDialog(self) 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) self.menu_dialog = GameMenuDialog(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) # 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.messages = message.MessageDialogs(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): if len(args) < 3: kwargs.setdefault("size", (.90, .70)) 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), autotranslate=True, text=N_("&BACK"), anchor=constants.BOTTOM_CENTER, ) self.info_frame = text.Text(self, (-1, .09), (.26, .53), 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), (.60, .53), 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), item_type=item_type))