code cleanup
This commit is contained in:
parent
41f17d9a67
commit
69120fffec
@ -1,7 +1,20 @@
|
||||
--Data tables used in button creation
|
||||
ref_modifyPitchButtons = {
|
||||
{ offset = -0.37, func = function() click_modify(-1, 0) end },
|
||||
{ offset = -1.11, func = function() click_modify(-5, 0) end },
|
||||
{ offset = 0.37, func = function() click_modify(1, 0) end },
|
||||
{ offset = 1.11, func = function() click_modify(5, 0) end },
|
||||
}
|
||||
ref_modifyDistanceButtons = {
|
||||
{ offset = -0.37, func = function() click_modify(-1, 1) end },
|
||||
{ offset = -1.11, func = function() click_modify(-5, 1) end },
|
||||
{ offset = 0.37, func = function() click_modify(1, 1) end },
|
||||
{ offset = 1.11, func = function() click_modify(5, 1) end },
|
||||
}
|
||||
|
||||
--On-demand save function, remembers pitch and distance values
|
||||
function updateSave()
|
||||
saved_data = JSON.encode({pitch=pitch, distance=distance})
|
||||
self.script_state = saved_data
|
||||
self.script_state = JSON.encode({ pitch = pitch, distance = distance })
|
||||
end
|
||||
|
||||
--Startup, loading memory
|
||||
@ -21,12 +34,12 @@ function onload(saved_data)
|
||||
end
|
||||
|
||||
--Activated by finishing writing in the input box, updates save info
|
||||
function input_entered(inputString, stillEditing , typeIndex)
|
||||
function input_entered(inputString, stillEditing, typeIndex)
|
||||
if stillEditing == false then
|
||||
--Check to avoid empty input strings
|
||||
if tonumber(inputString) == nil then inputString = 0 end
|
||||
--Update save data
|
||||
if typeIndex==0 then
|
||||
if typeIndex == 0 then
|
||||
pitch = inputString
|
||||
else
|
||||
distance = inputString
|
||||
@ -37,12 +50,12 @@ end
|
||||
|
||||
--Activated by button, the -5 -1 +1 +5 buttons
|
||||
function click_modify(amount, typeIndex)
|
||||
if typeIndex==0 then
|
||||
if typeIndex == 0 then
|
||||
pitch = pitch + amount
|
||||
self.editInput({index=typeIndex, value=pitch})
|
||||
self.editInput({ index = typeIndex, value = pitch })
|
||||
else
|
||||
distance = distance + amount
|
||||
self.editInput({index=typeIndex, value=distance})
|
||||
self.editInput({ index = typeIndex, value = distance })
|
||||
end
|
||||
updateSave()
|
||||
end
|
||||
@ -67,96 +80,95 @@ function click_setCamera(_, color)
|
||||
local pos = targetObj.getPosition()
|
||||
local rot = targetObj.getRotation()
|
||||
rot.y = rot.y + offsetY
|
||||
Player[color].lookAt({position=pos, pitch=pitch, yaw=rot.y, distance=distance})
|
||||
Player[color].lookAt({ position = pos, pitch = pitch, yaw = rot.y, distance = distance })
|
||||
|
||||
local objectList = getObjects()
|
||||
local AHLCGNavTile = nil
|
||||
|
||||
for i,v in ipairs(objectList) do
|
||||
--Send values to main tile
|
||||
for _, v in ipairs(getObjects()) do
|
||||
if v.getName() == "jaqenZann's Navigation Overlay Tile" then
|
||||
AHLCGNavTile = v
|
||||
v.call('updateEditCamera', { { pos.x, pos.y, pos.z }, tonumber(pitch), rot.y, tonumber(distance) })
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
-- local AHLCGNavTile = getObjectFromGUID("0ffbc5")
|
||||
if AHLCGNavTile then
|
||||
AHLCGNavTile.call('updateEditCamera', { { pos.x, pos.y, pos.z }, tonumber(pitch), rot.y, tonumber(distance) })
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
|
||||
--Button/Input creation
|
||||
|
||||
|
||||
|
||||
--Text boxes for number input
|
||||
function createInputs()
|
||||
local funcName = "inputFuncNamePitch"
|
||||
local func = function(_,_,x,z) input_entered(x,z,0) end
|
||||
local func = function(_, _, x, z) input_entered(x, z, 0) end
|
||||
self.setVar(funcName, func)
|
||||
self.createInput({
|
||||
input_function=funcName, function_owner=self, label="input",
|
||||
alignment=2, position={-3.4,0.35,-0.21}, rotation={0,0,0}, height=420, width=1400,
|
||||
font_size=400, color={57/255,46/255,40/255},
|
||||
font_color={1,1,1}, value=pitch,
|
||||
validation=3 -- int (1 = None, 2 = Integer, 3 = Float, 4 = Alphanumeric, 5 = Username, 6 = Name),
|
||||
input_function = funcName,
|
||||
function_owner = self,
|
||||
label = "input",
|
||||
alignment = 2,
|
||||
position = { -3.4, 0.35, -0.21 },
|
||||
rotation = { 0, 0, 0 },
|
||||
height = 420,
|
||||
width = 1400,
|
||||
font_size = 400,
|
||||
color = { 57 / 255, 46 / 255, 40 / 255 },
|
||||
font_color = { 1, 1, 1 },
|
||||
value = pitch,
|
||||
validation = 3
|
||||
})
|
||||
local funcName = "inputFuncNameDistance"
|
||||
local func = function(_,_,x,z) input_entered(x,z,1) end
|
||||
local func = function(_, _, x, z) input_entered(x, z, 1) end
|
||||
self.setVar(funcName, func)
|
||||
self.createInput({
|
||||
input_function=funcName, function_owner=self, label="input",
|
||||
alignment=4, position={3.4,0.35,-0.21}, rotation={0,0,0}, height=420, width=1400,
|
||||
font_size=400, color={57/255,46/255,40/255},
|
||||
font_color={1,1,1}, value=distance,
|
||||
validation=3 -- int (1 = None, 2 = Integer, 3 = Float, 4 = Alphanumeric, 5 = Username, 6 = Name),
|
||||
input_function = funcName,
|
||||
function_owner = self,
|
||||
label = "input",
|
||||
alignment = 4,
|
||||
position = { 3.4, 0.35, -0.21 },
|
||||
rotation = { 0, 0, 0 },
|
||||
height = 420,
|
||||
width = 1400,
|
||||
font_size = 400,
|
||||
color = { 57 / 255, 46 / 255, 40 / 255 },
|
||||
font_color = { 1, 1, 1 },
|
||||
value = distance,
|
||||
validation = 3
|
||||
})
|
||||
end
|
||||
|
||||
--Center button and -5 - +5 buttons
|
||||
function createButtons()
|
||||
self.createButton({
|
||||
click_function="click_setCamera", function_owner=self,
|
||||
position={0,0.4,0}, height=900, width=900, color={1,1,1,0},
|
||||
tooltip="Set camera to this angle"
|
||||
click_function = "click_setCamera",
|
||||
function_owner = self,
|
||||
position = { 0, 0.4, 0 },
|
||||
height = 900,
|
||||
width = 900,
|
||||
color = { 1, 1, 1, 0 },
|
||||
tooltip = "Set camera to this angle"
|
||||
})
|
||||
|
||||
for i, ref in ipairs(ref_modifyPitchButtons) do
|
||||
local funcName = "pitchModifyFunction_"..i
|
||||
local funcName = "pitchModifyFunction_" .. i
|
||||
self.setVar(funcName, ref.func)
|
||||
local pos = {-3.4+ref.offset,0.3,0.6}
|
||||
local pos = { -3.4 + ref.offset, 0.3, 0.6 }
|
||||
self.createButton({
|
||||
click_function=funcName, function_owner=self,
|
||||
position=pos, height=240, width=320, color={1,1,1,0}
|
||||
click_function = funcName,
|
||||
function_owner = self,
|
||||
position = pos,
|
||||
height = 240,
|
||||
width = 320,
|
||||
color = { 1, 1, 1, 0 }
|
||||
})
|
||||
end
|
||||
|
||||
for i, ref in ipairs(ref_modifyDistanceButtons) do
|
||||
local funcName = "distanceModifyFunction_"..i
|
||||
local funcName = "distanceModifyFunction_" .. i
|
||||
self.setVar(funcName, ref.func)
|
||||
local pos = {3.4+ref.offset,0.3,0.6}
|
||||
local pos = { 3.4 + ref.offset, 0.3, 0.6 }
|
||||
self.createButton({
|
||||
click_function=funcName, function_owner=self,
|
||||
position=pos, height=240, width=320, color={1,1,1,0}
|
||||
click_function = funcName,
|
||||
function_owner = self,
|
||||
position = pos,
|
||||
height = 240,
|
||||
width = 320,
|
||||
color = { 1, 1, 1, 0 }
|
||||
})
|
||||
end
|
||||
end
|
||||
|
||||
--Data tables used in button creation
|
||||
|
||||
ref_modifyPitchButtons = {
|
||||
{offset=-0.37, func=function() click_modify(-1, 0) end},
|
||||
{offset=-1.11, func=function() click_modify(-5, 0) end},
|
||||
{offset=0.37, func=function() click_modify(1, 0) end},
|
||||
{offset=1.11, func=function() click_modify(5, 0) end},
|
||||
}
|
||||
|
||||
ref_modifyDistanceButtons = {
|
||||
{offset=-0.37, func=function() click_modify(-1, 1) end},
|
||||
{offset=-1.11, func=function() click_modify(-5, 1) end},
|
||||
{offset=0.37, func=function() click_modify(1, 1) end},
|
||||
{offset=1.11, func=function() click_modify(5, 1) end},
|
||||
}
|
||||
|
@ -197,7 +197,6 @@ function onLoad(saved_data)
|
||||
editing = false
|
||||
claiming = false
|
||||
selectedEditButton = -1
|
||||
|
||||
editPos = { 0, 0, 0 }
|
||||
editPitch = 0
|
||||
editYaw = 0
|
||||
@ -205,12 +204,11 @@ function onLoad(saved_data)
|
||||
|
||||
if saved_data ~= "" then
|
||||
local loaded_data = JSON.decode(saved_data)
|
||||
|
||||
cameraParams = loaded_data.cameras
|
||||
fullVisibility = loaded_data.fullVis
|
||||
playVisibility = loaded_data.playVis
|
||||
local allclaims = loaded_data.claims
|
||||
|
||||
local allclaims = loaded_data.claims
|
||||
for i = 1, 4 do
|
||||
playermatData[i].claims = allclaims[i]
|
||||
end
|
||||
@ -285,7 +283,7 @@ function displayPlayArea(object, color)
|
||||
colors = { getIndexForPlayerColor(color) }
|
||||
end
|
||||
|
||||
for i, v in ipairs(colors) do
|
||||
for _, v in ipairs(colors) do
|
||||
if v > 0 then
|
||||
fullVisibility[v] = false
|
||||
playVisibility[v] = true
|
||||
@ -334,7 +332,7 @@ function closeOverlay(object, color)
|
||||
colors = { getIndexForPlayerColor(color) }
|
||||
end
|
||||
|
||||
for iv, v in ipairs(colors) do
|
||||
for _, v in ipairs(colors) do
|
||||
if v > 0 then
|
||||
fullVisibility[v] = false
|
||||
playVisibility[v] = false
|
||||
@ -356,7 +354,7 @@ function resizeOverlay(object, color)
|
||||
colors = { getIndexForPlayerColor(color) }
|
||||
end
|
||||
|
||||
for iv, v in ipairs(colors) do
|
||||
for _, v in ipairs(colors) do
|
||||
if v > 0 then
|
||||
local full = fullVisibility[v]
|
||||
fullVisibility[v] = not full
|
||||
@ -429,7 +427,7 @@ function resetOverlay()
|
||||
[[" allowDragging="true" returnToOriginalPositionWhenReleased="false" rectAlignment="LowerRight" offsetXY="-40 0">
|
||||
<image id="backgroundImage" image="OverlayLarge" />]]
|
||||
|
||||
for i, d in ipairs(data) do
|
||||
for _, d in ipairs(data) do
|
||||
local buttonID = tonumber(d.id)
|
||||
|
||||
if editing and buttonID < 19 then
|
||||
@ -474,7 +472,7 @@ function resetOverlay()
|
||||
[[" allowDragging="true" returnToOriginalPositionWhenReleased="false" rectAlignment="LowerRight" offsetXY="-40 0">
|
||||
<image id="backgroundImage" image="OverlaySmall" />]]
|
||||
|
||||
for i, d in ipairs(data) do
|
||||
for _, d in ipairs(data) do
|
||||
local buttonID = tonumber(d.id)
|
||||
|
||||
if editing and buttonID < 19 then
|
||||
@ -514,8 +512,8 @@ function resetOverlay()
|
||||
local largeOverlay = nil
|
||||
local smallOverlay = nil
|
||||
|
||||
for i, v in pairs(existingAssets) do
|
||||
for ii, vv in pairs(v) do
|
||||
for _, v in pairs(existingAssets) do
|
||||
for _, vv in pairs(v) do
|
||||
if vv == 'OverlayLarge' then
|
||||
largeOverlay = v
|
||||
end
|
||||
@ -548,12 +546,11 @@ end
|
||||
function buttonClicked(player, _, idValue)
|
||||
local buttonID = tonumber(idValue)
|
||||
|
||||
if buttonID >= 19 then
|
||||
if buttonID == 19 then
|
||||
resizeOverlay(nil, player.color)
|
||||
return
|
||||
elseif buttonID == 20 then
|
||||
closeOverlay(nil, player.color)
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
@ -637,7 +634,7 @@ function loadCamera(player, _, idValue)
|
||||
local minZ = 100
|
||||
local maxZ = -100
|
||||
|
||||
for i, v in pairs(mapObjects) do
|
||||
for _, v in pairs(mapObjects) do
|
||||
local obj = v.hit_object
|
||||
|
||||
if obj.type == 'Card' or obj.type == 'Infinite' then
|
||||
@ -647,32 +644,19 @@ function loadCamera(player, _, idValue)
|
||||
local z1 = bounds['center'][3] - bounds['size'][3] / 2
|
||||
local z2 = bounds['center'][3] + bounds['size'][3] / 2
|
||||
|
||||
if x1 < minX then
|
||||
minX = x1
|
||||
end
|
||||
if x2 > maxX then
|
||||
maxX = x2
|
||||
end
|
||||
if z1 < minZ then
|
||||
minZ = z1
|
||||
end
|
||||
if z2 > maxZ then
|
||||
maxZ = z2
|
||||
end
|
||||
minX = math.min(x1, minX)
|
||||
maxX = math.max(x2, maxX)
|
||||
minZ = math.min(z1, minZ)
|
||||
maxZ = math.max(z2, maxZ)
|
||||
end
|
||||
end
|
||||
|
||||
if minX < 100 then
|
||||
local dx = maxX - minX
|
||||
local dz = (maxZ - minZ) / (1.6) -- screen ratio * 1.2 (for my macbook pro, no idea how to generalize this)
|
||||
local centerX = (minX + maxX) /
|
||||
2 -- - dx*0.12 -- offset is to move it a bit up, so the cards don't block anything
|
||||
local centerX = (minX + maxX) / 2 -- offset is to move it a bit up, so the cards don't block anything
|
||||
local centerZ = (minZ + maxZ) / 2
|
||||
|
||||
local scale = dx
|
||||
if dz > dx then
|
||||
scale = dz
|
||||
end
|
||||
local scale = math.max(dx, dz)
|
||||
|
||||
-- regression line from the following data points, seems linear
|
||||
-- rows 1 scale 4.5 d 12
|
||||
@ -682,13 +666,8 @@ function loadCamera(player, _, idValue)
|
||||
-- rows 5 scale 23.25 d 28
|
||||
-- rows 6 scale 30.8 d 34
|
||||
|
||||
-- local d = 0.8685 * scale + 7.4505
|
||||
|
||||
-- modified by testing
|
||||
-- local d = 0.8685 * scale + 5
|
||||
-- local d = 1.04 * scale + 5
|
||||
local d = 0.96 * scale + 5
|
||||
|
||||
player.lookAt({ position = { centerX, 0, centerZ }, pitch = 74, yaw = 90, distance = d })
|
||||
else
|
||||
player.lookAt({ position = { -30.667, 0, 0 }, pitch = 74, yaw = 90, distance = 32 })
|
||||
@ -721,75 +700,42 @@ function loadCamera(player, _, idValue)
|
||||
|
||||
for i, v in pairs(matObjects) do
|
||||
local obj = v.hit_object
|
||||
|
||||
if obj.type == 'Card' or obj.type == 'Infinite' then
|
||||
local bounds = obj.getBounds()
|
||||
|
||||
local x1 = bounds['center'][1] - bounds['size'][1] / 2
|
||||
local x2 = bounds['center'][1] + bounds['size'][1] / 2
|
||||
local z1 = bounds['center'][3] - bounds['size'][3] / 2
|
||||
local z2 = bounds['center'][3] + bounds['size'][3] / 2
|
||||
|
||||
if x1 < minX then
|
||||
minX = x1
|
||||
end
|
||||
if x2 > maxX then
|
||||
maxX = x2
|
||||
end
|
||||
if z1 < minZ then
|
||||
minZ = z1
|
||||
end
|
||||
if z2 > maxZ then
|
||||
maxZ = z2
|
||||
end
|
||||
minX = math.min(x1, minX)
|
||||
maxX = math.max(x2, maxX)
|
||||
minZ = math.min(z1, minZ)
|
||||
maxZ = math.max(z2, maxZ)
|
||||
end
|
||||
end
|
||||
|
||||
local dx
|
||||
local dz
|
||||
local centerX
|
||||
local centerZ
|
||||
local scale
|
||||
local yaw
|
||||
local d
|
||||
local dx, dz, centerX, centerZ, yaw
|
||||
|
||||
-- White/Orange
|
||||
if index > 3 and index < 6 then
|
||||
dx = maxX - minX
|
||||
dz = (maxZ - minZ) / 1.6 -- screen ratio * 1.2 (for my macbook pro, no idea how to generalize this)
|
||||
|
||||
-- offset is to move it a bit up, so the cards don't block anything
|
||||
centerX = (minX + maxX) / 2 - dx * playermatData[newMatIndex].xOffset
|
||||
|
||||
-- offset is to move it right a bit, so the toolbar doesn't block anything
|
||||
centerZ = (minZ + maxZ) / 2 + dz * playermatData[newMatIndex].zOffset
|
||||
yaw = 90
|
||||
|
||||
scale = dx
|
||||
if dz > dx then
|
||||
scale = dz
|
||||
end
|
||||
|
||||
d = 0.64 * scale + 7
|
||||
else -- Green/Red
|
||||
dx = (maxX - minX) / 1.6 -- screen ratio * 1.2 (for my macbook pro, no idea how to generalize this)
|
||||
-- offset is to move it a bit up and right, so the cards/toolbar don't block anything
|
||||
centerX = (minX + maxX) / 2 - dx * playermatData[newMatIndex].xOffset
|
||||
centerZ = (minZ + maxZ) / 2 + dz * playermatData[newMatIndex].zOffset
|
||||
-- Green/Red
|
||||
else
|
||||
dx = (maxX - minX) / 1.6
|
||||
dz = maxZ - minZ
|
||||
|
||||
yaw = playermatData[newMatIndex].orientation.y + 180
|
||||
centerX = (minX + maxX) / 2 + dx * playermatData[newMatIndex].zOffset
|
||||
centerZ = (minZ + maxZ) / 2 - dz * playermatData[newMatIndex].xOffset
|
||||
yaw = playermatData[newMatIndex].orientation.y + 180
|
||||
|
||||
scale = dz
|
||||
if dx > dz then
|
||||
scale = dx
|
||||
end
|
||||
|
||||
d = 0.64 * scale + 7
|
||||
end
|
||||
|
||||
-- 15.46 -> 17.081
|
||||
-- 18.88 -> 19.33
|
||||
-- 24.34 -> 22.6
|
||||
local scale = math.max(dx, dz)
|
||||
local d = 0.64 * scale + 7
|
||||
|
||||
-- need to wait if the player color changed
|
||||
Wait.frames(function()
|
||||
@ -882,13 +828,10 @@ function getPlayerColorForIndex(index)
|
||||
end
|
||||
|
||||
local guid = playermatData[index]['guid']
|
||||
|
||||
if guid ~= nil then
|
||||
local mat = getObjectFromGUID(guid)
|
||||
return mat.getVar("playerColor")
|
||||
end
|
||||
|
||||
return nil
|
||||
end
|
||||
|
||||
function getIndexForPlayerColor(color)
|
||||
|
Loading…
Reference in New Issue
Block a user