Implemented Campaign Importer/Exporter!
This commit is contained in:
parent
4fa1eb6040
commit
ab42241199
210
src/accessories/CampaignImporterExporter.ttslua
Normal file
210
src/accessories/CampaignImporterExporter.ttslua
Normal file
@ -0,0 +1,210 @@
|
|||||||
|
local campaignTokenData = {
|
||||||
|
GUID = "51b1c9",
|
||||||
|
Name = "Custom_Model",
|
||||||
|
Transform = {
|
||||||
|
posX = 2.80123329,
|
||||||
|
posY = 1.681688,
|
||||||
|
posZ = -23.6498032,
|
||||||
|
rotX = -2.22745348E-06,
|
||||||
|
rotY = 269.999664,
|
||||||
|
rotZ = -1.6614282E-06,
|
||||||
|
scaleX = 2.00499868,
|
||||||
|
scaleY = 2.00499868,
|
||||||
|
scaleZ = 2.00499868
|
||||||
|
},
|
||||||
|
Nickname = "Arkham Coin",
|
||||||
|
Description = "SCED Importer Token",
|
||||||
|
GMNotes = "",
|
||||||
|
AltLookAngle = {
|
||||||
|
x = 0.0,
|
||||||
|
y = 0.0,
|
||||||
|
z = 0.0
|
||||||
|
},
|
||||||
|
ColorDiffuse = {
|
||||||
|
r = 1.0,
|
||||||
|
g = 1.0,
|
||||||
|
b = 1.0
|
||||||
|
},
|
||||||
|
LayoutGroupSortIndex = 0,
|
||||||
|
Value = 0,
|
||||||
|
Locked = false,
|
||||||
|
Grid = true,
|
||||||
|
Snap = true,
|
||||||
|
IgnoreFoW = false,
|
||||||
|
MeasureMovement = false,
|
||||||
|
DragSelectable = true,
|
||||||
|
Autoraise = true,
|
||||||
|
Sticky = true,
|
||||||
|
Tooltip = true,
|
||||||
|
GridProjection = false,
|
||||||
|
HideWhenFaceDown = false,
|
||||||
|
Hands = false,
|
||||||
|
CustomMesh = {
|
||||||
|
MeshURL = "http://cloud-3.steamusercontent.com/ugc/943949966265929204/A38BB5D72419E6298385556D931877C0A1A55C17/",
|
||||||
|
DiffuseURL = "http://cloud-3.steamusercontent.com/ugc/254843371583188147/920981125E37B5CEB6C400E3FD353A2C428DA969/",
|
||||||
|
NormalURL = "",
|
||||||
|
ColliderURL = "http://cloud-3.steamusercontent.com/ugc/943949966265929204/A38BB5D72419E6298385556D931877C0A1A55C17/",
|
||||||
|
Convex = true,
|
||||||
|
MaterialIndex = 2,
|
||||||
|
TypeIndex = 0,
|
||||||
|
CustomShader = {
|
||||||
|
SpecularColor = {
|
||||||
|
r = 0.7222887,
|
||||||
|
g = 0.507659256,
|
||||||
|
b = 0.339915335
|
||||||
|
},
|
||||||
|
SpecularIntensity = 0.4,
|
||||||
|
SpecularSharpness = 7.0,
|
||||||
|
FresnelStrength = 0.0
|
||||||
|
},
|
||||||
|
CastShadows = true
|
||||||
|
},
|
||||||
|
LuaScript = "",
|
||||||
|
LuaScriptState = "",
|
||||||
|
XmlUI = ""
|
||||||
|
}
|
||||||
|
|
||||||
|
-- values for physics.cast
|
||||||
|
local PHYSICS_POSITION = { -00.0, 2, -27 }
|
||||||
|
|
||||||
|
local PHYSICS_ROTATION = 0
|
||||||
|
|
||||||
|
local PHYSICS_SCALE = { 05.0, 1, 05.0 }
|
||||||
|
|
||||||
|
-- enable this for debugging
|
||||||
|
local SHOW_RAYS = false
|
||||||
|
|
||||||
|
local campaignData = {}
|
||||||
|
|
||||||
|
local campaignZone = getObjectFromGUID("b6e806")
|
||||||
|
local tokenZone = getObjectFromGUID("ef3b5f")
|
||||||
|
local logZone = getObjectFromGUID("cc3540")
|
||||||
|
|
||||||
|
local campaignBoxGUID = ""
|
||||||
|
|
||||||
|
function onLoad(save_state)
|
||||||
|
self.createButton({
|
||||||
|
click_function = "findCampaignFromToken",
|
||||||
|
function_owner = self,
|
||||||
|
label = "Import",
|
||||||
|
position = {x=-1, y=0.2, z=0},
|
||||||
|
width = 350,
|
||||||
|
height = 150,
|
||||||
|
scale = {2, 1, 2},
|
||||||
|
})
|
||||||
|
self.createButton({
|
||||||
|
click_function = "createCampaignToken",
|
||||||
|
function_owner = self,
|
||||||
|
label = "Export",
|
||||||
|
position = {x=1, y=0.2, z=0},
|
||||||
|
width = 350,
|
||||||
|
height = 150,
|
||||||
|
scale = {2, 1, 2},
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
function findCampaignFromToken(_, _, _)
|
||||||
|
local coin = nil
|
||||||
|
for _, obj in ipairs(tokenZone.getObjects()) do
|
||||||
|
if obj.getDescription() == "SCED Importer Token" then
|
||||||
|
coin = obj
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if coin == nil then
|
||||||
|
broadcastToAll("Could not find importer token", Color.Red)
|
||||||
|
else
|
||||||
|
local importData = JSON.decode(coin.getGMNotes())
|
||||||
|
campaignBoxGUID = importData[1]
|
||||||
|
local campaignBox = getObjectFromGUID(campaignBoxGUID)
|
||||||
|
if campaignBox.type == "Generic" then
|
||||||
|
campaignBox.call("buttonClick_download")
|
||||||
|
end
|
||||||
|
Wait.condition(
|
||||||
|
function()
|
||||||
|
if #campaignBox.getObjects() > 0 then
|
||||||
|
placeCampaignFromToken(importData)
|
||||||
|
else
|
||||||
|
createCampaignFromToken(importData)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
function()
|
||||||
|
local obj = getObjectFromGUID(campaignBoxGUID)
|
||||||
|
if obj == nil then
|
||||||
|
return false
|
||||||
|
else
|
||||||
|
return obj.type == "Bag" and obj.getLuaScript() ~= ""
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
2,
|
||||||
|
function() broadcastToAll("Error loading campaign box") end
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function placeCampaignFromToken(importData)
|
||||||
|
getObjectFromGUID(campaignBoxGUID).call("buttonClick_place")
|
||||||
|
Wait.condition(
|
||||||
|
function() createCampaignFromToken(importData) end,
|
||||||
|
function() return findCampaignLog() ~= nil end,
|
||||||
|
2,
|
||||||
|
function() broadcastToAll("Error placing campaign box") end
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
function createCampaignFromToken(importData)
|
||||||
|
findCampaignLog().destruct()
|
||||||
|
findChaosBag().destruct()
|
||||||
|
spawnObjectData({data = importData[2]})
|
||||||
|
spawnObjectData({data = importData[3]})
|
||||||
|
broadcastToAll("Campaign successfully imported!", Color.Green)
|
||||||
|
end
|
||||||
|
|
||||||
|
function createCampaignToken(_, _, _)
|
||||||
|
local campaignBoxGUID = ""
|
||||||
|
-- find active campaign
|
||||||
|
for _, obj in ipairs(campaignZone.getObjects()) do
|
||||||
|
if obj.type == "Bag" and #obj.getObjects() == 0 then
|
||||||
|
campaignBoxGUID = obj.getGUID()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if campaignBoxGUID == "" then
|
||||||
|
broadcastToAll("Campaign box with all placed objects not found!", Color.Red)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local campaignLog = findCampaignLog()
|
||||||
|
if campaignLog == nil then
|
||||||
|
broadcastToAll("Campaign log not found in standard position!", Color.Red)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local chaosBag = findChaosBag()
|
||||||
|
if chaosBag == nil then
|
||||||
|
broadcastToAll("Chaos bag not found in standard position!", Color.Red)
|
||||||
|
return
|
||||||
|
end
|
||||||
|
campaignData = {campaignBoxGUID, campaignLog.getData(), chaosBag.getData()}
|
||||||
|
campaignTokenData.GMNotes = JSON.encode(campaignData)
|
||||||
|
spawnObjectData({
|
||||||
|
data = campaignTokenData,
|
||||||
|
position = {-21.25, 1.68, 55.59}
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- helper functions
|
||||||
|
|
||||||
|
function findCampaignLog()
|
||||||
|
for _, obj in ipairs(logZone.getObjects()) do
|
||||||
|
if string.find(obj.getName(), "Campaign Log") ~= nil then
|
||||||
|
return obj
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
-- checks scripting zone for chaos bag
|
||||||
|
function findChaosBag()
|
||||||
|
for _, item in ipairs(getObjectFromGUID("83ef06").getObjects()) do
|
||||||
|
if item.getDescription() == "Chaos Bag" then
|
||||||
|
return item
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in New Issue
Block a user