frontengine 1.0.28__tar.gz → 1.0.29__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of frontengine might be problematic. Click here for more details.

Files changed (140) hide show
  1. {frontengine-1.0.28 → frontengine-1.0.29}/PKG-INFO +1 -1
  2. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/pet/desktop_pet.py +75 -13
  3. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine.egg-info/PKG-INFO +1 -1
  4. {frontengine-1.0.28 → frontengine-1.0.29}/pyproject.toml +1 -1
  5. {frontengine-1.0.28 → frontengine-1.0.29}/LICENSE +0 -0
  6. {frontengine-1.0.28 → frontengine-1.0.29}/README.md +0 -0
  7. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/__init__.py +0 -0
  8. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/__main__.py +0 -0
  9. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/__init__.py +0 -0
  10. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/base_widget.py +0 -0
  11. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/gif/__init__.py +0 -0
  12. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/gif/paint_gif.py +0 -0
  13. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/image/__init__.py +0 -0
  14. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/image/paint_image.py +0 -0
  15. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/load/__init__.py +0 -0
  16. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/load/load_someone_make_ui.py +0 -0
  17. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/overlay_factory.py +0 -0
  18. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/particle/__init__.py +0 -0
  19. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/particle/particle_ui.py +0 -0
  20. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/pet/__init__.py +0 -0
  21. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/scene/__init__.py +0 -0
  22. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/scene/extend_graphic_scene.py +0 -0
  23. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/scene/extend_graphic_view.py +0 -0
  24. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/scene/scene.py +0 -0
  25. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/sound_player/__init__.py +0 -0
  26. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/sound_player/sound_effect.py +0 -0
  27. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/sound_player/sound_player.py +0 -0
  28. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/text/__init__.py +0 -0
  29. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/text/draw_text.py +0 -0
  30. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/video/__init__.py +0 -0
  31. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/video/video_player.py +0 -0
  32. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/web/__init__.py +0 -0
  33. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/web/webview.py +0 -0
  34. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/window_helpers.py +0 -0
  35. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/system_tray/__init__.py +0 -0
  36. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/system_tray/extend_system_tray.py +0 -0
  37. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/__init__.py +0 -0
  38. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/color/__init__.py +0 -0
  39. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/color/global_color.py +0 -0
  40. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/dialog/__init__.py +0 -0
  41. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/dialog/choose_file_dialog.py +0 -0
  42. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/dialog/hotkey_settings_dialog.py +0 -0
  43. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/dialog/save_file_dialog.py +0 -0
  44. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/main_ui.py +0 -0
  45. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/menu/__init__.py +0 -0
  46. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/menu/help_menu.py +0 -0
  47. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/menu/how_to_menu.py +0 -0
  48. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/menu/language_menu.py +0 -0
  49. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/menu/preset_menu.py +0 -0
  50. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/menu/settings_menu.py +0 -0
  51. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/__init__.py +0 -0
  52. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/control_center/__init__.py +0 -0
  53. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/control_center/control_center_ui.py +0 -0
  54. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/gif/__init__.py +0 -0
  55. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/gif/gif_setting_ui.py +0 -0
  56. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/image/__init__.py +0 -0
  57. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/image/image_setting_ui.py +0 -0
  58. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/particle/__init__.py +0 -0
  59. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/particle/particle_setting_ui.py +0 -0
  60. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/pet/__init__.py +0 -0
  61. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/pet/pet_setting_ui.py +0 -0
  62. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/__init__.py +0 -0
  63. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_manager.py +0 -0
  64. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_page/__init__.py +0 -0
  65. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_page/base_scene_page.py +0 -0
  66. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_page/gif.py +0 -0
  67. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_page/image.py +0 -0
  68. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_page/registry.py +0 -0
  69. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_page/sound.py +0 -0
  70. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_page/text.py +0 -0
  71. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_page/video.py +0 -0
  72. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_page/web.py +0 -0
  73. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_setting_ui.py +0 -0
  74. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/sound_player/__init__.py +0 -0
  75. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/sound_player/sound_player_setting_ui.py +0 -0
  76. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/text/__init__.py +0 -0
  77. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/text/text_setting_ui.py +0 -0
  78. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/utils.py +0 -0
  79. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/video/__init__.py +0 -0
  80. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/video/video_setting_ui.py +0 -0
  81. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/web/__init__.py +0 -0
  82. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/web/web_setting_ui.py +0 -0
  83. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/user_setting/__init__.py +0 -0
  84. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/user_setting/preset_repository.py +0 -0
  85. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/user_setting/scene_setting.py +0 -0
  86. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/user_setting/user_setting_file.py +0 -0
  87. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/__init__.py +0 -0
  88. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/audio_meter/__init__.py +0 -0
  89. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/audio_meter/audio_envelope.py +0 -0
  90. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/audio_meter/screen_audio.py +0 -0
  91. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/audio_meter/system_audio_meter.py +0 -0
  92. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/browser/__init__.py +0 -0
  93. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/browser/browser.py +0 -0
  94. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/critical_exit/__init__.py +0 -0
  95. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/critical_exit/check_key_is_press.py +0 -0
  96. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/critical_exit/critical_exit.py +0 -0
  97. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/critical_exit/win32_vk.py +0 -0
  98. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/exception/__init__.py +0 -0
  99. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/exception/exception_tags.py +0 -0
  100. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/exception/exceptions.py +0 -0
  101. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/file/__init__.py +0 -0
  102. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/file/open/__init__.py +0 -0
  103. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/file/open/open_file.py +0 -0
  104. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/file/save/__init__.py +0 -0
  105. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/file/save/save_file.py +0 -0
  106. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/hotkey/__init__.py +0 -0
  107. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/hotkey/hotkey_service.py +0 -0
  108. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/json/__init__.py +0 -0
  109. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/json/json_file.py +0 -0
  110. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/json/json_repository.py +0 -0
  111. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/json_format/__init__.py +0 -0
  112. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/json_format/json_process.py +0 -0
  113. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/logging/__init__.py +0 -0
  114. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/logging/loggin_instance.py +0 -0
  115. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/multi_language/__init__.py +0 -0
  116. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/multi_language/english.py +0 -0
  117. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/multi_language/france.py +0 -0
  118. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/multi_language/germany.py +0 -0
  119. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/multi_language/italy.py +0 -0
  120. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/multi_language/language_wrapper.py +0 -0
  121. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/multi_language/russian.py +0 -0
  122. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/multi_language/simplified_chinese.py +0 -0
  123. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/multi_language/traditional_chinese.py +0 -0
  124. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/preset_schedule/__init__.py +0 -0
  125. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/preset_schedule/preset_schedule_service.py +0 -0
  126. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/redirect_manager/__init__.py +0 -0
  127. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/redirect_manager/redirect_manager_class.py +0 -0
  128. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/smart_pause/__init__.py +0 -0
  129. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/smart_pause/smart_pause_service.py +0 -0
  130. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/theme_schedule/__init__.py +0 -0
  131. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/theme_schedule/theme_schedule_service.py +0 -0
  132. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/web_url.py +0 -0
  133. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/worker/__init__.py +0 -0
  134. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/worker/qthread_worker.py +0 -0
  135. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine.egg-info/SOURCES.txt +0 -0
  136. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine.egg-info/dependency_links.txt +0 -0
  137. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine.egg-info/entry_points.txt +0 -0
  138. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine.egg-info/requires.txt +0 -0
  139. {frontengine-1.0.28 → frontengine-1.0.29}/frontengine.egg-info/top_level.txt +0 -0
  140. {frontengine-1.0.28 → frontengine-1.0.29}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: frontengine
