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.
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.github/workflows/lint.yml +0 -1
- autowsgr-2.2.2/.github/workflows/pytest.yml +31 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/PKG-INFO +3 -2
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/README.md +1 -1
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/__init__.py +1 -1
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/types.py +2 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/__init__.py +1 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/map/base.py +3 -27
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/map/data.py +4 -1
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/map/panels/campaign.py +32 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/map/panels/sortie.py +25 -55
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/navigation.py +9 -1
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/utils/ship_list.py +1 -1
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/vision/ocr.py +18 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/pyproject.toml +2 -0
- autowsgr-2.2.2/renovate.json +46 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/tools/update_shipnames.py +3 -14
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/uv.lock +254 -203
- autowsgr-2.2.0.post1/.github/workflows/pytest.yml +0 -22
- autowsgr-2.2.0.post1/renovate.json +0 -31
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.agents/skills/emulator-debug/SKILL.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.agents/skills/generic-issue-log-analysis/SKILL.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.agents/skills/release-backend/SKILL.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.gitattributes +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.github/CONTRIBUTING.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.github/ISSUE_TEMPLATE/enhancement_suggestion.yml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.github/workflows/ai-issue-analysis.yml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.github/workflows/lunar.yml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.github/workflows/release.yml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.github/workflows/sync-upstream.yml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.gitignore +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/.pre-commit-config.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/AGENTS.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/CLAUDE.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/LICENSE +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/combat/README.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/combat/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/combat/actions.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/combat/engine.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/combat/handlers.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/combat/history.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/combat/node_tracker.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/combat/plan.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/combat/recognition.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/combat/recognizer.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/combat/rules.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/combat/state.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/constants/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/constants/shipnames.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/context/README.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/context/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/context/build.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/context/equipment.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/context/expedition.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/context/fleet.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/context/game_context.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/context/resources.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/context/ship.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/bin/scrcpy-server.jar +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/build/equip_complete_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/build/equip_fast_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/build/equip_full_depot_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/build/equip_start_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/build/resource_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/build/ship_complete_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/build/ship_fast_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/build/ship_full_depot_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/build/ship_start_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/choose_ship/tab_1_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/choose_ship/tab_2_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/choose_ship/tab_3_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/choose_ship/tab_4_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/battle_times_exceed_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/bypass_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/end_battle_page_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/end_exercise_page_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/end_map_page_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/fight_condition_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/fight_period_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/flagship_damage_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/formation_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/get_item_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/get_ship_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/missile_animation_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/missile_support_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/mvp_badge_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/night_battle_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/proceed_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/result/a_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/result/b_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/result/c_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/result/d_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/result/loot_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/result/s_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/result/ss_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/result_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/result_page_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/ship_icon_1_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/ship_icon_2_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/combat/spot_enemy_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/common/README.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/common/confirm_1_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/common/confirm_2_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/common/confirm_3_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/common/confirm_4_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/common/confirm_5_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/cook/cook_button_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/cook/have_cook_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/cook/no_times_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/decisive/entry_cant_fight_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/decisive/entry_challenging_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/decisive/entry_refresh_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/decisive/entry_refreshed_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/decisive/use_last_fleet_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/error/bad_network_1_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/error/bad_network_2_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/error/network_retry_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/error/remote_login_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/error/remote_login_confirm_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/event/event_icon_20260212_720p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/reward/collect_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/reward/collect_all_540p.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/ui/build.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/ui/friend.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/ui/intensify.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/ui/map.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/images/ui/mission.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/decisive_battle/enemy_spec.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20220928/E-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20220928/E-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20220928/E-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20220928/E-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20220928/E-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20220928/E-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20220928/H-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20220928/H-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20220928/H-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20220928/H-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20220928/H-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20220928/H-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20221118/E-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20221118/E-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20221118/E-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20221118/E-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20221118/E-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20221118/E-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20221118/H-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20221118/H-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20221118/H-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20221118/H-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20221118/H-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20221118/H-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230117/E-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230117/E-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230117/E-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230117/E-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230117/E-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230117/E-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230117/H-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230117/H-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230117/H-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230117/H-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230117/H-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230117/H-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230613/E-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230613/E-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230613/E-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230613/E-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230613/E-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230613/E-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230613/H-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230613/H-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230613/H-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230613/H-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230613/H-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230613/H-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230809/E-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230809/E-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230809/E-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230809/E-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230809/E-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230809/E-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230809/H-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230809/H-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230809/H-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230809/H-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230809/H-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230809/H-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/E-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/E-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/E-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/E-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/E-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/E-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/E-7.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/E-8.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/H-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/H-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/H-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/H-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/H-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/H-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/H-7.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20230927/H-8.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20231215/E-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20231215/E-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20231215/E-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20231215/E-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20231215/E-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20231215/E-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20231215/H-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20231215/H-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20231215/H-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20231215/H-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20231215/H-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20231215/H-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/E-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/E-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/E-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/E-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/E-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/E-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/E-7.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/E-8.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/H-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/H-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/H-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/H-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/H-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/H-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/H-7.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240206/H-8.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240419/E-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240419/E-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240419/E-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240419/E-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240419/E-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240419/E-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240419/H-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240419/H-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240419/H-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240419/H-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240419/H-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240419/H-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240930/E-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240930/E-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240930/E-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240930/E-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240930/E-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240930/H-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240930/H-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240930/H-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240930/H-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20240930/H-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20241219/E-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20241219/E-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20241219/E-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20241219/E-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20241219/E-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20241219/E-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20241219/H-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20241219/H-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20241219/H-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20241219/H-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20241219/H-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20241219/H-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250123/E-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250123/E-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250123/E-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250123/E-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250123/E-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250123/E-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250123/H-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250123/H-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250123/H-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250123/H-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250123/H-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250123/H-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250710/E-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250710/E-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250710/E-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250710/E-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250710/E-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250710/E-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250710/H-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250710/H-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250710/H-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250710/H-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250710/H-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250710/H-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250930/E-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250930/E-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250930/E-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250930/E-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250930/E-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250930/E-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250930/H-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250930/H-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250930/H-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250930/H-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250930/H-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20250930/H-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260104/E-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260104/E-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260104/E-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260104/E-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260104/E-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260104/E-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260104/H-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260104/H-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260104/H-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260104/H-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260104/H-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260104/H-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260212/E-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260212/E-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260212/E-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260212/E-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260212/E-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260212/E-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260212/H-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260212/H-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260212/H-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260212/H-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260212/H-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/event/20260212/H-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/1-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/1-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/1-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/1-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/1-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/10-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/2-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/2-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/2-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/2-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/2-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/2-6.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/3-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/3-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/3-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/3-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/4-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/4-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/4-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/4-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/5-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/5-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/5-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/5-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/5-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/6-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/6-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/6-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/6-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/7-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/7-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/7-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/7-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/7-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/8-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/8-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/8-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/8-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/8-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/9-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/9-2.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/9-3.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/9-4.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/map/normal/9-5.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/missions.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/event/E5ADE/345/244/234/346/210/230.yaml" +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/event/H5ADE/345/244/234/346/210/230.yaml" +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/1-1.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/1/345/221/250/345/270/270.yaml" +0 -0
- {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
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/2/345/221/250/345/270/270.yaml" +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/3/345/221/250/345/270/270.yaml" +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/4/345/221/250/345/270/270.yaml" +0 -0
- {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
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/5/345/221/250/345/270/270.yaml" +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/6-15SS.yaml +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/6/345/221/250/345/270/270.yaml" +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/7/345/221/250/345/270/270.yaml" +0 -0
- {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
- {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
- {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
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/8-2B.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/8-2BJ.yaml +0 -0
- {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
- {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
- {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
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/8-4-6SSweek.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/8-5AI.yaml +0 -0
- {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
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/8/345/221/250/345/270/270.yaml" +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/9-1A.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/9-1B.yaml +0 -0
- {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
- {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
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/9-2ADGHM.yaml +0 -0
- {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
- {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
- {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
- {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
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/9-3AD.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/9-46SS.yaml +0 -0
- {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
- {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
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/9-5B.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/9-5BE.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/plan/normal_fight/9/345/221/250/345/270/270.yaml" +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/data/shipnames.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/emulator/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/emulator/controller/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/emulator/controller/protocol.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/emulator/controller/scrcpy.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/emulator/detector.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/emulator/os_control/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/emulator/os_control/base.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/emulator/os_control/linux.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/emulator/os_control/macos.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/emulator/os_control/windows.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/image_resources/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/image_resources/_lazy.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/image_resources/combat.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/image_resources/keys.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/image_resources/ops.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/infra/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/infra/config.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/infra/exceptions.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/infra/file_utils.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/infra/logger.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/README.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/build.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/campaign.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/cook.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/decisive/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/decisive/base.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/decisive/chapter.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/decisive/config.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/decisive/controller.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/decisive/handlers.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/decisive/logic.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/decisive/state.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/destroy.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/event_fight.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/exercise.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/expedition.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/navigate.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/normal_fight.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/repair.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/retry_plan.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/reward.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ops/startup.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/scheduler/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/scheduler/launcher.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/scheduler/scheduler.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/server/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/server/main.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/server/routes/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/server/routes/game.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/server/routes/health.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/server/routes/ops.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/server/routes/system.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/server/routes/task.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/server/schemas.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/server/serializers.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/server/task_manager.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/server/ws_manager.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/README.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/backyard_page.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/bath_page/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/bath_page/page.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/bath_page/recognition.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/bath_page/signatures.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/battle/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/battle/base.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/battle/blood.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/battle/constants.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/battle/detection.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/battle/fleet_change/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/battle/fleet_change/_change.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/battle/fleet_change/_detect.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/battle/fleet_change.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/battle/preparation.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/battle/repair.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/battle/supply.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/build_page.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/canteen_page.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/choose_ship_page.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/decisive/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/decisive/battle_page.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/decisive/fleet_ocr.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/decisive/map_controller.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/decisive/overlay.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/decisive/preparation.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/event/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/event/event_page.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/friend_page.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/intensify_page.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/main_page/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/main_page/constants.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/main_page/controller.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/main_page/event_nav.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/main_page/overlays.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/map/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/map/page.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/map/panels/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/map/panels/decisive.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/map/panels/exercise.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/map/panels/expedition.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/mission_page/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/mission_page/data.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/mission_page/page.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/mission_page/recognition.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/page.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/sidebar_page.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/start_screen_page.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/tabbed_page.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/utils/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/ui/utils/navigation.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/vision/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/vision/api_dll.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/vision/image_matcher.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/vision/image_template.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/vision/matcher.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/vision/pixel.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/autowsgr/vision/roi.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/ai-issue-analysis-bot.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/architecture/README.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/architecture/combat-engine.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/architecture/context-and-config.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/architecture/emulator.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/architecture/infra.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/architecture/ops.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/architecture/scheduler-and-server.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/architecture/ui.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/architecture/vision.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/developer/test_pkg.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/logo.png +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/spelling_wordlist.txt +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/usage/usage_combat.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/usage/usage_daily_ops.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/usage/usage_decisive.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/docs/usage/usage_quickstart.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/examples/campaign.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/examples/change_fleet.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/examples/decisive.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/examples/event_fight.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/examples/exercise.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/examples/expedition.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/examples/normal_fight.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/examples/usersettings.full.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/examples/usersettings.minimal.yaml +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/examples/week.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/combat/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/combat/test_combat.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/conftest.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/emulator/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/emulator/test_controller.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/emulator/test_os_control.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/infra/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/infra/test_config.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/infra/test_exceptions.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/infra/test_file_utils.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/_framework.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/build.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/campaign.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/cook.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/decisive_battle.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/destroy.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/event_fight.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/exercise.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/expedition.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/normal_fight.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/repair.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/reward.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/scheduler.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ops/startup.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/README.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/_framework.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/backyard_page/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/backyard_page/e2e.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/bath_page/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/bath_page/e2e.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/battle_preparation/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/battle_preparation/e2e.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/battle_preparation/test_unit.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/build_page/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/build_page/e2e.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/canteen_page/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/canteen_page/e2e.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/decisive_battle_page/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/decisive_battle_page/e2e.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/event_page/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/event_page/e2e.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/friend_page/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/friend_page/e2e.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/intensify_page/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/intensify_page/e2e.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/main_page/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/main_page/e2e.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/map_page/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/map_page/e2e.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/map_page/test_unit.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/mission_page/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/mission_page/e2e.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/page/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/page/test_unit.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/run_all_e2e.ps1 +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/run_all_e2e.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/sidebar_page/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/ui/sidebar_page/e2e.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/vision/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/vision/_helpers.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/vision/test_image_checker.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/vision/test_image_template.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/vision/test_matcher.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/vision/test_ocr.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/testing/vision/test_roi.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/tools/VisualIdentity.md +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/tools/__init__.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/tools/benchmark_emulator.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/tools/debug_screenshot.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/tools/pixel_marker.py +0 -0
- {autowsgr-2.2.0.post1 → autowsgr-2.2.2}/usersettings.yaml +0 -0
|
@@ -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.
|
|
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
|
-
     [](LICENSE)
|
|
35
|
+
     [](https://codecov.io/gh/OpenWSGR/AutoWSGR) [](LICENSE)
|
|
35
36
|
|
|
36
37
|
用 Python 与 C++ 实现的 战舰少女R 的自动化流水线 & 数据统计一体化脚本, 提供 `WSGR` 游戏级别接口以及部分图像和原子操作接口。
|
|
37
38
|
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
## 项目简介
|
|
6
6
|
|
|
7
|
-
     [](LICENSE)
|
|
7
|
+
     [](https://codecov.io/gh/OpenWSGR/AutoWSGR) [](LICENSE)
|
|
8
8
|
|
|
9
9
|
用 Python 与 C++ 实现的 战舰少女R 的自动化流水线 & 数据统计一体化脚本, 提供 `WSGR` 游戏级别接口以及部分图像和原子操作接口。
|
|
10
10
|
|
|
@@ -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(
|
|
106
|
+
def find_selected_chapter_y() -> float | None:
|
|
111
107
|
"""扫描侧边栏,定位选中章节的 y 坐标。"""
|
|
112
|
-
|
|
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.
|
|
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
|
|
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
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
_log.info('[UI] 地图页面 ->
|
|
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
|
|
168
|
+
return
|
|
183
169
|
|
|
184
|
-
def navigate_to_chapter(self, target: int) -> int | None:
|
|
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 =
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
_log.info('[UI] 章节导航:
|
|
271
|
-
|
|
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 =
|
|
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
|
|