static void spoil_mon_info() { int i; vec_ptr v = vec_alloc(NULL); doc_ptr doc = doc_alloc(80); spoiler_hack = TRUE; for (i = 1; i < max_r_idx; i++) { monster_race *r_ptr = &r_info[i]; if (!r_ptr->name) continue; if (r_ptr->id == MON_MONKEY_CLONE) continue; if (r_ptr->id == MON_KAGE) continue; vec_add(v, r_ptr); } vec_sort(v, (vec_cmp_f)_compare_r_level_desc); for (i = 0; i < vec_length(v); i++) { monster_race *r_ptr = vec_get(v, i); doc_printf(doc, "<topic:%s><color:r>=====================================================================</color>\n", r_name + r_ptr->name); mon_display_doc(r_ptr, doc); doc_newline(doc); } vec_free(v); doc_display(doc, "Monster Spoilers", 0); doc_free(doc); spoiler_hack = FALSE; }
void namevec_init(vec *v, namevec_item *items, size_t bytes) { size_t n; n = bytes / sizeof(namevec_item); vec_init(v, sizeof(namevec_item)); vec_ins(v, 0, n, items); vec_sort(v, namevec_cmp); }
static void spoil_spells_by_class(void) { int i, realm_idx; doc_ptr doc = doc_alloc(80); vec_ptr vec = vec_alloc(NULL); for (i = 0; i < MAX_CLASS; i++) vec_add_int(vec, i); vec_sort(vec, (vec_cmp_f)_cmp_class_name); for (i = 0; i < vec_length(vec); i++) { int class_idx = vec_get_int(vec, i); class_t *class_ptr = get_class_aux(class_idx, 0); bool class_heading = FALSE; if (class_idx == CLASS_RAGE_MAGE) continue; /* broken */ for (realm_idx = REALM_LIFE; realm_idx <= MAX_REALM; realm_idx++) { if (_check_realm(class_idx, realm_idx)) { doc_ptr cols[2]; cols[0] = doc_alloc(40); cols[1] = doc_alloc(40); _spoil_spell_book(cols[0], class_idx, realm_idx, 0); _spoil_spell_book(cols[1], class_idx, realm_idx, 1); if (class_idx != CLASS_RED_MAGE || realm_idx == REALM_ARCANE) { _spoil_spell_book(cols[0], class_idx, realm_idx, 2); _spoil_spell_book(cols[1], class_idx, realm_idx, 3); } if (!class_heading) { doc_printf(doc, "<topic:%s><color:r>%s</color>\n", class_ptr->name, class_ptr->name); doc_printf(doc, "%s\n\n", class_ptr->desc); class_heading = TRUE; } doc_printf(doc, "<color:B>%s</color>\n", realm_names[realm_idx]); doc_insert_cols(doc, cols, 2, 0); doc_free(cols[0]); doc_free(cols[1]); } } } doc_display(doc, "Spells by Class", 0); doc_free(doc); vec_free(vec); }
void SMat<CoeffRing>::vec_permute(sparsevec *&v, size_t start_row, M2_arrayint perm) const { size_t *perminv = newarray_atomic(size_t,perm->len); for (size_t i=0; i<perm->len; i++) perminv[perm->array[i]] = i; size_t end_row = start_row + perm->len; for (sparsevec *w = v; w != 0; w = w->next) if (w->row >= start_row && w->row < end_row) w->row = start_row + perminv[w->row - start_row]; vec_sort(v); deletearray(perminv); }
void SMat<CoeffRing>::vec_sort(sparsevec *&f) const { if (f == 0 || f->next == 0) return; sparsevec *f1 = 0; sparsevec *f2 = 0; while (f != 0) { sparsevec *t = f; f = f->next; t->next = f1; f1 = t; if (f == 0) break; t = f; f = f->next; t->next = f2; f2 = t; } vec_sort(f1); vec_sort(f2); vec_add_to(f1, f2); f = f1; }
vec_ptr doc_get_links(doc_ptr doc) { vec_ptr links = vec_alloc(NULL); int_map_iter_ptr iter; for (iter = int_map_iter_alloc(doc->links); int_map_iter_is_valid(iter); int_map_iter_next(iter) ) { doc_link_ptr link = int_map_iter_current(iter); vec_add(links, link); } int_map_iter_free(iter); vec_sort(links, (vec_cmp_f)_compare_links); return links; }
static void _spoil_spells_by_realm_aux2(int realm_idx, int class1_idx) { int i, row, col, class_idx, choice; vec_ptr vec = vec_alloc(NULL); for (class_idx = 0; class_idx < MAX_CLASS; class_idx++) { if (_check_realm(class_idx, realm_idx)) vec_add_int(vec, class_idx); } vec_sort(vec, (vec_cmp_f)_cmp_class_name); while (1) { Term_clear(); c_prt(TERM_L_BLUE, format("%s", realm_names[realm_idx]), 2, 0); c_prt(TERM_L_BLUE, format("First Class: %s", get_class_aux(class1_idx, 0)->name), 3, 0); /* Classes */ row = 4; col = 2; c_prt(TERM_RED, "Second Class", row++, col - 2); for (i = 0; i < vec_length(vec); i++) { int class_idx = vec_get_int(vec, i); class_t *class_ptr = get_class_aux(class_idx, 0); prt(format("(%c) %s", 'a' + i, class_ptr->name), row++, col); } i = inkey(); if (i == ESCAPE) break; choice = i - 'a'; if (0 <= choice && choice < vec_length(vec)) { class_idx = vec_get_int(vec, choice); _spoil_spells_by_realm_aux3(realm_idx, class1_idx, class_idx); } } vec_free(vec); }
void namevec_sort(vec *v) { vec_sort(v, namevec_cmp); }
static void _spoil_table_aux(doc_ptr doc, cptr title, _obj_p pred, int options) { int i; vec_ptr entries = vec_alloc(free); int ct_std = 0, ct_rnd = 0, ct_ego = 0; int score_std = 0, score_rnd = 0, score_ego = 0; int max_score_std = 0, max_score_rnd = 0, max_score_ego = 0; if ((options & _SPOIL_ARTS) && !random_artifacts) { for (i = 1; i < max_a_idx; ++i) { object_type forge = {0}; _art_info_ptr entry; if (!p_ptr->wizard && (a_info[i].gen_flags & OFG_QUESTITEM)) continue; if (!create_named_art_aux(i, &forge)) continue; if ((options & _SPOIL_EGOS) && !a_info[i].found) continue; /* Hack */ if (pred && !pred(&forge)) continue; obj_identify_fully(&forge); entry = malloc(sizeof(_art_info_t)); entry->id = i; if (p_ptr->prace == RACE_ANDROID) { entry->score = android_obj_exp(&forge); if (!entry->score) entry->score = obj_value_real(&forge); } else entry->score = obj_value_real(&forge); object_desc(entry->name, &forge, OD_COLOR_CODED); entry->k_idx = forge.k_idx; vec_add(entries, entry); if (a_info[entry->id].found) { ct_std++; score_std += entry->score; if (entry->score > max_score_std) max_score_std = entry->score; } } } if (options & _SPOIL_RAND_ARTS) { vec_ptr v = stats_rand_arts(); for (i = 0; i < vec_length(v); i++) { object_type *o_ptr = vec_get(v, i); _art_info_ptr entry; if (pred && !pred(o_ptr)) continue; entry = malloc(sizeof(_art_info_t)); entry->id = ART_RANDOM; if (p_ptr->prace == RACE_ANDROID) { entry->score = android_obj_exp(o_ptr); if (!entry->score) entry->score = obj_value_real(o_ptr); } else entry->score = obj_value_real(o_ptr); object_desc(entry->name, o_ptr, OD_COLOR_CODED); entry->k_idx = o_ptr->k_idx; vec_add(entries, entry); ct_rnd++; score_rnd += entry->score; if (entry->score > max_score_rnd) max_score_rnd = entry->score; } } if (options & _SPOIL_EGOS) { vec_ptr v = stats_egos(); for (i = 0; i < vec_length(v); i++) { object_type *o_ptr = vec_get(v, i); _art_info_ptr entry; if (pred && !pred(o_ptr)) continue; entry = malloc(sizeof(_art_info_t)); entry->id = ART_EGO; if (p_ptr->prace == RACE_ANDROID) { entry->score = android_obj_exp(o_ptr); if (!entry->score) entry->score = obj_value_real(o_ptr); } else entry->score = obj_value_real(o_ptr); object_desc(entry->name, o_ptr, OD_COLOR_CODED); entry->k_idx = o_ptr->k_idx; vec_add(entries, entry); ct_ego++; score_ego += entry->score; if (entry->score > max_score_ego) max_score_ego = entry->score; } } if (vec_length(entries)) { vec_sort(entries, (vec_cmp_f)_art_score_cmp); doc_printf(doc, "<topic:%s><style:heading>%s</style>\n\n", title, title); doc_insert(doc, "<style:wide> <color:G> Score Lvl Rty Cts Object Description</color>\n"); for (i = 0; i < vec_length(entries); i++) { _art_info_ptr entry = vec_get(entries, i); if (entry->id == ART_RANDOM) { doc_printf(doc, "<color:v>%3d) %7d</color> %3d ", i+1, entry->score, k_info[entry->k_idx].counts.found); doc_printf(doc, "<indent><style:indent>%s</style></indent>\n", entry->name); } else if (entry->id == ART_EGO) { doc_printf(doc, "<color:B>%3d) %7d</color> %3d ", i+1, entry->score, k_info[entry->k_idx].counts.found); doc_printf(doc, "<indent><style:indent>%s</style></indent>\n", entry->name); } else { artifact_type *a_ptr = &a_info[entry->id]; doc_printf(doc, "<color:%c>%3d) %7d</color> %3d %3d ", (a_ptr->found) ? 'y' : 'w', i+1, entry->score, a_ptr->level, a_ptr->rarity); if (a_ptr->gen_flags & OFG_INSTA_ART) doc_insert(doc, " "); else doc_printf(doc, "%3d ", k_info[entry->k_idx].counts.found); doc_printf(doc, "<indent><style:indent>%s <color:D>#%d</color></style></indent>\n", entry->name, entry->id); } } if (ct_std || ct_rnd || ct_ego) { doc_printf(doc, "\n<color:G>%20.20s Ct Average Best</color>\n", ""); if (ct_std) { doc_printf(doc, "<color:B>%20.20s</color> %4d %7d %7d\n", "Stand Arts", ct_std, score_std/ct_std, max_score_std); } if (ct_rnd) { doc_printf(doc, "<color:B>%20.20s</color> %4d %7d %7d\n", "Rand Arts", ct_rnd, score_rnd/ct_rnd, max_score_rnd); } if (ct_ego) { doc_printf(doc, "<color:B>%20.20s</color> %4d %7d %7d\n", "Egos", ct_ego, score_ego/ct_ego, max_score_ego); } } doc_insert(doc, "</style>\n\n"); } vec_free(entries); }