from collections import Iterator from dataclasses import dataclass from game.commander.tasks.primitive.cas import PlanCas from game.commander.tasks.primitive.eliminationattack import EliminationAttack from game.commander.theaterstate import TheaterState from game.htn import CompoundTask, Method from game.theater import FrontLine @dataclass(frozen=True) class DestroyEnemyGroundUnits(CompoundTask[TheaterState]): front_line: FrontLine def each_valid_method(self, state: TheaterState) -> Iterator[Method[TheaterState]]: yield [EliminationAttack(self.front_line, state.player)] yield [PlanCas(self.front_line)]