|
|
- GuildSceneCollectView = GuildSceneCollectView or BaseClass(BaseItem)
- local GuildSceneCollectView = GuildSceneCollectView
-
- function GuildSceneCollectView:__init(parent_wnd,prefab_asset,layer_name)
- self.base_file = "mainui"
- self.layout_file = "CollectBarView"
- self.parent_wnd = parent_wnd
- self.layer_name = layer_name
- self.curr_progress = 0 --采集当前进度
- self.total_step = 40
- self.is_collecting = false
- self.collect_time = 3 --采集装备时间
- self.main_role = Scene:getInstance():GetMainRole()
- self.model = GuildModel:getInstance()
- self:Load()
- end
-
- function GuildSceneCollectView:Load_callback()
- self.transform.anchoredPosition = Vector2(0, 155)
- self.collectText = self:GetChild("Image/collectText"):GetComponent("Text")
- self.effect = self:GetChild("effect")
- self.effect2 = self:GetChild("effect2")
- self.fg_img
- = GetChildImages(self.transform, {
- "barCon/progressImg/fgImg"
- })
- self.fg_img.enabled = false
- self:SetProgress(0, 100)
- -- 修改节点名称
- self.transform.name = "GuildSceneCollectView"
-
- self:AddEvents()
- end
-
- function GuildSceneCollectView:AddEvents( )
- --开始采集
- local function startCollect(vo)
- self:StartCollectAction(vo)
- end
- self:BindEvent(self.model, GuildModel.START_TO_COLLECT_ITEM, startCollect)
- --取消采集
- local function cancelCollect()
- if self.is_collecting then
- local role = Scene.Instance.main_role
- if role and not role:IsInState(PoseState.COLLECT) then
- self:CancelCollectAction()
- end
- end
- end
- self:BindEvent(self.model, GuildModel.STOP_COLLECT_ITEM, cancelCollect)
- self.attack_id = GlobalEventSystem:Bind(FightEvent.RELEASE_MAIN_SKILL, cancelCollect)
- self.game_start_id = GlobalEventSystem:Bind(SceneEventType.SCENE_CHANGED,cancelCollect)
- self.mainrole_move_id = GlobalEventSystem:Bind(ObjectEventType.MAINROLE_MOVE_EVENT_IMME,cancelCollect)
- end
-
- function GuildSceneCollectView:StartCollectAction(vo)
- self.vo = vo
- self:SetVisible(true)
- self.curr_progress = 0
- self.is_collecting = true
- self.main_role:SetIsCollecting(true)
- SceneManager:getInstance():SetCollectFlag(true)
- self:SwitchCollectState(true)
- self:SetProgress(0, 100)
- local function call_back( )
- cs_particleM:SetSpeed(self.effect.gameObject, 1 / self.collect_time) --特效播放1.5秒
- end
- self.effect.gameObject:SetActive(true)
- self:AddUIEffect("ui_caijinew_01", self.effect, self.layer_name, nil, 1, false, self.collect_time + 2, nil, nil, call_back)
-
- if self.collecting_time_id == nil then
- local function collectingFunc( ... )
- self:Collecting()
- end
- self.collecting_time_id = GlobalTimerQuest:AddPeriodQuest(collectingFunc, self.collect_time / self.total_step, 100)
- end
- end
-
- function GuildSceneCollectView:CancelCollectAction(auto_end)
- self:SetVisible(false)
- self.curr_progress = 0
- self.is_collecting = false
- SceneManager:getInstance():SetCollectFlag(false)
- self:SwitchCollectState(false)
- self.main_role:SetIsCollecting(false)
- if auto_end then
- self.model:Fire(GuildModel.PICK_UP_BOSS_DROP_ITEM, GuildModel.GBossPickOpty.Succeed, self.vo.drop_id)
- else
- -- GlobalEventSystem:Fire(SceneEventType.GBOSS_PICK_CANCEL, self.model:GetCurGuildBossCollectDropId())
- self.model:Fire(GuildModel.PICK_UP_BOSS_DROP_ITEM, GuildModel.GBossPickOpty.Cancel, self.vo.drop_id)
- end
- end
-
- --采集进行器
- function GuildSceneCollectView:Collecting( )
- if self.is_collecting == false then
- if self.collecting_time_id ~= nil then
- GlobalTimerQuest:CancelQuest(self.collecting_time_id)
- self.collecting_time_id = nil
- end
- return
- end
-
- self.curr_progress = self.curr_progress + 1
- self:SetProgress(self.curr_progress, self.total_step)
- if self.curr_progress >= self.total_step then --少许延时关闭
- if self.collecting_time_id ~= nil then
- GlobalTimerQuest:CancelQuest(self.collecting_time_id)
- self.collecting_time_id = nil
- end
- local function DelayClose()
- self:CancelCollectAction(true)
- end
- if self.delay_close_id then
- GlobalTimerQuest:CancelQuest(self.delay_close_id)
- self.delay_close_id = false
- end
- self:AddUIEffect("ui_caijinew_02", self.effect2, self.layer_name, nil, 1, false, false, nil, nil, nil)
- self.delay_close_id = GlobalTimerQuest:AddDelayQuest(DelayClose, 0.7)
- end
- end
-
- function GuildSceneCollectView:SwitchCollectState( flag )
- local main_role = Scene.Instance.main_role
- if not main_role then
- return
- end
- if flag then
- main_role:DoCollect()
- else
- if main_role:IsInState(PoseState.COLLECT) then
- main_role:DoStand(nil, 0.1)
- end
- end
- end
-
- -- 采集进度
- function GuildSceneCollectView:SetProgress(curr_value, max_value)
- local progress_value = math.floor(curr_value / max_value * 100)
- progress_value = progress_value >= 100 and 100 or progress_value
- self.collectText.text = progress_value .. "%"
- end
-
- function GuildSceneCollectView:__delete( )
- if self.attack_id then
- GlobalEventSystem:UnBind(self.attack_id)
- self.attack_id = nil
- end
-
- if self.game_start_id then
- GlobalEventSystem:UnBind(self.game_start_id)
- self.game_start_id = nil
- end
-
- if self.mainrole_move_id then
- GlobalEventSystem:UnBind(self.mainrole_move_id)
- self.mainrole_move_id = nil
- end
-
- if self.collecting_time_id ~= nil then
- GlobalTimerQuest:CancelQuest(self.collecting_time_id)
- self.collecting_time_id = nil
- end
-
- if self.delay_close_id then
- GlobalTimerQuest:CancelQuest(self.delay_close_id)
- self.delay_close_id = false
- end
- self:ClearUIEffect(self.effect)
- self:ClearUIEffect(self.effect2)
- end
|