import '../logic/card.dart' as logic_card;
import 'package:sky/widgets.dart' as widgets;

class Card extends widgets.Component {
  logic_card.Card card;
  bool faceUp;

  Card(this.card, this.faceUp);

  widgets.Widget build() {
    return new widgets.Listener(child: _imageFromCard(card, faceUp));
  }

  static widgets.Widget _imageFromCard(logic_card.Card c, bool faceUp) {
    // TODO(alexfandrianto): Instead of 'default', what if we were told which theme to use?
    String imageName =
        "images/default/${c.deck}/${faceUp ? 'up' : 'down'}/${c.identifier}.png";
    return new widgets.NetworkImage(src: imageName);
  }
}
