def __init__(self, *args, **kwargs): super(AdvancedOptionsScreen, self).__init__(*args, **kwargs) 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"), autohotkey=True, function=self.set_soundbuf, args=(1024, )) self.soundbuf_group.add(self.soundbuf_low) self.soundbuf_normal = OptionButton(self, (.44, .22), (.17, .05), text=_("&NORMAL"), autohotkey=True, 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"), autohotkey=True, function=self.set_soundbuf, args=(1024 * 4, )) self.soundbuf_group.add(self.soundbuf_high)
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", gg.colors["clear"]) self.format_buttons = button.ButtonGroup() self.back_button = button.ExitDialogButton(self, (-.5,-.99), (-.3,-.1), anchor = constants.BOTTOM_CENTER, autohotkey=True) 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), anchor = constants.TOP_RIGHT, autohotkey=True, 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), anchor = constants.TOP_LEFT, autohotkey=True, 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, *args, **kwargs): super(AudioPane, self).__init__(*args, **kwargs) self.sound_label = button.HotkeyText(self, (-.49, .01), (.10, .05), anchor = constants.TOP_RIGHT, align=constants.LEFT, autohotkey=True, background_color="clear") self.sound_toggle = OptionButton(self, (-.51, .01), (.07, .05), anchor = constants.TOP_LEFT, text_shrink_factor=.75, force_underline=-1, function=self.set_sound, args=(button.TOGGLE_VALUE,)) self.sound_label.hotkey_target = self.sound_toggle self.gui_label = text.Text(self, (.01, .08), (.22, .05), anchor = constants.TOP_LEFT, align=constants.LEFT, background_color="clear") self.gui_slider = slider.UpdateSlider(self, (.24, .08), (.53, .05), anchor = constants.TOP_LEFT, horizontal=True, priority=150, slider_max=100, slider_size=5) self.gui_slider.update_func = self.on_gui_volume_change self.music_label = text.Text(self, (.01, .15), (.22, .05), anchor = constants.TOP_LEFT, align=constants.LEFT, background_color="clear") self.music_slider = slider.UpdateSlider(self, (.24, .15), (.53, .05), anchor = constants.TOP_LEFT, horizontal=True, priority=150, slider_max=100, slider_size=5) self.music_slider.update_func = self.on_music_volume_change self.soundbuf_label = text.Text(self, (.01, .22), (.25, .05), text=_("Sound buffering:"), align=constants.LEFT, background_color="clear") self.soundbuf_group = button.ButtonGroup() self.soundbuf_low = OptionButton(self, (.24, .22), (.14, .05), text=_("&LOW"), autohotkey=True, function=self.set_soundbuf, args=(1024,)) self.soundbuf_group.add(self.soundbuf_low) self.soundbuf_normal = OptionButton(self, (.42, .22), (.17, .05), text=_("&NORMAL"), autohotkey=True, function=self.set_soundbuf, args=(1024*2,)) self.soundbuf_group.add(self.soundbuf_normal) self.soundbuf_high = OptionButton(self, (.63, .22), (.14, .05), text=_("&HIGH"), autohotkey=True, function=self.set_soundbuf, args=(1024*4,)) self.soundbuf_group.add(self.soundbuf_high)
def __init__(self, *args, **kwargs): kwargs.setdefault("yes_type", "ok") kwargs.setdefault("no_type", "cancel") super(OptionsScreen, self).__init__(*args, **kwargs) self.yes_button.function = self.check_restart self.size = (.80, .85) self.pos = (.5, .5) self.anchor = constants.MID_CENTER self.background_color = "options_background" self.borders = () # Tabs panel self.general_pane = GeneralPane(None, (0, .1), (.80, .75)) self.video_pane = VideoPane(None, (0, .1), (.80, .75)) self.audio_pane = AudioPane(None, (0, .1), (.80, .75)) self.gui_pane = GUIPane(None, (0, .1), (.80, .75)) self.tabs_panes = (self.general_pane, self.video_pane, self.audio_pane, self.gui_pane) # Tabs buttons self.tabs_buttons = button.ButtonGroup() self.general_tab = OptionButton(self, (-.20, .01), (-.20, .05), anchor = constants.TOP_CENTER, autohotkey=True, function=self.set_tabs_pane, args=(self.general_pane,)) self.tabs_buttons.add(self.general_tab) self.video_tab = OptionButton(self, (-.40, .01), (-.20, .05), anchor = constants.TOP_CENTER, autohotkey=True, function=self.set_tabs_pane, args=(self.video_pane,)) self.tabs_buttons.add(self.video_tab) self.audio_tab = OptionButton(self, (-.60, .01), (-.20, .05), anchor = constants.TOP_CENTER, autohotkey=True, function=self.set_tabs_pane, args=(self.audio_pane,)) self.tabs_buttons.add(self.audio_tab) self.gui_tab = OptionButton(self, (-.80, .01), (-.202, .05), anchor = constants.TOP_CENTER, autohotkey=True, function=self.set_tabs_pane, args=(self.gui_pane,)) self.tabs_buttons.add(self.gui_tab) self.general_tab.chosen_one() self.set_tabs_pane(self.general_pane) # YesNoDialog buttons self.yes_button.size = (.15, .05) self.no_button.size = (.15, .05)
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, 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(GeneralPane, self).__init__(*args, **kwargs) # First row self.fullscreen_label = button.HotkeyText(self, (.01, .01), (.14, .05), autohotkey=True, align=constants.LEFT, background_color="clear") self.fullscreen_toggle = OptionButton(self, (.16, .01), (.07, .05), text_shrink_factor=.75, force_underline=-1, function=self.set_fullscreen, args=(button.TOGGLE_VALUE, )) self.fullscreen_label.hotkey_target = self.fullscreen_toggle self.daynight_label = button.HotkeyText(self, (.25, .01), (.20, .05), autohotkey=True, background_color="clear") self.daynight_toggle = OptionButton(self, (.46, .01), (.07, .05), text_shrink_factor=.75, force_underline=-1, function=self.set_daynight, args=(button.TOGGLE_VALUE, )) self.daynight_label.hotkey_target = self.daynight_toggle self.grab_label = button.HotkeyText(self, (.55, .01), (.15, .05), autohotkey=True, background_color="clear") self.grab_toggle = OptionButton(self, (.71, .01), (.07, .05), text_shrink_factor=.75, force_underline=-1, function=self.set_grab, args=(button.TOGGLE_VALUE, )) self.grab_label.hotkey_target = self.grab_toggle # Second and third row self.resolution_label = text.Text(self, (.01, .08), (.14, .05), align=constants.LEFT, background_color="clear") self.resolution_group = button.ButtonGroup() rows = 2 cols = 4 def xpos(i): return .16 + .16 * (i % cols) def ypos(i): return .08 + .07 * int(i / cols) for index, (xres, yres) in enumerate(sorted(gg.resolutions[0:rows * cols])): self.resolution_group.add( OptionButton(self, (xpos(index), ypos(index)), (.14, .05), text="%sx%s" % (xres, yres), function=self.set_resolution, args=((xres, yres), ))) # Adjust index to full row index += cols - (index % cols) - 1 # Forth row self.resolution_custom = OptionButton( self, (xpos(0), ypos(index + 1)), (.14, .05), autohotkey=True, function=self.set_resolution_custom) self.resolution_group.add(self.resolution_custom) self.resolution_custom_horiz = \ text.EditableText(self, (xpos(1), ypos(index+1)), (.14, .05), text=str(gg.default_screen_size[0]), borders=constants.ALL, border_color="widget_border", background_color=(0,0,50,255)) self.resolution_custom_X = text.Text(self, (xpos(2) - .02, ypos(index + 1)), (.02, .05), text="X", base_font="special", background_color="clear") self.resolution_custom_vert = \ text.EditableText(self, (xpos(2), ypos(index+1)), (.14, .05), text=str(gg.default_screen_size[1]), borders=constants.ALL, border_color="widget_border", background_color=(0,0,50,255)) # Fifth row self.language_label = text.Text(self, (.01, .30), (.14, .05), align=constants.LEFT, background_color="clear") self.languages = get_languages_list() self.language_choice = \ listbox.UpdateListbox(self, (.16, .30), (.20, .25), list=[lang[1] for lang in self.languages], update_func=self.set_language) self.theme_label = text.Text(self, (.37, .30), (.09, .05), text=_("Theme:"), align=constants.LEFT, background_color="clear") self.theme_choice = \ listbox.UpdateListbox(self, (.47, .30), (.12, .25), update_func=theme.set_theme, list_pos=theme.get_theme_pos())
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): kwargs.setdefault("yes_type", "ok") kwargs.setdefault("no_type", "cancel") super(OptionsScreen, self).__init__(*args, **kwargs) self.yes_button.function = self.check_restart self.size = (.79, .63) self.pos = (.5, .5) self.anchor = constants.MID_CENTER self.background_color = (0, 0, 50) self.borders = () labels = { 'fullscreen': g.hotkey(_("&Fullscreen:")), 'sound': g.hotkey(_("&Sound:")), 'mousegrab': g.hotkey(_("&Mouse grab:")), 'daynight': g.hotkey(_("Da&y/night display:")), } # First row self.fullscreen_label = text.Text( self, (.01, .01), (.14, .05), text=labels['fullscreen']['text'], underline=labels['fullscreen']['pos'], align=constants.LEFT, background_color=gg.colors["clear"]) self.fullscreen_toggle = OptionButton( self, (.16, .01), (.07, .05), text=_("NO"), text_shrink_factor=.75, hotkey=labels['fullscreen']['key'], force_underline=-1, function=self.set_fullscreen, args=(button.TOGGLE_VALUE, )) self.sound_label = text.Text(self, (.28, .01), (.15, .05), text=labels['sound']['text'], underline=labels['sound']['pos'], background_color=gg.colors["clear"]) self.sound_toggle = OptionButton(self, (.44, .01), (.07, .05), text=_("YES"), text_shrink_factor=.75, hotkey=labels['sound']['key'], force_underline=-1, function=self.set_sound, args=(button.TOGGLE_VALUE, )) self.grab_label = text.Text(self, (.55, .01), (.15, .05), text=labels['mousegrab']['text'], underline=labels['mousegrab']['pos'], background_color=gg.colors["clear"]) self.grab_toggle = OptionButton(self, (.71, .01), (.07, .05), text=_("NO"), text_shrink_factor=.75, hotkey=labels['mousegrab']['key'], force_underline=-1, function=self.set_grab, args=(button.TOGGLE_VALUE, )) # Second and third row self.resolution_label = text.Text(self, (.01, .08), (.14, .05), text=_("Resolution:"), align=constants.LEFT, background_color=gg.colors["clear"]) self.resolution_group = button.ButtonGroup() rows = 2 cols = 4 def xpos(i): return .16 + .16 * (i % cols) def ypos(i): return .08 + .07 * int(i / cols) for index, (xres, yres) in enumerate(sorted(gg.resolutions[0:rows * cols])): self.resolution_group.add( OptionButton(self, (xpos(index), ypos(index)), (.14, .05), text="%sx%s" % (xres, yres), function=self.set_resolution, args=((xres, yres), ))) # Adjust index to full row index += cols - (index % cols) - 1 # Forth row self.resolution_custom = OptionButton( self, (xpos(0), ypos(index + 1)), (.14, .05), text=_("&CUSTOM:"), autohotkey=True, function=self.set_resolution_custom) self.resolution_group.add(self.resolution_custom) self.resolution_custom_horiz = \ text.EditableText(self, (xpos(1), ypos(index+1)), (.14, .05), text=str(gg.default_screen_size[0]), borders=constants.ALL, border_color=gg.colors["white"], background_color=(0,0,50,255)) self.resolution_custom_X = text.Text( self, (xpos(2) - .02, ypos(index + 1)), (.02, .05), text="X", base_font=gg.font[1], background_color=gg.colors["clear"]) self.resolution_custom_vert = \ text.EditableText(self, (xpos(2), ypos(index+1)), (.14, .05), text=str(gg.default_screen_size[1]), borders=constants.ALL, border_color=gg.colors["white"], background_color=(0,0,50,255)) # Fifth row self.language_label = text.Text(self, (.01, .30), (.14, .05), text=_("Language:"), align=constants.LEFT, background_color=gg.colors["clear"]) self.languages = get_languages_list() self.language_choice = \ listbox.UpdateListbox(self, (.16, .30), (.21, .25), list=[lang[1] for lang in self.languages], update_func=self.set_language) self.daynight_label = text.Text(self, (.50, .30), (.20, .05), text=labels['daynight']['text'], underline=labels['daynight']['pos'], background_color=gg.colors["clear"]) self.daynight_toggle = OptionButton(self, (.71, .30), (.07, .05), text=_("NO"), text_shrink_factor=.75, hotkey=labels['daynight']['key'], force_underline=-1, function=self.set_daynight, args=(button.TOGGLE_VALUE, ))
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)