def __init__(self, controller, map_id, track, base_route): super().__init__( controller, map_id, logger=getLogger( f'root.app.game.map.{map_id}.signal.{track}.{base_route}.view') ) self.track, self.base_route = track, base_route self.signal_sprite = SignalSprite(self.map_id, self.track, self.base_route, parent_viewport=self.viewport) USER_DB_CURSOR.execute( '''SELECT state, locked FROM signals WHERE track = ? AND base_route = ? AND map_id = ?''', (self.track, self.base_route, self.map_id)) self.state, self.locked = USER_DB_CURSOR.fetchone() self.on_append_window_handlers()
def on_activate(self): super().on_activate() self.shader_sprite.create() self.title_label.create() self.us_flag_sprite.create() self.ru_flag_sprite.create() if self.fullscreen_mode_available: if self.fullscreen_mode: self.restore_button.on_activate() else: self.fullscreen_button.on_activate() else: self.fullscreen_button.on_disable() USER_DB_CURSOR.execute('SELECT display_fps FROM graphics') if USER_DB_CURSOR.fetchone()[0]: self.fps_display.on_activate()
def __init__(self, controller, map_id): super().__init__( controller, map_id, logger=getLogger(f'root.app.game.map.{map_id}.mini_map.view')) USER_DB_CURSOR.execute( '''SELECT unlocked_tracks FROM map_progress WHERE map_id = ?''', (self.map_id, )) self.unlocked_tracks = USER_DB_CURSOR.fetchone()[0] self.mini_map_sprite = MiniMapSprite(map_id=self.map_id, parent_viewport=self.viewport) self.mini_environment_sprite = MiniEnvironmentSprite( map_id=self.map_id, parent_viewport=self.viewport) self.shader_sprite = MiniMapViewShaderSprite(view=self) self.on_window_resize_handlers.extend([ self.shader_sprite.on_window_resize, self.mini_map_sprite.on_window_resize, self.mini_environment_sprite.on_window_resize ]) self.on_append_window_handlers()
def __init__(self, logger, parent_viewport, map_id): super().__init__(logger, parent_viewport, map_id) USER_DB_CURSOR.execute( '''SELECT unlocked_tracks FROM map_progress WHERE map_id = ?''', (self.map_id, )) self.unlocked_tracks = USER_DB_CURSOR.fetchone()[0] CONFIG_DB_CURSOR.execute( '''SELECT unlocked_tracks_by_default FROM map_progress_config WHERE map_id = ?''', (self.map_id, )) self.unlocked_tracks_by_default = CONFIG_DB_CURSOR.fetchone()[0] self.texture = get_map_tracks(map_id=self.map_id, tracks=max( self.unlocked_tracks, self.unlocked_tracks_by_default)) self.batch = BATCHES['main_batch'] self.group = GROUPS['main_map'] CONFIG_DB_CURSOR.execute( '''SELECT map_sprite_y FROM track_config WHERE map_id = ? AND track_number = ?''', (self.map_id, self.unlocked_tracks)) self.y = CONFIG_DB_CURSOR.fetchone()[0]
def _make_an_instance_localizable(*args, **kwargs): def on_update_current_locale(new_locale): args[0].current_locale = new_locale for o in [ o for o in args[0].ui_objects if hasattr(o, 'current_locale') ]: o.on_update_current_locale(new_locale) def on_update_current_locale_label(new_locale): args[0].current_locale = new_locale if args[0].text_label: args[0].text_label.text = args[0].get_formatted_text() f(*args, **kwargs) USER_DB_CURSOR.execute('SELECT current_locale FROM i18n') args[0].current_locale = USER_DB_CURSOR.fetchone()[0] if hasattr(args[0], 'text_label'): args[0].on_update_current_locale = on_update_current_locale_label else: args[0].on_update_current_locale = on_update_current_locale
def __init__(self, column, row, on_update_state_action, parent_viewport, logger): self.logger = logger self.column, self.row = column, row self.parent_viewport = parent_viewport self.viewport = Viewport() USER_DB_CURSOR.execute('SELECT current_locale FROM i18n') self.current_locale = USER_DB_CURSOR.fetchone()[0] self.on_update_state_action = on_update_state_action self.screen_resolution = (0, 0) self.description_label = None self.knob = None self.is_activated = False self.opacity = 0 self.on_window_resize_handlers = [ self.on_window_resize, ] self.on_mouse_motion_handlers = [] self.on_mouse_press_handlers = [] self.on_mouse_release_handlers = [] self.on_mouse_drag_handlers = []
def on_train_setup(self): USER_DB_CURSOR.execute( '''SELECT cars, train_route_track_number, train_route_type, state, direction, new_direction, current_direction, speed_state, speed_state_time, priority, boarding_time, exp, money, cars_position, cars_position_abs, stop_point, destination_point, car_image_collection, switch_direction_required FROM trains WHERE train_id = ? AND map_id = ?''', (self.train_id, self.map_id)) self.cars, self.track, self.train_route, self.state, self.direction, self.new_direction, \ self.current_direction, self.speed_state, self.speed_state_time, self.priority, \ self.boarding_time, self.exp, self.money, cars_position_parsed, cars_position_abs_parsed, \ self.stop_point, self.destination_point, self.car_image_collection, self.switch_direction_required \ = USER_DB_CURSOR.fetchone() if cars_position_parsed is not None: self.cars_position = [ float(p) for p in cars_position_parsed.split(',') ] self.view.car_position = [] self.view.car_position.append( self.trail_points_v2.get_head_tail_car_position( self.cars_position[0])) for i in range(1, len(self.cars_position) - 1): self.view.car_position.append( self.trail_points_v2.get_mid_car_position( self.cars_position[i])) self.view.car_position.append( self.trail_points_v2.get_head_tail_car_position( self.cars_position[-1])) if cars_position_abs_parsed is not None: self.cars_position_abs = [[ float(p) for p in s.split(',') ] for s in cars_position_abs_parsed.split('|')] self.view.car_position = [] for i in range(len(self.cars_position_abs)): self.view.car_position.append( [*self.cars_position_abs[i], 0.0]) self.view.on_train_setup()
def __init__(self, controller): def on_activate_bonus_code(button): self.controller.parent_controller.on_activate_new_bonus_code( sha512(self.bonus_code_interactive_label.text.encode( 'utf-8')).hexdigest()) self.controller.parent_controller.on_close_bonus_code() def on_cancel_bonus_code_activation(button): self.controller.parent_controller.on_close_bonus_code() super().__init__( controller, logger=getLogger('root.app.bonus_code_activation.view')) USER_DB_CURSOR.execute('SELECT level FROM game_progress') self.level = USER_DB_CURSOR.fetchone()[0] self.bonus_code_interactive_label = BonusCodeInteractiveLabel( parent_viewport=self.viewport) self.activate_bonus_code_button = ActivateBonusCodeButton( on_click_action=on_activate_bonus_code, parent_viewport=self.viewport) self.cancel_bonus_code_activation_button = CancelBonusCodeActivationButton( on_click_action=on_cancel_bonus_code_activation, parent_viewport=self.viewport) self.buttons = [ self.activate_bonus_code_button, self.cancel_bonus_code_activation_button ] self.shader_sprite = BonusCodeViewShaderSprite(view=self) self.bonus_code_info_cell = BonusCodeInfoCell( parent_viewport=self.viewport) self.on_window_resize_handlers.extend([ self.bonus_code_interactive_label.on_window_resize, self.shader_sprite.on_window_resize, *self.bonus_code_info_cell.on_window_resize_handlers ]) self.on_append_window_handlers() self.on_text_handlers.append(self.on_text) self.on_key_press_handlers.append(self.on_key_press)
def __init__(self, controller, view, map_id, track_param_1, track_param_2, crossover_type): super().__init__( controller, view, map_id, logger=getLogger( f'root.app.game.map.{map_id}.crossover.{track_param_1}.{track_param_2}.{crossover_type}.model' )) self.track_param_1 = track_param_1 self.track_param_2 = track_param_2 self.crossover_type = crossover_type self.busy = {track_param_1: {}, track_param_2: {}} self.force_busy = {track_param_1: {}, track_param_2: {}} self.last_entered_by = {track_param_1: {}, track_param_2: {}} self.state_change_listeners = {track_param_1: {}, track_param_2: {}} USER_DB_CURSOR.execute( '''SELECT busy_1_1, busy_1_2, busy_2_1, busy_2_2, force_busy_1_1, force_busy_1_2, force_busy_2_1, force_busy_2_2 FROM crossovers WHERE track_param_1 = ? AND track_param_2 = ? AND crossover_type = ? AND map_id = ?''', (self.track_param_1, self.track_param_2, self.crossover_type, self.map_id)) self.busy[self.track_param_1][self.track_param_1], self.busy[self.track_param_1][self.track_param_2], \ self.busy[self.track_param_2][self.track_param_1], self.busy[self.track_param_2][self.track_param_2], \ self.force_busy[self.track_param_1][self.track_param_1], \ self.force_busy[self.track_param_1][self.track_param_2], \ self.force_busy[self.track_param_2][self.track_param_1], \ self.force_busy[self.track_param_2][self.track_param_2] = USER_DB_CURSOR.fetchone() USER_DB_CURSOR.execute( '''SELECT last_entered_by_1_1, last_entered_by_1_2, last_entered_by_2_1, last_entered_by_2_2, current_position_1, current_position_2 FROM crossovers WHERE track_param_1 = ? AND track_param_2 = ? AND crossover_type = ? AND map_id = ?''', (self.track_param_1, self.track_param_2, self.crossover_type, self.map_id)) self.last_entered_by[self.track_param_1][self.track_param_1], \ self.last_entered_by[self.track_param_1][self.track_param_2], \ self.last_entered_by[self.track_param_2][self.track_param_1], \ self.last_entered_by[self.track_param_2][self.track_param_2], \ self.current_position_1, self.current_position_2 = USER_DB_CURSOR.fetchone() CONFIG_DB_CURSOR.execute( '''SELECT track, train_route, section_number FROM train_route_sections WHERE track_param_1 = ? AND track_param_2 = ? AND section_type = ? AND position_1 = ? AND position_2 = ? AND map_id = ?''', (self.track_param_1, self.track_param_2, self.crossover_type, self.track_param_1, self.track_param_1, self.map_id)) self.state_change_listeners[self.track_param_1][ self.track_param_1] = CONFIG_DB_CURSOR.fetchall() CONFIG_DB_CURSOR.execute( '''SELECT track, train_route, section_number FROM train_route_sections WHERE track_param_1 = ? AND track_param_2 = ? AND section_type = ? AND position_1 = ? AND position_2 = ? AND map_id = ?''', (self.track_param_1, self.track_param_2, self.crossover_type, self.track_param_1, self.track_param_2, self.map_id)) self.state_change_listeners[self.track_param_1][ self.track_param_2] = CONFIG_DB_CURSOR.fetchall() CONFIG_DB_CURSOR.execute( '''SELECT track, train_route, section_number FROM train_route_sections WHERE track_param_1 = ? AND track_param_2 = ? AND section_type = ? AND position_1 = ? AND position_2 = ? AND map_id = ?''', (self.track_param_1, self.track_param_2, self.crossover_type, self.track_param_2, self.track_param_1, self.map_id)) self.state_change_listeners[self.track_param_2][ self.track_param_1] = CONFIG_DB_CURSOR.fetchall() CONFIG_DB_CURSOR.execute( '''SELECT track, train_route, section_number FROM train_route_sections WHERE track_param_1 = ? AND track_param_2 = ? AND section_type = ? AND position_1 = ? AND position_2 = ? AND map_id = ?''', (self.track_param_1, self.track_param_2, self.crossover_type, self.track_param_2, self.track_param_2, self.map_id)) self.state_change_listeners[self.track_param_2][ self.track_param_2] = CONFIG_DB_CURSOR.fetchall() USER_DB_CURSOR.execute( '''SELECT locked FROM crossovers WHERE track_param_1 = ? AND track_param_2 = ? AND crossover_type = ? AND map_id = ?''', (self.track_param_1, self.track_param_2, self.crossover_type, self.map_id)) self.locked = USER_DB_CURSOR.fetchone()[0]
def on_train_setup(self): USER_DB_CURSOR.execute( '''SELECT cars, state, direction, car_image_collection FROM trains WHERE train_id = ? AND map_id = ?''', (self.train_id, self.map_id)) self.cars, self.state, self.direction, self.car_image_collection = USER_DB_CURSOR.fetchone( )
def __init__(self, logger, parent_viewport, map_id, column, row): super().__init__(logger, parent_viewport) self.map_id, self.column, self.row = map_id, column, row self.data = [] USER_DB_CURSOR.execute('SELECT clock_24h FROM i18n') self.clock_24h_enabled = USER_DB_CURSOR.fetchone()[0]
def __init__(self, controller, map_id): def on_close_constructor(button): self.controller.fade_out_animation.on_activate() self.controller.parent_controller.on_close_constructor() def on_buy_construction_action(construction_type, row, entity_number): self.controller.on_put_under_construction(construction_type, entity_number) if self.money_target_activated and self.money_target_cell_position == [ construction_type, row ]: self.controller.on_deactivate_money_target() self.controller.parent_controller.parent_controller.on_update_money_target( 0) def on_set_money_target_action(construction_type, row, entity_number): self.controller.on_activate_money_target(construction_type, row) self.controller.parent_controller.parent_controller.on_update_money_target( CONSTRUCTION_STATE_MATRIX[ self.map_id][construction_type][entity_number][PRICE]) def on_reset_money_target_action(): self.controller.on_deactivate_money_target() self.controller.parent_controller.parent_controller.on_update_money_target( 0) super().__init__( controller, map_id, logger=getLogger(f'root.app.game.map.{map_id}.constructor.view')) self.close_constructor_button = CloseConstructorButton( on_click_action=on_close_constructor, parent_viewport=self.viewport) self.buttons = [ self.close_constructor_button, ] track_cells = [] environment_cells = [] for j in range(CONSTRUCTOR_VIEW_TRACK_CELLS): track_cells.append( TrackCell(TRACKS, j, on_buy_construction_action, on_set_money_target_action, on_reset_money_target_action, parent_viewport=self.viewport)) self.buttons.extend(track_cells[j].buttons) self.on_window_resize_handlers.extend( track_cells[j].on_window_resize_handlers) for j in range(CONSTRUCTOR_VIEW_ENVIRONMENT_CELLS): environment_cells.append( EnvironmentCell(ENVIRONMENT, j, on_buy_construction_action, on_set_money_target_action, on_reset_money_target_action, parent_viewport=self.viewport)) self.buttons.extend(environment_cells[j].buttons) self.on_window_resize_handlers.extend( environment_cells[j].on_window_resize_handlers) self.constructor_cells = [track_cells, environment_cells] USER_DB_CURSOR.execute( '''SELECT money_target_activated FROM constructor WHERE map_id = ?''', (self.map_id, )) self.money_target_activated = USER_DB_CURSOR.fetchone()[0] USER_DB_CURSOR.execute( '''SELECT money_target_cell_position FROM constructor WHERE map_id = ?''', (self.map_id, )) self.money_target_cell_position = [ int(p) for p in USER_DB_CURSOR.fetchone()[0].split(',') ] self.shader_sprite = ConstructorViewShaderSprite(view=self) self.constructor_track_placeholder_container = ConstructorTrackPlaceholderContainer( bottom_parent_viewport=self.constructor_cells[TRACKS][-1].viewport, top_parent_viewport=self.constructor_cells[TRACKS][-1].viewport) self.constructor_environment_placeholder_container = ConstructorEnvironmentPlaceholderContainer( bottom_parent_viewport=self.constructor_cells[ENVIRONMENT] [-1].viewport, top_parent_viewport=self.constructor_cells[ENVIRONMENT] [-1].viewport) self.on_window_resize_handlers.extend([ self.shader_sprite.on_window_resize, *self. constructor_track_placeholder_container.on_window_resize_handlers, *self.constructor_environment_placeholder_container. on_window_resize_handlers ]) self.on_append_window_handlers()
def __init__(self, controller, view): super().__init__(controller, view, logger=getLogger('root.app.game.map_switcher.model')) USER_DB_CURSOR.execute('''SELECT last_known_map_id FROM graphics''') self.currently_selected_map = USER_DB_CURSOR.fetchone()[0]
def __init__(self, controller): def on_close_game(button): WINDOW.dispatch_event('on_close') def on_iconify_game(button): WINDOW.minimize() def on_app_window_fullscreen(button): button.paired_button.opacity = button.opacity button.on_deactivate(instant=True) button.paired_button.on_activate() self.controller.on_fullscreen_button_click() def on_app_window_restore(button): button.paired_button.opacity = button.opacity button.on_deactivate(instant=True) button.paired_button.on_activate() self.controller.on_restore_button_click() def on_set_en_locale(button): self.controller.on_update_current_locale(ENGLISH) self.controller.on_update_clock_state(clock_24h_enabled=False) def on_set_ru_locale(button): self.controller.on_update_current_locale(RUSSIAN) self.controller.on_update_clock_state(clock_24h_enabled=True) super().__init__(controller, logger=getLogger('root.app.view')) self.shader_sprite = AppViewShaderSprite(view=self) self.title_label = AppTitleLabel(parent_viewport=self.viewport) self.fps_display = FPSDisplay(parent_viewport=self.viewport) self.us_flag_sprite = USFlagSprite(parent_viewport=self.viewport) self.ru_flag_sprite = RUFlagSprite(parent_viewport=self.viewport) self.close_game_button = CloseGameButton(on_click_action=on_close_game, parent_viewport=self.viewport) self.iconify_button = IconifyButton(on_click_action=on_iconify_game, parent_viewport=self.viewport) self.fullscreen_button, self.restore_button = create_two_state_button( FullscreenButton(on_click_action=on_app_window_fullscreen, parent_viewport=self.viewport), RestoreButton(on_click_action=on_app_window_restore, parent_viewport=self.viewport)) self.en_locale_button = ENLocaleButton( on_click_action=on_set_en_locale, parent_viewport=self.viewport) self.ru_locale_button = RULocaleButton( on_click_action=on_set_ru_locale, parent_viewport=self.viewport) self.buttons = [ self.close_game_button, self.iconify_button, self.fullscreen_button, self.restore_button, self.en_locale_button, self.ru_locale_button ] self.on_window_resize_handlers.extend([ *self.fps_display.on_window_resize_handlers, self.title_label.on_window_resize, self.shader_sprite.on_window_resize, self.us_flag_sprite.on_window_resize, self.ru_flag_sprite.on_window_resize ]) self.on_append_window_handlers() self.app_window_move_mode = False self.app_window_move_offset = (0, 0) self.game_window_handler = GetActiveWindow() self.game_window_position = GetWindowRect(self.game_window_handler) self.absolute_mouse_pos = GetCursorPos() self.on_mouse_press_handlers.append(self.on_mouse_press) self.on_mouse_release_handlers.append(self.on_mouse_release) self.on_mouse_drag_handlers.append(self.on_mouse_drag) USER_DB_CURSOR.execute('SELECT fullscreen FROM graphics') self.fullscreen_mode = USER_DB_CURSOR.fetchone()[0] self.fullscreen_mode_available = False CONFIG_DB_CURSOR.execute( 'SELECT app_width, app_height FROM screen_resolution_config') self.screen_resolution_config = CONFIG_DB_CURSOR.fetchall() if (windll.user32.GetSystemMetrics(0), windll.user32.GetSystemMetrics(1) ) in self.screen_resolution_config: self.fullscreen_mode_available = True
def __init__(self, controller, map_id): def on_leave_action(): self.on_map_move_mode_available() def on_hover_action(): self.on_map_move_mode_unavailable() def on_open_schedule(button): button.on_deactivate(instant=True) button.state = 'normal' self.controller.on_open_schedule() def on_open_constructor(button): button.on_deactivate(instant=True) button.state = 'normal' self.controller.on_open_constructor() def on_open_shop_details(button): self.controller.on_open_shop_details( self.shop_buttons.index(button)) super().__init__(controller, map_id, logger=getLogger(f'root.app.game.map.{map_id}.view')) USER_DB_CURSOR.execute( '''SELECT unlocked_tracks FROM map_progress WHERE map_id = ?''', (self.map_id, )) self.unlocked_tracks = USER_DB_CURSOR.fetchone()[0] self.mini_map_offset = (0, 0) self.main_map_sprite = MainMapSprite(map_id=self.map_id, parent_viewport=self.viewport) self.environment_sprite = MainEnvironmentSprite( map_id=self.map_id, parent_viewport=self.viewport) self.mini_map_timer = 0.0 USER_DB_CURSOR.execute( '''SELECT last_known_base_offset FROM map_position_settings WHERE map_id = ?''', (self.map_id, )) self.base_offset = tuple( int(p) for p in USER_DB_CURSOR.fetchone()[0].split(',')) USER_DB_CURSOR.execute( '''SELECT last_known_zoom FROM map_position_settings WHERE map_id = ?''', (self.map_id, )) self.zoom = USER_DB_CURSOR.fetchone()[0] self.base_offset_lower_left_limit = (0, 0) self.base_offset_upper_right_limit = (0, 0) self.open_schedule_button = OpenScheduleButton( on_click_action=on_open_schedule, parent_viewport=self.viewport) self.open_constructor_button = OpenConstructorButton( on_click_action=on_open_constructor, parent_viewport=self.viewport) self.buttons = [ self.open_schedule_button, self.open_constructor_button ] self.shader_sprite = MapViewShaderSprite(view=self) self.on_window_resize_handlers.append( self.shader_sprite.on_window_resize) self.on_append_window_handlers() self.shop_buttons = [] CONFIG_DB_CURSOR.execute( '''SELECT COUNT(*) FROM shops_config WHERE map_id = ?''', (self.map_id, )) for shop_id in range(CONFIG_DB_CURSOR.fetchone()[0]): self.shop_buttons.append( OpenShopDetailsButton(map_id=self.map_id, shop_id=shop_id, on_click_action=on_open_shop_details, on_hover_action=on_hover_action, on_leave_action=on_leave_action)) CONFIG_DB_CURSOR.execute( '''SELECT track_required FROM shops_config WHERE map_id = ?''', (self.map_id, )) self.shops_track_required_state = tuple( s[0] for s in CONFIG_DB_CURSOR.fetchall()) self.buttons.extend(self.shop_buttons) for b in self.shop_buttons: b.position = b.get_position() b.on_change_scale() self.map_move_mode_available = False self.map_move_mode = False self.on_mouse_press_handlers.append(self.on_mouse_press) self.on_mouse_release_handlers.append(self.on_mouse_release) self.on_mouse_drag_handlers.append(self.on_mouse_drag) self.on_mouse_scroll_handlers.append(self.on_mouse_scroll) USER_DB_CURSOR.execute( '''SELECT SUM(t.constructions_locked) FROM ( SELECT COUNT(track_number) AS constructions_locked FROM tracks WHERE locked = 1 AND map_id = ? UNION SELECT COUNT(tier) AS constructions_locked FROM environment WHERE locked = 1 AND map_id = ? ) AS t''', (self.map_id, self.map_id)) self.constructions_locked = USER_DB_CURSOR.fetchone()[0] self.is_mini_map_timer_activated = False
def __init__(self, construction_type, row, on_buy_construction_action, on_set_money_target_action, on_reset_money_target_action, parent_viewport): def on_set_money_target(button): button.paired_button.opacity = button.opacity button.on_deactivate(instant=True) button.paired_button.on_activate() self.on_set_money_target_action(self.construction_type, self.row, self.entity_number) def on_reset_money_target(button): button.paired_button.opacity = button.opacity button.on_deactivate(instant=True) button.paired_button.on_activate() self.on_reset_money_target_action() def on_buy_construction(button): button.on_deactivate(instant=True) self.enable_money_target_button.on_deactivate(instant=True) self.disable_money_target_button.on_deactivate(instant=True) self.on_buy_construction_action(self.construction_type, self.row, self.entity_number) self.logger = getLogger( f'root.app.game.map.constructor.view.cell.{construction_type}.{row}' ) self.is_activated = False self.parent_viewport = parent_viewport self.viewport = Viewport() self.construction_type, self.row = construction_type, row USER_DB_CURSOR.execute('SELECT current_locale FROM i18n') self.current_locale = USER_DB_CURSOR.fetchone()[0] self.on_buy_construction_action = on_buy_construction_action self.on_set_money_target_action = on_set_money_target_action self.on_reset_money_target_action = on_reset_money_target_action self.entity_number = None self.data = [] self.screen_resolution = (0, 0) self.locked_label = ConstructorLockedLabel( parent_viewport=self.viewport) self.title_label = None self.level_required_label = ConstructorLevelPlaceholderLabel( parent_viewport=self.viewport) self.previous_entity_required_label = None self.environment_required_label = None self.unlock_available_label = None self.under_construction_description_label = UnderConstructionDescriptionLabel( parent_viewport=self.viewport) self.enable_money_target_button, self.disable_money_target_button = create_two_state_button( SetMoneyTargetButton(on_click_action=on_set_money_target, parent_viewport=self.viewport), ResetMoneyTargetButton(on_click_action=on_reset_money_target, parent_viewport=self.viewport)) self.build_button = BuildConstructionButton( on_click_action=on_buy_construction, parent_viewport=self.viewport) self.buttons = [ self.enable_money_target_button, self.disable_money_target_button, self.build_button ] USER_DB_CURSOR.execute('''SELECT money FROM game_progress''') self.money = USER_DB_CURSOR.fetchone()[0] self.money_target_activated = False self.opacity = 0 self.on_window_resize_handlers = [ self.on_window_resize, self.locked_label.on_window_resize, self.level_required_label.on_window_resize, self.under_construction_description_label.on_window_resize ]