All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 46s
155 lines
4.7 KiB
TypeScript
155 lines
4.7 KiB
TypeScript
import { _decorator, Component, Label, Node, Sprite, tween, UITransform, Vec3, view } from 'cc';
|
|
import { GameDataManager } from 'db://assets/Loading/scripts/manager/GameDataManager';
|
|
import { SLOT_BAR_EVENT, SYS_GIFT } from './Define';
|
|
import { LocalizedSprite } from 'db://assets/Loading/scripts/i18n/LocalizedSprite';
|
|
const { ccclass, property } = _decorator;
|
|
|
|
@ccclass('SysGift')
|
|
export class SysGift extends Component {
|
|
/**赠送确认*/
|
|
@property(Node)
|
|
confirm: Node = null;
|
|
/**结算确认*/
|
|
@property(Node)
|
|
settle: Node = null;
|
|
/**顶部展示*/
|
|
@property(Node)
|
|
info: Node = null;
|
|
|
|
/**免费旋转期间,投注固定*/
|
|
fixedBet: -1;
|
|
|
|
totalWin: -1;
|
|
/**info 中数字最大显示长度*/
|
|
fixWidth_info: number = 250;
|
|
/**settle 中数字最大显示长度*/
|
|
fixWidth_settle: number = 250;
|
|
|
|
|
|
onLoad(): void {
|
|
this.hideAll();
|
|
|
|
let sp_win = this.info.getChildByName("sysgift_win");
|
|
let scale = 116 / sp_win.getComponent(Sprite).spriteFrame.width;
|
|
sp_win.setScale(scale, scale, scale);
|
|
}
|
|
|
|
hideAll() {
|
|
this.confirm.active = false
|
|
this.settle.active = false
|
|
this.info.active = false
|
|
this.node.active = true
|
|
}
|
|
|
|
/**确认领取free spin, 下注额固定其他控件半透明且不可交互*/
|
|
onClickContinue() {
|
|
|
|
this.hide(this.confirm)
|
|
let frb = GameDataManager.instance.frb
|
|
if (!frb) return;
|
|
|
|
let txt_spin_num = this.info.getChildByName("count")
|
|
txt_spin_num.getComponent(Label).string = frb.Ongoing.Frn.toLocaleString()
|
|
|
|
// let sp_win = this.info.getChildByName("sysgift_win")
|
|
let txt_win = this.info.getChildByName("win")
|
|
|
|
let num = Math.round(frb.Ongoing.Fra * 100 + 1e-6) / 100;
|
|
txt_win.getComponent(Label).string = num.toLocaleString('en-US', {
|
|
minimumFractionDigits: 2,
|
|
maximumFractionDigits: 2
|
|
})
|
|
|
|
this.info.active = true;
|
|
|
|
this.node.emit(SYS_GIFT.CLICK_CONTINUE, this.fixedBet);
|
|
}
|
|
|
|
onClickConfirm() {
|
|
GameDataManager.instance.frb.Finished = null;
|
|
this.hide(this.settle);
|
|
this.node.emit(SYS_GIFT.SETTLE_CONTINUE);
|
|
}
|
|
|
|
/** 打开confirm的弹窗 */
|
|
showOngingPopup() {
|
|
if (this.confirm.active) return;
|
|
let frb = GameDataManager.instance.frb;
|
|
if (!frb) return;
|
|
this.fixedBet = frb.Ongoing.Bet
|
|
if (frb.Ongoing.Popup) {
|
|
this.confirm.getChildByName("count").getComponent(Label).string = frb.Ongoing.Frn.toLocaleString()
|
|
this.show(this.confirm);
|
|
}
|
|
}
|
|
|
|
|
|
/** 打开settle的win */
|
|
showSysFreeWinSettle() {
|
|
let frb = GameDataManager.instance.frb;
|
|
if (!frb) return;
|
|
if (frb.Finished?.Popup) {
|
|
let win = this.settle.getChildByName('win');
|
|
let num = Math.round(frb.Finished.Fra * 100 + 1e-6) / 100;
|
|
win.getComponent(Label).string = num.toLocaleString('en-US', {
|
|
minimumFractionDigits: 2,
|
|
maximumFractionDigits: 2
|
|
})
|
|
this.show(this.settle);
|
|
this.info.active = false;
|
|
}
|
|
}
|
|
|
|
/** 设置info的count */
|
|
handleSysInfoFreeCount(countNum: number) {
|
|
let frb = GameDataManager.instance.frb;
|
|
if (!frb) return;
|
|
let count = this.info.getChildByName('count');
|
|
|
|
if (frb.Finished == null) {
|
|
count.getComponent(Label).string = (countNum).toLocaleString();
|
|
this.show(count);
|
|
} else {
|
|
count.getComponent(Label).string = (countNum).toLocaleString();
|
|
this.show(count);
|
|
}
|
|
}
|
|
|
|
|
|
/** 设置info的win */
|
|
handleSysInfoFreeWin() {
|
|
let frb = GameDataManager.instance.frb;
|
|
if (!frb) return;
|
|
if (frb.Finished == null && frb.Ongoing?.Popup == false) {
|
|
let win = this.info.getChildByName("win")
|
|
let num = Math.round(frb.Ongoing.Fra * 100 + 1e-6) / 100
|
|
win.getComponent(Label).string = num.toLocaleString('en-US', {
|
|
minimumFractionDigits: 2,
|
|
maximumFractionDigits: 2
|
|
})
|
|
this.show(win);
|
|
this.info.active = true;
|
|
}
|
|
}
|
|
|
|
show(node: Node, scale: number = 1) {
|
|
node.active = true
|
|
tween(node).to(0.1, { scale: new Vec3(0.8, 0.8, 1) })
|
|
.to(0.2, { scale: new Vec3(1.1, 1.1, 1) })
|
|
.to(0.1, { scale: new Vec3(scale, scale, scale) })
|
|
.start()
|
|
}
|
|
|
|
hide(node) {
|
|
tween(node).to(0.1, { scale: new Vec3(1.1, 1.1, 1) })
|
|
.to(0.2, { scale: new Vec3(0.8, 0.8, 1) })
|
|
.call(() => {
|
|
node.active = false
|
|
node.scale = new Vec3(1, 1, 1)
|
|
})
|
|
.start()
|
|
}
|
|
|
|
}
|
|
|