begin title screen by adding title screen type
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
signature GAME_TYPE =
|
signature GAME_TYPE =
|
||||||
sig
|
sig
|
||||||
datatype mode = LEVEL of LevelType.level_type
|
datatype mode = LEVEL of LevelType.level_type | TITLE of TitleType.title_type
|
||||||
|
|
||||||
type game_type = {userKeys: CoreKey.user_key, mode: mode}
|
type game_type = {userKeys: CoreKey.user_key, mode: mode}
|
||||||
|
|
||||||
@@ -9,12 +9,12 @@ end
|
|||||||
|
|
||||||
structure GameType :> GAME_TYPE =
|
structure GameType :> GAME_TYPE =
|
||||||
struct
|
struct
|
||||||
datatype mode = LEVEL of LevelType.level_type
|
datatype mode = LEVEL of LevelType.level_type | TITLE of TitleType.title_type
|
||||||
|
|
||||||
type game_type = {userKeys: CoreKey.user_key, mode: mode}
|
type game_type = {userKeys: CoreKey.user_key, mode: mode}
|
||||||
|
|
||||||
fun init userKeys =
|
fun init userKeys =
|
||||||
let val mode = LEVEL LevelType.initial
|
let val mode = TITLE TitleType.initial
|
||||||
in {mode = mode, userKeys = userKeys}
|
in {mode = mode, userKeys = userKeys}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -12,6 +12,10 @@ struct
|
|||||||
let val level = LevelUpdate.update (level, input)
|
let val level = LevelUpdate.update (level, input)
|
||||||
in LEVEL level
|
in LEVEL level
|
||||||
end
|
end
|
||||||
|
| TITLE title =>
|
||||||
|
let val title = TitleUpdate.update (title, input)
|
||||||
|
in TITLE title
|
||||||
|
end
|
||||||
in
|
in
|
||||||
{mode = mode, userKeys = userKeys}
|
{mode = mode, userKeys = userKeys}
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
structure LevelUpdate =
|
structure LevelUpdate =
|
||||||
struct
|
struct
|
||||||
fun update (game, input) =
|
fun update (level, input) =
|
||||||
let
|
let
|
||||||
val
|
val
|
||||||
{ player
|
{ player
|
||||||
@@ -11,9 +11,9 @@ struct
|
|||||||
, enemies
|
, enemies
|
||||||
, graph
|
, graph
|
||||||
, fallingEnemies
|
, fallingEnemies
|
||||||
} = game
|
} = level
|
||||||
|
|
||||||
val player = Player.runPhysicsAndInput (game, input)
|
val player = Player.runPhysicsAndInput (level, input)
|
||||||
|
|
||||||
val enemyTree = Enemy.generateTree enemies
|
val enemyTree = Enemy.generateTree enemies
|
||||||
val player = Player.checkEnemyCollisions (player, enemies, enemyTree)
|
val player = Player.checkEnemyCollisions (player, enemies, enemyTree)
|
||||||
|
|||||||
17
fcore/title/title-type.sml
Normal file
17
fcore/title/title-type.sml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
signature TITLE_TYPE =
|
||||||
|
sig
|
||||||
|
datatype focus = START_BUTTON
|
||||||
|
|
||||||
|
type title_type = {focus: focus}
|
||||||
|
|
||||||
|
val initial: title_type
|
||||||
|
end
|
||||||
|
|
||||||
|
structure TitleType :> TITLE_TYPE =
|
||||||
|
struct
|
||||||
|
datatype focus = START_BUTTON
|
||||||
|
|
||||||
|
type title_type = {focus: focus}
|
||||||
|
|
||||||
|
val initial = {focus = START_BUTTON}
|
||||||
|
end
|
||||||
6
fcore/title/title-update.sml
Normal file
6
fcore/title/title-update.sml
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
structure TitleUpdate =
|
||||||
|
struct
|
||||||
|
open TitleType
|
||||||
|
|
||||||
|
fun update (titleState, input) = titleState
|
||||||
|
end
|
||||||
3
oms.mlb
3
oms.mlb
@@ -52,6 +52,9 @@ fcore/level/player/player-attack.sml
|
|||||||
fcore/level/projectile.sml
|
fcore/level/projectile.sml
|
||||||
fcore/level/level-update.sml
|
fcore/level/level-update.sml
|
||||||
|
|
||||||
|
fcore/title/title-type.sml
|
||||||
|
fcore/title/title-update.sml
|
||||||
|
|
||||||
fcore/game-type.sml
|
fcore/game-type.sml
|
||||||
fcore/game-update.sml
|
fcore/game-update.sml
|
||||||
|
|
||||||
|
|||||||
@@ -213,7 +213,7 @@ struct
|
|||||||
fun drawField ({fieldVertexBuffer, fieldProgram, fieldLength, ...}) =
|
fun drawField ({fieldVertexBuffer, fieldProgram, fieldLength, ...}) =
|
||||||
drawXyrgba (fieldVertexBuffer, fieldProgram, fieldLength)
|
drawXyrgba (fieldVertexBuffer, fieldProgram, fieldLength)
|
||||||
|
|
||||||
fun drawLevel (shellState: t) =
|
fun helpDrawLevel (shellState: t) =
|
||||||
let
|
let
|
||||||
val _ = drawWall shellState
|
val _ = drawWall shellState
|
||||||
val _ = drawPlayer shellState
|
val _ = drawPlayer shellState
|
||||||
@@ -222,12 +222,7 @@ struct
|
|||||||
()
|
()
|
||||||
end
|
end
|
||||||
|
|
||||||
fun drawMode (shellState: t, game: GameType.game_type) =
|
fun drawLevel (shellState: t, level) =
|
||||||
let
|
|
||||||
open GameType
|
|
||||||
in
|
|
||||||
case #mode game of
|
|
||||||
LEVEL level =>
|
|
||||||
let
|
let
|
||||||
val width = InputState.getWidth ()
|
val width = InputState.getWidth ()
|
||||||
val height = InputState.getHeight ()
|
val height = InputState.getHeight ()
|
||||||
@@ -250,10 +245,18 @@ struct
|
|||||||
val shellState = uploadWall (shellState, wallVec)
|
val shellState = uploadWall (shellState, wallVec)
|
||||||
val shellState = uploadPlayer (shellState, playerVec)
|
val shellState = uploadPlayer (shellState, playerVec)
|
||||||
val shellState = uploadField (shellState, fieldVec)
|
val shellState = uploadField (shellState, fieldVec)
|
||||||
val () = drawLevel shellState
|
val () = helpDrawLevel shellState
|
||||||
in
|
in
|
||||||
shellState
|
shellState
|
||||||
end
|
end
|
||||||
|
|
||||||
|
fun drawMode (shellState: t, game: GameType.game_type) =
|
||||||
|
let
|
||||||
|
open GameType
|
||||||
|
in
|
||||||
|
case #mode game of
|
||||||
|
LEVEL level => drawLevel (shellState, level)
|
||||||
|
| TITLE title => shellState
|
||||||
end
|
end
|
||||||
|
|
||||||
fun helpLoop (shellState as {window, ...}: t, game) =
|
fun helpLoop (shellState as {window, ...}: t, game) =
|
||||||
|
|||||||
Reference in New Issue
Block a user