mirror of
https://gitee.com/sui-feng-cb/AzurLaneAutoScript1
synced 2026-05-22 11:12:40 +08:00
Fix: Handle big pillar covers map grids
This commit is contained in:
@@ -8,12 +8,15 @@ MAP = CampaignMap('A3')
|
|||||||
MAP.shape = 'H9'
|
MAP.shape = 'H9'
|
||||||
MAP.camera_data = ['E3', 'E5', 'E7']
|
MAP.camera_data = ['E3', 'E5', 'E7']
|
||||||
MAP.camera_data_spawn_point = ['D6']
|
MAP.camera_data_spawn_point = ['D6']
|
||||||
|
# Big pillar at G5 covering G1:H4
|
||||||
|
# Smoke covering fleet ammo icon and current fleet indicator if fleet is at F4
|
||||||
|
# mark covering grids as land, since we won't go there anyway
|
||||||
MAP.map_data = """
|
MAP.map_data = """
|
||||||
-- -- ++ -- -- ME -- --
|
-- -- ++ -- -- ME ++ ++
|
||||||
-- -- ++ Me Me -- -- --
|
-- -- ++ Me Me -- ++ ++
|
||||||
++ ++ ++ -- -- ME -- --
|
++ ++ ++ -- -- ME ++ ++
|
||||||
SP -- -- MS -- -- -- --
|
SP -- -- MS -- ++ ++ ++
|
||||||
-- -- MS -- __ Me ++ --
|
-- -- MS -- __ Me ++ ++
|
||||||
SP -- -- MS -- -- MB --
|
SP -- -- MS -- -- MB --
|
||||||
++ ++ ++ -- -- -- -- ME
|
++ ++ ++ -- -- -- -- ME
|
||||||
-- -- ++ -- Me -- ME --
|
-- -- ++ -- Me -- ME --
|
||||||
|
|||||||
@@ -1,17 +1,21 @@
|
|||||||
|
from module.base.utils import location2node
|
||||||
from module.campaign.campaign_base import CampaignBase
|
from module.campaign.campaign_base import CampaignBase
|
||||||
from module.map.map_base import CampaignMap
|
from module.map.map_base import CampaignMap, location_ensure
|
||||||
from module.map.map_grids import SelectedGrids, RoadGrids
|
from module.map.map_grids import SelectedGrids, RoadGrids
|
||||||
from module.logger import logger
|
from module.logger import logger
|
||||||
from .b1 import Config as ConfigBase
|
from .b1 import Config as ConfigBase
|
||||||
|
from .d3 import GridCurrentFleet
|
||||||
|
|
||||||
MAP = CampaignMap('B3')
|
MAP = CampaignMap('B3')
|
||||||
MAP.shape = 'I9'
|
MAP.shape = 'I9'
|
||||||
MAP.camera_data = ['D3', 'D5', 'D7', 'F3', 'F5', 'F7']
|
MAP.camera_data = ['D3', 'D5', 'D7', 'F3', 'F5', 'F7']
|
||||||
MAP.camera_data_spawn_point = ['D7']
|
MAP.camera_data_spawn_point = ['D7']
|
||||||
|
# Big pillar at E4 covering D1:F2
|
||||||
|
# mark covering grids as land, since we won't go there anyway
|
||||||
MAP.map_data = """
|
MAP.map_data = """
|
||||||
++ ++ ++ -- -- -- ++ ++ ++
|
++ ++ ++ ++ ++ ++ ++ ++ ++
|
||||||
-- -- ME -- -- -- ME -- --
|
-- -- ME ++ ++ ++ ME -- --
|
||||||
-- ME -- ME -- ME -- ME --
|
-- ME -- ME ++ ME -- ME --
|
||||||
-- ++ -- -- ++ -- -- ++ --
|
-- ++ -- -- ++ -- -- ++ --
|
||||||
ME ++ Me -- -- -- Me ++ ME
|
ME ++ Me -- -- -- Me ++ ME
|
||||||
-- Me -- -- MB -- -- Me --
|
-- Me -- -- MB -- -- Me --
|
||||||
@@ -71,6 +75,15 @@ class Config(ConfigBase):
|
|||||||
class Campaign(CampaignBase):
|
class Campaign(CampaignBase):
|
||||||
MAP = MAP
|
MAP = MAP
|
||||||
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
|
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
|
||||||
|
grid_class = GridCurrentFleet
|
||||||
|
|
||||||
|
def in_sight(self, location, sight=None):
|
||||||
|
# Focus E3 when insight E3, to avoid ammo icon covered by pillar
|
||||||
|
location = location_ensure(location)
|
||||||
|
node = location2node(location)
|
||||||
|
if node == 'E3':
|
||||||
|
return self.focus_to('E3')
|
||||||
|
return super().in_sight(location, sight=sight)
|
||||||
|
|
||||||
def battle_0(self):
|
def battle_0(self):
|
||||||
if self.clear_siren():
|
if self.clear_siren():
|
||||||
|
|||||||
@@ -8,12 +8,15 @@ MAP = CampaignMap('C3')
|
|||||||
MAP.shape = 'H9'
|
MAP.shape = 'H9'
|
||||||
MAP.camera_data = ['E3', 'E5', 'E7']
|
MAP.camera_data = ['E3', 'E5', 'E7']
|
||||||
MAP.camera_data_spawn_point = ['D6']
|
MAP.camera_data_spawn_point = ['D6']
|
||||||
|
# Big pillar at G5 covering G1:H4
|
||||||
|
# Smoke covering fleet ammo icon and current fleet indicator if fleet is at F4
|
||||||
|
# mark covering grids as land, since we won't go there anyway
|
||||||
MAP.map_data = """
|
MAP.map_data = """
|
||||||
-- -- ++ -- -- ME -- --
|
-- -- ++ -- -- ME ++ ++
|
||||||
-- -- ++ Me Me -- -- --
|
-- -- ++ Me Me -- ++ ++
|
||||||
++ ++ ++ -- -- ME -- --
|
++ ++ ++ -- -- ME ++ ++
|
||||||
SP -- -- MS -- -- -- --
|
SP -- -- MS -- ++ ++ ++
|
||||||
-- -- MS -- __ Me ++ --
|
-- -- MS -- __ Me ++ ++
|
||||||
SP -- -- MS -- -- MB --
|
SP -- -- MS -- -- MB --
|
||||||
++ ++ ++ -- -- -- -- ME
|
++ ++ ++ -- -- -- -- ME
|
||||||
-- -- ++ -- Me -- ME --
|
-- -- ++ -- Me -- ME --
|
||||||
|
|||||||
@@ -1,17 +1,22 @@
|
|||||||
|
from module.base.utils import color_similarity_2d, location2node
|
||||||
from module.campaign.campaign_base import CampaignBase
|
from module.campaign.campaign_base import CampaignBase
|
||||||
from module.map.map_base import CampaignMap
|
from module.map.map_base import CampaignMap, location_ensure
|
||||||
from module.map.map_grids import SelectedGrids, RoadGrids
|
from module.map.map_grids import SelectedGrids, RoadGrids
|
||||||
from module.logger import logger
|
from module.logger import logger
|
||||||
|
from module.map_detection.grid import Grid
|
||||||
|
from module.template.assets import TEMPLATE_FLEET_CURRENT
|
||||||
from .d1 import Config as ConfigBase
|
from .d1 import Config as ConfigBase
|
||||||
|
|
||||||
MAP = CampaignMap('D3')
|
MAP = CampaignMap('D3')
|
||||||
MAP.shape = 'I9'
|
MAP.shape = 'I9'
|
||||||
MAP.camera_data = ['D3', 'D5', 'D7', 'F3', 'F5', 'F7']
|
MAP.camera_data = ['D3', 'D5', 'D7', 'F3', 'F5', 'F7']
|
||||||
MAP.camera_data_spawn_point = ['D7']
|
MAP.camera_data_spawn_point = ['D7']
|
||||||
|
# Big pillar at E4 covering D1:F2
|
||||||
|
# mark covering grids as land, since we won't go there anyway
|
||||||
MAP.map_data = """
|
MAP.map_data = """
|
||||||
++ ++ ++ -- -- -- ++ ++ ++
|
++ ++ ++ ++ ++ ++ ++ ++ ++
|
||||||
-- -- ME -- -- -- ME -- --
|
-- -- ME ++ ++ ++ ME -- --
|
||||||
-- ME -- ME -- ME -- ME --
|
-- ME -- ME ++ ME -- ME --
|
||||||
-- ++ -- -- ++ -- -- ++ --
|
-- ++ -- -- ++ -- -- ++ --
|
||||||
ME ++ Me -- -- -- Me ++ ME
|
ME ++ Me -- -- -- Me ++ ME
|
||||||
-- Me -- -- MB -- -- Me --
|
-- Me -- -- MB -- -- Me --
|
||||||
@@ -69,9 +74,33 @@ class Config(ConfigBase):
|
|||||||
# ===== End of generated config =====
|
# ===== End of generated config =====
|
||||||
|
|
||||||
|
|
||||||
|
class GridCurrentFleet(Grid):
|
||||||
|
def predict_current_fleet(self):
|
||||||
|
# lower count threshold for D3
|
||||||
|
count = self.relative_hsv_count(area=(-0.5, -3.5, 0.5, -2.5), h=(141 - 3, 141 + 10), shape=(50, 50))
|
||||||
|
if count < 150:
|
||||||
|
return False
|
||||||
|
|
||||||
|
image = self.relative_crop((-0.5, -3.5, 0.5, -2.5), shape=(60, 60))
|
||||||
|
image = color_similarity_2d(image, color=(24, 255, 107))
|
||||||
|
if not TEMPLATE_FLEET_CURRENT.match(image):
|
||||||
|
return False
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
|
||||||
class Campaign(CampaignBase):
|
class Campaign(CampaignBase):
|
||||||
MAP = MAP
|
MAP = MAP
|
||||||
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
|
ENEMY_FILTER = '1L > 1M > 1E > 1C > 2L > 2M > 2E > 2C > 3L > 3M > 3E > 3C'
|
||||||
|
grid_class = GridCurrentFleet
|
||||||
|
|
||||||
|
def in_sight(self, location, sight=None):
|
||||||
|
# Focus E3 when insight E3, to avoid ammo icon covered by pillar
|
||||||
|
location = location_ensure(location)
|
||||||
|
node = location2node(location)
|
||||||
|
if node == 'E3':
|
||||||
|
return self.focus_to('E3')
|
||||||
|
return super().in_sight(location, sight=sight)
|
||||||
|
|
||||||
def battle_0(self):
|
def battle_0(self):
|
||||||
if self.clear_siren():
|
if self.clear_siren():
|
||||||
|
|||||||
Reference in New Issue
Block a user