# Class PiratesCard

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

All Implemented Interfaces:
  `Serializable`

public class PiratesCard extends Card
The PiratesCard class represents a card in the game that introduces a pirate encounter. When this card is applied, the player either wins the encounter and gains resources or loses and receives penalties.

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
  `PiratesCard(int id, int level, String name, boolean testFlight, int cannonStrength, List<Size> cannonHits, int gainedCoins, int lostDays)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `applyEffect(Player player, Context context)`
  Determines whether the player won or lost, gives them coins (win) or shoots cannon hits at them (defeat).
  `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()`
  `boolean`
  `isWin()`
  `void`
  `setCardContext(Player player, Context context)`
  Method used to do things that the player may/must do before applying the effect.
  `void`
  `setWin(Player player)`

  ### 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

  - ### PiratesCard

    public PiratesCard(int id, int level, String name, boolean testFlight, int cannonStrength, List<Size> cannonHits, int gainedCoins, int lostDays)

- ## Method Details

  - ### setWin

    public void setWin(Player player)

  - ### isWin

    public boolean isWin()

  - ### 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. In this case it's the coordinates of the cannon to activate and battery to remove.

  - ### applyEffect

    public boolean applyEffect(Player player, Context context)
    Determines whether the player won or lost, gives them coins (win) or shoots cannon hits at them (defeat).
    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