Something went wrong. Try again.
the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
Something went wrong. Try again.
1.7 kB · 72 lines
C++
at master
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172#include "stdafx.h"#include "WeighedRandom.h"
int WeighedRandom::getTotalWeight(vector<WeighedRandomItem *> *items){ int totalWeight = 0; for( AUTO_VAR(it, items->begin()); it != items->end(); it++ ) { totalWeight += (*it)->randomWeight; } return totalWeight;}
WeighedRandomItem *WeighedRandom::getRandomItem(Random *random, vector<WeighedRandomItem *> *items, int totalWeight){ if (totalWeight <= 0) { __debugbreak(); }
int selection = random->nextInt(totalWeight);
for( AUTO_VAR(it, items->begin()); it != items->end(); it++ ) { selection -= (*it)->randomWeight; if (selection < 0) { return *it; } } return NULL;}
WeighedRandomItem *WeighedRandom::getRandomItem(Random *random, vector<WeighedRandomItem *> *items){ return getRandomItem(random, items, getTotalWeight(items));}
int WeighedRandom::getTotalWeight(WeighedRandomItemArray items){ int totalWeight = 0; for( unsigned int i = 0; i < items.length; i++ ) { totalWeight += items[i]->randomWeight; } return totalWeight;}
WeighedRandomItem *WeighedRandom::getRandomItem(Random *random, WeighedRandomItemArray items, int totalWeight){ if (totalWeight <= 0) { __debugbreak(); }
int selection = random->nextInt(totalWeight); for( unsigned int i = 0; i < items.length; i++ ) { selection -= items[i]->randomWeight; if (selection < 0) { return items[i]; } } return NULL;}
WeighedRandomItem *WeighedRandom::getRandomItem(Random *random, WeighedRandomItemArray items){ return getRandomItem(random, items, getTotalWeight(items));}