local FRIndicators = class("FRIndicators", BaseCtrl) FRIndicators._mapNodeConfig = { canvasGroup = { sNodeName = "----SafeAreaRoot----", sComponentName = "CanvasGroup" }, IndictorArea = {sComponentName = "Transform"}, TemplateBoxIndicator = {}, TemplateTeleportIndicator = {}, TemplateBossIndicator = {}, TemplateNPCIndicator = {} } FRIndicators._mapEventConfig = { SetIndicator = "OnEvent_SetIndicator", FRRoomEnd = "OnEvent_LevelEnd", SetIndicatorEnemy = "OnEvent_SetIndicatorEnemy", LevelStateChanged = "OnEvent_LevelStateChanged", InputEnable = "OnEvent_InputEnable" } function FRIndicators:Awake() self.tbIndicators = {} self.tbEnemyIndicators = {} end function FRIndicators:FadeIn() end function FRIndicators:FadeOut() end function FRIndicators:OnEnable() end function FRIndicators:OnDisable() end function FRIndicators:OnDestroy() end function FRIndicators:OnRelease() end function FRIndicators:OnEvent_SetIndicator(nType, rtTransform, v3Offset, sIconPath) if #self.tbIndicators > 10 then printError("箱子传送门指示器数量上限") return end if nType == 1 then local go = instantiate(self._mapNode.TemplateBoxIndicator, self._mapNode.IndictorArea) local comp = go:GetComponent("FRIndicator") go:SetActive(true) if comp ~= nil then comp:SetFollowTarget(rtTransform, v3Offset) end table.insert(self.tbIndicators, go) elseif nType == 2 then local go = instantiate(self._mapNode.TemplateTeleportIndicator, self._mapNode.IndictorArea) local comp = go:GetComponent("FRIndicator") go:SetActive(true) if comp ~= nil then comp:SetFollowTarget(rtTransform, v3Offset) end table.insert(self.tbIndicators, go) elseif nType == 3 and sIconPath ~= nil and sIconPath ~= "" then local go = instantiate(self._mapNode.TemplateNPCIndicator, self._mapNode.IndictorArea) local comp = go:GetComponent("FRIndicator") go:SetActive(true) if comp ~= nil then comp:SetFollowTarget(rtTransform, v3Offset) end local img = go.transform:Find("Icon") self:SetAtlasSprite(img:GetComponent("Image"), "15_battle", sIconPath) table.insert(self.tbIndicators, go) end end function FRIndicators:OnEvent_SetIndicatorEnemy(nEntityId, v3Offset) if #self.tbEnemyIndicators > 10 then printError("敌人指示器数量上限") return end local go = instantiate(self._mapNode.TemplateBossIndicator, self._mapNode.IndictorArea) go:SetActive(true) CS.AdventureModuleHelper.SetBossIndicatorTarget(nEntityId, go, v3Offset) table.insert(self.tbEnemyIndicators, go) end function FRIndicators:OnEvent_LevelStateChanged() for _, goIndicators in pairs(self.tbEnemyIndicators) do destroy(goIndicators) end self.tbEnemyIndicators = {} end function FRIndicators:OnEvent_LevelEnd() for _, goIndicators in pairs(self.tbIndicators) do destroy(goIndicators) end for _, goIndicators in pairs(self.tbEnemyIndicators) do destroy(goIndicators) end self.tbIndicators = {} end function FRIndicators:OnEvent_InputEnable(bEnable) NovaAPI.SetCanvasGroupAlpha(self._mapNode.canvasGroup, bEnable == true and 1 or 0) NovaAPI.SetCanvasGroupBlocksRaycasts(self._mapNode.canvasGroup, bEnable == true) NovaAPI.SetCanvasGroupInteractable(self._mapNode.canvasGroup, bEnable == true) end return FRIndicators