# Class SlaversCard

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

All Implemented Interfaces:
  `Serializable`

public class SlaversCard extends Card
The SlaversCard class represents a card in the game that introduces slavers 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
  `SlaversCard(int id, int level, String name, boolean testFlight, int cannonStrength, int lostCrewMembers, int gainedCoins, int lostDays)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `applyEffect(Player player, Context context)`
  determines whether the player won or lost, adds coins and removes flight days if player won, removes crew members if player lost
  `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

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

  - ### SlaversCard

    public SlaversCard(int id, int level, String name, boolean testFlight, int cannonStrength, int lostCrewMembers, int gainedCoins, int lostDays)

- ## Method Details

  - ### 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` - 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, adds coins and removes flight days if player won, removes crew members if player lost
    Specified by:
      `applyEffect` in class `Card`
    Parameters:
      `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