162 lines
No EOL
5.2 KiB
Lua
162 lines
No EOL
5.2 KiB
Lua
local XUiDormWorkMemberListItem = require("XUi/XUiDormWork/XUiDormWorkMemberListItem")
|
|
local XUiDormWorkMember = XClass(nil, "XUiDormWorkMember")
|
|
local Next = next
|
|
local DormWorkMaxCount = 0
|
|
local TextManager = CS.XTextManager
|
|
|
|
function XUiDormWorkMember:Ctor(ui, uiRoot)
|
|
self.GameObject = ui.gameObject
|
|
self.Transform = ui.transform
|
|
self.UiRoot = uiRoot
|
|
self.CurWorkCount = 0
|
|
self.RawWorkCount = 0
|
|
self.CurWorkMoney = 0
|
|
self.CurSeleWorkCharIds = {}
|
|
XTool.InitUiObject(self)
|
|
self:Init()
|
|
end
|
|
|
|
function XUiDormWorkMember:InitMaxCount()
|
|
DormWorkMaxCount = 0
|
|
local data = XDataCenter.DormManager.GetWorkCfg()
|
|
|
|
if data then
|
|
DormWorkMaxCount = data.Seat or 0
|
|
end
|
|
end
|
|
|
|
function XUiDormWorkMember:InitList()
|
|
self.DynamicTable = XDynamicTableNormal.New(self.MemberList)
|
|
self.DynamicTable:SetProxy(XUiDormWorkMemberListItem)
|
|
self.DynamicTable:SetDelegate(self)
|
|
end
|
|
|
|
-- [监听动态列表事件]
|
|
function XUiDormWorkMember:OnDynamicTableEvent(event, index, grid)
|
|
if event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_INIT then
|
|
grid:Init(self.UiRoot, self)
|
|
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_ATINDEX then
|
|
local data = self.ListData[index]
|
|
grid:OnRefresh(data)
|
|
elseif event == DYNAMIC_DELEGATE_EVENT.DYNAMIC_GRID_TOUCHED then
|
|
grid:OnBtnClick()
|
|
end
|
|
end
|
|
|
|
function XUiDormWorkMember:RecordWorkIds(characterid)
|
|
self.CurSeleWorkCharIds[characterid] = characterid
|
|
end
|
|
|
|
function XUiDormWorkMember:RemoveWorkIds(characterid)
|
|
self.CurSeleWorkCharIds[characterid] = nil
|
|
end
|
|
|
|
function XUiDormWorkMember:IsExistWorkId(characterid)
|
|
return self.CurSeleWorkCharIds[characterid] ~= nil
|
|
end
|
|
|
|
function XUiDormWorkMember:OnBtnStartWorkClick()
|
|
local emptypos = self:GetEmptyWorkPosList()
|
|
|
|
if Next(emptypos) == nil then
|
|
return
|
|
end
|
|
|
|
local dormworklist = {}
|
|
for _, id in pairs(self.CurSeleWorkCharIds) do
|
|
local itemdata = {}
|
|
itemdata.CharacterId = id
|
|
itemdata.WorkPos = table.remove(emptypos)
|
|
table.insert(dormworklist, itemdata)
|
|
end
|
|
if Next(dormworklist) == nil then
|
|
if Next(self.ListData) ~= nil then
|
|
XUiManager.TipText("DormWorkNoPerson", XUiManager.UiTipType.Wrong)
|
|
else
|
|
XUiManager.TipText("DormWorkNoPerson1", XUiManager.UiTipType.Wrong)
|
|
end
|
|
return
|
|
end
|
|
|
|
XDataCenter.DormManager.RequestDormitoryWork(dormworklist, self.OnWorkListUpdate)
|
|
self.CurSeleWorkCharIds = {}
|
|
self.GameObject:SetActive(false)
|
|
end
|
|
|
|
-- 返回当前所有空的工位
|
|
function XUiDormWorkMember:GetEmptyWorkPosList()
|
|
local emptypos = {}
|
|
local poslist = XDataCenter.DormManager.GetDormWorkPosData()
|
|
for index = DormWorkMaxCount, 1, -1 do
|
|
local pos = poslist[index]
|
|
if not pos then
|
|
table.insert(emptypos, index)
|
|
end
|
|
end
|
|
return emptypos
|
|
end
|
|
|
|
function XUiDormWorkMember:OnBtnBgClick()
|
|
self:ClearListData()
|
|
self.UiRoot:PlayAnimation("MemberDisable")
|
|
self.GameObject:SetActive(false)
|
|
end
|
|
|
|
function XUiDormWorkMember:ClearListData()
|
|
self.ListData = {}
|
|
self.CurSeleWorkCharIds = {}
|
|
self.DynamicTable:Clear()
|
|
end
|
|
function XUiDormWorkMember:Init()
|
|
self:InitList()
|
|
self:InitMaxCount()
|
|
self.OnBtnBgClickCb = function() self:OnBtnBgClick() end
|
|
self.OnBtnStartWorkClickCb = function() self:OnBtnStartWorkClick() end
|
|
self.OnWorkListUpdate = function() self.UiRoot:UpdateWorkList() end
|
|
-- self.OnWorkListUpdate = function() self.UiRoot:SetListData() end
|
|
self.BtnCancel.CallBack = self.OnBtnBgClickCb
|
|
self.BtnTanchuangClose.CallBack = self.OnBtnBgClickCb
|
|
self.BtnStartWork.CallBack = self.OnBtnStartWorkClickCb
|
|
self.XUiBtnCancel = self.BtnCancel:GetComponent("XUiButton")
|
|
self.XUiBtnStartWork = self.BtnStartWork:GetComponent("XUiButton")
|
|
self.XUiBtnCancel:SetName(TextManager.GetText("CancelText"))
|
|
self.XUiBtnStartWork:SetName(TextManager.GetText("DormWorkStart"))
|
|
self.TxtNonePerson.text = TextManager.GetText("DormWorkNoPerson1")
|
|
end
|
|
|
|
-- 更新数据
|
|
function XUiDormWorkMember:OnRefresh(count)
|
|
self.RawWorkCount = count
|
|
self.CurWorkCount = count
|
|
self.CurWorkMoney = 0
|
|
local data = XDataCenter.DormManager.GetDormNotWorkData()
|
|
self.ListData = data
|
|
if not data or not Next(data) then
|
|
self.ImgNonePerson.gameObject:SetActive(true)
|
|
else
|
|
self.ImgNonePerson.gameObject:SetActive(false)
|
|
end
|
|
self.DynamicTable:SetDataSource(data)
|
|
self.DynamicTable:ReloadDataASync(1)
|
|
self.TxtWorkCount.text = TextManager.GetText("DormWorkSeleCount", self.RawWorkCount, DormWorkMaxCount)
|
|
self.TxtMoneyCount.text = 0
|
|
self.UiRoot:PlayAnimation("MemberEnable")
|
|
end
|
|
|
|
-- 更新工位数量和产出
|
|
function XUiDormWorkMember:UpdateWorkCountAndMoney(count, money, flag)
|
|
self.CurWorkCount = self.CurWorkCount + count * flag
|
|
if self.CurWorkCount < self.RawWorkCount then
|
|
self.CurWorkCount = self.RawWorkCount
|
|
end
|
|
|
|
self.CurWorkMoney = self.CurWorkMoney + money * flag
|
|
self.TxtWorkCount.text = TextManager.GetText("DormWorkSeleCount", self.CurWorkCount, DormWorkMaxCount)
|
|
self.TxtMoneyCount.text = self.CurWorkMoney
|
|
end
|
|
|
|
function XUiDormWorkMember:IsFullMaxWorkCount()
|
|
return self.CurWorkCount >= DormWorkMaxCount
|
|
end
|
|
|
|
return XUiDormWorkMember |