3
- Version: 1.0.28
3
+ Version: 1.0.29
4
4
  Summary: FrontEngine is use-define frontview or only use like screen saver
5
5
  Author-email: JE-Chen <jechenmailman@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/Intergration-Automation-Testing/FrontEngine
@@ -403,14 +403,28 @@ class PetTagGame:
403
403
  return self._roles(positions, prey)
404
404
 
405
405
  def _roles(self, positions: dict, prey) -> dict:
406
- """依目前的鬼與獵物組出每個人的角色與要走向的 x。"""
407
- it_x, _it_y = positions[self.it]
408
- roles = {self.it: (TAG_CHASE, positions[prey][0] if prey is not None else it_x)}
409
- for participant, (x, _y) in positions.items():
406
+ """
407
+ 依目前的鬼與獵物組出每個人的 (角色, 目標 x, 目標 y)。逃跑方向取兩點連線的反向,
408
+ 讓地板模式(只用 x)與飄移/追游標模式(用整個點)都有合理目標。
409
+ Build each participant's (role, target_x, target_y). Runners head along
410
+ the line away from "it", which suits floor pets (x only) and wander or
411
+ chase pets (the whole point) alike.
412
+ """
413
+ it_x, it_y = positions[self.it]
414
+ prey_position = positions[prey] if prey is not None else (it_x, it_y)
415
+ roles = {self.it: (TAG_CHASE, float(prey_position[0]), float(prey_position[1]))}
416
+ for participant, (x, y) in positions.items():
410
417
  if participant == self.it:
