local ActivityManager = class("ActivityManager", BaseModule)

function ActivityManager:showGoldPigUI(showType)
	UIManager:showUI("app/ui/activity/gold_pig/gold_pig_ui", {showType = showType})
end

function ActivityManager:buyGoldPig(id)
	PayManager:purchasePackage(id, PayManager.PURCHARSE_TYPE.ACT_GOLD_PIG)
end

function ActivityManager:onBoughtGoldPigFinish(result)
	if result.status == 0 then
		DataManager.GoldPigData:onBought(result.pig)
	end
end

-- 夏日活动分界线-----------------------------------------------------------------------------------------------------

function ActivityManager:showActivityUI(panelType)
    if panelType == GConst.ActivityConst.PANEL_TYPE.SKIN then
        UIManager:showUI("app/ui/activity/activity_gift_skin_ui", panelType)
    elseif panelType == GConst.ActivityConst.PANEL_TYPE.HERO then
        UIManager:showUI("app/ui/activity/activity_gift_hero_ui", panelType)
    else
        UIManager:showUI("app/ui/activity/activity_ui", panelType)
    end
end

-- 购买夏日活动战令
function ActivityManager:buySummerBounty(giftId)
    PayManager:purchasePackage(giftId, PayManager.PURCHARSE_TYPE.ACT_GIFT)
end

-- 初始化夏日活动计时器
function ActivityManager:initSummerTimer()
    self:unscheduleGlobal(self.summerSid)

    if DataManager.ActivityData:isActive() then
        Logger.logHighlight("夏日活动结束倒计时："..DataManager.ActivityData:getEndRemainTime())
        self.summerSid = self:performWithDelayGlobal(function()
            -- 夏日活动结束
            Logger.logHighlight("夏日活动结束")
            EventManager:dispatchEvent(EventManager.CUSTOM_EVENT.ACTIVITY_SUMMER_END)
        end, DataManager.ActivityData:getEndRemainTime())
    elseif DataManager.ActivityData:getStartRemainTime() > 0 then
        Logger.logHighlight("夏日活动开始倒计时："..DataManager.ActivityData:getStartRemainTime())
        self.summerSid = self:performWithDelayGlobal(function()
            -- 夏日活动结束
            Logger.logHighlight("夏日活动开始")
            self:reqSummerData()
        end, DataManager.ActivityData:getStartRemainTime())
    end
end

-- 请求夏日活动数据
function ActivityManager:reqSummerData()
    if not DataManager.ActivityData:isOpen() then
        return
    end
    self:sendMessage(ProtoMsgType.FromMsgEnum.SummerDataReq, {}, {}, self.rspSummerData, nil)
end

function ActivityManager:rspSummerData(result)
    if result.summer then
        DataManager.ActivityData:onGetActData(result.summer)
    end
end

-- 请求夏日活动任务奖励
function ActivityManager:reqSummerTaskReward(id)
    self:sendMessage(ProtoMsgType.FromMsgEnum.SummerTaskClaimReq, {id = id, stage = DataManager.ActivityData:getTaskStage(id)}, {}, self.rspSummerTaskReward, nil)
end

function ActivityManager:rspSummerTaskReward(result)
    if result.err_code == GConst.ERROR_STR.SUCCESS then
        DataManager.ActivityData:onReceivedTaskReward(result.reqData.id, result.stage, result.level, result.exp)

        BIReport:postActOpt(BIReport.ACTIVITY_SUMMER.TASK_REWARD, DataManager.ActivityData:getActId(), DataManager.ActivityData:getBountyLevel(), DataManager.ActivityData:getBountyLevelScore(), 0)
    end
end

-- 请求夏日活动战令奖励，id为0就是领取档位全部可领奖励
function ActivityManager:reqSummerBountyReward(id, grade)
    self:sendMessage(ProtoMsgType.FromMsgEnum.SummerBountyClaimReq, {id = id, grade = grade}, {}, self.rspSummerBountyReward, BIReport.ITEM_GET_TYPE.ACTIVITY_BOUNTY_REWARD)
end

function ActivityManager:rspSummerBountyReward(result)
    if result.err_code == GConst.ERROR_STR.SUCCESS then
        DataManager.ActivityData:onReceivedBountyReward(result.success_id_grade)

        GFunc.showRewardBox(result.rewards)
    end
end

-- 购买战令等级
function ActivityManager:reqBuyBountyLevel()
    local cost = DataManager.ActivityData:getBuyBountyLevelCost()
	local costId = GFunc.getRewardId(cost)
	local costNum = GFunc.getRewardNum(cost)
	if not GFunc.checkCost(costId, costNum, true) then
		return
	end
	local params ={
		titleTx = I18N:getGlobalText(I18N.GlobalConst.BOUNTY_BUY_LEVEL_TITLE),
		content = I18N:getGlobalText(I18N.GlobalConst.BOUNTY_BUY_LEVEL_COUNTENT),
		boxType = GConst.MESSAGE_BOX_TYPE.MB_OK_CANCEL,
		showToday = GConst.MESSAGE_BOX_SHOW_TODAY.ACTIVITY_BUY_LEVEL,
		costId = costId,
		costNum = costNum,
		okFunc = function()
            local id = DataManager.ActivityData:getBountyCfg()[DataManager.ActivityData:getBountyLevel() + 1].id
            -- Logger.logHighlight("购买战令等级:"..id)
			self:sendMessage(ProtoMsgType.FromMsgEnum.SummerBountyClaimByDiamondReq, {id = id}, {}, self.rspBuyBountyLevel, BIReport.ITEM_GET_TYPE.ACTIVITY_BOUNTY_LEVEL)
		end,
	}
	GFunc.showMessageBox(params)
end

function ActivityManager:rspBuyBountyLevel(result)
    if result.err_code == GConst.ERROR_STR.SUCCESS then
        DataManager.ActivityData:onBoughtBountyLevel()

        BIReport:postActOpt(BIReport.ACTIVITY_SUMMER.BUY_LEVEL_UP, DataManager.ActivityData:getActId(), DataManager.ActivityData:getBountyLevel(), DataManager.ActivityData:getBountyLevelScore(), DataManager.ActivityData:getBuyBountyLevelCost())
    end
end

-- 夏日活动分界线-----------------------------------------------------------------------------------------------------

return ActivityManager