def ask_company_name(self, label, function_parameter, give_warning=False): pygame.draw.rect(self.window, (212, 212, 212), self.gui_rect) title = global_variables.standard_font.render("Name of company:", True, (0, 0, 0)) self.window.blit(title, (self.gui_rect[0] + 10, self.gui_rect[1] + 10)) self.text_receiver = gui_components.entry( self.window, (self.gui_rect[0] + 10, self.gui_rect[1] + 45), self.gui_rect[2] - 20, global_variables.max_letters_in_company_names) self.buttons = {} self.buttons["ok"] = gui_components.button( "ok", self.window, self.ask_company_capital, function_parameter=None, topleft=(self.gui_rect[0] + self.gui_rect[2] - 100, self.gui_rect[1] + self.gui_rect[3] - 40), fixed_size=None) self.buttons["cancel"] = gui_components.button( "cancel", self.window, self.create_intro_gui, function_parameter=None, topleft=(self.gui_rect[0] + self.gui_rect[2] - 65, self.gui_rect[1] + self.gui_rect[3] - 40), fixed_size=None) if give_warning: warning_label = global_variables.standard_font_small.render( "No double space, no blanks", True, (0, 0, 0)) self.window.blit(warning_label, (self.gui_rect[0] + 10, self.gui_rect[1] + 90)) pygame.display.flip()
def ask_country_name(self, label, function_parameter): self.gui_rect = pygame.Rect(global_variables.window_size[0] / 2 - 150, global_variables.window_size[1] / 3 - 50, 300, 300) pygame.draw.rect(self.window, (212, 212, 212), self.gui_rect) country_window = gui_components.fast_list( self.window, self.countries, rect=pygame.Rect(self.gui_rect[0], self.gui_rect[1], self.gui_rect[2], self.gui_rect[3] - 50)) self.buttons = {} self.buttons["country_window"] = country_window self.buttons["ok"] = gui_components.button( "ok", self.window, self.ask_company_capital, function_parameter=None, topleft=(self.gui_rect[0] + self.gui_rect[2] - 100, self.gui_rect[1] + self.gui_rect[3] - 40), fixed_size=None) self.buttons["cancel"] = gui_components.button( "cancel", self.window, self.create_intro_gui, function_parameter=None, topleft=(self.gui_rect[0] + self.gui_rect[2] - 65, self.gui_rect[1] + self.gui_rect[3] - 40), fixed_size=None)
def ask_company_type(self, label, function_parameter): pygame.draw.rect(self.window, (212, 212, 212), self.gui_rect) title = global_variables.standard_font.render("Type of company:", True, (0, 0, 0)) self.window.blit(title, (self.gui_rect[0] + 10, self.gui_rect[1] + 10)) def dummy_function_for_radiobuttons(label, function_parameter): pass self.buttons = {} self.buttons["type_selector"] = gui_components.radiobuttons( ["Private company", "Country"], surface=self.window, function=dummy_function_for_radiobuttons, function_parameter=None, topleft=(self.gui_rect[0] + 10, self.gui_rect[1] + 40), selected=None) self.buttons["ok"] = gui_components.button( "ok", self.window, self.decide_company_type, function_parameter=None, topleft=(self.gui_rect[0] + self.gui_rect[2] - 100, self.gui_rect[1] + self.gui_rect[3] - 40), fixed_size=None) self.buttons["cancel"] = gui_components.button( "cancel", self.window, self.create_intro_gui, function_parameter=None, topleft=(self.gui_rect[0] + self.gui_rect[2] - 65, self.gui_rect[1] + self.gui_rect[3] - 40), fixed_size=None)
def load_callback(self, label, function_parameter): self.gui_rect = pygame.Rect(global_variables.window_size[0] / 2 - 150, global_variables.window_size[1] / 3 - 50, 300, 300) pygame.draw.rect(self.window, (212, 212, 212), self.gui_rect) load_window = gui_components.fast_list( self.window, os.listdir("savegames"), rect=pygame.Rect(self.gui_rect[0], self.gui_rect[1], self.gui_rect[2], self.gui_rect[3] - 50)) self.buttons = {} self.buttons["load_window"] = load_window self.buttons["ok"] = gui_components.button( "ok", self.window, self.load_game, function_parameter=load_window, topleft=(self.gui_rect[0] + self.gui_rect[2] - 100, self.gui_rect[1] + self.gui_rect[3] - 40), fixed_size=None) self.buttons["cancel"] = gui_components.button( "cancel", self.window, self.create_intro_gui, function_parameter=None, topleft=(self.gui_rect[0] + self.gui_rect[2] - 65, self.gui_rect[1] + self.gui_rect[3] - 40), fixed_size=None)
def create_intro_gui(self, label=None, function_parameter=None): self.gui_rect = pygame.Rect(global_variables.window_size[0] / 2 - 90, global_variables.window_size[1] / 3, 180, 180) self.text_receiver = None pygame.draw.rect(self.window, (212, 212, 212), self.gui_rect) pygame.draw.line( self.window, (255, 255, 255), (self.gui_rect[0], self.gui_rect[1]), (self.gui_rect[0] + self.gui_rect[2], self.gui_rect[1]), 2) pygame.draw.line( self.window, (255, 255, 255), (self.gui_rect[0], self.gui_rect[1]), (self.gui_rect[0], self.gui_rect[1] + self.gui_rect[3]), 2) button_names = ["New game", "Load game", "Game settings", "Quit game"] button_functions = [ self.ask_company_type, self.load_callback, self.game_settings_callback, self.quit_callback ] self.buttons = {} for i, button_name in enumerate(button_names): self.buttons[button_name] = gui_components.button( button_name, self.window, button_functions[i], function_parameter=None, topleft=(self.gui_rect[0] + 25, self.gui_rect[1] + i * 35 + 25), fixed_size=(130, 30))
def ask_company_capital(self, label, function_parameter, give_warning=False): if "country_window" in self.buttons and self.is_country: company_name = self.buttons["country_window"].selected elif self.text_receiver is not None and not self.is_country: company_name = self.text_receiver.text else: raise Exception( "Could not figure out whether country or private company was selected" ) all_ok = True if not (0 < len(company_name) <= global_variables.max_letters_in_company_names): all_ok = False if company_name.find( " " ) != -1: #somewhere it is used that there are two double spaces, so we can't allow that in a companyname all_ok = False if company_name in self.countries and not self.is_country: all_ok = False if all_ok: pygame.draw.rect(self.window, (212, 212, 212), self.gui_rect) title = global_variables.standard_font.render( "Starting capital:", True, (0, 0, 0)) self.window.blit(title, (self.gui_rect[0] + 10, self.gui_rect[1] + 10)) self.text_receiver = gui_components.entry( self.window, (self.gui_rect[0] + 10, self.gui_rect[1] + 45), self.gui_rect[2] - 20, global_variables.max_letters_in_company_names, starting_text="10000000") self.buttons = {} self.buttons["ok"] = gui_components.button( "ok", self.window, self.start_new_game, function_parameter=None, topleft=(self.gui_rect[0] + self.gui_rect[2] - 100, self.gui_rect[1] + self.gui_rect[3] - 40), fixed_size=None) self.buttons["cancel"] = gui_components.button( "cancel", self.window, self.create_intro_gui, function_parameter=None, topleft=(self.gui_rect[0] + self.gui_rect[2] - 65, self.gui_rect[1] + self.gui_rect[3] - 40), fixed_size=None) self.company_name = company_name if give_warning: warning_label = global_variables.standard_font_small.render( "Starting capital must be an", True, (0, 0, 0)) self.window.blit( warning_label, (self.gui_rect[0] + 10, self.gui_rect[1] + 90)) warning_label2 = global_variables.standard_font_small.render( "integer above zero", True, (0, 0, 0)) self.window.blit( warning_label2, (self.gui_rect[0] + 10, self.gui_rect[1] + 100)) pygame.display.flip() else: self.ask_company_name(None, None, give_warning=True)