BedroomCatRewardViewPresenter.ts 5.62 KB
import { Presenter } from "../../../../common/classbase/PresenterBase";
import { BedRoomCatModelManager, CatRewardConfigTpye } from "../../../model/BedRoomCatModelManager";
import { GameModelManager } from "../../../model/GameModelManager";
import { RegPresenter } from "../../PresenterCCViewFactory";
import RewardLevelItem from "../../RewardLevelItem";
import RewardLoginItem, { rewardSturct, rewardType } from "../../RewardLoginItem";
import RewardPlotItem from "../../RewardPlotItem";
import { BedroomCatRewardViewType, BedroomCatRewardViewProps, BedroomCatRewardView } from "../../view/type/BedroomCatRewardView";

@RegPresenter(BedroomCatRewardViewType)
export default class BedroomCatRewardViewPresenter extends Presenter<BedroomCatRewardViewProps, BedroomCatRewardView>{
    static uuid = "BedroomCatRewardViewPresenter";
    private _viewProps: BedroomCatRewardViewProps;
    private _titleLabel: string[] = [
        "记得每天来看看哦~",
        "饭统碗里没有粮啦!点击碗即可喂食哦~",
        "解锁章节会获取相应的奖励哦~",
        "",
    ];

    constructor() {
        super();
    }

    onOpen(props: BedroomCatRewardViewProps) {
        super.onOpen(props);
        this._viewProps = props;
        this._viewProps.onClickTabbarBtn = this.onClickTabbarBtn;
        this._viewProps.onCloseBtnClick = this.onCloseBtnClick;
        this.view.setProps(this._viewProps);
        this.onShow();
    }

    onShow() {
        super.onShow();
        //进入奖励界面初始化奖励的状态
        BedRoomCatModelManager.initCatRewardStatus();
        this.onClickTabbarBtn(1);
    }

    onClose() {
        super.onClose();
    }

    onEnterBackground() {
        super.onEnterBackground();
    }

    onEnterForeground() {
        super.onEnterForeground();
        this.updateRedDot();
    }

    updateRedDot() {
        for (let i = 1; i < 4; i++) {
            let catRewardStatus = BedRoomCatModelManager.getCatRewardStatus(i);
            for (let j = 0; j < catRewardStatus.length; j++) {
                if (catRewardStatus[j] == 1) {
                    this.view.getRedDotNodes()[i - 1].active = true;
                    break;
                } else {
                    this.view.getRedDotNodes()[i - 1].active = false;
                }
            }
        }
    }

    CreateOrUpdateRewardItem(tabbarId: number) {
        this.view.getScrollViewContentNode().removeAllChildren();
        let cfg = BedRoomCatModelManager.getCatRewardConfigByConfigType(tabbarId);
        let catRewardStatus = BedRoomCatModelManager.getCatRewardStatus(tabbarId);
        let rewardSturcts: rewardSturct[] = [];
        for (let i = 0; i < cfg.length; ++i) {
            if (cfg[i].rewardTpye !== tabbarId) {
                continue;
            }
            if (cfg[i].catFoodNumber !== 0 && cfg[i].catFoodNumber) {
                rewardSturcts.push({ numberOrId: cfg[i].catFoodNumber, type: rewardType.catFood });
            }
            if (cfg[i].cannedNumber !== 0 && cfg[i].cannedNumber) {
                rewardSturcts.push({ numberOrId: cfg[i].cannedNumber, type: rewardType.canned });
            }
            if (cfg[i].clothedId !== 0 && cfg[i].clothedId) {
                rewardSturcts.push({ numberOrId: cfg[i].clothedId, type: rewardType.clothes });
            }
            if (cfg[i].specialPlotId !== 0 && cfg[i].specialPlotId) {
                rewardSturcts.push({ numberOrId: cfg[i].specialPlotId!, type: rewardType.item });
            }
            let btn = cc.instantiate(this.view.getRewardItemPrefabs()[tabbarId - 1]);
            let callback = () => {
                this.updateRedDot();
            }
            if (tabbarId == CatRewardConfigTpye.CatLoginRewardConfig) {
                btn.getComponent(RewardLoginItem).setData(cfg[i].rewardTpye, i, cfg[i].rewardTaskDescription, rewardSturcts, catRewardStatus[i], callback);
            } else if (tabbarId == CatRewardConfigTpye.CatLevelRewardConfig) {
                btn.getComponent(RewardLevelItem).setData(cfg[i].rewardTpye, i, cfg[i].rewardTaskDescription, rewardSturcts, catRewardStatus[i], callback);
            } else if (tabbarId == CatRewardConfigTpye.CatPlotRewardConfig) {
                btn.getComponent(RewardPlotItem).setData(cfg[i].rewardTpye, i, cfg[i].rewardTaskDescription, rewardSturcts, catRewardStatus[i], callback);
            }
            btn.parent = this.view.getScrollViewContentNode();
            rewardSturcts = [];
        }
        this.view.getScrollView().scrollToTop();
    }

    onClickTabbarBtn = (tabbarId: number) => {
        for (let i = 0; i < this.view.getTabbarButtons().length; i++) {
            if (i == tabbarId - 1) {
                this.view.getTabbarButtons()[i].getComponentInChildren(cc.Sprite).spriteFrame = this.view.getTabbarSpriteFrames()[0];
            } else {
                this.view.getTabbarButtons()[i].getComponentInChildren(cc.Sprite).spriteFrame = undefined as unknown as cc.SpriteFrame;
            }
        }
        this.view.getRewardPanelTitleSprite().spriteFrame = this.view.getRewardPanelTitleSpriteFrames()[tabbarId - 1];
        this.view.getRewardPanelTitleLabel().string = this._titleLabel[tabbarId - 1];
        this.CreateOrUpdateRewardItem(tabbarId);
        if (tabbarId <= CatRewardConfigTpye.CatPlotRewardConfig) {
            this.view.getWelfareNode().active = false;
            this.view.getRewardPanelNode().active = true;
        } else {
            this.view.getWelfareNode().active = true;
            this.view.getRewardPanelNode().active = false;
        }
        this.updateRedDot();
    }

    onCloseBtnClick = () => {
        this.view.close();
        GameModelManager.BackToBedRoom.emit();
    }
}