Print room description when first entering a room
This commit is contained in:
		
							parent
							
								
									42e90b8531
								
							
						
					
					
						commit
						bfc20bdfce
					
				| @ -13,7 +13,7 @@ void cause_effect(Game *g, Effect *e) { | |||||||
|   case EFFECT_NOOP: |   case EFFECT_NOOP: | ||||||
|     break; |     break; | ||||||
|   case EFFECT_GOTO: |   case EFFECT_GOTO: | ||||||
|     g->current_room = find_room(g->rooms, e->argument); |     change_current_room(g, find_room(g->rooms, e->argument)); | ||||||
|     break; |     break; | ||||||
|   case EFFECT_INCREMENT: |   case EFFECT_INCREMENT: | ||||||
|     find_flag(g->flags, e->argument)->value++; |     find_flag(g->flags, e->argument)->value++; | ||||||
| @ -31,7 +31,6 @@ void cause_effect(Game *g, Effect *e) { | |||||||
|     g->should_close = true; |     g->should_close = true; | ||||||
|     break; |     break; | ||||||
|   case EFFECT_LOOK_ROOM: |   case EFFECT_LOOK_ROOM: | ||||||
|     // TODO 
 |  | ||||||
|     push_line_to_log(g->input->log, find_room_in(g)->description); |     push_line_to_log(g->input->log, find_room_in(g)->description); | ||||||
|     break; |     break; | ||||||
|   } |   } | ||||||
|  | |||||||
| @ -34,6 +34,7 @@ Game *game_create(void) { | |||||||
| 
 | 
 | ||||||
|   g->input = input; |   g->input = input; | ||||||
| 
 | 
 | ||||||
|  |   change_current_room(g, &g->rooms->rooms[0]); | ||||||
|   return g; |   return g; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -85,3 +86,11 @@ void game_run_until_close(Game *g) { | |||||||
|       game_draw(g); |       game_draw(g); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | 
 | ||||||
|  | void change_current_room(Game *g, Room *r) { | ||||||
|  |   g->current_room = r; | ||||||
|  |   if (!r->visited) { | ||||||
|  |     push_line_to_log(g->input->log, find_room_in(g)->description); | ||||||
|  |   } | ||||||
|  |   r->visited = true; | ||||||
|  | } | ||||||
|  | |||||||
| @ -43,5 +43,6 @@ void game_run_until_close(Game *g); | |||||||
| void game_handle_input(Game *g); | void game_handle_input(Game *g); | ||||||
| void game_draw(Game *g); | void game_draw(Game *g); | ||||||
| void free_game(Game *g); | void free_game(Game *g); | ||||||
|  | void change_current_room(Game *g, Room *r); | ||||||
| 
 | 
 | ||||||
| #endif | #endif | ||||||
|  | |||||||
| @ -11,6 +11,8 @@ void load_room(Game *g, char *line) { | |||||||
|   g->rooms->rooms[g->rooms->count].name = malloc(strlen(token) + 1); |   g->rooms->rooms[g->rooms->count].name = malloc(strlen(token) + 1); | ||||||
|   strcpy(g->rooms->rooms[g->rooms->count].name, token); |   strcpy(g->rooms->rooms[g->rooms->count].name, token); | ||||||
| 
 | 
 | ||||||
|  |   g->rooms->rooms[g->rooms->count].visited = false; | ||||||
|  | 
 | ||||||
|   g->rooms->count++; |   g->rooms->count++; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -20,7 +22,6 @@ void game_load_rooms(Game *g) { | |||||||
|   g->rooms->count = 0; |   g->rooms->count = 0; | ||||||
|   parse_multiline_string(g, data_rooms_txt, &load_room); |   parse_multiline_string(g, data_rooms_txt, &load_room); | ||||||
|   printf("loaded rooms\n"); |   printf("loaded rooms\n"); | ||||||
|   g->current_room = &g->rooms->rooms[0]; |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void free_room(Room r) { | void free_room(Room r) { | ||||||
|  | |||||||
| @ -4,8 +4,11 @@ | |||||||
| typedef struct Room Room; | typedef struct Room Room; | ||||||
| typedef struct Rooms Rooms; | typedef struct Rooms Rooms; | ||||||
| 
 | 
 | ||||||
|  | #include <stdbool.h> | ||||||
|  | 
 | ||||||
| struct Room { | struct Room { | ||||||
|   char *name; |   char *name; | ||||||
|  |   bool visited; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| struct Rooms { | struct Rooms { | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user