WHERE_GAME_HAND = 0
WHERE_PERSISTENT = 1
WHERE_PLAYER_HAND = 2
WHERE_PLAYED = 3
WHERE_GAME_DISCARD = 4
WHERE_PLAYER_DISCARD = 5
WHERE_PLAYER_PERSISTENT = 6

CARD_TYPE_MONSTER = 0
CARD_TYPE_HERO = 1
CARD_TYPE_PERSISTENT = 2

# pause game play to select card in order to do something with it
ACTION_BANISH = 1
ACTION_COPY = 2
ACTION_DISCARD_FROM_PLAYER_HAND = 3
# defeat means that player can defeat a monster without paying it's cost
ACTION_DEFEAT = 4
ACTION_ACQUIRE_TO_TOP = 5
ACTION_KEEP = 6
ACTION_BANISH_PLAYER_PERSISTENT = 7
ACTION_USE = 8
# kill means that a player can spend kill to defeat card
ACTION_KILL = 9
# buy means that a player can spend buy to acquire card
ACTION_BUY = 10
ACTION_PLAY = 11
ACTION_ACQUIRE_TO_HAND = 12
ACTION_ACQUIRE_TO_DISCARD = 13
ACTION_BANISH_PLAYER_HAND = 14
ACTION_BANISH_PLAYER_DISCARD = 15
ACTION_ACQUIRE_TO_PHAND = 16
ACTION_THIS_OR_THAT = 17
ACTION_ACTIVE_PERSISTENT = 18
ACTION_INACTIVE_PERSISTENT = 19
ACTION_DESELECT = 20
ACTION_BANISH_CENTER = 21
ACTION_END_TURN = 22

# used for debugging
ACTION_DICT = {
    ACTION_BANISH: 'ACTION_BANISH',
    ACTION_COPY: 'ACTION_COPY',
    ACTION_DISCARD_FROM_PLAYER_HAND: 'ACTION_DISCARD_FROM_PLAYER_HAND',
    ACTION_DEFEAT: 'ACTION_DEFEAT',
    ACTION_ACQUIRE_TO_TOP: 'ACTION_ACQUIRE_TO_TOP',
    ACTION_KEEP: 'ACTION_KEEP',
    ACTION_BANISH_PLAYER_PERSISTENT: 'ACTION_BANISH_PLAYER_PERSISTENT',
    ACTION_USE: 'ACTION_USE',
    ACTION_KILL: 'ACTION_KILL',
    ACTION_BUY: 'ACTION_BUY',
    ACTION_PLAY: 'ACTION_PLAY',
    ACTION_ACQUIRE_TO_HAND: 'ACTION_ACQUIRE_TO_HAND',
    ACTION_ACQUIRE_TO_DISCARD: 'ACTION_ACQUIRE_TO_DISCARD',
    ACTION_BANISH_PLAYER_HAND: 'ACTION_BANISH_PLAYER_HAND',
    ACTION_BANISH_PLAYER_DISCARD: 'ACTION_BANISH_PLAYER_DISCARD',
    ACTION_ACQUIRE_TO_PHAND: 'ACTION_ACQUIRE_TO_PHAND',
    ACTION_THIS_OR_THAT: 'ACTION_THIS_OR_THAT',
    ACTION_ACTIVE_PERSISTENT: 'ACTION_ACTIVE_PERSISTENT',
    ACTION_INACTIVE_PERSISTENT: 'ACTION_INACTIVE_PERSISTENT',
    ACTION_DESELECT: 'ACTION_DESELECT',
    ACTION_BANISH_CENTER: 'ACTION_BANISH_CENTER',
    ACTION_END_TURN: 'ACTION_END_TURN',
}

ACTION_DICT_DISPLAY = {
    ACTION_BANISH: 'banish',
    ACTION_COPY: 'copy',
    ACTION_DISCARD_FROM_PLAYER_HAND: 'discard',
    ACTION_DEFEAT: 'defeat',
    ACTION_ACQUIRE_TO_TOP: 'acquire to top',
    ACTION_KEEP: 'keep',
    ACTION_BANISH_PLAYER_PERSISTENT: 'destroy',
    ACTION_USE: 'use',
    ACTION_KILL: 'kill',
    ACTION_BUY: 'buy',
    ACTION_PLAY: 'play',
    ACTION_ACQUIRE_TO_HAND: 'acquire to hand',
    ACTION_ACQUIRE_TO_DISCARD: 'acquire to discard',
    ACTION_BANISH_PLAYER_HAND: 'banish hand',
    ACTION_BANISH_PLAYER_DISCARD: 'banish discard',
    ACTION_ACQUIRE_TO_PHAND: 'acquire to phand',
    ACTION_THIS_OR_THAT: 'ACTION_THIS_OR_THAT',
    ACTION_ACTIVE_PERSISTENT: 'ACTION_ACTIVE_PERSISTENT',
    ACTION_INACTIVE_PERSISTENT: 'ACTION_INACTIVE_PERSISTENT',
    ACTION_DESELECT: 'deselect',
    ACTION_BANISH_CENTER: 'banish center',
    ACTION_END_TURN: 'end turn',
}

# normal game play
ACTION_NORMAL = [ACTION_BUY, ACTION_KILL, ACTION_PLAY]


BUY_1 = 'plus 1 buy'
KILL_1 = 'plus 1 kill'

STARTING_CARD_BUY_3 = 0
STARTING_CARD_BUY_2 = 1
STARTING_CARD_KILL_1 = 2


# signifies we're done with the action
END_OF_ACTION = 0
END_OF_TURN = 1

ENLIGHTENED = 0
VOID = 1
MECHANA = 2
LIFEBOUND = 3
STARTING = 4

DECK_SELECTED_CARD = 0
DECK_GAME_DECK = 1
DECK_GAME_HAND = 2
DECK_GAME_PHAND = 3
DECK_GAME_DISCARD = 4
DECK_GAME_PLAYED_USER_CARDS = 5
DECK_GAME_ACTIVE_CARD = 6
DECK_PLAYER_DECK = 7
DECK_PLAYER_PHAND = 8
DECK_PLAYER_HAND = 9
DECK_PLAYER_DISCARD = 10

CANNOT_KILL_THIS_CARD = 'You cannot kill this card, it is a %s'
CANNOT_BUY_THIS_CARD = 'You cannot buy this card, it is a monster'
NOT_ENOUGH_KILL = 'Not enough kill'
NOT_ENOUGH_BUY = 'Not enough buy'
INVALID_SELECTION = 'No idea what you are doing, but it is wrong.'
NO_CARDS = 'You have no cards left. You should end your turn'
INVALID_CARD = 'Invalid card. Try a number 0 - %s. EX: c3 for the [c]ard with the 3 in front of it'
