Compare commits

...

7 Commits

Author SHA1 Message Date
TJH
d2d2540de0 UI修改
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 1m14s
2026-07-01 15:32:40 +08:00
TJH
97b836b9df bug
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 1m13s
2026-06-29 17:16:49 +08:00
TJH
1f7dfcfffa 1
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 1m12s
2026-06-29 15:09:46 +08:00
TJH
d099caf374 缅甸泰语在某些系统下错位问题的修改
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 2m2s
2026-06-29 15:08:53 +08:00
TJH
deaaf21e3c 开始滚动前获取余额时,如果网络错误,添加错误后的处理
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 2m3s
2026-06-25 16:40:41 +08:00
TJH
10562f980c 购买按钮隐藏的逻辑修改
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 1m14s
2026-06-11 11:15:35 +08:00
TJH
ef4560fe8c 余额不足提示逻辑调整
All checks were successful
Gitea Actions Demo / Explore-Gitea-Actions (push) Successful in 1m16s
2026-06-11 10:18:49 +08:00
14 changed files with 629 additions and 464 deletions

View File

@ -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

View File

@ -12095,7 +12095,7 @@
},
"_contentSize": {
"__type__": "cc.Size",
"width": 155.625,
"width": 200,
"height": 75.6
},
"_anchorPoint": {
@ -12132,13 +12132,13 @@
"a": 255
},
"_string": "Transaction",
"_horizontalAlign": 0,
"_horizontalAlign": 1,
"_verticalAlign": 1,
"_actualFontSize": 30,
"_actualFontSize": 31,
"_fontSize": 30,
"_fontFamily": "Arial",
"_lineHeight": 60,
"_overflow": 0,
"_overflow": 2,
"_enableWrapText": true,
"_font": null,
"_isSystemFontUsed": true,

View File

@ -120,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;
@ -427,20 +427,33 @@ export class SlotBar extends Component {
if (this.isGetBalance) return
this.isGetBalance = true;
try {
let balacneData = await callGameBalanceApi({ GameId: getGameId() });
this.setBalance(balacneData.Balance)
return balacneData.Balance;
let balacneData = await this.refreshBalanceFromServer();
this.setBalance(balacneData)
return balacneData;
} catch (err) {
console.log('获取余额失败')
return null;
} finally {
this.scheduleOnce(() => {
this.isGetBalance = false;
}, 1)
}, 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;
@ -645,7 +658,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)
}
@ -821,4 +834,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)
}
}
}

View File

