#include #include #include #include #include #include #include #include #include #include #include #include #include "consts.h" #include "base.h" #include "display.h" #include "assembly.h" void init_empty_board() { start = malloc(sizeof(cell)); start->id = 0 ; start->coord_x = 50 ; start->coord_y = 50 ; start->star_allowed = false ; start->type = START ; start->prev_1 = start; start->prev_2 = NULL; start->prev_3 = NULL; start->prev_4 = NULL; start->next_1 = start; start->next_2 = NULL; start->next_3 = NULL; start->next_4 = NULL; start->meta = "start"; } void init_players() { players = malloc(sizeof(player)*n_players); for(int i = 0; i < n_players; i++) { players[i].name = "player" ; players[i].standing_tile = start ; players[i].coins = 10 ; players[i].stars = 0 ; players[i].items = malloc(sizeof(ITEM)*3) ; players[i].max_items = 3 ; players[i].item_len = 0 ; players[i].stats.minigames_wins = 0; players[i].stats.coin_collected = 0 ; players[i].stats.red_count = 0 ; players[i].stats.bowser_count = 0 ; players[i].stats.items_used = 0 ; players[i].stats.lost_coins = 0 ; players[i].stats.lost_stars = 0 ; players[i].stats.tiles_travelled = 0 ; players[i].stats.events_triggered = 0 ; players[i].stats.hidden_blocks = 0 ; } } void init_shop(char* filename) { item_costs = malloc(sizeof(int)*n_items); item_start = malloc(sizeof(int)*n_items) ; item_end = malloc(sizeof(int)*n_items) ; item_is_normal_type = malloc(sizeof(bool)*n_items) ; item_is_special_type = malloc(sizeof(bool)*n_items) ; FILE* ptr = fopen(filename, "r"); if(ptr == NULL) { fprintf(stderr, "ERROR : unable to load config file %s\n", filename); exit(1); } else { printf(" Loading %s...\n", filename); } int buffer = -1 ; int index = 0 ; int sub_index = 0 ; char c = fgetc(ptr); bool is_reading = false ; bool ignore_line = false ; while(c != EOF && c != '$') { if(!ignore_line) { if(c == '{') { is_reading = true; } else if(c == '}') { is_reading = false; sub_index = 0; } else if(c == '*') { ignore_line = true; } else if(c == ':') { buffer = 0; } else if(is_reading && buffer != -1) { if(is_an_integer(c)) { buffer *= 10; buffer += (char)c - 48; } else { if(sub_index == 0) { index = buffer; } else if(sub_index == 1) { item_start[index] = buffer; } else if(sub_index == 2) { item_end[index] = n_turns - buffer; } else if(sub_index == 3) { item_costs[index] = buffer; } else if(sub_index == 4) { item_is_normal_type[index] = (bool)buffer; } else if(sub_index == 5) { item_is_special_type[index] = (bool)buffer; }; sub_index += 1; buffer = -1; } } }; if(c == '\n') { ignore_line = false; }; c = fgetc(ptr); }; fclose(ptr); } void init_everything() { printf("Initializing board...\n"); init_empty_board(); printf("Initializing players...\n"); init_players(); printf("Initializing items...\n"); init_shop("src/config.txt"); printf("Initialization complete...\n"); //print_items(); } void print_items() { for(int i = 0; i < n_items; i++) { printf("Item : %d\n", i); printf("cost : %d\nTurns : [%d - %d]\ntypes=[N = %d , S = %d]", item_costs[i], item_start[i], item_end[i], item_is_normal_type[i], item_is_special_type[i]); printf("\n\n"); } } void destroy_everything() { for(int i = 0; i < n_players; i++) { free(players[i].items); }; free(players); free(item_costs); free(item_start); free(item_end); free(item_is_normal_type); free(item_is_special_type); free(cell_count); } #include "consts.h" #include "assembly.h"