Exemple #1
0
def name_from_colors(colors: List[str]) -> str:
    ordered = mana.order(colors)
    for name, symbols in COLOR_COMBINATIONS.items():
        if mana.order(symbols) == ordered:
            if len(symbols) == 1:
                return 'mono {name}'.format(name=name)
            return name
    return 'colorless'
Exemple #2
0
def name_from_colors(colors, s=''):
    ordered = mana.order(colors)
    for name, symbols in COLOR_COMBINATIONS.items():
        if mana.order(symbols) == ordered:
            if len(symbols) == 1:
                if s.startswith('deck wins') or s.startswith('weenie') or s.startswith('suicide'):
                    return name
                return 'mono {name}'.format(name=name)
            return name
    return 'colorless'
Exemple #3
0
def canonicalize_colors(colors: List[str]) -> List[str]:
    color_words = []
    for color in colors:
        color_words.append(standardize_color_string(color))
    canonical_colors: Set[str] = set()
    for color in color_words:
        for name, symbols in COLOR_COMBINATIONS.items():
            if name == color:
                canonical_colors = canonical_colors | set(symbols)
    return mana.order(canonical_colors)
Exemple #4
0
def set_colors(d: Deck) -> None:
    deck_colors: Set[str] = set()
    deck_colored_symbols: List[str] = []
    for c in [entry.card for entry in d.maindeck + d.sideboard]:
        for cost in c.get('mana_cost') or ():
            if c.layout == 'split':
                continue # They might only be using one half so ignore it.
            card_symbols = mana.parse(cost)
            card_colors = mana.colors(card_symbols)
            deck_colors.update(card_colors['required'])
            card_colored_symbols = mana.colored_symbols(card_symbols)
            deck_colored_symbols += card_colored_symbols['required']
    d.colors = mana.order(deck_colors)
    d.colored_symbols = deck_colored_symbols
def set_colors(d):
    deck_colors = set()
    deck_colored_symbols = []
    for card in [c['card'] for c in d.maindeck + d.sideboard]:
        for cost in card.get('mana_cost') or ():
            if card.layout == 'split' or card.layout == 'aftermath':
                continue  # They might only be using one half so ignore it.
            card_symbols = mana.parse(cost)
            card_colors = mana.colors(card_symbols)
            deck_colors.update(card_colors['required'])
            card_colored_symbols = mana.colored_symbols(card_symbols)
            deck_colored_symbols += card_colored_symbols['required']
    d.colors = mana.order(deck_colors)
    d.colored_symbols = deck_colored_symbols
Exemple #6
0
def name_from_colors(colors: List[str]) -> str:
    ordered = mana.order(colors)
    for name, symbols in COLOR_COMBINATIONS.items():
        if mana.order(symbols) == ordered:
            return name
    return 'colorless'
def test_order() -> None:
    assert mana.order(['U']) == ['U']
    assert mana.order(['W', 'U', 'B']) == ['W', 'U', 'B']
    assert mana.order(['B', 'W', 'U']) == ['W', 'U', 'B']
    assert mana.order(['R', 'G']) == ['R', 'G']
    assert mana.order(['G', 'R']) == ['R', 'G']
    assert mana.order(['G', 'U']) == ['G', 'U']
    assert mana.order(['U', 'G']) == ['G', 'U']
    assert mana.order(['W', 'G']) == ['G', 'W']
    assert mana.order(['W', 'G', 'B']) == ['B', 'G', 'W']
    assert mana.order(['G', 'R', 'B']) == ['B', 'R', 'G']
    assert mana.order(['W', 'G', 'R', 'B']) == ['B', 'R', 'G', 'W']