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

548 lines
19 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

CheckAllProfessionPanel = class("CheckAllProfessionPanel",BaseView)
CheckAllProfessionPanel.ViewType = UIViewType.NormalLayer
CheckAllProfessionPanel.cellRes = ResourcePathHelper.UICell("ProfessionIconCell")
CheckAllProfessionPanel.lineRes = ResourcePathHelper.UICell("MPLineCell")
autoImport("ProfessionIconCell")
CheckAllProfessionPanel.PlusClick = "CheckAllProfessionPanel_PlusClick"
local S_ProfessionDatas={}
local topScrollViewIconTable = {}
local ProfessionIconCellTable = {}
local IconCellTable = {}
local LineTable ={}
function CheckAllProfessionPanel:RecvProfessionChangeUserCmd(data)
if data~=nil and data.body~=nil and data.body.branch~=nil and data.body.success~=nil then
if data.body.success then
else
helplog("RecvProfessionChangeUserCmd Failed reviewCode")
end
else
helplog("error message From server")
end
end
function CheckAllProfessionPanel:RecvProfessionBuyUserCmd(data)
if data~=nil and data.body~=nil and data.body.branch~=nil and data.body.success~=nil then
if data.body.success then
local boughtId = ProfessionProxy.Instance:GetBoughtProfessionIdThroughBranch(data.body.branch)
for k,v in pairs(ProfessionIconCellTable) do
local id = v:Getid()
if id%10==1 then
if ProfessionProxy.Instance:DoesThisIdCanBuyBranch(id,data.body.branch) then
v:SetState(1,id)
self.PurchaseView.gameObject:SetActive(false)
end
end
if id == boughtId then
v:SetState(1,id)
end
end
local SysmsgData = Table_Sysmsg[25412]
for k,v in pairs(Table_Class) do
if v.TypeBranch == data.body.branch and v.id%10 == 2 then
MsgManager.FloatMsg(nil, string.format(SysmsgData.Text,v.NameZh))
break
end
end
self:BuyThenUpdateLine(data.body.branch)
else
helplog("RecvProfessionBuyUserCmd Failed reviewCode")
end
else
helplog("error message From server 2")
end
end
function CheckAllProfessionPanel:RecvProfessionQueryUserCmd(data)
end
function CheckAllProfessionPanel:RecvUpdateBranchInfoUserCmd(data)
end
function CheckAllProfessionPanel:Init()
self:initView()
self:addViewListener()
self:initData()
end
function CheckAllProfessionPanel:initView( )
-- body
self.PurchaseView = self:FindGO("PurchaseView")
self.Bg = self:FindGO("Bg",self.PurchaseView)
self.Btns = self:FindGO("Btns",self.Bg)
self.CancelBtn = self:FindGO("CancelBtn",self.Btns)
self.ConfirmBtn = self:FindGO("ConfirmBtn",self.Btns)
self.icon_zeny = self:FindGO("icon_zeny",self.PurchaseViewBg)
self.icon_gold = self:FindGO("icon_gold",self.PurchaseViewBg)
self.icon_gold_UISprite = self:FindGO("icon_gold",self.PurchaseViewBg):GetComponent(UISprite)
IconManager:SetItemIcon("item_151",self.icon_gold_UISprite)
self.icon_zenyUILabel = self:FindGO("Label",self.icon_zeny):GetComponent(UILabel)
self.icon_goldUILabel = self:FindGO("Label",self.icon_gold):GetComponent(UILabel)
self.contentUILabel = self:FindGO("content",self.PurchaseView):GetComponent(UILabel)
self.PurchaseView.gameObject:SetActive(false)
self.Collider = self:FindGO("Collider",self.PurchaseView)
--等策劃給id
local tipData = Table_Sysmsg[26110];
if tipData then
self.contentUILabel.text = tipData.Text
else
helplog("策劃沒配26110")
end
self.screenView = self:FindComponent("ScrollView", UIScrollViewEx);
self.Anchor_TopRight = self:FindGO("Anchor_TopRight")
self.scaleButton = self:FindGO("ScaleButton",self.Anchor_TopRight);
self.scaleButton_Symbol = self:FindComponent("Symbol", UISprite, self.scaleButton);
local Astrolabe_PlateZoom_Param = 2;
self:AddClickEvent(self.scaleButton, function (go)
if(self.islarge)then
self:ZoomScrollView(Astrolabe_PlateZoom_Param, 0.4 , function ()
self.islarge = false;
self.scaleButton_Symbol.spriteName = "com_btn_narrow";
end);
else
self:ZoomScrollView(1, 0.4 , function ()
self.islarge = true;
self.scaleButton_Symbol.spriteName = "com_btn_enlarge";
end);
end
end);
self.islarge = true;
self.mapBord = self:FindGO("MapBord");
self.centerTarget = GameObjectUtil.Instance:DeepFindChild(self.mapBord, "CenterTarget");
self.centerTarget = self.centerTarget.transform;
self.scrollView = self:FindComponent("ScrollView", UIScrollViewEx);
self.mapScale = 1;
self.mPanel = self.scrollView.panel;
self.mPanel.onClipMove = function ()
self:UpdateCenterScreen();
end
local panel_worldCorners = self.mPanel.worldCorners;
local worldCenterV3 = (panel_worldCorners[1] + panel_worldCorners[3]) * 0.5;
self.worldCenter = LuaVector3();
self.worldCenter:Set(worldCenterV3[1], worldCenterV3[2], worldCenterV3[3]);
self.localCenter = LuaVector3();
self.scrollBound = GameObjectUtil.Instance:DeepFindChild(self.mapBord, "ScrollBound");
self.AttriIInfoButton = self:FindGO("AttriIInfoButton")
self.AttriIInfoButtonLabel_UILabel = self:FindGO("Label",self.AttriIInfoButton):GetComponent(UILabel)
self.AttriIInfoButtonLabel_UILabel.fontSize = GameConfig.Profession.RightTopFontSize ~= nil and GameConfig.Profession.RightTopFontSize or 14
end
function CheckAllProfessionPanel:UpdateCenterScreen()
local x,y,z = LuaGameObject.InverseTransformPointByVector3(self.mapBord.transform, self.worldCenter);
self.localCenter:Set(x, y, z);
end
local tempV3_1, tempV3_2 = LuaVector3(), LuaVector3();
local tempV3_3 = LuaVector3();
function CheckAllProfessionPanel:ZoomScrollView(endScale, time , onfinish)
time = time or 1;
tempV3_1:Set(self.mapScale, self.mapScale, self.mapScale);
tempV3_3:Set(endScale, endScale, 1);
self.centerTarget.transform.localPosition = self.localCenter;
tempV3_2:Set(LuaGameObject.GetPosition(self.centerTarget));
local mTrans = self.scrollView.transform;
LeanTween.cancel(mTrans.gameObject);
LeanTween.value(mTrans.gameObject, function (f)
self.mapBord.transform.localScale = LuaVector3.Lerp (tempV3_1, tempV3_3, f);
local before = self.centerTarget.transform.position;
local after = LuaVector3.Lerp (tempV3_2, self.worldCenter, f);
local offset = after - before;
local mlPosition = mTrans.localPosition;
mTrans.position = mTrans.position + offset;
self.mPanel.clipOffset = self.mPanel.clipOffset - (mTrans.localPosition - mlPosition);
local b = NGUIMath.CalculateRelativeWidgetBounds(mTrans, self.scrollBound.transform);
local calOffset = self.mPanel:CalculateConstrainOffset (b.min, b.max);
if (calOffset.magnitude >= 0.01) then
mTrans.localPosition = mTrans.localPosition + calOffset;
self.mPanel.clipOffset = self.mPanel.clipOffset - LuaVector2(calOffset.x, calOffset.y);
end
end, 0, 1, time):setOnComplete(function ()
if(onfinish)then
onfinish();
end
self.mapScale = endScale;
end):setDestroyOnComplete(true);
end
function CheckAllProfessionPanel:addViewListener( )
-- body
self:AddClickEvent(self.Collider.gameObject,function (go)
self.PurchaseView.gameObject:SetActive(false)
end)
self:AddClickEvent(self.CancelBtn.gameObject,function (go)
self.PurchaseView.gameObject:SetActive(false)
end)
self:AddListenEvt(ServiceEvent.NUserProfessionQueryUserCmd, self.RecvProfessionQueryUserCmd);
self:AddListenEvt(ServiceEvent.NUserProfessionBuyUserCmd, self.RecvProfessionBuyUserCmd);
self:AddListenEvt(ServiceEvent.NUserProfessionChangeUserCmd, self.RecvProfessionChangeUserCmd);
self:AddListenEvt(ServiceEvent.NUserUpdateBranchInfoUserCmd, self.RecvUpdateBranchInfoUserCmd);
end
function CheckAllProfessionPanel:initData( )
S_ProfessionDatas={}
topScrollViewIconTable = {}
ProfessionIconCellTable = {}
IconCellTable = {}
LineTable ={}
end
function CheckAllProfessionPanel:OnExit()
CheckAllProfessionPanel.super.OnExit(self)
local gOManager_Camera = Game.GameObjectManagers[Game.GameObjectType.Camera];
gOManager_Camera:ActiveMainCamera(true);
end
function CheckAllProfessionPanel:OnEnter()
CheckAllProfessionPanel.super.OnEnter(self)
self:GetNextTurnTableAndShow(1,nil)
for k,v in pairs(LineTable) do
local id = v:GetId()
if id%10>=3 and not ProfessionProxy.Instance:ShouldThisIdVisible(id) then
v.gameObject:SetActive(false)
end
end
local gOManager_Camera = Game.GameObjectManagers[Game.GameObjectType.Camera];
gOManager_Camera:ActiveMainCamera(false);
end
function CheckAllProfessionPanel:GetMaxBranchCount()
-- body
local i = 0
for k,v in pairs (Table_Class) do
if v.id%10==2 then
i = i+1
if ( v.gender~=nil and v.gender~= ProfessionProxy.Instance:GetCurSex() ) or v.IsOpen~=1 then
i = i-1
end
end
end
Debug.Log("GetMaxBranchCount:"..i)
return i
end
function CheckAllProfessionPanel:GetNextTurnTableAndShow(id,previousId,countOfBro,index,turnNumber)
--先判斷一下這個id在不在
countOfBro = countOfBro or 1
index = index or 0
turnNumber = turnNumber or 1
local nowClassData = Table_Class[id]
if nowClassData.IsOpen == 0 then
return nil
end
if nowClassData~=nil then
self:DrawHeadIcon(id,previousId,countOfBro,index,turnNumber)
local nextTurnTable = nowClassData.AdvanceClass
if nextTurnTable~=nil then
local countOfBroXiuzheng = #nextTurnTable
for k,v in pairs(nextTurnTable) do
if Table_Class[v].IsOpen == 0 then
countOfBroXiuzheng = countOfBroXiuzheng-1
end
if Table_Class[v].gender ~=nil and Table_Class[v].gender~= ProfessionProxy.Instance:GetCurSex() then
countOfBroXiuzheng = countOfBroXiuzheng-1
end
end
local kXiuZheng = 1
for k,v in pairs(nextTurnTable) do
--這裡有性別問題
if Table_Class[v].gender ~=nil and Table_Class[v].gender~= ProfessionProxy.Instance:GetCurSex() then
else
self:GetNextTurnTableAndShow(v,id,countOfBroXiuzheng,kXiuZheng,turnNumber+1)
kXiuZheng = kXiuZheng+1
end
end
elseif nextTurnTable==nil then
local nextId = id + 1
self:GetNextTurnTableAndShow(nextId,id,1,1,turnNumber+1)
end
else
end
return nil
end
local tempVector3 = LuaVector3.zero
local IconCellTable = {}
function CheckAllProfessionPanel:GetThisIdForwardBranch(id,branchnumber)
local forward = id -10
local classData = Table_Class[forward]
if forward == 1 then
return 0
end
if classData then
local addNumber = #classData.AdvanceClass
for k,v in pairs(classData.AdvanceClass) do
if Table_Class[v].IsOpen == 0 or (Table_Class[v].gender ~=nil and Table_Class[v].gender~= ProfessionProxy.Instance:GetCurSex()) then
addNumber = addNumber - 1
end
end
branchnumber = self:GetThisIdForwardBranch(forward,branchnumber) + addNumber
return branchnumber
else
return 0
end
end
function CheckAllProfessionPanel:DrawHeadIcon(id,previousId,countOfBro,index,turnNumber)
local size = UIManagerProxy.Instance.rootSize;
local MaxBranchCount = self:GetMaxBranchCount()
local spaceV = size[2]/6
local spaceH = size[1]/(MaxBranchCount+1)
if id == 1 then
--這個是初始職業
tempVector3:Set(0,size[2]/2-spaceV,0)
elseif id%10 == 1 then
--看這個節點的下方有幾個分支
local classData = Table_Class[id]
local index = classData.Type
local BelowBranchNumber = #Table_Class[id].AdvanceClass
for k,v in pairs(Table_Class[id].AdvanceClass) do
if Table_Class[v].IsOpen == 0 or (Table_Class[v].gender ~=nil and Table_Class[v].gender~= ProfessionProxy.Instance:GetCurSex()) then
BelowBranchNumber =BelowBranchNumber-1
end
end
local forwardbranchnumber = self:GetThisIdForwardBranch(id,0)
tempVector3:Set(0-size[1]/2+size[1]/(MaxBranchCount+1)*(forwardbranchnumber+1)+size[1]/(MaxBranchCount+1)*(0.5*(BelowBranchNumber-1)),size[2]/2-spaceV*2,0)
elseif id%10 == 2 then
local previousX = 0
if IconCellTable[previousId]~=nil then
previousX = IconCellTable[previousId].transform.localPosition.x
end
tempVector3:Set((previousX - spaceH/2*(countOfBro-1)+ spaceH*(index-1) ),size[2]/2-spaceV*3,0)
else
if turnNumber>=3 then
local shuIndex = id %10+1
if IconCellTable[previousId]~=nil and IconCellTable~=nil and IconCellTable[previousId]~=nil then
tempVector3:Set(IconCellTable[previousId].transform.localPosition.x,size[2]/2-spaceV*shuIndex,0)
else
helplog("review code!!!!")
end
end
end
local holder = self:FindGO("ScrollView")
local obj = nil
if obj == nil then
obj = Game.AssetManager_UI:CreateAsset(CheckAllProfessionPanel.cellRes, holder);
end
IconCellTable[id] = obj
obj.gameObject.name = tostring(id)
obj.gameObject.transform:SetParent(self.mapBord.transform,false)
obj.transform.localPosition = tempVector3
pCell = ProfessionIconCell.new(obj)
pCell:SetIcon(id)
pCell:Setid(id)
if id == 1 then
pCell:SetState(0,id)
elseif ProfessionProxy.Instance:IsThisIdYiJiuZhi(id) then
pCell:SetState(1,id)
else
if ProfessionProxy.Instance:IsThisIdYiGouMai(id)==false and ProfessionProxy.Instance:IsThisIdKeGouMai(id) then
pCell:SetState(3,id)
else
pCell:SetState(4,id)
end
end
local attr = GameConfig.ProfessionAttrPlus[id] or ""
pCell:SetAttr(attr)
self:DrawLine(id,previousId,countOfBro,index,turnNumber)
pCell:AddEventListener(CheckAllProfessionPanel.PlusClick,self.clickPlusHandler,self)
if GameConfig.Profession and GameConfig.Profession.banThirdJobChange and GameConfig.Profession.banThirdJobChange ==true then
if id%10>3 then
pCell.gameObject:SetActive(false)
end
end
table.insert(ProfessionIconCellTable,pCell)
end
function CheckAllProfessionPanel:clickPlusHandler(id)
local branch = Table_Class[id].TypeBranch
self.PurchaseView.gameObject:SetActive(true)
local isOriginProfession = ProfessionProxy.Instance:isOriginProfession(id)
if isOriginProfession then
local needmoney = GameConfig.Profession.price_zeny or 0
self.icon_zeny.gameObject:SetActive(true)
self.icon_gold.gameObject:SetActive(false)
self.icon_zenyUILabel.text = needmoney
else
local needmoney = GameConfig.Profession.price_gold
self.icon_zeny.gameObject:SetActive(false)
self.icon_gold.gameObject:SetActive(true)
self.icon_goldUILabel.text = needmoney
end
self:AddClickEvent(self.ConfirmBtn.gameObject,function (go)
ProfessionProxy.Instance:PurchaseFunc(id)
end)
end
function CheckAllProfessionPanel:DrawLine(id,previousId,countOfBro,index,turnNumber)
local holder = self:FindGO("ScrollView")
local obj = nil
local lineCell = nil
for k,v in pairs(LineTable) do
if v.gameObject.name == "resetline" then
obj = v.gameObject
lineCell = v
break
end
end
if lineCell==nil then
obj = Game.AssetManager_UI:CreateAsset(ProfessionPage.lineRes, self.mapBord);
lineCell = MPLineCell.new(obj)
end
obj.gameObject.name = "line"..id
lineCell:SetId(id)
lineCell:SetPreviousId(previousId)
local leftid = nil
local rightid= nil
local centerid= nil
if id==1 then
obj.gameObject.transform.localPosition = Vector3(-17,194,0)
local thisidClass = Table_Class[id]
local thisac =thisidClass.AdvanceClass
local p1 = ProfessionProxy.Instance:IsThisIdYiJiuZhi(thisac[1])
local p2 = ProfessionProxy.Instance:IsThisIdYiJiuZhi(thisac[2])
local p3 = ProfessionProxy.Instance:IsThisIdYiJiuZhi(thisac[3])
local p4 = ProfessionProxy.Instance:IsThisIdYiJiuZhi(thisac[4])
local p5 = ProfessionProxy.Instance:IsThisIdYiJiuZhi(thisac[5])
local p6 = ProfessionProxy.Instance:IsThisIdYiJiuZhi(thisac[6])
lineCell:ShowLine(4)
lineCell:CRootSetState(p1,p2,p3,p4,p5,p6)
elseif id%10==1 then
local size = UIManagerProxy.Instance.rootSize;
local spaceV = size[2]/6
local thisIconCell = IconCellTable[id]
local x = thisIconCell.gameObject.transform.localPosition.x
local thisY = thisIconCell.gameObject.transform.localPosition.y
obj.gameObject.transform.localPosition = Vector3(x,thisY-spaceV/2,0)
local thisidClass = Table_Class[id]
local thisac =thisidClass.AdvanceClass
local fixedacNumber =#thisac
local fixedacTable = {}
for k,v in pairs (thisac) do
if Table_Class[v].IsOpen == 0 then
elseif Table_Class[v].gender ~=nil and Table_Class[v].gender~= ProfessionProxy.Instance:GetCurSex() then
else
table.insert(fixedacTable,v)
end
end
if #fixedacTable == 1 then
local thisIconCell = IconCellTable[id]
local previousIdIconCell = IconCellTable[previousId]
local x = thisIconCell.gameObject.transform.localPosition.x
local thisY = thisIconCell.gameObject.transform.localPosition.y
local finalY = thisY-spaceV/2
obj.gameObject.transform.localPosition = Vector3(x,finalY,0)
local lineCell = MPLineCell.new(obj)
lineCell:ShowLine(2)
lineCell:BranchSetState(ProfessionProxy.Instance:IsThisIdYiJiuZhi(fixedacTable[1]))
elseif #fixedacTable == 2 then
lineCell:ShowLine(5)
leftid = fixedacTable[1]
rightid = fixedacTable[2]
lineCell:CRootTwoSetState(ProfessionProxy.Instance:IsThisIdYiJiuZhi(leftid),ProfessionProxy.Instance:IsThisIdYiJiuZhi(rightid))
elseif #fixedacTable == 3 then
lineCell:ShowLine(6)
leftid = fixedacTable[1]
centerid = fixedacTable[2]
rightid = fixedacTable[3]
lineCell:CRootThreeSetState(ProfessionProxy.Instance:IsThisIdYiJiuZhi(leftid),ProfessionProxy.Instance:IsThisIdYiJiuZhi(centerid),ProfessionProxy.Instance:IsThisIdYiJiuZhi(rightid))
else
helplog("reviewCode")
end
elseif id%10 == 2 then
obj.gameObject.transform.localPosition = Vector3(100000,0,0)
elseif id%10 > 2 then
local thisIconCell = IconCellTable[id]
local previousIdIconCell = IconCellTable[previousId]
local x = thisIconCell.gameObject.transform.localPosition.x
local thisY = thisIconCell.gameObject.transform.localPosition.y
local previousY = previousIdIconCell.gameObject.transform.localPosition.y
local finalY = (thisY+previousY)/2
obj.gameObject.transform.localPosition = Vector3(x,finalY,0)
local lineCell = MPLineCell.new(obj)
lineCell:ShowLine(2)
lineCell:BranchSetState(ProfessionProxy.Instance:IsThisIdYiJiuZhi(id))
else
helplog("reviewcode")
end
if GameConfig.Profession and GameConfig.Profession.banThirdJobChange and GameConfig.Profession.banThirdJobChange ==true then
if id%10>3 then
lineCell.gameObject:SetActive(false)
end
end
table.insert(LineTable,lineCell)
end
function CheckAllProfessionPanel:BuyThenUpdateLine(buyBranch)
for k,v in pairs(LineTable) do
local lineid = v:GetId()
if lineid == 1 then
local ChuXinZheAdvanceClassTable = Table_Class[lineid].AdvanceClass
for m,n in pairs(ChuXinZheAdvanceClassTable) do
if ProfessionProxy.Instance:DoesThisIdCanBuyBranch(n,buyBranch) then
local thisidClass = Table_Class[lineid]
local thisac =thisidClass.AdvanceClass
local p1 = ProfessionProxy.Instance:IsThisIdYiJiuZhi(thisac[1]) or n == thisac[1]
local p2 = ProfessionProxy.Instance:IsThisIdYiJiuZhi(thisac[2]) or n == thisac[2]
local p3 = ProfessionProxy.Instance:IsThisIdYiJiuZhi(thisac[3]) or n == thisac[3]
local p4 = ProfessionProxy.Instance:IsThisIdYiJiuZhi(thisac[4]) or n == thisac[4]
local p5 = ProfessionProxy.Instance:IsThisIdYiJiuZhi(thisac[5]) or n == thisac[5]
local p6 = ProfessionProxy.Instance:IsThisIdYiJiuZhi(thisac[6]) or n == thisac[6]
v:CRootSetState(p1,p2,p3,p4,p5,p6)
end
end
break;
end
end
end