"""Compile artwork and Treys/Cactus Kev lookup data. Not part of the runtime.""" import itertools import json import random import struct import sys from pathlib import Path from PIL import Image ROOT = Path(__file__).resolve().parents[2] sys.path.insert(0, str(ROOT / "tools/vendor")) from treys import Card, Evaluator from treys.lookup import LookupTable def native_card(index): return Card.new("23456789TJQKA"[index % 13] + "cdhs"[index // 13]) def main(): image = Image.open(ROOT / "assets/sprites/tables/card-table-v1.png").convert("RGBA") image = image.resize((640, 480), Image.Resampling.LANCZOS) pixels = image.tobytes("raw", "BGRA") out = ROOT / "assets/textures/card-table.bin" out.write_bytes(struct.pack("<4sIII", b"CTA1", 640, 480, len(pixels)) + pixels) table = LookupTable() # Sorted products allow a compact binary search in native assembly. flush = sorted(table.flush_lookup.items()) plain = sorted(table.unsuited_lookup.items()) assert len(flush) == 1287 and len(plain) == 6175 data = b"".join(struct.pack("