# Class CombatZoneCard

java.lang.Object
it.polimi.ingsw.is25am31.model.cards.Card
it.polimi.ingsw.is25am31.model.cards.CombatZoneCard

All Implemented Interfaces:
  `Serializable`

public class CombatZoneCard extends Card
Represents a specific card in the game that triggers the "Combat Zone" scenario.

See Also:
  - Serialized Form

- ## Field Summary

  ### Fields inherited from class it.polimi.ingsw.is25am31.model.cards.Card

  `id, level, name, testFlight`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `CombatZoneCard(int id, int level, String name, boolean testFlight, int lostGoods, List<CannonHit> cannonHits, int lostDays, int lostCrewMembers)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `applyEffect(Player player, Context context)`
  Dispatches between the level 1 and level 2 methods.
  `int`
  `getAllowedPlayer(List<Player> players)`
  `String[]`
  `getAsciiArt()`
  Generates an ASCII art representation of the card containing details such as the card name, level, optional status, and its effects.
  `int`
  `getIterations()`
  `EffectType`
  `getType()`
  `void`
  `setCardContext(Player player, Context context)`
  Method used to do things that the player may/must do before applying the effect.

  ### Methods inherited from class it.polimi.ingsw.is25am31.model.cards.Card

  `getCrewMembers, getId, isTestFlight`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### CombatZoneCard

    public CombatZoneCard(int id, int level, String name, boolean testFlight, int lostGoods, List<CannonHit> cannonHits, int lostDays, int lostCrewMembers)

- ## Method Details

  - ### getType

    public EffectType getType()
    Specified by:
      `getType` in class `Card`
    Returns:
      card type

  - ### getIterations

    public int getIterations()
    Overrides:
      `getIterations` in class `Card`
    Returns:
      Number of times the applyEffect method needs to be called in order to fully resolve the effect of the specific Card subclass.

  - ### setCardContext

    public void setCardContext(Player player, Context context)
    Method used to do things that the player may/must do before applying the effect.
    Overrides:
      `setCardContext` in class `Card`
    Parameters:
      `player` - Player setting their context
      `context` - Map of parameters passed by the player, useful to set the context of the card

  - ### applyEffect

    public boolean applyEffect(Player player, Context context)
    Dispatches between the level 1 and level 2 methods.
    Specified by:
      `applyEffect` in class `Card`
    Parameters:
      `player` - Player on whom the effect is applied
      `context` - Map of parameters passed by the player, used to apply the effect
    Returns:
      `true` if effect has been completely resolved for passed player, `false` otherwise

  - ### getAsciiArt

    public String[] getAsciiArt()
    Generates an ASCII art representation of the card containing details such as the card name, level, optional status, and its effects. This representation serves as a textual description of the card, formatted line by line for display.
    Specified by:
      `getAsciiArt` in class `Card`
    Returns:
      an array of strings containing the ASCII art representation of the card

  - ### getAllowedPlayer

    public int getAllowedPlayer(List<Player> players)
    Parameters:
      `players` - List of active players.
    Returns:
      ID of the player allowed to apply the card effect (i.e., the player that lost the round).