Compare commits
23 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f113618abe | |||
| a3872e1a18 | |||
| d2d2540de0 | |||
| 97b836b9df | |||
| 1f7dfcfffa | |||
| d099caf374 | |||
| deaaf21e3c | |||
| 10562f980c | |||
| ef4560fe8c | |||
| c62d2a1522 | |||
| 09f7990e6d | |||
| 897f305ae3 | |||
| d6d9db5f65 | |||
| 51d05d5209 | |||
| d5719f29f5 | |||
| 05c98897e8 | |||
| 548307cc79 | |||
| 58dc911529 | |||
| d9d6a9bbe4 | |||
| 90d873c4cd | |||
| c035ac8c54 | |||
| 08bcd8faf1 | |||
| 7915edd14c |
@ -19,7 +19,9 @@ jobs:
|
||||
echo "💡 The ${{ github.repository }} repository has been cloned to the runner."
|
||||
- name: npm i
|
||||
run: |
|
||||
echo 'npm i'
|
||||
npm i
|
||||
echo "✅ npm i done"
|
||||
- name: build
|
||||
run: |
|
||||
echo 'build'
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -29,7 +29,9 @@ import { AutoSpinPanel } from "./game/AutoSpinPanel";
|
||||
import { NodePoolManager } from "../../Loading/scripts/manager/NodePoolManager";
|
||||
import { webView } from "./game/WebView";
|
||||
import {
|
||||
callGameBalanceApi,
|
||||
cash2gold,
|
||||
getGameId,
|
||||
getHistoryUrl,
|
||||
getOddsUrl,
|
||||
getSupportUrl,
|
||||
@ -118,7 +120,7 @@ export class SlotBar extends Component {
|
||||
private btnPositions: Map<string, Vec3> = new Map();
|
||||
private isAnimating: boolean = false;
|
||||
private readonly DURATION = 0.1;
|
||||
private readonly OFFSET_Y = -200;
|
||||
private readonly OFFSET_Y = -300;
|
||||
|
||||
private hasClickSpin: boolean = false;
|
||||
private hasClickManualStop: boolean = false;
|
||||
@ -171,10 +173,6 @@ export class SlotBar extends Component {
|
||||
});
|
||||
}
|
||||
|
||||
protected onDestroy(): void {
|
||||
this.node.targetOff(this);
|
||||
}
|
||||
|
||||
// spinBtn有两个动画,idle状态循环旋转一圈,spin状态速度加快
|
||||
|
||||
setGameInfo(gameInfo: any) {
|
||||
@ -273,19 +271,14 @@ export class SlotBar extends Component {
|
||||
});
|
||||
}
|
||||
|
||||
allowClickManualStop(bl: boolean) {
|
||||
this.hasClickSpin = bl;
|
||||
this.manualStopNode.active = bl
|
||||
}
|
||||
|
||||
notAllowClickManualStop(bl: boolean) {
|
||||
this.hasClickManualStop = bl;
|
||||
}
|
||||
|
||||
onBtnSpin() {
|
||||
// 第一次点击 旋转
|
||||
if (!this.hasClickSpin && !this.hasClickManualStop) {
|
||||
AudioManager.instance.playSFX("Spin_Button_Click");
|
||||
this.hasClickSpin = true;
|
||||
this.manualStopNode.active = true
|
||||
this.node.emit(SLOT_BAR_EVENT.ON_SPIN_CLICK);
|
||||
this.spinAni.startSpin();
|
||||
|
||||
@ -304,8 +297,8 @@ export class SlotBar extends Component {
|
||||
// 第一次点击 旋转
|
||||
if (!this.hasClickSpin && !this.hasClickManualStop) {
|
||||
// AudioManager.instance.playSFX('Spin_Button_Click');
|
||||
|
||||
|
||||
this.hasClickSpin = true;
|
||||
this.manualStopNode.active = true
|
||||
|
||||
this.setBtnEnable(this.subBtn, false);
|
||||
this.setBtnEnable(this.addBtn, false);
|
||||
@ -322,7 +315,8 @@ export class SlotBar extends Component {
|
||||
onBtnTestSpin(event, args) {
|
||||
// 第一次点击 旋转
|
||||
if (!this.hasClickSpin && !this.hasClickManualStop) {
|
||||
// this.hasClickSpin = true;
|
||||
this.hasClickSpin = true;
|
||||
this.manualStopNode.active = true
|
||||
this.node.emit(SLOT_BAR_EVENT.ON_TEST_SPIN_CLICK, args);
|
||||
|
||||
this.setBtnEnable(this.subBtn, false);
|
||||
@ -343,50 +337,51 @@ export class SlotBar extends Component {
|
||||
}
|
||||
|
||||
manualStop() {
|
||||
this.notAllowClickManualStop(true)
|
||||
this.hasClickManualStop = true;
|
||||
this.spinAni.stopSpin();
|
||||
this.setBtnEnable(this.spinBtn, false);
|
||||
}
|
||||
|
||||
async showPopup(
|
||||
name: string,
|
||||
pre: Prefab,
|
||||
callBack: (prefab: Node) => void
|
||||
) {
|
||||
let prefab = await NodePoolManager.instance.getNodeFromPoolStatic(name, pre);
|
||||
if (!prefab) {
|
||||
console.error(`UIManager 加载${name} prefab失败: ${path}`);
|
||||
return;
|
||||
}
|
||||
|
||||
this.MaskNode.addChild(prefab);
|
||||
showFromBottom(prefab)
|
||||
|
||||
let main = prefab.getChildByName('main');
|
||||
if (!main) {
|
||||
// console.error(`UIManager ${name}prefab 没有main节点,命名不规范: ${path}`);
|
||||
return;
|
||||
}
|
||||
if (callBack) callBack(prefab);
|
||||
}
|
||||
|
||||
|
||||
// 打开规则界面
|
||||
openRules() {
|
||||
if (!this.tweenIsEnd) return;
|
||||
|
||||
// AudioManager.instance.playSFX('Common_Button_Click');
|
||||
// let param = "rule";
|
||||
// let view = NodePoolManager.instance.getNodeFromPoolStatic(param, this.webViewPre);
|
||||
// this.MaskNode.addChild(view);
|
||||
// view.getComponent(webView).open(param, this.curBet);
|
||||
|
||||
let rules = instantiate(this.pfb_rules);
|
||||
this.MaskNode.addChild(rules);
|
||||
showFromBottom(rules);
|
||||
this.showPopup('rules', this.pfb_rules)
|
||||
}
|
||||
|
||||
// 打开赔率界面
|
||||
openPaytable() {
|
||||
if (!this.tweenIsEnd) return;
|
||||
// let url = getOddsUrl();
|
||||
// window.open(url, '_blank');
|
||||
// return;
|
||||
|
||||
// AudioManager.instance.playSFX('Common_Button_Click');
|
||||
// let param = "paytable";
|
||||
// let view = NodePoolManager.instance.getNodeFromPoolStatic(param, this.webViewPre);
|
||||
// this.MaskNode.addChild(view);
|
||||
// view.getComponent(webView).open(param, this.curBet);
|
||||
|
||||
let paytable = instantiate(this.pfb_paytable);
|
||||
this.MaskNode.addChild(paytable);
|
||||
showFromBottom(paytable);
|
||||
this.showPopup('paytable', this.pfb_paytable)
|
||||
}
|
||||
|
||||
openHistory() {
|
||||
if (!this.tweenIsEnd) return;
|
||||
|
||||
let history = instantiate(this.pfb_history);
|
||||
this.MaskNode.addChild(history);
|
||||
showFromBottom(history);
|
||||
this.showPopup('history', this.pfb_history)
|
||||
}
|
||||
|
||||
isON = true;
|
||||
@ -428,6 +423,39 @@ export class SlotBar extends Component {
|
||||
this.setBet(this.betGrade[this.betIndex]);
|
||||
}
|
||||
|
||||
private isGetBalance: boolean = false;
|
||||
async onClickBalance(): Promise<number | null> {
|
||||
if (this.isGetBalance) return
|
||||
this.isGetBalance = true;
|
||||
try {
|
||||
let balacneData = await this.refreshBalanceFromServer();
|
||||
this.setBalance(balacneData)
|
||||
return balacneData;
|
||||
} catch (err) {
|
||||
console.log('获取余额失败')
|
||||
return null;
|
||||
} finally {
|
||||
this.scheduleOnce(() => {
|
||||
this.isGetBalance = false;
|
||||
}, 0.5)
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
async onConfirmErr2(): Promise<number | null> {
|
||||
try {
|
||||
let balacneData = await this.refreshBalanceFromServer();
|
||||
this.setBalance(balacneData)
|
||||
return balacneData;
|
||||
} catch (err) {
|
||||
console.log('获取余额失败')
|
||||
return null;
|
||||
} finally {
|
||||
this.isGetBalance = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private currentTipTween: Tween<Node> = null;
|
||||
private hideTimer: number = null;
|
||||
showTipSmall(str: string, openTurbo?: boolean) {
|
||||
@ -631,7 +659,7 @@ export class SlotBar extends Component {
|
||||
this.setBtnVisible(this.spinBtn, true);
|
||||
this.setBtnVisible(this.stopAutoBtn, false);
|
||||
this.setBtnEnable(this.spinBtn, false);
|
||||
this.slotGame.showFeatureBuy(false)
|
||||
this.slotGame.showFeatureBuy(this.getBet() * this.gameInfo.BuyMul > this.gameInfo.MaxBuyBet)
|
||||
|
||||
}
|
||||
|
||||
@ -646,9 +674,9 @@ export class SlotBar extends Component {
|
||||
}
|
||||
|
||||
resetAllState() {
|
||||
this.allowClickManualStop(false)
|
||||
this.notAllowClickManualStop(false)
|
||||
|
||||
this.hasClickSpin = false;
|
||||
this.manualStopNode.active = false
|
||||
this.hasClickManualStop = false;
|
||||
|
||||
this.isAuto = false;
|
||||
this.setBtnVisible(this.spinBtn, true);
|
||||
@ -778,6 +806,7 @@ export class SlotBar extends Component {
|
||||
protected onDestroy(): void {
|
||||
this.autoBtn.off(Node.EventType.TOUCH_START, this.autoAin, this);
|
||||
this.autoBtn.off(Node.EventType.MOUSE_ENTER, this.autoAin, this);
|
||||
this.node.targetOff(this);
|
||||
|
||||
this.turboBtn.off(Node.EventType.TOUCH_START, this.fastAni, this);
|
||||
this.turboBtn.off(Node.EventType.MOUSE_ENTER, this.fastAni, this);
|
||||
@ -806,4 +835,28 @@ export class SlotBar extends Component {
|
||||
this.setBet(this.betGrade[this.betIndex], true);
|
||||
}
|
||||
}
|
||||
|
||||
// private _refreshingBalance: boolean = false;
|
||||
async refreshBalanceFromServer(): Promise<number | null> {
|
||||
// if (this._refreshingBalance) return this.getBalance();
|
||||
// this._refreshingBalance = true;
|
||||
try {
|
||||
const res = await callGameBalanceApi({});
|
||||
const balance = Number(res.Balance);
|
||||
if (!Number.isFinite(balance)) {
|
||||
console.warn("[SlotBar] invalid balance response:", res);
|
||||
return this.getBalance();
|
||||
}
|
||||
this.setBalance(balance);
|
||||
return balance;
|
||||
} catch (err) {
|
||||
console.error("[SlotBar] refresh balance failed:", err);
|
||||
return this.getBalance();
|
||||
} finally {
|
||||
// this.scheduleOnce(() => {
|
||||
// this._refreshingBalance = false;
|
||||
// }, 1)
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -205,7 +205,7 @@ export class SlotGame extends Component {
|
||||
this.rollerManager.node.off(ROLLER_COMBINE_EVENT.ALL_ROLLER_ICONS_CREATED, this.onAllRollerIconsCreated, this);
|
||||
this.rollerManager.node.off(ROLLER_COMBINE_EVENT.ALL_ROLLER_ICONS_FALLEN, this.onAllRollerIconsFallen, this);
|
||||
|
||||
IconEventBus.on('ICON_CLICKED', this.onIconClicked, this);
|
||||
IconEventBus.off('ICON_CLICKED', this.onIconClicked, this);
|
||||
}
|
||||
|
||||
private currentBgState: boolean = true; // 记录当前背景状态,默认为普通模式(false)
|
||||
@ -875,8 +875,8 @@ export class SlotGame extends Component {
|
||||
}
|
||||
|
||||
|
||||
showFeatureBuy(isShow: boolean) {
|
||||
this.featureBuyNode.active = !isShow;
|
||||
showFeatureBuy(isHide: boolean) {
|
||||
this.featureBuyNode.active = !isHide;
|
||||
}
|
||||
|
||||
setFeatureBuyInteractable(isInteractable: boolean) {
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { _decorator, Component, Prefab } from "cc";
|
||||
import { _decorator, Component, Node, Prefab } from "cc";
|
||||
import {
|
||||
FREE_SPIN_ROLLER_RULE,
|
||||
GameInfo,
|
||||
@ -12,7 +12,7 @@ import { SlotBar } from "./SlotBar";
|
||||
import { SlotGame } from "./SlotGame";
|
||||
import { BigWinUI } from "./game/BigWinUI";
|
||||
import { GameDataManager } from "../../Loading/scripts/manager/GameDataManager";
|
||||
import { callGameApi, getFromUrl } from "../../Loading/scripts/comm";
|
||||
import { callGameApi, callGameBalanceApi, getFromUrl, getGameId } from "../../Loading/scripts/comm";
|
||||
import { TipPanel } from "./game/TipPanel";
|
||||
import { I18nManager } from "../../Loading/scripts/manager/I18nManager";
|
||||
import { TotalWin } from "./game/TotalWin";
|
||||
@ -82,12 +82,17 @@ export class SlotScene extends Component {
|
||||
@property(SlotRanking)
|
||||
slotRanking: SlotRanking = null;
|
||||
|
||||
@property(Node)
|
||||
gray: Node = null
|
||||
|
||||
// 游戏数据
|
||||
private gameInfo: GameInfo = null;
|
||||
private spinInfo: any = null;
|
||||
private lastSpinInfo: any = null;
|
||||
private spinData: any = null;
|
||||
private isReceiveMsg: boolean = false;
|
||||
private isErr2: boolean = false;
|
||||
|
||||
|
||||
private objectId: string[] = [];
|
||||
|
||||
@ -125,6 +130,7 @@ export class SlotScene extends Component {
|
||||
// this.FreeSpinEnter.show(8)
|
||||
// this.FreeSpinAdd.show(5)
|
||||
// this.BigWinUI.show(800000, WIN_TYPE.SUPER_MEGA_WIN, 10000)
|
||||
|
||||
}
|
||||
|
||||
private async init() {
|
||||
@ -283,19 +289,30 @@ export class SlotScene extends Component {
|
||||
isFreeSpin: boolean = false,
|
||||
isFeatureBuy: boolean = false
|
||||
) {
|
||||
|
||||
this.gameState.isOnReconnect = false;
|
||||
this.isReceiveMsg = false;
|
||||
this.isErr = false;
|
||||
this.slotGame.spin(this.gameState.isInFreeSpin);
|
||||
this.gameState.isOneRoundEnd = false;
|
||||
this.slotGame.changeBg(this.gameState.isInFreeSpin);
|
||||
this.slotGame.hideIconMsg();
|
||||
|
||||
if (!isFreeSpin) {
|
||||
this.slotBar.setWin(0);
|
||||
}
|
||||
let curBalanceData = await this.slotBar.refreshBalanceFromServer()
|
||||
if (!curBalanceData) {
|
||||
curBalanceData = this.slotBar.getBalance()
|
||||
}
|
||||
if (curBalanceData < (isFeatureBuy ? this.slotBar.getBet() * this.gameInfo.BuyMul : this.slotBar.getBet()) && !isFreeSpin && !GameDataManager.instance.frb.Ongoing) {
|
||||
//余额不足不经过服务器,在客户端拦截
|
||||
this.showErrorTip(2, () => { this.slotBar.onConfirmErr2() });
|
||||
this.handleErrSpin(true);
|
||||
this.isErr2 = true;
|
||||
return
|
||||
}
|
||||
try {
|
||||
this.gameState.isOnReconnect = false;
|
||||
this.isReceiveMsg = false;
|
||||
|
||||
this.isErr = false
|
||||
this.slotGame.spin(this.gameState.isInFreeSpin);
|
||||
this.gameState.isOneRoundEnd = false;
|
||||
this.slotGame.changeBg(this.gameState.isInFreeSpin);
|
||||
this.slotGame.hideIconMsg();
|
||||
|
||||
if (!isFreeSpin) {
|
||||
this.slotBar.setWin(0);
|
||||
}
|
||||
// 如果有frb就不会扣除金额
|
||||
let frb = GameDataManager.instance.frb;
|
||||
if (frb && frb.Ongoing != null) {
|
||||
@ -303,9 +320,14 @@ export class SlotScene extends Component {
|
||||
} else {
|
||||
if (!isFreeSpin) {
|
||||
if (!isFeatureBuy) {
|
||||
this.slotBar.setBalance(this.slotBar.getBalance() - this.slotBar.getBet());
|
||||
this.slotBar.setBalance(
|
||||
this.slotBar.getBalance() - this.slotBar.getBet()
|
||||
);
|
||||
} else {
|
||||
this.slotBar.setBalance(this.slotBar.getBalance() - (this.slotBar.getBet() * this.gameInfo.BuyMul));
|
||||
this.slotBar.setBalance(
|
||||
this.slotBar.getBalance() -
|
||||
this.slotBar.getBet() * this.gameInfo.BuyMul
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -323,8 +345,7 @@ export class SlotScene extends Component {
|
||||
}
|
||||
if (!this.gameState.isDebug) {
|
||||
this.spinInfo = await callGameApi("spin", msg);
|
||||
this.slotBar.allowClickManualStop(true)
|
||||
this.slotBar.notAllowClickManualStop(false)
|
||||
|
||||
if (this.spinInfo.Frb.Ongoing) {
|
||||
if (!isFreeSpin) {
|
||||
let count = this.spinInfo.Frb.Ongoing.Frn;
|
||||
@ -360,7 +381,7 @@ export class SlotScene extends Component {
|
||||
this.isReceiveMsg = true;
|
||||
await this.handleSpinResult();
|
||||
} catch (error) {
|
||||
this.isErr = true
|
||||
this.isErr = true;
|
||||
let errCode = parseInt(error.message.split("#")[0]);
|
||||
if (isNaN(errCode)) {
|
||||
this.showErrorTip(4);
|
||||
@ -386,18 +407,19 @@ export class SlotScene extends Component {
|
||||
if (!this.isReceiveMsg) return;
|
||||
|
||||
// 免费游戏不能手动停止
|
||||
// if (this.gameState.isInFreeSpin) {
|
||||
// return;
|
||||
// }
|
||||
if (this.gameState.isInFreeSpin) {
|
||||
return;
|
||||
}
|
||||
|
||||
// 滚轮没有开始旋转的时候不能停止
|
||||
if (!this.slotGame.isScroll()) return;
|
||||
|
||||
this.slotBar.manualStop();
|
||||
this.slotGame.manualStop();
|
||||
|
||||
}
|
||||
|
||||
private handleErrSpin() {
|
||||
private handleErrSpin(isErr2 = false) {
|
||||
this.spinInfo = this.lastSpinInfo;
|
||||
this.spinData = this.spinInfo.Data;
|
||||
this.slotGame.setRollerIconRule(
|
||||
@ -406,8 +428,9 @@ export class SlotScene extends Component {
|
||||
this.gameState.isAutoSpin = false;
|
||||
this.spinData.AllScore = 0;
|
||||
this.slotGame.stopScroll(this.spinData, false, null);
|
||||
this.slotGame.manualStop();
|
||||
this.slotBar.setBalance(this.spinInfo.Balance);
|
||||
// this.slotGame.manualStop();
|
||||
this.slotBar.setBalance(isErr2 ? this.slotBar.getBalance() : this.spinInfo.Balance);
|
||||
this.slotBar.closeAutoSpin();
|
||||
}
|
||||
|
||||
private async handleSpinResult() {
|
||||
@ -724,7 +747,14 @@ export class SlotScene extends Component {
|
||||
}
|
||||
|
||||
private async normalStop(isReconnect: boolean = false) {
|
||||
this.slotBar.setBalance(this.spinData.Balance);
|
||||
|
||||
if (this.isErr2) {
|
||||
this.isErr2 = false;
|
||||
this.slotBar.setBalance(this.slotBar.getBalance());
|
||||
} else {
|
||||
this.slotBar.setBalance(this.spinData.Balance);
|
||||
|
||||
}
|
||||
let winType = this.slotGame.checkWinType(this.spinData.AllScore);
|
||||
|
||||
await this.handleWinResult(winType, isReconnect, false, () => {
|
||||
@ -942,7 +972,7 @@ export class SlotScene extends Component {
|
||||
this.TipPanel.showTip(
|
||||
title,
|
||||
tip,
|
||||
null,
|
||||
callback,
|
||||
null,
|
||||
I18nManager.instance.t("AID_ERROR_OK_BUTTON"),
|
||||
null,
|
||||
@ -1002,9 +1032,10 @@ export class SlotScene extends Component {
|
||||
null,
|
||||
() => {
|
||||
let fromUrl = getFromUrl();
|
||||
if (fromUrl.length == 0) {
|
||||
if (!fromUrl || fromUrl == "") {
|
||||
window.close();
|
||||
} else {
|
||||
this.gray.active = true
|
||||
window.location.replace(fromUrl);
|
||||
}
|
||||
},
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import { _decorator, Button, Color, Component, EventHandler, EventMouse, instantiate, isValid, JsonAsset, Label, math, Node, Prefab, ScrollView, sp, tween, UITransform, Vec3 } from 'cc';
|
||||
import { _decorator, Button, Color, Component, EventHandler, EventMouse, instantiate, isValid, JsonAsset, Label, math, Node, Prefab, ScrollView, sp, tween, UIOpacity, UITransform, Vec3 } from 'cc';
|
||||
import { getCsymbol, getHistory, getHistoryDetails, getLanguage } from '../../../Loading/scripts/comm';
|
||||
import { fixNum, getTimezoneOffsetString, getTranslate, hideAllChildren, hideToBottom, isBrahmic, showAllChildren, updateLang } from './Tools';
|
||||
const { ccclass, property } = _decorator;
|
||||
@ -405,6 +405,7 @@ export class History extends Component {
|
||||
// console.log("clickItem, roundId = ", roundId)
|
||||
|
||||
const history_detail = instantiate(this.history_detail)
|
||||
history_detail.getComponent(UIOpacity).opacity = 0
|
||||
this.node_detail.addChild(history_detail)
|
||||
let data = await getHistoryDetails({
|
||||
GameId: "rp_11001",
|
||||
@ -415,6 +416,8 @@ export class History extends Component {
|
||||
|
||||
const self = this
|
||||
history_detail.position = new Vec3(1080, 0)
|
||||
history_detail.getComponent(UIOpacity).opacity = 255
|
||||
|
||||
tween(history_detail).to(0.2, { position: new Vec3(0, 0) })
|
||||
.call(() => {
|
||||
self.scheduleOnce(() => { comp.entryFinish() })
|
||||
|
||||
@ -197,7 +197,7 @@ export class HistoryDetail extends Component {
|
||||
node.active = true
|
||||
|
||||
let startVec = new Vec3(0, 3000)
|
||||
let endVec = new Vec3(0, 800)
|
||||
let endVec = new Vec3(0, this.list_detail.node.getPosition().y)
|
||||
|
||||
node.position = startVec
|
||||
tween(node).to(0.2, { position: endVec }).call(() => {
|
||||
@ -559,6 +559,7 @@ export class HistoryDetail extends Component {
|
||||
if (idx == this.data.panDetails.length - 1) {
|
||||
// console.log("已全部生成完")
|
||||
this.hideLoading()
|
||||
this.item_detail.removeFromParent()
|
||||
this.scrollControl.jumpToPage(0)
|
||||
}
|
||||
|
||||
@ -647,15 +648,16 @@ export class HistoryDetail extends Component {
|
||||
showLoading() {
|
||||
this.loading.active = true
|
||||
let sk = this.loading.getComponent(sp.Skeleton)
|
||||
sk.paused = false
|
||||
sk.loop = true
|
||||
// sk.paused = false
|
||||
// sk.loop = true
|
||||
sk.setAnimation(0, 'loadingLoop')
|
||||
}
|
||||
|
||||
hideLoading() {
|
||||
let sk = this.loading.getComponent(sp.Skeleton)
|
||||
sk.paused = true
|
||||
sk.loop = false
|
||||
|
||||
// sk.paused = true
|
||||
// sk.loop = false
|
||||
sk.clearAnimations()
|
||||
this.loading.active = false
|
||||
|
||||
}
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import { _decorator, Component, EventMouse, JsonAsset, Layout, math, Node, ScrollView, UITransform } from 'cc';
|
||||
import { _decorator, Component, EventMouse, JsonAsset, Layout, math, Node, ScrollView, UITransform, Widget } from 'cc';
|
||||
import { hideToBottom, isBrahmic, updateLang, wrapTextBySpace } from './Tools';
|
||||
import { getLanguage } from 'db://assets/Loading/scripts/comm';
|
||||
import { NodePoolManager } from 'db://assets/Loading/scripts/manager/NodePoolManager';
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
@ccclass('Paytable')
|
||||
@ -18,6 +19,7 @@ export class Paytable extends Component {
|
||||
this.dict = this.langJson.json[getLanguage()] ?? this.langJson.json["en"];
|
||||
|
||||
this.scrollView = this.node.getChildByName("ScrollView").getComponent(ScrollView)
|
||||
this.scrollView.node.getChildByName('view').getComponent(Widget).updateAlignment()
|
||||
|
||||
this.scrollView.node.on('scrolling', this.onScrolling, this);
|
||||
this.node.on(Node.EventType.MOUSE_WHEEL, this.onMouseWheel, this);
|
||||
@ -43,7 +45,7 @@ export class Paytable extends Component {
|
||||
}
|
||||
|
||||
clickClosePaytable() {
|
||||
const destroyFunc = () => { this.node.destroy() }
|
||||
const destroyFunc = () => { NodePoolManager.instance.putNodeToPool('paytable', this.node) }
|
||||
hideToBottom(this.node, destroyFunc)
|
||||
}
|
||||
|
||||
|
||||
@ -267,12 +267,18 @@ export class Roller extends BaseRoller {
|
||||
* @param data 停止时的图标数据
|
||||
*/
|
||||
async manualStopScroll(data: number[]) {
|
||||
this.resetInfo();
|
||||
if (this._info.isManualStop ||
|
||||
this._info.state === ROLLER_STATE.STOP) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
this._info.resetLxInfo();
|
||||
this._stopData = data;
|
||||
this._info.isManualStop = true;
|
||||
Tween.stopAllByTarget(this._info.speedNode);
|
||||
|
||||
// 回收所有动态图标
|
||||
// 直接回收所有动态图标
|
||||
while (this._info.icons.length > 0) {
|
||||
let icon = this._info.icons.pop();
|
||||
this.iconFactory.recycleIcon(icon);
|
||||
@ -287,8 +293,14 @@ export class Roller extends BaseRoller {
|
||||
this.iconFactory.recycleIcon(icon);
|
||||
}
|
||||
}
|
||||
this._allIcons.clear();
|
||||
this._posToIconKey.clear();
|
||||
|
||||
this.createInitIcons(data);
|
||||
// 为所有创建的图标播放动画
|
||||
for (let icon of this._allIcons.values()) {
|
||||
icon.getComponent(Icon).playSpawnAni();
|
||||
}
|
||||
this.changeState(ROLLER_STATE.STOP);
|
||||
}
|
||||
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
import { _decorator, Component, EventMouse, JsonAsset, Label, Layout, math, Node, ScrollView, UITransform } from 'cc';
|
||||
import { _decorator, Component, EventMouse, JsonAsset, Label, Layout, math, Node, ScrollView, UITransform, Widget } from 'cc';
|
||||
import { getAllRichTexts, hideToBottom, isBrahmic, updateLang, wrapTextBySpace } from './Tools';
|
||||
import { getCsymbol, getLanguage } from 'db://assets/Loading/scripts/comm';
|
||||
import { NodePoolManager } from 'db://assets/Loading/scripts/manager/NodePoolManager';
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
@ccclass('Rules')
|
||||
@ -16,7 +17,7 @@ export class Rules extends Component {
|
||||
protected onLoad(): void {
|
||||
this.dict = this.langJson.json[getLanguage()] ?? this.langJson.json["en"];
|
||||
this.scrollView = this.node.getChildByName("ScrollView").getComponent(ScrollView)
|
||||
|
||||
this.scrollView.node.getChildByName('view').getComponent(Widget).updateAlignment()
|
||||
this.scrollView.node.on('scrolling', this.onScrolling, this);
|
||||
this.node.on(Node.EventType.MOUSE_WHEEL, this.onMouseWheel, this);
|
||||
}
|
||||
@ -49,9 +50,9 @@ export class Rules extends Component {
|
||||
Label_1_3.string = str
|
||||
}
|
||||
|
||||
|
||||
|
||||
clickCloseRules() {
|
||||
const destroyFunc = () => { this.node.destroy() }
|
||||
const destroyFunc = () => { NodePoolManager.instance.putNodeToPool('rules', this.node) }
|
||||
hideToBottom(this.node, destroyFunc)
|
||||
}
|
||||
|
||||
|
||||
@ -379,7 +379,7 @@ export function showFromBottom(node: Node) {
|
||||
height = 1920;
|
||||
}
|
||||
|
||||
node.position = new Vec3(0, -height / 2)
|
||||
node.position = new Vec3(0, -height)
|
||||
tween(node).to(0.15, { position: new Vec3() }).start()
|
||||
}
|
||||
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
"_active": true,
|
||||
"_components": [],
|
||||
"_prefab": {
|
||||
"__id__": 90
|
||||
"__id__": 91
|
||||
},
|
||||
"_lpos": {
|
||||
"__type__": "cc.Vec3",
|
||||
@ -54,7 +54,7 @@
|
||||
},
|
||||
"autoReleaseAssets": false,
|
||||
"_globals": {
|
||||
"__id__": 91
|
||||
"__id__": 92
|
||||
},
|
||||
"_id": "6c29a3fe-b10e-44a5-98e3-55595b231767"
|
||||
},
|
||||
@ -96,6 +96,9 @@
|
||||
},
|
||||
{
|
||||
"__id__": 89
|
||||
},
|
||||
{
|
||||
"__id__": 90
|
||||
}
|
||||
],
|
||||
"_prefab": null,
|
||||
@ -1578,7 +1581,7 @@
|
||||
"__prefab": null,
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 82.0556640625,
|
||||
"width": 60.921875,
|
||||
"height": 56.4
|
||||
},
|
||||
"_anchorPoint": {
|
||||
@ -1608,7 +1611,7 @@
|
||||
"b": 255,
|
||||
"a": 255
|
||||
},
|
||||
"_string": "50%",
|
||||
"_string": "0%",
|
||||
"_horizontalAlign": 1,
|
||||
"_verticalAlign": 1,
|
||||
"_actualFontSize": 38,
|
||||
@ -2345,7 +2348,7 @@
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 1080,
|
||||
"height": 2560
|
||||
"height": 1920
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
@ -2445,7 +2448,7 @@
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 1080,
|
||||
"height": 2560
|
||||
"height": 1920
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
@ -2497,7 +2500,7 @@
|
||||
"_contentSize": {
|
||||
"__type__": "cc.Size",
|
||||
"width": 1080,
|
||||
"height": 2560
|
||||
"height": 1920
|
||||
},
|
||||
"_anchorPoint": {
|
||||
"__type__": "cc.Vec2",
|
||||
@ -2506,36 +2509,6 @@
|
||||
},
|
||||
"_id": "b39r/AfidO+pudz3SN7pqo"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Widget",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 8
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": null,
|
||||
"_alignFlags": 45,
|
||||
"_target": null,
|
||||
"_left": 0,
|
||||
"_right": 0,
|
||||
"_top": -320,
|
||||
"_bottom": -320,
|
||||
"_horizontalCenter": 0,
|
||||
"_verticalCenter": 0,
|
||||
"_isAbsLeft": false,
|
||||
"_isAbsRight": true,
|
||||
"_isAbsTop": true,
|
||||
"_isAbsBottom": true,
|
||||
"_isAbsHorizontalCenter": true,
|
||||
"_isAbsVerticalCenter": true,
|
||||
"_originalWidth": 1080,
|
||||
"_originalHeight": 1920,
|
||||
"_alignMode": 2,
|
||||
"_lockFlags": 0,
|
||||
"_id": "ffH2CIHMVCZImyoyKJ54AK"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Mask",
|
||||
"_name": "",
|
||||
@ -2550,7 +2523,7 @@
|
||||
"_inverted": false,
|
||||
"_segments": 64,
|
||||
"_alphaThreshold": 0.1,
|
||||
"_id": "31IUj90uNGboMG/ZgAfkg4"
|
||||
"_id": "1bp0mDHnVBYoa14QZI/k1G"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Graphics",
|
||||
@ -2590,7 +2563,37 @@
|
||||
"a": 0
|
||||
},
|
||||
"_miterLimit": 10,
|
||||
"_id": "88ENBOYIpCGKFcHVTgSMzZ"
|
||||
"_id": "d38dT/Kz1Kub1b05cwraDN"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Widget",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 8
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": null,
|
||||
"_alignFlags": 5,
|
||||
"_target": null,
|
||||
"_left": 0,
|
||||
"_right": 0,
|
||||
"_top": 0,
|
||||
"_bottom": 0,
|
||||
"_horizontalCenter": 0,
|
||||
"_verticalCenter": 0,
|
||||
"_isAbsLeft": true,
|
||||
"_isAbsRight": true,
|
||||
"_isAbsTop": true,
|
||||
"_isAbsBottom": true,
|
||||
"_isAbsHorizontalCenter": true,
|
||||
"_isAbsVerticalCenter": true,
|
||||
"_originalWidth": 1080,
|
||||
"_originalHeight": 2400,
|
||||
"_alignMode": 2,
|
||||
"_lockFlags": 0,
|
||||
"_id": "2dAW/VTelFD4EAkT5IAFtx"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Node",
|
||||
@ -3239,6 +3242,36 @@
|
||||
"__prefab": null,
|
||||
"_id": "46W4D2JoFNZZugl/RX7IG4"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.Widget",
|
||||
"_name": "",
|
||||
"_objFlags": 0,
|
||||
"__editorExtras__": {},
|
||||
"node": {
|
||||
"__id__": 2
|
||||
},
|
||||
"_enabled": true,
|
||||
"__prefab": null,
|
||||
"_alignFlags": 45,
|
||||
"_target": null,
|
||||
"_left": 0,
|
||||
"_right": 0,
|
||||
"_top": 0,
|
||||
"_bottom": 0,
|
||||
"_horizontalCenter": 0,
|
||||
"_verticalCenter": 0,
|
||||
"_isAbsLeft": true,
|
||||
"_isAbsRight": true,
|
||||
"_isAbsTop": true,
|
||||
"_isAbsBottom": true,
|
||||
"_isAbsHorizontalCenter": true,
|
||||
"_isAbsVerticalCenter": true,
|
||||
"_originalWidth": 1080,
|
||||
"_originalHeight": 1920,
|
||||
"_alignMode": 2,
|
||||
"_lockFlags": 0,
|
||||
"_id": "afR8mXvHhEeIs7Aiv76HNP"
|
||||
},
|
||||
{
|
||||
"__type__": "cc.PrefabInfo",
|
||||
"root": null,
|
||||
@ -3250,29 +3283,29 @@
|
||||
{
|
||||
"__type__": "cc.SceneGlobals",
|
||||
"ambient": {
|
||||
"__id__": 92
|
||||
},
|
||||
"shadows": {
|
||||
"__id__": 93
|
||||
},
|
||||
"_skybox": {
|
||||
"shadows": {
|
||||
"__id__": 94
|
||||
},
|
||||
"fog": {
|
||||
"_skybox": {
|
||||
"__id__": 95
|
||||
},
|
||||
"octree": {
|
||||
"fog": {
|
||||
"__id__": 96
|
||||
},
|
||||
"skin": {
|
||||
"octree": {
|
||||
"__id__": 97
|
||||
},
|
||||
"lightProbeInfo": {
|
||||
"skin": {
|
||||
"__id__": 98
|
||||
},
|
||||
"postSettings": {
|
||||
"lightProbeInfo": {
|
||||
"__id__": 99
|
||||
},
|
||||
"postSettings": {
|
||||
"__id__": 100
|
||||
},
|
||||
"bakedWithStationaryMainLight": false,
|
||||
"bakedWithHighpLightmap": false
|
||||
},
|
||||
|
||||
@ -1,7 +1,9 @@
|
||||
import { _decorator, Node, Component, screen, view, ResolutionPolicy, Sprite, sys, UITransform, Label, find } from 'cc';
|
||||
import { LocalizedLabel } from './i18n/LocalizedLabel';
|
||||
import { getLanguage } from './comm';
|
||||
import { installLabelAlignmentCenterFix } from 'common_tools';
|
||||
|
||||
installLabelAlignmentCenterFix();
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
export let SWITCH_PROTRAIT_MODE = {
|
||||
|
||||
@ -7,7 +7,7 @@ import { PREVIEW } from "cc/env"
|
||||
const gameId = "rp_11001";
|
||||
// let apiaddr = "https://rpgames-api.rpfafafahkdev.com";
|
||||
let apiaddr = "";
|
||||
let token = "eyJQIjoxMDA5NDksIkUiOjE3NzE5NDI0MjksIlMiOjk5NiwiRCI6InJwXzExMDAxIn0.86Uf4ewuuLubSBEzhNAJlEY8Ag4pMVKVHBqAikAvSYo";
|
||||
let token = "eyJQIjoxMDA5NDksIkUiOjE3ODMzNzIyNzQsIlMiOjEwMDMsIkQiOiJycF8xMTAwMSJ9.HRjXjxkWf6cNrzx-oWsubYxygyF0EofkiLBsUTz9vgk";
|
||||
|
||||
let language = "en"
|
||||
let currency = "THB"
|
||||
@ -31,7 +31,7 @@ export function getHistoryUrl() {
|
||||
}
|
||||
|
||||
export function getLanguage() {
|
||||
// return 'zh';
|
||||
// return 'th';
|
||||
return language;
|
||||
}
|
||||
|
||||
@ -53,7 +53,7 @@ export function getGameId() {
|
||||
}
|
||||
|
||||
export function initReqAddr() {
|
||||
let partHost = ".rpfafafahkdev.com";
|
||||
let partHost = ".rpenenenhkdev.com";
|
||||
if (!PREVIEW) {
|
||||
const qs = new URLSearchParams(location.search)
|
||||
|
||||
@ -100,6 +100,29 @@ AbortSignal.timeout ??= function timeout(ms) {
|
||||
return ctrl.signal
|
||||
}
|
||||
|
||||
export async function callGameBalanceApi(argsObj: any) {
|
||||
const url = apiaddr + path.join("/gameapi/getPlayerBalance")
|
||||
const payload = JSON.stringify(argsObj)
|
||||
|
||||
const res = await fetch(url, {
|
||||
signal: AbortSignal.timeout(10000),
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"X-Rp-Token": token,
|
||||
},
|
||||
method: "POST",
|
||||
body: payload,
|
||||
mode: 'cors',
|
||||
})
|
||||
|
||||
if (res.status != 200) {
|
||||
const errstr = await res.text()
|
||||
throw new Error(errstr || res.statusText)
|
||||
}
|
||||
const obj = await res.json()
|
||||
return obj
|
||||
}
|
||||
|
||||
export async function callGameApi(action: string, argsObj: any) {
|
||||
const url = apiaddr + path.join("/gameapi/", gameId, action)
|
||||
const payload = JSON.stringify(argsObj)
|
||||
|
||||
@ -94,6 +94,5 @@ export class LocalizedLabel2 extends Component {
|
||||
}
|
||||
this.label.isBold = this.isBold;
|
||||
this.label.updateRenderData();
|
||||
console.log(currentLang, 'targetFont', targetFont);
|
||||
}
|
||||
}
|
||||
@ -207,7 +207,8 @@ export class Loading extends Component {
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
await GameDataManager.instance.preloadFrameTypeCache();
|
||||
await GameDataManager.instance.preloadSymbolCache();
|
||||
// 资源加载完成,进度条到90%
|
||||
this.updateProgress(this.PROGRESS_RESOURCE);
|
||||
|
||||
|
||||
6
package-lock.json
generated
6
package-lock.json
generated
@ -9,9 +9,15 @@
|
||||
"version": "1.0.0",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"common_tools": "git+ssh://git@gitea.rpfafafahkdev.com:taotao/common_tools.git",
|
||||
"nosleep.js": "^0.12.0"
|
||||
}
|
||||
},
|
||||
"node_modules/common_tools": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "git+ssh://git@gitea.rpfafafahkdev.com:taotao/common_tools.git#c49bf2990a6f348489505ac4998683c814b58dde",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/nosleep.js": {
|
||||
"version": "0.12.0",
|
||||
"resolved": "https://registry.npmjs.org/nosleep.js/-/nosleep.js-0.12.0.tgz",
|
||||
|
||||
@ -14,6 +14,7 @@
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"common_tools": "git+ssh://git@gitea.rpfafafahkdev.com:taotao/common_tools.git",
|
||||
"nosleep.js": "^0.12.0"
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user