2025-06-04 05:02:57 +08:00

199 lines
5.6 KiB
Plaintext

PicMakeView = class("PicMakeView", BaseView);
PicMakeView.ViewType = UIViewType.NormalLayer
autoImport("PicMakeCell");
PicMakeView.PosConfig = {
LeftGrid = Vector3(-372,0,0),
MidGrid = Vector3.zero,
}
local PicMake_BagCheckTypes;
local bagProxy;
function PicMakeView:Init()
self:InitView();
self:MapEvent();
PicMake_BagCheckTypes = BagProxy.Instance:Get_PackageMaterialCheck_BagTypes(BagProxy.MaterialCheckBag_Type.Produce)
bagProxy = BagProxy.Instance;
end
function PicMakeView:InitView()
self.mainBord = self:FindGO("MainBord");
self.blackBg = self:FindComponent("BlackBg", UISprite);
if(ApplicationInfo.IsIphoneX())then
self.blackBg.color = Color(0,0,0,1);
else
self.blackBg.color = Color(0,0,0,200/255);
end
self.scrollView = self:FindComponent("ScrollView", UIScrollView);
self.grid = self:FindComponent("PicMakeGrid", UIGrid);
self.picMakeCtl = UIGridListCtrl.new(self.grid,PicMakeCell,"PicMakeCell")
self.picMakeCtl:AddEventListener(MouseEvent.MouseClick, self.ClickCombine, self);
self.picMakeCtl:AddEventListener(PicMakeCell.ClickMaterial, self.ClickMaterial, self);
self.picMakeCtl:AddEventListener(PicMakeCell.ClickToItem, self.ClickMaterial, self);
end
function PicMakeView:ClickCombine(cellctl)
if(cellctl.data)then
self.composeData = Table_Compose[cellctl.data.staticData.ComposeID];
if(self.composeData.ROB<=MyselfProxy.Instance:GetROB())then
ServiceItemProxy.Instance:CallProduce(
SceneItem_pb.EPRODUCETYPE_HEAD,
self.composeData.id,
self.npcinfo.data.id);
self:PlayPicMakeAnim();
else
MsgManager.ShowMsgByIDTable(1);
end
end
end
function PicMakeView:ClickMaterial(materialcell)
self:ShowPicMakeItemTip(materialcell.data, materialcell.gameObject);
end
function PicMakeView:ShowPicMakeItemTip(data, obj)
if(data == self.chooseData)then
self.chooseData = nil;
TipManager.Instance:CloseItemTip();
else
self.chooseData = data;
local callback = function ()
self.chooseData = nil;
end
local tipData = {
itemdata = data,
funcConfig = {},
callback = callback,
ignoreBounds = {obj},
};
local stick = UIUtil.GetAllComponentInChildren(obj, UIWidget)
self:ShowItemTip(tipData, stick, NGUIUtil.AnchorSide.Left, {300,0});
end
end
function PicMakeView:UpdateDatas(datas)
if(not datas)then
datas = {};
end
table.sort(datas, PicMakeView.SortPicData);
self.picMakeCtl:ResetDatas(datas);
end
function PicMakeView.SortPicData(a, b)
-- 點選製作頭飾后,展示揹包中所有圖紙(即使不滿足製作條件),排序按冒險排序欄位排序,小在前大在後
local aComposeId,bComposeId = a.staticData.ComposeID, b.staticData.ComposeID;
if(aComposeId and bComposeId and aComposeId~=bComposeId)then
local aCData, bCData = Table_Compose[aComposeId], Table_Compose[bComposeId];
if(aCData and bCData)then
local aCanCompose, bCanCompose = true, true;
for i=1,#aCData.BeCostItem do
local material = aCData.BeCostItem[i];
local num = bagProxy:GetItemNumByStaticID(material.id, PicMake_BagCheckTypes);
if(num<material.num)then
aCanCompose = false;
break;
end
end
for i=1,#bCData.BeCostItem do
local material = bCData.BeCostItem[i];
local num = bagProxy:GetItemNumByStaticID(material.id, PicMake_BagCheckTypes);
if(num<material.num)then
bCanCompose = false;
break;
end
end
if(aCanCompose~=bCanCompose)then
return aCanCompose;
end
local aProduce,bProduce = aCData.Product.id, bCData.Product.id;
if(aProduce and bProduce and aProduce~=bProduce)then
local aPItem, bPItem = Table_Item[aProduce], Table_Item[bProduce];
if(aPItem and bPItem and
aPItem.AdventureValue and aPItem.AdventureValue>0 and
bPItem.AdventureValue and bPItem.AdventureValue>0 and
aPItem.AdventureValue~=bPItem.AdventureValue)then
return aPItem.AdventureValue<bPItem.AdventureValue;
end
end
end
end
if(a.staticData.Quality~=b.staticData.Quality)then
return a.staticData.Quality>b.staticData.Quality;
end
return a.staticData.id>b.staticData.id;
end
function PicMakeView:PlayPicMakeAnim()
self:ActiveView(false);
LeanTween.cancel(self.gameObject);
LeanTween.delayedCall(self.gameObject, 4, function ()
self:PicMakeDone();
end):setDestroyOnComplete(true);
end
function PicMakeView:ActiveView(b)
self.mainBord:SetActive(b);
self.blackBg.color = b and Color(1,1,1,1) or Color(1,1,1,1/255);
end
function PicMakeView:PicMakeDone()
-- 退出界面
-- local myAgent = MyselfProxy.Instance.myself.roleAgent;
-- myAgent:Access(self.npcAgent.gameObject, nil);
FunctionVisitNpc.Me():AccessTarget(self.npcinfo)
self:CloseSelf();
end
function PicMakeView:MapEvent()
self:AddListenEvt(ItemEvent.ItemUpdate , self.HandleUpdateMaterial);
end
function PicMakeView:HandleUpdateMaterial(note)
local cells = self.picMakeCtl:GetCells();
for i=1,#cells do
cells[i]:Refresh();
end
end
function PicMakeView:OnEnter()
PicMakeView.super.OnEnter(self);
local viewdata = self.viewdata.viewdata;
if(viewdata)then
self.datas = viewdata.datas;
self.npcinfo = viewdata.npcdata;
end
self:UpdateDatas(self.datas);
local npcRootTrans = self.npcinfo.assetRole.completeTransform;
if( npcRootTrans )then
local viewPort = CameraConfig.NPC_Dialog_ViewPort;
if(type(self.camera)=="number")then
viewPort = Vector3(viewPort.x, viewPort.y, self.camera);
end
local duration = CameraConfig.NPC_Dialog_DURATION;
self:CameraFocusOnNpc(npcRootTrans, viewPort, duration);
end
end
function PicMakeView:OnShow()
self.scrollView:ResetPosition();
end
function PicMakeView:OnExit()
PicMakeView.super.OnExit(self);
local cells = self.picMakeCtl:GetCells();
for i=1,#cells do
cells[i]:OnRemove();
end
self:CameraReset();
end