# Class PlanetsCard

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

All Implemented Interfaces:
  `Serializable`

public class PlanetsCard extends Card
The PlanetsCard class represents a card in the game that allows a player to interact with different planets and collect goods from them while losing some days of travel.

See Also:
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `int`
  `currentPlanet`

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

  `id, level, name, testFlight`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `PlanetsCard(int id, int level, String name, boolean testFlight, int planets, List<List<Good>> goods, int lostDays)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `applyEffect(Player player, Context context)`
  Receives a cargo hold selected by the player, puts the good relative to the iteration belonging to the selected planet into the cargo hold
  `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`

- ## Field Details

  - ### currentPlanet

    public int currentPlanet

- ## Constructor Details

  - ### PlanetsCard

    public PlanetsCard(int id, int level, String name, boolean testFlight, int planets, List<List<Good>> goods, int lostDays)

- ## 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` - 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 index of the planet the user wants to land on

  - ### applyEffect

    public boolean applyEffect(Player player, Context context)
    Receives a cargo hold selected by the player, puts the good relative to the iteration belonging to the selected planet into the cargo hold
    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