diff --git a/lib/viral_spiral/game.ex b/lib/viral_spiral/game.ex index f3f3de6..18b34e4 100644 --- a/lib/viral_spiral/game.ex +++ b/lib/viral_spiral/game.ex @@ -17,6 +17,7 @@ defmodule ViralSpiral.Game do |> draw_card() |> view_source() |> hide_source() + |> mark_as_fake() |> pass_card(card, from, to) |> turn_to_fake(card) |> pass_card(card, from, to) diff --git a/lib/viral_spiral/room/actions.ex b/lib/viral_spiral/room/actions.ex index 8cbcd2b..9b9cab6 100644 --- a/lib/viral_spiral/room/actions.ex +++ b/lib/viral_spiral/room/actions.ex @@ -78,4 +78,14 @@ defmodule ViralSpiral.Room.Actions do } } end + + def turn_card_to_fake(player_id, card_id) do + %Action{ + type: :turn_card_to_fake, + payload: %{ + player_id: player_id, + card_id: card_id + } + } + end end diff --git a/lib/viral_spiral/room/change_descriptions.ex b/lib/viral_spiral/room/change_descriptions.ex index 0548628..4040623 100644 --- a/lib/viral_spiral/room/change_descriptions.ex +++ b/lib/viral_spiral/room/change_descriptions.ex @@ -2,6 +2,7 @@ defmodule ViralSpiral.Room.ChangeDescriptions do @moduledoc """ Commonly used change options put behind user friendly names. """ + alias ViralSpiral.Room.Action def change_clout(offset), do: [type: :clout, offset: offset] def change_affinity(target, offset), do: [type: :affinity, target: target, offset: offset] @@ -56,4 +57,8 @@ defmodule ViralSpiral.Room.ChangeDescriptions do [type: :join, player_name: player_name] end end + + def turn_to_fake(%Action{type: :turn_card_to_fake, payload: payload}) do + [type: :turn_card_to_fake, card_id: payload.card_id, player_id: payload.player_id] + end end diff --git a/lib/viral_spiral/room/reducer.ex b/lib/viral_spiral/room/reducer.ex index ea909f2..5656bdc 100644 --- a/lib/viral_spiral/room/reducer.ex +++ b/lib/viral_spiral/room/reducer.ex @@ -99,13 +99,14 @@ defmodule ViralSpiral.Room.Reducer do } end - def reduce(%State{} = state, %{type: :turn_to_fake}) do - # card = action.payload.card + def reduce(%State{} = state, %Action{type: :turn_card_to_fake} = action) do + %{player_id: player_id} = action.payload - # changes = [ - # # modify the player's active - # {state.players[player.id], ChangeDescriptions.turn_to_fake()} - # ] + changes = [ + {state.players[player_id], ChangeDescriptions.turn_to_fake(action)} + ] + + State.apply_changes(state, changes) end def reduce(%State{} = state, %{type: :viral_spiral_pass, to: players} = action)