# Tomecraft Example clients

"client" is a raw command line option that lets you control everything sent to the server outside of polling.
"client2" has a TUI interface that shows the current state at all times and will automatically update on server BroadcastUpdate events

## How to build
Requires Go 1.16

Run "make all" to generate both binaries.

Otherwise, run "make [binary name]" to generate a specific one.

Both use the following commands:

### Session Commands:

Session commands can be input at any time
Session commands are prefixed with "0":

	0 query: Tell the server you're looking for a game
	0 join: Join the game the server created for you
	0 leave: Leave the game and kill the client
	0 ready: check to see if both plays have joined the match

### State Commands:
State commands are prefixed with "1":

	1 b: Tell the server you're ready. If both players have readied up, choose to go first and start the game
	1 s: Start your turn if possible
	1 e: End your turn if possible
	1 g: Get a copy of the current game state

### Action commands:
Action commands are prefixed with "2":

	2 s: Scry your life points in cards
	2 d <x>: Draw card at position x from your most recent scry
	2 p <x> <y>: play card at postion x in your hand to postion y on your side of the board (from the left)
	2 m <x> <y>: move card at position x on the board to position y on the board
	2 a <x> <y>: attack position y with card at position x on the board 

