ro-table/Asstes/Resources/Script/FrameWork/GUI/view/ServantRecommendView.txt
2025-06-04 05:02:57 +08:00

230 lines
7.1 KiB
Plaintext

autoImport("WrapCellHelper")
autoImport("ServantRecommendCell");
autoImport("ServantRecommendToggleCell");
-- autoImport("PetWorkSpaceEmoji")
ServantRecommendView = class("ServantRecommendView",SubView)
local Prefab_Path = ResourcePathHelper.UIView("ServantRecommendView");
local Recommend_TYPE = SceneUser2_pb.ESERVANT_SERVICE_RECOMMEND
-- 女僕今日推薦標籤頁分類
local pageTypeCfg = GameConfig.Servant and GameConfig.Servant.ServantRecommendPageType
local resID = ResourcePathHelper.UICell("ServantRecommendToggleCell")
local actionName = {"functional_action","functional_action2","functional_action3"}
function ServantRecommendView:Init()
self:FindObjs()
self:AddUIEvts()
self:AddViewEvts()
self:InitView()
end
function ServantRecommendView:InitView()
self.finishedData = {}
self.unfinishedData = {}
self.chooseTypeId=0
self:ShowUIByPage(self.chooseTypeId,true);
self:_refreshChoose()
-- self:UpdateReward()
self.scrollViewPos = {}
end
function ServantRecommendView:FindObjs()
self:LoadSubView()
-- self.itemRoot = self:FindGO("ItemWrap")
-- TODO
-- self.effectTrans = self:FindGO("effectTrans")
self.scrollView = self:FindComponent("ScrollView",UIScrollView)
self.mainTable = self:FindComponent("table",UITable)
local typeBtnRoot=self:FindGO("TypeBtnRoot")
local ListTable = typeBtnRoot:GetComponent(UIGrid)
self.table = self:FindComponent("ItemWrap", UITable);
self.finishRoot = self:FindComponent("finishRoot",UITable);
self.cellCtl = UIGridListCtrl.new(self.table, ServantRecommendCell, "ServantRecommendCell")
self.finishCtl = UIGridListCtrl.new(self.finishRoot,ServantRecommendCell,"ServantRecommendCell")
self.gridListCtl = UIGridListCtrl.new(ListTable,ServantRecommendToggleCell,"ServantRecommendToggleCell")
self.gridListCtl:AddEventListener(MouseEvent.MouseClick, self._freshClickChoose, self);
local list = {}
for k,v in pairs(pageTypeCfg) do
TableUtility.ArrayPushBack(list,k)
end
self.gridListCtl:ResetDatas(list)
-- self.emojiRoot = self:FindGO("emojiRoot")
-- self:Hide(self.emojiRoot)
-- self.emoji = self:LoadPreferb_ByFullPath(path, self.emojiRoot);
-- self.emoji.transform.localPosition = Vector3.zero
-- self.spaceEmoji = PetWorkSpaceEmoji.new(self.emoji);
-- self.spaceEmoji:AddEventListener(MouseEvent.MouseClick, self.OnReward, self);
self.hideTip = self:FindComponent("HideTip",UILabel)
self.hideTipBg = self:FindGO("HideTipBg")
self:AddClickEvent(self.hideTipBg,function ( obj )
local active = self.finishRoot.gameObject.activeSelf
self.finishRoot.gameObject:SetActive(not self.finishRoot.gameObject.activeSelf)
self.hideTip.text = active and ZhString.Servant_Recommend_ShowTip or ZhString.Servant_Recommend_HideTip
self.finishRoot:Reposition()
self.table:Reposition()
self.mainTable:Reposition()
end)
end
function ServantRecommendView:_freshClickChoose(cellctl)
if(not cellctl or cellctl.typeID ==self.chooseTypeId)then
return
end
self.chooseTypeId = cellctl.typeID;
local posCfg = self.scrollViewPos[cellctl.typeID]
if(not posCfg or 0>=#posCfg)then
self.scrollView:ResetPosition()
else
self.scrollView.panel.clipOffset = posCfg[1]
self.scrollView.transform.localPosition = posCfg[2]
end
self:ShowUIByPage(self.chooseTypeId,true);
self:_refreshChoose()
end
function ServantRecommendView:LoadSubView()
local container = self:FindGO("recommendView")
local obj = self:LoadPreferb_ByFullPath(Prefab_Path, container, true);
obj.name = "ServantRecommendView";
end
function ServantRecommendView:AddUIEvts()
self.scrollView.onDragFinished = function ()
local typeID = self.chooseTypeId
if(nil==self.scrollViewPos[typeID])then
self.scrollViewPos[typeID] = {}
end
local tempArray = ReusableTable.CreateArray()
tempArray[1]=self.scrollView.panel.clipOffset
tempArray[2]=self.scrollView.transform.localPosition
self.scrollViewPos[typeID]=tempArray
ReusableTable.DestroyAndClearArray(args)
end
end
function ServantRecommendView:AddViewEvts()
self:AddListenEvt(ServiceEvent.NUserRecommendServantUserCmd, self.RecvRecommendServant);
end
function ServantRecommendView:OnEnter()
ServantRecommendView.super.OnEnter(self);
end
function ServantRecommendView:OnExit()
ServantRecommendView.super.OnExit(self);
end
-- recv
local acName
function ServantRecommendView:RecvRecommendServant(note)
local sort=false
local data = note and note.body
if(data)then
local items = data.items
if(items)then
if(1==#items and items[1].status == ServantRecommendProxy.STATUS.FINISHED)then
data = items[1]
local cfg = data.dwid and Table_Recommend[data.dwid]
if(cfg)then
acName = cfg.Favorability and actionName[1] or actionName[2]
self.container:PlayNpcAction(acName)
end
for i=1,#self.unfinishedData do
if(self.unfinishedData[i].id==data.dwid)then
local needDel = Table_Recommend[items[1].dwid].NeedDel
sort = needDel and needDel ==1
if(sort)then
self.unfinishedData[i]=nil
else
self.unfinishedData[i].status=data.status
end
break;
end
end
else
sort=true
-- if(Table_Recommend[data.dwid] and Table_Recommend[data.dwid].Favorability)then
-- self:PlayTrailEffect(data.dwid)
-- end
end
end
end
self:ShowUIByPage(self.chooseTypeId,sort);
end
function ServantRecommendView:ShowUIByPage(typeID,sort)
local classifiedData = ServantRecommendProxy.Instance:GetRecommendDataByType(typeID,sort)
self:RefreshByType(classifiedData,sort)
end
function ServantRecommendView:RefreshByType(data,sort)
if(not sort)then
self.cellCtl:ResetDatas(self.unfinishedData)
self.finishCtl:ResetDatas(self.finishedData)
else
TableUtility.ArrayClear(self.finishedData)
TableUtility.ArrayClear(self.unfinishedData)
if(data)then
for i=1,#data do
if(data[i].status ~= ServantRecommendProxy.STATUS.FINISHED)then
TableUtility.ArrayPushBack(self.unfinishedData,data[i])
else
TableUtility.ArrayPushBack(self.finishedData,data[i])
end
end
end
if(self.unfinishedData and #self.unfinishedData>0)then
self:Show(self.table.gameObject)
self.cellCtl:ResetDatas(self.unfinishedData)
else
self:Hide(self.table.gameObject)
end
if(self.finishedData and #self.finishedData>0)then
self:Show(self.hideTipBg)
self.finishCtl:ResetDatas(self.finishedData)
self:Show(self.finishRoot)
else
self:Hide(self.finishRoot)
self:Hide(self.hideTipBg)
end
end
self.finishRoot.gameObject:SetActive(false)
self.hideTip.text = ZhString.Servant_Recommend_ShowTip
self.finishRoot:Reposition()
self.table:Reposition()
self.mainTable:Reposition()
end
function ServantRecommendView:_refreshChoose()
if(self.gridListCtl)then
local childCells = self.gridListCtl:GetCells();
for i=1,#childCells do
local childCell = childCells[i];
childCell:ShowChooseImg(self.chooseTypeId)
end
end
end
-- local tempV3 = LuaVector3.zero
-- function ServantRecommendView:PlayTrailEffect(id)
-- if(self.finishCtl)then
-- local childCells = self.cellCtl:GetCells();
-- for i=1,#childCells do
-- local childCell = childCells[i];
-- if(childCell.id==id)then
-- tempV3:Set(LuaGameObject.TransformPoint(self.effectTrans.transform, tempV3))
-- childCell:PlayTrailEffect(tempV3)
-- end
-- end
-- end
-- end