@@ -5,7 +5,7 @@ import Svg exposing (Svg, svg, rect, path, Attribute, ellipse, g)
5
5
import Svg.Attributes exposing (..)
6
6
import Svg.Events exposing (onClick )
7
7
import Msg exposing (Msg (..) )
8
- import Model exposing (Piece (..) , Rack , Shape (..) , Colour (..) , Pattern (..) )
8
+ import Model exposing (Piece (..) , Rack , Shape (..) , Colour (..) , Pattern (..) , TurnState (..) )
9
9
10
10
11
11
rackWidth =
@@ -24,8 +24,8 @@ rackHeightString =
24
24
toString rackHeight
25
25
26
26
27
- renderRack : Maybe Piece -> Rack -> Html Msg
28
- renderRack selected rack =
27
+ renderRack : TurnState -> Maybe Piece -> Rack -> Html Msg
28
+ renderRack turnState selected rack =
29
29
svg
30
30
[ width rackWidthString
31
31
, height rackHeightString
@@ -45,11 +45,6 @@ renderRack selected rack =
45
45
, Svg . stop [ offset " 87.5%" , stopColor ( colourToString Blue ) , stopOpacity " 0" ] []
46
46
]
47
47
]
48
- -- <linearGradient id="Gradient2" x1="0" x2="1" y1="0" y2="1">
49
- -- <stop offset="0%" stop-color="red"></stop>
50
- -- <stop offset="100%" stop-color="red" stop-opacity="0"></stop>
51
- --
52
- -- </linearGradient>
53
48
, Svg . rect
54
49
[ x " 0"
55
50
, y " 0"
@@ -61,11 +56,11 @@ renderRack selected rack =
61
56
]
62
57
[]
63
58
]
64
- ++ renderPieces selected rack
59
+ ++ renderPieces turnState selected rack
65
60
66
61
67
- renderPieces : Maybe Piece -> Rack -> List (Svg Msg )
68
- renderPieces selected rack =
62
+ renderPieces : TurnState -> Maybe Piece -> Rack -> List (Svg Msg )
63
+ renderPieces turnState selected rack =
69
64
let
70
65
isSelected =
71
66
case selected of
@@ -78,7 +73,8 @@ renderPieces selected rack =
78
73
Model . piecePossibilities
79
74
|> List . indexedMap
80
75
( \ index piece ->
81
- renderPieceInRack ( indexToPosition index)
76
+ renderPieceInRack turnState
77
+ ( indexToPosition index)
82
78
( isSelected piece)
83
79
( Model . isInRack piece rack)
84
80
piece
@@ -89,12 +85,18 @@ nullSvg =
89
85
Svg . text " "
90
86
91
87
92
- renderPieceInRack : ( Float , Float ) -> Bool -> Bool -> Piece -> Svg Msg
93
- renderPieceInRack (( xPos, yPos ) as point) isSelected isPresent piece =
88
+ renderPieceInRack : TurnState -> ( Float , Float ) -> Bool -> Bool -> Piece -> Svg Msg
89
+ renderPieceInRack turnState (( xPos, yPos ) as point) isSelected isPresent piece =
94
90
if isPresent then
95
91
let
92
+ extraAttributes =
93
+ if turnState == SelectPiece then
94
+ [ onClick ( Select piece) ]
95
+ else
96
+ []
97
+
96
98
renderedPiece =
97
- renderPiece [ onClick ( Select piece ) ] point piece
99
+ renderPiece extraAttributes point piece
98
100
in
99
101
if isSelected then
100
102
g []
0 commit comments