示例#1
0
 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()
示例#2
0
    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()
示例#3
0
 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()
示例#4
0
 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]
示例#5
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
示例#6
0
 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 = []
示例#7
0
    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()
示例#8
0
    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)
示例#9
0
 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]
示例#10
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(
     )
示例#11
0
 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]
示例#12
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()
示例#13
0
 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]
示例#14
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
示例#15
0
    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
示例#16
0
    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
        ]