changeset 54:476cd9eba2be

fixed event system with refactor to remove gamestate passing. much more simple, less pure. runs correctly in simulator.
author William Morgan <billjunk@mrgn.org>
date Sun, 27 Jul 2014 16:52:36 -0700
parents 2c790eabe379
children a3e4d2833301 d087d0b28039
files code/gameState.lm
diffstat 1 files changed, 22 insertions(+), 42 deletions(-) [+]
line wrap: on
line diff
--- 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
 			}