Skip to content

Commit

Permalink
Add python script for counting loot in map
Browse files Browse the repository at this point in the history
  • Loading branch information
jonri committed Apr 6, 2022
1 parent a118914 commit ace1a34
Showing 1 changed file with 41 additions and 0 deletions.
41 changes: 41 additions & 0 deletions 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()

0 comments on commit ace1a34

Please sign in to comment.