From 338c790a76a79967cb3508005a3354244674ebcd Mon Sep 17 00:00:00 2001 From: mx57 <38256814+mx57@users.noreply.github.com> Date: Thu, 10 Sep 2026 05:31:19 +0000 Subject: [PATCH] feat: complete procedural SVG animation states and laser mode signal sync --- src/core/animation_manager.py | 10 ++++ src/core/input_manager.py | 3 ++ src/ui/tray_menu.py | 11 +++-- tests/test_utils.py | 51 +++++++++++++++++++++ verification/screenshots/stats_history.png | Bin 22831 -> 23103 bytes 5 files changed, 71 insertions(+), 4 deletions(-) diff --git a/src/core/animation_manager.py b/src/core/animation_manager.py index faa829b..07b6800 100644 --- a/src/core/animation_manager.py +++ b/src/core/animation_manager.py @@ -157,6 +157,16 @@ def update_frame(self): elif self.current_state == "thinking": # Наклон + покачивание painter.rotate(10 + 5 * math.sin(self.frame_counter * 0.2)) + elif self.current_state == "playing": + # Покачивание и подпрыгивание + angle = 8 * math.sin(self.frame_counter * 0.6) + painter.rotate(angle) + painter.translate(0, -abs(8 * math.sin(self.frame_counter * 0.6))) + elif self.current_state == "shaking": + # Сильное встряхивание с динамическим изменением масштаба + scale = 1.0 + 0.1 * math.sin(self.frame_counter * 0.9) + painter.scale(scale, scale) + painter.translate(random.randint(-5, 5), random.randint(-5, 5)) painter.translate(-size.width() / 2, -size.height() / 2) diff --git a/src/core/input_manager.py b/src/core/input_manager.py index 9ca9d10..6733e8d 100644 --- a/src/core/input_manager.py +++ b/src/core/input_manager.py @@ -44,6 +44,8 @@ def stop(self): self.keyboard_listener.stop() class InputManager(QObject): + laser_mode_changed = Signal(bool) + def __init__(self, pet_window, data_store=None): super().__init__() self.window = pet_window @@ -442,6 +444,7 @@ def handle_mouse(self, x, y): def toggle_laser_mode(self): self.laser_mode = not self.laser_mode + self.laser_mode_changed.emit(self.laser_mode) if self.laser_mode: self.window.animation_manager.play_state("hunting") # Создаем красивый светящийся красный лазерный курсор diff --git a/src/ui/tray_menu.py b/src/ui/tray_menu.py index b3d0392..92389fc 100644 --- a/src/ui/tray_menu.py +++ b/src/ui/tray_menu.py @@ -59,10 +59,13 @@ def setup_menu(self): self.menu.addSeparator() # Лазерная указка - laser_action = QAction("Лазерная указка 🔴", self) - laser_action.setCheckable(True) - laser_action.triggered.connect(self.toggle_laser) - self.menu.addAction(laser_action) + self.laser_action = QAction("Лазерная указка 🔴", self) + self.laser_action.setCheckable(True) + self.laser_action.triggered.connect(self.toggle_laser) + self.menu.addAction(self.laser_action) + + if self.window.input_manager: + self.window.input_manager.laser_mode_changed.connect(self.laser_action.setChecked) self.menu.addSeparator() diff --git a/tests/test_utils.py b/tests/test_utils.py index 1a72e44..0fad989 100644 --- a/tests/test_utils.py +++ b/tests/test_utils.py @@ -58,6 +58,8 @@ def test_always_on_top_logic(self): self.assertFalse(bool(flags & Qt.WindowStaysOnTopHint)) self.assertFalse(config.get("always_on_top")) + window.close() + def test_config_manager(self): config = ConfigManager(self.config_path) config.set("username", "TestUser") @@ -201,19 +203,58 @@ def test_laser_mode_transitions(self): db = DataStore(self.db_path) im = InputManager(mock_window, db) + # Подключаем проверку сигнала laser_mode_changed + signal_received = [] + im.laser_mode_changed.connect(lambda val: signal_received.append(val)) + # Переключаем лазер в True im.toggle_laser_mode() self.assertTrue(im.laser_mode) + self.assertEqual(signal_received, [True]) mock_window.animation_manager.play_state.assert_called_with("hunting") mock_window.setCursor.assert_called() # Переключаем обратно в False im.toggle_laser_mode() self.assertFalse(im.laser_mode) + self.assertEqual(signal_received, [True, False]) mock_window.animation_manager.play_state.assert_called_with("idle") db.close() + def test_procedural_svg_playing_and_shaking(self): + os.environ["QT_QPA_PLATFORM"] = "offscreen" + from PySide6.QtWidgets import QApplication, QLabel + from src.core.animation_manager import AnimationManager + from PySide6.QtCore import QSize + + app = QApplication.instance() or QApplication([]) + label = QLabel() + label.resize(QSize(100, 100)) + + config = ConfigManager(self.config_path) + am = AnimationManager(label, config) + + # Настраиваем фиктивный svg_renderer + mock_svg = MagicMock() + am.svg_renderer = mock_svg + + # Тест для состояния playing + am.current_state = "playing" + am.update_frame() + self.assertEqual(am.frame_counter, 1) + mock_svg.render.assert_called() + + # Тест для состояния shaking + mock_svg.reset_mock() + am.current_state = "shaking" + am.update_frame() + self.assertEqual(am.frame_counter, 2) + mock_svg.render.assert_called() + + am.anim_timer.stop() + label.close() + def test_force_state_delays_idle(self): mock_window = MagicMock() mock_window.animation_manager.current_state = "idle" @@ -306,6 +347,9 @@ def test_custom_skins_integration(self): self.assertEqual(anim_mgr.skin, "custom_test_skin") self.assertTrue(anim_mgr.current_anim_path.endswith("cat_custom_test_skin.svg")) + anim_mgr.anim_timer.stop() + label.close() + # Очистка if os.path.exists(test_svg_path): os.remove(test_svg_path) @@ -356,6 +400,8 @@ def test_delete_custom_skin(self): self.assertNotIn("custom_todel_skin", CAT_SKINS) self.assertEqual(config.get("skin"), "default") self.assertNotIn("custom_todel_skin", config.get("custom_skins") or {}) + + dialog.close() finally: # Восстанавливаем моки гарантированно QMessageBox.question = original_question @@ -412,6 +458,9 @@ def test_animation_manager_current_fps(self): am.current_fps = 15 self.assertEqual(am.current_fps, 15) + am.anim_timer.stop() + label.close() + def test_sound_manager_fallback(self): from src.utils.sound_manager import SoundManager from PySide6.QtMultimedia import QSoundEffect @@ -514,6 +563,8 @@ def test_stats_dialog_reset_ui_flow(self): finally: QMessageBox.question = original_question QMessageBox.information = original_information + dialog.update_timer.stop() + dialog.close() db.close() if __name__ == '__main__': diff --git a/verification/screenshots/stats_history.png b/verification/screenshots/stats_history.png index 1fa59b4d5793668869a36bebd63e723b22c6927b..497c743a5623c5234e9c2229fb72435b91bff3b3 100644 GIT binary patch literal 23103 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 literal 22831 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
    ~#Z^ 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