Merge remote-tracking branch 'origin/dev'

This commit is contained in:
Dayve
2016-09-01 23:28:10 +10:00
17 changed files with 118 additions and 71 deletions

View File

@@ -26,8 +26,8 @@ local CalcsTabClass = common.NewClass("CalcsTab", "UndoHandler", "ControlHost",
self.calcs = LoadModule("Modules/Calcs", self.grid)
self.controls.scrollBarH = common.New("ScrollBarControl", nil, 0, 0, 0, 18, 80, "HORIZONTAL")
self.controls.scrollBarV = common.New("ScrollBarControl", nil, 0, 0, 18, 0, 80, "VERTICAL")
self.controls.scrollBarH = common.New("ScrollBarControl", nil, 0, 0, 0, 18, 80, "HORIZONTAL", true)
self.controls.scrollBarV = common.New("ScrollBarControl", nil, 0, 0, 18, 0, 80, "VERTICAL", true)
end)
function CalcsTabClass:Load(xml, dbFileName)
@@ -70,19 +70,24 @@ function CalcsTabClass:Save(xml)
end
function CalcsTabClass:Draw(viewPort, inputEvents)
local gridViewPort = { x = viewPort.x, y = viewPort.y }
if self.grid.realWidth > viewPort.width then
viewPort.height = viewPort.height - 18
gridViewPort.height = viewPort.height - 18
else
gridViewPort.height = viewPort.height
end
if self.grid.realHeight > viewPort.height then
viewPort.width = viewPort.width - 18
gridViewPort.width = viewPort.width - 18
else
gridViewPort.width = viewPort.width
end
self.controls.scrollBarH.x = viewPort.x
self.controls.scrollBarH.y = viewPort.y + viewPort.height
self.controls.scrollBarH.width = viewPort.width
self.controls.scrollBarH.x = gridViewPort.x
self.controls.scrollBarH.y = gridViewPort.y + gridViewPort.height
self.controls.scrollBarH.width = gridViewPort.width
self.controls.scrollBarH:SetContentDimension(self.grid.realWidth, viewPort.width)
self.controls.scrollBarV.x = viewPort.x + viewPort.width
self.controls.scrollBarV.y = viewPort.y
self.controls.scrollBarV.height = viewPort.height
self.controls.scrollBarV.x = gridViewPort.x + gridViewPort.width
self.controls.scrollBarV.y = gridViewPort.y
self.controls.scrollBarV.height = gridViewPort.height
self.controls.scrollBarV:SetContentDimension(self.grid.realHeight, viewPort.height)
self.grid.offX = viewPort.x - self.controls.scrollBarH.offset
@@ -99,8 +104,8 @@ function CalcsTabClass:Draw(viewPort, inputEvents)
end
end
end
self.grid:ProcessInput(inputEvents, viewPort)
self:ProcessControlsInput(inputEvents)
self.grid:ProcessInput(inputEvents, gridViewPort)
self:ProcessControlsInput(inputEvents, viewPort)
if self.grid.changeFlag then
self.grid.changeFlag = false

View File

@@ -29,7 +29,7 @@ function ControlHostClass:GetMouseOverControl()
end
end
function ControlHostClass:ProcessControlsInput(inputEvents)
function ControlHostClass:ProcessControlsInput(inputEvents, viewPort)
for id, event in ipairs(inputEvents) do
if event.type == "KeyDown" then
if self.selControl then
@@ -38,10 +38,12 @@ function ControlHostClass:ProcessControlsInput(inputEvents)
end
if not self.selControl and event.key:match("BUTTON") then
self:SelectControl()
local mOverControl = self:GetMouseOverControl()
if mOverControl and mOverControl.OnKeyDown then
self:SelectControl(mOverControl:OnKeyDown(event.key, event.doubleClick))
inputEvents[id] = nil
if isMouseInRegion(viewPort) then
local mOverControl = self:GetMouseOverControl()
if mOverControl and mOverControl.OnKeyDown then
self:SelectControl(mOverControl:OnKeyDown(event.key, event.doubleClick))
inputEvents[id] = nil
end
end
end
elseif event.type == "KeyUp" then
@@ -50,8 +52,8 @@ function ControlHostClass:ProcessControlsInput(inputEvents)
self:SelectControl(self.selControl:OnKeyUp(event.key))
end
inputEvents[id] = nil
else
local mOverControl = self:GetMouseOverControl()
elseif isMouseInRegion(viewPort) then
local mOverControl = self:GetMouseOverControl(viewPort)
if mOverControl and mOverControl.OnKeyUp then
mOverControl:OnKeyUp(event.key)
inputEvents[id] = nil
@@ -68,10 +70,10 @@ function ControlHostClass:ProcessControlsInput(inputEvents)
end
end
function ControlHostClass:DrawControls(...)
function ControlHostClass:DrawControls(viewPort)
for _, control in pairs(self.controls) do
if control:IsShown() then
control:Draw(...)
control:Draw(viewPort)
end
end
end

