SCED/src/playermat/ClueCounter.ttslua
2024-02-17 01:31:08 +01:00

56 lines
1.5 KiB
Plaintext

local guidReferenceApi = require("core/GUIDReferenceApi")
local playmatApi = require("playermat/PlaymatApi")
local searchLib = require("util/SearchLib")
exposedValue = 0
local playmat
local searchParam = {}
function onLoad()
self.createButton({
label = "",
click_function = "countItems",
function_owner = self,
position = { 0, 0.1, 0 },
height = 0,
width = 0,
font_color = { 0, 0, 0 },
font_size = 2000
})
-- get closest playmat
local matColor = playmatApi.getMatColorByPosition(self.getPosition())
playmat = guidReferenceApi.getObjectByOwnerAndType(matColor, "Playermat")
-- get search parameters (threat area excluded)
local localPos = playmat.positionToLocal(playmat.getPosition())
searchParam.pos = playmat.positionToWorld(localPos + Vector(0, 0, 0.4))
searchParam.rot = playmat.getRotation() + Vector(0, 90, 0)
searchParam.size = Vector(8, 1, 27)
searchParam.filter = "isClue"
-- start loop
Wait.time(countItems, 1.5, -1)
end
-- activated once per second, counts clues on the playmat
function countItems()
local totalValue = 0
for _, item in ipairs(getClues()) do
totalValue = totalValue + math.abs(item.getQuantity())
end
exposedValue = totalValue
self.editButton({ index = 0, label = totalValue })
end
function removeAllClues(trash)
for _, obj in ipairs(getClues()) do
trash.putObject(obj)
end
end
function getClues()
return searchLib.inArea(searchParam.pos, searchParam.rot, searchParam.size, searchParam.filter)
end