RodrigoToroIcarte / IIC2113-2023-1

6 stars 0 forks source link

Duda sobre abstraccion en controlador de cartas del jugador #182

Open v4rgas opened 1 year ago

v4rgas commented 1 year ago

Mi player es un struct

public struct Player {
  public bool IsAlive;
  public Superstar Superstar;

  public CardCollection Hand;
  public CardCollection Arsenal;
  public CardCollection Ringside;
  public CardCollection RingArea;
}

y estoy programando un controlador de colleciones de cartas del jugador pero me salto la siguiente duda

public class PlayerCardsController {

  public void MoveCardFromHandToRingArea(PlayerS player, Card card) {
    CardCollection RingArea = player.Arsenal;
    CardCollection Hand = player.Hand;

    Hand.MoveCardToTopOf(RingArea, card);
  }

   public void MoveCardToTopCardByIndex(CardCollection source,
                                       CardCollection destination, int index) {
    Card card = source.GetCardByIndex(index);
    source.MoveCardToTopOf(destination, card);
  }

}

Se me ocurren estas dos formas de implementar metodos

en una el metodo tambien se encarga de desestructurar al jugardor antes de llamar al metodo, mientras que en el otro la clase espera dos colecciones de cartas y se encarga de hacer la transferencia

Se me ocurre tambien que player podria tener en vez de 4 clases, una clase sola dentro de su struct que sea como CardCollections y que llame a estos metodos pero de nuevo llego a la misma duda

o tambien podria ser que CardCollection tenga un metodo para transferir por indice y que la clase PlayerCardsController sea como el primer metodo

o quizas algun hibrido de todas

v4rgas commented 1 year ago

tambien podria ser que si es un metodo de CardCollection entonces ni siquiera necesito este controlador y cada clase puede llamar a los metodos de las colleciones de cartas del jugador como quiera

v4rgas commented 1 year ago

lo otro que pense es que podria expandir el enum para que tambien contenga el arsenal y user este para llamar a los metodos