diff --git a/DataBase.lua b/DataBase.lua
index 7e16b76..16d4a63 100644
--- a/DataBase.lua
+++ b/DataBase.lua
@@ -7,7 +7,7 @@
----------------------------
DB = { }
-DB.version=0.01
+DB.version=0.02
DB.dataDefault = {
data = {}
@@ -30,76 +30,120 @@ function DB.OnLoad(eventCode, addOnName)
EVENT_MANAGER:RegisterForEvent("DataBase", EVENT_OPEN_GUILD_BANK, DB.GB_Opened)
EVENT_MANAGER:RegisterForEvent("DataBase", EVENT_GUILD_BANK_ITEMS_READY, DB.GB_Ready)
- --Загрузка сохраненных переменных (?)
+ --Загрузка сохраненных переменных
DB.items= ZO_SavedVars:New( "DB_SavedVars" , 2, "items" , DB.dataDefault , nil )
- -- Инициализация графического интерфейся
+ --Всё подгружается из базы, скроллится и перемещается.
+ --Минусы: некликабельные строки, нет картинок, неудобное восприятие информации
+
+ -- Полезные функции:
+ -- Можно получить иконку и стоимость
+ -- GetItemLinkInfo(string itemLink)
+ --
+ -- Отображение тултипа из базы (/script d(db_UI.Tooltip:SetLink(DB.items.data[2].name)))
+ -- SetLink(string aLink)
+
+ --Инициализация графического интерфейся
db_UI = WINDOW_MANAGER:CreateTopLevelWindow("DBUI")
db_UI.BG = WINDOW_MANAGER:CreateControl("DBUI_BG",DBUI,CT_BACKDROP)
db_UI.Title = WINDOW_MANAGER:CreateControl("DBUI_Title",DBUI,CT_LABEL)
db_UI.Items = WINDOW_MANAGER:CreateControl("DBUI_Items",DBUI,CT_LABEL)
+ db_UI.TB = WINDOW_MANAGER:CreateControl("DBUI_TB",DBUI,CT_TEXTBUFFER)
+ db_UI.Slider = WINDOW_MANAGER:CreateControl("DBUI_Slider",DBUI_TB,CT_SLIDER)
+ db_UI.Tooltip = WINDOW_MANAGER:CreateControl("DBUI_Tooltip",DBUI,CT_TOOLTIP)
+
+ --Обработчики событий
+ --Прокрутка слайдера и буфера колёсиком
+ db_UI:SetHandler("OnMouseWheel",
+ function(self,delta)
+ db_UI.TB:SetScrollPosition(DBUI_TB:GetScrollPosition() + delta)
+ db_UI.Slider:SetValue(db_UI.Slider:GetValue()- delta)
+ end)
+
+ --Прокрутка буфера ползунком слайдера
+ db_UI.Slider:SetHandler("OnValueChanged",
+ function(self, val, eventReason)
+ db_UI.TB:SetScrollPosition(#DB.items.data-val)
+ end)
--Общие настройки интерфейса
- db_UI:SetDimensions(425,645)
-
- --Создаем скролл // слайдер
-
- -- Похоже слайдер придётся рисовать самому.. а при скроллинге только изменять значения 10-15 полей заранее созданых.
- --а может и нет.. надо бы глянуть текстуры.
-
- -- db_UI.Scroll = WINDOW_MANAGER:CreateControl("DBUI_Scroll",DBUI,CT_SCROLL)
- db_UI.Slider = WINDOW_MANAGER:CreateControl("DBUI_Slider",DBUI,CT_SLIDER)
- -- db_UI.Slider:DoesAllowDraggingFromThumb()
- -- /script d(db_UI.Slider:DoesAllowDraggingFromThumb())
+ db_UI:SetAnchor(TOPLEFT,GuiRoot,TOPLEFT,10,10)
+ db_UI:SetDimensions(300,245)
+ db_UI:SetMouseEnabled(true)
+ db_UI:SetMovable(true)
- -- Фон
- db_UI.BG:SetDimensions( 425 , 645 )
+ --Фон
+ db_UI.BG:SetDimensions(300,245)
db_UI.BG:SetCenterColor(0,0,0,1)
db_UI.BG:SetEdgeColor(0,0,0,1)
db_UI.BG:SetEdgeTexture("", 8, 1, 1)
db_UI.BG:SetAlpha(0.5)
db_UI.BG:SetAnchor(BOTTOM,DBUI,BOTTOM,0,0)
- -- Заголовок
+ --Заголовок
db_UI.Title:SetFont("ZoFontGame" )
db_UI.Title:SetColor(255,255,255,1.5)
- db_UI.Title:SetText( "GuildBank Storage" )
+ db_UI.Title:SetText( "GuildBank Storage: " )
db_UI.Title:SetAnchor(TOPLEFT,DBUI,TOPLEFT,10,0)
- --Применяем общие настройки
- db_UI:SetMouseEnabled(false)
- db_UI:SetMovable(true)
-
--Выводим число вещей в инвентаре:
db_UI.Items:SetFont("ZoFontGame" )
db_UI.Items:SetColor(255,255,255,1.5)
db_UI.Items:SetText("ItemsTotal: "..#DB.items.data)
db_UI.Items:SetAnchor(TOPLEFT,DBUI,TOPLEFT,10,20)
- --Выводим название и число вещей на экран
+ --Текстовый буфер
+ db_UI.TB:SetDimensions(275,200)
+ db_UI.TB:SetFont( "ZoFontGame" )
+ db_UI.TB:SetAnchor(BOTTOM,DBUI,BOTTOM,0,-5)
+ db_UI.TB:SetLinkEnabled(true)
+ db_UI.TB:SetMaxHistoryLines(#DB.items.data)
+
+ --Подсказка
+ -- db_UI.Tooltip:SetDimensions(425,345)
+ -- db_UI.Tooltip:SetFont( "ZoFontGame" )
+ -- db_UI.Tooltip:SetAnchor(BOTTOM,DBUI,BOTTOM,50,50)
+
+ --Слайдер
+ -- /script db_UI.Slider:SetBackgroundBottomTexture("", 8, 1, 1)
+ local tex = "/esoui/art/miscellaneous/scrollbox_elevator.dds"
+
+ db_UI.Slider:SetMinMax(1,#DB.items.data)
+ db_UI.Slider:SetWidth(22)
+ db_UI.Slider:SetOrientation(ORIENTATION_VERTICAL)
+ db_UI.Slider:SetThumbTexture(tex, tex, tex, 22, 100, 0, 0, 1, 1)
+ db_UI.Slider:SetAnchor(BOTTOM,db_UI,BOTTOMRIGHT,-10,0)
+ db_UI.Slider:SetMouseEnabled(true)
+ db_UI.Slider:SetHeight(245)
+ db_UI.Slider:SetValue(#DB.items.data)
+ db_UI.Slider:SetValueStep(1)
+
+
+ --Отображение
db_UI.Items.Item={}
db_UI.Items.Item.name ={}
db_UI.Items.Item.count ={}
- -- Если добавлять фильтры, выносить эту залупу ниже в функцию и скармливать ей заранее подготовленый массив
- -- for i=1, #DB.items.data, 1 do
- for i=1, 10, 1 do
- --Название
- db_UI.Items.Item.name[i] = WINDOW_MANAGER:CreateControl("DBUI_Item_name_"..i,DBUI,CT_LABEL)
- db_UI.Items.Item.name[i]:SetFont("ZoFontGame" )
- db_UI.Items.Item.name[i]:SetColor(255,255,255,1.5)
- db_UI.Items.Item.name[i]:SetText(DB.items.data[i].name)
- db_UI.Items.Item.name[i]:SetAnchor(TOPLEFT,db_UI,TOPLEFT,20,20+i*20)
-
- --Количество
- db_UI.Items.Item.name[i] = WINDOW_MANAGER:CreateControl("DBUI_Item_count_"..i,DBUI,CT_LABEL)
- db_UI.Items.Item.name[i]:SetFont("ZoFontGame" )
- db_UI.Items.Item.name[i]:SetColor(255,255,255,1.5)
- db_UI.Items.Item.name[i]:SetText(DB.items.data[i].count)
- db_UI.Items.Item.name[i]:SetAnchor(TOPLEFT,db_UI,TOPLEFT,300,20+i*20)
- end
+ if (#DB.items.data==0) then return end
+ for i=1, #DB.items.data, 1 do
+
+ db_UI.TB:AddMessage(i.."|| "..DB.items.data[i].count.." || "..DB.items.data[i].name)
+ -- --Название
+ -- db_UI.Items.Item.name[i] = WINDOW_MANAGER:CreateControl("DBUI_Item_name_"..i,DBUI,CT_LABEL)
+ -- db_UI.Items.Item.name[i]:SetFont("ZoFontGame" )
+ -- db_UI.Items.Item.name[i]:SetColor(255,255,255,1.5)
+ -- db_UI.Items.Item.name[i]:SetText(DB.items.data[i].name)
+ -- db_UI.Items.Item.name[i]:SetAnchor(TOPLEFT,DBUI,TOPLEFT,20,20+i*20)
+ -- --Количество
+ -- db_UI.Items.Item.name[i] = WINDOW_MANAGER:CreateControl("DBUI_Item_count_"..i,DBUI,CT_LABEL)
+ -- db_UI.Items.Item.name[i]:SetFont("ZoFontGame" )
+ -- db_UI.Items.Item.name[i]:SetColor(255,255,255,1.5)
+ -- db_UI.Items.Item.name[i]:SetText(DB.items.data[i].count)
+ -- db_UI.Items.Item.name[i]:SetAnchor(TOPLEFT,DBUI,TOPLEFT,300,20+i*20)
+
+ end
end
@@ -212,20 +256,16 @@ function DB.gcount()
if GetItemName(BAG_GUILDBANK,DB.ItemCounter)~="" then
d(DB.ItemCounter.." : "..GetItemLink(BAG_GUILDBANK,DB.ItemCounter).." : "..GetSlotStackSize(BAG_GUILDBANK,DB.ItemCounter))
founditems=true
-
- if #sv == 0 then
- sv[1] =
- {
- ["name"] = tostring(GetItemLink(BAG_GUILDBANK,DB.ItemCounter)),
- ["count"] = tostring(GetSlotStackSize(BAG_GUILDBANK,DB.ItemCounter))
- }
- else
- sv[#sv+1] =
- {
- ["name"] = tostring(GetItemLink(BAG_GUILDBANK,DB.ItemCounter)),
- ["count"] = tostring(GetSlotStackSize(BAG_GUILDBANK,DB.ItemCounter))
- }
- end
+
+ --Избавляемся от мусора при сохранении
+ local namefine=string.gsub(GetItemLink(BAG_GUILDBANK,DB.ItemCounter), "(^p)", "")
+ namefine=string.gsub(namefine, "(^n)", "")
+
+ sv[#sv+1] =
+ {
+ ["name"] = tostring(namefine),
+ ["count"] = tostring(GetSlotStackSize(BAG_GUILDBANK,DB.ItemCounter))
+ }
end
DB.ItemCounter=DB.ItemCounter+1
end
diff --git a/DataBase.txt b/DataBase.txt
index c5cf92e..3163bf8 100644
--- a/DataBase.txt
+++ b/DataBase.txt
@@ -1,5 +1,5 @@
## Title: DataBase
-## APIVersion: 100000
+## APIVersion: 100003
## SavedVariables: DB_SavedVars
DataBase.lua