author | ecalot
<ecalot> 2004-11-07 11:46:50 UTC |
committer | ecalot
<ecalot> 2004-11-07 11:46:50 UTC |
parent | 7db7c277f9a392ce35f1e0b61727e3863ade6221 |
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) {