Skip to content

Commit

Permalink
chore: post rishikesh IRL snapshot
Browse files Browse the repository at this point in the history
  • Loading branch information
dennyabrain committed Dec 5, 2024
1 parent 859b5ec commit cf3ef40
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 10 deletions.
4 changes: 4 additions & 0 deletions lib/viral_spiral/entity/room.ex
Original file line number Diff line number Diff line change
Expand Up @@ -161,6 +161,10 @@ defmodule ViralSpiral.Entity.Room do

Enum.random(adjectives) <> "-" <> Enum.random(nouns)
end

def reset_unjoined_players(%Room{} = room) do
%{room | unjoined_players: []}
end
end

defimpl ViralSpiral.Entity.Change, for: ViralSpiral.Entity.Room do
Expand Down
26 changes: 26 additions & 0 deletions lib/viral_spiral/game.ex
Original file line number Diff line number Diff line change
@@ -1,6 +1,32 @@
defmodule ViralSpiral.Game do
@moduledoc """
Context for Game
### Example Gameplay Code
new_game()
|> join(player)
|> join(player)
|> join(player)
|> start()
|> draw_card()
|> pass_card(card, from, to)
|> pass_card(card, from, to)
|> keep_card(card, from, to)
|> draw_card()
|> keep_card(from)
|> draw_card()
|> view_source()
|> hide_source()
|> pass_card(card, from, to)
|> turn_to_fake(card)
|> pass_card(card, from, to)
|> power_cancel_player(target, used_affinity)
|> draw_card()
|> power_viral_spiral(card, from, targets)
|> power_viral_spiral_pass(card, from, to)
|> keep_card(card, from)
|> keep_card(card, from)
|> pass_card(card, from, to)
"""
alias ViralSpiral.Room.Factory
alias ViralSpiral.Canon.Card.Share
Expand Down
25 changes: 15 additions & 10 deletions lib/viral_spiral/room/factory.ex
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,23 @@ defmodule ViralSpiral.Room.Factory do
@moduledoc """
Create entities for a Game Room
"""
alias ViralSpiral.Canon.Card.Sparse

alias ViralSpiral.Room.Reducer
alias ViralSpiral.Room.Actions
alias ViralSpiral.Room.ChangeDescriptions
alias ViralSpiral.Entity.Change
alias ViralSpiral.Canon.Encyclopedia
alias ViralSpiral.Entity.Article, as: EntityArticle
alias ViralSpiral.Canon.Article
alias ViralSpiralWeb.GameRoomState
alias ViralSpiral.Entity.Deck
alias ViralSpiral.Canon.Deck, as: CanonDeck
alias ViralSpiral.Canon.DrawTypeRequirements
alias ViralSpiral.Room.State
alias ViralSpiral.Room.EngineConfig
alias ViralSpiral.Canon.Card.Sparse
alias ViralSpiral.Canon.Article
alias ViralSpiral.Canon.Encyclopedia
alias ViralSpiral.Canon.DrawTypeRequirements
alias ViralSpiral.Canon.Deck, as: CanonDeck
alias ViralSpiral.Entity.Change
alias ViralSpiral.Entity.Deck
alias ViralSpiral.Entity.Player
alias ViralSpiral.Entity.Room
alias ViralSpiral.Entity.Article, as: EntityArticle
alias ViralSpiralWeb.GameRoomState

def new_room() do
engine_config = %EngineConfig{}
Expand Down Expand Up @@ -148,7 +149,11 @@ defmodule ViralSpiral.Room.Factory do
end

def start(%State{} = state) do
room = state.room |> Room.start(length(state.room.unjoined_players))
room =
state.room
|> Room.start(length(state.room.unjoined_players))
|> Room.reset_unjoined_players()

State.new(room, state.room.unjoined_players)
end

Expand Down
17 changes: 17 additions & 0 deletions test/viral_spiral/gameplay_test.exs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ defmodule ViralSpiral.GameTest do
We only do 2 rounds for brevity.
"""
alias ViralSpiral.Room.Factory
alias ViralSpiral.Entity.Player
alias ViralSpiral.Entity.Turn
alias ViralSpiral.Entity.Round
Expand Down Expand Up @@ -51,4 +52,20 @@ defmodule ViralSpiral.GameTest do
root
)
end

test "happy path" do
:rand.seed(:exsss, {123, 135, 254})

Factory.new_game()
|> Factory.join("adhiraj")
|> Factory.join("aman")
|> Factory.join("farah")
|> Factory.join("krys")
|> Factory.start()
|> Factory.draw_card()
|> then(fn state ->
# IO.inspect(state.players)
IO.inspect(state.room)
end)
end
end

0 comments on commit cf3ef40

Please sign in to comment.