miduo_client/Assets/ManagedResources/~Lua/Modules/Fight/FightSmallChoosePanel.lua

209 lines
8.6 KiB
Lua

require("Base/BasePanel")
FightSmallChoosePanel = Inherit(BasePanel)
local smallListGo = {}
local mainLevelSettingConfig = ConfigManager.GetConfig(ConfigName.MainLevelSettingConfig)
local mainLevelConfig = ConfigManager.GetConfig(ConfigName.MainLevelConfig)
local curSmallFightId = 0
local curMiddleFightId = 0
local difficultType = FightDifficultyState.SimpleLevel
local curDifficulSData = {}
-- local mapNpc = "live2d_npc_map"
-- local mapNpc2 = "live2d_npc_map_nv"
-- local npc, scale
--文字描述
local chaterInfoList = {}
--初始化组件(用于子类重写)
function FightSmallChoosePanel:InitComponent()
self.spLoader = SpriteLoader.New()
self.bg = Util.GetGameObject(self.transform, "bg")
screenAdapte(self.bg)
--self.UpView = SubUIManager.Open(SubUIConfig.UpView, self.gameObject.transform)
self.BtnBack = Util.GetGameObject(self.transform, "btnBack")
self.worldBtn = Util.GetGameObject(self.transform, "worldBtn")
self.curMapBg = Util.GetGameObject(self.gameObject, "curMap/curMapBg"):GetComponent("Image")
for i=1, 20 do
smallListGo[i] = Util.GetGameObject(self.gameObject, "curMap/curMapBg/mapAreaPre (".. i ..")")
end
self.selectMap = Util.GetGameObject(self.gameObject, "curMap/selectMap")
-- npc = NameManager.roleSex == ROLE_SEX.BOY and mapNpc or mapNpc2
-- scale = NameManager.roleSex == ROLE_SEX.BOY and Vector3.one or Vector3.one * 0.5
-- self.liveNode = poolManager:LoadLive(npc, Util.GetTransform(self.selectMap, "pos"), scale, Vector3.zero)
-- local SkeletonGraphic = self.liveNode:GetComponent("SkeletonGraphic")
-- if SkeletonGraphic then
-- SkeletonGraphic.AnimationState:SetAnimation(0, "move2", true)
-- if FightPointPassManager.GetRoleDirection()==1 then
-- SkeletonGraphic.transform.localEulerAngles = Vector3.New(0, 180, 0)
-- else
-- SkeletonGraphic.transform.localEulerAngles = Vector3.New(0, 0, 0)
-- end
-- end
self.chapterInfo = Util.GetGameObject(self.gameObject, "chapterInfo")
self.titleText = Util.GetGameObject(self.gameObject, "chapterInfo/titleText"):GetComponent("Text")
for i = 1, 4 do
chaterInfoList[i] = Util.GetGameObject(self.gameObject, "chapterInfo/Text1 (" .. i .. ")"):GetComponent("Text")
end
end
--绑定事件(用于子类重写)
function FightSmallChoosePanel:BindEvent()
Util.AddClick(self.BtnBack, function()
self:ClosePanel()
end)
Util.AddClick(self.worldBtn, function()
UIManager.OpenPanel(UIName.FightMiddleChoosePanel,curSmallFightId,false)
end)
end
--添加事件监听(用于子类重写)
function FightSmallChoosePanel:AddListener()
end
--移除事件监听(用于子类重写)
function FightSmallChoosePanel:RemoveListener()
end
--界面打开时调用(用于子类重写)
function FightSmallChoosePanel:OnOpen(smallFightId)
curSmallFightId = smallFightId
curMiddleFightId = math.floor(smallFightId/1000)
difficultType = smallFightId%10
-- Log("打开关卡 "..smallFightId .." 章节id ".. curMiddleFightId .. " 难度 ".. difficultType)
end
--界面打开或者重新打开后,界面刷新时调用(用于子类重写)
function FightSmallChoosePanel:OnShow()
--self.UpView:OnOpen({ showType = UpViewOpenType.ShowLeft, panelType = PanelType.Main })
self:OnShowPanelData()
SoundManager.PlaySound(SoundConfig.Sound_LittleMap)
if self.liveNode then
self.liveNode:OnClose()
end
self.liveNode = PlayerLiveView:New(Util.GetGameObject(self.selectMap, "pos"),self.sortingOrder)
self.liveNode:OnOpen(GetPlayerRoleSingleConFig().Scale4,Vector3.New(0,40,0))
if FightPointPassManager.GetRoleDirection()==1 then
self.liveNode:SetWalkDir(WALK_DIR.RUN_LEFT)
else
self.liveNode:SetWalkDir(WALK_DIR.RUN_RIGHT)
end
end
--初始化界面
function FightSmallChoosePanel:OnShowPanelData()
-- if self.liveNode == nil then
-- npc = NameManager.roleSex == ROLE_SEX.BOY and mapNpc or mapNpc2
-- scale = NameManager.roleSex == ROLE_SEX.BOY and Vector3.one or Vector3.one * 0.5
-- self.liveNode = poolManager:LoadLive(npc, Util.GetTransform(self.selectMap, "pos"), scale, Vector3.zero)
-- end
-- local SkeletonGraphic = self.liveNode:GetComponent("SkeletonGraphic")
-- if SkeletonGraphic then
-- SkeletonGraphic.AnimationState:SetAnimation(0, "move2", true)
-- if FightPointPassManager.GetRoleDirection()==1 then
-- SkeletonGraphic.transform.localEulerAngles = Vector3.New(0, 180, 0)
-- else
-- SkeletonGraphic.transform.localEulerAngles = Vector3.New(0, 0, 0)
-- end
-- end
if self.liveNode == nil then
self.liveNode = PlayerLiveView:New(Util.GetGameObject(self.selectMap, "pos"),1)
self.liveNode:OnOpen(GetPlayerRoleSingleConFig().Scale4,Vector3.New(0,40,0))
if FightPointPassManager.GetRoleDirection()==1 then
self.liveNode:SetWalkDir(WALK_DIR.RUN_LEFT)
else
self.liveNode:SetWalkDir(WALK_DIR.RUN_RIGHT)
end
end
local curMiddleConFigData = mainLevelSettingConfig[curMiddleFightId]
if curMiddleConFigData == nil then return end
self.curMapBg.sprite = self.spLoader:LoadSprite(curMiddleConFigData.ChapterBg)
self.curMapBg:SetNativeSize()
self.curMapBg.transform.localScale = Vector3.one
self.curMapBg.transform.localPosition = Vector3.New(curMiddleConFigData.ChapterBgPos[1],curMiddleConFigData.ChapterBgPos[2],0)
curDifficulSData = {}
if difficultType == FightDifficultyState.SimpleLevel then
curDifficulSData = curMiddleConFigData.SimpleLevel
elseif difficultType == FightDifficultyState.NrmalLevel then
curDifficulSData = curMiddleConFigData.NormalLevel
elseif difficultType == FightDifficultyState.DifficultyLevel then
curDifficulSData = curMiddleConFigData.DifficultyLevel
elseif difficultType == FightDifficultyState.HellLevel then
curDifficulSData = curMiddleConFigData.HellLevel
elseif difficultType == FightDifficultyState.NightmareLevel then
curDifficulSData = curMiddleConFigData.NightmareLevel
end
for i = 1, math.max(#curDifficulSData, #smallListGo) do
local go = smallListGo[i]
if not go then
go=newObject(smallListGo[1])
go.transform:SetParent(Util.GetGameObject(self.gameObject, "curMap/curMapBg").transform)
go.transform.localScale = Vector3.one
go.transform.localPosition=Vector3.zero;
go.gameObject.name = "mapAreaPre (".. i ..")"
smallListGo[i] = go
end
go.gameObject:SetActive(false)
end
for i = 1, #curDifficulSData do
self:SingleSmallFightShow(i)
end
if GetCurLanguage() ~= 0 then
self.chapterInfo:SetActive(false)
else
self.chapterInfo:SetActive(true)
end
--章节文字显示
self.titleText.text = GetLanguageStrById(curMiddleConFigData.Name) .."·"..NumToComplexFont[curMiddleFightId]
local descs = string.split(GetLanguageStrById(curMiddleConFigData.info), "#")
for i = 1, #chaterInfoList do
chaterInfoList[i].text = descs[i] or ""
end
end
function FightSmallChoosePanel:SingleSmallFightShow(indext)
smallListGo[indext]:SetActive(true)
local curSmallFightConFig = mainLevelConfig[curDifficulSData[indext]]
smallListGo[indext]:GetComponent("RectTransform").anchoredPosition = Vector2.New(curSmallFightConFig.LevelPointPosition[1], curSmallFightConFig.LevelPointPosition[2])
Util.GetGameObject(smallListGo[indext].transform, "icon"):SetActive((math.floor((curSmallFightConFig.Id%100)/10))%5 ~= 0)
Util.GetGameObject(smallListGo[indext].transform, "icon2"):SetActive((math.floor((curSmallFightConFig.Id%100)/10))%5 == 0)
if curSmallFightConFig.Id == curSmallFightId then
self:SelectRenPos(smallListGo[indext])
end
end
function FightSmallChoosePanel:SelectRenPos(_parent)
self.selectMap.transform:SetParent(_parent.transform.parent)
self.selectMap.transform.localPosition = _parent.transform.localPosition
self.selectMap.transform.localScale = Vector3.one
--self.selectMap.transform.localPosition = Vector3.zero
end
--界面关闭时调用(用于子类重写)
function FightSmallChoosePanel:OnClose()
end
--界面销毁时调用(用于子类重写)
function FightSmallChoosePanel:OnDestroy()
self.spLoader:Destroy()
if self.liveNode then
self.liveNode:OnClose()
end
--SubUIManager.Close(self.UpView)
smallListGo = {}
-- if self.liveNode then
-- poolManager:UnLoadLive(npc, self.liveNode, PoolManager.AssetType.GameObject)
-- self.liveNode = nil
-- end
end
return FightSmallChoosePanel