1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 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()
|