X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=libplomrogue.c;h=5fd86f879451c580817700c6e686da33e10bdfef;hb=690cfb4d09e6a058b7c5b59d76035dfbc114ec85;hp=68d34311d52fe5844c293a63b721d5a6a3a476df;hpb=0a0ed866ffc56cfdce529dc183412721f7e87871;p=plomrogue diff --git a/libplomrogue.c b/libplomrogue.c index 68d3431..5fd86f8 100644 --- a/libplomrogue.c +++ b/libplomrogue.c @@ -567,6 +567,23 @@ extern uint8_t dijkstra_map() } +/* 7DRL/TCE addition: Init AI score map to all-eatable unknown fields. */ +extern uint8_t TCE_init_score_map() +{ + uint32_t map_size = maplength * maplength; + score_map = malloc(map_size * sizeof(uint16_t)); + if (!score_map) + { + return 1; + } + uint32_t i = 0; + for (; i < map_size; i++) + { + score_map[i] = UINT16_MAX - 1; + } + return 0; +} + /* 7DRL/TCE addition: movement cost map setting. */ static uint8_t * TCE_move_cost_map = NULL; extern uint8_t TCE_set_movement_cost_map(char * mem_map) @@ -627,7 +644,7 @@ extern uint8_t TCE_dijkstra_map_with_movement_cost() { uint16_t score = score_map[pos]; uint8_t mov_cost = TCE_move_cost_map[pos]; - if (mov_cost > 0 && score > i_scans) + if (score <= max_score && mov_cost > 0 && score > i_scans) { get_neighbor_scores(pos, max_score, neighbors); min_neighbor = max_score; @@ -735,7 +752,16 @@ extern void write_score_map() { for (x = 0; x < maplength; x++) { - fprintf(f, "%2X", score_map[y * maplength + x] % 256); + uint32_t pos = y * maplength + x; + uint16_t val = score_map[pos]; + if (val == UINT16_MAX) + { + fprintf(f, " Z"); + } else if (val == UINT16_MAX - 1) { + fprintf(f, " Y"); + } else { + fprintf(f, "%2X", score_map[pos] % 256); + } } fprintf(f, "\n"); }