This commit is contained in:
2025-10-13 15:39:35 +08:00
parent f0069c2745
commit 4953b86bb3
27 changed files with 4771 additions and 2063 deletions
+196 -190
View File
@@ -11,225 +11,231 @@ import { LuffaWalletSDK } from "./wallet/LuffaWalletSDK";
import { UmaAnalyticsSDK } from "./analytics/UmaAnalyticsSDK";
import { ISignCap } from "./core/ISignCap";
import { ITransactionCap } from "./core/ITransactionCap";
import { WebSDK } from "./platform/WebSDK";
const { ccclass, property } = _decorator;
// 渠道管理器
@ccclass('SDKManager')
export class SDKManager {
private static _I: SDKManager = null;
public static get I(): SDKManager {
if (!SDKManager._I) {
SDKManager._I = new SDKManager();
}
return SDKManager._I;
@ccclass("SDKManager")
export class SDKManager {
private static _I: SDKManager = null;
public static get I(): SDKManager {
if (!SDKManager._I) {
SDKManager._I = new SDKManager();
}
// 广告,分享
private adSDK: IAdSDK | null = null;
// 钱包
private walletSDK: IWalletSDK | null = null;
// 平台基础
private platformSDK: IPlatformSDK | null = null;
// 分析统计
private analyticsSDK: IAnalyticsSDK | null = null;
return SDKManager._I;
}
// 广告,分享
private adSDK: IAdSDK | null = null;
// 钱包
private walletSDK: IWalletSDK | null = null;
// 平台基础
private platformSDK: IPlatformSDK | null = null;
// 分析统计
private analyticsSDK: IAnalyticsSDK | null = null;
private constructor() {
}
// 初始化
public init(cb: Function = null) {
logger.info("SDKManager 初始化...");
// 检测平台
if (PlatformHelper.isKuaishou()) {
// 快手
private constructor() {}
} else if (PlatformHelper.isWechat()) {
// 微信
this.adSDK = new WxAdSDK();
this.platformSDK = new WxPlatformSDK();
} else if (PlatformHelper.isLuffa()) {
// Luffa
this.walletSDK = new LuffaWalletSDK();
} else if (PlatformHelper.isByteDance()) {
// 字节跳动
// 初始化
public init(cb: Function = null) {
logger.info("SDKManager 初始化...");
logger.info("当前平台" + sys.platform);
// 检测平台
if (PlatformHelper.isKuaishou()) {
// 快手
} else if (PlatformHelper.isWechat()) {
// 微信
this.adSDK = new WxAdSDK();
this.platformSDK = new WxPlatformSDK();
} else if (PlatformHelper.isLuffa()) {
// Luffa
this.walletSDK = new LuffaWalletSDK();
} else if (PlatformHelper.isByteDance()) {
// 字节跳动
} else {
//默认web平台
this.platformSDK = new WebSDK();
}
} else {
// 默认加载 UMA 分析
this.analyticsSDK = new UmaAnalyticsSDK();
}
// 初始化各模块
this.adSDK?.init();
this.walletSDK?.init();
this.platformSDK?.init();
this.analyticsSDK?.init();
// 默认加载 UMA 分析
this.analyticsSDK = new UmaAnalyticsSDK();
// 回调
cb && cb();
}
// 初始化各模块
this.adSDK?.init();
this.walletSDK?.init();
this.platformSDK?.init();
this.analyticsSDK?.init();
/**
* 销毁所有 SDK
*
* - 逐个调用各 SDK 的 `destroy` 方法
* - 用于游戏退出、切换账号、切换平台时释放资源
* - 调用时机:游戏关闭 / 重新进入大厅 / SDK 切换
*/
public destroyAll() {
this.adSDK?.destroy?.();
this.adSDK = null;
this.walletSDK?.destroy?.();
this.walletSDK = null;
this.platformSDK?.destroy?.();
this.platformSDK = null;
this.analyticsSDK?.destroy?.();
this.analyticsSDK = null;
logger.log("所有 SDK 已销毁并清空引用");
}
// 回调
cb && cb();
}
/** --------------------------------------------------------- 广告,分享 --------------------------------------------------------- */
/**
* 销毁所有 SDK
*
* - 逐个调用各 SDK 的 `destroy` 方法
* - 用于游戏退出、切换账号、切换平台时释放资源
* - 调用时机:游戏关闭 / 重新进入大厅 / SDK 切换
*/
public destroyAll() {
this.adSDK?.destroy?.();
this.adSDK = null;
this.walletSDK?.destroy?.();
this.walletSDK = null;
this.platformSDK?.destroy?.();
this.platformSDK = null;
this.analyticsSDK?.destroy?.();
this.analyticsSDK = null;
logger.log("所有 SDK 已销毁并清空引用");
}
// 展示激励视频广告
public showRewardVideo(cb: (ok: boolean) => void): void {
if (!this.adSDK) return;
this.adSDK.showRewardVideo(cb);
}
/** --------------------------------------------------------- 广告,分享 --------------------------------------------------------- */
// 展示插屏广告
public showInterstitial(): void {
if (!this.adSDK) return;
this.adSDK.showInterstitial();
}
// 展示激励视频广告
public showRewardVideo(cb: (ok: boolean) => void): void {
if (!this.adSDK) return;
this.adSDK.showRewardVideo(cb)
}
// 展示 Banner 广告
public showBanner(): void {
if (!this.adSDK) return;
this.adSDK.showBanner();
}
// 展示插屏广告
public showInterstitial(): void {
if (!this.adSDK) return;
this.adSDK.showInterstitial()
}
// 展示 Banner 广告
public showBanner(): void {
if (!this.adSDK) return;
this.adSDK.showBanner()
}
// 隐藏 Banner 广告
public hideBanner(): void {
if (!this.adSDK) return;
this.adSDK.hideBanner();
}
// 隐藏 Banner 广告
public hideBanner(): void {
if (!this.adSDK) return;
this.adSDK.hideBanner()
}
// 主动拉起分享
public showShare(cb?: Function): void {
if (!this.adSDK) return;
this.adSDK.showShare(cb);
}
// 主动拉起分享
public showShare(cb?: Function): void {
if (!this.adSDK) return;
this.adSDK.showShare(cb)
}
/** --------------------------------------------------------- 钱包 --------------------------------------------------------- */
// 连接钱包
public connectWallet(cb: (address: string, publicKey?: string) => void): void {
if (!this.walletSDK) return;
this.walletSDK.connectWallet(cb);
}
/** --------------------------------------------------------- 钱包 --------------------------------------------------------- */
// 断开钱包连接
public disconnectWallet(): void {
if (!this.walletSDK) return;
this.walletSDK.disconnectWallet();
}
// 连接钱包
public connectWallet(
cb: (address: string, publicKey?: string) => void
): void {
if (!this.walletSDK) return;
this.walletSDK.connectWallet(cb);
}
// 获取当前钱包地址
public getWalletAddress(): string | null {
if (!this.walletSDK) return null;
return this.walletSDK.getWalletAddress()
}
// 断开钱包连接
public disconnectWallet(): void {
if (!this.walletSDK) return;
this.walletSDK.disconnectWallet();
}
// 签名消息
public async signMessage(message: string, options?: any): Promise<{ signature: string; fullMessage?: string }> {
if (!this.walletSDK) return;
// 判断是否实现签名能力
if ("signMessage" in this.walletSDK) {
const signer = this.walletSDK as unknown as ISignCap;
return signer.signMessage(message, options);
}
throw new Error("当前钱包 SDK 不支持 signMessage 功能");
}
// 获取当前钱包地址
public getWalletAddress(): string | null {
if (!this.walletSDK) return null;
return this.walletSDK.getWalletAddress();
}
// 签名交易
public async signTransaction(rawTx: any): Promise<{ signedData: string }> {
if (!this.walletSDK) return;
// 判断是否实现交易能力
if ("signTransaction" in this.walletSDK) {
const txCap = this.walletSDK as unknown as ITransactionCap;
return txCap.signTransaction(rawTx);
}
throw new Error("当前钱包 SDK 不支持 signTransaction 功能");
}
// 签名消息
public async signMessage(
message: string,
options?: any
): Promise<{ signature: string; fullMessage?: string }> {
if (!this.walletSDK) return;
// 判断是否实现签名能力
if ("signMessage" in this.walletSDK) {
const signer = this.walletSDK as unknown as ISignCap;
return signer.signMessage(message, options);
}
throw new Error("当前钱包 SDK 不支持 signMessage 功能");
}
// 发送交易(广播到链上)
public async sendTransaction(signedData: string): Promise<{ hash: string }> {
if (!this.walletSDK) return;
// 判断是否实现交易能力
if ("sendTransaction" in this.walletSDK) {
const txCap = this.walletSDK as unknown as ITransactionCap;
return txCap.sendTransaction(signedData);
}
throw new Error("当前钱包 SDK 不支持 sendTransaction 功能");
}
// 签名交易
public async signTransaction(rawTx: any): Promise<{ signedData: string }> {
if (!this.walletSDK) return;
// 判断是否实现交易能力
if ("signTransaction" in this.walletSDK) {
const txCap = this.walletSDK as unknown as ITransactionCap;
return txCap.signTransaction(rawTx);
}
throw new Error("当前钱包 SDK 不支持 signTransaction 功能");
}
/** --------------------------------------------------------- 平台基础 --------------------------------------------------------- */
// 发送交易(广播到链上)
public async sendTransaction(signedData: string): Promise<{ hash: string }> {
if (!this.walletSDK) return;
// 判断是否实现交易能力
if ("sendTransaction" in this.walletSDK) {
const txCap = this.walletSDK as unknown as ITransactionCap;
return txCap.sendTransaction(signedData);
}
throw new Error("当前钱包 SDK 不支持 sendTransaction 功能");
}
// 登录
public login(cb?: Function): void {
if (!this.platformSDK) return;
this.platformSDK.login(cb)
}
/** --------------------------------------------------------- 平台基础 --------------------------------------------------------- */
// 获取用户信息
public getUserInfo(cb: (info: { nickName: string; avatarUrl: string }) => void): void {
if (!this.platformSDK) return;
this.platformSDK.getUserInfo(cb)
}
// 登录
public login(cb?: Function): void {
if (!this.platformSDK) return;
this.platformSDK.login(cb);
}
// 检查平台权限
public checkPermission(scope: string, cb: (granted: boolean) => void): void {
if (!this.platformSDK) return;
this.platformSDK.checkPermission(scope, cb)
}
// 获取用户信息
public getUserInfo(
cb: (info: { nickName: string; avatarUrl: string }) => void
): void {
if (!this.platformSDK) return;
this.platformSDK.getUserInfo(cb);
}
// 复制文本到剪贴板
public copyToClipboard(text: string, cb?: Function): void {
if (!this.platformSDK) return;
this.platformSDK.copyToClipboard(text, cb);
}
// 检查平台权限
public checkPermission(scope: string, cb: (granted: boolean) => void): void {
if (!this.platformSDK) return;
this.platformSDK.checkPermission(scope, cb);
}
// 客服功能是否可用
public kefuSupport(): boolean {
if (!this.platformSDK) return false;
return this.platformSDK.kefuSupport();
}
// 复制文本到剪贴板
public copyToClipboard(text: string, cb?: Function): void {
if (!this.platformSDK) return;
this.platformSDK.copyToClipboard(text, cb);
}
// 打开客服会话
public openKefu(): void {
if (!this.platformSDK) return;
this.platformSDK.openKefu();
}
// 客服功能是否可用
public kefuSupport(): boolean {
if (!this.platformSDK) return false;
return this.platformSDK.kefuSupport();
}
// 获取设备分辨率
public getWindowSize(): { width: number, height: number } {
if (!this.platformSDK) return {width: 720, height: 1280};
return this.platformSDK.getWindowSize();
}
/** --------------------------------------------------------- 分析统计 --------------------------------------------------------- */
// 判断统计功能是否可用
public isAnalyticsEnabled(): boolean {
if (!this.analyticsSDK) return false;
return this.analyticsSDK.isAnalyticsEnabled();
}
// 打开客服会话
public openKefu(): void {
if (!this.platformSDK) return;
this.platformSDK.openKefu();
}
// 上报事件
public trackEvent(eventName: string, value?: any): void {
if (!this.analyticsSDK) return;
return this.analyticsSDK.trackEvent(eventName, value);
}
}
// 获取设备分辨率
public getWindowSize(): { width: number; height: number } {
if (!this.platformSDK) return { width: 720, height: 1280 };
return this.platformSDK.getWindowSize();
}
/** --------------------------------------------------------- 分析统计 --------------------------------------------------------- */
// 判断统计功能是否可用
public isAnalyticsEnabled(): boolean {
if (!this.analyticsSDK) return false;
return this.analyticsSDK.isAnalyticsEnabled();
}
// 上报事件
public trackEvent(eventName: string, value?: any): void {
if (!this.analyticsSDK) return;
return this.analyticsSDK.trackEvent(eventName, value);
}
}
@@ -0,0 +1,94 @@
import { IPlatformSDK } from "../core/IPlatformSDK";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
export class WebSDK implements IPlatformSDK {
constructor() {}
init(cb?: Function): void {
logger.log("Web平台初始化");
cb && cb();
}
// 登录
login(cb?: Function): void {
cb && cb({ code: "Web" });
}
// 获取用户信息
getUserInfo(
cb: (info: { nickName: string; avatarUrl: string }) => void
): void {
cb({ nickName: "小明", avatarUrl: "avatar.png" });
}
// 检查平台权限
checkPermission(scope: string, cb: (granted: boolean) => void): void {
cb(true);
}
//region 复制到剪贴板
/**复制文本到剪贴板 */
copyToClipboard(text: string, cb?: Function) {
logger.log("web 复制到剪贴板:", text);
if (navigator.clipboard && window.isSecureContext) {
// 使用现代的 Clipboard API
navigator.clipboard
.writeText(text)
.then(() => {
logger.log("web 复制成功 (Clipboard API)");
cb && cb(true);
})
.catch((err) => {
logger.log("web 复制失败 (Clipboard API)", err);
this.fallbackCopyToClipboard(text, cb);
});
} else {
// 使用兼容性方案
this.fallbackCopyToClipboard(text, cb);
}
}
/**兼容性复制方案 */
private fallbackCopyToClipboard(text: string, cb?: Function) {
const textArea = document.createElement("textarea");
textArea.value = text;
// 避免滚动到底部
textArea.style.top = "0";
textArea.style.left = "0";
textArea.style.position = "fixed";
textArea.style.opacity = "0";
document.body.appendChild(textArea);
textArea.focus();
textArea.select();
try {
const successful = document.execCommand("copy");
if (successful) {
logger.log("web 复制成功 (fallback)");
cb && cb(true);
} else {
logger.log("web 复制失败 (fallback)");
cb && cb(false);
}
} catch (err) {
logger.log("web 复制异常 (fallback)", err);
cb && cb(false);
}
document.body.removeChild(textArea);
}
// 客服功能是否可用
kefuSupport(): boolean {
return true;
}
// 打开客服会话
openKefu(): void {}
// 获取设备分辨率
getWindowSize(): { width: number; height: number } {
return { width: 720, height: 1280 };
}
}
@@ -0,0 +1,9 @@
{
"ver": "4.0.24",
"importer": "typescript",
"imported": true,
"uuid": "6903a95e-077f-44a4-a740-04ee2ae3ab86",
"files": [],
"subMetas": {},
"userData": {}
}
+3 -2
View File
@@ -40,9 +40,10 @@ export namespace CommonConfig {
Layer_ui1 = 1,
Layer_ui2 = 2,
Layer_dialog = 3,
Layer_tips = 4,
Layer_navigationbar = 5,
Layer_navigationbar = 4,
Layer_tips = 5,
Layer_top = 6,
}
}
+92 -4
View File
@@ -75,6 +75,11 @@ export class PreloadUI extends Component {
private loginLabel: Label;
private desc: Label;
// 视频播放状态跟踪
private videoPlayed: boolean = false;
private videoPlayRetryCount: number = 0;
private maxVideoPlayRetry: number = 3;
start() {
//Utils.addInnerEL(InnerMsgCode.UI_ShowPrompt, this, this.resiveShowPrompt)
Utils.parseNode(this.node, this._nodeTab);
@@ -90,12 +95,24 @@ export class PreloadUI extends Component {
this.loginLabel = this._nodeTab.loginLabel.getComponent(Label);
this.desc = this._nodeTab.Desc.getComponent(Label);
// 设置视频为静音,提高移动端自动播放成功率
this.VideoPlayer.muted = true;
this.VideoPlayer.loop = true;
this.VideoPlayer.stayOnBottom = true;
this.VideoPlayer.node.on(
VideoPlayer.EventType.META_LOADED,
this.onVideoReadyToPlay,
this
);
// 监听播放失败事件
this.VideoPlayer.node.on(
VideoPlayer.EventType.PLAYING,
this.onVideoPlaying,
this
);
GButton.BandClick(this.loginBtn, this.onLogin, this);
this.jinduBar = this.node.getChildByName("jinduBar");
@@ -109,7 +126,8 @@ export class PreloadUI extends Component {
this.jinduFilled.fillRange = 0;
if (!this.VideoPlayer.isPlaying) this.VideoPlayer.play();
// 移除直接播放调用,等待 META_LOADED 事件后再播放
// if (!this.VideoPlayer.isPlaying) this.VideoPlayer.play();
//初始化显示
switch (LanguageUtils.CurrentLanguage) {
@@ -148,11 +166,74 @@ export class PreloadUI extends Component {
this.mainScene.init();
}
protected onDestroy(): void {}
protected onDestroy(): void {
// 清理视频事件监听器
if (this.VideoPlayer && this.VideoPlayer.node) {
this.VideoPlayer.node.off(
VideoPlayer.EventType.META_LOADED,
this.onVideoReadyToPlay,
this
);
this.VideoPlayer.node.off(
VideoPlayer.EventType.PLAYING,
this.onVideoPlaying,
this
);
this.VideoPlayer.stop();
}
}
onVideoReadyToPlay() {
logger.log("Video Ready");
this._nodeTab.VideoPlayer.getComponent(VideoPlayer).play();
logger.log("PreloadUI: Video metadata loaded, attempting to play");
this.tryPlayVideo();
}
/**
* 尝试播放视频,带重试机制和错误处理
*/
private tryPlayVideo() {
if (this.videoPlayed) {
logger.log("PreloadUI: Video already playing, skip");
return;
}
if (!this.VideoPlayer) {
logger.error("PreloadUI: VideoPlayer not initialized");
return;
}
// 尝试播放视频
try {
this.VideoPlayer.play();
logger.log(`PreloadUI: Video play attempted (retry: ${this.videoPlayRetryCount}/${this.maxVideoPlayRetry})`);
// 延迟检查播放状态,如果失败则重试
this.scheduleOnce(() => {
if (!this.VideoPlayer.isPlaying && this.videoPlayRetryCount < this.maxVideoPlayRetry) {
this.videoPlayRetryCount++;
logger.warn(`PreloadUI: Video play failed, retrying... (${this.videoPlayRetryCount}/${this.maxVideoPlayRetry})`);
this.tryPlayVideo();
} else if (!this.VideoPlayer.isPlaying) {
logger.warn("PreloadUI: Video autoplay failed after max retries. Will retry on user interaction.");
}
}, 0.5);
} catch (error) {
logger.error("PreloadUI: Video play error:", error);
if (this.videoPlayRetryCount < this.maxVideoPlayRetry) {
this.videoPlayRetryCount++;
this.scheduleOnce(() => {
this.tryPlayVideo();
}, 1.0);
}
}
}
/**
* 视频开始播放回调
*/
private onVideoPlaying() {
logger.log("PreloadUI: Video is now playing");
this.videoPlayed = true;
}
update(deltaTime: number) {
if (!this.preloadFinish) {
@@ -227,6 +308,13 @@ export class PreloadUI extends Component {
// }
async onLogin() {
// 用户交互时尝试播放视频(如果自动播放失败)
if (!this.videoPlayed && this.VideoPlayer) {
logger.log("PreloadUI: User interaction detected, trying to play video");
this.videoPlayRetryCount = 0; // 重置重试计数
this.tryPlayVideo();
}
const deviceId = DeviceIdService.I.id;
const os = MachineInfoService.I.getMachineOs();
const reqData = {
@@ -6,15 +6,21 @@ export class NavigationBtn extends Component {
focus: Node;
unfocus: Node;
focusLight: Node;
start() {
this.focus = this.node.getChildByName("focus");
this.unfocus = this.node.getChildByName("unfocus");
this.focusLight = this.node.getChildByName("focusLight");
}
setFocus(focus: boolean) {
if (!this.focus) this.focus = this.node.getChildByName("focus");
if (!this.unfocus) this.unfocus = this.node.getChildByName("unfocus");
if (!this.focusLight)
this.focusLight = this.node.getChildByName("focusLight");
this.focus.active = focus;
this.unfocus.active = !focus;
this.focusLight.active = focus;
}
}
@@ -170,6 +170,6 @@ export class PersonalPanel extends li_BaseView {
}
private openFavorites() {
TipsPanel.show("敬请期待~");
TipsPanel.show(LanguageUtils.getText("rankpanel.comingsoon"));
}
}
@@ -141,7 +141,7 @@ export class PopupGirlDetailPanel extends li_BaseView {
} else {
this.base.refreshSelf();
}
NavigationManager.Instance.openPopupPanel("ReleasePanel");
TipsPanel.show(LanguageUtils.getText("releasepanel.releasesuccess"));
} else {
NavigationManager.Instance.openPopupPanel("ChargePopPanel");
}
@@ -160,10 +160,10 @@ export class PurchasePanel extends li_BaseView {
// VIP会员
const memberId7 = this.shopData.get7DayMemberId();
const price7 = this.shopData.getOriginalPriceById(memberId7);
this.vipPrice7.string = `$ ${price7}`;
this.vipPrice7.string = `${price7}`;
const memberId30 = this.shopData.get30DayMemberId();
const price30 = this.shopData.getOriginalPriceById(memberId30);
this.vipPrice30.string = `$ ${price30}`;
this.vipPrice30.string = `${price30}`;
}
// 0:cash 1:web3
@@ -521,11 +521,18 @@ export class ThemePanel extends li_BaseView {
const walletData = DataManager.I.getDataById<WalletData>(DataId.Wallet);
if (!walletData.isVip) {
this.vipLeftTime.string = LanguageUtils.getText("purchasepanel.notvip");
//this.vipLeftTime.string = LanguageUtils.getText("purchasepanel.notvip");
this._nodeTab.notvipicon.active = true;
this._nodeTab.notVip.active = true;
this.vipLeftTime.node.active = false;
} else {
const vipExpire = walletData.vipExpire;
const leftTime = Utils.formatVipLeftTime(vipExpire);
this.vipLeftTime.node.active = true;
this._nodeTab.notvipicon.active = false;
this._nodeTab.notVip.active = false;
if (leftTime == null) {
LanguageUtils.getText("purchasepanel.notvip");
@@ -13,7 +13,7 @@ import { SDKManager } from "../../../Main/Channel/SDKManager";
import LanguageUtils from "../../../Main/Common/LanguageUtils";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
import { PersonalPanel } from "./PersonalPanel";
import { PaymentMethod } from 'db://assets/Scripts/chat18x/payment/types';
import { PaymentMethod } from "db://assets/Scripts/chat18x/payment/types";
const { ccclass, property } = _decorator;
@@ -62,6 +62,7 @@ export class Web3PopPanel extends li_BaseView {
this.registerListener();
this.selection.setScale(new Vec3(1, 0, 1));
this._nodeTab.WD_AN_JT2.active = false;
this.refreshView();
}
@@ -144,7 +145,7 @@ export class Web3PopPanel extends li_BaseView {
case proto.cs.EnmNetworkType.ENT_TRON:
ResManager.I.changeResourceSpriteFrame(
this.coinIcon,
"ui/web3pop/coinIcon/Tron"
"ui/web3pop/coinIcon/SHOP_ICON_HB1"
);
this.coinText.string = "Tron(TRC20)";
this.tips.string = LanguageUtils.getText("web3panel.tips").replace(
@@ -155,7 +156,7 @@ export class Web3PopPanel extends li_BaseView {
case proto.cs.EnmNetworkType.ENT_TON:
ResManager.I.changeResourceSpriteFrame(
this.coinIcon,
"ui/web3pop/coinIcon/TON"
"ui/web3pop/coinIcon/SHOP_ICON_HB2"
);
this.coinText.string = "TON";
this.tips.string = LanguageUtils.getText("web3panel.tips").replace(
@@ -166,7 +167,7 @@ export class Web3PopPanel extends li_BaseView {
case proto.cs.EnmNetworkType.ENT_ETH:
ResManager.I.changeResourceSpriteFrame(
this.coinIcon,
"ui/web3pop/coinIcon/ETH"
"ui/web3pop/coinIcon/SHOP_ICON_HB3"
);
this.coinText.string = "ETH";
this.tips.string = LanguageUtils.getText("web3panel.tips").replace(
@@ -177,7 +178,7 @@ export class Web3PopPanel extends li_BaseView {
case proto.cs.EnmNetworkType.ENT_BEP:
ResManager.I.changeResourceSpriteFrame(
this.coinIcon,
"ui/web3pop/coinIcon/BEP"
"ui/web3pop/coinIcon/SHOP_ICON_HB4"
);
this.coinText.string = "BEP";
this.tips.string = LanguageUtils.getText("web3panel.tips").replace(
@@ -205,8 +206,16 @@ export class Web3PopPanel extends li_BaseView {
updateSelectNetwork() {}
isSelectionOpen = false;
onClickCoinTypeSelectBtn() {
this.selection.scale = new Vec3(1, 1, 1);
if (this.isSelectionOpen) {
this.selection.scale = new Vec3(1, 0, 1);
this._nodeTab.WD_AN_JT2.active = false;
} else {
this.selection.scale = new Vec3(1, 1, 1);
this._nodeTab.WD_AN_JT2.active = true;
}
this.isSelectionOpen = !this.isSelectionOpen;
}
onClickCoinType(type: proto.cs.EnmNetworkType) {
@@ -229,6 +238,8 @@ export class Web3PopPanel extends li_BaseView {
);
this.selection.scale = new Vec3(1, 0, 1);
this._nodeTab.WD_AN_JT2.active = false;
this.isSelectionOpen = false;
}
onClickCopy() {
@@ -16,6 +16,8 @@ export class PurchasePanelItem extends Component {
@property(Sprite)
icon: Sprite;
@property(Sprite)
usdt: Sprite;
baseView: PurchasePanel;
goodId: number;
@@ -43,11 +45,13 @@ export class PurchasePanelItem extends Component {
path += "ui/shop/coin/";
const price = shopData.getOriginalUsdPriceById(this.goodId);
this.price.string = price.toString();
this.usdt.node.active = true;
} //cash
else {
path += "ui/shop/cash/";
const price = shopData.getOriginalPriceById(this.goodId);
this.price.string = "₹‌" + price.toString();
this.usdt.node.active = false;
}
path += this.goodId;