Add documentation relating to the event information
This commit is contained in:
parent
8a1facf59d
commit
4ac0fb2833
1 changed files with 157 additions and 0 deletions
157
planning.txt
Normal file
157
planning.txt
Normal file
|
|
@ -0,0 +1,157 @@
|
||||||
|
OnConnect
|
||||||
|
- Client connects to the server, this is just an information log event
|
||||||
|
|
||||||
|
OnDisconnect
|
||||||
|
- Client disconnects from the server, this is just an information log event
|
||||||
|
|
||||||
|
HostGame
|
||||||
|
- Client wants to start a new game, create a basic room with the basic
|
||||||
|
information included in the object.
|
||||||
|
- May want to save currently active rooms to disk to prevent data being
|
||||||
|
lost in case of a server/computer crash.
|
||||||
|
- On success:
|
||||||
|
- Emit `GameCreated` event w/ necessary data
|
||||||
|
- On error:
|
||||||
|
- Emit `GenericError` event w/ more info
|
||||||
|
|
||||||
|
JoinGame
|
||||||
|
- Client wants to join an already existing game
|
||||||
|
- Check if a room exists:
|
||||||
|
- If no:
|
||||||
|
- Emit `InvalidRoom` event
|
||||||
|
- Check if the username is taken:
|
||||||
|
- If yes:
|
||||||
|
- Does the user have the same token as the person in the game already
|
||||||
|
- If yes:
|
||||||
|
- Allow the player to connect with that name
|
||||||
|
- Emit `GameRejoined`
|
||||||
|
- If no:
|
||||||
|
- Emit `UsernameTaken`
|
||||||
|
- If no:
|
||||||
|
- Emit `GameJoined` to joining client
|
||||||
|
- Emit `UserJoined` to all existing clients
|
||||||
|
|
||||||
|
StartGame
|
||||||
|
- This is triggered the host user triggers the start of the game.
|
||||||
|
- Server decides who all is fascist/liberal then picks one fascist to be Hitler
|
||||||
|
- Store this data, send each player only the data is relevant to that player:
|
||||||
|
- Liberals:
|
||||||
|
- Party affiliation
|
||||||
|
- Fascists (not Hitler):
|
||||||
|
- Party affiliation
|
||||||
|
- Other fascist's identity
|
||||||
|
- Hitler's identity
|
||||||
|
- Hitler:
|
||||||
|
- Party affiliation
|
||||||
|
- "Oh hey, you're Hitler"
|
||||||
|
- If 5-6 players:
|
||||||
|
- Send other fascist's identity
|
||||||
|
- If 7+ players:
|
||||||
|
- No one else's identity
|
||||||
|
- Start the main game loop. (emit `PresidentNominate` to the players, with
|
||||||
|
list of eligible players, only the president can send a response to
|
||||||
|
this event, any other events in this state will be ignored.)
|
||||||
|
|
||||||
|
ChancellorNomination
|
||||||
|
- The president's nomination of player to elect as chancellor
|
||||||
|
- Emit `ChancellorVote` to all alive
|
||||||
|
- Wait until we get a `Vote` event from each client.
|
||||||
|
|
||||||
|
Vote
|
||||||
|
- Sent from a client that has voted, this will be in a binary yes/no format
|
||||||
|
- Only alive players send vote events, so only wait for that many events
|
||||||
|
- Once all players have voted:
|
||||||
|
- If majority vote "no" or tied:
|
||||||
|
- Add one to election counter
|
||||||
|
- Check if election counter is == 3
|
||||||
|
- If yes:
|
||||||
|
- Enact top policy from the policy deck, do not take any
|
||||||
|
executive actions
|
||||||
|
- Check win conditions of the boards
|
||||||
|
- Reset election counter
|
||||||
|
- If no:
|
||||||
|
- Go to next president
|
||||||
|
- If majority vote "yes":
|
||||||
|
- Check enacted policies to see if there are >= 3 fascist policies
|
||||||
|
in play
|
||||||
|
- if yes:
|
||||||
|
- Is the chancellor Hitler?
|
||||||
|
- If yes:
|
||||||
|
- Emit `GameEnd`, fascists won
|
||||||
|
- If no:
|
||||||
|
- Take 3 policies from the top of the deck, send them to president
|
||||||
|
|
||||||
|
PresidentPolicies
|
||||||
|
- Client sends the two policies that the president wants to give the chancellor.
|
||||||
|
- Server discards the third, not chosen policy
|
||||||
|
- Server sends chancellor the two chosen policies
|
||||||
|
|
||||||
|
VetoRequest
|
||||||
|
- Chancellor is requesting a discard of both policies
|
||||||
|
- Send a confirmation to the president
|
||||||
|
|
||||||
|
VetoConfirm
|
||||||
|
- President's choice for the veto vote, this handles both the president
|
||||||
|
denying the veto and accepting it.
|
||||||
|
- If president allows veto:
|
||||||
|
- Discard the two policies
|
||||||
|
- Add one to election counter
|
||||||
|
- Check if election counter is == 3
|
||||||
|
- If yes:
|
||||||
|
- Enact top policy from the policy deck, do not take any
|
||||||
|
executive actions
|
||||||
|
- Check win conditions of the boards
|
||||||
|
- Reset election counter
|
||||||
|
- If no:
|
||||||
|
- Go to next president
|
||||||
|
|
||||||
|
ChancellorPolicy
|
||||||
|
- Client sends the policy that the chancellor chose
|
||||||
|
- Server discards other policy
|
||||||
|
- Did the policy cover an executive action?
|
||||||
|
- If yes:
|
||||||
|
- Take according action
|
||||||
|
- If no:
|
||||||
|
- Continue
|
||||||
|
- Then:
|
||||||
|
- Check win conditions
|
||||||
|
- Reset election counter
|
||||||
|
- Go to next president
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Special Actions:
|
||||||
|
|
||||||
|
Execution:
|
||||||
|
- Server initiates process
|
||||||
|
- Send president list of alive players
|
||||||
|
- Receive `ExecutePlayer`
|
||||||
|
- Is the chosen player Hitler?
|
||||||
|
- If yes:
|
||||||
|
- Liberals win the game
|
||||||
|
- If no:
|
||||||
|
- Chosen player is marked as dead so we don't wait for their
|
||||||
|
votes, and skip over them in the presidential cycle
|
||||||
|
- Then:
|
||||||
|
- Stop processing the action, go back to main game loop
|
||||||
|
|
||||||
|
Special Election:
|
||||||
|
- President receives list of all non-dead players
|
||||||
|
- Receive `NextPresident`:
|
||||||
|
- Put the chosen player at the front of the queue
|
||||||
|
- Stop processing the action, go back to main game loop
|
||||||
|
|
||||||
|
View top 3 policies:
|
||||||
|
- Send copies of the top three policies to the president (not does not
|
||||||
|
modify policy deck)
|
||||||
|
- Receive `ExecutiveConfirmation`:
|
||||||
|
- Stop processing action, go back to main game loop
|
||||||
|
|
||||||
|
Investigate loyalty:
|
||||||
|
- President receives list of players that have not been investigated
|
||||||
|
- Receive `InvestigateAffiliation`:
|
||||||
|
- Server sends the client the player's party affiliation
|
||||||
|
- Mark player has having been investigated
|
||||||
|
- Receive `ExecutiveConfirmation`:
|
||||||
|
- Stop processing action, go back to main game loop
|
||||||
Loading…
Add table
Add a link
Reference in a new issue