Thirteen Tien Len
================

TODO
----

- Refactor seat.jsx buttons in to a <form>.

- 1st 2nd 3rd place messages. End game message.

- Tables to contain the games

- flexbox layout: http://codepen.io/anon/pen/ojJOjq

- bot players

- flexbox layout: http://codepen.io/anon/pen/ojJOjq (started)

- graphics

- Remove PlayToBeat model and table.

- Implement run including face cards (done?)

- TODO: SoftToken unique for User

- TODO: If actions are taken while not logged in, and then user logs in,
  should those actions be applied to that account? Maybe prompt the user
  to signup or login to save their earnings / progress.

- BUG TODO: First player / lowest card holder should not be able to pass
first play

- Bug: Players should not be able to pass outside of their turn.
     Validate play: play.player == game.current_player

- Replace publicly displayed emails with usernames

- Review attributions and license compliance

- TODO: Refactor guardfiles down to one file using `groups`
  https://github.com/guard/guard/wiki/Guardfile-examples

- TODO: Move game logic out of game model / controller to module in
  /lib/game_logic.rb e.g.  https://github.com/adamof/rails-poker/tree/master/poker

## Proposed Schema

Table
  has_many Seats
    User
  has_many Games
    players from seats.users
  has_one :current_game

## Game Lifecycle

Start
Player Turns
First place finish
Second place finish
Third place finish
Start new game with existing players
  - Provide button for player to leave before new game starts
  - If less than max players, button to vote to "wait for more players"

## Feature Ideas

- Invite friends to current table
- Address link to current table
- Show winner of previous game
- User stats
- Table stats
- In game currencies
- Tournaments

## Bot players

Essential:

- Play valid hands
- Pass

Nice to have:

- Skill level setting
- AI based on skill level

ReactJS front-end

Implement card graphics
  https://openclipart.org/detail/171444/white-oxygen-playing-card-faces
  http://www.vecteezy.com/vector-art/65607-gambling-cards
  http://opengameart.org/content/playing-cards-1

ActionCable for realtime / websockets

Animation with pixijs http://www.pixijs.com/ (or VelocityJS ? https://github.com/julianshapiro/velocity)

Metrics https://www.skylight.io/ and/or NewRelic

Rename Game column from `control_player_id` to
 `current_player_id` ?
 `active_player_id` ?

Mobile app with Intel XDK ? https://software.intel.com/en-us/intel-xdk/documentation

Remove console.log debuggings

End Goals
---------

- Implement front-end in React

- Play from IRC / xmpp / AIM

Ruby on Rails
-------------

This application requires:

- Ruby 2.1.5
- Rails 4.1.8

Learn more about [Installing Rails](http://railsapps.github.io/installing-rails.html).

Getting Started
---------------

Documentation and Support
-------------------------

Issues
-------------

Similar Projects
----------------

Contributing
------------

Credits
-------

This application was generated with the [rails_apps_composer](https://github.com/RailsApps/rails_apps_composer) gem
provided by the [RailsApps Project](http://railsapps.github.io/).

Rails Composer is open source and supported by subscribers. Please join RailsApps to support development of Rails Composer.

License
-------

Attributions
------------

## Felt subtle pattern

Source: http://subtlepatterns.com/felt/
Author: http://atle.co/

## Extra suits

> R. Wayne Schmittberger, in his classic game design primer New Rules for
> Classic Games (1992), describes how you can make your own six-suited
> deck. Obtain two standard decks with the same backs. Set one aside, and
> take the Hearts and Diamonds from the second. Draw an arrow through each
> Heart with a permanent black marker to make a suit of Valentines, and
> draw an 'X' through each Diamond to make a Kites suit. Shuffle these two
> new suits together with the deck you set aside, and presto! a six-suited
> Schmittberger deck! (Of course, you can remove either Kites or
> Valentines to create a five-suited deck like the Stardeck.) 

http://www.thegamesjournal.com/articles/GameSystems2.shtml
