-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathGameTypes.elm
89 lines (76 loc) · 2.28 KB
/
GameTypes.elm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
module GameTypes where
import Color exposing (Color)
import Dict
import Dict exposing (Dict)
type GameType = HumanVsCpu
| HumanVsHumanLocal
| HumanVsHumanRemote
type GameState = NotStarted
| WaitingForPlayers
| Ongoing
| Connected String
| GameOver
| Disconnected
type PlayerType = Human
| Cpu
| Remote
type Player = Red
| Blue
| SwitchingTo Player
type alias Move = { piece : Piece, idx : Int, location : Location }
type alias Location = (Int, Int)
type alias Board = Dict Location Piece
type alias Score = Dict String Int
type alias Deck = List String
type alias Hands = Dict String (List String)
type alias Log = List (Color, String)
type alias State = {
gameType : GameType,
gameState : GameState,
players : Dict String PlayerType,
playerNames : Dict String String,
turn : Player,
board : Board,
score : Score,
deck : Deck,
hands : Hands,
heldPiece : Maybe Int,
lastPlaced : Maybe Location,
lastPlacedPlayer : Maybe Player,
log : Log
}
type Piece = Vainamoinen
| Ukko
| Kullervo
| Kaarme
| Joukahainen
| SeppoIlmarinen
| Louhi
| Lemminkainen
| NoPiece -- represents error in board lookup
type alias MousePos = (Int, Int)
type alias WindowDims = (Int, Int)
type Action = PickUpPiece Player Int
| PlacePiece MousePos WindowDims
| StartGame GameType Deck Player String
| StartNewGame Deck Player String
| MoveToMainMenu
| MoveToRemoteGameMenu
| GameStarted Deck Player Player String -- represents a StartGame message sent from the server
| Pass
| Switch
| OpponentDisconnected
| CpuAction
| NoAction
| ParseError String
type ClickEvent = StartSinglePlayer
| StartRemoteGameButton
| StartTwoPlayerOnline
| StartTwoPlayerHotseat
| StartNewGameButton
| BoardClick
| PieceInHand Player Int
| PassButton
| MainMenuButton
| SwitchButton
| None