View File

@@ -114,7 +114,7 @@ function DropDownClass:Draw()
if type(selLabel) == "table" then
selLabel = selLabel.label
end
SetViewport(x + 2, y + 2, width - 16, height - 4)
SetViewport(x + 2, y + 2, width - height, height - 4)
DrawString(0, 0, "LEFT", height - 4, "VAR", selLabel or "")
SetViewport()
if self.dropped then

View File

@@ -166,7 +166,7 @@ function ImportTabClass:Draw(viewPort, inputEvents)
self.width = viewPort.width
self.height = viewPort.height
self:ProcessControlsInput(inputEvents)
self:ProcessControlsInput(inputEvents, viewPort)
main:DrawBackground(viewPort)

View File

@@ -10,7 +10,7 @@ local t_insert = table.insert
local m_min = math.min
local ItemSlotClass = common.NewClass("ItemSlot", "DropDownControl", function(self, anchor, x, y, itemsTab, slotName, slotLabel, nodeId)
self.DropDownControl(anchor, x, y, 320, 20, { }, function(sel)
self.DropDownControl(anchor, x, y, 310, 20, { }, function(sel)
if self.items[sel] ~= self.selItemId then
self.selItemId = self.items[sel]
itemsTab:PopulateSlots()

View File

@@ -28,12 +28,12 @@ local ItemsTabClass = common.NewClass("ItemsTab", "UndoHandler", "ControlHost",
-- Item slots
self.slots = { }
for index, slotName in pairs(baseSlots) do
t_insert(self.controls, common.New("ItemSlot", {"TOPLEFT",self,"TOPLEFT"}, 100, (index - 1) * 20 + 24, self, slotName))
t_insert(self.controls, common.New("ItemSlot", {"TOPLEFT",self,"TOPLEFT"}, 96, (index - 1) * 20 + 24, self, slotName))
end
self.sockets = { }
for _, node in pairs(main.tree.nodes) do
if node.type == "socket" then
local socketControl = common.New("ItemSlot", {"TOPLEFT",self,"TOPLEFT"}, 100, 0, self, "Jewel "..node.id, "Socket", node.id)
local socketControl = common.New("ItemSlot", {"TOPLEFT",self,"TOPLEFT"}, 96, 0, self, "Jewel "..node.id, "Socket", node.id)
self.controls["socket"..node.id] = socketControl
self.sockets[node.id] = socketControl
end
@@ -43,17 +43,17 @@ local ItemsTabClass = common.NewClass("ItemsTab", "UndoHandler", "ControlHost",
-- Build item list
self.controls.itemList = common.New("ItemList", {"TOPLEFT",self.slots[baseSlots[1]],"TOPRIGHT"}, 20, 0, 360, 308, self)
self.controls.selectDBLabel = common.New("LabelControl", {"TOPLEFT",self.controls.itemList,"BOTTOMLEFT"}, 0, 16, 0, 16, "^7Import from:")
self.controls.selectDBLabel = common.New("LabelControl", {"TOPLEFT",self.controls.itemList,"BOTTOMLEFT"}, 0, 14, 0, 16, "^7Import from:")
self.controls.selectDB = common.New("DropDownControl", {"LEFT",self.controls.selectDBLabel,"RIGHT"}, 4, 0, 150, 18, { "Uniques", "Rare Templates" })
-- Unique database
self.controls.uniqueDB = common.New("ItemDB", {"TOPLEFT",self.controls.selectDBLabel,"BOTTOMLEFT"}, 0, 48, 360, 276, self, main.uniqueDB)
self.controls.uniqueDB = common.New("ItemDB", {"TOPLEFT",self.controls.selectDBLabel,"BOTTOMLEFT"}, 0, 46, 360, 260, self, main.uniqueDB)
self.controls.uniqueDB.shown = function()
return self.controls.selectDB.sel == 1
end
-- Rare template database
self.controls.rareDB = common.New("ItemDB", {"TOPLEFT",self.controls.selectDBLabel,"BOTTOMLEFT"}, 0, 48, 360, 276, self, main.rareDB)
self.controls.rareDB = common.New("ItemDB", {"TOPLEFT",self.controls.selectDBLabel,"BOTTOMLEFT"}, 0, 46, 360, 260, self, main.rareDB)
self.controls.rareDB.shown = function()
return self.controls.selectDB.sel == 2
end
@@ -84,7 +84,7 @@ local ItemsTabClass = common.NewClass("ItemsTab", "UndoHandler", "ControlHost",
self.controls.displayItemVariant.shown = function()
return self.displayItem.variantList and #self.displayItem.variantList > 1
end
self.controls.displayItemRangeLine = common.New("DropDownControl", {"TOPLEFT",self.controls.addDisplayItem,"BOTTOMLEFT"}, 0, 8, 400, 18, nil, function(sel)
self.controls.displayItemRangeLine = common.New("DropDownControl", {"TOPLEFT",self.controls.addDisplayItem,"BOTTOMLEFT"}, 0, 8, 350, 18, nil, function(sel)
self.controls.displayItemRangeSlider.val = self.displayItem.rangeLineList[sel].range
end)
self.controls.displayItemRangeLine.shown = function()
@@ -94,6 +94,9 @@ local ItemsTabClass = common.NewClass("ItemsTab", "UndoHandler", "ControlHost",
self.displayItem.rangeLineList[self.controls.displayItemRangeLine.sel].range = val
itemLib.buildItemModList(self.displayItem)
end)
-- Scroll bar
self.controls.scrollBarH = common.New("ScrollBarControl", nil, 0, 0, 0, 18, 80, "HORIZONTAL", true)
end)
function ItemsTabClass:Load(xml, dbFileName)
@@ -154,6 +157,11 @@ function ItemsTabClass:Draw(viewPort, inputEvents)
self.y = viewPort.y
self.width = viewPort.width
self.height = viewPort.height
self.controls.scrollBarH.width = viewPort.width
self.controls.scrollBarH.x = viewPort.x
self.controls.scrollBarH.y = viewPort.y + viewPort.height - 18
self.controls.scrollBarH:SetContentDimension(self.controls.displayItemRangeSlider:GetPos() + self.controls.displayItemRangeSlider:GetSize() - self.x, viewPort.width)
self.x = self.x - self.controls.scrollBarH.offset
for id, event in ipairs(inputEvents) do
if event.type == "KeyDown" then
@@ -171,7 +179,7 @@ function ItemsTabClass:Draw(viewPort, inputEvents)
end
end
end
self:ProcessControlsInput(inputEvents)
self:ProcessControlsInput(inputEvents, viewPort)
main:DrawBackground(viewPort)
@@ -236,6 +244,9 @@ function ItemsTabClass:SetDisplayItem(item)
self.controls.displayItemVariant.list = item.variantList
self.controls.displayItemVariant.sel = item.variant
self:UpdateDisplayItemRangeLines()
self.controls.scrollBarH:SetOffset(self.controls.scrollBarH.offsetMax)
else
self.controls.scrollBarH:SetOffset(0)
end
end

View File

@@ -29,7 +29,7 @@ local PopupDialogClass = common.NewClass("PopupDialog", "ControlHost", "Control"
end
end)
function PopupDialogClass:Draw()
function PopupDialogClass:Draw(viewPort)
local x, y = self:GetPos()
local width, height = self:GetSize()
-- Draw dialog background
@@ -48,10 +48,10 @@ function PopupDialogClass:Draw()
SetDrawColor(1, 1, 1)
DrawString(titleX + 4, y - 7, "LEFT", 16, "VAR", title)
-- Draw controls
self:DrawControls()
self:DrawControls(viewPort)
end
function PopupDialogClass:ProcessInput(inputEvents)
function PopupDialogClass:ProcessInput(inputEvents, viewPort)
for id, event in ipairs(inputEvents) do
if event.type == "KeyDown" then
if event.key == "ESCAPE" then
@@ -60,5 +60,5 @@ function PopupDialogClass:ProcessInput(inputEvents)
end
end
end
self:ProcessControlsInput(inputEvents)
self:ProcessControlsInput(inputEvents, viewPort)
end

View File

@@ -10,12 +10,17 @@ local m_max = math.max
local m_ceil = math.ceil
local m_floor = math.floor
local ScrollBarClass = common.NewClass("ScrollBarControl", "Control", function(self, anchor, x, y, width, height, step, dir)
local ScrollBarClass = common.NewClass("ScrollBarControl", "Control", function(self, anchor, x, y, width, height, step, dir, autoHide)
self.Control(anchor, x, y, width, height)
self.step = step or width * 2
self.dir = dir or "VERTICAL"
self.offset = 0
self.enabled = false
if autoHide then
self.shown = function()
return self.enabled
end
end
end)
function ScrollBarClass:SetContentDimension(conDim, viewDim)
@@ -109,6 +114,9 @@ function ScrollBarClass:Draw()
local enabled = self:IsEnabled()
local mOver, mOverComp = self:IsMouseOver()
local dir = self.dir
if not IsKeyDown("LEFTBUTTON") then
self.dragging = false
end
if self.dragging then
local cursorX, cursorY = GetCursorPos()
if self.dir == "HORIZONTAL" then
@@ -283,7 +291,7 @@ function ScrollBarClass:OnKeyDown(key)
end
function ScrollBarClass:OnKeyUp(key)
if not self:IsShown() or not self:IsEnabled() or self:GetProperty("locked") then
if not self:IsShown() or not self:IsEnabled() or self:GetProperty("locked") then
return
end
if key == "LEFTBUTTON" then
@@ -300,5 +308,9 @@ function ScrollBarClass:OnKeyUp(key)
self.holdRepeating = nil
self.holdPauseTime = nil
end
elseif key == "WHEELDOWN" then
self:Scroll(1)
elseif key == "WHEELUP" then
self:Scroll(-1)
end
end

View File

@@ -120,7 +120,7 @@ function SkillsTabClass:Draw(viewPort, inputEvents)
end
end
end
self:ProcessControlsInput(inputEvents)
self:ProcessControlsInput(inputEvents, viewPort)
main:DrawBackground(viewPort)
@@ -135,7 +135,7 @@ function SkillsTabClass:CreateGemSlot(index)
self.gemSlots[index] = slot
-- Gem name specification
slot.nameSpec = common.New("EditControl", nil, 0, 0, 200, 20, nil, nil, "[ %a]", 30, function(buf)
slot.nameSpec = common.New("EditControl", nil, 0, 0, 200, 20, nil, nil, "[ %a']", 30, function(buf)
if not self.displaySkill.gemList[index] then
self.displaySkill.gemList[index] = { nameSpec = "", level = 1, quality = 0 }
end

View File

@@ -89,7 +89,7 @@ function TreeTabClass:Draw(viewPort, inputEvents)
end
end
end
self:ProcessControlsInput(inputEvents)
self:ProcessControlsInput(inputEvents, viewPort)
self.viewer:Draw(self.build, viewPort, inputEvents)

View File

@@ -289,7 +289,6 @@ function buildMode:Save(xml)
end
function buildMode:OnFrame(inputEvents)
self:ProcessControlsInput(inputEvents)
for id, event in ipairs(inputEvents) do
if event.type == "KeyDown" then
if event.key == "s" and IsKeyDown("CTRL") then
@@ -298,6 +297,7 @@ function buildMode:OnFrame(inputEvents)
end
end
end
self:ProcessControlsInput(inputEvents, main.viewPort)
-- Update contents of ascendancy class dropdown
wipeTable(self.controls.ascendDrop.list)
@@ -343,25 +343,24 @@ function buildMode:OnFrame(inputEvents)
end
self.controls.mainSkillDrop.sel = self.mainSkillIndex
-- Draw contents of current tab
local sideBarWidth = 312
local viewPort = {
local tabViewPort = {
x = sideBarWidth,
y = 32,
width = main.screenW - sideBarWidth,
height = main.screenH - 32
}
if self.viewMode == "IMPORT" then
self.importTab:Draw(viewPort, inputEvents)
self.importTab:Draw(tabViewPort, inputEvents)
elseif self.viewMode == "TREE" then
self.treeTab:Draw(viewPort, inputEvents)
self.treeTab:Draw(tabViewPort, inputEvents)
elseif self.viewMode == "SKILLS" then
self.skillsTab:Draw(viewPort, inputEvents)
self.skillsTab:Draw(tabViewPort, inputEvents)
elseif self.viewMode == "ITEMS" then
self.itemsTab:Draw(viewPort, inputEvents)
self.itemsTab:Draw(tabViewPort, inputEvents)
elseif self.viewMode == "CALCS" then
self.calcsTab:Draw(viewPort, inputEvents)
self.calcsTab:Draw(tabViewPort, inputEvents)
end
-- Draw top bar background

View File

@@ -64,12 +64,11 @@ function listMode:OnFrame(inputEvents)
end
end
end
self:ProcessControlsInput(inputEvents)
self:ProcessControlsInput(inputEvents, main.viewPort)
SetDrawColor(0.5, 0.5, 0.5)
DrawImage(main.tree.assets.Background1.handle, 0, 0, main.screenW, main.screenH, 0, 0, main.screenW / 100, main.screenH / 100)
main:DrawBackground(main.viewPort)
self:DrawControls()
self:DrawControls(main.viewPort)
end
function listMode:BuildList()

View File

@@ -123,6 +123,12 @@ function jsonToLua(json)
return json:gsub("%[","{"):gsub("%]","}"):gsub('"(%d[%d%.]*)":','[%1]='):gsub('"([^"]+)":','["%1"]='):gsub("\\/","/"):gsub("{(%w+)}","{[0]=%1}")
end
-- Check if mouse is currently inside area defined by region.x, region.y, region.width, region.height
function isMouseInRegion(region)
local cursorX, cursorY = GetCursorPos()
return cursorX >= region.x and cursorX < region.x + region.width and cursorY >= region.y and cursorY < region.y + region.height
end
-- Make a copy of a table and all subtables
function copyTable(tbl)
local out = {}

View File

@@ -153,16 +153,18 @@ function main:OnFrame()
self:CallMode("Init", unpack(self.modeArgs))
end
self.viewPort = { x = 0, y = 0, width = self.screenW, height = self.screenH }
if self.popups[1] then
self.popups[1]:ProcessInput(self.inputEvents)
self.popups[1]:ProcessInput(self.inputEvents, self.viewPort)
wipeTable(self.inputEvents)
else
self:ProcessControlsInput(self.inputEvents)
self:ProcessControlsInput(self.inputEvents, self.viewPort)
end
self:CallMode("OnFrame", self.inputEvents)
self:CallMode("OnFrame", self.inputEvents, self.viewPort)
self:DrawControls()
self:DrawControls(self.viewPort)
if self.popups[1] then
SetDrawLayer(10)

View File

@@ -7,6 +7,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
ProjectSection(SolutionItems) = preProject
Launch.lua = Launch.lua
LaunchInstall.lua = LaunchInstall.lua
README.md = README.md
UpdateApply.lua = UpdateApply.lua
UpdateCheck.lua = UpdateCheck.lua
EndProjectSection

View File

@@ -46,3 +46,13 @@ Head over to the [Releases](https://github.com/Openarl/PathOfBuilding/releases)
![ss1](https://cloud.githubusercontent.com/assets/19189971/18089779/f0fe23fa-6f04-11e6-8ed7-ff7d5b9f867a.png)
![ss2](https://cloud.githubusercontent.com/assets/19189971/18089778/f0f923f0-6f04-11e6-89c2-b2c1410d3583.png)
![ss3](https://cloud.githubusercontent.com/assets/19189971/18089780/f0ff234a-6f04-11e6-8c88-6193fe59a5c4.png)
## Changelog
### 1.0.13 - 2016/09/01
* Added a scroll bar to the Items tab to fix the issue with low screen resolutions
* The scroll bar will automatically jump to the right when you start editing an item, then jump back when you save it
* This might be a little disorienting; need feedback on this
* Also fixed some minor issues with scroll bars (mouse wheel should now work on all of them)
### 1.0.12 - 2016/09/01
* Updated tree to 2.4.0
* Added latest patch note changes

View File

@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<PoBVersion>
<Version number="1.0.12"/>
<Version number="1.0.13"/>
<Source part="program" url="https://raw.githubusercontent.com/Openarl/PathOfBuilding/{branch}/"/>
<Source part="tree" url="https://raw.githubusercontent.com/Openarl/PathOfBuilding/{branch}/tree.zip"/>
<Source url="https://raw.githubusercontent.com/Openarl/PathOfBuilding/{branch}/runtime-win32.zip" part="runtime" platform="win32"/>
@@ -9,39 +9,39 @@
<File sha1="4f17937f2b37784e169a3792b235f2a0a3961e61" name="UpdateApply.lua" part="program"/>
<File sha1="eb9258fd00748a2cc0f38fe6feb3e08c5b316bc9" name="Classes/BuildListControl.lua" part="program"/>
<File sha1="07632f822bac7fc65dadc0133153d5c39d762ba7" name="Classes/ButtonControl.lua" part="program"/>
<File sha1="0d68321bd5845d4ce6d22c7b0459cb041c67a6d1" name="Classes/CalcsTab.lua" part="program"/>
<File sha1="ffe8c54a8006cb7acc34ba5c6e50772081a0a694" name="Classes/CalcsTab.lua" part="program"/>
<File sha1="02d11638a2ada37b8521cb946512009c468028a1" name="Classes/CheckBoxControl.lua" part="program"/>
<File sha1="b95462f5fcd90b69e5a09c5ec86f58943fc26ffa" name="Classes/Control.lua" part="program"/>
<File sha1="fc490ad3b0cd2ff64f3f9af6e4dc921804b169cb" name="Classes/ControlHost.lua" part="program"/>
<File sha1="b50f6451cf2923d83dc348d10a84b4d6c32b7745" name="Classes/DropDownControl.lua" part="program"/>
<File sha1="1d35e3a3d8427d30254e7d8983562d0d4d8dc733" name="Classes/ControlHost.lua" part="program"/>
<File sha1="7c23b2ae9eb3b9b02a5da8afce64e2cb191b36b3" name="Classes/DropDownControl.lua" part="program"/>
<File sha1="89c7ffba4373b302822adc571e7fb2ed44427227" name="Classes/EditControl.lua" part="program"/>
<File sha1="c8774a6e9a39fe8f2d434889abe2533aee78fc47" name="Classes/Grid.lua" part="program"/>
<File sha1="be10e8399cb4851c2a45495698d701824f8a981d" name="Classes/ImportTab.lua" part="program"/>
<File sha1="85aae0489332ca754538757560ec1adaf3383fc2" name="Classes/ImportTab.lua" part="program"/>
<File sha1="2a3001d92c8f788a7d487643fbfcc4fa93419f4a" name="Classes/ItemDBControl.lua" part="program"/>
<File sha1="0cb467a1a8643e5297d8e1cdc1a3808686ffc9ef" name="Classes/ItemListControl.lua" part="program"/>
<File sha1="3f0db9229007f0a6552d64632db20621077ecc7d" name="Classes/ItemSlotControl.lua" part="program"/>
<File sha1="18c711ac30132499b30b95b6d68e4796e01eab33" name="Classes/ItemsTab.lua" part="program"/>
<File sha1="b78b8fd05d201aff7e0da1b3a70acdedef9bf60d" name="Classes/ItemSlotControl.lua" part="program"/>
<File sha1="c54a8dd3f9bc379dd296c48442e36e9da98d8f66" name="Classes/ItemsTab.lua" part="program"/>
<File sha1="e577edeea7685cb2b0cd0d00b901a458ae45add0" name="Classes/LabelControl.lua" part="program"/>
<File sha1="6f8f98d6ee505af53441c1fe9ad74fbff86d56ad" name="Classes/PassiveSpec.lua" part="program"/>
<File sha1="03dde914f7ad75d26f2ba0845b11986d198b6e94" name="Classes/PassiveTree.lua" part="program"/>
<File sha1="b11327253279ec397335511d7cba3ba03bed3ce2" name="Classes/PassiveTreeView.lua" part="program"/>
<File sha1="27a1c5220b28045278d79054e688a956f48e98e7" name="Classes/PopupDialog.lua" part="program"/>
<File sha1="b2a6624d2574690561788455d19fff20ddb257d7" name="Classes/ScrollBarControl.lua" part="program"/>
<File sha1="b5d4e4e7cedcabefa029cdefc74db5ac0a82d87f" name="Classes/PopupDialog.lua" part="program"/>
<File sha1="f2f2bda4a5a26e54cce51614e3ad48b6f7182671" name="Classes/ScrollBarControl.lua" part="program"/>
<File sha1="261dcf54a4542e6160fd7024d8edf4fc095d9c71" name="Classes/SectionControl.lua" part="program"/>
<File sha1="6131965219f17fd2e6dafc225e08699cf921d15c" name="Classes/SkillListControl.lua" part="program"/>
<File sha1="28d77c6f0ba9879437b7ab69e5d42f7568db95db" name="Classes/SkillsTab.lua" part="program"/>
<File sha1="28a9f0fd83fd190ca4c4d460088dc3af566d9e6a" name="Classes/SkillsTab.lua" part="program"/>
<File sha1="6317bd9ba391832dccafcb62409a5ce2988d1928" name="Classes/SliderControl.lua" part="program"/>
<File sha1="80527e0e05c986355ce7af2ba026538aec99a63a" name="Classes/SlotSelectControl.lua" part="program"/>
<File sha1="5f28e18b2867769b6141109332f263e12c74b2f9" name="Classes/TreeTab.lua" part="program"/>
<File sha1="6c2fb0f23984a5c924e779a39ced1af6854be1ec" name="Classes/TreeTab.lua" part="program"/>
<File sha1="4b7675c8b4fe71cade7dd3d70793df1ed8022d01" name="Classes/UndoHandler.lua" part="program"/>
<File sha1="64233ed8a3cfe7664467d2c9676609c2bacc9d3c" name="Modules/Build.lua" part="program"/>
<File sha1="38d7adb580d995f3aae8837153c374139fbddc6e" name="Modules/BuildList.lua" part="program"/>
<File sha1="329ba38548953be8101a83e4c410ebe6f0d0607c" name="Modules/Build.lua" part="program"/>
<File sha1="c03a7796aea3e9aa832fbb92c1f674ef5af690ca" name="Modules/BuildList.lua" part="program"/>
<File sha1="00197d6bdb1bd2f855233397e39948342eaadae1" name="Modules/Calcs.lua" part="program"/>
<File sha1="7721650215b51d7c472da2e81389b81c91c6b498" name="Modules/CalcsView.lua" part="program"/>
<File sha1="d594ac3a7c8fd823664891db1874b29666bf1915" name="Modules/Common.lua" part="program"/>
<File sha1="3fd280d8abfa60264495daad42f8ccaa92cdcd46" name="Modules/Common.lua" part="program"/>
<File sha1="cb25bd581587ba5b35f77ca7b245334be1e5186a" name="Modules/Data.lua" part="program"/>
<File sha1="e04edbadc8eda47583b80f49a3c0a6b844d00dc5" name="Modules/ItemTools.lua" part="program"/>
<File sha1="3366e2e4f95db6254bcfb413d5a58b8d307dae17" name="Modules/Main.lua" part="program"/>
<File sha1="bb80b7fe33286e94ca0a52fcd4b1ac403a3d09b9" name="Modules/Main.lua" part="program"/>
<File sha1="d4dc00795c80a8a0831f9e126df2f586ef50978c" name="Modules/ModParser.lua" part="program"/>
<File sha1="bc49ce1b5e15da40476a9c99c4c690b323c0e7ad" name="Modules/ModTools.lua" part="program"/>
<File sha1="e7ee7e5b6388facb7bf568517ecc401590757df7" name="Assets/ring.png" part="program"/>