autowsgr 2.2.0.post1__tar.gz → 2.2.2__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.
Files changed (648) hide show
  1. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.github/workflows/lint.yml +0 -1
  2. autowsgr-2.2.2/.github/workflows/pytest.yml +31 -0
  3. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/PKG-INFO +3 -2
  4. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/README.md +1 -1
  5. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/__init__.py +1 -1
  6. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/types.py +2 -0
  7. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/__init__.py +1 -0
  8. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/map/base.py +3 -27
  9. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/map/data.py +4 -1
  10. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/map/panels/campaign.py +32 -0
  11. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/map/panels/sortie.py +25 -55
  12. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/navigation.py +9 -1
  13. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/utils/ship_list.py +1 -1
  14. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/vision/ocr.py +18 -0
  15. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/pyproject.toml +2 -0
  16. autowsgr-2.2.2/renovate.json +46 -0
  17. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/tools/update_shipnames.py +3 -14
  18. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/uv.lock +254 -203
  19. autowsgr-2.2.0.post1/.github/workflows/pytest.yml +0 -22
  20. autowsgr-2.2.0.post1/renovate.json +0 -31
  21. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.agents/skills/emulator-debug/SKILL.md +0 -0
  22. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.agents/skills/generic-issue-log-analysis/SKILL.md +0 -0
  23. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.agents/skills/release-backend/SKILL.md +0 -0
  24. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.gitattributes +0 -0
  25. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.github/CONTRIBUTING.md +0 -0
  26. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  27. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  28. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.github/ISSUE_TEMPLATE/enhancement_suggestion.yml +0 -0
  29. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.github/workflows/ai-issue-analysis.yml +0 -0
  30. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.github/workflows/lunar.yml +0 -0
  31. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.github/workflows/release.yml +0 -0
  32. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.github/workflows/sync-upstream.yml +0 -0
  33. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.gitignore +0 -0
  34. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.pre-commit-config.yaml +0 -0
  35. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/AGENTS.md +0 -0
  36. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/CLAUDE.md +0 -0
  37. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/LICENSE +0 -0
  38. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/combat/README.md +0 -0
  39. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/combat/__init__.py +0 -0
  40. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/combat/actions.py +0 -0
  41. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/combat/engine.py +0 -0
  42. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/combat/handlers.py +0 -0
  43. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/combat/history.py +0 -0
  44. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/combat/node_tracker.py +0 -0
  45. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/combat/plan.py +0 -0
  46. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/combat/recognition.py +0 -0
  47. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/combat/recognizer.py +0 -0
  48. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/combat/rules.py +0 -0
  49. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/combat/state.py +0 -0
  50. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/constants/__init__.py +0 -0
  51. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/constants/shipnames.py +0 -0
  52. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/context/README.md +0 -0
  53. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/context/__init__.py +0 -0
  54. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/context/build.py +0 -0
  55. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/context/equipment.py +0 -0
  56. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/context/expedition.py +0 -0
  57. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/context/fleet.py +0 -0
  58. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/context/game_context.py +0 -0
  59. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/context/resources.py +0 -0
  60. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/context/ship.py +0 -0
  61. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/bin/scrcpy-server.jar +0 -0
  62. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/build/equip_complete_540p.png +0 -0
  63. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/build/equip_fast_540p.png +0 -0
  64. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/build/equip_full_depot_540p.png +0 -0
  65. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/build/equip_start_540p.png +0 -0
  66. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/build/resource_540p.png +0 -0
  67. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/build/ship_complete_540p.png +0 -0
  68. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/build/ship_fast_540p.png +0 -0
  69. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/build/ship_full_depot_540p.png +0 -0
  70. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/build/ship_start_540p.png +0 -0
  71. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/choose_ship/tab_1_540p.png +0 -0
  72. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/choose_ship/tab_2_540p.png +0 -0
  73. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/choose_ship/tab_3_540p.png +0 -0
  74. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/choose_ship/tab_4_540p.png +0 -0
  75. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/battle_times_exceed_540p.png +0 -0
  76. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/bypass_540p.png +0 -0
  77. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/end_battle_page_540p.png +0 -0
  78. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/end_exercise_page_540p.png +0 -0
  79. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/end_map_page_540p.png +0 -0
  80. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/fight_condition_540p.png +0 -0
  81. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/fight_period_540p.png +0 -0
  82. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/flagship_damage_540p.png +0 -0
  83. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/formation_540p.png +0 -0
  84. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/get_item_540p.png +0 -0
  85. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/get_ship_540p.png +0 -0
  86. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/missile_animation_540p.png +0 -0
  87. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/missile_support_540p.png +0 -0
  88. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/mvp_badge_540p.png +0 -0
  89. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/night_battle_540p.png +0 -0
  90. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/proceed_540p.png +0 -0
  91. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/result/a_540p.png +0 -0
  92. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/result/b_540p.png +0 -0
  93. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/result/c_540p.png +0 -0
  94. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/result/d_540p.png +0 -0
  95. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/result/loot_540p.png +0 -0
  96. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/result/s_540p.png +0 -0
  97. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/result/ss_540p.png +0 -0
  98. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/result_540p.png +0 -0
  99. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/result_page_540p.png +0 -0
  100. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/ship_icon_1_540p.png +0 -0
  101. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/ship_icon_2_540p.png +0 -0
  102. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/spot_enemy_540p.png +0 -0
  103. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/common/README.md +0 -0
  104. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/common/confirm_1_540p.png +0 -0
  105. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/common/confirm_2_540p.png +0 -0
  106. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/common/confirm_3_540p.png +0 -0
  107. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/common/confirm_4_540p.png +0 -0
  108. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/common/confirm_5_540p.png +0 -0
  109. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/cook/cook_button_540p.png +0 -0
  110. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/cook/have_cook_540p.png +0 -0
  111. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/cook/no_times_540p.png +0 -0
  112. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/decisive/entry_cant_fight_540p.png +0 -0
  113. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/decisive/entry_challenging_540p.png +0 -0
  114. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/decisive/entry_refresh_540p.png +0 -0
  115. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/decisive/entry_refreshed_540p.png +0 -0
  116. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/decisive/use_last_fleet_540p.png +0 -0
  117. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/error/bad_network_1_540p.png +0 -0
  118. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/error/bad_network_2_540p.png +0 -0
  119. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/error/network_retry_540p.png +0 -0
  120. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/error/remote_login_540p.png +0 -0
  121. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/error/remote_login_confirm_540p.png +0 -0
  122. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/event/event_icon_20260212_720p.png +0 -0
  123. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/reward/collect_540p.png +0 -0
  124. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/reward/collect_all_540p.png +0 -0
  125. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/ui/build.png +0 -0
  126. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/ui/friend.png +0 -0
  127. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/ui/intensify.png +0 -0
  128. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/ui/map.png +0 -0
  129. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/ui/mission.png +0 -0
  130. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/decisive_battle/enemy_spec.yaml +0 -0
  131. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20220928/E-1.yaml +0 -0
  132. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20220928/E-2.yaml +0 -0
  133. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20220928/E-3.yaml +0 -0
  134. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20220928/E-4.yaml +0 -0
  135. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20220928/E-5.yaml +0 -0
  136. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20220928/E-6.yaml +0 -0
  137. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20220928/H-1.yaml +0 -0
  138. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20220928/H-2.yaml +0 -0
  139. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20220928/H-3.yaml +0 -0
  140. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20220928/H-4.yaml +0 -0
  141. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20220928/H-5.yaml +0 -0
  142. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20220928/H-6.yaml +0 -0
  143. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20221118/E-1.yaml +0 -0
  144. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20221118/E-2.yaml +0 -0
  145. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20221118/E-3.yaml +0 -0
  146. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20221118/E-4.yaml +0 -0
  147. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20221118/E-5.yaml +0 -0
  148. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20221118/E-6.yaml +0 -0
  149. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20221118/H-1.yaml +0 -0
  150. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20221118/H-2.yaml +0 -0
  151. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20221118/H-3.yaml +0 -0
  152. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20221118/H-4.yaml +0 -0
  153. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20221118/H-5.yaml +0 -0
  154. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20221118/H-6.yaml +0 -0
  155. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230117/E-1.yaml +0 -0
  156. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230117/E-2.yaml +0 -0
  157. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230117/E-3.yaml +0 -0
  158. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230117/E-4.yaml +0 -0
  159. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230117/E-5.yaml +0 -0
  160. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230117/E-6.yaml +0 -0
  161. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230117/H-1.yaml +0 -0
  162. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230117/H-2.yaml +0 -0
  163. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230117/H-3.yaml +0 -0
  164. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230117/H-4.yaml +0 -0
  165. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230117/H-5.yaml +0 -0
  166. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230117/H-6.yaml +0 -0
  167. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230613/E-1.yaml +0 -0
  168. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230613/E-2.yaml +0 -0
  169. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230613/E-3.yaml +0 -0
  170. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230613/E-4.yaml +0 -0
  171. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230613/E-5.yaml +0 -0
  172. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230613/E-6.yaml +0 -0
  173. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230613/H-1.yaml +0 -0
  174. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230613/H-2.yaml +0 -0
  175. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230613/H-3.yaml +0 -0
  176. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230613/H-4.yaml +0 -0
  177. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230613/H-5.yaml +0 -0
  178. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230613/H-6.yaml +0 -0
  179. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230809/E-1.yaml +0 -0
  180. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230809/E-2.yaml +0 -0
  181. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230809/E-3.yaml +0 -0
  182. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230809/E-4.yaml +0 -0
  183. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230809/E-5.yaml +0 -0
  184. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230809/E-6.yaml +0 -0
  185. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230809/H-1.yaml +0 -0
  186. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230809/H-2.yaml +0 -0
  187. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230809/H-3.yaml +0 -0
  188. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230809/H-4.yaml +0 -0
  189. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230809/H-5.yaml +0 -0
  190. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230809/H-6.yaml +0 -0
  191. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/E-1.yaml +0 -0
  192. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/E-2.yaml +0 -0
  193. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/E-3.yaml +0 -0
  194. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/E-4.yaml +0 -0
  195. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/E-5.yaml +0 -0
  196. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/E-6.yaml +0 -0
  197. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/E-7.yaml +0 -0
  198. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/E-8.yaml +0 -0
  199. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/H-1.yaml +0 -0
  200. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/H-2.yaml +0 -0
  201. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/H-3.yaml +0 -0
  202. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/H-4.yaml +0 -0
  203. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/H-5.yaml +0 -0
  204. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/H-6.yaml +0 -0
  205. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/H-7.yaml +0 -0
  206. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/H-8.yaml +0 -0
  207. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20231215/E-1.yaml +0 -0
  208. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20231215/E-2.yaml +0 -0
  209. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20231215/E-3.yaml +0 -0
  210. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20231215/E-4.yaml +0 -0
  211. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20231215/E-5.yaml +0 -0
  212. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20231215/E-6.yaml +0 -0
  213. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20231215/H-1.yaml +0 -0
  214. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20231215/H-2.yaml +0 -0
  215. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20231215/H-3.yaml +0 -0
  216. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20231215/H-4.yaml +0 -0
  217. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20231215/H-5.yaml +0 -0
  218. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20231215/H-6.yaml +0 -0
  219. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/E-1.yaml +0 -0
  220. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/E-2.yaml +0 -0
  221. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/E-3.yaml +0 -0
  222. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/E-4.yaml +0 -0
  223. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/E-5.yaml +0 -0
  224. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/E-6.yaml +0 -0
  225. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/E-7.yaml +0 -0
  226. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/E-8.yaml +0 -0
  227. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/H-1.yaml +0 -0
  228. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/H-2.yaml +0 -0
  229. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/H-3.yaml +0 -0
  230. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/H-4.yaml +0 -0
  231. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/H-5.yaml +0 -0
  232. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/H-6.yaml +0 -0
  233. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/H-7.yaml +0 -0
  234. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/H-8.yaml +0 -0
  235. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240419/E-1.yaml +0 -0
  236. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240419/E-2.yaml +0 -0
  237. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240419/E-3.yaml +0 -0
  238. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240419/E-4.yaml +0 -0
  239. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240419/E-5.yaml +0 -0
  240. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240419/E-6.yaml +0 -0
  241. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240419/H-1.yaml +0 -0
  242. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240419/H-2.yaml +0 -0
  243. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240419/H-3.yaml +0 -0
  244. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240419/H-4.yaml +0 -0
  245. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240419/H-5.yaml +0 -0
  246. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240419/H-6.yaml +0 -0
  247. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240930/E-1.yaml +0 -0
  248. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240930/E-2.yaml +0 -0
  249. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240930/E-3.yaml +0 -0
  250. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240930/E-4.yaml +0 -0
  251. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240930/E-5.yaml +0 -0
  252. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240930/H-1.yaml +0 -0
  253. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240930/H-2.yaml +0 -0
  254. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240930/H-3.yaml +0 -0
  255. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240930/H-4.yaml +0 -0
  256. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240930/H-5.yaml +0 -0
  257. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20241219/E-1.yaml +0 -0
  258. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20241219/E-2.yaml +0 -0
  259. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20241219/E-3.yaml +0 -0
  260. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20241219/E-4.yaml +0 -0
  261. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20241219/E-5.yaml +0 -0
  262. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20241219/E-6.yaml +0 -0
  263. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20241219/H-1.yaml +0 -0
  264. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20241219/H-2.yaml +0 -0
  265. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20241219/H-3.yaml +0 -0
  266. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20241219/H-4.yaml +0 -0
  267. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20241219/H-5.yaml +0 -0
  268. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20241219/H-6.yaml +0 -0
  269. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250123/E-1.yaml +0 -0
  270. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250123/E-2.yaml +0 -0
  271. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250123/E-3.yaml +0 -0
  272. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250123/E-4.yaml +0 -0
  273. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250123/E-5.yaml +0 -0
  274. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250123/E-6.yaml +0 -0
  275. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250123/H-1.yaml +0 -0
  276. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250123/H-2.yaml +0 -0
  277. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250123/H-3.yaml +0 -0
  278. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250123/H-4.yaml +0 -0
  279. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250123/H-5.yaml +0 -0
  280. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250123/H-6.yaml +0 -0
  281. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250710/E-1.yaml +0 -0
  282. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250710/E-2.yaml +0 -0
  283. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250710/E-3.yaml +0 -0
  284. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250710/E-4.yaml +0 -0
  285. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250710/E-5.yaml +0 -0
  286. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250710/E-6.yaml +0 -0
  287. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250710/H-1.yaml +0 -0
  288. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250710/H-2.yaml +0 -0
  289. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250710/H-3.yaml +0 -0
  290. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250710/H-4.yaml +0 -0
  291. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250710/H-5.yaml +0 -0
  292. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250710/H-6.yaml +0 -0
  293. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250930/E-1.yaml +0 -0
  294. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250930/E-2.yaml +0 -0
  295. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250930/E-3.yaml +0 -0
  296. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250930/E-4.yaml +0 -0
  297. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250930/E-5.yaml +0 -0
  298. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250930/E-6.yaml +0 -0
  299. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250930/H-1.yaml +0 -0
  300. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250930/H-2.yaml +0 -0
  301. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250930/H-3.yaml +0 -0
  302. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250930/H-4.yaml +0 -0
  303. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250930/H-5.yaml +0 -0
  304. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250930/H-6.yaml +0 -0
  305. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260104/E-1.yaml +0 -0
  306. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260104/E-2.yaml +0 -0
  307. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260104/E-3.yaml +0 -0
  308. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260104/E-4.yaml +0 -0
  309. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260104/E-5.yaml +0 -0
  310. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260104/E-6.yaml +0 -0
  311. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260104/H-1.yaml +0 -0
  312. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260104/H-2.yaml +0 -0
  313. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260104/H-3.yaml +0 -0
  314. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260104/H-4.yaml +0 -0
  315. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260104/H-5.yaml +0 -0
  316. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260104/H-6.yaml +0 -0
  317. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260212/E-1.yaml +0 -0
  318. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260212/E-2.yaml +0 -0
  319. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260212/E-3.yaml +0 -0
  320. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260212/E-4.yaml +0 -0
  321. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260212/E-5.yaml +0 -0
  322. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260212/E-6.yaml +0 -0
  323. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260212/H-1.yaml +0 -0
  324. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260212/H-2.yaml +0 -0
  325. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260212/H-3.yaml +0 -0
  326. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260212/H-4.yaml +0 -0
  327. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260212/H-5.yaml +0 -0
  328. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260212/H-6.yaml +0 -0
  329. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/1-1.yaml +0 -0
  330. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/1-2.yaml +0 -0
  331. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/1-3.yaml +0 -0
  332. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/1-4.yaml +0 -0
  333. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/1-5.yaml +0 -0
  334. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/10-1.yaml +0 -0
  335. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/2-1.yaml +0 -0
  336. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/2-2.yaml +0 -0
  337. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/2-3.yaml +0 -0
  338. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/2-4.yaml +0 -0
  339. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/2-5.yaml +0 -0
  340. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/2-6.yaml +0 -0
  341. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/3-1.yaml +0 -0
  342. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/3-2.yaml +0 -0
  343. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/3-3.yaml +0 -0
  344. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/3-4.yaml +0 -0
  345. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/4-1.yaml +0 -0
  346. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/4-2.yaml +0 -0
  347. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/4-3.yaml +0 -0
  348. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/4-4.yaml +0 -0
  349. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/5-1.yaml +0 -0
  350. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/5-2.yaml +0 -0
  351. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/5-3.yaml +0 -0
  352. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/5-4.yaml +0 -0
  353. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/5-5.yaml +0 -0
  354. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/6-1.yaml +0 -0
  355. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/6-2.yaml +0 -0
  356. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/6-3.yaml +0 -0
  357. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/6-4.yaml +0 -0
  358. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/7-1.yaml +0 -0
  359. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/7-2.yaml +0 -0
  360. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/7-3.yaml +0 -0
  361. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/7-4.yaml +0 -0
  362. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/7-5.yaml +0 -0
  363. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/8-1.yaml +0 -0
  364. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/8-2.yaml +0 -0
  365. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/8-3.yaml +0 -0
  366. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/8-4.yaml +0 -0
  367. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/8-5.yaml +0 -0
  368. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/9-1.yaml +0 -0
  369. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/9-2.yaml +0 -0
  370. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/9-3.yaml +0 -0
  371. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/9-4.yaml +0 -0
  372. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/9-5.yaml +0 -0
  373. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/missions.yaml +0 -0
  374. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/event/E5ADE/345/244/234/346/210/230.yaml" +0 -0
  375. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/event/H5ADE/345/244/234/346/210/230.yaml" +0 -0
  376. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/1-1.yaml +0 -0
  377. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/1/345/221/250/345/270/270.yaml" +0 -0
  378. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/2-1/346/215/236/350/203/226/346/254/241.yaml" +0 -0
  379. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/2/345/221/250/345/270/270.yaml" +0 -0
  380. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/3/345/221/250/345/270/270.yaml" +0 -0
  381. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/4/345/221/250/345/270/270.yaml" +0 -0
  382. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/5-2/347/202/270/351/261/274.yaml" +0 -0
  383. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/5/345/221/250/345/270/270.yaml" +0 -0
  384. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/6-15SS.yaml +0 -0
  385. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/6-1/347/202/270/351/261/274/344/270/215/346/211/2235/351/261/274.yaml" +0 -0
  386. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/6-1/347/202/270/351/261/274/344/270/215/346/211/223/350/275/273/346/257/215.yaml" +0 -0
  387. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/6-1/347/211/271/346/256/212/344/273/273/345/212/241..yaml" +0 -0
  388. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/6-1/347/273/203/346/275/234/350/211/207.yaml" +0 -0
  389. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/6-2/347/211/271/346/256/212/344/273/273/345/212/241..yaml" +0 -0
  390. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/6-4D/347/211/271/346/256/212/344/273/273/345/212/241..yaml" +0 -0
  391. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/6-4F/347/211/271/346/256/212/344/273/273/345/212/241..yaml" +0 -0
  392. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/6/345/221/250/345/270/270.yaml" +0 -0
  393. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/7-1/347/211/271/346/256/212/344/273/273/345/212/241..yaml" +0 -0
  394. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/7-2/347/211/271/346/256/212/344/273/273/345/212/241..yaml" +0 -0
  395. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/7-3/347/211/271/346/256/212/344/273/273/345/212/241..yaml" +0 -0
  396. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/7-4/345/215/203/344/274/252.yaml" +0 -0
  397. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/7-4/345/221/250/345/270/270.yaml" +0 -0
  398. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/7-4/347/211/271/346/256/212/344/273/273/345/212/241..yaml" +0 -0
  399. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/7-4/350/203/226/346/254/241.yaml" +0 -0
  400. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/7-5/347/211/271/346/256/212/344/273/273/345/212/241.yaml" +0 -0
  401. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/7/345/221/250/345/270/270.yaml" +0 -0
  402. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/8-1A/345/217/252/347/202/2705/346/275/234/350/211/207.yaml" +0 -0
  403. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/8-2A/345/217/252/347/202/2705/346/275/234/350/211/207.yaml" +0 -0
  404. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/8-2A/347/202/270/351/261/274.yaml" +0 -0
  405. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/8-2B.yaml +0 -0
  406. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/8-2BJ.yaml +0 -0
  407. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/8-2C/347/273/203/351/207/215/345/267/241.yaml" +0 -0
  408. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/8-3CE/347/273/203/351/207/215/345/267/241.yaml" +0 -0
  409. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/8-3C/351/261/274/351/230/237/347/273/203/347/272/247.yaml" +0 -0
  410. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/8-4-6SSweek.yaml +0 -0
  411. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/8-5AI.yaml +0 -0
  412. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/8-5AI/345/217/252/346/211/2231/351/251/261/351/200/220.yaml" +0 -0
  413. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/8/345/221/250/345/270/270.yaml" +0 -0
  414. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/9-1A.yaml +0 -0
  415. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/9-1B.yaml +0 -0
  416. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/9-1BF/347/202/270/351/261/274/345/270/246/346/215/236/350/203/226/346/254/241.yaml" +0 -0
  417. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/9-1B/345/217/252/347/202/2705/346/275/234/350/211/207.yaml" +0 -0
  418. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/9-2ADGHM.yaml +0 -0
  419. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/9-2C/345/217/252/347/202/2704/346/275/234/350/211/207.yaml" +0 -0
  420. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/9-2C/347/202/270/351/261/274.yaml" +0 -0
  421. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/9-2/350/203/226/346/254/24185/345/267/245/347/250/213.yaml" +0 -0
  422. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/9-2/350/203/226/346/254/24185/346/227/240/351/227/250/347/245/236.yaml" +0 -0
  423. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/9-3AD.yaml +0 -0
  424. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/9-46SS.yaml +0 -0
  425. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/9-4/345/221/250/345/270/270.yaml" +0 -0
  426. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/9-5A/345/244/247/350/247/222/345/272/246.yaml" +0 -0
  427. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/9-5B.yaml +0 -0
  428. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/9-5BE.yaml +0 -0
  429. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/9/345/221/250/345/270/270.yaml" +0 -0
  430. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/shipnames.yaml +0 -0
  431. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/emulator/__init__.py +0 -0
  432. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/emulator/controller/__init__.py +0 -0
  433. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/emulator/controller/protocol.py +0 -0
  434. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/emulator/controller/scrcpy.py +0 -0
  435. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/emulator/detector.py +0 -0
  436. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/emulator/os_control/__init__.py +0 -0
  437. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/emulator/os_control/base.py +0 -0
  438. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/emulator/os_control/linux.py +0 -0
  439. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/emulator/os_control/macos.py +0 -0
  440. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/emulator/os_control/windows.py +0 -0
  441. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/image_resources/__init__.py +0 -0
  442. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/image_resources/_lazy.py +0 -0
  443. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/image_resources/combat.py +0 -0
  444. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/image_resources/keys.py +0 -0
  445. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/image_resources/ops.py +0 -0
  446. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/infra/__init__.py +0 -0
  447. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/infra/config.py +0 -0
  448. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/infra/exceptions.py +0 -0
  449. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/infra/file_utils.py +0 -0
  450. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/infra/logger.py +0 -0
  451. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/README.md +0 -0
  452. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/__init__.py +0 -0
  453. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/build.py +0 -0
  454. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/campaign.py +0 -0
  455. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/cook.py +0 -0
  456. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/decisive/__init__.py +0 -0
  457. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/decisive/base.py +0 -0
  458. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/decisive/chapter.py +0 -0
  459. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/decisive/config.py +0 -0
  460. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/decisive/controller.py +0 -0
  461. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/decisive/handlers.py +0 -0
  462. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/decisive/logic.py +0 -0
  463. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/decisive/state.py +0 -0
  464. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/destroy.py +0 -0
  465. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/event_fight.py +0 -0
  466. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/exercise.py +0 -0
  467. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/expedition.py +0 -0
  468. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/navigate.py +0 -0
  469. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/normal_fight.py +0 -0
  470. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/repair.py +0 -0
  471. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/retry_plan.md +0 -0
  472. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/reward.py +0 -0
  473. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/startup.py +0 -0
  474. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/scheduler/__init__.py +0 -0
  475. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/scheduler/launcher.py +0 -0
  476. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/scheduler/scheduler.py +0 -0
  477. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/server/__init__.py +0 -0
  478. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/server/main.py +0 -0
  479. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/server/routes/__init__.py +0 -0
  480. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/server/routes/game.py +0 -0
  481. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/server/routes/health.py +0 -0
  482. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/server/routes/ops.py +0 -0
  483. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/server/routes/system.py +0 -0
  484. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/server/routes/task.py +0 -0
  485. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/server/schemas.py +0 -0
  486. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/server/serializers.py +0 -0
  487. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/server/task_manager.py +0 -0
  488. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/server/ws_manager.py +0 -0
  489. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/README.md +0 -0
  490. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/backyard_page.py +0 -0
  491. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/bath_page/__init__.py +0 -0
  492. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/bath_page/page.py +0 -0
  493. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/bath_page/recognition.py +0 -0
  494. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/bath_page/signatures.py +0 -0
  495. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/battle/__init__.py +0 -0
  496. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/battle/base.py +0 -0
  497. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/battle/blood.py +0 -0
  498. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/battle/constants.py +0 -0
  499. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/battle/detection.py +0 -0
  500. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/battle/fleet_change/__init__.py +0 -0
  501. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/battle/fleet_change/_change.py +0 -0
  502. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/battle/fleet_change/_detect.py +0 -0
  503. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/battle/fleet_change.py +0 -0
  504. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/battle/preparation.py +0 -0
  505. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/battle/repair.py +0 -0
  506. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/battle/supply.py +0 -0
  507. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/build_page.py +0 -0
  508. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/canteen_page.py +0 -0
  509. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/choose_ship_page.py +0 -0
  510. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/decisive/__init__.py +0 -0
  511. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/decisive/battle_page.py +0 -0
  512. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/decisive/fleet_ocr.py +0 -0
  513. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/decisive/map_controller.py +0 -0
  514. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/decisive/overlay.py +0 -0
  515. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/decisive/preparation.py +0 -0
  516. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/event/__init__.py +0 -0
  517. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/event/event_page.py +0 -0
  518. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/friend_page.py +0 -0
  519. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/intensify_page.py +0 -0
  520. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/main_page/__init__.py +0 -0
  521. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/main_page/constants.py +0 -0
  522. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/main_page/controller.py +0 -0
  523. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/main_page/event_nav.py +0 -0
  524. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/main_page/overlays.py +0 -0
  525. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/map/__init__.py +0 -0
  526. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/map/page.py +0 -0
  527. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/map/panels/__init__.py +0 -0
  528. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/map/panels/decisive.py +0 -0
  529. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/map/panels/exercise.py +0 -0
  530. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/map/panels/expedition.py +0 -0
  531. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/mission_page/__init__.py +0 -0
  532. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/mission_page/data.py +0 -0
  533. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/mission_page/page.py +0 -0
  534. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/mission_page/recognition.py +0 -0
  535. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/page.py +0 -0
  536. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/sidebar_page.py +0 -0
  537. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/start_screen_page.py +0 -0
  538. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/tabbed_page.py +0 -0
  539. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/utils/__init__.py +0 -0
  540. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/utils/navigation.py +0 -0
  541. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/vision/__init__.py +0 -0
  542. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/vision/api_dll.py +0 -0
  543. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/vision/image_matcher.py +0 -0
  544. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/vision/image_template.py +0 -0
  545. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/vision/matcher.py +0 -0
  546. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/vision/pixel.py +0 -0
  547. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/vision/roi.py +0 -0
  548. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/ai-issue-analysis-bot.md +0 -0
  549. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/architecture/README.md +0 -0
  550. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/architecture/combat-engine.md +0 -0
  551. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/architecture/context-and-config.md +0 -0
  552. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/architecture/emulator.md +0 -0
  553. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/architecture/infra.md +0 -0
  554. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/architecture/ops.md +0 -0
  555. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/architecture/scheduler-and-server.md +0 -0
  556. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/architecture/ui.md +0 -0
  557. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/architecture/vision.md +0 -0
  558. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/developer/test_pkg.md +0 -0
  559. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/logo.png +0 -0
  560. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/spelling_wordlist.txt +0 -0
  561. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/usage/usage_combat.md +0 -0
  562. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/usage/usage_daily_ops.md +0 -0
  563. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/usage/usage_decisive.md +0 -0
  564. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/usage/usage_quickstart.md +0 -0
  565. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/examples/campaign.py +0 -0
  566. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/examples/change_fleet.py +0 -0
  567. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/examples/decisive.py +0 -0
  568. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/examples/event_fight.py +0 -0
  569. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/examples/exercise.py +0 -0
  570. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/examples/expedition.py +0 -0
  571. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/examples/normal_fight.py +0 -0
  572. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/examples/usersettings.full.yaml +0 -0
  573. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/examples/usersettings.minimal.yaml +0 -0
  574. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/examples/week.py +0 -0
  575. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/__init__.py +0 -0
  576. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/combat/__init__.py +0 -0
  577. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/combat/test_combat.py +0 -0
  578. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/conftest.py +0 -0
  579. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/emulator/__init__.py +0 -0
  580. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/emulator/test_controller.py +0 -0
  581. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/emulator/test_os_control.py +0 -0
  582. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/infra/__init__.py +0 -0
  583. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/infra/test_config.py +0 -0
  584. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/infra/test_exceptions.py +0 -0
  585. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/infra/test_file_utils.py +0 -0
  586. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/__init__.py +0 -0
  587. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/_framework.py +0 -0
  588. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/build.py +0 -0
  589. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/campaign.py +0 -0
  590. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/cook.py +0 -0
  591. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/decisive_battle.py +0 -0
  592. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/destroy.py +0 -0
  593. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/event_fight.py +0 -0
  594. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/exercise.py +0 -0
  595. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/expedition.py +0 -0
  596. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/normal_fight.py +0 -0
  597. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/repair.py +0 -0
  598. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/reward.py +0 -0
  599. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/scheduler.py +0 -0
  600. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/startup.py +0 -0
  601. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/README.md +0 -0
  602. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/__init__.py +0 -0
  603. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/_framework.py +0 -0
  604. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/backyard_page/__init__.py +0 -0
  605. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/backyard_page/e2e.py +0 -0
  606. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/bath_page/__init__.py +0 -0
  607. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/bath_page/e2e.py +0 -0
  608. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/battle_preparation/__init__.py +0 -0
  609. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/battle_preparation/e2e.py +0 -0
  610. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/battle_preparation/test_unit.py +0 -0
  611. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/build_page/__init__.py +0 -0
  612. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/build_page/e2e.py +0 -0
  613. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/canteen_page/__init__.py +0 -0
  614. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/canteen_page/e2e.py +0 -0
  615. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/decisive_battle_page/__init__.py +0 -0
  616. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/decisive_battle_page/e2e.py +0 -0
  617. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/event_page/__init__.py +0 -0
  618. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/event_page/e2e.py +0 -0
  619. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/friend_page/__init__.py +0 -0
  620. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/friend_page/e2e.py +0 -0
  621. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/intensify_page/__init__.py +0 -0
  622. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/intensify_page/e2e.py +0 -0
  623. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/main_page/__init__.py +0 -0
  624. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/main_page/e2e.py +0 -0
  625. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/map_page/__init__.py +0 -0
  626. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/map_page/e2e.py +0 -0
  627. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/map_page/test_unit.py +0 -0
  628. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/mission_page/__init__.py +0 -0
  629. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/mission_page/e2e.py +0 -0
  630. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/page/__init__.py +0 -0
  631. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/page/test_unit.py +0 -0
  632. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/run_all_e2e.ps1 +0 -0
  633. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/run_all_e2e.py +0 -0
  634. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/sidebar_page/__init__.py +0 -0
  635. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/sidebar_page/e2e.py +0 -0
  636. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/vision/__init__.py +0 -0
  637. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/vision/_helpers.py +0 -0
  638. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/vision/test_image_checker.py +0 -0
  639. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/vision/test_image_template.py +0 -0
  640. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/vision/test_matcher.py +0 -0
  641. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/vision/test_ocr.py +0 -0
  642. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/vision/test_roi.py +0 -0
  643. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/tools/VisualIdentity.md +0 -0
  644. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/tools/__init__.py +0 -0
  645. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/tools/benchmark_emulator.py +0 -0
  646. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/tools/debug_screenshot.py +0 -0
  647. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/tools/pixel_marker.py +0 -0
  648. {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/usersettings.yaml +0 -0
@@ -5,7 +5,6 @@ on:
5
5
  push:
6
6
  branches: [main]
7
7
  pull_request:
8
- branches: [main]
9
8
 
10
9
  permissions:
11
10
  contents: read
@@ -0,0 +1,31 @@
1
+ # Pytest — 运行全部单元测试并生成覆盖率报告
2
+ name: Pytest
3
+
4
+ on:
5
+ push:
6
+ branches: [main]
7
+ pull_request:
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ jobs:
13
+ test:
14
+ runs-on: ubuntu-latest
15
+ steps:
16
+ - uses: actions/checkout@v6
17
+ - uses: astral-sh/setup-uv@v8.1.0
18
+ with:
19
+ enable-cache: true
20
+ - name: Run tests with coverage
21
+ run: uv run pytest -n auto --cov=autowsgr --cov-report=xml --cov-report=term-missing --junitxml=junit.xml
22
+ - name: Upload coverage to Codecov
23
+ uses: codecov/codecov-action@v6
24
+ with:
25
+ token: ${{ secrets.CODECOV_TOKEN }}
26
+ slug: OpenWSGR/AutoWSGR
27
+ - name: Upload test results to Codecov
28
+ if: ${{ !cancelled() }}
29
+ uses: codecov/test-results-action@v1
30
+ with:
31
+ token: ${{ secrets.CODECOV_TOKEN }}
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: autowsgr
3
- Version: 2.2.0.post1
3
+ Version: 2.2.2
4
4
  Summary: Auto Warship Girls Framework.
5
5
  Project-URL: Documentation, https://docs-autowsgr.notion.site
6
6
  Project-URL: Repository, https://github.com/OpenWSGR/AutoWSGR
@@ -20,6 +20,7 @@ Requires-Dist: keyboard
20
20
  Requires-Dist: loguru
21
21
  Requires-Dist: opencv-python-headless
22
22
  Requires-Dist: pydantic<3.0,>=2.0
23
+ Requires-Dist: retry>=0.9.2
23
24
  Requires-Dist: rich
24
25
  Requires-Dist: uvicorn[standard]>=0.23.0
25
26
  Requires-Dist: websockets>=11.0
@@ -31,7 +32,7 @@ Description-Content-Type: text/markdown
31
32
 
32
33
  ## 项目简介
33
34
 
34
- ![Repo Size](https://img.shields.io/github/repo-size/OpenWSGR/AutoWSGR) ![Pypi Version](https://img.shields.io/pypi/v/autowsgr) ![Pypi Downloads](https://img.shields.io/pypi/dm/autowsgr) ![Github Issues](https://img.shields.io/github/issues/OpenWSGR/AutoWSGR) ![Github Last Commit](https://img.shields.io/github/last-commit/OpenWSGR/AutoWSGR) [![License](https://img.shields.io/badge/license-OpenWSGR%20Strict%20NC-red.svg)](LICENSE)
35
+ ![Repo Size](https://img.shields.io/github/repo-size/OpenWSGR/AutoWSGR) ![Pypi Version](https://img.shields.io/pypi/v/autowsgr) ![Pypi Downloads](https://img.shields.io/pypi/dm/autowsgr) ![Github Issues](https://img.shields.io/github/issues/OpenWSGR/AutoWSGR) ![Github Last Commit](https://img.shields.io/github/last-commit/OpenWSGR/AutoWSGR) [![Codecov](https://codecov.io/gh/OpenWSGR/AutoWSGR/graph/badge.svg)](https://codecov.io/gh/OpenWSGR/AutoWSGR) [![License](https://img.shields.io/badge/license-OpenWSGR%20Strict%20NC-red.svg)](LICENSE)
35
36
 
36
37
  用 Python 与 C++ 实现的 战舰少女R 的自动化流水线 & 数据统计一体化脚本, 提供 `WSGR` 游戏级别接口以及部分图像和原子操作接口。
37
38
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  ## 项目简介
6
6
 
7
- ![Repo Size](https://img.shields.io/github/repo-size/OpenWSGR/AutoWSGR) ![Pypi Version](https://img.shields.io/pypi/v/autowsgr) ![Pypi Downloads](https://img.shields.io/pypi/dm/autowsgr) ![Github Issues](https://img.shields.io/github/issues/OpenWSGR/AutoWSGR) ![Github Last Commit](https://img.shields.io/github/last-commit/OpenWSGR/AutoWSGR) [![License](https://img.shields.io/badge/license-OpenWSGR%20Strict%20NC-red.svg)](LICENSE)
7
+ ![Repo Size](https://img.shields.io/github/repo-size/OpenWSGR/AutoWSGR) ![Pypi Version](https://img.shields.io/pypi/v/autowsgr) ![Pypi Downloads](https://img.shields.io/pypi/dm/autowsgr) ![Github Issues](https://img.shields.io/github/issues/OpenWSGR/AutoWSGR) ![Github Last Commit](https://img.shields.io/github/last-commit/OpenWSGR/AutoWSGR) [![Codecov](https://codecov.io/gh/OpenWSGR/AutoWSGR/graph/badge.svg)](https://codecov.io/gh/OpenWSGR/AutoWSGR) [![License](https://img.shields.io/badge/license-OpenWSGR%20Strict%20NC-red.svg)](LICENSE)
8
8
 
9
9
  用 Python 与 C++ 实现的 战舰少女R 的自动化流水线 & 数据统计一体化脚本, 提供 `WSGR` 游戏级别接口以及部分图像和原子操作接口。
10
10
 
@@ -1,3 +1,3 @@
1
1
  """AutoWSGR - 战舰少女R 自动化框架(v2)"""
2
2
 
3
- __version__ = '2.2.0.post1'
3
+ __version__ = '2.2.2'
@@ -424,6 +424,8 @@ class PageName(StrEnum):
424
424
  """好友页面"""
425
425
  DECISIVE_BATTLE = '决战页面'
426
426
  """决战页面"""
427
+ CHOOSE_SHIP = '选择舰船页面'
428
+ """选择舰船页面"""
427
429
 
428
430
  EVENT_MAP = '活动页面'
429
431
  """活动地图页面"""
@@ -125,6 +125,7 @@ register_page(PageName.BUILD, BuildPage.is_current_page)
125
125
  register_page(PageName.INTENSIFY, IntensifyPage.is_current_page)
126
126
  register_page(PageName.FRIEND, FriendPage.is_current_page)
127
127
  register_page(PageName.DECISIVE_BATTLE, DecisiveBattlePage.is_current_page)
128
+ register_page(PageName.CHOOSE_SHIP, ChooseShipPage.is_current_page)
128
129
  register_page(PageName.EVENT_MAP, BaseEventPage.is_current_page)
129
130
 
130
131
  __all__ = [
@@ -20,10 +20,6 @@ from autowsgr.ui.map.data import (
20
20
  EXPEDITION_TOLERANCE,
21
21
  PANEL_LIST,
22
22
  PANEL_TO_INDEX,
23
- SIDEBAR_BRIGHTNESS_THRESHOLD,
24
- SIDEBAR_SCAN_STEP,
25
- SIDEBAR_SCAN_X,
26
- SIDEBAR_SCAN_Y_RANGE,
27
23
  TITLE_CROP_REGION,
28
24
  MapIdentity,
29
25
  MapPanel,
@@ -107,29 +103,9 @@ class BaseMapPage:
107
103
  # ═══════════════════════════════════════════════════════════════════════
108
104
 
109
105
  @staticmethod
110
- def find_selected_chapter_y(screen: np.ndarray) -> float | None:
106
+ def find_selected_chapter_y() -> float | None:
111
107
  """扫描侧边栏,定位选中章节的 y 坐标。"""
112
- y_min, y_max = SIDEBAR_SCAN_Y_RANGE
113
- bright_ys: list[float] = []
114
-
115
- y = y_min
116
- while y <= y_max:
117
- c = PixelChecker.get_pixel(screen, SIDEBAR_SCAN_X, y)
118
- brightness = c.r + c.g + c.b
119
- if brightness >= SIDEBAR_BRIGHTNESS_THRESHOLD:
120
- bright_ys.append(y)
121
- y += SIDEBAR_SCAN_STEP
122
-
123
- if not bright_ys:
124
- return None
125
-
126
- center = sum(bright_ys) / len(bright_ys)
127
- _log.debug(
128
- '[UI] 侧边栏选中章节: y_center={:.3f} ({}个亮点)',
129
- center,
130
- len(bright_ys),
131
- )
132
- return center
108
+ return 0.556
133
109
 
134
110
  # ═══════════════════════════════════════════════════════════════════════
135
111
  # 状态查询 — 地图 OCR
@@ -143,7 +119,7 @@ class BaseMapPage:
143
119
  """通过 OCR 识别当前地图。"""
144
120
  x1, y1, x2, y2 = TITLE_CROP_REGION
145
121
  cropped = PixelChecker.crop(screen, x1, y1, x2, y2)
146
- result = ocr.recognize_single(cropped)
122
+ result = ocr.recognize_maxlen(cropped)
147
123
  if not result.text:
148
124
  _log.debug('[UI] 地图标题 OCR 无结果')
149
125
  return None
@@ -99,7 +99,7 @@ MAP_DATABASE: dict[tuple[int, int], str] = {
99
99
  (9, 3): '南入海口海域',
100
100
  (9, 4): '河口外海',
101
101
  (9, 5): '南大洋群岛',
102
- # 第十章:极地海峡
102
+ # 第十章:极地水域
103
103
  (10, 1): '极地海峡',
104
104
  }
105
105
  """已知地图 (章节, 关卡号) → 名称。"""
@@ -315,6 +315,9 @@ CAMPAIGN_POSITIONS: dict[int, tuple[float, float]] = {
315
315
  CLICK_DIFFICULTY: tuple[float, float] = (0.800, 0.130)
316
316
  """切换难度。"""
317
317
 
318
+ CAMPAIGN_REMAIN_CROP: tuple[float, float, float, float] = (0.08, 0.82, 0.25, 0.92)
319
+ """战役剩余次数 OCR 裁剪区域 (第一列战役的底部文本区)。"""
320
+
318
321
 
319
322
  # ── 出征地图节点切换 ──
320
323
 
@@ -2,6 +2,7 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
+ import re
5
6
  import time
6
7
  from dataclasses import dataclass
7
8
  from typing import TYPE_CHECKING
@@ -11,6 +12,7 @@ from autowsgr.types import PageName
11
12
  from autowsgr.ui.map.base import BaseMapPage
12
13
  from autowsgr.ui.map.data import (
13
14
  CAMPAIGN_POSITIONS,
15
+ CAMPAIGN_REMAIN_CROP,
14
16
  CLICK_DIFFICULTY,
15
17
  DIFFICULTY_EASY_COLOR,
16
18
  DIFFICULTY_HARD_COLOR,
@@ -38,6 +40,36 @@ class CampaignPanelMixin(BaseMapPage):
38
40
 
39
41
  # ── 查询 ─────────────────────────────────────────────────────────────
40
42
 
43
+ def get_campaign_remains(self) -> tuple[int, int] | None:
44
+ """获取战役剩余次数。
45
+
46
+ Returns
47
+ -------
48
+ tuple[int, int] | None
49
+ 返回 (剩余次数, 总次数),如 (0, 8)。如果识别失败返回 None。
50
+ """
51
+ self.ensure_panel(MapPanel.BATTLE)
52
+ time.sleep(0.5)
53
+ screen = self._ctrl.screenshot()
54
+ img = PixelChecker.crop(screen, *CAMPAIGN_REMAIN_CROP)
55
+
56
+ ocr = self._ocr
57
+ if ocr is None:
58
+ _log.warning('[UI] 无法获取战役次数: 未提供 OCR 引擎')
59
+ return None
60
+
61
+ results = ocr.recognize(img)
62
+ text = ''.join([r.text for r in results]).replace(' ', '')
63
+ m = re.search(r'(\d+)[/|](\d+)', text)
64
+ if m:
65
+ remains = int(m.group(1))
66
+ total = int(m.group(2))
67
+ _log.info(f'[UI] 战役次数识别成功: {remains}/{total}')
68
+ return remains, total
69
+
70
+ _log.warning(f'[UI] 战役次数识别失败: OCR 结果未匹配 ({text})')
71
+ return None
72
+
41
73
  def recognize_difficulty(self) -> str | None:
42
74
  """通过检测难度按钮颜色识别当前难度。
43
75
 
@@ -20,7 +20,6 @@ from autowsgr.ui.map.data import (
20
20
  LOOT_COUNT_CROP,
21
21
  SHIP_COUNT_CROP,
22
22
  SIDEBAR_CLICK_X,
23
- SIDEBAR_SCAN_Y_RANGE,
24
23
  TOTAL_CHAPTERS,
25
24
  MapPanel,
26
25
  )
@@ -149,39 +148,26 @@ class SortiePanelMixin(BaseMapPage):
149
148
  # 章节 / 地图导航
150
149
  # ═══════════════════════════════════════════════════════════════════════
151
150
 
152
- def click_prev_chapter(self, screen: np.ndarray | None = None) -> bool:
153
- """点击侧边栏上方章节 (前一章)。"""
154
- if screen is None:
155
- screen = self._ctrl.screenshot()
156
- sel_y = self.find_selected_chapter_y(screen)
157
- if sel_y is None:
158
- _log.warning('[UI] 侧边栏未找到选中章节,无法切换')
159
- return False
160
- target_y = sel_y - CHAPTER_SPACING
161
- if target_y < SIDEBAR_SCAN_Y_RANGE[0]:
162
- _log.warning('[UI] 已在最前章节,无法继续向前')
163
- return False
164
- _log.info('[UI] 地图页面 -> 上一章 (y={:.3f})', target_y)
165
- self._ctrl.click(SIDEBAR_CLICK_X, target_y)
166
- return True
151
+ def click_chapter(self, num: int):
152
+ """点击侧边栏章节
167
153
 
168
- def click_next_chapter(self, screen: np.ndarray | None = None) -> bool:
169
- """点击侧边栏下方章节 (后一章)。"""
170
- if screen is None:
171
- screen = self._ctrl.screenshot()
172
- sel_y = self.find_selected_chapter_y(screen)
173
- if sel_y is None:
174
- _log.warning('[UI] 侧边栏未找到选中章节,无法切换')
175
- return False
176
- target_y = sel_y + CHAPTER_SPACING
177
- if target_y > SIDEBAR_SCAN_Y_RANGE[1]:
178
- _log.warning('[UI] 已在最后章节,无法继续向后')
179
- return False
180
- _log.info('[UI] 地图页面 -> 下一章 (y={:.3f})', target_y)
154
+ Parameters
155
+ ----------
156
+ num:
157
+ 跳转数量, 正数为向下跳转, 负数为向上跳转
158
+ 允许输入[-3, 3]
159
+ """
160
+ if not -3 <= num <= 3:
161
+ raise ValueError(f'跳转数量必须为 -3 到 3, 收到: {num}')
162
+ if num == 0:
163
+ return
164
+ sel_y = self.find_selected_chapter_y()
165
+ target_y = sel_y + num * CHAPTER_SPACING
166
+ _log.info('[UI] 地图页面 -> 跳转章节 {} (y={:.3f})', num, target_y)
181
167
  self._ctrl.click(SIDEBAR_CLICK_X, target_y)
182
- return True
168
+ return
183
169
 
184
- def navigate_to_chapter(self, target: int) -> int | None: # noqa: C901, PLR0912, PLR0915
170
+ def navigate_to_chapter(self, target: int) -> int | None:
185
171
  """导航到指定章节 (通过 OCR 识别当前位置并批量点击)。
186
172
 
187
173
  远距离章节切换时采用批量点击 + 充分等待的策略,
@@ -261,30 +247,14 @@ class SortiePanelMixin(BaseMapPage):
261
247
  continue
262
248
 
263
249
  delta = target - current
264
- direction = -1 if delta < 0 else 1
265
- steps = abs(delta)
266
-
267
- # 远距离批量点击,近距离逐步点击
268
- if steps > 2:
269
- batch = min(steps, 4)
270
- _log.info('[UI] 章节导航: 批量点击 {} 章', batch)
271
- for _ in range(batch):
272
- ok = self.click_prev_chapter() if direction < 0 else self.click_next_chapter()
273
- if not ok:
274
- _log.warning('[UI] 章节导航: 点击失败,终止')
275
- return None
276
- time.sleep(0.3)
277
- # 批量点击后充分等待动画完全结束,避免 OCR 抖动
278
- time.sleep(1.0)
279
- else:
280
- if direction < 0:
281
- ok = self.click_prev_chapter(screen)
282
- else:
283
- ok = self.click_next_chapter(screen)
284
- if not ok:
285
- _log.warning('[UI] 章节导航: 点击失败,终止')
286
- return None
287
- time.sleep(CHAPTER_NAV_DELAY)
250
+ direction = 1 if delta > 0 else -1
251
+ remaining = abs(delta)
252
+ while remaining > 0:
253
+ step = min(remaining, 3) * direction
254
+ self.click_chapter(step)
255
+ remaining -= abs(step)
256
+ _log.info(f'[UI] 章节导航: 跳转{step}章, 剩余{remaining}章')
257
+ time.sleep(CHAPTER_NAV_DELAY * abs(step))
288
258
 
289
259
  _log.warning(
290
260
  '[UI] 章节导航: 超过最大尝试次数 ({}), 目标第 {} 章',
@@ -120,6 +120,11 @@ def _battle_prep_to_map(ctx: GameContext) -> None:
120
120
  BattlePreparationPage(ctx).go_back()
121
121
 
122
122
 
123
+ def _choose_ship_to_battle_prep(ctx: GameContext) -> None:
124
+ # 选船页面的返回按钮和出征准备页面位置一致
125
+ ctx.ctrl.click(0.022, 0.058)
126
+
127
+
123
128
  def _backyard_to_bath(ctx: GameContext) -> None:
124
129
  from autowsgr.ui.backyard_page import BackyardPage, BackyardTarget
125
130
 
@@ -214,8 +219,11 @@ NAV_GRAPH: list[NavEdge] = [
214
219
  NavEdge(PageName.SIDEBAR, PageName.MAIN, _sidebar_to_main, '侧边栏 → 主页面'),
215
220
  # ── 地图 → 子页面 ──
216
221
  NavEdge(PageName.MAP, PageName.DECISIVE_BATTLE, _map_to_decisive, '地图 → 决战'),
217
- # ── 出征准备 → 地图 ──
222
+ # ── 出征准备 ↔ 选船 ──
218
223
  NavEdge(PageName.BATTLE_PREP, PageName.MAP, _battle_prep_to_map, '出征准备 → 地图'),
224
+ NavEdge(
225
+ PageName.CHOOSE_SHIP, PageName.BATTLE_PREP, _choose_ship_to_battle_prep, '选船 → 出征准备'
226
+ ),
219
227
  # ── 后院 ↔ 子页面 ──
220
228
  NavEdge(PageName.BACKYARD, PageName.BATH, _backyard_to_bath, '后院 → 浴室'),
221
229
  NavEdge(PageName.BACKYARD, PageName.CANTEEN, _backyard_to_canteen, '后院 → 食堂'),
@@ -35,7 +35,7 @@ _LEVEL_PATTERN = re.compile(r'[Ll][Vv]\.?\s*([0-9ILilOo]{1,6})')
35
35
  _LEVEL_NOISY_PATTERN = re.compile(r'(?:[LlIi1O0][VvYy])[\.:]?\s*([0-9ILilOo]{1,6})')
36
36
  _MAX_LEVEL_VALUE = 200
37
37
  _MAX_LEVEL_NOISE_CHARS = 1
38
- _MAX_NOISY_LEVEL_HITS_BEFORE_RETRY = 1
38
+ _MAX_NOISY_LEVEL_HITS_BEFORE_RETRY = 5
39
39
 
40
40
 
41
41
  class LevelOCRRetryNeededError(RuntimeError):
@@ -186,6 +186,24 @@ class OCREngine(ABC):
186
186
  _log_fn("[OCR] recognize_single: '{}' (conf={:.2f})", best.text, best.confidence)
187
187
  return best
188
188
 
189
+ def recognize_maxlen(
190
+ self,
191
+ image: np.ndarray,
192
+ allowlist: str = '',
193
+ ) -> OCRResult:
194
+ """识别单个文本区域,返回置信度最高的结果。
195
+
196
+ 无结果时返回空文本、零置信度的 OCRResult。
197
+ """
198
+ results = self.recognize(image, allowlist)
199
+ _log_fn = _log.debug if self.verbose else _log.trace
200
+ if not results:
201
+ _log_fn('[OCR] recognize_maxlen: 无结果')
202
+ return OCRResult(text='', confidence=0.0)
203
+ best = max(results, key=lambda r: len(r.text))
204
+ _log_fn("[OCR] recognize_maxlen: '{}' (conf={:.2f})", best.text, best.confidence)
205
+ return best
206
+
189
207
  def recognize_number(
190
208
  self,
191
209
  image: np.ndarray,
@@ -27,6 +27,7 @@ dependencies = [
27
27
  "fastapi>=0.100.0",
28
28
  "uvicorn[standard]>=0.23.0",
29
29
  "websockets>=11.0",
30
+ "retry>=0.9.2",
30
31
  ]
31
32
 
32
33
  [dependency-groups]
@@ -36,6 +37,7 @@ dev = [
36
37
  "pytest-cov",
37
38
  "pytest-xdist",
38
39
  "requests>=2.32.5",
40
+ "beautifulsoup4",
39
41
  ]
40
42
 
41
43
  [build-system]
@@ -0,0 +1,46 @@
1
+ {
2
+ "$schema": "https://docs.renovatebot.com/renovate-schema.json",
3
+ "extends": ["config:recommended"],
4
+ "rangeStrategy": "replace",
5
+ "lockFileMaintenance": {
6
+ "enabled": true,
7
+ "automerge": true
8
+ },
9
+ "automerge": false,
10
+ "automergeType": "pr",
11
+ "platformAutomerge": true,
12
+ "rebaseWhen": "behind-base-branch",
13
+ "internalChecksFilter": "strict",
14
+ "git-submodules": {
15
+ "enabled": true
16
+ },
17
+ "packageRules": [
18
+ {
19
+ "description": "Automerge dev dependency minor and patch updates",
20
+ "matchDepTypes": ["dev", "dependency-groups.dev"],
21
+ "matchUpdateTypes": ["minor", "patch"],
22
+ "automerge": true
23
+ },
24
+ {
25
+ "description": "Automerge lock file maintenance",
26
+ "matchUpdateTypes": ["lockFileMaintenance"],
27
+ "automerge": true
28
+ },
29
+ {
30
+ "description": "Group minor and patch production dependencies",
31
+ "matchUpdateTypes": ["minor", "patch"],
32
+ "groupName": "dependencies (minor and patch)",
33
+ "groupSlug": "dependencies-minor-patch"
34
+ },
35
+ {
36
+ "description": "Do not automerge 0.x versions (can have breaking changes)",
37
+ "matchCurrentVersion": "/^0\\./",
38
+ "automerge": false
39
+ },
40
+ {
41
+ "description": "Disable Python runtime version updates",
42
+ "matchPackageNames": ["python", "python3", "cpython", "requires-python"],
43
+ "enabled": false
44
+ }
45
+ ]
46
+ }
@@ -28,6 +28,9 @@ import shutil
28
28
  import sys
29
29
  from pathlib import Path
30
30
 
31
+ import requests
32
+ from bs4 import BeautifulSoup
33
+
31
34
 
32
35
  # ── 项目根路径 ───────────────────────────────────────────────────────────────
33
36
  _ROOT = Path(__file__).resolve().parent.parent
@@ -74,11 +77,6 @@ Other: # 战例
74
77
 
75
78
  def _fetch_html(url: str, proxy: str | None, timeout: int) -> str:
76
79
  """下载页面 HTML。"""
77
- try:
78
- import requests
79
- except ImportError as exc:
80
- raise SystemExit('缺少依赖: requests\n请运行: pip install requests') from exc
81
-
82
80
  proxies = {'http': proxy, 'https': proxy} if proxy else None
83
81
  headers = {
84
82
  'User-Agent': (
@@ -124,15 +122,6 @@ def _parse_ships(html: str) -> list[tuple[str, str]]:
124
122
  return pairs
125
123
 
126
124
  # ── 方案 B:BeautifulSoup ────────────────────────────────────────────────
127
- try:
128
- from bs4 import BeautifulSoup
129
- except ImportError:
130
- raise SystemExit(
131
- '正则未能匹配,且缺少 bs4。\n'
132
- '请运行: pip install requests beautifulsoup4\n'
133
- '或启用代理后重新尝试。'
134
- ) from None
135
-
136
125
  soup = BeautifulSoup(html, 'html.parser')
137
126
  pairs: list[tuple[str, str]] = []
138
127