8e3fdf4e-e6f4-4839-8ab2-51c65d7a5a4b.js.map 14.2 KB
{"version":3,"sources":["assets/script/game/ui/view/impl/AlertDialogViewImpl.ts"],"names":[],"mappings":"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","file":"","sourceRoot":"/","sourcesContent":["import { RegView } from \"../../PresenterCCViewFactory\";\r\nimport { AlertDialogViewType, AlertDialogViewProps, AlertDialogView } from \"../type/AlertDialogView\";\r\nimport { CCPureView } from \"../../../../common/classbase/CCViewBase\";\r\nimport { DummyLabel, DummyNode, DummyButton, DummyRichText } from \"../../../../common/CCDummyObjects\";\r\nimport SVButton from \"simba-sdk-ccsvbutton\";\r\nimport { ShowType, ShowLocationType } from \"../../../Enums\";\r\nimport GameDotMgr from \"../../../GameDotMgr\";\r\nimport { SDK } from \"simba-sdk\";\r\nimport { GameConstData } from \"../../../../common/gameplay/gamedata/GameConstData\";\r\nimport { SVPoint } from \"simba-sdk/dist/SDKTypes\";\r\nimport { DeepReadonly } from \"simba-utils\";\r\nimport { GetRewardType } from \"../../../../common/gameplay/gamedata/GameEnumData\";\r\nimport { channel, GameConfig } from \"../../../../GameConfig\";\r\nimport { UIManager } from \"../../../../common/gameplay/managers/UIManager\";\r\nimport { GameModelManager } from \"../../../model/GameModelManager\";\r\n\r\n\r\nconst { ccclass, property } = cc._decorator;\r\n\r\n@ccclass\r\n@RegView(AlertDialogViewType, \"prefab/ui/AlertDialogView\")\r\nexport default class AlertDialogViewImpl extends CCPureView<AlertDialogViewProps> implements AlertDialogView {\r\n    //#region \r\n    @property(cc.Label)\r\n    titlelabel: cc.Label = DummyLabel;\r\n\r\n    @property(cc.RichText)\r\n    content: cc.RichText = DummyRichText;\r\n\r\n    @property(cc.Node)\r\n    twobtnmode: cc.Node = DummyNode;\r\n\r\n    @property(cc.Button)\r\n    okbtn: cc.Button = DummyButton;\r\n\r\n    @property(cc.Button)\r\n    adokbtn: cc.Button = DummyButton;\r\n\r\n    @property(SVButton)\r\n    adsvbtn: SVButton = undefined as any;\r\n\r\n    @property(cc.Node)\r\n    onebtnmode: cc.Node = DummyNode;\r\n\r\n    @property(cc.Node)\r\n    opacityBtn: cc.Node = DummyNode;\r\n\r\n    @property(cc.Node)\r\n    banner: cc.Node = DummyNode;\r\n\r\n    @property(cc.Node)\r\n    cancelNode: cc.Node = DummyNode;\r\n    @property(cc.Node)\r\n    cancelNode2: cc.Node = DummyNode;\r\n    @property(cc.Node)\r\n    cancelNode3: cc.Node = DummyNode;\r\n    @property(cc.Node)\r\n    shopNode: cc.Node = DummyNode;\r\n    @property(cc.Node)\r\n    shareScreenNode: cc.Node = DummyNode;\r\n\r\n    svType: GetRewardType = GetRewardType.Ad;\r\n\r\n    onLoad() {\r\n        this.adsvbtn.loadSVConfig();\r\n        this.bindProp(\"titlecontent\", (value) => {\r\n            this.titlelabel.string = value;\r\n        });\r\n\r\n        this.bindProp(\"content\", (value) => {\r\n            this.content.string = value;\r\n        });\r\n\r\n        this.bindProp(\"ishasad\", (value) => {\r\n            if (this._props.istwobtn) {\r\n                this.adokbtn.node.active = value;\r\n                this.okbtn.node.active = !value;\r\n                this.adsvbtn.enabled = true;\r\n            }\r\n\r\n        });\r\n\r\n        this.bindProp(\"istwobtn\", (value) => {\r\n            this.twobtnmode.active = value;\r\n            let hasad = this._props.ishasad;\r\n            this.adokbtn.node.active = hasad;\r\n            this.okbtn.node.active = !hasad;\r\n            this.onebtnmode.active = !value;\r\n        });\r\n\r\n        this.bindProp(\"adconfig\", (value) => {\r\n            this.adsvbtn.enabled = (value !== \"\");\r\n            if (value !== \"\") {\r\n                this.adsvbtn.sharePointId = value;\r\n                this.adsvbtn.loadSVConfig();\r\n            }\r\n        });\r\n\r\n        this.bindProp(\"isthreebtn\", (value) => {\r\n            let three: boolean = value ? true : false;\r\n            this.shopNode.active = three;\r\n            this.cancelNode2.active = three;\r\n            this.cancelNode.active = !three;\r\n        });\r\n\r\n        this.bindProp(\"isadlimit\", (value) => {\r\n            let isadlimit: boolean = value ? true : false;\r\n            this.shopNode.active = isadlimit;\r\n            this.cancelNode3.active = isadlimit;\r\n            this.adokbtn.node.active = !isadlimit;\r\n        });\r\n\r\n        this.bindProp(\"isShareScreen\", (value) => {\r\n            let isShareScreen: boolean = value ? true : false;\r\n            this.shareScreenNode.active = isShareScreen;\r\n            this.adokbtn.node.active = !isShareScreen;\r\n        });\r\n\r\n        this.adsvbtn.onResult = ((type, ret) => {\r\n            this._props.callback(type, ret, this._props.dataptr);\r\n            this.closeView();\r\n        });\r\n\r\n        this.adsvbtn.onConfigLoaded = (svPoint: DeepReadonly<SVPoint>) => {\r\n            if (svPoint.type === \"share\") {\r\n                this.svType = GetRewardType.Share;\r\n            } else {\r\n                this.svType = GetRewardType.Ad;\r\n            }\r\n        }\r\n\r\n    }\r\n\r\n    onOkClickCallback(event) {\r\n        this._props.callback(\"\", true, this._props.dataptr);\r\n        this.closeView();\r\n    }\r\n\r\n    onCancleClickCallback(event) {\r\n        this._props.callback(\"\", false, this._props.dataptr);\r\n        this.closeView();\r\n    }\r\n\r\n    onGoToShopClickCallback(event) {\r\n        this._props.callback(\"\", false, this._props.dataptr);\r\n        GameDotMgr.getInstance().dotClickUI(\"shop_btn_AlertDialogView\");\r\n        if (channel == \"wechat\") {\r\n            // GameCenter.getInstance().openSubProgram(GameConfig.youZanShopAppId);\r\n            let link = GameModelManager.getYouZanShopUrlByType(2);\r\n            if (link) {\r\n                SDK.openProgramV2(GameConfig.youZanShopAppId, link);\r\n            }\r\n        } else if (channel == \"android\") {\r\n            let link = GameModelManager.getTaoBaoShopUrlByType(2);\r\n            if (link) {\r\n                GameModelManager.jumpToTaobaoShop(link);\r\n            }\r\n        } else {\r\n            UIManager.showToast(\"该功能在当前平台不可使用\");\r\n        }\r\n    }\r\n\r\n    onShareScreenClickCallback(event) {\r\n        \r\n    }\r\n\r\n    onADBtnClick() {\r\n        this.opacityBtn.active = true;\r\n    }\r\n\r\n    getSvBtnType = (): string => {\r\n        let ret = \"\";\r\n        if (this.adsvbtn.svPoint) {\r\n            ret = this.adsvbtn.svPoint.type;\r\n        }\r\n        return ret;\r\n    }\r\n\r\n    closeView() {\r\n        SDK.hideBannerAd();\r\n        this.close();\r\n        this.opacityBtn.active = false;\r\n    }\r\n\r\n    switchAdConfig(props: AlertDialogViewProps) {\r\n        if (props.istwobtn) {//两个按钮的\r\n            if (props.adconfig && \"\" !== props.adconfig.trim()) {\r\n                this.adsvbtn.sharePointId = props.adconfig;\r\n                this.adsvbtn.loadSVConfig();\r\n            }\r\n        }\r\n    }\r\n\r\n    showView = (props: AlertDialogViewProps) => {\r\n        this.opacityBtn.active = false;\r\n        this.switchAdConfig(props);\r\n        if (!props.hasBanner) {\r\n            SDK.hideBannerAd();\r\n            return;\r\n        }\r\n        let info = SDK.systemInfo.displayInfo;\r\n        let aspect = info.windowSize.height / cc.view.getVisibleSize().height;\r\n        this.node.getComponent(cc.Widget).updateAlignment();\r\n\r\n        let _width = this.banner.width * aspect;\r\n        let _height = this.banner.height * aspect;\r\n        let _left = (info.windowSize.width - _width) * 0.5;\r\n        let _top = info.windowSize.height - _height;\r\n\r\n        let style = {\r\n            left: _left,\r\n            top: _top,\r\n            width: _width,\r\n            height: _height,\r\n            anchorX: 0.5,\r\n            anchorY: 1,\r\n        }\r\n        SDK.showBannerAd(style, GameConstData.GAME_CONST_BANNER_REFRESH_TIME);\r\n    }\r\n\r\n\r\n\r\n}"]}