Load some of the action stuff
This commit is contained in:
		
							parent
							
								
									28077a0eeb
								
							
						
					
					
						commit
						df0b65e097
					
				| @ -3,7 +3,7 @@ CFLAGS=-Wall -lraylib -lGL -lm -lpthread -ldl -lrt -lX11 | ||||
| 
 | ||||
| .PHONY: clean run | ||||
| 
 | ||||
| game: data/rooms.c data/transitions.c data/words.c data/flags.c *.c | ||||
| game: data/actions.c data/rooms.c data/transitions.c data/words.c data/flags.c *.c | ||||
| 	$(CC) *.c $(CFLAGS) -o game | ||||
| 
 | ||||
| data/%.c: data/%.txt | ||||
|  | ||||
							
								
								
									
										50
									
								
								01_text_adventure/action.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								01_text_adventure/action.c
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,50 @@ | ||||
| #include <stdlib.h> | ||||
| #include <string.h> | ||||
| #include "action.h" | ||||
| #include "game.h" | ||||
| #include "util.h" | ||||
| 
 | ||||
| void load_action(Game *g, char *line) { | ||||
|   Action *action = &g->actions->actions[g->actions->count]; | ||||
| 
 | ||||
|   char *line_token_guy; | ||||
|   char *line_token = strtok_r(line, "|", &line_token_guy); | ||||
| 
 | ||||
|   char command_buffer[200]; | ||||
|   strcpy(command_buffer, line_token); | ||||
| 
 | ||||
|   char *command_token_guy; | ||||
|   char *command_word = strtok_r(command_buffer, " ", &command_token_guy); | ||||
|   while (command_word != NULL) { | ||||
|     Word *word = find_word(g->words, command_word); | ||||
|     action->words[action->words_count++] = word; | ||||
|     command_word = strtok_r(NULL, " ", &command_token_guy); | ||||
|   } | ||||
| 
 | ||||
|   line_token = strtok_r(NULL, "|", &line_token_guy); | ||||
| 
 | ||||
|   // predicate bullshit
 | ||||
|   // char *command_predicate_strtok = strtok_r
 | ||||
| 
 | ||||
|   line_token = strtok_r(NULL, "|", &line_token_guy); | ||||
|   action->priority = atoi(line_token); | ||||
| 
 | ||||
|   line_token = strtok_r(NULL, "|", &line_token_guy); | ||||
|   action->description = malloc(strlen(line_token) + 1); | ||||
|   strcpy(action->description, line_token); | ||||
| 
 | ||||
|   line_token = strtok_r(NULL, "|", &line_token_guy); | ||||
| 
 | ||||
|   // action bullshit
 | ||||
| 
 | ||||
|   g->actions->count++; | ||||
| } | ||||
| 
 | ||||
| #include "data/actions.c" | ||||
| void game_load_actions(Game *g) { | ||||
|   parse_multiline_string(g, data_actions_txt, &load_action); | ||||
| } | ||||
| 
 | ||||
| Action *find_action(Actions *actions, char *command) { | ||||
|   return NULL; | ||||
| } | ||||
							
								
								
									
										29
									
								
								01_text_adventure/action.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								01_text_adventure/action.h
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,29 @@ | ||||
| #ifndef _FD_ACTION_ | ||||
| #define _FD_ACTION_ | ||||
| 
 | ||||
| typedef struct Action Action; | ||||
| typedef struct Actions Actions; | ||||
| 
 | ||||
| #include "game.h" | ||||
| #include "word.h" | ||||
| #include "predicate.h" | ||||
| 
 | ||||
| struct Action { | ||||
|   Word *words[4]; | ||||
|   int words_count; | ||||
|   Predicate *predicates[10]; | ||||
|   int predicates_count; | ||||
|   int priority; | ||||
|   char *description; | ||||
|   // Effect *effect;
 | ||||
| }; | ||||
| 
 | ||||
| struct Actions { | ||||
|   Action actions[1000]; | ||||
|   int count; | ||||
| }; | ||||
| 
 | ||||
| void game_load_actions(Game *g); | ||||
| Action *find_action(Actions *actions, char *command); | ||||
| 
 | ||||
| #endif | ||||
							
								
								
									
										4
									
								
								01_text_adventure/data/actions.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								01_text_adventure/data/actions.txt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,4 @@ | ||||
| PULL|*|1|You don't see anything to pull| | ||||
| PULL|IN(lever_room)|10|What do you want to pull?| | ||||
| PULL LEVER|IN(lever_room)|100|You pull the lever. Nice.|ENABLE(lever_pulled) | ||||
| PULL LEVER|IN(lever_room) & ENABLED(lever_pulled)|1000|You already pulled it.| | ||||
| @ -1,2 +1,3 @@ | ||||
| PULL|PULL,YANK,TUG | ||||
| ROPE|ROPE,CORD,STRING,CABLE | ||||
| LEVER|LEVER | ||||
|  | ||||
| @ -10,6 +10,7 @@ | ||||
| #include "word.h" | ||||
| #include "flag.h" | ||||
| #include "predicate.h" | ||||
| #include "action.h" | ||||
| 
 | ||||
| Game *game_create(void) { | ||||
|   Game *g = malloc(sizeof(Game)); | ||||
| @ -39,6 +40,9 @@ Game *game_create(void) { | ||||
|   g->flags = malloc(sizeof(Flags)); | ||||
|   g->flags->count = 0; | ||||
| 
 | ||||
|   g->actions = malloc(sizeof(Actions)); | ||||
|   g->actions->count = 0; | ||||
| 
 | ||||
|   return g; | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -20,6 +20,7 @@ typedef enum Command { | ||||
| #include "log.h" | ||||
| #include "word.h" | ||||
| #include "flag.h" | ||||
| #include "action.h" | ||||
| 
 | ||||
| struct Game { | ||||
|   bool should_close; | ||||
| @ -30,6 +31,7 @@ struct Game { | ||||
|   Transitions *transitions; | ||||
|   Words *words; | ||||
|   Flags *flags; | ||||
|   Actions *actions; | ||||
| }; | ||||
| 
 | ||||
| Game *game_create(void); | ||||
|  | ||||
| @ -20,6 +20,16 @@ int main(void) { | ||||
|     game_load_transitions(g); | ||||
|     game_load_words(g); | ||||
|     game_load_flags(g); | ||||
|     game_load_actions(g); | ||||
| 
 | ||||
|     for (int i = 0; i < g->actions->count; i++) { | ||||
|       for (int j = 0; j < g->actions->actions[i].words_count; j++) { | ||||
| 	printf("%s ", g->actions->actions[i].words[j]->word); | ||||
|       } | ||||
|       printf("|preds|%d|%s|effects", g->actions->actions[i].priority, g->actions->actions[i].description); | ||||
| 
 | ||||
|       printf("\n"); | ||||
|     } | ||||
| 
 | ||||
|     game_run_until_close(g); | ||||
|     CloseWindow(); | ||||
|  | ||||
| @ -33,5 +33,6 @@ Word *find_word(Words *words, char *word_or_syn) { | ||||
|     } | ||||
|   } | ||||
| 
 | ||||
|   printf("Can't find %s\n", word_or_syn); | ||||
|   return NULL; | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user