diff --git a/GuardfileServer b/GuardfileServer
index 021fc0c..23d960e 100644
--- a/GuardfileServer
+++ b/GuardfileServer
@@ -35,7 +35,7 @@ guard :bundler do
files.each { |file| watch(helper.real_path(file)) }
end
-guard 'rails', host: '127.0.0.1' do
+guard 'rails', host: '0.0.0.0' do
watch('Gemfile.lock')
watch(%r{^(config|lib)/.*})
end
diff --git a/app/assets/images/cards/png/back-blue.png b/app/assets/images/cards/png/back-blue.png
new file mode 100644
index 0000000..f853152
Binary files /dev/null and b/app/assets/images/cards/png/back-blue.png differ
diff --git a/app/assets/images/cards/png/back-pink.png b/app/assets/images/cards/png/back-pink.png
new file mode 100644
index 0000000..ec6e667
Binary files /dev/null and b/app/assets/images/cards/png/back-pink.png differ
diff --git a/app/assets/images/cards/png/back-red.png b/app/assets/images/cards/png/back-red.png
new file mode 100644
index 0000000..02044ef
Binary files /dev/null and b/app/assets/images/cards/png/back-red.png differ
diff --git a/app/assets/javascripts/components/inventory.js.jsx b/app/assets/javascripts/components/inventory.js.jsx
index 56070a3..292a56c 100644
--- a/app/assets/javascripts/components/inventory.js.jsx
+++ b/app/assets/javascripts/components/inventory.js.jsx
@@ -20,6 +20,7 @@ var Inventory = React.createClass({
form={"player_controls_" + card.player_id}
type="checkbox"
name="player_card_ids[]"
+ data-card-name={card.rank.replace('11','J').replace('12','Q').replace('13','K').replace('14','A').replace('15','2') + ' ' + card.suit}
value={card.id} />
{/* TODO: Don't hard code face cards here */}
{/* {card.rank.replace('11','J').replace('12','Q').replace('13','K').replace('14','A').replace('15','2')} {card.suit} */}
diff --git a/app/assets/javascripts/components/player.js.jsx b/app/assets/javascripts/components/player.js.jsx
index 89b05d3..06f314d 100644
--- a/app/assets/javascripts/components/player.js.jsx
+++ b/app/assets/javascripts/components/player.js.jsx
@@ -22,7 +22,11 @@ var Player = React.createClass({
player_id={this.props.id}
inventory={this.props.inventory}
controlling_player_id={this.props.game.controlling_player_id} /> )
- : null }
+ :
+
+ {[...Array(this.props.inventory_count)].map((card, index) =>

)}
+
+ }
);
}
diff --git a/app/assets/javascripts/header-scroll.js b/app/assets/javascripts/header-scroll.js
deleted file mode 100644
index 640dbe6..0000000
--- a/app/assets/javascripts/header-scroll.js
+++ /dev/null
@@ -1,38 +0,0 @@
-// Hide Header on on scroll down
-var didScroll;
-var lastScrollTop = 0;
-var delta = 5;
-var navbarHeight = $('header > nav').outerHeight();
-
-$(window).scroll(function(event){
- didScroll = true;
-});
-
-setInterval(function() {
- if (didScroll) {
- hasScrolled();
- didScroll = false;
- }
-}, 250);
-
-function hasScrolled() {
- var st = $(this).scrollTop();
-
- // Make sure they scroll more than delta
- if(Math.abs(lastScrollTop - st) <= delta)
- return;
-
- // If they scrolled down and are past the navbar, add class .nav-up.
- // This is necessary so you never see what is "behind" the navbar.
- if (st > lastScrollTop && st > navbarHeight){
- // Scroll Down
- $('header > nav').removeClass('nav-down').addClass('nav-up');
- } else {
- // Scroll Up
- if(st + $(window).height() < $(document).height()) {
- $('header > nav').removeClass('nav-up').addClass('nav-down');
- }
- }
-
- lastScrollTop = st;
-}
diff --git a/app/assets/stylesheets/application.css.sass b/app/assets/stylesheets/application.css.sass
index 08623ba..c2da356 100644
--- a/app/assets/stylesheets/application.css.sass
+++ b/app/assets/stylesheets/application.css.sass
@@ -27,7 +27,7 @@ body
min-height: 100vh
margin: 0
background: image-url('backgrounds/felt-green.png')
- font-size: 4vmin
+ font-size: 2vmin
a
text-decoration: none
@@ -40,11 +40,10 @@ h1
header
font-size: 3vmin
- margin-bottom: 10vmin
nav
padding: 1vmin
background: #222
- position: fixed
+ //position: fixed
top: 0
transition: top 0.2s ease-in-out
width: 100%
diff --git a/app/assets/stylesheets/game.css.sass b/app/assets/stylesheets/game.css.sass
index a26f428..019903a 100644
--- a/app/assets/stylesheets/game.css.sass
+++ b/app/assets/stylesheets/game.css.sass
@@ -118,4 +118,11 @@ button
&:checked ~ img
box-shadow: 0px 0px 2px 6px cadetblue
img
- width: 6vw
+ width: 6vmin
+ border: 1px solid black
+ border-radius: .3vmin
+.inventory
+ img
+ width: 6vmin
+ border: 1px solid black
+ border-radius: .3vmin
diff --git a/config/deploy.rb b/config/deploy.rb
index 35e19f5..2a29538 100644
--- a/config/deploy.rb
+++ b/config/deploy.rb
@@ -6,7 +6,8 @@ set :repo_url, 'git@bitbucket.org:jessecfisher/thirteen-tien-len.git'
set :assets_dir, %w(public/assets public/system)
#set :local_assets_dir, %w(public/assets public/att)
-# ask :branch, proc { `git rev-parse --abbrev-ref HEAD`.chomp }
+set :branch, proc { `git rev-parse --abbrev-ref stash`.chomp }
+ #ask :branch, proc { `git rev-parse --abbrev-ref HEAD`.chomp }
set :deploy_to, '/home/jesse/web/thirteen-tien-len'
# set :scm, :git
diff --git a/spec/features/plays_spec.rb b/spec/features/plays_spec.rb
index 958389b..4b5d755 100644
--- a/spec/features/plays_spec.rb
+++ b/spec/features/plays_spec.rb
@@ -21,7 +21,7 @@ feature 'Play a hand', type: :feature, js: true do
# Play the highest card
@card_to_play = @player.inventory.last
- check @card_to_play.to_s
+ find("[data-card-name='#{@card_to_play.to_s}'] ~ img").click
#click_button 'Play Hand'
click_button "play_hand_button_#{@player.id}"
@@ -39,7 +39,7 @@ feature 'Play a hand', type: :feature, js: true do
# Then I see the hand to beat is this play
scenario 'first play contains lowest card' do
@card_to_play = @game.lowest_card
- check @card_to_play.to_s
+ find("[data-card-name='#{@card_to_play.to_s}'] ~ img").click
#click_button 'Play Hand'
click_button "play_hand_button_#{@player.id}"
#expect(page).to have_content(/Hand to beat.*#{@game.lowest_card.to_s}/)
@@ -54,7 +54,7 @@ feature 'Play a hand', type: :feature, js: true do
# Store initial state of players inventory
@player_inventory = @player.inventory.join(' ')
@card_to_play = @player.inventory.first
- check @card_to_play.to_s
+ find("[data-card-name='#{@card_to_play.to_s}'] ~ img").click
#click_button 'Play Hand'
click_button "play_hand_button_#{@player.id}"
#wait_for_ajax
@@ -71,7 +71,7 @@ feature 'Play a hand', type: :feature, js: true do
scenario 'invalid hand played cards are not removed from the players inventory' do
#@game.reload
# Store initial state of players inventory
- @player_inventory = @player.inventory.join(' ')
+ @initial_player_inventory = @player.inventory
# Create invalid hand
@cards_to_play = []
@@ -79,7 +79,7 @@ feature 'Play a hand', type: :feature, js: true do
@cards_to_play << @player.inventory.first
# Select each card to play
- @cards_to_play.map {|card| check card.to_s }
+ @cards_to_play.map {|card| find("[data-card-name='#{card.to_s}'] ~ img").click }
#click_button 'Play Hand'
click_button "play_hand_button_#{@player.id}"
@@ -87,7 +87,9 @@ feature 'Play a hand', type: :feature, js: true do
# TODO: Flash messages
#expect(page).to have_content("Invalid pair")
# Player inventory is rendered with played cards
- expect(page).to have_content(@player_inventory)
+ @initial_player_inventory.each do |card|
+ expect(page).to have_selector("[data-card-name='#{card.to_s}'] ~ img")
+ end
# TODO: This scenario is causing other scenarios to fail unless we slow down here
sleep 1
# Player inventory method still returns played cards because the play was invalid
@@ -106,7 +108,7 @@ feature 'Play a hand', type: :feature, js: true do
@controlling_player_index = @game.player_ids.index(@game.controlling_player_id)
@card_to_play = @player.inventory.first
- check @card_to_play.to_s
+ find("[data-card-name='#{@card_to_play.to_s}'] ~ img").click
#click_button 'Play Hand'
click_button "play_hand_button_#{@player.id}"
@@ -131,7 +133,7 @@ feature 'Play a hand', type: :feature, js: true do
#@game.reload
@cards_to_play = [@game.controlling_player.player_cards.order(:value).first.to_s, @game.controlling_player.player_cards.order(:value).last.to_s]
@cards_to_play.each do |card|
- check card
+ find("[data-card-name='#{card.to_s}'] ~ img").click
end
#click_button 'Play Hand'
click_button "play_hand_button_#{@player.id}"
@@ -140,7 +142,9 @@ feature 'Play a hand', type: :feature, js: true do
#:TODO: Flash messages
#expect(page).to have_content("Invalid pair.")
# expect inventory to remain unchanged
- expect(page).to have_content("#{@game.controlling_player.inventory.map {|c| c.to_s}.join ' '}")
+ @game.controlling_player.inventory.each do |card|
+ expect(page).to have_selector("[data-card-name='#{card.to_s}'] ~ img")
+ end
# TODO: This scenario is causing other scenarios to fail unless we slow down here
sleep 1
end
@@ -192,7 +196,7 @@ feature 'Play a hand', type: :feature, js: true do
@game.reload
@player = @game.controlling_player
@card_to_play = @player.inventory.first
- check @card_to_play.to_s
+ find("[data-card-name='#{@card_to_play.to_s}'] ~ img").click
#click_button 'Play Hand'
click_button "play_hand_button_#{@player.id}"