Pile.fromAddress constructor

Pile.fromAddress(
  1. int ptr, {
  2. bool pair = false,
})

Implementation

factory Pile.fromAddress(int ptr, {bool pair = false}) {
  ffi.Pointer<lib.Pile> data = ffi.Pointer.fromAddress(ptr);
  final cards = data.ref.cards.elements
      .where((cid) => cid < 52)
      .map((cid) => Card.fromInt(cid))
      .toList();
  final value = data.ref.value;
  Mark mark = Mark.empty;
  if (cards.isNotEmpty) {
    if (cards.length == 1) {
      mark = Mark.single;
    } else if (data.ref.build) {
      mark = Mark.build;
    } else {
      mark = Mark.group;
    }
  }
  if (pair) {
    mark = Mark.pair;
  }
  return Pile(cards: cards, value: value, mark: mark, owner: data.ref.owner);
}