Skip to content

Commit

Permalink
setup tracks positions
Browse files Browse the repository at this point in the history
  • Loading branch information
leandrost committed Apr 30, 2016
1 parent 5843f00 commit 93b73c8
Show file tree
Hide file tree
Showing 3 changed files with 157 additions and 19 deletions.
37 changes: 18 additions & 19 deletions app/interactions/matches/create_match.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@ def execute
match = Match.create!
match.create_board!
create_players(match, number_of_players)
create_tracks(match, match.board, match.players)
# create_power_pool(match)
# create_decks(match, use_tides_of_battle_cards)
match
end
Expand All @@ -27,32 +25,36 @@ def execute
def create_players(match, number_of_players)
house_names = Player::HOUSES.first(number_of_players)
house_names.each do |house_name|
player = match.players.create!(match: match, house: house_name)
distribute_player_things(player, match.board)
player = match.players.build(match: match, house: house_name)
setup_tracks(player)
player.save!
distribute_player_things(player)
end
end

def distribute_player_things(player, board)
def distribute_player_things(player)
create_power_tokens(player)
compose(CreateOrders, player: player)
compose(CreateUnits, player: player)
compose(CreateHouseCards, player: player)
end

def create_tracks(match, board, players)
[
WildlingsTrack,
VictoryTrack,
# SupplyTrack, # TODO
# RoundTrack, # TODO
# KingsCourtInfluenceTrack, # TODO
# IronThroneInfluenceTrack, # TODO
# FiefdomsInfluenceTrack # TODO
].each do |track|
track.setup!(match, board, players)
def setup_tracks(player)
house = player.house.downcase
houses_setup.with_indifferent_access[house][:tracks_positions].map do |marker, position|
player.send("#{marker}_position=", position)
end
end

def houses_setup
@houses_setup ||= load_houses_setup
end

def load_houses_setup
file_path = "config/game_data/houses_setup.yml"
YAML.load_file(File.join(Rails.root, file_path))
end

def create_decks(match, use_tides_of_battle_cards)
# TODO
# create_westeros_deck_one(match)
Expand All @@ -62,9 +64,6 @@ def create_decks(match, use_tides_of_battle_cards)
# create_tides_of_battle_deck(match) if use_tides_of_battle_cards
end

def create_power_pool(match)
end

def create_power_tokens(player)
5.times { player.power_tokens.create! }
end
Expand Down
55 changes: 55 additions & 0 deletions config/game_data/houses_setup.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
baratheon:
tracks_positions:
throne: 1
blade: 5
raven: 4
supply: 2
victory: 1
#starting_units:
#house_cars::
lannister:
tracks_positions:
throne: 2
blade: 6
raven: 1
supply: 2
victory: 1
#starting_units:
#house_cars::
stark:
tracks_positions:
throne: 3
blade: 4
raven: 2
supply: 1
victory: 2
#starting_units:
#house_cars::
greyjoy:
tracks_positions:
throne: 5
blade: 1
raven: 6
supply: 2
victory: 1
#starting_units:
#house_cars::
tyrell:
tracks_positions:
throne: 6
blade: 2
raven: 5
supply: 2
victory: 1
#starting_units:
#house_cars::
martell:
tracks_positions:
throne: 4
blade: 3
raven: 3
supply: 2
victory: 1
#starting_units:
#house_cars::

84 changes: 84 additions & 0 deletions spec/interactions/matches/create_match_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -61,5 +61,89 @@
expect(house_names).to eq %w(Baratheon Lannister Stark)
end
end

shared_examples :setup_default_positions do
let(:match) { ap 0; described_class.run!(number_of_players: 6) }

subject do
match.players.find_by_house(house)
end

describe "positions" do
it "sets defaults" do
expect(subject.throne_position).to eq throne
expect(subject.blade_position).to eq blade
expect(subject.raven_position).to eq raven
expect(subject.supply_position).to eq supply
expect(subject.victory_position).to eq victory
end
end
end

context "with Baratheon house" do
let(:house) { "Baratheon" }
let(:throne) { 1 }
let(:blade) { 5 }
let(:raven) { 4 }
let(:supply) { 2 }
let(:victory) { 1 }

it_behaves_like :setup_default_positions
end

context "with Lannister house" do
let(:house) { "Lannister" }
let(:throne) { 2 }
let(:blade) { 6 }
let(:raven) { 1 }
let(:supply) { 2 }
let(:victory) { 1 }

it_behaves_like :setup_default_positions
end

context "with Stark house" do
let(:house) { "Stark" }
let(:throne) { 3 }
let(:blade) { 4 }
let(:raven) { 2 }
let(:supply) { 1 }
let(:victory) { 2 }

it_behaves_like :setup_default_positions
end

context "with Greyjoy house" do
let(:house) { "Greyjoy" }
let(:throne) { 5 }
let(:blade) { 1 }
let(:raven) { 6 }
let(:supply) { 2 }
let(:victory) { 1 }

it_behaves_like :setup_default_positions
end

context "with Tyrell house" do
let(:house) { "Tyrell" }
let(:throne) { 6 }
let(:blade) { 2 }
let(:raven) { 5 }
let(:supply) { 2 }
let(:victory) { 1 }

it_behaves_like :setup_default_positions
end

context "with Martell house" do
let(:house) { "Martell" }
let(:throne) { 4 }
let(:blade) { 3 }
let(:raven) { 3 }
let(:supply) { 2 }
let(:victory) { 1 }

it_behaves_like :setup_default_positions
end
end
end

0 comments on commit 93b73c8

Please sign in to comment.