@ -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) {

View File

@ -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";
@ -88,6 +88,8 @@ export class SlotScene extends Component {
private lastSpinInfo: any = null;
private spinData: any = null;
private isReceiveMsg: boolean = false;
private isErr2: boolean = false;
private objectId: string[] = [];
@ -125,6 +127,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() {
@ -295,10 +298,15 @@ export class SlotScene extends Component {
if (!isFreeSpin) {
this.slotBar.setWin(0);
}
if (this.slotBar.getBalance() < (isFeatureBuy ? this.slotBar.getBet() * this.gameInfo.BuyMul : this.slotBar.getBet()) && !isFreeSpin && !GameDataManager.instance.frb.Ongoing) {
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.onClickBalance() });
this.handleErrSpin();
this.showErrorTip(2, () => { this.slotBar.onConfirmErr2() });
this.handleErrSpin(true);
this.isErr2 = true;
return
}
try {
@ -408,7 +416,7 @@ export class SlotScene extends Component {
}
private handleErrSpin() {
private handleErrSpin(isErr2 = false) {
this.spinInfo = this.lastSpinInfo;
this.spinData = this.spinInfo.Data;
this.slotGame.setRollerIconRule(
@ -417,8 +425,8 @@ 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();
}
@ -736,7 +744,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, () => {

View File

@ -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)
}
@ -566,7 +567,6 @@ export class HistoryDetail extends Component {
await waitNextFrame();
})
this.item_detail.removeFromParent()
this.scrollControl.vert_scrollView = this.list_detail.content.children[0].getComponent(ScrollView)
this.list_detail.node.active = true
}

View File

@ -1,4 +1,4 @@
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';
const { ccclass, property } = _decorator;
@ -18,6 +18,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);

View File

@ -1,4 +1,4 @@
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';
const { ccclass, property } = _decorator;
@ -16,7 +16,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,7 +49,7 @@ export class Rules extends Component {
Label_1_3.string = str
}
clickCloseRules() {
const destroyFunc = () => { this.node.destroy() }
hideToBottom(this.node, destroyFunc)

View File

@ -23,7 +23,7 @@
"_active": true,
"_components": [],
"_prefab": {
"__id__": 89
"__id__": 91
},
"_lpos": {
"__type__": "cc.Vec3",
@ -54,7 +54,7 @@
},
"autoReleaseAssets": false,
"_globals": {
"__id__": 90
"__id__": 92
},
"_id": "6c29a3fe-b10e-44a5-98e3-55595b231767"
},
@ -77,17 +77,11 @@
"__id__": 8
},
{
"__id__": 68
"__id__": 70
}
],
"_active": true,
"_components": [
{
"__id__": 83
},
{
"__id__": 84
},
{
"__id__": 85
},
@ -99,13 +93,19 @@
},
{
"__id__": 88
},
{
"__id__": 89
},
{
"__id__": 90
}
],
"_prefab": null,
"_lpos": {
"__type__": "cc.Vec3",
"x": 540,
"y": 959.9999999999999,
"y": 960,
"z": 0
},
"_lrot": {
@ -190,7 +190,7 @@
"_priority": 0,
"_fov": 45,
"_fovAxis": 0,
"_orthoHeight": 959.9999999999999,
"_orthoHeight": 960,
"_near": 0,
"_far": 2000,
"_color": {
@ -354,6 +354,12 @@
},
{
"__id__": 67
},
{
"__id__": 68
},
{
"__id__": 69
}
],
"_prefab": null,
@ -2342,7 +2348,7 @@
"_contentSize": {
"__type__": "cc.Size",
"width": 1080,
"height": 1919.9999999999998
"height": 1920
},
"_anchorPoint": {
"__type__": "cc.Vec2",
@ -2442,7 +2448,7 @@
"_contentSize": {
"__type__": "cc.Size",
"width": 1080,
"height": 1919.9999999999998
"height": 1920
},
"_anchorPoint": {
"__type__": "cc.Vec2",
@ -2494,7 +2500,7 @@
"_contentSize": {
"__type__": "cc.Size",
"width": 1080,
"height": 1919.9999999999998
"height": 1920
},
"_anchorPoint": {
"__type__": "cc.Vec2",
@ -2503,6 +2509,62 @@
},
"_id": "b39r/AfidO+pudz3SN7pqo"
},
{
"__type__": "cc.Mask",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 8
},
"_enabled": true,
"__prefab": null,
"_type": 0,
"_inverted": false,
"_segments": 64,
"_alphaThreshold": 0.1,
"_id": "1bp0mDHnVBYoa14QZI/k1G"
},
{
"__type__": "cc.Graphics",
"_name": "",
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 8
},
"_enabled": true,
"__prefab": null,
"_customMaterial": null,
"_srcBlendFactor": 2,
"_dstBlendFactor": 4,
"_color": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 255
},
"_lineWidth": 1,
"_strokeColor": {
"__type__": "cc.Color",
"r": 0,
"g": 0,
"b": 0,
"a": 255
},
"_lineJoin": 2,
"_lineCap": 0,
"_fillColor": {
"__type__": "cc.Color",
"r": 255,
"g": 255,
"b": 255,
"a": 0
},
"_miterLimit": 10,
"_id": "d38dT/Kz1Kub1b05cwraDN"
},
{
"__type__": "cc.Widget",
"_name": "",
@ -2513,7 +2575,7 @@
},
"_enabled": true,
"__prefab": null,
"_alignFlags": 45,
"_alignFlags": 5,
"_target": null,
"_left": 0,
"_right": 0,
@ -2521,17 +2583,17 @@
"_bottom": 0,
"_horizontalCenter": 0,
"_verticalCenter": 0,
"_isAbsLeft": false,
"_isAbsLeft": true,
"_isAbsRight": true,
"_isAbsTop": true,
"_isAbsBottom": true,
"_isAbsHorizontalCenter": true,
"_isAbsVerticalCenter": true,
"_originalWidth": 1080,
"_originalHeight": 1920,
"_originalHeight": 2400,
"_alignMode": 2,
"_lockFlags": 0,
"_id": "ffH2CIHMVCZImyoyKJ54AK"
"_id": "2dAW/VTelFD4EAkT5IAFtx"
},
{
"__type__": "cc.Node",
@ -2543,22 +2605,22 @@
},
"_children": [
{
"__id__": 69
"__id__": 71
},
{
"__id__": 73
"__id__": 75
},
{
"__id__": 78
"__id__": 80
}
],
"_active": false,
"_components": [
{
"__id__": 81
"__id__": 83
},
{
"__id__": 82
"__id__": 84
}
],
"_prefab": null,
@ -2597,19 +2659,19 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
"__id__": 68
"__id__": 70
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 70
},
{
"__id__": 71
},
{
"__id__": 72
},
{
"__id__": 73
},
{
"__id__": 74
}
],
"_prefab": null,
@ -2648,7 +2710,7 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 69
"__id__": 71
},
"_enabled": true,
"__prefab": null,
@ -2670,7 +2732,7 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 69
"__id__": 71
},
"_enabled": true,
"__prefab": null,
@ -2682,7 +2744,7 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 69
"__id__": 71
},
"_enabled": true,
"__prefab": null,
@ -2721,22 +2783,22 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
"__id__": 68
"__id__": 70
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 74
},
{
"__id__": 75
},
{
"__id__": 76
},
{
"__id__": 77
},
{
"__id__": 78
},
{
"__id__": 79
}
],
"_prefab": null,
@ -2775,7 +2837,7 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 73
"__id__": 75
},
"_enabled": true,
"__prefab": null,
@ -2797,7 +2859,7 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 73
"__id__": 75
},
"_enabled": true,
"__prefab": null,
@ -2859,7 +2921,7 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 73
"__id__": 75
},
"_enabled": true,
"__prefab": null,
@ -2872,7 +2934,7 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 73
"__id__": 75
},
"_enabled": true,
"__prefab": null,
@ -2902,16 +2964,16 @@
"_objFlags": 0,
"__editorExtras__": {},
"_parent": {
"__id__": 68
"__id__": 70
},
"_children": [],
"_active": true,
"_components": [
{
"__id__": 79
"__id__": 81
},
{
"__id__": 80
"__id__": 82
}
],
"_prefab": null,
@ -2950,7 +3012,7 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 78
"__id__": 80
},
"_enabled": true,
"__prefab": null,
@ -2972,7 +3034,7 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 78
"__id__": 80
},
"_enabled": true,
"__prefab": null,
@ -3011,7 +3073,7 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 68
"__id__": 70
},
"_enabled": true,
"__prefab": null,
@ -3033,7 +3095,7 @@
"_objFlags": 0,
"__editorExtras__": {},
"node": {
"__id__": 68
"__id__": 70
},
"_enabled": true,
"__prefab": null,
@ -3070,7 +3132,7 @@
"_contentSize": {
"__type__": "cc.Size",
"width": 1080,
"height": 1919.9999999999998
"height": 1920
},
"_anchorPoint": {
"__type__": "cc.Vec2",
@ -3164,7 +3226,7 @@
"__id__": 58
},
"rotateNode": {
"__id__": 68
"__id__": 70
},
"_id": "d8F/UwpTxNpZhwSJjDvnkk"
},
@ -3221,29 +3283,29 @@
{
"__type__": "cc.SceneGlobals",
"ambient": {
"__id__": 91
},
"shadows": {
"__id__": 92
},
"_skybox": {
"__id__": 93
},
"fog": {
"shadows": {
"__id__": 94
},
"octree": {
"_skybox": {
"__id__": 95
},
"skin": {
"fog": {
"__id__": 96
},
"lightProbeInfo": {
"octree": {
"__id__": 97
},
"postSettings": {
"skin": {
"__id__": 98
},
"lightProbeInfo": {
"__id__": 99
},
"postSettings": {
"__id__": 100
},
"bakedWithStationaryMainLight": false,
"bakedWithHighpLightmap": false
},

View File

@ -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 = {

View File

@ -7,7 +7,7 @@ import { PREVIEW } from "cc/env"
const gameId = "rp_11001";
// let apiaddr = "https://rpgames-api.rpfafafahkdev.com";
let apiaddr = "";
let token = "eyJQIjoxMDAwMDEsIkUiOjE3ODExMTY3MjUsIlMiOjEwMDMsIkQiOiJycF8xMTAwMSJ9.RlUvhgdSk7EljKfAHUreLckvUQQ43PGQrtvgeDIk1Bg";
let token = "eyJQIjoxMDA5NDksIkUiOjE3ODI5MzA5ODEsIlMiOjEwMDAsIkQiOiJycF8xMTAwMSJ9.432SLYXxigvcnlARfSesXWhDOJ06QHzN3OvU791lMiw";
let language = "en"
let currency = "THB"
@ -31,7 +31,7 @@ export function getHistoryUrl() {
}
export function getLanguage() {
// return 'zh';
// return 'th';
return language;
}

6
package-lock.json generated
View File

@ -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",

View File

@ -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"
}
}