| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258 |
- import { _decorator, Button, Color, EditBox, instantiate, Label, Node, RichText, Sprite, SpriteFrame, sys, UITransform } from 'cc';
- import { UIView } from '@scripts/framework/ui/UIView';
- import { AppKernel } from '@scripts/app/AppKernel';
- import { UIViewID } from '@scripts/define/UIDefine';
- import { UICloseReason } from '@scripts/framework/ui/UILayer';
- import { formatCurrency } from '@scripts/utils/Helper';
- import { addBtnClick } from '@scripts/utils/UIHelper';
- const { ccclass, property } = _decorator;
- @ccclass('LoginView')
- export class LoginView extends UIView {
- readonly viewId = UIViewID.LoginView;
- @property(Button)
- btnGuest: Button;
- @property(Button)
- btnFacebook: Button;
- @property(Button)
- btnGoogle: Button;
- @property(EditBox)
- loginAccount: EditBox;
- @property(EditBox)
- loginPassword: EditBox;
- @property(Node)
- psd_visible_control: Node;
- @property(Node)
- btnLogin: Node;
- @property(Node)
- btnRegister: Node;
- @property(Node)
- btnResetPsd: Node;
- @property(Node)
- btnSupport: Node;
- @property(Node)
- policy_container: Node;
- private _labelLayout: Node | null = null;
- private _labelTemplate: Node | null = null;
- private _policyAgree = true;
- private _googleWebBtn;
- private listenViews: UIViewID[] = [
- UIViewID.Register,
- UIViewID.ResetPsd,
- UIViewID.Support
- ];
- protected onCreate(): void | Promise<void> {
- addBtnClick(this.btnGuest.node, this.onBtnGuestClick, this);
- addBtnClick(this.btnFacebook.node, this.onBtnFBClick, this);
- addBtnClick(this.btnGoogle.node, this.onBtnGoogleClick, this);
- this._googleWebBtn = AppKernel.google.createLoginBtn(
- this.btnGoogle.node,
- res => this.onGoogleWebLogin(res),
- );
- addBtnClick(this.btnRegister, this.onBtnRegisterClick, this);
- addBtnClick(this.btnLogin, this.onBtnLoginClick, this);
- addBtnClick(this.btnResetPsd, this.onBtnResetPsdClick, this);
- addBtnClick(this.btnSupport, this.onBtnSupportClick, this);
- AppKernel.events.on('open:ui-view', this.handleSubViewOpen, this);
- AppKernel.events.on('close:ui-view', this.handleSubViewClose, this);
- this.initPsdInput();
- this.initPolicyDesc();
- }
- protected onBeforeClose(_reason: UICloseReason): boolean | Promise<boolean> {
- return true;
- }
- private initPolicyDesc(): void {
- if (!this.policy_container) return;
- this._labelTemplate = this.policy_container.getChildByName("template") ?? null;
- this._labelLayout = this.policy_container.getChildByName("layout") ?? null;
- if (!this._labelTemplate || !this._labelLayout) return;
- this._labelLayout.removeAllChildren();
- const check_bg = this.policy_container.getChildByName("check_bg") ?? null;
- addBtnClick(check_bg, this.onTogglePolicyAgree, this);
- this.createText("I am 18+, in an eligible state, and agree to the ", true);
- this.createLink("Terms", () => this.onClickTerm());
- this.createText(" & ", true);
- this.createLink("Privacy Policy", () => this.onClickPrivacy());
- }
- private initPsdInput(): void {
- addBtnClick(this.psd_visible_control, this.onTogglePsdVisible, this);
- const eye_open = this.psd_visible_control.getChildByName("open");
- const eye_close = this.psd_visible_control.getChildByName("close");
- eye_close.active = true;
- eye_open.active = false;
- }
- // 创建普通文本
- private createText(str: string, bold: boolean) {
- const node = instantiate(this._labelTemplate!);
- node.active = true;
- const label = node.getComponent(Label)!;
- label.string = str;
- label.isBold = bold;
- label.color = Color.WHITE;
- label.isUnderline = false; // 关闭下划线
- node.setParent(this._labelLayout);
- return node;
- }
- // 创建链接文字
- private createLink(str: string, clickCb: () => void) {
- const node = instantiate(this._labelTemplate!);
- node.active = true;
- const label = node.getComponent(Label)!;
- label.string = str;
- label.isBold = true;
- label.color = new Color(0xff, 0xd2, 0x00);
- label.isUnderline = true;
- addBtnClick(node, clickCb, this);
- node.setParent(this._labelLayout);
- return node;
- }
- private onClickTerm() {
- console.log("打开用户协议");
- }
- private onClickPrivacy() {
- console.log("打开隐私政策");
- }
- protected onOpen(_params: unknown): void | Promise<void> {
- /// 播放完打开动画后 再显示h5 google login btn dom
- this._googleWebBtn?.setActive(true);
- }
- protected onClose(_reason: UICloseReason): void | Promise<void> {
- this._googleWebBtn?.setActive(false);
- }
- protected onDestroy(): void {
- AppKernel.events.off('open:ui-view', this.handleSubViewOpen, this);
- AppKernel.events.off('close:ui-view', this.handleSubViewClose, this);
- this._googleWebBtn?.clear();
- super.onDestroy();
- }
- private async onBtnGuestClick() {
- AppKernel.ui.loading(true);
- await AppKernel.services.loginService.guestLogin();
- AppKernel.ui.loading(false);
- }
- private async onBtnFBClick() {
- AppKernel.ui.loading(true);
- await AppKernel.services.loginService.fbLogin();
- AppKernel.ui.loading(false);
- }
- private async onGoogleWebLogin(res) {
- AppKernel.ui.loading(true);
- await AppKernel.services.loginService.googleLogin(res);
- AppKernel.ui.loading(false);
- }
- private async onBtnGoogleClick() {
- AppKernel.ui.loading(true);
- await AppKernel.services.loginService.googleLogin();
- AppKernel.ui.loading(false);
- }
- private onBtnRegisterClick() {
- // this._googleWebBtn?.setActive(false);
- AppKernel.ui.open(UIViewID.Register);
- }
- private async onBtnLoginClick() {
- const account = this.loginAccount.string;
- const password = this.loginPassword.string;
- const res = await AppKernel.services.loginService.loginAccount(account, password);
- if (res) await AppKernel.appLobby.onLoginSuccess();
- }
- private onBtnResetPsdClick() {
- // this._googleWebBtn?.setActive(false);
- AppKernel.ui.open(UIViewID.ResetPsd);
- }
- private async onBtnSupportClick() {
- // this._googleWebBtn?.setActive(false);
- AppKernel.ui.open(UIViewID.Support);
- }
- private onTogglePsdVisible() {
- const eye_open = this.psd_visible_control.getChildByName("open");
- const eye_close = this.psd_visible_control.getChildByName("close");
- eye_close.active = !eye_close.active;
- eye_open.active = !eye_open.active;
- if (eye_open.active) {
- this.loginPassword.inputFlag = EditBox.InputFlag.DEFAULT;
- } else {
- this.loginPassword.inputFlag = EditBox.InputFlag.PASSWORD;
- }
- }
- private onTogglePolicyAgree() {
- const check_bg = this.policy_container.getChildByName("check_bg") ?? null;
- const check = check_bg.getChildByName("check") ?? null;
- check.active = !check.active;
- this._policyAgree = check.active;
- }
- getGoogleLoginBtnDom() {
- if (!sys.isBrowser) {
- return null;
- }
- const btnDom = document.getElementById('google-login-button') as HTMLElement | null;
- return btnDom;
- }
- private handleSubViewOpen(payload: UIViewID) {
- if (this.listenViews.includes(payload)) {
- this._googleWebBtn?.setActive(false);
- console.log("LoginView handleSubUIOpen", payload);
- }
- }
- private handleSubViewClose(payload: UIViewID) {
- if (this.listenViews.includes(payload)) {
- this._googleWebBtn?.setActive(true);
- console.log("LoginView handleSubUIClose", payload);
- }
- }
- }
|