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.
- {frontengine-1.0.28 → frontengine-1.0.29}/PKG-INFO +1 -1
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/pet/desktop_pet.py +75 -13
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine.egg-info/PKG-INFO +1 -1
- {frontengine-1.0.28 → frontengine-1.0.29}/pyproject.toml +1 -1
- {frontengine-1.0.28 → frontengine-1.0.29}/LICENSE +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/README.md +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/__main__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/base_widget.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/gif/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/gif/paint_gif.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/image/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/image/paint_image.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/load/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/load/load_someone_make_ui.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/overlay_factory.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/particle/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/particle/particle_ui.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/pet/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/scene/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/scene/extend_graphic_scene.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/scene/extend_graphic_view.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/scene/scene.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/sound_player/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/sound_player/sound_effect.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/sound_player/sound_player.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/text/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/text/draw_text.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/video/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/video/video_player.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/web/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/web/webview.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/show/window_helpers.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/system_tray/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/system_tray/extend_system_tray.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/color/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/color/global_color.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/dialog/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/dialog/choose_file_dialog.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/dialog/hotkey_settings_dialog.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/dialog/save_file_dialog.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/main_ui.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/menu/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/menu/help_menu.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/menu/how_to_menu.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/menu/language_menu.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/menu/preset_menu.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/menu/settings_menu.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/control_center/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/control_center/control_center_ui.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/gif/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/gif/gif_setting_ui.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/image/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/image/image_setting_ui.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/particle/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/particle/particle_setting_ui.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/pet/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/pet/pet_setting_ui.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_manager.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_page/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_page/base_scene_page.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_page/gif.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_page/image.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_page/registry.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_page/sound.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_page/text.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_page/video.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_page/web.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_setting_ui.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/sound_player/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/sound_player/sound_player_setting_ui.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/text/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/text/text_setting_ui.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/utils.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/video/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/video/video_setting_ui.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/web/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/web/web_setting_ui.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/user_setting/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/user_setting/preset_repository.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/user_setting/scene_setting.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/user_setting/user_setting_file.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/audio_meter/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/audio_meter/audio_envelope.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/audio_meter/screen_audio.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/audio_meter/system_audio_meter.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/browser/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/browser/browser.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/critical_exit/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/critical_exit/check_key_is_press.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/critical_exit/critical_exit.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/critical_exit/win32_vk.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/exception/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/exception/exception_tags.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/exception/exceptions.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/file/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/file/open/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/file/open/open_file.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/file/save/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/file/save/save_file.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/hotkey/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/hotkey/hotkey_service.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/json/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/json/json_file.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/json/json_repository.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/json_format/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/json_format/json_process.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/logging/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/logging/loggin_instance.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/multi_language/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/multi_language/english.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/multi_language/france.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/multi_language/germany.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/multi_language/italy.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/multi_language/language_wrapper.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/multi_language/russian.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/multi_language/simplified_chinese.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/multi_language/traditional_chinese.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/preset_schedule/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/preset_schedule/preset_schedule_service.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/redirect_manager/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/redirect_manager/redirect_manager_class.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/smart_pause/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/smart_pause/smart_pause_service.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/theme_schedule/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/theme_schedule/theme_schedule_service.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/web_url.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/worker/__init__.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine/worker/qthread_worker.py +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine.egg-info/SOURCES.txt +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine.egg-info/dependency_links.txt +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine.egg-info/entry_points.txt +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine.egg-info/requires.txt +0 -0
- {frontengine-1.0.28 → frontengine-1.0.29}/frontengine.egg-info/top_level.txt +0 -0
- {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.
|
|
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
|
-
"""
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
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
|
-
|
|
413
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/control_center/control_center_ui.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/particle/particle_setting_ui.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_manager.py
RENAMED
|
File without changes
|
{frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_page/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_page/gif.py
RENAMED
|
File without changes
|
{frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_page/image.py
RENAMED
|
File without changes
|
{frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_page/registry.py
RENAMED
|
File without changes
|
{frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_page/sound.py
RENAMED
|
File without changes
|
{frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_page/text.py
RENAMED
|
File without changes
|
{frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_page/video.py
RENAMED
|
File without changes
|
{frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_page/web.py
RENAMED
|
File without changes
|
{frontengine-1.0.28 → frontengine-1.0.29}/frontengine/ui/page/scene_setting/scene_setting_ui.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/audio_meter/system_audio_meter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/critical_exit/check_key_is_press.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/multi_language/language_wrapper.py
RENAMED
|
File without changes
|
|
File without changes
|
{frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/multi_language/simplified_chinese.py
RENAMED
|
File without changes
|
{frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/multi_language/traditional_chinese.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/smart_pause/smart_pause_service.py
RENAMED
|
File without changes
|
|
File without changes
|
{frontengine-1.0.28 → frontengine-1.0.29}/frontengine/utils/theme_schedule/theme_schedule_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|