git » fp-git.git » commit 84ac3ad

loose tiles change coded. some minor event changes

author ecalot
2004-11-07 11:46:50 UTC
committer ecalot
2004-11-07 11:46:50 UTC
parent 7db7c277f9a392ce35f1e0b61727e3863ade6221

loose tiles change coded. some minor event changes

FP/src/include/maps.h +1 -1
FP/src/ker/kid.c +8 -3
FP/src/ker/object.c +8 -3
FP/src/res/maps.c +8 -1

diff --git a/FP/src/include/maps.h b/FP/src/include/maps.h
index 1e1c033..db7d02a 100644
--- a/FP/src/include/maps.h
+++ b/FP/src/include/maps.h
@@ -51,7 +51,7 @@ tRoom mapGetRoom(tMap* map, tRoomId roomId);
 void  mapStart(tMap* map, tKid* kid, tRoomId* roomId, int level);
 
 /* events */
-void  mapPressedTile(tMap* map, tTile tile, int s, int x, int y);
+int  mapPressedTile(tMap* map, tTile tile, int s, int x, int y);
 void  mapMove(tMap* map);
 
 #endif
diff --git a/FP/src/ker/kid.c b/FP/src/ker/kid.c
index 7586643..ee9df81 100644
--- a/FP/src/ker/kid.c
+++ b/FP/src/ker/kid.c
@@ -145,19 +145,24 @@ int kidMove(tKid* kid,tKey key,tRoom* room) {
 #ifdef NEW_KERNEL
 	/* advance state and get the flag, then interpret the flag and do the events */
 	short flags;
+	int refresh=0;
 	flags=stateUpdate(&key,kid,room);
 	if (flags&STATES_FLAG_P)
-		mapPressedTile(
+		refresh=mapPressedTile(
 			room->level,
 			roomGetTile(room,(kid->location/10)+1,kid->floor+1),
 			room->id,
-			(kid->location/TILE_W)+1,
+			(kid->location/10)+1,
 			kid->floor+1
 		);
 	if (flags&STATES_FLAG_F)
 		kid->floor++;
 	if (flags&STATES_FLAG_U)
 		kid->floor--;
+
+	if (refresh) { /* room was changed and needs to be refreshed */
+		*room=mapGetRoom(room->level,room->id);
+	}
 	return flags;
 #else
 	int result;
@@ -303,7 +308,7 @@ int kidMove(tKid* kid,tKey key,tRoom* room) {
 		fprintf(stderr,"kidMove: Tile not walkable, falling\n");
 		kid->floor++;
 	} else {
-		mapPressedTile(room->level, tile, room->id, (kid->location/TILE_W)+1, kid->floor+1);
+		mapPressedTile(room->level, tile, room->id, (kid->location/10)+1, kid->floor+1);
 	}
 	if (kid->floor<0) {
 		kid->floor=2;
diff --git a/FP/src/ker/object.c b/FP/src/ker/object.c
index 7586643..ee9df81 100644
--- a/FP/src/ker/object.c
+++ b/FP/src/ker/object.c
@@ -145,19 +145,24 @@ int kidMove(tKid* kid,tKey key,tRoom* room) {
 #ifdef NEW_KERNEL
 	/* advance state and get the flag, then interpret the flag and do the events */
 	short flags;
+	int refresh=0;
 	flags=stateUpdate(&key,kid,room);
 	if (flags&STATES_FLAG_P)
-		mapPressedTile(
+		refresh=mapPressedTile(
 			room->level,
 			roomGetTile(room,(kid->location/10)+1,kid->floor+1),
 			room->id,
-			(kid->location/TILE_W)+1,
+			(kid->location/10)+1,
 			kid->floor+1
 		);
 	if (flags&STATES_FLAG_F)
 		kid->floor++;
 	if (flags&STATES_FLAG_U)
 		kid->floor--;
+
+	if (refresh) { /* room was changed and needs to be refreshed */
+		*room=mapGetRoom(room->level,room->id);
+	}
 	return flags;
 #else
 	int result;
@@ -303,7 +308,7 @@ int kidMove(tKid* kid,tKey key,tRoom* room) {
 		fprintf(stderr,"kidMove: Tile not walkable, falling\n");
 		kid->floor++;
 	} else {
-		mapPressedTile(room->level, tile, room->id, (kid->location/TILE_W)+1, kid->floor+1);
+		mapPressedTile(room->level, tile, room->id, (kid->location/10)+1, kid->floor+1);
 	}
 	if (kid->floor<0) {
 		kid->floor=2;
diff --git a/FP/src/res/maps.c b/FP/src/res/maps.c
index 388cdf7..2897dc3 100644
--- a/FP/src/res/maps.c
+++ b/FP/src/res/maps.c
@@ -345,7 +345,8 @@ void  mapMove(tMap* map) {
 	}
 }
 
-void  mapPressedTile(tMap* map, tTile tile, int s, int x, int y) {
+int mapPressedTile(tMap* map, tTile tile, int s, int x, int y) {
+	int refresh=0;
 	if (tile.isPressable) {
 		tEvent* event;
 		((tPressable*)tile.moreInfo)->action=eJustPressed;
@@ -356,6 +357,12 @@ void  mapPressedTile(tMap* map, tTile tile, int s, int x, int y) {
 			event->gate->action=tile.isRaise?eOpening:eClosingFast;
 		} while	((event++)->triggerNext);
 	}
+	printf("s=%d x=%d y=%d\n",s,x,y);
+	if (tile.code==T_LOOSE) {
+		map->fore[(s-1)*30+(x-1)+(y-1)*10]=T_EMPTY;
+		refresh=1; /* room changed, refresh it */
+	}
+	return refresh;
 }
 
 void  mapFreeLevel(tMap* map) {