# HG changeset patch # User William Morgan # Date 1406505156 25200 # Node ID 476cd9eba2be60163ac7a766a1b7a5846a9b8206 # Parent 2c790eabe3798f62b7ef6f643a1ec949851a4861 fixed event system with refactor to remove gamestate passing. much more simple, less pure. runs correctly in simulator. diff -r 2c790eabe379 -r 476cd9eba2be code/gameState.lm --- a/code/gameState.lm Sun Jul 27 16:14:05 2014 -0700 +++ b/code/gameState.lm Sun Jul 27 16:52:36 2014 -0700 @@ -51,24 +51,17 @@ :curTick { print: 11 expireTick <- curTick + lagTick - #[expireTick isMovement :gameState {behavior: expireTick gameState}] + #[expireTick isMovement :events {behavior: expireTick events}] } } - endOfLives <- makeEventType: (127 * (mapGrid gridArea) * 16) 0 :tick gameState { + endOfLives <- makeEventType: (127 * (mapGrid gridArea) * 16) 0 :tick events { lives <- 0 777 print - addEvents <- [] - #[addEvents gameState] + events } -/* - moveLambdaman <- makeEventType: 127 1 :tick gameState { - addEvents <- [] - #[addEvents gameState] - } -*/ - moveLambdaman <- makeEventType: 127 1 :tick gameState { + moveLambdaman <- makeEventType: 127 1 :tick events { print: 20 move <- getLambdamanChoice: newPos <- (calcPos: move lambdamanPos) @@ -80,17 +73,17 @@ print: 22 if: (impending isFood) { - #[(moveLambdaman: (tick + 10)) gameState] + (moveLambdaman: (tick + 10)) | events } else: { - #[(moveLambdaman: tick) gameState] + (moveLambdaman: tick) | events } } /* fruit <- 0 - fruit1Appears <- makeEventType: (127 * 200) 0 :gameState { + fruit1Appears <- makeEventType: (127 * 200) 0 :events { fruit <- 80 - #[fruit1Expires gameState] + fruit1Expires | events } fruit2Appears <- (127 * 400) 0 fruit1Expires <- (127 * 280) 0 @@ -102,15 +95,14 @@ frightModeDeactivate <- (127 * 20) 0 */ - executeEvents <- :tick isMove events gameState { - print: #[23 tick isMove events gameState] + executeEvents <- :tick isMove events { + print: #[23 tick isMove events] event <- 0 eventTick <- 0 eventIsMove <- 0 eventLam <- 0 unexpired <- [] - res <- 0 while: { not: (events empty?) } do: { event <- events value eventTick <- event value @@ -118,45 +110,38 @@ print: 17 if: ( ( eventTick = tick ) myAnd: ( eventIsMove = isMove ) ) { eventLam <- ((event tail) tail) - res <- eventLam: gameState - unexpired <- (res value) | unexpired - gameState <- res tail + unexpired <- eventLam: unexpired } else: { unexpired <- event | unexpired } events <- events tail } print: 18 - #[unexpired gameState] + unexpired } - executeTick <- :tick events gameState { + executeTick <- :tick events { // TODO: update fruit countdown for AI input print: 14 // 1.) movement - res <- executeEvents: tick 1 events gameState - events <- res value - gameState <- res tail + events <- executeEvents: tick 1 events print: 15 // 2.) actions - res <- executeEvents: tick 0 events gameState - print: #[19 res] - events <- res value - gameState <- res tail + events <- executeEvents: tick 0 events print: 16 // 3.) collide pills powerpills fruit if: pillCount = 0 { win <- 1 - #[[] gameState] + [] } else: { if: lives = 0 { - #[[] gameState] - } else: { - #[events gameState] + [] + } else: { + events } } @@ -177,20 +162,15 @@ print: 4 :runUntil { - res <- 0 tick <- 1 events <- [ endOfLives: 0 moveLambdaman: 0 ] - print: 6 - gameState <- #[0 0] + print: 5 while: {(tick < runUntil) myAnd: (not: (events empty?))} do: { - print: 5 - res <- executeTick: tick events gameState - print: 13 - events <- res value - gameState <- res tail + print: 6 + events <- executeTick: tick events print: 7 tick <- events nextTick }