#pragma once #include #include #include #include // Foward Declarations namespace randomizer::logic::world { class World; using WorldPool = std::vector>; } // namespace randomizer::logic::world namespace randomizer::logic::item { class Item; } namespace randomizer::logic::item_pool { using ItemPool = std::vector; /** * @brief Generates and sets the item pool of randomized items for a single world. * * @param world The world to generate the item pool for */ void GenerateItemPool(world::World* world); /** * @brief Generates and sets the starting item pool for a single world. Starting items will be * subtracted from the world's regular item pool, so be sure to call GenerateItemPool first * * @param world The world to generate the starting item pool for */ void GenerateStartingItemPool(world::World* world); std::map GetInitialJunkPool(); ItemPool GetCompleteItemPool(const world::WorldPool& worlds); const std::map& GetValidStartingInventoryItems(); } // namespace randomizer::logic::item_pool