LootManager::LootManager() : tip(new WidgetTooltip()) , sfx_loot(snd->load(eset->loot.sfx_loot, "LootManager dropping loot")) { loadGraphics(); loadLootTables(); }
LootManager::LootManager() : sfx_loot(0) , drop_max(1) , drop_radius(1) , hero(NULL) , tooltip_margin(0) { tip = new WidgetTooltip(); FileParser infile; // load loot animation settings from engine config file // @CLASS Loot|Description of engine/loot.txt if (infile.open("engine/loot.txt")) { while (infile.next()) { if (infile.key == "tooltip_margin") { // @ATTR tooltip_margin|integer|Vertical offset of the loot tooltip from the loot itself. tooltip_margin = toInt(infile.val); } else if (infile.key == "autopickup_currency") { // @ATTR autopickup_currency|boolean|Enable autopickup for currency AUTOPICKUP_CURRENCY = toBool(infile.val); } else if (infile.key == "currency_name") { // This key is parsed in loadMiscSettings() in Settings.cpp } else if (infile.key == "vendor_ratio") { // @ATTR vendor_ratio|integer|Prices ratio for vendors VENDOR_RATIO = static_cast<float>(toInt(infile.val)) / 100.0f; } else if (infile.key == "sfx_loot") { // @ATTR sfx_loot|string|Filename of a sound effect to play for dropping loot. sfx_loot = snd->load(infile.val, "LootManager dropping loot"); } else if (infile.key == "drop_max") { // @ATTR drop_max|integer|The maximum number of random item stacks that can drop at once drop_max = toInt(infile.val); clampFloor(drop_max, 1); } else if (infile.key == "drop_radius") { // @ATTR drop_radius|integer|The distance (in tiles) away from the origin that loot can drop drop_radius = toInt(infile.val); clampFloor(drop_radius, 1); } else { infile.error("LootManager: '%s' is not a valid key.", infile.key.c_str()); } } infile.close(); } // reset current map loot loot.clear(); loadGraphics(); full_msg = false; loadLootTables(); }
LootManager::LootManager() : sfx_loot(0) , drop_max(1) , drop_radius(1) , autopickup_range(INTERACT_RANGE) , hero(NULL) , tooltip_margin(0) { tip = new WidgetTooltip(); FileParser infile; // load loot animation settings from engine config file // @CLASS Loot|Description of engine/loot.txt if (infile.open("engine/loot.txt")) { while (infile.next()) { if (infile.key == "tooltip_margin") { // @ATTR tooltip_margin|int|Vertical offset of the loot tooltip from the loot itself. tooltip_margin = toInt(infile.val); } else if (infile.key == "autopickup_currency") { // @ATTR autopickup_currency|bool|Enable autopickup for currency AUTOPICKUP_CURRENCY = toBool(infile.val); } else if (infile.key == "autopickup_range") { // @ATTR autopickup_range|float|Minimum distance the player must be from loot to trigger autopickup. autopickup_range = toFloat(infile.val); } else if (infile.key == "currency_name") { // This key is parsed in loadMiscSettings() in Settings.cpp } else if (infile.key == "vendor_ratio") { // @ATTR vendor_ratio|int|Percentage of item buying price to use as selling price. Also used as the buyback price until the player leaves the map. VENDOR_RATIO = static_cast<float>(toInt(infile.val)) / 100.0f; } else if (infile.key == "vendor_ratio_buyback") { // @ATTR vendor_ratio_buyback|int|Percentage of item buying price to use as the buying price for previously sold items. VENDOR_RATIO_BUYBACK = static_cast<float>(toInt(infile.val)) / 100.0f; } else if (infile.key == "sfx_loot") { // @ATTR sfx_loot|filename|Filename of a sound effect to play for dropping loot. sfx_loot = snd->load(infile.val, "LootManager dropping loot"); } else if (infile.key == "drop_max") { // @ATTR drop_max|int|The maximum number of random item stacks that can drop at once drop_max = std::max(toInt(infile.val), 1); } else if (infile.key == "drop_radius") { // @ATTR drop_radius|int|The distance (in tiles) away from the origin that loot can drop drop_radius = std::max(toInt(infile.val), 1); } else { infile.error("LootManager: '%s' is not a valid key.", infile.key.c_str()); } } infile.close(); } // reset current map loot loot.clear(); loadGraphics(); loadLootTables(); }