From 09d78e1925750a67b5ed9968b651d27e87076e6e Mon Sep 17 00:00:00 2001 From: mx57 <38256814+mx57@users.noreply.github.com> Date: Sat, 29 Aug 2026 05:16:36 +0000 Subject: [PATCH] feat: add customizable pet size setting with dynamic scaling --- src/core/input_manager.py | 23 +++++++++++++------ src/ui/main_window.py | 16 ++++++++++--- src/ui/settings_dialog.py | 16 +++++++++++++ src/ui/tray_menu.py | 3 ++- src/utils/config_manager.py | 3 ++- tests/test_utils.py | 25 +++++++++++++++++++++ verification/screenshots/stats_history.png | Bin 22831 -> 22921 bytes 7 files changed, 74 insertions(+), 12 deletions(-) diff --git a/src/core/input_manager.py b/src/core/input_manager.py index 9ca9d10..bca4783 100644 --- a/src/core/input_manager.py +++ b/src/core/input_manager.py @@ -402,16 +402,21 @@ def handle_mouse(self, x, y): self.last_mouse_pos = (x, y) self.last_mouse_time = now - # Проверка "поглаживания" + # Проверка "поглаживания" (радиус и мазок мыши масштабируются от размера питомца) pet_pos = self.window.get_cached_pos() - center_x = pet_pos.x() + self.window.width() // 2 - center_y = pet_pos.y() + self.window.height() // 2 + pet_w = self.window.width() + pet_h = self.window.height() + center_x = pet_pos.x() + pet_w // 2 + center_y = pet_pos.y() + pet_h // 2 dx_pet = x - center_x dy_pet = y - center_y dist_sq_pet = dx_pet * dx_pet + dy_pet * dy_pet - # Оптимизация: сравнение квадрата расстояния (порог 60px -> 3600) - if dist_sq_pet < 3600: + # Динамический радиус поглаживания (0.6 от размера, по умолчанию 60px) + pet_radius = max(pet_w, pet_h) * 0.6 + pet_radius_sq = pet_radius * pet_radius + + if dist_sq_pet < pet_radius_sq: # Исключаем пассивный фарм (требуем активное поглаживание: активное движение мыши и кулдаун) if self.last_pet_time == 0: self.last_pet_mouse_pos = (x, y) @@ -421,8 +426,12 @@ def handle_mouse(self, x, y): dy_stroke = y - self.last_pet_mouse_pos[1] stroke_dist_sq = dx_stroke * dx_stroke + dy_stroke * dy_stroke - # Кулдаун 500мс и требование к длине мазка движения (30px -> 900) - if now - self.last_pet_time >= 0.5 and stroke_dist_sq >= 900: + # Динамический порог мазка мыши (0.3 от размера, по умолчанию 30px -> 900) + min_stroke = max(pet_w, pet_h) * 0.3 + min_stroke_sq = min_stroke * min_stroke + + # Кулдаун 500мс и требование к длине мазка движения + if now - self.last_pet_time >= 0.5 and stroke_dist_sq >= min_stroke_sq: # Если активно другое форсированное состояние (например, eating), не сбиваем его is_another_forced_active = self.forced_state_name is not None and self.forced_state_name != "playing" and now < self.forced_state_expires if not is_another_forced_active: diff --git a/src/ui/main_window.py b/src/ui/main_window.py index e619905..f8735be 100644 --- a/src/ui/main_window.py +++ b/src/ui/main_window.py @@ -55,7 +55,8 @@ def __init__(self, config_manager=None): self.is_dragging = False self.shake_count = 0 self.last_shake_time = 0 - self.original_size = QSize(100, 100) + pet_size = self.config.get("pet_size") if self.config else 100 + self.original_size = QSize(pet_size, pet_size) # Начальный размер self.resize(self.original_size) @@ -91,6 +92,14 @@ def set_opacity(self, value): """Устанавливает прозрачность окна (0-100)""" self.setWindowOpacity(value / 100.0) + def set_pet_size(self, size): + """Устанавливает базовый размер питомца и обновляет окно.""" + if self.config: + self.config.set("pet_size", size) + self.original_size = QSize(size, size) + self.resize(self.original_size) + self.animation_manager.update_size(self.size()) + def set_always_on_top(self, enabled): """Включает или выключает режим 'Поверх всех окон' динамически""" if self.config: @@ -172,12 +181,13 @@ def start_hunting(self, target_x, target_y): if self.pos_animation.state() == QPropertyAnimation.Running and self.pos_animation.endValue() == dest_point: return - # Проверка "поимки" + # Проверка "поимки" (порог масштабируется в зависимости от размера окна) curr_pos = self.get_cached_pos() dx = curr_pos.x() - dest_x dy = curr_pos.y() - dest_y dist_sq = dx * dx + dy * dy - if dist_sq < 100: # 10 пикселей + catch_threshold_sq = (self.width() * 0.1) ** 2 + if dist_sq < catch_threshold_sq: if self.animation_manager.current_state == "hunting": self.animation_manager.play_state("happy") self.show_message("Поймал! 🐾") diff --git a/src/ui/settings_dialog.py b/src/ui/settings_dialog.py index 5339824..f1d9378 100644 --- a/src/ui/settings_dialog.py +++ b/src/ui/settings_dialog.py @@ -52,6 +52,21 @@ def __init__(self, config, parent=None): self.opacity_slider.valueChanged.connect(lambda v: self.opacity_val_label.setText(f"{v}%")) layout.addWidget(self.opacity_slider) + # Размер питомца + size_header_layout = QHBoxLayout() + size_header_layout.addWidget(QLabel("Размер питомца:")) + self.size_val_label = QLabel(f"{self.config.get('pet_size')}px") + self.size_val_label.setStyleSheet("font-weight: bold; color: #555;") + size_header_layout.addStretch() + size_header_layout.addWidget(self.size_val_label) + layout.addLayout(size_header_layout) + + self.size_slider = QSlider(Qt.Horizontal) + self.size_slider.setRange(50, 250) + self.size_slider.setValue(self.config.get("pet_size")) + self.size_slider.valueChanged.connect(lambda v: self.size_val_label.setText(f"{v}px")) + layout.addWidget(self.size_slider) + # Интервал растяжки layout.addWidget(QLabel("Интервал растяжки (мин):")) self.stretch_spin = QSpinBox() @@ -168,6 +183,7 @@ def save_settings(self): self.config.set("always_on_top", self.always_on_top_check.isChecked()) self.config.set("volume", self.volume_slider.value()) self.config.set("opacity", self.opacity_slider.value()) + self.config.set("pet_size", self.size_slider.value()) self.config.set("stretch_interval", self.stretch_spin.value()) self.config.set("pomodoro_work", self.pomodoro_work_spin.value()) self.config.set("pomodoro_break", self.pomodoro_break_spin.value()) diff --git a/src/ui/tray_menu.py b/src/ui/tray_menu.py index b3d0392..49ab5d3 100644 --- a/src/ui/tray_menu.py +++ b/src/ui/tray_menu.py @@ -183,9 +183,10 @@ def start_break_timer(self, checked=False): def show_settings(self, checked=False): dialog = SettingsDialog(self.window.config, self.window) if dialog.exec(): - # Обновляем скин и прозрачность в реальном времени + # Обновляем скин, прозрачность и размер питомца в реальном времени self.window.animation_manager.set_skin(self.window.config.get("skin")) self.window.set_opacity(self.window.config.get("opacity")) + self.window.set_pet_size(self.window.config.get("pet_size")) # Обновляем меню скинов self.update_skin_menu() # Обновляем режим "Поверх всех окон" в реальном времени diff --git a/src/utils/config_manager.py b/src/utils/config_manager.py index e6ad878..fb39511 100644 --- a/src/utils/config_manager.py +++ b/src/utils/config_manager.py @@ -12,7 +12,8 @@ class ConfigManager: "volume": 70, "language": "ru", "skin": "default", - "opacity": 100 + "opacity": 100, + "pet_size": 100 } def __init__(self, config_path="settings.json"): diff --git a/tests/test_utils.py b/tests/test_utils.py index 1a72e44..1c285cd 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -29,6 +29,31 @@ def tearDown(self): if os.path.exists(self.db_path): os.remove(self.db_path) + def test_pet_size_logic(self): + os.environ["QT_QPA_PLATFORM"] = "offscreen" + from PySide6.QtWidgets import QApplication + app = QApplication.instance() or QApplication([]) + + config = ConfigManager(self.config_path) + + # 1. Проверяем значение по умолчанию (100) + self.assertEqual(config.get("pet_size"), 100) + + # 2. Перезапись и сохранение + config.set("pet_size", 150) + self.assertEqual(config.get("pet_size"), 150) + + # 3. Применение размера к PetWindow + window = PetWindow(config) + self.assertEqual(window.width(), 150) + self.assertEqual(window.height(), 150) + + # 4. Динамическое изменение через set_pet_size + window.set_pet_size(200) + self.assertEqual(window.width(), 200) + self.assertEqual(window.height(), 200) + self.assertEqual(config.get("pet_size"), 200) + def test_always_on_top_logic(self): os.environ["QT_QPA_PLATFORM"] = "offscreen" from PySide6.QtWidgets import QApplication diff --git a/verification/screenshots/stats_history.png b/verification/screenshots/stats_history.png index 1fa59b4d5793668869a36bebd63e723b22c6927b..6366ceea42070595da0a33249af55ec69ca7efff 100644 GIT binary patch literal 22921 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 literal 22831 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
    ~#Z^ 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