|
|
|
@ -386,6 +386,11 @@ def modifyCurWorld (fn : World → m World) [MonadError m] : m Unit := do
|
|
|
|
return {game with worlds := {game.worlds with nodes := game.worlds.nodes.insert world.name (← fn world) }}
|
|
|
|
return {game with worlds := {game.worlds with nodes := game.worlds.nodes.insert world.name (← fn world) }}
|
|
|
|
|
|
|
|
|
|
|
|
def addLevel (level : GameLevel) [MonadError m] : m Unit := do
|
|
|
|
def addLevel (level : GameLevel) [MonadError m] : m Unit := do
|
|
|
|
|
|
|
|
let worldId ← getCurWorldId
|
|
|
|
|
|
|
|
match ← getLevel? ⟨← getCurGameId, worldId, level.index⟩ with
|
|
|
|
|
|
|
|
| some _existingLevel =>
|
|
|
|
|
|
|
|
throwError m!"Level {level.index} already exists for world {worldId}!"
|
|
|
|
|
|
|
|
| none =>
|
|
|
|
modifyCurWorld fun world => do
|
|
|
|
modifyCurWorld fun world => do
|
|
|
|
return {world with levels := world.levels.insert level.index level}
|
|
|
|
return {world with levels := world.levels.insert level.index level}
|
|
|
|
|
|
|
|
|
|
|
|
|