411
418
  continue
412
- away = self.flee_distance if x >= it_x else -self.flee_distance
413
- roles[participant] = (TAG_FLEE, x + away)
419
+ dx, dy = x - it_x, y - it_y
420
+ length = (dx * dx + dy * dy) ** 0.5
421
+ if length < 1e-9: # standing on each other: just pick a direction
422
+ dx, dy, length = 1.0, 0.0, 1.0
423
+ roles[participant] = (
424
+ TAG_FLEE,
425
+ x + self.flee_distance * dx / length,
426
+ y + self.flee_distance * dy / length,
427
+ )
414
428
  return roles
415
429
 
416
430
 
@@ -666,6 +680,10 @@ class PetMotion:
666
680
  self.ground_feet = 0.0
667
681
  # 追向某個 x(用於朝同伴走過去玩耍)/ Horizontal target to walk toward (play).
668
682
  self.follow_target_x: Optional[float] = None
683
+ # 引導目標 (x, y):三種行為模式都會朝它移動(鬼抓人用),優先於各自的預設動線。
684
+ # Guidance point (x, y) honoured by every behaviour (used by the tag
685
+ # game); it takes precedence over each mode's own default movement.
686
+ self.guidance: Optional[Tuple[float, float]] = None
669
687
 
670
688
  @property
671
689
  def facing_left(self) -> bool:
@@ -713,6 +731,43 @@ class PetMotion:
713
731
  def set_target(self, x: float, y: float) -> None:
714
732
  self.target = (float(x), float(y))
715
733
 
734
+ def set_guidance(self, x: float, y: Optional[float] = None) -> None:
735
+ """
736
+ 設定引導目標;地板模式走向該 x,飄移/追游標模式則朝該點移動。
737
+ Set the guidance point: floor pets walk toward its x, wander and chase
738
+ pets steer toward the point itself.
739
+ """
740
+ centre_y = self.y + self.height / 2.0
741
+ self.guidance = (float(x), centre_y if y is None else float(y))
742
+ if self.behaviour == BEHAVIOUR_FLOOR:
743
+ self.follow_target_x = self.guidance[0]
744
+
745
+ def clear_guidance(self) -> None:
746
+ """取消引導,回到該模式原本的動線 / Drop the guidance and resume normal movement."""
747
+ self.guidance = None
748
+ self.follow_target_x = None
749
+
750
+ STEER_BLEND = 0.4
751
+
752
+ def _steer_toward(self, point: Tuple[float, float]) -> None:
753
+ """把速度往目標點轉一些(保持速率),轉彎自然而不是瞬間轉向。"""
754
+ target_x, target_y = point
755
+ dx = target_x - (self.x + self.width / 2.0)
756
+ dy = target_y - (self.y + self.height / 2.0)
757
+ distance = (dx * dx + dy * dy) ** 0.5
758
+ if distance < 1e-9:
759
+ return
760
+ desired_x = self.speed * dx / distance
761
+ desired_y = self.speed * dy / distance
762
+ blended_x = self.vx + self.STEER_BLEND * (desired_x - self.vx)
763
+ blended_y = self.vy + self.STEER_BLEND * (desired_y - self.vy)
764
+ magnitude = (blended_x * blended_x + blended_y * blended_y) ** 0.5
765
+ if magnitude < 1e-9:
766
+ self.vx, self.vy = desired_x, desired_y
767
+ return
768
+ self.vx = self.speed * blended_x / magnitude
769
+ self.vy = self.speed * blended_y / magnitude
770
+
716
771
  def throw(self, vx: float, vy: float) -> None:
