MCPcopy Create free account
hub / github.com/crawl/crawl / init_mut_index

Function init_mut_index

crawl-ref/source/mutation.cc:286–326  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

284}
285
286void init_mut_index()
287{
288 total_weight.clear();
289 for (int i = 0; i < NUM_MUTATIONS; ++i)
290 mut_index[i] = -1;
291
292 for (unsigned int i = 0; i < ARRAYSZ(mut_data); ++i)
293 {
294 const mutation_type mut = mut_data[i].mutation;
295 ASSERT_RANGE(mut, 0, NUM_MUTATIONS);
296 ASSERT(mut_index[mut] == -1);
297 mut_index[mut] = i;
298 for (const auto flag : mutflags::range())
299 {
300 if (_mut_has_flag(mut_data[i], flag))
301 total_weight[flag] += _mut_weight(mut_data[i], flag);
302 }
303 }
304
305 // Add dummy data for removed mutations
306 vector<mutation_type> removed_muts = get_removed_mutations();
307 for (unsigned int i = 0; i < removed_muts.size(); ++i)
308 mut_index[removed_muts[i]] = ARRAYSZ(mut_data) - 1;
309
310 // this is all a bit silly but ok
311 for (int i = 0; i < MUT_NON_MUTATION - CATEGORY_MUTATIONS; ++i)
312 category_mut_index[i] = -1;
313
314 for (unsigned int i = 0; i < ARRAYSZ(category_mut_data); ++i)
315 {
316 const mutation_type mut = category_mut_data[i].mutation;
317 ASSERT_RANGE(mut, CATEGORY_MUTATIONS, MUT_NON_MUTATION);
318 ASSERT(category_mut_index[mut-CATEGORY_MUTATIONS] == -1);
319 category_mut_index[mut-CATEGORY_MUTATIONS] = i;
320 }
321
322 for (int i = 0; i < NUM_BANES; ++i)
323 bane_index[i] = -1;
324 for (unsigned int i = 0; i < ARRAYSZ(bane_data); ++i)
325 bane_index[bane_data[i].type] = i;
326}
327
328/*
329 * Get the max number of possible levels for mutation `mut`. This is typically 1 or 3.

Callers 2

_initializeFunction · 0.85

Calls 6

_mut_has_flagFunction · 0.85
_mut_weightFunction · 0.85
get_removed_mutationsFunction · 0.85
rangeClass · 0.70
clearMethod · 0.45
sizeMethod · 0.45

Tested by 1