From ace1a34d8f1bdfd32bcf8046a4e45342165863a3 Mon Sep 17 00:00:00 2001 From: jonri Date: Wed, 6 Apr 2022 14:21:58 -0400 Subject: [PATCH] Add python script for counting loot in map --- install/scripts/commands/count_loot.py | 41 ++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 install/scripts/commands/count_loot.py diff --git a/install/scripts/commands/count_loot.py b/install/scripts/commands/count_loot.py new file mode 100644 index 0000000000..c8385b05f5 --- /dev/null +++ b/install/scripts/commands/count_loot.py @@ -0,0 +1,41 @@ +__commandName__ = 'CountLoot' +__commandDisplayName__ = 'Count Loot' + +def execute(): + import darkradiant as dr + + class SceneLootCounter(dr.SceneNodeVisitor): + loot_sum = 0 + def pre(self, node): + entity = node.getEntity() + if not entity.isNull(): + try: + self.loot_sum += int(entity.getKeyValue("inv_loot_value")) + except: + pass + return 1 + + class SelectionLootCounter(dr.SelectionVisitor): + loot_sum = 0 + def visit(self, node): + entity = node.getEntity() + if not entity.isNull(): + try: + self.loot_sum += int(entity.getKeyValue("inv_loot_value")) + except: + pass + + scene_counter = SceneLootCounter() + GlobalSceneGraph.root().traverse(scene_counter) + + selection_counter = SelectionLootCounter() + GlobalSelectionSystem.foreachSelected(selection_counter) + + result = "Total loot: " + str(scene_counter.loot_sum) + if selection_counter.loot_sum > 0: + result += "\nSelection: " + str(selection_counter.loot_sum) + + GlobalDialogManager.createMessageBox("Loot Count Results", result, dr.Dialog.CONFIRM).run() + +if __executeCommand__: + execute()