717
772
  """拖曳放開後以動量丟出(只在重力模式有意義)。"""
718
773
  self.vx = float(vx)
@@ -945,6 +1000,8 @@ class PetMotion:
945
1000
  def _step_wander(self, left, top, right, bottom) -> Tuple[int, int]:
946
1001
  if abs(self.vy) < 1e-9:
947
1002
  self.vy = float(self.speed)
1003
+ if self.guidance is not None:
1004
+ self._steer_toward(self.guidance)
948
1005
  self.x += self.vx
949
1006
  self.y += self.vy
950
1007
  if self.x <= left:
@@ -963,14 +1020,19 @@ class PetMotion:
963
1020
 
964
1021
  # --- chase cursor ---
965
1022
  def _step_chase(self, left, top, right, bottom) -> Tuple[int, int]:
966
- if self.target is None:
1023
+ # 被引導時(鬼抓人)以引導目標為準,而不是游標
1024
+ # While guided (tag game) the guidance point wins over the cursor.
1025
+ chase_target = self.guidance if self.guidance is not None else self.target
1026
+ if chase_target is None:
967
1027
  return int(self.x), int(self.y)
968
- target_x, target_y = self.target
1028
+ target_x, target_y = chase_target
969
1029
  dx = target_x - (self.x + self.width / 2)
970
1030
  dy = target_y - (self.y + self.height / 2)
971
1031
  distance = (dx * dx + dy * dy) ** 0.5
972
1032
  if distance <= self.CHASE_STOP_DISTANCE:
973
- self.asleep = True
1033
+ # 追到游標會睡著;玩鬼抓人時只是站在對方身上,不睡。
1034
+ # Catching the cursor means a nap; catching a playmate does not.
1035
+ self.asleep = self.guidance is None
974
1036
  return int(self.x), int(self.y)
975
1037
  self.asleep = False
976
1038
  step = float(self.speed) * self.CHASE_SPEED_FACTOR
@@ -1111,17 +1173,17 @@ class DesktopPetWidget(BaseWidget):
1111
1173
 
1112
1174
  def apply_tag_role(self, role) -> None:
1113
1175
  """
1114
- 套用鬼抓人角色 (角色, 目標 x);None 代表沒在玩,恢復平常的同伴互動。
1176
+ 套用鬼抓人角色 (角色, 目標 x, 目標 y);None 代表沒在玩,恢復平常的同伴互動。
1115
1177
  Apply a tag role; None means the game is off and normal peer play resumes.
1116
1178
  """
1117
1179
  if role is None:
1118
1180
  if self._tag_role is not None:
1119
1181
  self._tag_role = None
1120
- self.motion.clear_follow()
1182
+ self.motion.clear_guidance()
1121
1183
  return
1122
- self._tag_role, target_x = role
1184
+ self._tag_role, target_x, target_y = role
1123
1185
  self.motion.wake()
1124
- self.motion.set_follow(target_x)
1186
+ self.motion.set_guidance(target_x, target_y)
1125
1187
 
1126
1188
  def on_tagged(self) -> None:
1127
1189
  """換自己當鬼時喊一句 / Shout when the tag lands on this pet."""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: frontengine
3
- Version: 1.0.28
3
+ Version: 1.0.29
4
4
  Summary: FrontEngine is use-define frontview or only use like screen saver
5
5
  Author-email: JE-Chen <jechenmailman@gmail.com>
6
6
  Project-URL: Homepage, https://github.com/Intergration-Automation-Testing/FrontEngine
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
6
6
 
7
7
  [project]
8
8
  name = "frontengine"
9
- version = "1.0.28"
9
+ version = "1.0.29"
10
10
  authors = [
11
11
  { name = "JE-Chen", email = "jechenmailman@gmail.com" },
12
12
  ]
File without changes
File without changes
File without changes