Интерфейс принимает форму

Ivan [04-08-14 - 13:07]
Интерфейс принимает форму
Filename
DataBase.lua
diff --git a/DataBase.lua b/DataBase.lua
index 898a817..7e16b76 100644
--- a/DataBase.lua
+++ b/DataBase.lua
@@ -26,7 +26,7 @@ function DB.OnLoad(eventCode, addOnName)

 	--Регистрация эвентов
 	EVENT_MANAGER:RegisterForEvent("DataBase", EVENT_OPEN_BANK, DB.PL_Opened)
-	EVENT_MANAGER:RegisterForEvent("DataBase", EVENT_GUILD_BANK_SELECTED, DB.GB_Selected)
+	-- EVENT_MANAGER:RegisterForEvent("DataBase", EVENT_GUILD_BANK_SELECTED, DB.GB_Selected)
 	EVENT_MANAGER:RegisterForEvent("DataBase", EVENT_OPEN_GUILD_BANK, DB.GB_Opened)
 	EVENT_MANAGER:RegisterForEvent("DataBase", EVENT_GUILD_BANK_ITEMS_READY, DB.GB_Ready)

@@ -34,17 +34,71 @@ function DB.OnLoad(eventCode, addOnName)
 	DB.items= ZO_SavedVars:New( "DB_SavedVars" , 2, "items" , DB.dataDefault , nil )

 	-- Инициализация графического интерфейся
-	db_s = WINDOW_MANAGER:CreateTopLevelWindow("DBTotal")
-	db_s:SetMouseEnabled(true)
-	db_s:SetMovable(true)
-	db_s:SetDimensions(425,245)
-
-	--	Заголовок1
-	db_s_Title = WINDOW_MANAGER:CreateControl("DBTitle",DBTotal,CT_LABEL)
-	db_s_Title:SetFont( "ZoFontGame" )
-	db_s_Title:SetColor(0,255,255,1.5)
-	db_s_Title:SetText( "Test Test Test" )
-	db_s_Title:SetAnchor(TOPLEFT,lsSum,TOPLEFT,10,0)
+	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: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.BG:SetDimensions( 425 , 645 )
+	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: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.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
+

 end

@@ -144,26 +198,22 @@ function DB.gcount()

     local data = {}
     local dataStr = ""
+    local founditems = false

 	--Обнуление сохраненной базы
     DB.items.data={}

 	local sv = DB.items.data
-
-
-
+
 	DB.ItemCounter=0
 	bagIcon, bagSlots=GetBagInfo(BAG_GUILDBANK)

-	d("slot:name:count")
 	while (DB.ItemCounter < bagSlots) do
 		if GetItemName(BAG_GUILDBANK,DB.ItemCounter)~="" then
 			d(DB.ItemCounter.." : "..GetItemLink(BAG_GUILDBANK,DB.ItemCounter).." : "..GetSlotStackSize(BAG_GUILDBANK,DB.ItemCounter))
-
-			--DB.items.name=GetItemName(BAG_GUILDBANK,DB.ItemCounter)
-			--DB.items.count=GetSlotStackSize(BAG_GUILDBANK,DB.ItemCounter)
-
-			if sv == nil or #sv == 0 then
+			founditems=true
+
+			if #sv == 0 then
 				sv[1] =
 						{
 						 ["name"] = tostring(GetItemLink(BAG_GUILDBANK,DB.ItemCounter)),
@@ -181,6 +231,9 @@ function DB.gcount()
 	end
 	d("---------------------")
 	d("Slots counted: "..DB.ItemCounter)
+	if DB.ItemCounter==bagSlots and founditems==false then
+		d("Found nothing... try again")
+	end
 end