summaryrefslogtreecommitdiff
path: root/sw-ui/src/redux/actions
diff options
context:
space:
mode:
authorJoffrey BION <joffrey.bion@gmail.com>2019-05-16 23:48:38 +0200
committerJoffrey BION <joffrey.bion@gmail.com>2019-05-16 23:48:38 +0200
commit2382a452456e4bdef4584e1046925e372624cb79 (patch)
tree0e49b2e5d81facb55fb8b08228abeb218a27d466 /sw-ui/src/redux/actions
parentRemove GRADLE_METADATA feature to avoid breaking frontend build (diff)
downloadseven-wonders-2382a452456e4bdef4584e1046925e372624cb79.tar.gz
seven-wonders-2382a452456e4bdef4584e1046925e372624cb79.tar.bz2
seven-wonders-2382a452456e4bdef4584e1046925e372624cb79.zip
Rationalize module names
Diffstat (limited to 'sw-ui/src/redux/actions')
-rw-r--r--sw-ui/src/redux/actions/all.ts5
-rw-r--r--sw-ui/src/redux/actions/game.ts32
-rw-r--r--sw-ui/src/redux/actions/lobby.ts32
-rw-r--r--sw-ui/src/redux/actions/user.ts17
4 files changed, 86 insertions, 0 deletions
diff --git a/sw-ui/src/redux/actions/all.ts b/sw-ui/src/redux/actions/all.ts
new file mode 100644
index 00000000..57d2a443
--- /dev/null
+++ b/sw-ui/src/redux/actions/all.ts
@@ -0,0 +1,5 @@
+import { GameAction } from './game';
+import { LobbyAction } from './lobby';
+import { PlayerAction } from './user';
+
+export type Action = PlayerAction | LobbyAction | GameAction
diff --git a/sw-ui/src/redux/actions/game.ts b/sw-ui/src/redux/actions/game.ts
new file mode 100644
index 00000000..b67ea1dc
--- /dev/null
+++ b/sw-ui/src/redux/actions/game.ts
@@ -0,0 +1,32 @@
+import { ApiPlayerMove, ApiPlayerTurnInfo, ApiPreparedCard, ApiTable } from '../../api/model';
+
+export const REQUEST_SAY_READY = 'GAME/REQUEST_SAY_READY';
+export const REQUEST_PREPARE_MOVE = 'GAME/REQUEST_PREPARE_MOVE';
+export const PLAYER_READY_RECEIVED = 'GAME/PLAYER_READY_RECEIVED';
+export const TABLE_UPDATE_RECEIVED = 'GAME/TABLE_UPDATE_RECEIVED';
+export const PREPARED_CARD_RECEIVED = 'GAME/PREPARED_CARD_RECEIVED';
+export const TURN_INFO_RECEIVED = 'GAME/TURN_INFO_RECEIVED';
+
+export type SayReadyAction = { type: typeof REQUEST_SAY_READY };
+export type PrepareMoveAction = { type: typeof REQUEST_PREPARE_MOVE, move: ApiPlayerMove };
+export type PlayerReadyEvent = { type: typeof PLAYER_READY_RECEIVED, username: string };
+export type TableUpdateEvent = { type: typeof TABLE_UPDATE_RECEIVED, table: ApiTable };
+export type PreparedCardEvent = { type: typeof PREPARED_CARD_RECEIVED, card: ApiPreparedCard };
+export type TurnInfoEvent = { type: typeof TURN_INFO_RECEIVED, turnInfo: ApiPlayerTurnInfo };
+
+export type GameAction =
+ SayReadyAction
+ | PrepareMoveAction
+ | PlayerReadyEvent
+ | TableUpdateEvent
+ | PreparedCardEvent
+ | TurnInfoEvent;
+
+export const actions = {
+ sayReady: () => ({ type: REQUEST_SAY_READY }),
+ prepareMove: (move: ApiPlayerMove) => ({ type: REQUEST_PREPARE_MOVE, move }),
+ receivePlayerReady: (username: string) => ({ type: PLAYER_READY_RECEIVED, username }),
+ receiveTableUpdate: (table: ApiTable) => ({ type: TABLE_UPDATE_RECEIVED, table }),
+ receivePreparedCard: (card: ApiPreparedCard) => ({ type: PREPARED_CARD_RECEIVED, card }),
+ receiveTurnInfo: (turnInfo: ApiPlayerTurnInfo) => ({ type: TURN_INFO_RECEIVED, turnInfo }),
+};
diff --git a/sw-ui/src/redux/actions/lobby.ts b/sw-ui/src/redux/actions/lobby.ts
new file mode 100644
index 00000000..c121b022
--- /dev/null
+++ b/sw-ui/src/redux/actions/lobby.ts
@@ -0,0 +1,32 @@
+import { ApiLobby } from '../../api/model';
+
+export const UPDATE_GAMES = 'GAMES/UPDATE_GAMES';
+export const REQUEST_CREATE_GAME = 'GAMES/REQUEST_CREATE_GAME';
+export const REQUEST_JOIN_GAME = 'GAMES/REQUEST_JOIN_GAME';
+export const REQUEST_START_GAME = 'GAMES/REQUEST_START_GAME';
+export const ENTER_LOBBY = 'GAMES/ENTER_LOBBY';
+export const ENTER_GAME = 'GAMES/ENTER_GAME';
+
+export type UpdateGamesAction = { type: typeof UPDATE_GAMES, games: ApiLobby[]};
+export type RequestCreateGameAction = { type: typeof REQUEST_CREATE_GAME, gameName: string };
+export type RequestJoinGameAction = { type: typeof REQUEST_JOIN_GAME, gameId: number };
+export type RequestStartGameAction = { type: typeof REQUEST_START_GAME };
+export type EnterLobbyAction = { type: typeof ENTER_LOBBY, gameId: number };
+export type EnterGameAction = { type: typeof ENTER_GAME, gameId: number };
+
+export type LobbyAction =
+ | UpdateGamesAction
+ | RequestCreateGameAction
+ | RequestJoinGameAction
+ | RequestStartGameAction
+ | EnterLobbyAction
+ | EnterGameAction;
+
+export const actions = {
+ updateGames: (games: ApiLobby[]): UpdateGamesAction => ({ type: UPDATE_GAMES, games }),
+ requestJoinGame: (gameId: number): RequestJoinGameAction => ({ type: REQUEST_JOIN_GAME, gameId }),
+ requestCreateGame: (gameName: string): RequestCreateGameAction => ({ type: REQUEST_CREATE_GAME, gameName }),
+ requestStartGame: (): RequestStartGameAction => ({ type: REQUEST_START_GAME }),
+ enterLobby: (gameId: number): EnterLobbyAction => ({ type: ENTER_LOBBY, gameId }),
+ enterGame: (gameId: number): EnterGameAction => ({ type: ENTER_GAME, gameId }),
+};
diff --git a/sw-ui/src/redux/actions/user.ts b/sw-ui/src/redux/actions/user.ts
new file mode 100644
index 00000000..29c85707
--- /dev/null
+++ b/sw-ui/src/redux/actions/user.ts
@@ -0,0 +1,17 @@
+import { Map } from 'immutable';
+import { ApiPlayer } from '../../api/model';
+
+export const REQUEST_CHOOSE_USERNAME = 'USER/REQUEST_CHOOSE_USERNAME';
+export const SET_CURRENT_PLAYER = 'USER/SET_CURRENT_PLAYER';
+export const UPDATE_PLAYERS = 'USER/UPDATE_PLAYERS';
+
+export type RequestChooseUsernameAction = { type: typeof REQUEST_CHOOSE_USERNAME, username: string };
+export type SetCurrentPlayerAction = { type: typeof SET_CURRENT_PLAYER, player: ApiPlayer };
+export type UpdatePlayersAction = { type: typeof UPDATE_PLAYERS, players: Map<string, ApiPlayer> };
+
+export type PlayerAction = RequestChooseUsernameAction | SetCurrentPlayerAction | UpdatePlayersAction;
+
+export const actions = {
+ chooseUsername: (username: string): RequestChooseUsernameAction => ({ type: REQUEST_CHOOSE_USERNAME, username }),
+ setCurrentPlayer: (player: ApiPlayer): SetCurrentPlayerAction => ({ type: SET_CURRENT_PLAYER, player }),
+};
bgstack15