@@ -14,7 +14,8 @@ let private frameUp time =
14
14
let mutable currentTime = time
15
15
fun ( gameEngine : GameEngine ) ->
16
16
let newTime = { Total = currentTime.Total + 0.1 ; Delta = 0.1 f }
17
- gameEngine.Update newTime
17
+ let gameEngine , _ = gameEngine.Update newTime
18
+ gameEngine
18
19
19
20
let private frameUpN time n gameEngine =
20
21
let mutable newTime = time
@@ -50,10 +51,10 @@ module Movement =
50
51
let ``GameEngine reacts to the speed change`` (): unit =
51
52
let gameEngine = newEngine
52
53
let frameUp = frameUp timeZero
53
- Assert.Equal( Point ( 0 , 0 ) , gameEngine.Player.TopLeft)
54
+ Assert.Equal( GameRules.PlayerStartingPosition , gameEngine.Player.TopLeft)
54
55
let gameEngine , _ = gameEngine.ApplyCommand <| VelocityDelta( Vector( 1 , 0 ))
55
56
let gameEngine = frameUp gameEngine
56
- Assert.Equal( Point ( 1 , 0 ), gameEngine.Player.TopLeft)
57
+ Assert.Equal( GameRules.PlayerStartingPosition + Vector ( 1 , 0 ), gameEngine.Player.TopLeft)
57
58
58
59
module Shooting =
59
60
@@ -85,6 +86,30 @@ module Shooting =
85
86
let gameEngine , _ = gameEngine.ApplyCommand Shoot
86
87
Assert.Equal( bulletCount + 1 , gameEngine.Bullets.Length)
87
88
89
+ module Player =
90
+ [<Fact>]
91
+ let ``Moving towards a brick kills the player`` (): unit =
92
+ let level = {
93
+ LevelMap = [|
94
+ [| Empty; Brick 0 |]
95
+ |]
96
+ }
97
+ let player = {
98
+ TopLeft = Point( GameRules.BrickSize.X - GameRules.PlayerSize.X, 0 )
99
+ Velocity = Vector( 0 , 0 )
100
+ Direction = HorizontalDirection.Right
101
+ ShotCooldown = 0
102
+ }
103
+ let player ' = player.Update( level, 1 )
104
+ Assert.Equal( PlayerEffect.Update player, player')
105
+
106
+ let player = {
107
+ player with
108
+ Velocity = Vector( 1 , 0 )
109
+ }
110
+ let player ' = player.Update( level, 1 )
111
+ Assert.Equal( PlayerEffect.Die, player')
112
+
88
113
module ParticleSystem =
89
114
90
115
[<Fact>]
@@ -168,4 +193,4 @@ module Geometry =
168
193
Assert.Equal( Collision.None, CheckCollision level box1)
169
194
170
195
let box2 = { TopLeft = Point( GameRules.BrickSize.X, 0 ); Size = Vector( 1 , 1 ) }
171
- Assert.Equal( Collision.TouchesBrick , CheckCollision level box2)
196
+ Assert.Equal( Collision.CollidesBrick , CheckCollision level box2)
0 commit comments