Merge branch 'main' of 47.107.44.202:xionglijia/18xchat

# Conflicts:
#	assets/Scripts/chat18x/core/ChatAIService.ts
#	assets/Scripts/chat18x/utils/ErrorHandler.ts
#	xchat_cfg
This commit is contained in:
2025-09-21 20:51:31 +08:00
75 changed files with 1094 additions and 899 deletions
+6 -4
View File
@@ -1,6 +1,8 @@
import { _decorator, Component, Node, tween, UIOpacity, Vec3, VideoPlayer } from 'cc'; import { _decorator, Component, Node, tween, UIOpacity, Vec3, VideoPlayer } from 'cc';
import Utils from '../Common/Utils'; import Utils from '../Common/Utils';
import { VideoRoleType } from '../Common/GlobalValue'; import { VideoRoleType } from '../Common/GlobalValue';
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
/**背景视频 */ /**背景视频 */
@@ -49,14 +51,14 @@ export class BgVideo extends Component {
update(deltaTime: number) { update(deltaTime: number) {
// if (this._isPlaying && this.vtype == VideoRoleType.Idle) { // if (this._isPlaying && this.vtype == VideoRoleType.Idle) {
// console.log("BgVideo 主视频时长:", this.vp.currentTime, this.vp.duration); // logger.log("BgVideo 主视频时长:", this.vp.currentTime, this.vp.duration);
// } // }
} }
/**播放视频 */ /**播放视频 */
playVideo(remoteUrl:string, loop:boolean = false, autoIn:boolean = true) { playVideo(remoteUrl:string, loop:boolean = false, autoIn:boolean = true) {
console.log("BgVideo 播放视频:", this.node.position) logger.log("BgVideo 播放视频:", this.node.position)
this.vp.remoteURL = remoteUrl this.vp.remoteURL = remoteUrl
this.vp.loop = loop this.vp.loop = loop
this.vp.stop() this.vp.stop()
@@ -69,7 +71,7 @@ export class BgVideo extends Component {
/**暂停视频 */ /**暂停视频 */
pauseVideo() { pauseVideo() {
console.log("BgVideo 暂停视频:", this._vtype) logger.log("BgVideo 暂停视频:", this._vtype)
this.vp.pause() this.vp.pause()
} }
/**继续播放 */ /**继续播放 */
@@ -99,7 +101,7 @@ export class BgVideo extends Component {
onVideoEvent(event1:any, event2:any) { onVideoEvent(event1:any, event2:any) {
// console.log("bgvideo BgVideo组件 event", event2, this._vtype) // logger.log("bgvideo BgVideo组件 event", event2, this._vtype)
if (event2 == "ready-to-play") { if (event2 == "ready-to-play") {
// if (!this._emoShow) { // if (!this._emoShow) {
// this._emoShow = true; // this._emoShow = true;
+7 -6
View File
@@ -7,6 +7,7 @@ import { KSSDK } from "./ksSDK";
import AudioManager from "../Manager/AudioManager"; import AudioManager from "../Manager/AudioManager";
import GlobalValue, { VideoRoleType } from "../Common/GlobalValue"; import GlobalValue, { VideoRoleType } from "../Common/GlobalValue";
import { luffaSDK } from "./luffaSDK"; import { luffaSDK } from "./luffaSDK";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@@ -86,9 +87,9 @@ export class SDKManager { //extends Component
this.video_reward_map = {} this.video_reward_map = {}
this.share_reward_map = {} this.share_reward_map = {}
console.log("平台值 wx:",window["wx"], typeof window["wx"]) logger.log("平台值 wx:",window["wx"], typeof window["wx"])
console.log("平台值 ks:",window["ks"], typeof window["ks"]) logger.log("平台值 ks:",window["ks"], typeof window["ks"])
console.log("平台值 tt:",window["tt"], typeof window["tt"]) logger.log("平台值 tt:",window["tt"], typeof window["tt"])
if (typeof window["ks"] !== 'undefined') { if (typeof window["ks"] !== 'undefined') {
this.sdk_channel = E_SDK_Channel.KS this.sdk_channel = E_SDK_Channel.KS
@@ -104,7 +105,7 @@ export class SDKManager { //extends Component
this.sdk = new WebSDK() this.sdk = new WebSDK()
} }
console.log("当前平台:",sys.platform, this.sdk_channel) logger.log("当前平台:",sys.platform, this.sdk_channel)
if (GlobalValue.NpcVideoMod) { if (GlobalValue.NpcVideoMod) {
GlobalValue.NpcVideoMod = this.sdk_channel === E_SDK_Channel.WX || this.sdk_channel === E_SDK_Channel.WEB GlobalValue.NpcVideoMod = this.sdk_channel === E_SDK_Channel.WX || this.sdk_channel === E_SDK_Channel.WEB
} }
@@ -192,12 +193,12 @@ export class SDKManager { //extends Component
} }
//看视频广告前 //看视频广告前
static video_ad_pre() { static video_ad_pre() {
console.log("SDKManager 视频广告前") logger.log("SDKManager 视频广告前")
AudioManager.I.PauseMusic(); AudioManager.I.PauseMusic();
} }
//看视频广告后返回游戏 //看视频广告后返回游戏
static video_ad_back() { static video_ad_back() {
console.log("SDKManager 视频广告后") logger.log("SDKManager 视频广告后")
AudioManager.I.ResumeMusic(); AudioManager.I.ResumeMusic();
} }
+51 -50
View File
@@ -5,6 +5,7 @@ import SubManager from "../../Sub/SubManager"
import Utils from "../Common/Utils" import Utils from "../Common/Utils"
import { InnerMsgCode } from "../Config/InnerMsgCode" import { InnerMsgCode } from "../Config/InnerMsgCode"
import HttpUnit from "../Common/HttpUnit" import HttpUnit from "../Common/HttpUnit"
import { logger } from "db://assets/Scripts/Main/Common/Logger";
//广告ID //广告ID
const AD_AWARD = "1ntrdiqhmdket7v5fe" const AD_AWARD = "1ntrdiqhmdket7v5fe"
@@ -47,7 +48,7 @@ export class ByteDanceSDK{
window['tt'].checkScene({ window['tt'].checkScene({
scene: "sidebar", scene: "sidebar",
success: (res) => { success: (res) => {
console.log("抖音 检测侧边栏功能->", res) logger.log("抖音 检测侧边栏功能->", res)
if (res.isExist == true) { if (res.isExist == true) {
if (ByteDanceSDK._SidebarState == 0) { if (ByteDanceSDK._SidebarState == 0) {
ByteDanceSDK._SidebarState = 1 ByteDanceSDK._SidebarState = 1
@@ -56,22 +57,22 @@ export class ByteDanceSDK{
cb && cb(res.isExist == true); cb && cb(res.isExist == true);
}, },
fail: (res) => { fail: (res) => {
console.log("抖音 检测侧边栏功能失败->", res) logger.log("抖音 检测侧边栏功能失败->", res)
cb && cb(false); cb && cb(false);
} }
}) })
} }
/**前往侧边栏 */ /**前往侧边栏 */
public static GotoSidebar(cb:Function = null){ public static GotoSidebar(cb:Function = null){
console.log("抖音 正在前往侧边栏...") logger.log("抖音 正在前往侧边栏...")
window["tt"].navigateToScene({ window["tt"].navigateToScene({
scene: "sidebar", scene: "sidebar",
success(res) { success(res) {
console.log("抖音 前往侧边栏 成功") logger.log("抖音 前往侧边栏 成功")
cb && cb(true); cb && cb(true);
}, },
fail(res) { fail(res) {
console.log("抖音 前往侧边栏 失败", res) logger.log("抖音 前往侧边栏 失败", res)
} }
}) })
} }
@@ -79,7 +80,7 @@ export class ByteDanceSDK{
//初始化 //初始化
init(cb: Function = null) { init(cb: Function = null) {
console.log("init 抖音 初始化...") logger.log("init 抖音 初始化...")
// 保持屏幕常亮 // 保持屏幕常亮
window["tt"].setKeepScreenOn({ window["tt"].setKeepScreenOn({
keepScreenOn: true, keepScreenOn: true,
@@ -92,14 +93,14 @@ export class ByteDanceSDK{
//小游戏回到前台 //小游戏回到前台
window['tt'].onShow((res)=>{ window['tt'].onShow((res)=>{
console.log("抖音 小游戏回到前台->", res) logger.log("抖音 小游戏回到前台->", res)
if (!res) { if (!res) {
return; return;
} }
// console.log("启动参数:", res.query); // logger.log("启动参数:", res.query);
// console.log("来源信息:", res.refererInfo); // logger.log("来源信息:", res.refererInfo);
// console.log("场景值:", res.scene); // logger.log("场景值:", res.scene);
// console.log("启动场景字段:", res.launch_from, ", ", res.location); // logger.log("启动场景字段:", res.launch_from, ", ", res.location);
//返回小游戏场景值 //返回小游戏场景值
if (res.query && res.query.ShareCode) { if (res.query && res.query.ShareCode) {
@@ -108,7 +109,7 @@ export class ByteDanceSDK{
//从侧边栏返回 //从侧边栏返回
if (res.launch_from == "homepage" && res.location == "sidebar_card") { if (res.launch_from == "homepage" && res.location == "sidebar_card") {
console.log("从侧边栏返回, SidebarState=", ByteDanceSDK._SidebarState) logger.log("从侧边栏返回, SidebarState=", ByteDanceSDK._SidebarState)
if (ByteDanceSDK._SidebarState == 1) { if (ByteDanceSDK._SidebarState == 1) {
ByteDanceSDK._SidebarState = 2 ByteDanceSDK._SidebarState = 2
Utils.sendInnerMsg(InnerMsgCode.UI_BD_Sidebar, {}) Utils.sendInnerMsg(InnerMsgCode.UI_BD_Sidebar, {})
@@ -129,7 +130,7 @@ export class ByteDanceSDK{
if (this.ShareCb) { if (this.ShareCb) {
if (this.ShareSTime) { if (this.ShareSTime) {
let nT = new Date().getTime(); let nT = new Date().getTime();
console.log("分享时间差 计算:",nT, this.ShareSTime); logger.log("分享时间差 计算:",nT, this.ShareSTime);
if (nT - this.ShareSTime > 1500) { if (nT - this.ShareSTime > 1500) {
let cb = this.ShareCb.succ let cb = this.ShareCb.succ
cb && cb() cb && cb()
@@ -144,7 +145,7 @@ export class ByteDanceSDK{
window['tt'].onHide(() => { window['tt'].onHide(() => {
if (this.ShareCb) { if (this.ShareCb) {
this.ShareSTime = new Date().getTime(); this.ShareSTime = new Date().getTime();
console.log("分享时间差 记录:", this.ShareSTime); logger.log("分享时间差 记录:", this.ShareSTime);
} }
}); });
@@ -175,7 +176,7 @@ export class ByteDanceSDK{
window['tt'].authorize({ window['tt'].authorize({
scope: autoKey, scope: autoKey,
success(res:any) { success(res:any) {
console.log("抖音 - 检测权限状态 succ:", JSON.stringify(res)) logger.log("抖音 - 检测权限状态 succ:", JSON.stringify(res))
if (autoKey == "scope.userInfo" && res.data['scope.userInfo']) { if (autoKey == "scope.userInfo" && res.data['scope.userInfo']) {
cb && cb(true) cb && cb(true)
} else { } else {
@@ -183,7 +184,7 @@ export class ByteDanceSDK{
} }
}, },
fail(res:any) { fail(res:any) {
console.log("抖音 - 检测权限状态 fail:",JSON.stringify(res)) logger.log("抖音 - 检测权限状态 fail:",JSON.stringify(res))
cb && cb(false) cb && cb(false)
} }
}) })
@@ -196,11 +197,11 @@ export class ByteDanceSDK{
window["tt"].getUserInfo({ window["tt"].getUserInfo({
force: false, //当宿主未登录时,是否强制拉起登录框 force: false, //当宿主未登录时,是否强制拉起登录框
success(res) { success(res) {
console.log("抖音 - 获取用户信息成功:", res); logger.log("抖音 - 获取用户信息成功:", res);
cb && cb({avatarUrl:res.userInfo.avatarUrl, nickName:res.userInfo.nickName}) //encryptedData cb && cb({avatarUrl:res.userInfo.avatarUrl, nickName:res.userInfo.nickName}) //encryptedData
}, },
fail(res) { fail(res) {
console.log("抖音 - 获取用户信息失败", res); logger.log("抖音 - 获取用户信息失败", res);
}, },
}) })
} }
@@ -211,11 +212,11 @@ export class ByteDanceSDK{
window["tt"].login({ window["tt"].login({
force: false, //未登录时, 是否强制调起登录框 force: false, //未登录时, 是否强制调起登录框
success(res) { success(res) {
console.log(`抖音 - 登录成功 code=${res.code}, anonymousCode=${res.anonymousCode}`); logger.log(`抖音 - 登录成功 code=${res.code}, anonymousCode=${res.anonymousCode}`);
cb && cb({ platform:2, code: res.code }); cb && cb({ platform:2, code: res.code });
}, },
fail(res) { fail(res) {
console.log(`抖音 - 登录失败`, res); logger.log(`抖音 - 登录失败`, res);
cb && cb({ platform:2, code: null }); cb && cb({ platform:2, code: null });
}, },
}) })
@@ -223,7 +224,7 @@ export class ByteDanceSDK{
private init_banner() { private init_banner() {
if (AD_BANNER as any == "test") { if (AD_BANNER as any == "test") {
console.log("抖音 横幅广告id未配置,跳过此类型初始化") logger.log("抖音 横幅广告id未配置,跳过此类型初始化")
return return
} }
@@ -260,10 +261,10 @@ export class ByteDanceSDK{
// bd_banner // bd_banner
// .show() // .show()
// .then(() => { // .then(() => {
// console.log("init_banner 广告显示成功"); // logger.log("init_banner 广告显示成功");
// }) // })
// .catch((err) => { // .catch((err) => {
// console.log("init_banner 广告组件出现问题", err); // logger.log("init_banner 广告组件出现问题", err);
// }); // });
// }) // })
} }
@@ -275,7 +276,7 @@ export class ByteDanceSDK{
private preload_splash() { private preload_splash() {
if (AD_SPLASH as any == "test") { if (AD_SPLASH as any == "test") {
console.log("抖音 插屏广告id未配置,跳过此类型初始化") logger.log("抖音 插屏广告id未配置,跳过此类型初始化")
return return
} }
@@ -290,7 +291,7 @@ export class ByteDanceSDK{
this.bd_splash this.bd_splash
.load() .load()
.catch(err => { .catch(err => {
console.log("preload_splash err:",err); logger.log("preload_splash err:",err);
}) })
} }
} }
@@ -312,14 +313,14 @@ export class ByteDanceSDK{
this.preload_splash() this.preload_splash()
}) })
this.bd_splash.onError(function(err){ this.bd_splash.onError(function(err){
console.log("bd_splash err:",err) logger.log("bd_splash err:",err)
}) })
} }
private init_video() { private init_video() {
if (AD_AWARD as any == "test") { if (AD_AWARD as any == "test") {
console.log("抖音 激励广告id未配置,跳过此类型初始化") logger.log("抖音 激励广告id未配置,跳过此类型初始化")
return return
} }
@@ -346,7 +347,7 @@ export class ByteDanceSDK{
//显示视频广告 //显示视频广告
show_video(callback:Function, tag:number) { show_video(callback:Function, tag:number) {
if (AD_AWARD as any == 'test') { if (AD_AWARD as any == 'test') {
console.log('未接入广告ID,视频广告请求直接返回'); logger.log('未接入广告ID,视频广告请求直接返回');
callback && callback(); callback && callback();
SDKManager.video_ad_back(); SDKManager.video_ad_back();
return; return;
@@ -374,10 +375,10 @@ export class ByteDanceSDK{
if (this.bd_splash && this.bd_splash['custom_load_stautus'] && !this.bd_splash['custom_show_stautus']) { if (this.bd_splash && this.bd_splash['custom_load_stautus'] && !this.bd_splash['custom_show_stautus']) {
this.bd_splash.show().then(() => { this.bd_splash.show().then(() => {
this.bd_splash['custom_show_stautus'] = true this.bd_splash['custom_show_stautus'] = true
console.log("插屏广告展示成功"); logger.log("插屏广告展示成功");
}) })
} else { } else {
console.log("插屏广告展示失败"); logger.log("插屏广告展示失败");
this.preload_splash() this.preload_splash()
} }
@@ -416,18 +417,18 @@ export class ByteDanceSDK{
//主动拉起分享 //主动拉起分享
show_share(rewardCB?:Function) { show_share(rewardCB?:Function) {
// rewardCB && rewardCB() // rewardCB && rewardCB()
console.log("主动拉起分享"); logger.log("主动拉起分享");
let info:any = this.shareInfo(); let info:any = this.shareInfo();
info.succ = rewardCB; info.succ = rewardCB;
info.success = (res) => { info.success = (res) => {
console.log("抖音 主动拉起分享成功", res); logger.log("抖音 主动拉起分享成功", res);
} }
info.fail = (err) => { info.fail = (err) => {
console.log("抖音 主动拉起分享失败", err); logger.log("抖音 主动拉起分享失败", err);
} }
// info.complete = (res) => { // info.complete = (res) => {
// console.log("抖音 主动拉起分享完成", res); // logger.log("抖音 主动拉起分享完成", res);
// } // }
this.ShareCb = info; this.ShareCb = info;
@@ -471,23 +472,23 @@ export class ByteDanceSDK{
const fs = window['tt'].getFileSystemManager(); const fs = window['tt'].getFileSystemManager();
//1.删除上一个音频 //1.删除上一个音频
const lastPath = window['tt'].env.USER_DATA_PATH + `/ordernew${self._iacIdx}.mp3` const lastPath = window['tt'].env.USER_DATA_PATH + `/ordernew${self._iacIdx}.mp3`
console.log("抖音 正在删除上一个音频 ->", lastPath); logger.log("抖音 正在删除上一个音频 ->", lastPath);
fs.removeSavedFile({ fs.removeSavedFile({
filePath: lastPath, filePath: lastPath,
success(res) { success(res) {
console.log("抖音 删除上一个音频成功", res); logger.log("抖音 删除上一个音频成功", res);
}, },
fail(err) { fail(err) {
console.log("抖音 删除上一个音频失败", err); logger.log("抖音 删除上一个音频失败", err);
}, },
complete(res) { complete(res) {
console.log("抖音 删除上一个音频完成", res); logger.log("抖音 删除上一个音频完成", res);
//2.保存当前音频 //2.保存当前音频
//这里需要每次保存时换一下名字的原因是:innerAudioContext设置路径时如果路径相同,会认为还是同一个音频,不会重新加载,所以需要每次保存时换一下名字 //这里需要每次保存时换一下名字的原因是:innerAudioContext设置路径时如果路径相同,会认为还是同一个音频,不会重新加载,所以需要每次保存时换一下名字
self._iacIdx++; self._iacIdx++;
const audioPath = window['tt'].env.USER_DATA_PATH + `/ordernew${self._iacIdx}.mp3` const audioPath = window['tt'].env.USER_DATA_PATH + `/ordernew${self._iacIdx}.mp3`
console.log("抖音 正在保存本次音频 ->", audioPath); logger.log("抖音 正在保存本次音频 ->", audioPath);
fs.writeFile({ fs.writeFile({
filePath: audioPath, filePath: audioPath,
data: substring, data: substring,
@@ -497,18 +498,18 @@ export class ByteDanceSDK{
self._innerAudioContext = window['tt'].createInnerAudioContext(); self._innerAudioContext = window['tt'].createInnerAudioContext();
// 添加播放结束的回调 // 添加播放结束的回调
self._innerAudioContext.onEnded(() => { self._innerAudioContext.onEnded(() => {
console.log("抖音 AI语音播放结束") logger.log("抖音 AI语音播放结束")
self._innerAudioContext.stop(); // 使用 stop 方法停止音频并重置播放状态 self._innerAudioContext.stop(); // 使用 stop 方法停止音频并重置播放状态
self._innerAudioContext.destroy(); // 销毁音频实例 self._innerAudioContext.destroy(); // 销毁音频实例
self._innerAudioContext = null; self._innerAudioContext = null;
}); });
} }
console.log("抖音 播放base64音频", audioPath) logger.log("抖音 播放base64音频", audioPath)
self._innerAudioContext.src = audioPath; self._innerAudioContext.src = audioPath;
self._innerAudioContext.play(); // 开始播放音频 self._innerAudioContext.play(); // 开始播放音频
}, },
fail(err) { fail(err) {
console.log("抖音 保存本次音频失败", err); logger.log("抖音 保存本次音频失败", err);
} }
}) })
} }
@@ -520,7 +521,7 @@ export class ByteDanceSDK{
//微信开发者工具上可以通过「编译模式」下的「下次编译模拟更新」开关来调试 //微信开发者工具上可以通过「编译模式」下的「下次编译模拟更新」开关来调试
qiangzhiUpdata() { qiangzhiUpdata() {
if (window['tt'].getUpdateManager == null) { if (window['tt'].getUpdateManager == null) {
console.log("抖音 没有更新管理器", window['tt'].getUpdateManager) logger.log("抖音 没有更新管理器", window['tt'].getUpdateManager)
return; return;
} }
@@ -529,7 +530,7 @@ export class ByteDanceSDK{
//监听向微信后台请求检查更新结果事件。微信在小程序每次启动(包括热启动)时自动检查更新,不需由开发者主动触发。 //监听向微信后台请求检查更新结果事件。微信在小程序每次启动(包括热启动)时自动检查更新,不需由开发者主动触发。
updateManager.onCheckForUpdate((res) => { updateManager.onCheckForUpdate((res) => {
// 请求完新版本信息的回调 // 请求完新版本信息的回调
console.log("抖音 检查是否有新版本:", res.hasUpdate) logger.log("抖音 检查是否有新版本:", res.hasUpdate)
}); });
//监听小程序有版本更新事件。客户端主动触发下载(无需开发者触发),下载成功后回调 //监听小程序有版本更新事件。客户端主动触发下载(无需开发者触发),下载成功后回调
@@ -548,19 +549,19 @@ export class ByteDanceSDK{
//监听小程序更新失败事件。小程序有新版本,客户端主动触发下载(无需开发者触发),下载失败(可能是网络原因等)时回调 //监听小程序更新失败事件。小程序有新版本,客户端主动触发下载(无需开发者触发),下载失败(可能是网络原因等)时回调
updateManager.onUpdateFailed(function (err) { updateManager.onUpdateFailed(function (err) {
console.log("抖音 新版本下载失败", err) logger.log("抖音 新版本下载失败", err)
}) })
} }
//客服功能是否支持 //客服功能是否支持
kefuSupport() { kefuSupport() {
console.log("抖音 不支持联系客服") logger.log("抖音 不支持联系客服")
return false; return false;
} }
//进入联系客服 //进入联系客服
openKefu() { openKefu() {
console.log("抖音 进入联系客服") logger.log("抖音 进入联系客服")
} }
@@ -573,15 +574,15 @@ export class ByteDanceSDK{
//region 复制到剪贴板 //region 复制到剪贴板
/**复制文本到剪贴板 */ /**复制文本到剪贴板 */
copyToClipboard(text: string, cb?: Function) { copyToClipboard(text: string, cb?: Function) {
console.log("抖音 复制到剪贴板:", text); logger.log("抖音 复制到剪贴板:", text);
window['tt'].setClipboardData({ window['tt'].setClipboardData({
data: text, data: text,
success: () => { success: () => {
console.log("抖音 复制成功"); logger.log("抖音 复制成功");
cb && cb(true); cb && cb(true);
}, },
fail: (err) => { fail: (err) => {
console.log("抖音 复制失败:", err); logger.log("抖音 复制失败:", err);
cb && cb(false); cb && cb(false);
} }
}); });
+72 -71
View File
@@ -6,6 +6,7 @@ import Utils from "../Common/Utils";
import { InnerMsgCode } from "../Config/InnerMsgCode"; import { InnerMsgCode } from "../Config/InnerMsgCode";
import { BgVideo } from "./BgVideo"; import { BgVideo } from "./BgVideo";
import { SceneBgVideoLayer } from "../../Sub/UI/SceneBgVideoLayer"; import { SceneBgVideoLayer } from "../../Sub/UI/SceneBgVideoLayer";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
//广告ID //广告ID
const wx_banner_ad_unit_id = 'test' const wx_banner_ad_unit_id = 'test'
@@ -35,7 +36,7 @@ export class KSSDK{
//获取小游戏冷启动时的参数 热启动参数通过 ks.onShow 接口获取。 //获取小游戏冷启动时的参数 热启动参数通过 ks.onShow 接口获取。
let launchOption = window['ks'].getLaunchOptionsSync(); let launchOption = window['ks'].getLaunchOptionsSync();
KSSDK.g_InGameScene = launchOption.from; KSSDK.g_InGameScene = launchOption.from;
console.log('init 快手 - 进入游戏的场景值', launchOption); logger.log('init 快手 - 进入游戏的场景值', launchOption);
// //显示分享按钮 // //显示分享按钮
// window['ks'].showShareMenu({ // window['ks'].showShareMenu({
@@ -53,10 +54,10 @@ export class KSSDK{
window['ks'].onShow(this.onWxShow.bind(this)); window['ks'].onShow(this.onWxShow.bind(this));
//小游戏被隐藏 记个时间 //小游戏被隐藏 记个时间
window['ks'].onHide(() => { window['ks'].onHide(() => {
console.log("快手 onHide回调:") logger.log("快手 onHide回调:")
if (this.ShareCb) { if (this.ShareCb) {
this.ShareSTime = new Date().getTime(); this.ShareSTime = new Date().getTime();
console.log("分享时间差 记录:", this.ShareSTime); logger.log("分享时间差 记录:", this.ShareSTime);
} }
}); });
@@ -70,7 +71,7 @@ export class KSSDK{
//小游戏回到前台 //小游戏回到前台
onWxShow(data: any) { onWxShow(data: any) {
console.log("快手 onShow回调:", data) logger.log("快手 onShow回调:", data)
if (data) { if (data) {
//启动小游戏时传入的参数 object //启动小游戏时传入的参数 object
if (data.query) { if (data.query) {
@@ -85,7 +86,7 @@ export class KSSDK{
if (this.ShareCb) { if (this.ShareCb) {
if (this.ShareSTime) { if (this.ShareSTime) {
let nT = new Date().getTime(); let nT = new Date().getTime();
console.log("分享时间差 计算:",nT, this.ShareSTime, nT - this.ShareSTime); logger.log("分享时间差 计算:",nT, this.ShareSTime, nT - this.ShareSTime);
if (nT - this.ShareSTime > 1) { //快手的onHide有问题,离onShow很近 if (nT - this.ShareSTime > 1) { //快手的onHide有问题,离onShow很近
let cb = this.ShareCb.succ let cb = this.ShareCb.succ
cb && cb() cb && cb()
@@ -113,7 +114,7 @@ export class KSSDK{
checkAutoSetting(autoKey:string, cb:Function = null) { checkAutoSetting(autoKey:string, cb:Function = null) {
window['ks'].getSetting({ window['ks'].getSetting({
success(res:any) { success(res:any) {
console.log("快手 - 检测权限状态 succ:", res) logger.log("快手 - 检测权限状态 succ:", res)
if (autoKey == "userInfo" && res.authSetting['scope.userInfo']) { if (autoKey == "userInfo" && res.authSetting['scope.userInfo']) {
cb && cb(true) cb && cb(true)
} else { } else {
@@ -121,7 +122,7 @@ export class KSSDK{
} }
}, },
fail(res:any) { fail(res:any) {
console.log("快手 - 检测权限状态 fail:", res) logger.log("快手 - 检测权限状态 fail:", res)
cb && cb(false) cb && cb(false)
} }
}) })
@@ -134,16 +135,16 @@ export class KSSDK{
var self = this; var self = this;
window['ks'].getSetting({ window['ks'].getSetting({
success(res:any) { success(res:any) {
console.log("快手 - 获取授权信息成功:", res); logger.log("快手 - 获取授权信息成功:", res);
let isScope = res.authSetting['scope.userInfo'] let isScope = res.authSetting['scope.userInfo']
if (isScope) { if (isScope) {
window['ks'].getUserInfo({ window['ks'].getUserInfo({
success: (res2) => { success: (res2) => {
console.log("快手 - 获取用户信息成功:", res2); logger.log("快手 - 获取用户信息成功:", res2);
cb && cb({avatarUrl:res2.userInfo.avatarUrl, nickName:res2.userInfo.nickName}) cb && cb({avatarUrl:res2.userInfo.avatarUrl, nickName:res2.userInfo.nickName})
}, },
fail: (error) => { fail: (error) => {
console.log("快手 - 获取用户信息失败:", error); logger.log("快手 - 获取用户信息失败:", error);
} }
}) })
} else { } else {
@@ -151,17 +152,17 @@ export class KSSDK{
window['ks'].authorize({ window['ks'].authorize({
scope: 'scope.userInfo', scope: 'scope.userInfo',
success: (res) => { success: (res) => {
console.log("快手 - 发起授权请求成功:", res); logger.log("快手 - 发起授权请求成功:", res);
self.getUserInfo(cb) self.getUserInfo(cb)
}, },
fail: (error) => { fail: (error) => {
console.log("快手 - 发起授权请求失败: ", error); logger.log("快手 - 发起授权请求失败: ", error);
} }
}) })
} }
}, },
fail: (error) => { fail: (error) => {
console.log("快手 - 获取授权信息失败: ", error); logger.log("快手 - 获取授权信息失败: ", error);
// cb && cb({avatarUrl:"", nickName:""}) // cb && cb({avatarUrl:"", nickName:""})
} }
}) })
@@ -172,11 +173,11 @@ export class KSSDK{
login(cb: Function = null) { login(cb: Function = null) {
window['ks'].login({ window['ks'].login({
success: (res) => { success: (res) => {
console.log('快手 - 登录成功', res.code); logger.log('快手 - 登录成功', res.code);
cb && cb({ platform:3, code: res.code }); cb && cb({ platform:3, code: res.code });
}, },
fail(res: any) { fail(res: any) {
console.log(`快手 login 调用失败`, res); logger.log(`快手 login 调用失败`, res);
cb && cb({ platform:3, code: null }); cb && cb({ platform:3, code: null });
}, },
}); });
@@ -185,7 +186,7 @@ export class KSSDK{
//初始化视频广告 //初始化视频广告
private init_video() { private init_video() {
if (wx_video_ad_unit_id as any == "test") { if (wx_video_ad_unit_id as any == "test") {
console.log("快手 激励广告id未配置,跳过此类型初始化") logger.log("快手 激励广告id未配置,跳过此类型初始化")
return return
} }
@@ -193,10 +194,10 @@ export class KSSDK{
adUnitId: wx_video_ad_unit_id adUnitId: wx_video_ad_unit_id
}); });
this.wx_video.onError((err) => { this.wx_video.onError((err) => {
console.log('onError event emit', err); logger.log('onError event emit', err);
}); });
this.wx_video.onClose(res => { this.wx_video.onClose(res => {
console.log('onClose event emit',res); logger.log('onClose event emit',res);
// 用户点击了【关闭广告】按钮 // 用户点击了【关闭广告】按钮
// 小于 2.1.0 的基础库版本,res 是一个 undefined // 小于 2.1.0 的基础库版本,res 是一个 undefined
if ((res && res.isEnded) || res === undefined) { if ((res && res.isEnded) || res === undefined) {
@@ -217,7 +218,7 @@ export class KSSDK{
//初始化插屏广告 //初始化插屏广告
private init_splash() { private init_splash() {
if (wx_splash_ad_unit_id as any == "test") { if (wx_splash_ad_unit_id as any == "test") {
console.log("快手 插屏广告id未配置,跳过此类型初始化") logger.log("快手 插屏广告id未配置,跳过此类型初始化")
return return
} }
@@ -227,10 +228,10 @@ export class KSSDK{
adUnitId: wx_splash_ad_unit_id adUnitId: wx_splash_ad_unit_id
}); });
this.wx_splash.onError((err) => { this.wx_splash.onError((err) => {
console.log('splash onError event emit', err); logger.log('splash onError event emit', err);
}); });
this.wx_splash.onClose(res => { this.wx_splash.onClose(res => {
console.log('splash onClose event emit', res); logger.log('splash onClose event emit', res);
}); });
} }
} }
@@ -238,7 +239,7 @@ export class KSSDK{
//初始化Banner //初始化Banner
private init_banner() { private init_banner() {
if (wx_banner_ad_unit_id as any == "test") { if (wx_banner_ad_unit_id as any == "test") {
console.log("快手 横幅广告id未配置,跳过此类型初始化") logger.log("快手 横幅广告id未配置,跳过此类型初始化")
return return
} }
@@ -247,7 +248,7 @@ export class KSSDK{
//显示视频广告 //显示视频广告
show_video(callback:Function, tag:number) { show_video(callback:Function, tag:number) {
if (wx_video_ad_unit_id == 'test') { if (wx_video_ad_unit_id == 'test') {
console.log('未接入广告ID,视频广告请求直接返回'); logger.log('未接入广告ID,视频广告请求直接返回');
callback && callback(); callback && callback();
SDKManager.video_ad_back(); SDKManager.video_ad_back();
return; return;
@@ -258,10 +259,10 @@ export class KSSDK{
let p = this.wx_video.show() let p = this.wx_video.show()
p.then(function(result){ p.then(function(result){
// 激励视频展示成功 // 激励视频展示成功
console.log(`快手 show rewarded video ad success, result is ${result}`) logger.log(`快手 show rewarded video ad success, result is ${result}`)
}).catch(function(error){ }).catch(function(error){
// 激励视频展示失败 // 激励视频展示失败
console.log(`快手 show rewarded video ad failed, error is ${error}`) logger.log(`快手 show rewarded video ad failed, error is ${error}`)
}) })
// this.wx_video.load() // this.wx_video.load()
@@ -282,10 +283,10 @@ export class KSSDK{
let p = this.wx_splash.show() let p = this.wx_splash.show()
p.then(function(result){ p.then(function(result){
// 插屏广告展示成功 // 插屏广告展示成功
console.log(`快手 show interstitial ad success, result is ${result}`) logger.log(`快手 show interstitial ad success, result is ${result}`)
}).catch(function(error){ }).catch(function(error){
// 插屏广告展示失败 // 插屏广告展示失败
console.log(`快手 show interstitial ad failed, error is ${error}`) logger.log(`快手 show interstitial ad failed, error is ${error}`)
if (error.code === -10005) { if (error.code === -10005) {
// 表明当前app版本不支持插屏广告,可以提醒用户升级app版本 // 表明当前app版本不支持插屏广告,可以提醒用户升级app版本
} }
@@ -319,7 +320,7 @@ export class KSSDK{
} }
//主动拉起分享 //主动拉起分享
show_share(rewardCB?:Function) { show_share(rewardCB?:Function) {
console.log("主动拉起分享"); logger.log("主动拉起分享");
let info:any = this.shareInfo(); let info:any = this.shareInfo();
info.succ = rewardCB; info.succ = rewardCB;
info.success = null; info.success = null;
@@ -337,13 +338,13 @@ export class KSSDK{
//显示游戏圈 //显示游戏圈
show_gameClub(leftRatio, topRatio, widthRatio, heightRatio) { show_gameClub(leftRatio, topRatio, widthRatio, heightRatio) {
if (true) { if (true) {
console.log("显示游戏圈,快手暂不支持"); logger.log("显示游戏圈,快手暂不支持");
return return
} }
} }
//隐藏游戏圈 //隐藏游戏圈
hide_gameClub() { hide_gameClub() {
console.log("隐藏游戏圈"); logger.log("隐藏游戏圈");
if (this.wx_gameClub) { if (this.wx_gameClub) {
this.wx_gameClub.hide(); this.wx_gameClub.hide();
} }
@@ -359,7 +360,7 @@ export class KSSDK{
private _iacIdx = 0 //音频播放索引 private _iacIdx = 0 //音频播放索引
playBase64Audio(base64, loop) { playBase64Audio(base64, loop) {
if (!this.checkSupportBase64Audio()) { if (!this.checkSupportBase64Audio()) {
console.log("当前平台不支持base64音频播放"); logger.log("当前平台不支持base64音频播放");
return; return;
} }
@@ -373,23 +374,23 @@ export class KSSDK{
const fs = window['ks'].getFileSystemManager(); const fs = window['ks'].getFileSystemManager();
//1.删除上一个音频 //1.删除上一个音频
const lastPath = window['ks'].env.USER_DATA_PATH + `/ordernew${self._iacIdx}.mp3` const lastPath = window['ks'].env.USER_DATA_PATH + `/ordernew${self._iacIdx}.mp3`
console.log("快手 正在删除上一个音频 ->", lastPath); logger.log("快手 正在删除上一个音频 ->", lastPath);
fs.removeSavedFile({ fs.removeSavedFile({
filePath: lastPath, filePath: lastPath,
success(res) { success(res) {
console.log("快手 删除上一个音频成功", res); logger.log("快手 删除上一个音频成功", res);
}, },
fail(err) { fail(err) {
console.log("快手 删除上一个音频失败", err); logger.log("快手 删除上一个音频失败", err);
}, },
complete(res) { complete(res) {
console.log("快手 删除上一个音频完成", res); logger.log("快手 删除上一个音频完成", res);
//2.保存当前音频 //2.保存当前音频
//这里需要每次保存时换一下名字的原因是:innerAudioContext设置路径时如果路径相同,会认为还是同一个音频,不会重新加载,所以需要每次保存时换一下名字 //这里需要每次保存时换一下名字的原因是:innerAudioContext设置路径时如果路径相同,会认为还是同一个音频,不会重新加载,所以需要每次保存时换一下名字
self._iacIdx++; self._iacIdx++;
const audioPath = window['ks'].env.USER_DATA_PATH + `/ordernew${self._iacIdx}.mp3` const audioPath = window['ks'].env.USER_DATA_PATH + `/ordernew${self._iacIdx}.mp3`
console.log("快手 正在保存本次音频 ->", audioPath); logger.log("快手 正在保存本次音频 ->", audioPath);
fs.writeFile({ fs.writeFile({
filePath: audioPath, filePath: audioPath,
data: substring, data: substring,
@@ -399,18 +400,18 @@ export class KSSDK{
self._innerAudioContext = window['ks'].createInnerAudioContext(); self._innerAudioContext = window['ks'].createInnerAudioContext();
// 添加播放结束的回调 // 添加播放结束的回调
self._innerAudioContext.onEnded(() => { self._innerAudioContext.onEnded(() => {
console.log("快手 AI语音播放结束") logger.log("快手 AI语音播放结束")
self._innerAudioContext.stop(); // 使用 stop 方法停止音频并重置播放状态 self._innerAudioContext.stop(); // 使用 stop 方法停止音频并重置播放状态
self._innerAudioContext.destroy(); // 销毁音频实例 self._innerAudioContext.destroy(); // 销毁音频实例
self._innerAudioContext = null; self._innerAudioContext = null;
}); });
} }
console.log("快手 播放base64音频", audioPath) logger.log("快手 播放base64音频", audioPath)
self._innerAudioContext.src = audioPath; self._innerAudioContext.src = audioPath;
self._innerAudioContext.play(); // 开始播放音频 self._innerAudioContext.play(); // 开始播放音频
}, },
fail(err) { fail(err) {
console.log("快手 保存本次音频失败", err); logger.log("快手 保存本次音频失败", err);
} }
}) })
} }
@@ -423,7 +424,7 @@ export class KSSDK{
//微信开发者工具上可以通过「编译模式」下的「下次编译模拟更新」开关来调试 //微信开发者工具上可以通过「编译模式」下的「下次编译模拟更新」开关来调试
qiangzhiUpdata() { qiangzhiUpdata() {
if (window['ks'].getUpdateManager == null) { if (window['ks'].getUpdateManager == null) {
console.log("快手 没有更新管理器", window['ks'].getUpdateManager) logger.log("快手 没有更新管理器", window['ks'].getUpdateManager)
return; return;
} }
@@ -432,7 +433,7 @@ export class KSSDK{
//监听向微信后台请求检查更新结果事件。微信在小程序每次启动(包括热启动)时自动检查更新,不需由开发者主动触发。 //监听向微信后台请求检查更新结果事件。微信在小程序每次启动(包括热启动)时自动检查更新,不需由开发者主动触发。
updateManager.onCheckForUpdate((res) => { updateManager.onCheckForUpdate((res) => {
// 请求完新版本信息的回调 // 请求完新版本信息的回调
console.log("快手 检查是否有新版本:", res.hasUpdate) logger.log("快手 检查是否有新版本:", res.hasUpdate)
}); });
//监听小程序有版本更新事件。客户端主动触发下载(无需开发者触发),下载成功后回调 //监听小程序有版本更新事件。客户端主动触发下载(无需开发者触发),下载成功后回调
@@ -449,19 +450,19 @@ export class KSSDK{
//监听小程序更新失败事件。小程序有新版本,客户端主动触发下载(无需开发者触发),下载失败(可能是网络原因等)时回调 //监听小程序更新失败事件。小程序有新版本,客户端主动触发下载(无需开发者触发),下载失败(可能是网络原因等)时回调
updateManager.onUpdateFailed(function (err) { updateManager.onUpdateFailed(function (err) {
console.log("快手 新版本下载失败", err) logger.log("快手 新版本下载失败", err)
}) })
} }
//客服功能是否支持 //客服功能是否支持
kefuSupport() { kefuSupport() {
console.log("快手 不支持联系客服") logger.log("快手 不支持联系客服")
return false; return false;
} }
//进入联系客服 //进入联系客服
openKefu() { openKefu() {
console.log("快手 进入联系客服") logger.log("快手 进入联系客服")
} }
@@ -471,7 +472,7 @@ export class KSSDK{
private curPlayType: VideoRoleType = VideoRoleType.None //当前播放的视频的类型 private curPlayType: VideoRoleType = VideoRoleType.None //当前播放的视频的类型
playBgAudio(remoteUrl:string, vtype:VideoRoleType, loop:boolean = false, extra:any = {}) { playBgAudio(remoteUrl:string, vtype:VideoRoleType, loop:boolean = false, extra:any = {}) {
if (!window['ks'].createVideo) { if (!window['ks'].createVideo) {
console.log("快手 不支持播放视频") logger.log("快手 不支持播放视频")
return return
} }
if (this._bgVideo && this._bgShow) { if (this._bgVideo && this._bgShow) {
@@ -479,18 +480,18 @@ export class KSSDK{
return return
} }
let self = this; let self = this;
console.log("微信 播放背景视频组件1", remoteUrl); logger.log("微信 播放背景视频组件1", remoteUrl);
this.curPlayType = vtype this.curPlayType = vtype
if (!this._bgVideo) { if (!this._bgVideo) {
this._bgVideo = this.createVideoHandle(); this._bgVideo = this.createVideoHandle();
// this._bgVideo.onPlay(() => { // this._bgVideo.onPlay(() => {
// console.log("微信 背景视频播放开始"); // logger.log("微信 背景视频播放开始");
// }) // })
this._bgVideo.onTimeUpdate((_tinfo:any) =>{ this._bgVideo.onTimeUpdate((_tinfo:any) =>{
// console.log("微信 背景视频播放进度", self._bgShow, _tinfo); // logger.log("微信 背景视频播放进度", self._bgShow, _tinfo);
if (!self._bgShow) { if (!self._bgShow) {
if (_tinfo && _tinfo.position > 0.01) { if (_tinfo && _tinfo.position > 0.01) {
console.log("微信 背景视频1进入视野"); logger.log("微信 背景视频1进入视野");
self.videoMoveIn(self._bgVideo) self.videoMoveIn(self._bgVideo)
self._bgShow = true; self._bgShow = true;
self.removeBgAudioNext() self.removeBgAudioNext()
@@ -521,19 +522,19 @@ export class KSSDK{
private _bgTempShow: boolean = false; private _bgTempShow: boolean = false;
playBgAudioNext(remoteUrl:string, vtype:VideoRoleType, loop:boolean = false, extra:any = {}) { playBgAudioNext(remoteUrl:string, vtype:VideoRoleType, loop:boolean = false, extra:any = {}) {
this.removeBgAudioNext(); this.removeBgAudioNext();
console.log("微信 创建背景视频组件2--->", remoteUrl); logger.log("微信 创建背景视频组件2--->", remoteUrl);
this.curPlayType = vtype this.curPlayType = vtype
let self = this; let self = this;
if (!this._bgTempVideo) { if (!this._bgTempVideo) {
this._bgTempVideo = this.createVideoHandle(); this._bgTempVideo = this.createVideoHandle();
// this._bgTempVideo.onPlay(() => { // this._bgTempVideo.onPlay(() => {
// console.log("微信 临时背景视频播放开始"); // logger.log("微信 临时背景视频播放开始");
// }) // })
this._bgTempVideo.onTimeUpdate((_tinfo:any) =>{ this._bgTempVideo.onTimeUpdate((_tinfo:any) =>{
// console.log("微信 临时背景视频播放进度", self._bgTempShow, _tinfo); // logger.log("微信 临时背景视频播放进度", self._bgTempShow, _tinfo);
if (!self._bgTempShow) { if (!self._bgTempShow) {
if (_tinfo && _tinfo.position > 0.01) { if (_tinfo && _tinfo.position > 0.01) {
console.log("微信 背景视频2进入视野"); logger.log("微信 背景视频2进入视野");
self._bgTempShow = true; self._bgTempShow = true;
self.videoMoveIn(self._bgTempVideo) self.videoMoveIn(self._bgTempVideo)
self.removeBgAudio() self.removeBgAudio()
@@ -569,18 +570,18 @@ export class KSSDK{
return return
} }
let self = this; let self = this;
console.log("微信 播放emo视频1", remoteUrl); logger.log("微信 播放emo视频1", remoteUrl);
this.curPlayType = vtype this.curPlayType = vtype
if (!this._emoVideo) { if (!this._emoVideo) {
this._emoVideo = this.createVideoHandle(); this._emoVideo = this.createVideoHandle();
// this._emoVideo.onPlay(() => { // this._emoVideo.onPlay(() => {
// console.log("微信 背景视频播放开始"); // logger.log("微信 背景视频播放开始");
// }) // })
this._emoVideo.onTimeUpdate((_tinfo:any) =>{ this._emoVideo.onTimeUpdate((_tinfo:any) =>{
// console.log("微信 背景视频播放进度", self._emoShow, _tinfo); // logger.log("微信 背景视频播放进度", self._emoShow, _tinfo);
if (!self._emoShow) { if (!self._emoShow) {
if (_tinfo && _tinfo.position > 0.01) { if (_tinfo && _tinfo.position > 0.01) {
console.log("微信 emo视频1准备好了"); logger.log("微信 emo视频1准备好了");
self._emoShow = true; self._emoShow = true;
self.removeEmoAudioNext() self.removeEmoAudioNext()
self.setEmoReadyAudio(self._emoVideo) self.setEmoReadyAudio(self._emoVideo)
@@ -610,19 +611,19 @@ export class KSSDK{
private _emoTempShow: boolean = false; private _emoTempShow: boolean = false;
playEmoAudioNext(remoteUrl:string, vtype:VideoRoleType, loop:boolean = false, extra:any = {}) { playEmoAudioNext(remoteUrl:string, vtype:VideoRoleType, loop:boolean = false, extra:any = {}) {
this.removeEmoAudioNext(); this.removeEmoAudioNext();
console.log("微信 播放emo视频2--->", remoteUrl); logger.log("微信 播放emo视频2--->", remoteUrl);
this.curPlayType = vtype this.curPlayType = vtype
let self = this; let self = this;
if (!this._emoTempVideo) { if (!this._emoTempVideo) {
this._emoTempVideo = this.createVideoHandle(); this._emoTempVideo = this.createVideoHandle();
// this._emoTempVideo.onPlay(() => { // this._emoTempVideo.onPlay(() => {
// console.log("微信 临时背景视频播放开始"); // logger.log("微信 临时背景视频播放开始");
// }) // })
this._emoTempVideo.onTimeUpdate((_tinfo:any) =>{ this._emoTempVideo.onTimeUpdate((_tinfo:any) =>{
// console.log("微信 临时背景视频播放进度", self._emoTempShow, _tinfo); // logger.log("微信 临时背景视频播放进度", self._emoTempShow, _tinfo);
if (!self._emoTempShow) { if (!self._emoTempShow) {
if (_tinfo && _tinfo.position > 0.01) { if (_tinfo && _tinfo.position > 0.01) {
console.log("微信 emo视频2已准备好"); logger.log("微信 emo视频2已准备好");
self._emoTempShow = true; self._emoTempShow = true;
self.removeEmoAudio() self.removeEmoAudio()
self.setEmoReadyAudio(self._emoTempVideo) self.setEmoReadyAudio(self._emoTempVideo)
@@ -706,19 +707,19 @@ export class KSSDK{
this.videoAdaInfo.x = -(this.videoWidth * ratioh - size.width) / 2 this.videoAdaInfo.x = -(this.videoWidth * ratioh - size.width) / 2
this.videoAdaInfo.y = 0 this.videoAdaInfo.y = 0
} }
console.log("微信 视频适配信息", this.videoAdaInfo, size) logger.log("微信 视频适配信息", this.videoAdaInfo, size)
return this.videoAdaInfo return this.videoAdaInfo
} }
//设置暂停播放的主视频 //设置暂停播放的主视频
private vpWait: any = null; private vpWait: any = null;
setBgAudioPause(wait:any) { setBgAudioPause(wait:any) {
console.log("微信 主视频暂停播放") logger.log("微信 主视频暂停播放")
this.vpWait = wait this.vpWait = wait
this.vpWait.pause() this.vpWait.pause()
} }
replayBgAudioPause() { replayBgAudioPause() {
console.log("微信 主视频继续播放") logger.log("微信 主视频继续播放")
if (this.vpWait) { if (this.vpWait) {
this.vpWait.play() this.vpWait.play()
} }
@@ -727,7 +728,7 @@ export class KSSDK{
//设置准备好要播放的表情视频 //设置准备好要播放的表情视频
private emoReady: any = null; private emoReady: any = null;
setEmoReadyAudio(au: any) { setEmoReadyAudio(au: any) {
console.log("微信 设置emo ready视频") logger.log("微信 设置emo ready视频")
if (this.emoReady) { if (this.emoReady) {
this.emoReady.stop() this.emoReady.stop()
this.videoMoveOut(this.emoReady) this.videoMoveOut(this.emoReady)
@@ -737,7 +738,7 @@ export class KSSDK{
} }
//移除准备好要播放的表情视频 //移除准备好要播放的表情视频
removeEmoReadyAudio() { removeEmoReadyAudio() {
console.log("微信 移除emo ready视频") logger.log("微信 移除emo ready视频")
if (this.emoReady) { if (this.emoReady) {
this.emoReady.stop() this.emoReady.stop()
this.videoMoveOut(this.emoReady) this.videoMoveOut(this.emoReady)
@@ -747,7 +748,7 @@ export class KSSDK{
//播放准备好要播放的表情视频 //播放准备好要播放的表情视频
doPlayEmoReadyAudio():boolean { doPlayEmoReadyAudio():boolean {
if (this.emoReady) { if (this.emoReady) {
console.log("微信 播放emo ready视频") logger.log("微信 播放emo ready视频")
this.emoReady.play() this.emoReady.play()
this.videoMoveIn(this.emoReady) this.videoMoveIn(this.emoReady)
return true return true
@@ -756,7 +757,7 @@ export class KSSDK{
} }
//表情视频播放结束 //表情视频播放结束
doEmoFinish() { doEmoFinish() {
console.log("微信emo ready视频播放结束") logger.log("微信emo ready视频播放结束")
this.removeEmoReadyAudio() this.removeEmoReadyAudio()
this.replayBgAudioPause() this.replayBgAudioPause()
} }
@@ -764,15 +765,15 @@ export class KSSDK{
//region 复制到剪贴板 //region 复制到剪贴板
/**复制文本到剪贴板 */ /**复制文本到剪贴板 */
copyToClipboard(text: string, cb?: Function) { copyToClipboard(text: string, cb?: Function) {
console.log("快手 复制到剪贴板:", text); logger.log("快手 复制到剪贴板:", text);
window['ks'].setClipboardData({ window['ks'].setClipboardData({
data: text, data: text,
success: () => { success: () => {
console.log("快手 复制成功"); logger.log("快手 复制成功");
cb && cb(true); cb && cb(true);
}, },
fail: (err) => { fail: (err) => {
console.log("快手 复制失败:", err); logger.log("快手 复制失败:", err);
cb && cb(false); cb && cb(false);
} }
}); });
+80 -79
View File
@@ -5,6 +5,7 @@ import { I_SDK_UserInfo_Callback, SDKManager } from "./SDKManager";
import Utils from "../Common/Utils"; import Utils from "../Common/Utils";
import uma from "../../../utils/uma.wx.min.js"; import uma from "../../../utils/uma.wx.min.js";
import { InnerMsgCode } from "../Config/InnerMsgCode"; import { InnerMsgCode } from "../Config/InnerMsgCode";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
//广告ID //广告ID
const wx_banner_ad_unit_id = "test"; const wx_banner_ad_unit_id = "test";
@@ -35,7 +36,7 @@ export class luffaSDK {
// 保持屏幕常亮 // 保持屏幕常亮
window["wx"].setKeepScreenOn({ keepScreenOn: true }); window["wx"].setKeepScreenOn({ keepScreenOn: true });
luffaSDK.g_InGameScene = window["wx"].getLaunchOptionsSync().scene; luffaSDK.g_InGameScene = window["wx"].getLaunchOptionsSync().scene;
console.log("init luffa - 进入游戏的场景值", luffaSDK.g_InGameScene); logger.log("init luffa - 进入游戏的场景值", luffaSDK.g_InGameScene);
//this.init_video(); //初始化视频广告 //this.init_video(); //初始化视频广告
//this.init_splash(); //初始化插屏广告 //this.init_splash(); //初始化插屏广告
@@ -50,7 +51,7 @@ export class luffaSDK {
checkAutoSetting(autoKey: string, cb: Function = null) { checkAutoSetting(autoKey: string, cb: Function = null) {
window["wx"].getSetting({ window["wx"].getSetting({
success(res: any) { success(res: any) {
console.log("微信 - 检测权限状态 succ:", JSON.stringify(res)); logger.log("微信 - 检测权限状态 succ:", JSON.stringify(res));
if (autoKey == "userInfo" && res.authSetting["scope.userInfo"]) { if (autoKey == "userInfo" && res.authSetting["scope.userInfo"]) {
cb && cb(true); cb && cb(true);
} else { } else {
@@ -58,7 +59,7 @@ export class luffaSDK {
} }
}, },
fail(res: any) { fail(res: any) {
console.log("微信 - 检测权限状态 fail:", JSON.stringify(res)); logger.log("微信 - 检测权限状态 fail:", JSON.stringify(res));
cb && cb(false); cb && cb(false);
}, },
}); });
@@ -68,11 +69,11 @@ export class luffaSDK {
* 获取个人信息 * 获取个人信息
*/ */
getUserInfo(cb: I_SDK_UserInfo_Callback = null) { getUserInfo(cb: I_SDK_UserInfo_Callback = null) {
console.log("微信 - 正在获取用户信息..."); logger.log("微信 - 正在获取用户信息...");
var self = this; var self = this;
window["wx"].getUserInfo({ window["wx"].getUserInfo({
success: (res) => { success: (res) => {
console.log("微信 - 获取用户信息成功:", res); logger.log("微信 - 获取用户信息成功:", res);
cb && cb &&
cb({ cb({
avatarUrl: res.userInfo.avatarUrl, avatarUrl: res.userInfo.avatarUrl,
@@ -80,7 +81,7 @@ export class luffaSDK {
}); });
}, },
fail: (err) => { fail: (err) => {
console.log("微信 - 获取用户信息失败:", err); logger.log("微信 - 获取用户信息失败:", err);
self.openUserAuthorize(cb); self.openUserAuthorize(cb);
}, },
}); });
@@ -91,7 +92,7 @@ export class luffaSDK {
window["wx"].getSetting({ window["wx"].getSetting({
scope: "scope.userInfo", scope: "scope.userInfo",
success(res: any) { success(res: any) {
console.log("微信 authorize succ:", JSON.stringify(res)); logger.log("微信 authorize succ:", JSON.stringify(res));
if (res.authSetting["scope.userInfo"]) { if (res.authSetting["scope.userInfo"]) {
self.getUserInfo(cb); self.getUserInfo(cb);
@@ -110,21 +111,21 @@ export class luffaSDK {
textAlign: "center", textAlign: "center",
}, },
}); });
console.log("微信 点击开始游戏授权用户信息"); logger.log("微信 点击开始游戏授权用户信息");
button.onTap((res) => { button.onTap((res) => {
button.destroy(); button.destroy();
// if (res.userInfo) { // if (res.userInfo) {
// console.log(res.userInfo) // logger.log(res.userInfo)
// //此时可进行登录操作 // //此时可进行登录操作
// cb && cb(res.userInfo) // cb && cb(res.userInfo)
// } // }
console.log("微信 点击Tap", res); logger.log("微信 点击Tap", res);
self.getUserInfo(cb); self.getUserInfo(cb);
}); });
} }
}, },
fail(err) { fail(err) {
console.log("微信 - authorize fail", err); logger.log("微信 - authorize fail", err);
}, },
}); });
} }
@@ -134,16 +135,16 @@ export class luffaSDK {
window["wx"].login({ window["wx"].login({
success: (res) => { success: (res) => {
if (res.code) { if (res.code) {
console.log("微信 - 登录成功", res.code); logger.log("微信 - 登录成功", res.code);
cb && cb({ platform: 1, code: res.code }); cb && cb({ platform: 1, code: res.code });
} else { } else {
console.log("微信 - 登录失败", res.errMsg); logger.log("微信 - 登录失败", res.errMsg);
cb && cb({ platform: 1, code: null }); cb && cb({ platform: 1, code: null });
} }
}, },
fail(res: any) { fail(res: any) {
console.log(`微信 login 调用失败`); logger.log(`微信 login 调用失败`);
console.log(res.anonymousCode); logger.log(res.anonymousCode);
cb && cb({ platform: 1, code: null }); cb && cb({ platform: 1, code: null });
}, },
}); });
@@ -152,7 +153,7 @@ export class luffaSDK {
//初始化视频广告 //初始化视频广告
private init_video() { private init_video() {
if ((wx_video_ad_unit_id as any) == "test") { if ((wx_video_ad_unit_id as any) == "test") {
console.log("微信 激励广告id未配置,跳过此类型初始化"); logger.log("微信 激励广告id未配置,跳过此类型初始化");
return; return;
} }
@@ -161,13 +162,13 @@ export class luffaSDK {
disableFallbackSharePage: true, // 是否禁用分享页,默认为false disableFallbackSharePage: true, // 是否禁用分享页,默认为false
}); });
this.wx_video.onLoad(() => { this.wx_video.onLoad(() => {
console.log("onLoad event emit"); logger.log("onLoad event emit");
}); });
this.wx_video.onError((err) => { this.wx_video.onError((err) => {
console.log("onError event emit", err); logger.log("onError event emit", err);
}); });
this.wx_video.onClose((res) => { this.wx_video.onClose((res) => {
console.log("onClose event emit", res); logger.log("onClose event emit", res);
// 用户点击了【关闭广告】按钮 // 用户点击了【关闭广告】按钮
// 小于 2.1.0 的基础库版本,res 是一个 undefined // 小于 2.1.0 的基础库版本,res 是一个 undefined
if ((res && res.isEnded) || res === undefined) { if ((res && res.isEnded) || res === undefined) {
@@ -186,7 +187,7 @@ export class luffaSDK {
//初始化插屏广告 //初始化插屏广告
private init_splash() { private init_splash() {
if ((wx_splash_ad_unit_id as any) == "test") { if ((wx_splash_ad_unit_id as any) == "test") {
console.log("微信 插屏广告id未配置,跳过此类型初始化"); logger.log("微信 插屏广告id未配置,跳过此类型初始化");
return; return;
} }
// 创建插屏广告实例,提前初始化 // 创建插屏广告实例,提前初始化
@@ -195,13 +196,13 @@ export class luffaSDK {
adUnitId: wx_splash_ad_unit_id, adUnitId: wx_splash_ad_unit_id,
}); });
this.wx_splash.onLoad(() => { this.wx_splash.onLoad(() => {
console.log("splash onLoad event emit"); logger.log("splash onLoad event emit");
}); });
this.wx_splash.onError((err) => { this.wx_splash.onError((err) => {
console.log("splash onError event emit", err); logger.log("splash onError event emit", err);
}); });
this.wx_splash.onClose((res) => { this.wx_splash.onClose((res) => {
console.log("splash onClose event emit", res); logger.log("splash onClose event emit", res);
}); });
} }
} }
@@ -209,7 +210,7 @@ export class luffaSDK {
//初始化Banner //初始化Banner
private init_banner() { private init_banner() {
if ((wx_banner_ad_unit_id as any) == "test") { if ((wx_banner_ad_unit_id as any) == "test") {
console.log("微信 横幅广告id未配置,跳过此类型初始化"); logger.log("微信 横幅广告id未配置,跳过此类型初始化");
return; return;
} }
let winSize = window["wx"].getSystemInfoSync(); let winSize = window["wx"].getSystemInfoSync();
@@ -237,7 +238,7 @@ export class luffaSDK {
//显示视频广告 //显示视频广告
show_video(callback: Function, tag: number) { show_video(callback: Function, tag: number) {
if ((wx_video_ad_unit_id as any) == "test") { if ((wx_video_ad_unit_id as any) == "test") {
console.log("未接入广告ID,视频广告请求直接返回"); logger.log("未接入广告ID,视频广告请求直接返回");
callback && callback(); callback && callback();
SDKManager.video_ad_back(); SDKManager.video_ad_back();
return; return;
@@ -271,7 +272,7 @@ export class luffaSDK {
this.wx_splash.show(); this.wx_splash.show();
}) })
.catch((err) => { .catch((err) => {
console.log(err); logger.log(err);
}); });
} }
} }
@@ -385,7 +386,7 @@ export class luffaSDK {
let picmap = this.SharePicAry[rand1]; let picmap = this.SharePicAry[rand1];
let rand2 = Utils.getRandomInt(0, this.ShareTextAry.length - 1); let rand2 = Utils.getRandomInt(0, this.ShareTextAry.length - 1);
let text = this.ShareTextAry[rand2]; let text = this.ShareTextAry[rand2];
console.log("分享:", rand1, rand2); logger.log("分享:", rand1, rand2);
return { return {
title: text, title: text,
query: "ShareCode=" + "user_default", //ModelPlayer.I.getPlayerId(), query: "ShareCode=" + "user_default", //ModelPlayer.I.getPlayerId(),
@@ -395,7 +396,7 @@ export class luffaSDK {
} }
//主动拉起分享 //主动拉起分享
show_share(rewardCB?: Function) { show_share(rewardCB?: Function) {
console.log("主动拉起分享"); logger.log("主动拉起分享");
let info: any = this.shareInfo(); let info: any = this.shareInfo();
info.succ = rewardCB; info.succ = rewardCB;
info.fail = null; info.fail = null;
@@ -411,7 +412,7 @@ export class luffaSDK {
//显示游戏圈 //显示游戏圈
show_gameClub(leftRatio, topRatio, widthRatio, heightRatio) { show_gameClub(leftRatio, topRatio, widthRatio, heightRatio) {
console.log("显示游戏圈"); logger.log("显示游戏圈");
if (this.wx_gameClub) { if (this.wx_gameClub) {
this.wx_gameClub.show(); this.wx_gameClub.show();
} else { } else {
@@ -421,7 +422,7 @@ export class luffaSDK {
let w = windowinfo.screenWidth * widthRatio; //按钮宽高 let w = windowinfo.screenWidth * widthRatio; //按钮宽高
let h = windowinfo.screenHeight * heightRatio; let h = windowinfo.screenHeight * heightRatio;
console.log( logger.log(
"游戏圈按钮配置:", "游戏圈按钮配置:",
windowinfo, windowinfo,
leftRatio, leftRatio,
@@ -449,7 +450,7 @@ export class luffaSDK {
} }
//隐藏游戏圈 //隐藏游戏圈
hide_gameClub() { hide_gameClub() {
console.log("隐藏游戏圈"); logger.log("隐藏游戏圈");
if (this.wx_gameClub) { if (this.wx_gameClub) {
this.wx_gameClub.hide(); this.wx_gameClub.hide();
} }
@@ -465,7 +466,7 @@ export class luffaSDK {
private _iacIdx = 0; //音频播放索引 private _iacIdx = 0; //音频播放索引
playBase64Audio(base64, loop) { playBase64Audio(base64, loop) {
if (!this.checkSupportBase64Audio()) { if (!this.checkSupportBase64Audio()) {
console.log("微信平台不支持base64音频播放"); logger.log("微信平台不支持base64音频播放");
return; return;
} }
@@ -480,24 +481,24 @@ export class luffaSDK {
//1.删除上一个音频 //1.删除上一个音频
const lastPath = const lastPath =
window["wx"].env.USER_DATA_PATH + `/ordernew${self._iacIdx}.mp3`; window["wx"].env.USER_DATA_PATH + `/ordernew${self._iacIdx}.mp3`;
console.log("微信 正在删除上一个音频 ->", lastPath); logger.log("微信 正在删除上一个音频 ->", lastPath);
fs.removeSavedFile({ fs.removeSavedFile({
filePath: lastPath, filePath: lastPath,
success(res) { success(res) {
console.log("微信 删除上一个音频成功", res); logger.log("微信 删除上一个音频成功", res);
}, },
fail(err) { fail(err) {
console.log("微信 删除上一个音频失败", err); logger.log("微信 删除上一个音频失败", err);
}, },
complete(res) { complete(res) {
console.log("微信 删除上一个音频完成", res); logger.log("微信 删除上一个音频完成", res);
//2.保存当前音频 //2.保存当前音频
//这里需要每次保存时换一下名字的原因是:innerAudioContext设置路径时如果路径相同,会认为还是同一个音频,不会重新加载,所以需要每次保存时换一下名字 //这里需要每次保存时换一下名字的原因是:innerAudioContext设置路径时如果路径相同,会认为还是同一个音频,不会重新加载,所以需要每次保存时换一下名字
self._iacIdx++; self._iacIdx++;
const audioPath = const audioPath =
window["wx"].env.USER_DATA_PATH + `/ordernew${self._iacIdx}.mp3`; window["wx"].env.USER_DATA_PATH + `/ordernew${self._iacIdx}.mp3`;
console.log("微信 正在保存本次音频 ->", audioPath); logger.log("微信 正在保存本次音频 ->", audioPath);
fs.writeFile({ fs.writeFile({
filePath: audioPath, filePath: audioPath,
data: substring, data: substring,
@@ -507,18 +508,18 @@ export class luffaSDK {
self._innerAudioContext = window["wx"].createInnerAudioContext(); self._innerAudioContext = window["wx"].createInnerAudioContext();
// 添加播放结束的回调 // 添加播放结束的回调
self._innerAudioContext.onEnded(() => { self._innerAudioContext.onEnded(() => {
console.log("微信 AI语音播放结束"); logger.log("微信 AI语音播放结束");
self._innerAudioContext.stop(); // 使用 stop 方法停止音频并重置播放状态 self._innerAudioContext.stop(); // 使用 stop 方法停止音频并重置播放状态
self._innerAudioContext.destroy(); // 销毁音频实例 self._innerAudioContext.destroy(); // 销毁音频实例
self._innerAudioContext = null; self._innerAudioContext = null;
}); });
} }
console.log("微信 播放base64音频", audioPath); logger.log("微信 播放base64音频", audioPath);
self._innerAudioContext.src = audioPath; self._innerAudioContext.src = audioPath;
self._innerAudioContext.play(); // 开始播放音频 self._innerAudioContext.play(); // 开始播放音频
}, },
fail(err) { fail(err) {
console.log("微信 保存本次音频失败", err); logger.log("微信 保存本次音频失败", err);
}, },
}); });
}, },
@@ -533,7 +534,7 @@ export class luffaSDK {
//监听向微信后台请求检查更新结果事件。微信在小程序每次启动(包括热启动)时自动检查更新,不需由开发者主动触发。 //监听向微信后台请求检查更新结果事件。微信在小程序每次启动(包括热启动)时自动检查更新,不需由开发者主动触发。
updateManager.onCheckForUpdate((res) => { updateManager.onCheckForUpdate((res) => {
// 请求完新版本信息的回调 // 请求完新版本信息的回调
console.log("微信 检查是否有新版本:", res.hasUpdate); logger.log("微信 检查是否有新版本:", res.hasUpdate);
}); });
//监听小程序有版本更新事件。客户端主动触发下载(无需开发者触发),下载成功后回调 //监听小程序有版本更新事件。客户端主动触发下载(无需开发者触发),下载成功后回调
@@ -552,7 +553,7 @@ export class luffaSDK {
//监听小程序更新失败事件。小程序有新版本,客户端主动触发下载(无需开发者触发),下载失败(可能是网络原因等)时回调 //监听小程序更新失败事件。小程序有新版本,客户端主动触发下载(无需开发者触发),下载失败(可能是网络原因等)时回调
updateManager.onUpdateFailed(function (err) { updateManager.onUpdateFailed(function (err) {
console.log("微信 新版本下载失败", err); logger.log("微信 新版本下载失败", err);
}); });
} }
@@ -561,7 +562,7 @@ export class luffaSDK {
if (window["wx"].openCustomerServiceConversation) { if (window["wx"].openCustomerServiceConversation) {
return true; return true;
} }
console.log("微信 不支持联系客服"); logger.log("微信 不支持联系客服");
return false; return false;
} }
//进入联系客服 //进入联系客服
@@ -574,10 +575,10 @@ export class luffaSDK {
wx.openCustomerServiceConversation({ wx.openCustomerServiceConversation({
success: (res) => { success: (res) => {
const { path, query } = res; const { path, query } = res;
console.log("微信 进入客服成功", path, query); logger.log("微信 进入客服成功", path, query);
}, },
fail: (res) => { fail: (res) => {
console.log("微信 进入客服失败", res); logger.log("微信 进入客服失败", res);
}, },
}); });
} }
@@ -598,18 +599,18 @@ export class luffaSDK {
return; return;
} }
let self = this; let self = this;
console.log("微信 播放背景视频组件1", remoteUrl); logger.log("微信 播放背景视频组件1", remoteUrl);
this.curPlayType = vtype; this.curPlayType = vtype;
if (!this._bgVideo) { if (!this._bgVideo) {
this._bgVideo = this.createVideoHandle(); this._bgVideo = this.createVideoHandle();
// this._bgVideo.onPlay(() => { // this._bgVideo.onPlay(() => {
// console.log("微信 背景视频播放开始"); // logger.log("微信 背景视频播放开始");
// }) // })
this._bgVideo.onTimeUpdate((_tinfo: any) => { this._bgVideo.onTimeUpdate((_tinfo: any) => {
// console.log("微信 背景视频播放进度", self._bgShow, _tinfo); // logger.log("微信 背景视频播放进度", self._bgShow, _tinfo);
if (!self._bgShow) { if (!self._bgShow) {
if (_tinfo && _tinfo.position > 0.01) { if (_tinfo && _tinfo.position > 0.01) {
console.log("微信 背景视频1进入视野"); logger.log("微信 背景视频1进入视野");
self.videoMoveIn(self._bgVideo); self.videoMoveIn(self._bgVideo);
self._bgShow = true; self._bgShow = true;
self.removeBgAudioNext(); self.removeBgAudioNext();
@@ -645,19 +646,19 @@ export class luffaSDK {
extra: any = {} extra: any = {}
) { ) {
this.removeBgAudioNext(); this.removeBgAudioNext();
console.log("微信 创建背景视频组件2--->", remoteUrl); logger.log("微信 创建背景视频组件2--->", remoteUrl);
this.curPlayType = vtype; this.curPlayType = vtype;
let self = this; let self = this;
if (!this._bgTempVideo) { if (!this._bgTempVideo) {
this._bgTempVideo = this.createVideoHandle(); this._bgTempVideo = this.createVideoHandle();
// this._bgTempVideo.onPlay(() => { // this._bgTempVideo.onPlay(() => {
// console.log("微信 临时背景视频播放开始"); // logger.log("微信 临时背景视频播放开始");
// }) // })
this._bgTempVideo.onTimeUpdate((_tinfo: any) => { this._bgTempVideo.onTimeUpdate((_tinfo: any) => {
// console.log("微信 临时背景视频播放进度", self._bgTempShow, _tinfo); // logger.log("微信 临时背景视频播放进度", self._bgTempShow, _tinfo);
if (!self._bgTempShow) { if (!self._bgTempShow) {
if (_tinfo && _tinfo.position > 0.01) { if (_tinfo && _tinfo.position > 0.01) {
console.log("微信 背景视频2进入视野"); logger.log("微信 背景视频2进入视野");
self._bgTempShow = true; self._bgTempShow = true;
self.videoMoveIn(self._bgTempVideo); self.videoMoveIn(self._bgTempVideo);
self.removeBgAudio(); self.removeBgAudio();
@@ -698,18 +699,18 @@ export class luffaSDK {
return; return;
} }
let self = this; let self = this;
console.log("微信 播放emo视频1", remoteUrl); logger.log("微信 播放emo视频1", remoteUrl);
this.curPlayType = vtype; this.curPlayType = vtype;
if (!this._emoVideo) { if (!this._emoVideo) {
this._emoVideo = this.createVideoHandle(); this._emoVideo = this.createVideoHandle();
// this._emoVideo.onPlay(() => { // this._emoVideo.onPlay(() => {
// console.log("微信 背景视频播放开始"); // logger.log("微信 背景视频播放开始");
// }) // })
this._emoVideo.onTimeUpdate((_tinfo: any) => { this._emoVideo.onTimeUpdate((_tinfo: any) => {
// console.log("微信 背景视频播放进度", self._emoShow, _tinfo); // logger.log("微信 背景视频播放进度", self._emoShow, _tinfo);
if (!self._emoShow) { if (!self._emoShow) {
if (_tinfo && _tinfo.position > 0.01) { if (_tinfo && _tinfo.position > 0.01) {
console.log("微信 emo视频1准备好了"); logger.log("微信 emo视频1准备好了");
self._emoShow = true; self._emoShow = true;
self.removeEmoAudioNext(); self.removeEmoAudioNext();
self.setEmoReadyAudio(self._emoVideo); self.setEmoReadyAudio(self._emoVideo);
@@ -744,19 +745,19 @@ export class luffaSDK {
extra: any = {} extra: any = {}
) { ) {
this.removeEmoAudioNext(); this.removeEmoAudioNext();
console.log("微信 播放emo视频2--->", remoteUrl); logger.log("微信 播放emo视频2--->", remoteUrl);
this.curPlayType = vtype; this.curPlayType = vtype;
let self = this; let self = this;
if (!this._emoTempVideo) { if (!this._emoTempVideo) {
this._emoTempVideo = this.createVideoHandle(); this._emoTempVideo = this.createVideoHandle();
// this._emoTempVideo.onPlay(() => { // this._emoTempVideo.onPlay(() => {
// console.log("微信 临时背景视频播放开始"); // logger.log("微信 临时背景视频播放开始");
// }) // })
this._emoTempVideo.onTimeUpdate((_tinfo: any) => { this._emoTempVideo.onTimeUpdate((_tinfo: any) => {
// console.log("微信 临时背景视频播放进度", self._emoTempShow, _tinfo); // logger.log("微信 临时背景视频播放进度", self._emoTempShow, _tinfo);
if (!self._emoTempShow) { if (!self._emoTempShow) {
if (_tinfo && _tinfo.position > 0.01) { if (_tinfo && _tinfo.position > 0.01) {
console.log("微信 emo视频2已准备好"); logger.log("微信 emo视频2已准备好");
self._emoTempShow = true; self._emoTempShow = true;
self.removeEmoAudio(); self.removeEmoAudio();
self.setEmoReadyAudio(self._emoTempVideo); self.setEmoReadyAudio(self._emoTempVideo);
@@ -839,19 +840,19 @@ export class luffaSDK {
this.videoAdaInfo.x = -(this.videoWidth * ratioh - size.width) / 2; this.videoAdaInfo.x = -(this.videoWidth * ratioh - size.width) / 2;
this.videoAdaInfo.y = 0; this.videoAdaInfo.y = 0;
} }
console.log("微信 视频适配信息", this.videoAdaInfo, size); logger.log("微信 视频适配信息", this.videoAdaInfo, size);
return this.videoAdaInfo; return this.videoAdaInfo;
} }
//设置暂停播放的主视频 //设置暂停播放的主视频
private vpWait: any = null; private vpWait: any = null;
setBgAudioPause(wait: any) { setBgAudioPause(wait: any) {
console.log("微信 主视频暂停播放"); logger.log("微信 主视频暂停播放");
this.vpWait = wait; this.vpWait = wait;
this.vpWait.pause(); this.vpWait.pause();
} }
replayBgAudioPause() { replayBgAudioPause() {
console.log("微信 主视频继续播放"); logger.log("微信 主视频继续播放");
if (this.vpWait) { if (this.vpWait) {
this.vpWait.play(); this.vpWait.play();
} }
@@ -860,7 +861,7 @@ export class luffaSDK {
//设置准备好要播放的表情视频 //设置准备好要播放的表情视频
private emoReady: any = null; private emoReady: any = null;
setEmoReadyAudio(au: any) { setEmoReadyAudio(au: any) {
console.log("微信 设置emo ready视频"); logger.log("微信 设置emo ready视频");
if (this.emoReady) { if (this.emoReady) {
this.emoReady.stop(); this.emoReady.stop();
this.videoMoveOut(this.emoReady); this.videoMoveOut(this.emoReady);
@@ -870,7 +871,7 @@ export class luffaSDK {
} }
//移除准备好要播放的表情视频 //移除准备好要播放的表情视频
removeEmoReadyAudio() { removeEmoReadyAudio() {
console.log("微信 移除emo ready视频"); logger.log("微信 移除emo ready视频");
if (this.emoReady) { if (this.emoReady) {
this.emoReady.stop(); this.emoReady.stop();
this.videoMoveOut(this.emoReady); this.videoMoveOut(this.emoReady);
@@ -880,7 +881,7 @@ export class luffaSDK {
//播放准备好要播放的表情视频 //播放准备好要播放的表情视频
doPlayEmoReadyAudio(): boolean { doPlayEmoReadyAudio(): boolean {
if (this.emoReady) { if (this.emoReady) {
console.log("微信 播放emo ready视频"); logger.log("微信 播放emo ready视频");
this.emoReady.play(); this.emoReady.play();
this.videoMoveIn(this.emoReady); this.videoMoveIn(this.emoReady);
return true; return true;
@@ -889,7 +890,7 @@ export class luffaSDK {
} }
//表情视频播放结束 //表情视频播放结束
doEmoFinish() { doEmoFinish() {
console.log("微信emo ready视频播放结束"); logger.log("微信emo ready视频播放结束");
this.removeEmoReadyAudio(); this.removeEmoReadyAudio();
this.replayBgAudioPause(); this.replayBgAudioPause();
} }
@@ -897,44 +898,44 @@ export class luffaSDK {
//region 微信同声传译 //region 微信同声传译
// private rrmgr: any = null; // private rrmgr: any = null;
// startRecordRecognition() { // startRecordRecognition() {
// console.log("微信 同声传译111") // logger.log("微信 同声传译111")
// if (!this.rrmgr) { // if (!this.rrmgr) {
// const plugin = requirePlugin("WechatSI"); // const plugin = requirePlugin("WechatSI");
// this.rrmgr = plugin.getRecordRecognitionManager(); // this.rrmgr = plugin.getRecordRecognitionManager();
// console.log("微信 同声传译222") // logger.log("微信 同声传译222")
// // 监听识别结果 // // 监听识别结果
// this.rrmgr.onRecognize = (res) => { // this.rrmgr.onRecognize = (res) => {
// console.log("微信 同声传译识别结果:", res.result); // logger.log("微信 同声传译识别结果:", res.result);
// }; // };
// // 监听录音结束 // // 监听录音结束
// this.rrmgr.onStop = (res) => { // this.rrmgr.onStop = (res) => {
// console.log("微信 同声传译录音结束", res); // logger.log("微信 同声传译录音结束", res);
// }; // };
// } // }
// this.rrmgr.start({ lang: "zh_CN" }); // this.rrmgr.start({ lang: "zh_CN" });
// console.log("微信 同声传译333") // logger.log("微信 同声传译333")
// } // }
// stopRecordRecognition() { // stopRecordRecognition() {
// if (this.rrmgr) { // if (this.rrmgr) {
// this.rrmgr.stop(); // this.rrmgr.stop();
// console.log("微信 同声传译444") // logger.log("微信 同声传译444")
// } // }
// } // }
//region 复制到剪贴板 //region 复制到剪贴板
/**复制文本到剪贴板 */ /**复制文本到剪贴板 */
copyToClipboard(text: string, cb?: Function) { copyToClipboard(text: string, cb?: Function) {
console.log("微信 复制到剪贴板:", text); logger.log("微信 复制到剪贴板:", text);
window["wx"].setClipboardData({ window["wx"].setClipboardData({
data: text, data: text,
success: () => { success: () => {
console.log("微信 复制成功"); logger.log("微信 复制成功");
cb && cb(true); cb && cb(true);
}, },
fail: (err) => { fail: (err) => {
console.log("微信 复制失败:", err); logger.log("微信 复制失败:", err);
cb && cb(false); cb && cb(false);
}, },
}); });
@@ -950,7 +951,7 @@ export class luffaSDK {
// debug: true, // debug: true,
// uploadUserInfo: true, // 上传用户信息,上传后可以看到有用户头像和昵称的分享信息 // uploadUserInfo: true, // 上传用户信息,上传后可以看到有用户头像和昵称的分享信息
// }); // });
// console.log("微信 uma 初始化"); // logger.log("微信 uma 初始化");
} }
//友盟统计是否开启 //友盟统计是否开启
umaSwt() { umaSwt() {
@@ -959,6 +960,6 @@ export class luffaSDK {
//友盟事件统计 //友盟事件统计
umaEvent(eventName: string, value: any = {}) { umaEvent(eventName: string, value: any = {}) {
window["wx"].uma.trackEvent(eventName, value); window["wx"].uma.trackEvent(eventName, value);
console.log("微信 uma 统计:", eventName, value); logger.log("微信 uma 统计:", eventName, value);
} }
} }
+12 -11
View File
@@ -6,11 +6,12 @@ import { BgVideo } from "./BgVideo";
import Utils from "../Common/Utils"; import Utils from "../Common/Utils";
import { InnerMsgCode } from "../Config/InnerMsgCode"; import { InnerMsgCode } from "../Config/InnerMsgCode";
import { VideoRoleType } from "../Common/GlobalValue"; import { VideoRoleType } from "../Common/GlobalValue";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
export class WebSDK { export class WebSDK {
//初始化 //初始化
init(cb: Function = null) { init(cb: Function = null) {
console.log("init webSDK"); logger.log("init webSDK");
cb && cb(); cb && cb();
} }
@@ -92,7 +93,7 @@ export class WebSDK {
// 创建音频 URL // 创建音频 URL
const audioUrl = URL.createObjectURL(audioBlob); const audioUrl = URL.createObjectURL(audioBlob);
console.log("web 播放base64音频", audioUrl); logger.log("web 播放base64音频", audioUrl);
// 创建音频元素并播放 // 创建音频元素并播放
if (this._audioInst == null) { if (this._audioInst == null) {
this._audioInst = new Audio(audioUrl); this._audioInst = new Audio(audioUrl);
@@ -104,12 +105,12 @@ export class WebSDK {
//客服功能是否支持 //客服功能是否支持
kefuSupport() { kefuSupport() {
console.log("web 不支持联系客服"); logger.log("web 不支持联系客服");
return false; return false;
} }
//进入联系客服 //进入联系客服
openKefu() { openKefu() {
console.log("web 进入联系客服"); logger.log("web 进入联系客服");
} }
//region 播放主背景视频 //region 播放主背景视频
@@ -147,7 +148,7 @@ export class WebSDK {
return; return;
} }
console.log("web 初始化主背景视频"); logger.log("web 初始化主背景视频");
if (!this.zhuVideo1) { if (!this.zhuVideo1) {
this.zhuVideo1 = bgvideo.getVideoClone(); this.zhuVideo1 = bgvideo.getVideoClone();
this.zhuVideo1.remoteUrl = this.zhuVideo1.remoteUrl =
@@ -323,18 +324,18 @@ export class WebSDK {
//region 复制到剪贴板 //region 复制到剪贴板
/**复制文本到剪贴板 */ /**复制文本到剪贴板 */
copyToClipboard(text: string, cb?: Function) { copyToClipboard(text: string, cb?: Function) {
console.log("web 复制到剪贴板:", text); logger.log("web 复制到剪贴板:", text);
if (navigator.clipboard && window.isSecureContext) { if (navigator.clipboard && window.isSecureContext) {
// 使用现代的 Clipboard API // 使用现代的 Clipboard API
navigator.clipboard navigator.clipboard
.writeText(text) .writeText(text)
.then(() => { .then(() => {
console.log("web 复制成功 (Clipboard API)"); logger.log("web 复制成功 (Clipboard API)");
cb && cb(true); cb && cb(true);
}) })
.catch((err) => { .catch((err) => {
console.log("web 复制失败 (Clipboard API)", err); logger.log("web 复制失败 (Clipboard API)", err);
this.fallbackCopyToClipboard(text, cb); this.fallbackCopyToClipboard(text, cb);
}); });
} else { } else {
@@ -361,14 +362,14 @@ export class WebSDK {
try { try {
const successful = document.execCommand("copy"); const successful = document.execCommand("copy");
if (successful) { if (successful) {
console.log("web 复制成功 (fallback)"); logger.log("web 复制成功 (fallback)");
cb && cb(true); cb && cb(true);
} else { } else {
console.log("web 复制失败 (fallback)"); logger.log("web 复制失败 (fallback)");
cb && cb(false); cb && cb(false);
} }
} catch (err) { } catch (err) {
console.log("web 复制异常 (fallback)", err); logger.log("web 复制异常 (fallback)", err);
cb && cb(false); cb && cb(false);
} }
+83 -82
View File
@@ -5,6 +5,7 @@ import { I_SDK_UserInfo_Callback, SDKManager } from "./SDKManager";
import Utils from "../Common/Utils"; import Utils from "../Common/Utils";
import uma from "../../../utils/uma.wx.min.js"; import uma from "../../../utils/uma.wx.min.js";
import { InnerMsgCode } from "../Config/InnerMsgCode"; import { InnerMsgCode } from "../Config/InnerMsgCode";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
//广告ID //广告ID
const wx_banner_ad_unit_id = "test"; const wx_banner_ad_unit_id = "test";
@@ -35,7 +36,7 @@ export class WXSDK {
// 保持屏幕常亮 // 保持屏幕常亮
window["wx"].setKeepScreenOn({ keepScreenOn: true }); window["wx"].setKeepScreenOn({ keepScreenOn: true });
WXSDK.g_InGameScene = window["wx"].getLaunchOptionsSync().scene; WXSDK.g_InGameScene = window["wx"].getLaunchOptionsSync().scene;
console.log("init 微信 - 进入游戏的场景值", WXSDK.g_InGameScene); logger.log("init 微信 - 进入游戏的场景值", WXSDK.g_InGameScene);
//显示分享按钮 //显示分享按钮
window["wx"].showShareMenu({ window["wx"].showShareMenu({
@@ -55,7 +56,7 @@ export class WXSDK {
window["wx"].onHide(() => { window["wx"].onHide(() => {
if (this.ShareCb) { if (this.ShareCb) {
this.ShareSTime = new Date().getTime(); this.ShareSTime = new Date().getTime();
console.log("分享时间差 记录:", this.ShareSTime); logger.log("分享时间差 记录:", this.ShareSTime);
} }
}); });
@@ -68,7 +69,7 @@ export class WXSDK {
//小游戏回到前台 //小游戏回到前台
onWxShow(data: any) { onWxShow(data: any) {
console.log("onWxShow:" + JSON.stringify(data)); logger.log("onWxShow:" + JSON.stringify(data));
//返回小游戏场景值 //返回小游戏场景值
if (data && data.query && data.query.ShareCode) { if (data && data.query && data.query.ShareCode) {
GlobalValue.ShareTocusid = data.query.ShareCode; GlobalValue.ShareTocusid = data.query.ShareCode;
@@ -77,7 +78,7 @@ export class WXSDK {
if (this.ShareCb) { if (this.ShareCb) {
if (this.ShareSTime) { if (this.ShareSTime) {
let nT = new Date().getTime(); let nT = new Date().getTime();
console.log("分享时间差 计算:", nT, this.ShareSTime); logger.log("分享时间差 计算:", nT, this.ShareSTime);
if (nT - this.ShareSTime > 1500) { if (nT - this.ShareSTime > 1500) {
let cb = this.ShareCb.succ; let cb = this.ShareCb.succ;
cb && cb(); cb && cb();
@@ -104,7 +105,7 @@ export class WXSDK {
checkAutoSetting(autoKey: string, cb: Function = null) { checkAutoSetting(autoKey: string, cb: Function = null) {
window["wx"].getSetting({ window["wx"].getSetting({
success(res: any) { success(res: any) {
console.log("微信 - 检测权限状态 succ:", JSON.stringify(res)); logger.log("微信 - 检测权限状态 succ:", JSON.stringify(res));
if (autoKey == "userInfo" && res.authSetting["scope.userInfo"]) { if (autoKey == "userInfo" && res.authSetting["scope.userInfo"]) {
cb && cb(true); cb && cb(true);
} else { } else {
@@ -112,7 +113,7 @@ export class WXSDK {
} }
}, },
fail(res: any) { fail(res: any) {
console.log("微信 - 检测权限状态 fail:", JSON.stringify(res)); logger.log("微信 - 检测权限状态 fail:", JSON.stringify(res));
cb && cb(false); cb && cb(false);
}, },
}); });
@@ -122,11 +123,11 @@ export class WXSDK {
* 获取个人信息 * 获取个人信息
*/ */
getUserInfo(cb: I_SDK_UserInfo_Callback = null) { getUserInfo(cb: I_SDK_UserInfo_Callback = null) {
console.log("微信 - 正在获取用户信息..."); logger.log("微信 - 正在获取用户信息...");
var self = this; var self = this;
window["wx"].getUserInfo({ window["wx"].getUserInfo({
success: (res) => { success: (res) => {
console.log("微信 - 获取用户信息成功:", res); logger.log("微信 - 获取用户信息成功:", res);
cb && cb &&
cb({ cb({
avatarUrl: res.userInfo.avatarUrl, avatarUrl: res.userInfo.avatarUrl,
@@ -134,7 +135,7 @@ export class WXSDK {
}); });
}, },
fail: (err) => { fail: (err) => {
console.log("微信 - 获取用户信息失败:", err); logger.log("微信 - 获取用户信息失败:", err);
self.openUserAuthorize(cb); self.openUserAuthorize(cb);
}, },
}); });
@@ -145,7 +146,7 @@ export class WXSDK {
window["wx"].getSetting({ window["wx"].getSetting({
scope: "scope.userInfo", scope: "scope.userInfo",
success(res: any) { success(res: any) {
console.log("微信 authorize succ:", JSON.stringify(res)); logger.log("微信 authorize succ:", JSON.stringify(res));
if (res.authSetting["scope.userInfo"]) { if (res.authSetting["scope.userInfo"]) {
self.getUserInfo(cb); self.getUserInfo(cb);
@@ -164,21 +165,21 @@ export class WXSDK {
textAlign: "center", textAlign: "center",
}, },
}); });
console.log("微信 点击开始游戏授权用户信息"); logger.log("微信 点击开始游戏授权用户信息");
button.onTap((res) => { button.onTap((res) => {
button.destroy(); button.destroy();
// if (res.userInfo) { // if (res.userInfo) {
// console.log(res.userInfo) // logger.log(res.userInfo)
// //此时可进行登录操作 // //此时可进行登录操作
// cb && cb(res.userInfo) // cb && cb(res.userInfo)
// } // }
console.log("微信 点击Tap", res); logger.log("微信 点击Tap", res);
self.getUserInfo(cb); self.getUserInfo(cb);
}); });
} }
}, },
fail(err) { fail(err) {
console.log("微信 - authorize fail", err); logger.log("微信 - authorize fail", err);
}, },
}); });
} }
@@ -188,16 +189,16 @@ export class WXSDK {
window["wx"].login({ window["wx"].login({
success: (res) => { success: (res) => {
if (res.code) { if (res.code) {
console.log("微信 - 登录成功", res.code); logger.log("微信 - 登录成功", res.code);
cb && cb({ platform: 1, code: res.code }); cb && cb({ platform: 1, code: res.code });
} else { } else {
console.log("微信 - 登录失败", res.errMsg); logger.log("微信 - 登录失败", res.errMsg);
cb && cb({ platform: 1, code: null }); cb && cb({ platform: 1, code: null });
} }
}, },
fail(res: any) { fail(res: any) {
console.log(`微信 login 调用失败`); logger.log(`微信 login 调用失败`);
console.log(res.anonymousCode); logger.log(res.anonymousCode);
cb && cb({ platform: 1, code: null }); cb && cb({ platform: 1, code: null });
}, },
}); });
@@ -206,7 +207,7 @@ export class WXSDK {
//初始化视频广告 //初始化视频广告
private init_video() { private init_video() {
if ((wx_video_ad_unit_id as any) == "test") { if ((wx_video_ad_unit_id as any) == "test") {
console.log("微信 激励广告id未配置,跳过此类型初始化"); logger.log("微信 激励广告id未配置,跳过此类型初始化");
return; return;
} }
@@ -215,13 +216,13 @@ export class WXSDK {
disableFallbackSharePage: true, // 是否禁用分享页,默认为false disableFallbackSharePage: true, // 是否禁用分享页,默认为false
}); });
this.wx_video.onLoad(() => { this.wx_video.onLoad(() => {
console.log("onLoad event emit"); logger.log("onLoad event emit");
}); });
this.wx_video.onError((err) => { this.wx_video.onError((err) => {
console.log("onError event emit", err); logger.log("onError event emit", err);
}); });
this.wx_video.onClose((res) => { this.wx_video.onClose((res) => {
console.log("onClose event emit", res); logger.log("onClose event emit", res);
// 用户点击了【关闭广告】按钮 // 用户点击了【关闭广告】按钮
// 小于 2.1.0 的基础库版本,res 是一个 undefined // 小于 2.1.0 的基础库版本,res 是一个 undefined
if ((res && res.isEnded) || res === undefined) { if ((res && res.isEnded) || res === undefined) {
@@ -240,7 +241,7 @@ export class WXSDK {
//初始化插屏广告 //初始化插屏广告
private init_splash() { private init_splash() {
if ((wx_splash_ad_unit_id as any) == "test") { if ((wx_splash_ad_unit_id as any) == "test") {
console.log("微信 插屏广告id未配置,跳过此类型初始化"); logger.log("微信 插屏广告id未配置,跳过此类型初始化");
return; return;
} }
// 创建插屏广告实例,提前初始化 // 创建插屏广告实例,提前初始化
@@ -249,13 +250,13 @@ export class WXSDK {
adUnitId: wx_splash_ad_unit_id, adUnitId: wx_splash_ad_unit_id,
}); });
this.wx_splash.onLoad(() => { this.wx_splash.onLoad(() => {
console.log("splash onLoad event emit"); logger.log("splash onLoad event emit");
}); });
this.wx_splash.onError((err) => { this.wx_splash.onError((err) => {
console.log("splash onError event emit", err); logger.log("splash onError event emit", err);
}); });
this.wx_splash.onClose((res) => { this.wx_splash.onClose((res) => {
console.log("splash onClose event emit", res); logger.log("splash onClose event emit", res);
}); });
} }
} }
@@ -263,7 +264,7 @@ export class WXSDK {
//初始化Banner //初始化Banner
private init_banner() { private init_banner() {
if ((wx_banner_ad_unit_id as any) == "test") { if ((wx_banner_ad_unit_id as any) == "test") {
console.log("微信 横幅广告id未配置,跳过此类型初始化"); logger.log("微信 横幅广告id未配置,跳过此类型初始化");
return; return;
} }
let winSize = window["wx"].getSystemInfoSync(); let winSize = window["wx"].getSystemInfoSync();
@@ -291,7 +292,7 @@ export class WXSDK {
//显示视频广告 //显示视频广告
show_video(callback: Function, tag: number) { show_video(callback: Function, tag: number) {
if ((wx_video_ad_unit_id as any) == "test") { if ((wx_video_ad_unit_id as any) == "test") {
console.log("未接入广告ID,视频广告请求直接返回"); logger.log("未接入广告ID,视频广告请求直接返回");
callback && callback(); callback && callback();
SDKManager.video_ad_back(); SDKManager.video_ad_back();
return; return;
@@ -325,7 +326,7 @@ export class WXSDK {
this.wx_splash.show(); this.wx_splash.show();
}) })
.catch((err) => { .catch((err) => {
console.log(err); logger.log(err);
}); });
} }
} }
@@ -439,7 +440,7 @@ export class WXSDK {
let picmap = this.SharePicAry[rand1]; let picmap = this.SharePicAry[rand1];
let rand2 = Utils.getRandomInt(0, this.ShareTextAry.length - 1); let rand2 = Utils.getRandomInt(0, this.ShareTextAry.length - 1);
let text = this.ShareTextAry[rand2]; let text = this.ShareTextAry[rand2];
console.log("分享:", rand1, rand2); logger.log("分享:", rand1, rand2);
return { return {
title: text, title: text,
query: "ShareCode=" + "user_default", //ModelPlayer.I.getPlayerId(), query: "ShareCode=" + "user_default", //ModelPlayer.I.getPlayerId(),
@@ -449,7 +450,7 @@ export class WXSDK {
} }
//主动拉起分享 //主动拉起分享
show_share(rewardCB?: Function) { show_share(rewardCB?: Function) {
console.log("主动拉起分享"); logger.log("主动拉起分享");
let info: any = this.shareInfo(); let info: any = this.shareInfo();
info.succ = rewardCB; info.succ = rewardCB;
info.fail = null; info.fail = null;
@@ -465,7 +466,7 @@ export class WXSDK {
//显示游戏圈 //显示游戏圈
show_gameClub(leftRatio, topRatio, widthRatio, heightRatio) { show_gameClub(leftRatio, topRatio, widthRatio, heightRatio) {
console.log("显示游戏圈"); logger.log("显示游戏圈");
if (this.wx_gameClub) { if (this.wx_gameClub) {
this.wx_gameClub.show(); this.wx_gameClub.show();
} else { } else {
@@ -475,7 +476,7 @@ export class WXSDK {
let w = windowinfo.screenWidth * widthRatio; //按钮宽高 let w = windowinfo.screenWidth * widthRatio; //按钮宽高
let h = windowinfo.screenHeight * heightRatio; let h = windowinfo.screenHeight * heightRatio;
console.log( logger.log(
"游戏圈按钮配置:", "游戏圈按钮配置:",
windowinfo, windowinfo,
leftRatio, leftRatio,
@@ -503,7 +504,7 @@ export class WXSDK {
} }
//隐藏游戏圈 //隐藏游戏圈
hide_gameClub() { hide_gameClub() {
console.log("隐藏游戏圈"); logger.log("隐藏游戏圈");
if (this.wx_gameClub) { if (this.wx_gameClub) {
this.wx_gameClub.hide(); this.wx_gameClub.hide();
} }
@@ -519,7 +520,7 @@ export class WXSDK {
private _iacIdx = 0; //音频播放索引 private _iacIdx = 0; //音频播放索引
playBase64Audio(base64, loop) { playBase64Audio(base64, loop) {
if (!this.checkSupportBase64Audio()) { if (!this.checkSupportBase64Audio()) {
console.log("微信平台不支持base64音频播放"); logger.log("微信平台不支持base64音频播放");
return; return;
} }
@@ -534,24 +535,24 @@ export class WXSDK {
//1.删除上一个音频 //1.删除上一个音频
const lastPath = const lastPath =
window["wx"].env.USER_DATA_PATH + `/ordernew${self._iacIdx}.mp3`; window["wx"].env.USER_DATA_PATH + `/ordernew${self._iacIdx}.mp3`;
console.log("微信 正在删除上一个音频 ->", lastPath); logger.log("微信 正在删除上一个音频 ->", lastPath);
fs.removeSavedFile({ fs.removeSavedFile({
filePath: lastPath, filePath: lastPath,
success(res) { success(res) {
console.log("微信 删除上一个音频成功", res); logger.log("微信 删除上一个音频成功", res);
}, },
fail(err) { fail(err) {
console.log("微信 删除上一个音频失败", err); logger.log("微信 删除上一个音频失败", err);
}, },
complete(res) { complete(res) {
console.log("微信 删除上一个音频完成", res); logger.log("微信 删除上一个音频完成", res);
//2.保存当前音频 //2.保存当前音频
//这里需要每次保存时换一下名字的原因是:innerAudioContext设置路径时如果路径相同,会认为还是同一个音频,不会重新加载,所以需要每次保存时换一下名字 //这里需要每次保存时换一下名字的原因是:innerAudioContext设置路径时如果路径相同,会认为还是同一个音频,不会重新加载,所以需要每次保存时换一下名字
self._iacIdx++; self._iacIdx++;
const audioPath = const audioPath =
window["wx"].env.USER_DATA_PATH + `/ordernew${self._iacIdx}.mp3`; window["wx"].env.USER_DATA_PATH + `/ordernew${self._iacIdx}.mp3`;
console.log("微信 正在保存本次音频 ->", audioPath); logger.log("微信 正在保存本次音频 ->", audioPath);
fs.writeFile({ fs.writeFile({
filePath: audioPath, filePath: audioPath,
data: substring, data: substring,
@@ -561,18 +562,18 @@ export class WXSDK {
self._innerAudioContext = window["wx"].createInnerAudioContext(); self._innerAudioContext = window["wx"].createInnerAudioContext();
// 添加播放结束的回调 // 添加播放结束的回调
self._innerAudioContext.onEnded(() => { self._innerAudioContext.onEnded(() => {
console.log("微信 AI语音播放结束"); logger.log("微信 AI语音播放结束");
self._innerAudioContext.stop(); // 使用 stop 方法停止音频并重置播放状态 self._innerAudioContext.stop(); // 使用 stop 方法停止音频并重置播放状态
self._innerAudioContext.destroy(); // 销毁音频实例 self._innerAudioContext.destroy(); // 销毁音频实例
self._innerAudioContext = null; self._innerAudioContext = null;
}); });
} }
console.log("微信 播放base64音频", audioPath); logger.log("微信 播放base64音频", audioPath);
self._innerAudioContext.src = audioPath; self._innerAudioContext.src = audioPath;
self._innerAudioContext.play(); // 开始播放音频 self._innerAudioContext.play(); // 开始播放音频
}, },
fail(err) { fail(err) {
console.log("微信 保存本次音频失败", err); logger.log("微信 保存本次音频失败", err);
}, },
}); });
}, },
@@ -587,7 +588,7 @@ export class WXSDK {
//监听向微信后台请求检查更新结果事件。微信在小程序每次启动(包括热启动)时自动检查更新,不需由开发者主动触发。 //监听向微信后台请求检查更新结果事件。微信在小程序每次启动(包括热启动)时自动检查更新,不需由开发者主动触发。
updateManager.onCheckForUpdate((res) => { updateManager.onCheckForUpdate((res) => {
// 请求完新版本信息的回调 // 请求完新版本信息的回调
console.log("微信 检查是否有新版本:", res.hasUpdate); logger.log("微信 检查是否有新版本:", res.hasUpdate);
}); });
//监听小程序有版本更新事件。客户端主动触发下载(无需开发者触发),下载成功后回调 //监听小程序有版本更新事件。客户端主动触发下载(无需开发者触发),下载成功后回调
@@ -606,7 +607,7 @@ export class WXSDK {
//监听小程序更新失败事件。小程序有新版本,客户端主动触发下载(无需开发者触发),下载失败(可能是网络原因等)时回调 //监听小程序更新失败事件。小程序有新版本,客户端主动触发下载(无需开发者触发),下载失败(可能是网络原因等)时回调
updateManager.onUpdateFailed(function (err) { updateManager.onUpdateFailed(function (err) {
console.log("微信 新版本下载失败", err); logger.log("微信 新版本下载失败", err);
}); });
} }
@@ -615,7 +616,7 @@ export class WXSDK {
if (window["wx"].openCustomerServiceConversation) { if (window["wx"].openCustomerServiceConversation) {
return true; return true;
} }
console.log("微信 不支持联系客服"); logger.log("微信 不支持联系客服");
return false; return false;
} }
//进入联系客服 //进入联系客服
@@ -628,10 +629,10 @@ export class WXSDK {
wx.openCustomerServiceConversation({ wx.openCustomerServiceConversation({
success: (res) => { success: (res) => {
const { path, query } = res; const { path, query } = res;
console.log("微信 进入客服成功", path, query); logger.log("微信 进入客服成功", path, query);
}, },
fail: (res) => { fail: (res) => {
console.log("微信 进入客服失败", res); logger.log("微信 进入客服失败", res);
}, },
}); });
} }
@@ -651,18 +652,18 @@ export class WXSDK {
return; return;
} }
let self = this; let self = this;
console.log("微信 播放背景视频组件1", remoteUrl); logger.log("微信 播放背景视频组件1", remoteUrl);
//this.curPlayType = vtype; //this.curPlayType = vtype;
if (!this._bgVideo) { if (!this._bgVideo) {
this._bgVideo = this.createVideoHandle(); this._bgVideo = this.createVideoHandle();
// this._bgVideo.onPlay(() => { // this._bgVideo.onPlay(() => {
// console.log("微信 背景视频播放开始"); // logger.log("微信 背景视频播放开始");
// }) // })
this._bgVideo.onTimeUpdate((_tinfo: any) => { this._bgVideo.onTimeUpdate((_tinfo: any) => {
// console.log("微信 背景视频播放进度", self._bgShow, _tinfo); // logger.log("微信 背景视频播放进度", self._bgShow, _tinfo);
if (!self._bgShow) { if (!self._bgShow) {
if (_tinfo && _tinfo.position > 0.01) { if (_tinfo && _tinfo.position > 0.01) {
console.log("微信 背景视频1进入视野"); logger.log("微信 背景视频1进入视野");
self.videoMoveIn(self._bgVideo); self.videoMoveIn(self._bgVideo);
self._bgShow = true; self._bgShow = true;
self.removeBgAudioNext(); self.removeBgAudioNext();
@@ -697,18 +698,18 @@ export class WXSDK {
extra: any = {} extra: any = {}
) { ) {
this.removeBgAudioNext(); this.removeBgAudioNext();
console.log("微信 创建背景视频组件2--->", remoteUrl); logger.log("微信 创建背景视频组件2--->", remoteUrl);
let self = this; let self = this;
if (!this._bgTempVideo) { if (!this._bgTempVideo) {
this._bgTempVideo = this.createVideoHandle(); this._bgTempVideo = this.createVideoHandle();
// this._bgTempVideo.onPlay(() => { // this._bgTempVideo.onPlay(() => {
// console.log("微信 临时背景视频播放开始"); // logger.log("微信 临时背景视频播放开始");
// }) // })
this._bgTempVideo.onTimeUpdate((_tinfo: any) => { this._bgTempVideo.onTimeUpdate((_tinfo: any) => {
// console.log("微信 临时背景视频播放进度", self._bgTempShow, _tinfo); // logger.log("微信 临时背景视频播放进度", self._bgTempShow, _tinfo);
if (!self._bgTempShow) { if (!self._bgTempShow) {
if (_tinfo && _tinfo.position > 0.01) { if (_tinfo && _tinfo.position > 0.01) {
console.log("微信 背景视频2进入视野"); logger.log("微信 背景视频2进入视野");
self._bgTempShow = true; self._bgTempShow = true;
self.videoMoveIn(self._bgTempVideo); self.videoMoveIn(self._bgTempVideo);
self.removeBgAudio(); self.removeBgAudio();
@@ -749,18 +750,18 @@ export class WXSDK {
return; return;
} }
let self = this; let self = this;
console.log("微信 播放emo视频1", remoteUrl); logger.log("微信 播放emo视频1", remoteUrl);
this.curPlayType = vtype; this.curPlayType = vtype;
if (!this._emoVideo) { if (!this._emoVideo) {
this._emoVideo = this.createVideoHandle(); this._emoVideo = this.createVideoHandle();
// this._emoVideo.onPlay(() => { // this._emoVideo.onPlay(() => {
// console.log("微信 背景视频播放开始"); // logger.log("微信 背景视频播放开始");
// }) // })
this._emoVideo.onTimeUpdate((_tinfo: any) => { this._emoVideo.onTimeUpdate((_tinfo: any) => {
// console.log("微信 背景视频播放进度", self._emoShow, _tinfo); // logger.log("微信 背景视频播放进度", self._emoShow, _tinfo);
if (!self._emoShow) { if (!self._emoShow) {
if (_tinfo && _tinfo.position > 0.01) { if (_tinfo && _tinfo.position > 0.01) {
console.log("微信 emo视频1准备好了"); logger.log("微信 emo视频1准备好了");
self._emoShow = true; self._emoShow = true;
self.removeEmoAudioNext(); self.removeEmoAudioNext();
self.setEmoReadyAudio(self._emoVideo); self.setEmoReadyAudio(self._emoVideo);
@@ -795,19 +796,19 @@ export class WXSDK {
extra: any = {} extra: any = {}
) { ) {
this.removeEmoAudioNext(); this.removeEmoAudioNext();
console.log("微信 播放emo视频2--->", remoteUrl); logger.log("微信 播放emo视频2--->", remoteUrl);
this.curPlayType = vtype; this.curPlayType = vtype;
let self = this; let self = this;
if (!this._emoTempVideo) { if (!this._emoTempVideo) {
this._emoTempVideo = this.createVideoHandle(); this._emoTempVideo = this.createVideoHandle();
// this._emoTempVideo.onPlay(() => { // this._emoTempVideo.onPlay(() => {
// console.log("微信 临时背景视频播放开始"); // logger.log("微信 临时背景视频播放开始");
// }) // })
this._emoTempVideo.onTimeUpdate((_tinfo: any) => { this._emoTempVideo.onTimeUpdate((_tinfo: any) => {
// console.log("微信 临时背景视频播放进度", self._emoTempShow, _tinfo); // logger.log("微信 临时背景视频播放进度", self._emoTempShow, _tinfo);
if (!self._emoTempShow) { if (!self._emoTempShow) {
if (_tinfo && _tinfo.position > 0.01) { if (_tinfo && _tinfo.position > 0.01) {
console.log("微信 emo视频2已准备好"); logger.log("微信 emo视频2已准备好");
self._emoTempShow = true; self._emoTempShow = true;
self.removeEmoAudio(); self.removeEmoAudio();
self.setEmoReadyAudio(self._emoTempVideo); self.setEmoReadyAudio(self._emoTempVideo);
@@ -890,19 +891,19 @@ export class WXSDK {
this.videoAdaInfo.x = -(this.videoWidth * ratioh - size.width) / 2; this.videoAdaInfo.x = -(this.videoWidth * ratioh - size.width) / 2;
this.videoAdaInfo.y = 0; this.videoAdaInfo.y = 0;
} }
console.log("微信 视频适配信息", this.videoAdaInfo, size); logger.log("微信 视频适配信息", this.videoAdaInfo, size);
return this.videoAdaInfo; return this.videoAdaInfo;
} }
//设置暂停播放的主视频 //设置暂停播放的主视频
private vpWait: any = null; private vpWait: any = null;
setBgAudioPause(wait: any) { setBgAudioPause(wait: any) {
console.log("微信 主视频暂停播放"); logger.log("微信 主视频暂停播放");
this.vpWait = wait; this.vpWait = wait;
this.vpWait.pause(); this.vpWait.pause();
} }
replayBgAudioPause() { replayBgAudioPause() {
console.log("微信 主视频继续播放"); logger.log("微信 主视频继续播放");
if (this.vpWait) { if (this.vpWait) {
this.vpWait.play(); this.vpWait.play();
} }
@@ -911,7 +912,7 @@ export class WXSDK {
//设置准备好要播放的表情视频 //设置准备好要播放的表情视频
private emoReady: any = null; private emoReady: any = null;
setEmoReadyAudio(au: any) { setEmoReadyAudio(au: any) {
console.log("微信 设置emo ready视频"); logger.log("微信 设置emo ready视频");
if (this.emoReady) { if (this.emoReady) {
this.emoReady.stop(); this.emoReady.stop();
this.videoMoveOut(this.emoReady); this.videoMoveOut(this.emoReady);
@@ -921,7 +922,7 @@ export class WXSDK {
} }
//移除准备好要播放的表情视频 //移除准备好要播放的表情视频
removeEmoReadyAudio() { removeEmoReadyAudio() {
console.log("微信 移除emo ready视频"); logger.log("微信 移除emo ready视频");
if (this.emoReady) { if (this.emoReady) {
this.emoReady.stop(); this.emoReady.stop();
this.videoMoveOut(this.emoReady); this.videoMoveOut(this.emoReady);
@@ -931,7 +932,7 @@ export class WXSDK {
//播放准备好要播放的表情视频 //播放准备好要播放的表情视频
doPlayEmoReadyAudio(): boolean { doPlayEmoReadyAudio(): boolean {
if (this.emoReady) { if (this.emoReady) {
console.log("微信 播放emo ready视频"); logger.log("微信 播放emo ready视频");
this.emoReady.play(); this.emoReady.play();
this.videoMoveIn(this.emoReady); this.videoMoveIn(this.emoReady);
return true; return true;
@@ -940,7 +941,7 @@ export class WXSDK {
} }
//表情视频播放结束 //表情视频播放结束
doEmoFinish() { doEmoFinish() {
console.log("微信emo ready视频播放结束"); logger.log("微信emo ready视频播放结束");
this.removeEmoReadyAudio(); this.removeEmoReadyAudio();
this.replayBgAudioPause(); this.replayBgAudioPause();
} }
@@ -948,44 +949,44 @@ export class WXSDK {
//region 微信同声传译 //region 微信同声传译
// private rrmgr: any = null; // private rrmgr: any = null;
// startRecordRecognition() { // startRecordRecognition() {
// console.log("微信 同声传译111") // logger.log("微信 同声传译111")
// if (!this.rrmgr) { // if (!this.rrmgr) {
// const plugin = requirePlugin("WechatSI"); // const plugin = requirePlugin("WechatSI");
// this.rrmgr = plugin.getRecordRecognitionManager(); // this.rrmgr = plugin.getRecordRecognitionManager();
// console.log("微信 同声传译222") // logger.log("微信 同声传译222")
// // 监听识别结果 // // 监听识别结果
// this.rrmgr.onRecognize = (res) => { // this.rrmgr.onRecognize = (res) => {
// console.log("微信 同声传译识别结果:", res.result); // logger.log("微信 同声传译识别结果:", res.result);
// }; // };
// // 监听录音结束 // // 监听录音结束
// this.rrmgr.onStop = (res) => { // this.rrmgr.onStop = (res) => {
// console.log("微信 同声传译录音结束", res); // logger.log("微信 同声传译录音结束", res);
// }; // };
// } // }
// this.rrmgr.start({ lang: "zh_CN" }); // this.rrmgr.start({ lang: "zh_CN" });
// console.log("微信 同声传译333") // logger.log("微信 同声传译333")
// } // }
// stopRecordRecognition() { // stopRecordRecognition() {
// if (this.rrmgr) { // if (this.rrmgr) {
// this.rrmgr.stop(); // this.rrmgr.stop();
// console.log("微信 同声传译444") // logger.log("微信 同声传译444")
// } // }
// } // }
//region 复制到剪贴板 //region 复制到剪贴板
/**复制文本到剪贴板 */ /**复制文本到剪贴板 */
copyToClipboard(text: string, cb?: Function) { copyToClipboard(text: string, cb?: Function) {
console.log("微信 复制到剪贴板:", text); logger.log("微信 复制到剪贴板:", text);
window["wx"].setClipboardData({ window["wx"].setClipboardData({
data: text, data: text,
success: () => { success: () => {
console.log("微信 复制成功"); logger.log("微信 复制成功");
cb && cb(true); cb && cb(true);
}, },
fail: (err) => { fail: (err) => {
console.log("微信 复制失败:", err); logger.log("微信 复制失败:", err);
cb && cb(false); cb && cb(false);
}, },
}); });
@@ -1001,7 +1002,7 @@ export class WXSDK {
debug: true, debug: true,
uploadUserInfo: true, // 上传用户信息,上传后可以看到有用户头像和昵称的分享信息 uploadUserInfo: true, // 上传用户信息,上传后可以看到有用户头像和昵称的分享信息
}); });
console.log("微信 uma 初始化"); logger.log("微信 uma 初始化");
} }
//友盟统计是否开启 //友盟统计是否开启
umaSwt() { umaSwt() {
@@ -1010,6 +1011,6 @@ export class WXSDK {
//友盟事件统计 //友盟事件统计
umaEvent(eventName: string, value: any = {}) { umaEvent(eventName: string, value: any = {}) {
window["wx"].uma.trackEvent(eventName, value); window["wx"].uma.trackEvent(eventName, value);
console.log("微信 uma 统计:", eventName, value); logger.log("微信 uma 统计:", eventName, value);
} }
} }
+8 -6
View File
@@ -1,5 +1,7 @@
import { _decorator, Component, EditBox, Label, macro, Node, view } from 'cc'; import { _decorator, Component, EditBox, Label, macro, Node, view } from 'cc';
import GameRootUI from './GameRootUI'; import GameRootUI from './GameRootUI';
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property, requireComponent } = _decorator; const { ccclass, property, requireComponent } = _decorator;
//输入框事件监听 //输入框事件监听
@@ -18,7 +20,7 @@ export class EditBoxEvent extends Component {
this.node.on(EditBox.EventType.EDITING_DID_BEGAN, this.onEditDidBegan, this); this.node.on(EditBox.EventType.EDITING_DID_BEGAN, this.onEditDidBegan, this);
this.node.on(EditBox.EventType.EDITING_DID_ENDED, this.onEditDidEnded, this); this.node.on(EditBox.EventType.EDITING_DID_ENDED, this.onEditDidEnded, this);
this.node.on(EditBox.EventType.EDITING_RETURN, this.onEditingReturn, this); this.node.on(EditBox.EventType.EDITING_RETURN, this.onEditingReturn, this);
console.log("EditBoxEvent: start.") logger.log("EditBoxEvent: start.")
} }
update(deltaTime: number) { update(deltaTime: number) {
@@ -27,20 +29,20 @@ export class EditBoxEvent extends Component {
onEditDidBegan(editbox, customEventData) { onEditDidBegan(editbox, customEventData) {
console.log("EditBoxEvent: 开始编辑...") logger.log("EditBoxEvent: 开始编辑...")
// view.setOrientation(macro.ORIENTATION_LANDSCAPE); //设置横屏 // view.setOrientation(macro.ORIENTATION_LANDSCAPE); //设置横屏
// console.log("窗口大小 开始:", view.getVisibleSize(), GameRootUI.MainCamera) // logger.log("窗口大小 开始:", view.getVisibleSize(), GameRootUI.MainCamera)
} }
onEditDidEnded(editbox, customEventData) { onEditDidEnded(editbox, customEventData) {
console.log("EditBoxEvent: 结束编辑.") logger.log("EditBoxEvent: 结束编辑.")
// view.setOrientation(macro.ORIENTATION_LANDSCAPE); //设置横屏 // view.setOrientation(macro.ORIENTATION_LANDSCAPE); //设置横屏
// console.log("窗口大小 结束:", view.getVisibleSize(), GameRootUI.MainCamera) // logger.log("窗口大小 结束:", view.getVisibleSize(), GameRootUI.MainCamera)
} }
onEditingReturn(editbox, customEventData) { onEditingReturn(editbox, customEventData) {
console.log("EditBoxEvent: 按下返回.") logger.log("EditBoxEvent: 按下返回.")
} }
} }
+5 -4
View File
@@ -18,6 +18,7 @@ import { CommonConfig } from "../Config/CommonConfig";
import ResManager from "../Manager/ResManager"; import ResManager from "../Manager/ResManager";
import Utils from "./Utils"; import Utils from "./Utils";
import { UITransitionHelper } from "../../chat18x/utils/UITransitionHelper"; import { UITransitionHelper } from "../../chat18x/utils/UITransitionHelper";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property, executeInEditMode, disallowMultiple } = _decorator; const { ccclass, property, executeInEditMode, disallowMultiple } = _decorator;
@@ -63,7 +64,7 @@ export default class GameRootUI extends Component {
callback?: Function callback?: Function
) { ) {
if (!this.defaultView) { if (!this.defaultView) {
console.warn("GameRootUI: defaultView not found"); logger.warn("GameRootUI: defaultView not found");
callback && callback(); callback && callback();
return; return;
} }
@@ -76,18 +77,18 @@ export default class GameRootUI extends Component {
return; return;
} }
console.log( logger.log(
`GameRootUI: Executing ${transitionType} animation on defaultView` `GameRootUI: Executing ${transitionType} animation on defaultView`
); );
switch (transitionType) { switch (transitionType) {
case "slide_left": case "slide_left":
console.log( logger.log(
"GameRootUI: About to call slideInFromLeft, node valid:", "GameRootUI: About to call slideInFromLeft, node valid:",
this.defaultView.isValid this.defaultView.isValid
); );
UITransitionHelper.slideInFromLeft(this.defaultView, duration, () => { UITransitionHelper.slideInFromLeft(this.defaultView, duration, () => {
console.log("GameRootUI: slideInFromLeft animation completed"); logger.log("GameRootUI: slideInFromLeft animation completed");
callback && callback(); callback && callback();
}); });
break; break;
+67 -66
View File
@@ -5,6 +5,7 @@ import { I_UserInfo } from "../Config/CommonConfig";
import SubManager from "../../Sub/SubManager"; import SubManager from "../../Sub/SubManager";
import Utils from "./Utils"; import Utils from "./Utils";
import { InnerMsgCode } from "../Config/InnerMsgCode"; import { InnerMsgCode } from "../Config/InnerMsgCode";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@@ -80,7 +81,7 @@ export default class HttpUnit {
xhr.onreadystatechange = () => { xhr.onreadystatechange = () => {
if (xhr.readyState == 4) { if (xhr.readyState == 4) {
if (xhr.status >= 200 && xhr.status < 300) { if (xhr.status >= 200 && xhr.status < 300) {
// console.log("[Http] 返回", xhr.response); // logger.log("[Http] 返回", xhr.response);
resolve(JSON.parse(xhr.response)); resolve(JSON.parse(xhr.response));
} else { } else {
reason(xhr.status) reason(xhr.status)
@@ -88,12 +89,12 @@ export default class HttpUnit {
} }
}; };
xhr.onerror = (error) => { xhr.onerror = (error) => {
console.error("http request onerror"); logger.error("http request onerror");
SubManager.ShowPrompt("网络错误,请检查网络连接"); SubManager.ShowPrompt("网络错误,请检查网络连接");
reason(error) reason(error)
}; };
xhr.ontimeout = (e) => { xhr.ontimeout = (e) => {
console.error("http request timeout"); logger.error("http request timeout");
SubManager.ShowPrompt("网络错误,请检查网络连接"); SubManager.ShowPrompt("网络错误,请检查网络连接");
reason(e) reason(e)
} }
@@ -269,9 +270,9 @@ export default class HttpUnit {
public login(cb: Function = null) { public login(cb: Function = null) {
this.loginCB = cb; this.loginCB = cb;
SDKManager.login((_loginData) => { SDKManager.login((_loginData) => {
console.log("SDK登录成功", _loginData) logger.log("SDK登录成功", _loginData)
SDKManager.getUserInfo((userInfo) => { SDKManager.getUserInfo((userInfo) => {
console.log("SDK获取用户信息成功", userInfo) logger.log("SDK获取用户信息成功", userInfo)
// let serparam = { // let serparam = {
// platform: _loginData.platform, // platform: _loginData.platform,
// code: _loginData.code, // code: _loginData.code,
@@ -282,7 +283,7 @@ export default class HttpUnit {
_loginData.avatar = userInfo.avatarUrl; _loginData.avatar = userInfo.avatarUrl;
if (GlobalValue.IsTest) { if (GlobalValue.IsTest) {
console.log("登录测试环境") logger.log("登录测试环境")
this.loginSer({platform:0, code:12345}, this.initData.bind(this)) this.loginSer({platform:0, code:12345}, this.initData.bind(this))
} else { } else {
if (_loginData.code == null) { if (_loginData.code == null) {
@@ -295,7 +296,7 @@ export default class HttpUnit {
_loginData.platform = 0 _loginData.platform = 0
// _loginData.code = 123455 //测试代码 // _loginData.code = 123455 //测试代码
} }
console.log("登录正式环境 loginData.code: ", _loginData) logger.log("登录正式环境 loginData.code: ", _loginData)
this.loginSer(_loginData, this.initData.bind(this)) this.loginSer(_loginData, this.initData.bind(this))
} }
}) })
@@ -309,12 +310,12 @@ export default class HttpUnit {
//登录服务器 //登录服务器
private async loginSer(msg, cb: Function = null) { private async loginSer(msg, cb: Function = null) {
let data: any = await HttpUnit.ins.api("login", msg, "POST", true); let data: any = await HttpUnit.ins.api("login", msg, "POST", true);
console.log("登录----> 玩家数据:", msg, data) logger.log("登录----> 玩家数据:", msg, data)
if (data && data.code == 1) { if (data && data.code == 1) {
HttpUnit.PlayerToken = data.data.token HttpUnit.PlayerToken = data.data.token
HttpUnit.LoginState = 2 HttpUnit.LoginState = 2
console.log("HttpUnit.PlayerToken:", HttpUnit.PlayerToken) logger.log("HttpUnit.PlayerToken:", HttpUnit.PlayerToken)
//获取玩家信息 //获取玩家信息
// this.getUserInfo(cb); // this.getUserInfo(cb);
HttpUnit.UserInfo = data.data.user_info; HttpUnit.UserInfo = data.data.user_info;
@@ -322,7 +323,7 @@ export default class HttpUnit {
this.getCommSetting(); this.getCommSetting();
cb && cb(data.data.user_info); cb && cb(data.data.user_info);
}else{ }else{
console.log("登陆失败:"+ data); logger.log("登陆失败:"+ data);
if (data && data.msg) { if (data && data.msg) {
SubManager.ShowPrompt(`登陆失败,${data.msg}`); SubManager.ShowPrompt(`登陆失败,${data.msg}`);
} else { } else {
@@ -334,11 +335,11 @@ export default class HttpUnit {
//获取关卡列表数据 //获取关卡列表数据
public async getLevelList(cb: Function = null) { public async getLevelList(cb: Function = null) {
let data: any = await HttpUnit.ins.api("game/levels", {}, "POST", true); let data: any = await HttpUnit.ins.api("game/levels", {}, "POST", true);
console.log("关卡数据:", data) logger.log("关卡数据:", data)
if (data && data.code == 1) { if (data && data.code == 1) {
cb && cb(data.data); cb && cb(data.data);
}else{ }else{
console.log("获取关卡数据失败:"+ data); logger.log("获取关卡数据失败:"+ data);
if (data && data.msg) { if (data && data.msg) {
SubManager.ShowPrompt(`数据异常,${data.msg}`); SubManager.ShowPrompt(`数据异常,${data.msg}`);
} }
@@ -347,11 +348,11 @@ export default class HttpUnit {
/**开始关卡*/ /**开始关卡*/
public async levelStart(msg:any, cb: Function = null) { public async levelStart(msg:any, cb: Function = null) {
let data: any = await HttpUnit.ins.api("game/start", msg, "POST", true); let data: any = await HttpUnit.ins.api("game/start", msg, "POST", true);
console.log("开始新关卡:", msg, data) logger.log("开始新关卡:", msg, data)
if (data && data.code == 1) { if (data && data.code == 1) {
cb && cb(data.data); cb && cb(data.data);
}else{ }else{
console.log("开始关卡失败:"+ data); logger.log("开始关卡失败:"+ data);
if (data && data.msg) { if (data && data.msg) {
SubManager.ShowPrompt(`数据异常,${data.msg}`); SubManager.ShowPrompt(`数据异常,${data.msg}`);
} }
@@ -360,11 +361,11 @@ export default class HttpUnit {
/**推进关卡*/ /**推进关卡*/
public async sendUserTalk(msg:any, cb: Function = null) { public async sendUserTalk(msg:any, cb: Function = null) {
let data: any = await HttpUnit.ins.api("game/propel", msg, "POST", true); let data: any = await HttpUnit.ins.api("game/propel", msg, "POST", true);
console.log("推进关卡:", msg, data) logger.log("推进关卡:", msg, data)
if (data && data.code == 1) { if (data && data.code == 1) {
cb && cb(data.data); cb && cb(data.data);
}else{ }else{
console.log("推进关卡失败:"+ data); logger.log("推进关卡失败:"+ data);
if (data && data.msg) { if (data && data.msg) {
SubManager.ShowPrompt(`数据异常,${data.msg}`); SubManager.ShowPrompt(`数据异常,${data.msg}`);
} }
@@ -374,11 +375,11 @@ export default class HttpUnit {
/**结束关卡*/ /**结束关卡*/
public async sendLevelFinish(msg:any, cb: Function = null) { public async sendLevelFinish(msg:any, cb: Function = null) {
let data: any = await HttpUnit.ins.api("game/end", msg, "POST", true); let data: any = await HttpUnit.ins.api("game/end", msg, "POST", true);
console.log("结束关卡:", msg, data) logger.log("结束关卡:", msg, data)
if (data && data.code == 1) { if (data && data.code == 1) {
cb && cb(data.data); cb && cb(data.data);
}else{ }else{
console.log("结束关卡失败:"+ data); logger.log("结束关卡失败:"+ data);
if (data && data.msg) { if (data && data.msg) {
SubManager.ShowPrompt(`数据异常,${data.msg}`); SubManager.ShowPrompt(`数据异常,${data.msg}`);
} }
@@ -387,11 +388,11 @@ export default class HttpUnit {
/**增加次数,更新关卡*/ /**增加次数,更新关卡*/
public async addTalkCnt(msg:any, cb: Function = null) { public async addTalkCnt(msg:any, cb: Function = null) {
let data: any = await HttpUnit.ins.api("game/update", msg, "POST", true); let data: any = await HttpUnit.ins.api("game/update", msg, "POST", true);
console.log("更新关卡:", msg, data) logger.log("更新关卡:", msg, data)
if (data && data.code == 1) { if (data && data.code == 1) {
cb && cb(data.data); cb && cb(data.data);
}else{ }else{
console.log("更新关卡失败:"+ data); logger.log("更新关卡失败:"+ data);
if (data && data.msg) { if (data && data.msg) {
SubManager.ShowPrompt(`数据异常,${data.msg}`); SubManager.ShowPrompt(`数据异常,${data.msg}`);
} }
@@ -400,11 +401,11 @@ export default class HttpUnit {
/**获取AI语音*/ /**获取AI语音*/
public async getAIVoice(msg:any, cb: Function = null) { public async getAIVoice(msg:any, cb: Function = null) {
let data: any = await HttpUnit.ins.api("game/voice", msg, "POST", true); let data: any = await HttpUnit.ins.api("game/voice", msg, "POST", true);
console.log("获取AI语音:", msg, data) logger.log("获取AI语音:", msg, data)
if (data && data.code == 1) { if (data && data.code == 1) {
cb && cb(data.data); cb && cb(data.data);
}else{ }else{
console.log("获取AI语音失败:"+ data); logger.log("获取AI语音失败:"+ data);
if (data && data.msg) { if (data && data.msg) {
SubManager.ShowPrompt(`数据异常,${data.msg}`); SubManager.ShowPrompt(`数据异常,${data.msg}`);
} }
@@ -413,11 +414,11 @@ export default class HttpUnit {
/**获取当前聊天状态*/ /**获取当前聊天状态*/
public async getTalkStage(msg:any, cb: Function = null) { public async getTalkStage(msg:any, cb: Function = null) {
let data: any = await HttpUnit.ins.api("game/status", msg, "POST", true); let data: any = await HttpUnit.ins.api("game/status", msg, "POST", true);
console.log("获取当前聊天状态:", msg, data) logger.log("获取当前聊天状态:", msg, data)
if (data && data.code == 1) { if (data && data.code == 1) {
cb && cb(data.data); cb && cb(data.data);
}else{ }else{
console.log("获取当前聊天状态失败:"+ data); logger.log("获取当前聊天状态失败:"+ data);
if (data && data.msg) { if (data && data.msg) {
SubManager.ShowPrompt(`数据异常,${data.msg}`); SubManager.ShowPrompt(`数据异常,${data.msg}`);
} }
@@ -426,11 +427,11 @@ export default class HttpUnit {
//非三星通关时继续关卡 //非三星通关时继续关卡
public async sendGameContinue(msg:any, cb: Function = null) { public async sendGameContinue(msg:any, cb: Function = null) {
let data: any = await HttpUnit.ins.api("game/continue", msg, "POST", true); let data: any = await HttpUnit.ins.api("game/continue", msg, "POST", true);
console.log("非三星通关时继续关卡:", data) logger.log("非三星通关时继续关卡:", data)
if (data && data.code == 1) { if (data && data.code == 1) {
cb && cb(data.data); cb && cb(data.data);
}else{ }else{
console.log("非三星通关时继续关卡失败:"+ data); logger.log("非三星通关时继续关卡失败:"+ data);
if (data && data.msg) { if (data && data.msg) {
SubManager.ShowPrompt(`数据异常,${data.msg}`); SubManager.ShowPrompt(`数据异常,${data.msg}`);
} }
@@ -440,13 +441,13 @@ export default class HttpUnit {
//重新获取用户信息 //重新获取用户信息
public async getUserData(cb: Function = null) { public async getUserData(cb: Function = null) {
let data: any = await HttpUnit.ins.api("user/info", {}, "GET", true); let data: any = await HttpUnit.ins.api("user/info", {}, "GET", true);
console.log("重新获取用户信息数据:", data) logger.log("重新获取用户信息数据:", data)
if (data && data.code == 1) { if (data && data.code == 1) {
HttpUnit.UserInfo = data.data; HttpUnit.UserInfo = data.data;
Utils.sendInnerMsg(InnerMsgCode.Data_Redpoint, {}) Utils.sendInnerMsg(InnerMsgCode.Data_Redpoint, {})
cb && cb(data.data); cb && cb(data.data);
}else{ }else{
console.log("重新获取用户信息数据失败:"+ data); logger.log("重新获取用户信息数据失败:"+ data);
if (data && data.msg) { if (data && data.msg) {
SubManager.ShowPrompt(`数据异常,${data.msg}`); SubManager.ShowPrompt(`数据异常,${data.msg}`);
} }
@@ -455,12 +456,12 @@ export default class HttpUnit {
//用户看广告 //用户看广告
public async setUserAd(msg:any, cb: Function = null) { public async setUserAd(msg:any, cb: Function = null) {
let data: any = await HttpUnit.ins.api("user/ad", msg, "POST", true); let data: any = await HttpUnit.ins.api("user/ad", msg, "POST", true);
console.log("看广告数据:", data) logger.log("看广告数据:", data)
if (data && data.code == 1) { if (data && data.code == 1) {
HttpUnit.UserInfo = data.data; HttpUnit.UserInfo = data.data;
cb && cb(data.data); cb && cb(data.data);
}else{ }else{
console.log("看广告数据失败:"+ data); logger.log("看广告数据失败:"+ data);
if (data && data.msg) { if (data && data.msg) {
SubManager.ShowPrompt(`数据异常,${data.msg}`); SubManager.ShowPrompt(`数据异常,${data.msg}`);
} }
@@ -469,12 +470,12 @@ export default class HttpUnit {
//用户分享 //用户分享
public async setUserShare(msg:any, cb: Function = null) { public async setUserShare(msg:any, cb: Function = null) {
let data: any = await HttpUnit.ins.api("user/share", msg, "POST", true); let data: any = await HttpUnit.ins.api("user/share", msg, "POST", true);
console.log("用户分享数据:", data) logger.log("用户分享数据:", data)
if (data && data.code == 1) { if (data && data.code == 1) {
HttpUnit.UserInfo = data.data; HttpUnit.UserInfo = data.data;
cb && cb(data.data); cb && cb(data.data);
}else{ }else{
console.log("用户分享数据失败:"+ data); logger.log("用户分享数据失败:"+ data);
if (data && data.msg) { if (data && data.msg) {
SubManager.ShowPrompt(`数据异常,${data.msg}`); SubManager.ShowPrompt(`数据异常,${data.msg}`);
} }
@@ -483,7 +484,7 @@ export default class HttpUnit {
//获取常用配置 //获取常用配置
public async getCommSetting(cb: Function = null) { public async getCommSetting(cb: Function = null) {
let data: any = await HttpUnit.ins.api("user/setting", {}, "GET", true); let data: any = await HttpUnit.ins.api("user/setting", {}, "GET", true);
console.log("获取常用配置数据:", data) logger.log("获取常用配置数据:", data)
if (data && data.code == 1) { if (data && data.code == 1) {
HttpUnit.SerSetting = {}; HttpUnit.SerSetting = {};
for (let i = 0; i < data.data.length; i++) { for (let i = 0; i < data.data.length; i++) {
@@ -492,7 +493,7 @@ export default class HttpUnit {
} }
cb && cb(); cb && cb();
}else{ }else{
console.log("获取常用配置数据失败:"+ data); logger.log("获取常用配置数据失败:"+ data);
if (data && data.msg) { if (data && data.msg) {
SubManager.ShowPrompt(`数据异常,${data.msg}`); SubManager.ShowPrompt(`数据异常,${data.msg}`);
} }
@@ -501,11 +502,11 @@ export default class HttpUnit {
//看广告解锁关卡 //看广告解锁关卡
public async levelUnlock(msg:any, cb: Function = null) { public async levelUnlock(msg:any, cb: Function = null) {
let data: any = await HttpUnit.ins.api("user/unlock_level", msg, "POST", true); let data: any = await HttpUnit.ins.api("user/unlock_level", msg, "POST", true);
console.log("看广告解锁关卡:", msg, data) logger.log("看广告解锁关卡:", msg, data)
if (data && data.code == 1) { if (data && data.code == 1) {
cb && cb(data.data); cb && cb(data.data);
}else{ }else{
console.log("看广告解锁关卡失败:"+ data); logger.log("看广告解锁关卡失败:"+ data);
if (data && data.msg) { if (data && data.msg) {
SubManager.ShowPrompt(`数据异常,${data.msg}`); SubManager.ShowPrompt(`数据异常,${data.msg}`);
} }
@@ -514,12 +515,12 @@ export default class HttpUnit {
//获取抖音侧边栏奖励 //获取抖音侧边栏奖励
public async getBDSidebarReward(msg:any, cb: Function = null) { public async getBDSidebarReward(msg:any, cb: Function = null) {
let data: any = await HttpUnit.ins.api("user/receive_award", msg, "POST", true); let data: any = await HttpUnit.ins.api("user/receive_award", msg, "POST", true);
console.log("获取抖音侧边栏奖励:", msg, data) logger.log("获取抖音侧边栏奖励:", msg, data)
if (data && data.code == 1) { if (data && data.code == 1) {
HttpUnit.UserInfo = data.data; HttpUnit.UserInfo = data.data;
cb && cb(data.data); cb && cb(data.data);
}else{ }else{
console.log("获取抖音侧边栏奖励失败:"+ data); logger.log("获取抖音侧边栏奖励失败:"+ data);
if (data && data.msg) { if (data && data.msg) {
SubManager.ShowPrompt(`数据异常,${data.msg}`); SubManager.ShowPrompt(`数据异常,${data.msg}`);
} }
@@ -528,12 +529,12 @@ export default class HttpUnit {
//添加友盟关卡记录 //添加友盟关卡记录
public async sendLevelRecord(msg:any, cb: Function = null) { public async sendLevelRecord(msg:any, cb: Function = null) {
let data: any = await HttpUnit.ins.api("user/add_level_record", msg, "POST", true); let data: any = await HttpUnit.ins.api("user/add_level_record", msg, "POST", true);
console.log("添加友盟关卡记录:", msg, data) logger.log("添加友盟关卡记录:", msg, data)
if (data && data.code == 1) { if (data && data.code == 1) {
HttpUnit.UserInfo = data.data; HttpUnit.UserInfo = data.data;
cb && cb(data.data); cb && cb(data.data);
}else{ }else{
console.log("添加友盟关卡记录失败:"+ data); logger.log("添加友盟关卡记录失败:"+ data);
if (data && data.msg) { if (data && data.msg) {
SubManager.ShowPrompt(`数据异常,${data.msg}`); SubManager.ShowPrompt(`数据异常,${data.msg}`);
} }
@@ -542,11 +543,11 @@ export default class HttpUnit {
//获得甜蜜暴击效果 //获得甜蜜暴击效果
public async sendTalkStrength(msg:any, cb: Function = null) { public async sendTalkStrength(msg:any, cb: Function = null) {
let data: any = await HttpUnit.ins.api("game/strength", msg, "POST", true); let data: any = await HttpUnit.ins.api("game/strength", msg, "POST", true);
console.log("获得甜蜜暴击效果:", msg, data) logger.log("获得甜蜜暴击效果:", msg, data)
if (data && data.code == 1) { if (data && data.code == 1) {
cb && cb(data.data); cb && cb(data.data);
}else{ }else{
console.log("获得甜蜜暴击效果失败:"+ data); logger.log("获得甜蜜暴击效果失败:"+ data);
if (data && data.msg) { if (data && data.msg) {
SubManager.ShowPrompt(`数据异常,${data.msg}`); SubManager.ShowPrompt(`数据异常,${data.msg}`);
} }
@@ -555,11 +556,11 @@ export default class HttpUnit {
//撤回一次聊天 //撤回一次聊天
public async sendTalkChehui(msg:any, cb: Function = null) { public async sendTalkChehui(msg:any, cb: Function = null) {
let data: any = await HttpUnit.ins.api("game/cancel", msg, "POST", true); let data: any = await HttpUnit.ins.api("game/cancel", msg, "POST", true);
console.log("撤回一次聊天:", msg, data) logger.log("撤回一次聊天:", msg, data)
if (data && data.code == 1) { if (data && data.code == 1) {
cb && cb(data.data); cb && cb(data.data);
}else{ }else{
console.log("撤回一次聊天失败:"+ data); logger.log("撤回一次聊天失败:"+ data);
if (data && data.msg) { if (data && data.msg) {
SubManager.ShowPrompt(`数据异常,${data.msg}`); SubManager.ShowPrompt(`数据异常,${data.msg}`);
} }
@@ -568,11 +569,11 @@ export default class HttpUnit {
//关卡提示事件上报 //关卡提示事件上报
public async sendTipRecord(msg:any, cb: Function = null) { public async sendTipRecord(msg:any, cb: Function = null) {
let data: any = await HttpUnit.ins.api("user/add_record_tip", msg, "POST", true); let data: any = await HttpUnit.ins.api("user/add_record_tip", msg, "POST", true);
console.log("关卡提示事件上报:", msg, data) logger.log("关卡提示事件上报:", msg, data)
if (data && data.code == 1) { if (data && data.code == 1) {
cb && cb(data.data); cb && cb(data.data);
}else{ }else{
console.log("关卡提示事件上报失败:"+ data); logger.log("关卡提示事件上报失败:"+ data);
// if (data && data.msg) { // if (data && data.msg) {
// SubManager.ShowPrompt(`数据异常,${data.msg}`); // SubManager.ShowPrompt(`数据异常,${data.msg}`);
// } // }
@@ -581,11 +582,11 @@ export default class HttpUnit {
//获取AI回复提示语 //获取AI回复提示语
public async getAIAutoAns(msg:any, cb: Function = null) { public async getAIAutoAns(msg:any, cb: Function = null) {
let data: any = await HttpUnit.ins.api("game/tips", msg, "POST", true); let data: any = await HttpUnit.ins.api("game/tips", msg, "POST", true);
console.log("获取AI回复提示语:", msg, data) logger.log("获取AI回复提示语:", msg, data)
if (data && data.code == 1) { if (data && data.code == 1) {
cb && cb(data.data); cb && cb(data.data);
}else{ }else{
console.log("获取AI回复提示语失败:"+ data); logger.log("获取AI回复提示语失败:"+ data);
// if (data && data.msg) { // if (data && data.msg) {
// SubManager.ShowPrompt(`数据异常,${data.msg}`); // SubManager.ShowPrompt(`数据异常,${data.msg}`);
// } // }
@@ -594,11 +595,11 @@ export default class HttpUnit {
/**获取历史聊天记录*/ /**获取历史聊天记录*/
public async getTalkJilu(msg:any, cb: Function = null) { public async getTalkJilu(msg:any, cb: Function = null) {
let data: any = await HttpUnit.ins.api("game/get_history", msg, "POST", true); let data: any = await HttpUnit.ins.api("game/get_history", msg, "POST", true);
console.log("获取历史聊天记录:", msg, data) logger.log("获取历史聊天记录:", msg, data)
if (data && data.code == 1) { if (data && data.code == 1) {
cb && cb(data.data); cb && cb(data.data);
}else{ }else{
console.log("获取历史聊天记录失败:"+ data); logger.log("获取历史聊天记录失败:"+ data);
if (data && data.msg) { if (data && data.msg) {
SubManager.ShowPrompt(`数据异常,${data.msg}`); SubManager.ShowPrompt(`数据异常,${data.msg}`);
} }
@@ -608,11 +609,11 @@ export default class HttpUnit {
/**私家珍藏上报 */ /**私家珍藏上报 */
public async sendZhencangId(msg:any, cb: Function = null) { public async sendZhencangId(msg:any, cb: Function = null) {
let data: any = await HttpUnit.ins.api("user/set_private_collection", msg, "POST", true); let data: any = await HttpUnit.ins.api("user/set_private_collection", msg, "POST", true);
console.log("私家珍藏上报:", msg, data) logger.log("私家珍藏上报:", msg, data)
if (data && data.code == 1) { if (data && data.code == 1) {
cb && cb(data.data); cb && cb(data.data);
}else{ }else{
console.log("私家珍藏上报失败:"+ data); logger.log("私家珍藏上报失败:"+ data);
if (data && data.msg) { if (data && data.msg) {
SubManager.ShowPrompt(`数据异常,${data.msg}`); SubManager.ShowPrompt(`数据异常,${data.msg}`);
} }
@@ -621,11 +622,11 @@ export default class HttpUnit {
/**获取私家珍藏列表 limit:每页条数 page:当前页 type:类型 0待领取 1已领取 level_id:关卡ID*/ /**获取私家珍藏列表 limit:每页条数 page:当前页 type:类型 0待领取 1已领取 level_id:关卡ID*/
public async getZhencangList(msg:any, cb: Function = null) { public async getZhencangList(msg:any, cb: Function = null) {
let data: any = await HttpUnit.ins.api("user/get_private_collection", msg, "POST", true); let data: any = await HttpUnit.ins.api("user/get_private_collection", msg, "POST", true);
console.log("获取私家珍藏列表:", msg, data) logger.log("获取私家珍藏列表:", msg, data)
if (data && data.code == 1) { if (data && data.code == 1) {
cb && cb(data.data); cb && cb(data.data);
}else{ }else{
console.log("获取私家珍藏列表失败:"+ data); logger.log("获取私家珍藏列表失败:"+ data);
if (data && data.msg) { if (data && data.msg) {
SubManager.ShowPrompt(`数据异常,${data.msg}`); SubManager.ShowPrompt(`数据异常,${data.msg}`);
} }
@@ -634,13 +635,13 @@ export default class HttpUnit {
/**领取私家珍藏指定奖励*/ /**领取私家珍藏指定奖励*/
public async getZhencangReward(msg:any, cb: Function = null) { public async getZhencangReward(msg:any, cb: Function = null) {
let data: any = await HttpUnit.ins.api("user/private_collection_award", msg, "POST", true); let data: any = await HttpUnit.ins.api("user/private_collection_award", msg, "POST", true);
console.log("领取私家珍藏指定奖励:", msg, data) logger.log("领取私家珍藏指定奖励:", msg, data)
if (data && data.code == 1) { if (data && data.code == 1) {
cb && cb(data.data); cb && cb(data.data);
HttpUnit.UserInfo = data.data; HttpUnit.UserInfo = data.data;
Utils.sendInnerMsg(InnerMsgCode.Data_Redpoint, {}) Utils.sendInnerMsg(InnerMsgCode.Data_Redpoint, {})
}else{ }else{
console.log("领取私家珍藏指定奖励失败:", data); logger.log("领取私家珍藏指定奖励失败:", data);
if (data && data.msg) { if (data && data.msg) {
SubManager.ShowPrompt(`数据异常,${data.msg}`); SubManager.ShowPrompt(`数据异常,${data.msg}`);
} }
@@ -649,13 +650,13 @@ export default class HttpUnit {
/**清除私家珍藏红点*/ /**清除私家珍藏红点*/
public async readRedpointZhencang(msg:any, cb: Function = null) { public async readRedpointZhencang(msg:any, cb: Function = null) {
let data: any = await HttpUnit.ins.api("user/clear_private_collection_mark", msg, "POST", true); let data: any = await HttpUnit.ins.api("user/clear_private_collection_mark", msg, "POST", true);
console.log("清除私家珍藏红点:", msg, data) logger.log("清除私家珍藏红点:", msg, data)
if (data && data.code == 1) { if (data && data.code == 1) {
cb && cb(data.data); cb && cb(data.data);
HttpUnit.UserInfo = data.data; HttpUnit.UserInfo = data.data;
Utils.sendInnerMsg(InnerMsgCode.Data_Redpoint, {}) Utils.sendInnerMsg(InnerMsgCode.Data_Redpoint, {})
}else{ }else{
console.log("清除私家珍藏红点失败:"+ data); logger.log("清除私家珍藏红点失败:"+ data);
if (data && data.msg) { if (data && data.msg) {
SubManager.ShowPrompt(`数据异常,${data.msg}`); SubManager.ShowPrompt(`数据异常,${data.msg}`);
} }
@@ -664,13 +665,13 @@ export default class HttpUnit {
/**清除心动回忆红点*/ /**清除心动回忆红点*/
public async readRedpointHuiyi(msg:any, cb: Function = null) { public async readRedpointHuiyi(msg:any, cb: Function = null) {
let data: any = await HttpUnit.ins.api("user/clear_heartbeat_memories_mark", msg, "POST", true); let data: any = await HttpUnit.ins.api("user/clear_heartbeat_memories_mark", msg, "POST", true);
console.log("清除心动回忆红点:", msg, data) logger.log("清除心动回忆红点:", msg, data)
if (data && data.code == 1) { if (data && data.code == 1) {
cb && cb(data.data); cb && cb(data.data);
HttpUnit.UserInfo = data.data; HttpUnit.UserInfo = data.data;
Utils.sendInnerMsg(InnerMsgCode.Data_Redpoint, {}) Utils.sendInnerMsg(InnerMsgCode.Data_Redpoint, {})
}else{ }else{
console.log("清除心动回忆红点失败:"+ data); logger.log("清除心动回忆红点失败:"+ data);
if (data && data.msg) { if (data && data.msg) {
SubManager.ShowPrompt(`数据异常,${data.msg}`); SubManager.ShowPrompt(`数据异常,${data.msg}`);
} }
@@ -679,11 +680,11 @@ export default class HttpUnit {
/**重新开始关卡时,结束上次进度并上报服务器*/ /**重新开始关卡时,结束上次进度并上报服务器*/
public async sendLevelRestartReport(msg:any, cb: Function = null) { public async sendLevelRestartReport(msg:any, cb: Function = null) {
let data: any = await HttpUnit.ins.api("game/restart_report", msg, "POST", true); let data: any = await HttpUnit.ins.api("game/restart_report", msg, "POST", true);
console.log("关卡结束上次进度:", msg, data) logger.log("关卡结束上次进度:", msg, data)
if (data && data.code == 1) { if (data && data.code == 1) {
cb && cb(data.data); cb && cb(data.data);
}else{ }else{
console.log("关卡结束上次进度失败:"+ data); logger.log("关卡结束上次进度失败:"+ data);
if (data && data.msg) { if (data && data.msg) {
SubManager.ShowPrompt(`数据异常,${data.msg}`); SubManager.ShowPrompt(`数据异常,${data.msg}`);
} }
@@ -692,11 +693,11 @@ export default class HttpUnit {
/**心动回忆数据埋点*/ /**心动回忆数据埋点*/
public async sendEventTujian(msg:any, cb: Function = null) { public async sendEventTujian(msg:any, cb: Function = null) {
let data: any = await HttpUnit.ins.api("user/click_img_event", msg, "POST", true); let data: any = await HttpUnit.ins.api("user/click_img_event", msg, "POST", true);
console.log("心动回忆数据埋点:", msg, data) logger.log("心动回忆数据埋点:", msg, data)
if (data && data.code == 1) { if (data && data.code == 1) {
cb && cb(data.data); cb && cb(data.data);
}else{ }else{
console.log("心动回忆数据埋点失败:"+ data); logger.log("心动回忆数据埋点失败:"+ data);
// if (data && data.msg) { // if (data && data.msg) {
// SubManager.ShowPrompt(`数据异常,${data.msg}`); // SubManager.ShowPrompt(`数据异常,${data.msg}`);
// } // }
@@ -708,7 +709,7 @@ export default class HttpUnit {
public async api(path: string, data: any, method: "GET" | "POST" | "PUT" = "GET", bLock: boolean = false, isFormData: boolean = false) { public async api(path: string, data: any, method: "GET" | "POST" | "PUT" = "GET", bLock: boolean = false, isFormData: boolean = false) {
let url = HttpUnit.ServerHttpHost + path; let url = HttpUnit.ServerHttpHost + path;
// console.log("[Http] 请求Url:",url, " 方式:", method, " Authorization:", GlobalValue.PlayerToken, " 数据:", JSON.stringify(data) ); // logger.log("[Http] 请求Url:",url, " 方式:", method, " Authorization:", GlobalValue.PlayerToken, " 数据:", JSON.stringify(data) );
bLock && this.lock(); bLock && this.lock();
var xhr = new XMLHttpRequest(); var xhr = new XMLHttpRequest();
xhr.timeout = 10000; xhr.timeout = 10000;
@@ -751,7 +752,7 @@ export default class HttpUnit {
* @returns * @returns
*/ */
public async send(url: string, data: any, method: "GET" | "POST" | "PUT" = "GET", bLock: boolean = false, formData: boolean = false) { public async send(url: string, data: any, method: "GET" | "POST" | "PUT" = "GET", bLock: boolean = false, formData: boolean = false) {
// console.log("[Http] 请求Url:",url, " 方式:", method, " 数据:", data); // logger.log("[Http] 请求Url:",url, " 方式:", method, " 数据:", data);
bLock && this.lock(); bLock && this.lock();
var xhr = new XMLHttpRequest(); var xhr = new XMLHttpRequest();
xhr.timeout = 10000; xhr.timeout = 10000;
+2 -1
View File
@@ -1,5 +1,6 @@
import { _decorator, Component, Label, Node } from "cc"; import { _decorator, Component, Label, Node } from "cc";
import LanguageUtils, { LanguageType } from "./LanguageUtils"; import LanguageUtils, { LanguageType } from "./LanguageUtils";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property, requireComponent } = _decorator; const { ccclass, property, requireComponent } = _decorator;
@@ -30,7 +31,7 @@ export class LanguageLabel extends Component {
onLoad() { onLoad() {
this.label = this.getComponent(Label); this.label = this.getComponent(Label);
if (!this.label) { if (!this.label) {
console.error("LanguageLabel: Label component not found!"); logger.error("LanguageLabel: Label component not found!");
return; return;
} }
+7 -6
View File
@@ -5,6 +5,7 @@ import { CommonConfig } from "../Config/CommonConfig";
import li_EventManager from "./li_EventManager"; import li_EventManager from "./li_EventManager";
import Utils from "./Utils"; import Utils from "./Utils";
import { InnerMsgCode } from "../Config/InnerMsgCode"; import { InnerMsgCode } from "../Config/InnerMsgCode";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass } = _decorator; const { ccclass } = _decorator;
@@ -49,7 +50,7 @@ export default class LanguageUtils {
} else { } else {
this.detectSystemLanguage(); this.detectSystemLanguage();
} }
console.log( logger.log(
"LanguageUtils initialized with language:", "LanguageUtils initialized with language:",
this.currentLanguage this.currentLanguage
); );
@@ -83,7 +84,7 @@ export default class LanguageUtils {
); );
Utils.sendInnerMsg(InnerMsgCode.LanguageChange, language); Utils.sendInnerMsg(InnerMsgCode.LanguageChange, language);
console.log("Language changed to:", language); logger.log("Language changed to:", language);
} }
public static getText(key: string, defaultText: string = ""): string { public static getText(key: string, defaultText: string = ""): string {
@@ -100,13 +101,13 @@ export default class LanguageUtils {
} }
if (!ConfigManager.tables || !ConfigManager.tables.TbLanguage) { if (!ConfigManager.tables || !ConfigManager.tables.TbLanguage) {
console.warn("Language table not loaded yet"); logger.warn("Language table not loaded yet");
return defaultText || key; return defaultText || key;
} }
const languageData = ConfigManager.tables.TbLanguage.get(key); const languageData = ConfigManager.tables.TbLanguage.get(key);
if (!languageData) { if (!languageData) {
console.warn(`Language key not found: ${key}`); logger.warn(`Language key not found: ${key}`);
return defaultText || key; return defaultText || key;
} }
@@ -147,13 +148,13 @@ export default class LanguageUtils {
} }
if (!ConfigManager.tables || !ConfigManager.tables.TbLanguage) { if (!ConfigManager.tables || !ConfigManager.tables.TbLanguage) {
console.warn("Language table not loaded yet"); logger.warn("Language table not loaded yet");
return defaultText || key; return defaultText || key;
} }
const languageData = ConfigManager.tables.TbLanguage.get(key); const languageData = ConfigManager.tables.TbLanguage.get(key);
if (!languageData) { if (!languageData) {
console.warn(`Language key not found: ${key}`); logger.warn(`Language key not found: ${key}`);
return defaultText || key; return defaultText || key;
} }
+88
View File
@@ -0,0 +1,88 @@
/**
* Logger 日志工具类
*
* 功能:
* - 按等级输出日志(debug/info/warn/error
* - 在 Dev/Test 环境下输出全部日志
* - 在 Prod 环境下只输出 error
* - 可扩展日志上报(比如接入远程日志系统)
*/
import { AppConfig } from "db://assets/Scripts/chat18x/config/env/appConfig";
export enum LogLevel {
Debug = 0,
Info = 1,
Warn = 2,
Error = 3,
None = 4, // 不打印任何日志
}
class Logger {
private level: LogLevel;
constructor() {
// 根据环境决定日志等级
if (AppConfig.I.isDev()) {
this.level = LogLevel.Debug; // Dev 输出所有日志
} else if (AppConfig.I.isTest()) {
this.level = LogLevel.Debug; // Test 输出所有日志
} else if (AppConfig.I.isProd()) {
this.level = LogLevel.Error; // Prod 只输出 error
} else {
this.level = LogLevel.None; // 不打印任何日志
}
}
/** 修改日志等级(运行时可动态调整) */
public setLevel(level: LogLevel) {
this.level = level;
}
public debug(...args: any[]) {
if (this.level <= LogLevel.Debug) {
console.debug("[DEBUG]", ...args);
}
}
public info(...args: any[]) {
if (this.level <= LogLevel.Info) {
console.info("[INFO]", ...args);
}
}
public log(...args: any[]) {
if (this.level <= LogLevel.Info) {
console.log("[LOG]", ...args);
}
}
public warn(...args: any[]) {
if (this.level <= LogLevel.Warn) {
console.warn("[WARN]", ...args);
}
}
public error(...args: any[]) {
if (this.level <= LogLevel.Error) {
console.error("[ERROR]", ...args);
// 这里也可以加远程上报,例如:
// this.reportError(args);
}
}
// 示例:远程上报错误日志
private reportError(args: any[]) {
try {
// fetch("https://log-server.xxx.com/report", {
// method: "POST",
// body: JSON.stringify({ msg: args, time: Date.now() }),
// });
} catch (e) {
console.error("日志上报失败", e);
}
}
}
// 全局单例
export const logger = new Logger();
@@ -0,0 +1,9 @@
{
"ver": "4.0.24",
"importer": "typescript",
"imported": true,
"uuid": "90ee00a3-2349-4a60-a6f0-6e4bebb5e964",
"files": [],
"subMetas": {},
"userData": {}
}
+11 -10
View File
@@ -8,6 +8,7 @@ const { ccclass, property, disallowMultiple, menu, executionOrder, requireCompon
import { Node, Component, Enum, tween, _decorator, EventHandler, Tween, ScrollView, Prefab, Layout, Vec2, Size, NodePool, isValid, instantiate, Vec3, Widget, UITransform, CCFloat, CCBoolean, CCInteger } from 'cc'; import { Node, Component, Enum, tween, _decorator, EventHandler, Tween, ScrollView, Prefab, Layout, Vec2, Size, NodePool, isValid, instantiate, Vec3, Widget, UITransform, CCFloat, CCBoolean, CCInteger } from 'cc';
import { DEV } from 'cc/env'; import { DEV } from 'cc/env';
import ScrollViewListItem from './ScrollviewListItem'; import ScrollViewListItem from './ScrollviewListItem';
import { logger } from "db://assets/Scripts/Main/Common/Logger";
enum TemplateType { enum TemplateType {
NODE = 1, NODE = 1,
@@ -263,7 +264,7 @@ export default class HXZ_ScrollViewList extends Component {
if (!t.checkInited(false)) if (!t.checkInited(false))
return; return;
if (val == null || val < 0) { if (val == null || val < 0) {
console.error('numItems set the wrong::', val); logger.error('numItems set the wrong::', val);
return; return;
} }
t._actualNumItems = t._numItems = val; t._actualNumItems = t._numItems = val;
@@ -464,7 +465,7 @@ export default class HXZ_ScrollViewList extends Component {
t.content = t._scrollView.content; t.content = t._scrollView.content;
t._contentUt = t.content.getComponent(UITransform); t._contentUt = t.content.getComponent(UITransform);
if (!t.content) { if (!t.content) {
console.error(t.node.name + "'s ScrollView unset content!"); logger.error(t.node.name + "'s ScrollView unset content!");
return; return;
} }
@@ -728,7 +729,7 @@ export default class HXZ_ScrollViewList extends Component {
checkInited(printLog: boolean = true) { checkInited(printLog: boolean = true) {
if (!this._inited) { if (!this._inited) {
if (printLog) if (printLog)
console.error('List initialization not completed!'); logger.error('List initialization not completed!');
return false; return false;
} }
return true; return true;
@@ -1847,13 +1848,13 @@ export default class HXZ_ScrollViewList extends Component {
let t: any = this; let t: any = this;
if (!t.checkInited() || t.cyclic || !t._virtual) if (!t.checkInited() || t.cyclic || !t._virtual)
return console.error('This function is not allowed to be called!'); return logger.error('This function is not allowed to be called!');
if (!callFunc) if (!callFunc)
return console.error('CallFunc are not allowed to be NULL, You need to delete the corresponding index in the data array in the CallFunc!'); return logger.error('CallFunc are not allowed to be NULL, You need to delete the corresponding index in the data array in the CallFunc!');
if (t._aniDelRuning) if (t._aniDelRuning)
return console.warn('Please wait for the current deletion to finish!'); return logger.warn('Please wait for the current deletion to finish!');
let item: any = t.getItemByListId(listId); let item: any = t.getItemByListId(listId);
let listItem: ScrollViewListItem; let listItem: ScrollViewListItem;
@@ -1969,7 +1970,7 @@ export default class HXZ_ScrollViewList extends Component {
let pos = t.getItemPos(listId); let pos = t.getItemPos(listId);
if (!pos) { if (!pos) {
return DEV && console.error('pos is null', listId); return DEV && logger.error('pos is null', listId);
} }
let targetX: number, targetY: number; let targetX: number, targetY: number;
@@ -2150,7 +2151,7 @@ export default class HXZ_ScrollViewList extends Component {
if (!t.checkInited()) if (!t.checkInited())
return; return;
if (t._slideMode != SlideType.PAGE) if (t._slideMode != SlideType.PAGE)
return console.error('This function is not allowed to be called, Must SlideMode = PAGE!'); return logger.error('This function is not allowed to be called, Must SlideMode = PAGE!');
if (pageNum < 0 || pageNum >= t._numItems) if (pageNum < 0 || pageNum >= t._numItems)
return; return;
if (t.curPageNum == pageNum) if (t.curPageNum == pageNum)
@@ -2168,9 +2169,9 @@ export default class HXZ_ScrollViewList extends Component {
if (!t.checkInited()) if (!t.checkInited())
return; return;
if (!t._itemTmp) if (!t._itemTmp)
return console.error('Unset template item!'); return logger.error('Unset template item!');
if (!t.renderEvent) if (!t.renderEvent)
return console.error('Unset Render-Event!'); return logger.error('Unset Render-Event!');
t._customSize = {}; t._customSize = {};
let temp: any = instantiate(t._itemTmp); let temp: any = instantiate(t._itemTmp);
let ut: UITransform = temp.getComponent(UITransform); let ut: UITransform = temp.getComponent(UITransform);
+10 -9
View File
@@ -1,5 +1,6 @@
import { InnerMsgCode } from "../Config/InnerMsgCode"; import { InnerMsgCode } from "../Config/InnerMsgCode";
import Utils from "./Utils"; import Utils from "./Utils";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
/**长连接*/ /**长连接*/
export default class SocketUnit { export default class SocketUnit {
@@ -18,20 +19,20 @@ export default class SocketUnit {
// 连接到服务器 // 连接到服务器
public connect(url: string): void { public connect(url: string): void {
if (this.isConnected) { if (this.isConnected) {
console.log("SocketUnit: Already connected."); logger.log("SocketUnit: Already connected.");
return; return;
} }
this.url = url; this.url = url;
this.socket = new WebSocket(url); this.socket = new WebSocket(url);
console.log("SocketUnit: Connecting to -> " + url); logger.log("SocketUnit: Connecting to -> " + url);
// 连接成功 // 连接成功
this.socket.onopen = () => { this.socket.onopen = () => {
this.isConnected = true; this.isConnected = true;
console.log("SocketUnit: Connection succ."); logger.log("SocketUnit: Connection succ.");
if (this.reconnetSwt) { if (this.reconnetSwt) {
console.log("SocketUnit: socket重连成功."); logger.log("SocketUnit: socket重连成功.");
this.stopReconnect(); this.stopReconnect();
if (this.reSendData) { if (this.reSendData) {
this.sendData(this.reSendData); this.sendData(this.reSendData);
@@ -42,7 +43,7 @@ export default class SocketUnit {
// 接收到消息 // 接收到消息
this.socket.onmessage = (event) => { this.socket.onmessage = (event) => {
// console.log("SocketUnit: Received data: ", event); // logger.log("SocketUnit: Received data: ", event);
if (this.dataReceivedCallback) { if (this.dataReceivedCallback) {
this.dataReceivedCallback(event); this.dataReceivedCallback(event);
} }
@@ -51,12 +52,12 @@ export default class SocketUnit {
// 连接关闭 // 连接关闭
this.socket.onclose = () => { this.socket.onclose = () => {
this.isConnected = false; this.isConnected = false;
console.log("SocketUnit: Connection closed."); logger.log("SocketUnit: Connection closed.");
}; };
// 发生错误 // 发生错误
this.socket.onerror = (error) => { this.socket.onerror = (error) => {
console.error("SocketUnit: WebSocket error:", error); logger.error("SocketUnit: WebSocket error:", error);
this.isConnected = false; this.isConnected = false;
}; };
@@ -73,11 +74,11 @@ export default class SocketUnit {
// 发送数据 // 发送数据
public sendData(data: string): void { public sendData(data: string): void {
// console.log("SocketUnit: sendData", data); // logger.log("SocketUnit: sendData", data);
if (this.socket && this.isConnected) { if (this.socket && this.isConnected) {
this.socket.send(data); this.socket.send(data);
} else { } else {
console.error("SocketUnit: Socket is not connected."); logger.error("SocketUnit: Socket is not connected.");
this.reSendData = data; this.reSendData = data;
this.beginReconnect() this.beginReconnect()
} }
+7 -6
View File
@@ -13,6 +13,7 @@ import {
} from "cc"; } from "cc";
import li_EventManager from "./li_EventManager"; import li_EventManager from "./li_EventManager";
import LanguageUtils from "./LanguageUtils"; import LanguageUtils from "./LanguageUtils";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@@ -22,21 +23,21 @@ export default class Utils {
public static Log(msg: string | any, ...subst: any[]) { public static Log(msg: string | any, ...subst: any[]) {
let IsLocalCSChanel = true; let IsLocalCSChanel = true;
if (IsLocalCSChanel) { if (IsLocalCSChanel) {
console.log(msg, subst); logger.log(msg, subst);
} }
} }
//警告日志 //警告日志
public static Warning(msg: string | any, ...subst: any[]) { public static Warning(msg: string | any, ...subst: any[]) {
let IsLocalCSChanel = true; let IsLocalCSChanel = true;
if (IsLocalCSChanel) { if (IsLocalCSChanel) {
console.warn(msg, subst); logger.warn(msg, subst);
} }
} }
//错误日志 //错误日志
public static Error(msg: string | any, ...subst: any[]) { public static Error(msg: string | any, ...subst: any[]) {
let IsLocalCSChanel = true; let IsLocalCSChanel = true;
if (IsLocalCSChanel) { if (IsLocalCSChanel) {
console.error(msg, subst); logger.error(msg, subst);
} }
} }
@@ -258,7 +259,7 @@ export default class Utils {
public static getScaleRatio(mod: number = 1) { public static getScaleRatio(mod: number = 1) {
let windowSize = view.getVisibleSize(); let windowSize = view.getVisibleSize();
let designSize = view.getDesignResolutionSize(); let designSize = view.getDesignResolutionSize();
// console.log("游戏分辨率:", windowSize, designSize); // logger.log("游戏分辨率:", windowSize, designSize);
if (mod == 1) { if (mod == 1) {
return windowSize.height / designSize.height; return windowSize.height / designSize.height;
} else { } else {
@@ -367,7 +368,7 @@ export default class Utils {
public static ProfilerTimePrint(key: string = "") { public static ProfilerTimePrint(key: string = "") {
let time = new Date().getTime(); let time = new Date().getTime();
let timecha = time - Utils._eplTime; let timecha = time - Utils._eplTime;
console.log(`${key}消耗时间:${timecha}毫秒`); logger.log(`${key}消耗时间:${timecha}毫秒`);
Utils._eplTime = time; Utils._eplTime = time;
} }
@@ -381,7 +382,7 @@ export default class Utils {
const days = Math.floor(diffSeconds / (60 * 60 * 24)); const days = Math.floor(diffSeconds / (60 * 60 * 24));
const hours = Math.floor((diffSeconds % (60 * 60 * 24)) / 3600); const hours = Math.floor((diffSeconds % (60 * 60 * 24)) / 3600);
const minutes = Math.floor((diffSeconds % 3600) / 60); const minutes = Math.floor((diffSeconds % 3600) / 60);
console.log( logger.log(
"vip失效剩余时间差(秒):", "vip失效剩余时间差(秒):",
diffSeconds, diffSeconds,
"天:", "天:",
@@ -1,4 +1,5 @@
import { _decorator } from "cc"; import { _decorator } from "cc";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@@ -85,7 +86,7 @@ export default class li_EventManager {
try { try {
handler[0].apply(handler[1], param); handler[0].apply(handler[1], param);
} catch (e) { } catch (e) {
console.error("innerErr:" + e.stack); logger.error("innerErr:" + e.stack);
} }
} }
if (handlerArray.length != length) { if (handlerArray.length != length) {
+6 -5
View File
@@ -2,6 +2,7 @@ import { _decorator, Node, AudioClip, AudioSource, director, assetManager } from
import PlayerDataManager from "./PlayerDataManager"; import PlayerDataManager from "./PlayerDataManager";
import ResManager from "./ResManager"; import ResManager from "./ResManager";
import Resource from "../Config/Resource"; import Resource from "../Config/Resource";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@@ -44,7 +45,7 @@ export default class AudioManager {
if (!cfgs[sound]) return; if (!cfgs[sound]) return;
let path = `Sound/${cfgs[sound].AssetName}` let path = `Sound/${cfgs[sound].AssetName}`
console.log("PlayEffect:", sound, path) logger.log("PlayEffect:", sound, path)
ResManager.I.getBundleAudio(path, (res: AudioClip)=>{ ResManager.I.getBundleAudio(path, (res: AudioClip)=>{
this._audoSource.playOneShot(res, volume) this._audoSource.playOneShot(res, volume)
}); });
@@ -68,7 +69,7 @@ export default class AudioManager {
this.curBgId = sound; this.curBgId = sound;
this.curBgId_confirm = sound; this.curBgId_confirm = sound;
let path = `Music/${cfgs[sound].AssetName}` let path = `Music/${cfgs[sound].AssetName}`
console.log("PlayMusic:", sound, path) logger.log("PlayMusic:", sound, path)
ResManager.I.getBundleAudio(path, (res: AudioClip)=>{ ResManager.I.getBundleAudio(path, (res: AudioClip)=>{
this._audoSource.clip = res this._audoSource.clip = res
this._audoSource.play() this._audoSource.play()
@@ -80,13 +81,13 @@ export default class AudioManager {
/**播放远程背景乐 */ /**播放远程背景乐 */
PlayRemoteMusic(url, loop:boolean = true, volume:number=1.0) { PlayRemoteMusic(url, loop:boolean = true, volume:number=1.0) {
console.log(`下载远程背景乐: url= ${url}`) logger.log(`下载远程背景乐: url= ${url}`)
assetManager.loadRemote<AudioClip>(url, { ext: '.mp3'}, (err, res: AudioClip) => { assetManager.loadRemote<AudioClip>(url, { ext: '.mp3'}, (err, res: AudioClip) => {
if (err) { if (err) {
console.log(err); logger.log(err);
return return
} }
console.log(`播放远程背景乐: res= ${res}`) logger.log(`播放远程背景乐: res= ${res}`)
this.StopMusic() this.StopMusic()
this._audoSource.clip = res this._audoSource.clip = res
this._audoSource.play() this._audoSource.play()
+5 -4
View File
@@ -7,6 +7,7 @@ import SubManager from "../../Sub/SubManager";
import HttpUnit from "../Common/HttpUnit"; import HttpUnit from "../Common/HttpUnit";
import { SDKManager } from "../Channel/SDKManager"; import { SDKManager } from "../Channel/SDKManager";
import { VideoRoleType } from "../Common/GlobalValue"; import { VideoRoleType } from "../Common/GlobalValue";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@@ -68,7 +69,7 @@ export default class GameManager {
let resData = JSON.parse(data.data) let resData = JSON.parse(data.data)
if (GameManager.curStage != E_TalkStage.waitNpcTalk) return if (GameManager.curStage != E_TalkStage.waitNpcTalk) return
if (resData.isFinished) { if (resData.isFinished) {
console.log("npc回复:", resData) logger.log("npc回复:", resData)
GameManager.CurNpcTalkData = resData GameManager.CurNpcTalkData = resData
Utils.sendInnerMsg(InnerMsgCode.Data_NpcTalkBack, resData || {}) Utils.sendInnerMsg(InnerMsgCode.Data_NpcTalkBack, resData || {})
} }
@@ -122,7 +123,7 @@ export default class GameManager {
if (umRecords.length > 0 && SDKManager.umaSwt()){ if (umRecords.length > 0 && SDKManager.umaSwt()){
let umr = umRecords.join(',') let umr = umRecords.join(',')
HttpUnit.ins.sendLevelRecord({level_ids:umr}, (_data)=>{ HttpUnit.ins.sendLevelRecord({level_ids:umr}, (_data)=>{
console.log('友盟记录关卡',_data) logger.log('友盟记录关卡',_data)
let userId = HttpUnit.GetID() let userId = HttpUnit.GetID()
let curDate = Utils.GetNowFormatDay() let curDate = Utils.GetNowFormatDay()
for (let i = 0; i < umRecords.length; i++) { for (let i = 0; i < umRecords.length; i++) {
@@ -513,7 +514,7 @@ export default class GameManager {
} }
/**解锁一个私家珍藏id */ /**解锁一个私家珍藏id */
static UnlockZhencang(record_id:string, levelId: string) { static UnlockZhencang(record_id:string, levelId: string) {
console.log("解锁私家珍藏:", record_id, levelId) logger.log("解锁私家珍藏:", record_id, levelId)
HttpUnit.ins.getZhencangList({limit:999, page:1, type:1}, (data) => { HttpUnit.ins.getZhencangList({limit:999, page:1, type:1}, (data) => {
if (data){ if (data){
this._doUnlockZhencang(data.data, record_id, levelId) this._doUnlockZhencang(data.data, record_id, levelId)
@@ -559,7 +560,7 @@ export default class GameManager {
let item = lockAry[randIdx] let item = lockAry[randIdx]
HttpUnit.ins.sendZhencangId({record_id:record_id, level_id:levelId, img:item.id}, (_data) => { HttpUnit.ins.sendZhencangId({record_id:record_id, level_id:levelId, img:item.id}, (_data) => {
if (_data) { if (_data) {
console.log("获得珍藏卡:", item) logger.log("获得珍藏卡:", item)
GameManager.refreshZhencangCanget() GameManager.refreshZhencangCanget()
} }
}) })
@@ -2,6 +2,7 @@ import { _decorator, sys } from "cc";
import Utils from "../Common/Utils"; import Utils from "../Common/Utils";
import { CommonConfig } from "../Config/CommonConfig"; import { CommonConfig } from "../Config/CommonConfig";
import AudioManager from "./AudioManager"; import AudioManager from "./AudioManager";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@@ -44,7 +45,7 @@ export default class PlayerDataManager {
this.isSoundOn = PlayerDataManager.getForKey(CommonConfig.StorageConfig.SETTING_SOUND, true) this.isSoundOn = PlayerDataManager.getForKey(CommonConfig.StorageConfig.SETTING_SOUND, true)
this.guideMainFinished = PlayerDataManager.getForKey(CommonConfig.StorageConfig.GUIDE_MAIN, false) this.guideMainFinished = PlayerDataManager.getForKey(CommonConfig.StorageConfig.GUIDE_MAIN, false)
this.guideTalkFinished = PlayerDataManager.getForKey(CommonConfig.StorageConfig.GUIDE_TALK, false) this.guideTalkFinished = PlayerDataManager.getForKey(CommonConfig.StorageConfig.GUIDE_TALK, false)
console.log("InitPlayerData", `music=${this.isMusicOn}, sound=${this.isSoundOn}, guideMain=${this.guideMainFinished}, guideTalk=${this.guideTalkFinished}`) logger.log("InitPlayerData", `music=${this.isMusicOn}, sound=${this.isSoundOn}, guideMain=${this.guideMainFinished}, guideTalk=${this.guideTalkFinished}`)
} }
+32 -31
View File
@@ -22,6 +22,7 @@ import {
VideoClip, VideoClip,
} from "cc"; } from "cc";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
import { logger } from "db://assets/Scripts/Main/Common/Logger";
@ccclass("ResManager") @ccclass("ResManager")
export default class ResManager { export default class ResManager {
@@ -78,7 +79,7 @@ export default class ResManager {
if (bundle) { if (bundle) {
bundle.preload(url, Prefab, (err, res) => { bundle.preload(url, Prefab, (err, res) => {
if (err) { if (err) {
console.log(err); logger.log(err);
return; return;
} }
cb && cb(); cb && cb();
@@ -88,7 +89,7 @@ export default class ResManager {
"PB", "PB",
(err: Error, _bundle: AssetManager.Bundle) => { (err: Error, _bundle: AssetManager.Bundle) => {
if (err) { if (err) {
console.log(err); logger.log(err);
return; return;
} }
this.preLoadSubpackagePrefab(url, cb); this.preLoadSubpackagePrefab(url, cb);
@@ -102,7 +103,7 @@ export default class ResManager {
if (bundle) { if (bundle) {
bundle.preload(url, ftype, (err, res) => { bundle.preload(url, ftype, (err, res) => {
if (err) { if (err) {
console.log(err); logger.log(err);
failCB && failCB(err); failCB && failCB(err);
return; return;
} }
@@ -113,7 +114,7 @@ export default class ResManager {
pkgName, pkgName,
(err: Error, _bundle: AssetManager.Bundle) => { (err: Error, _bundle: AssetManager.Bundle) => {
if (err) { if (err) {
console.log(err); logger.log(err);
failCB && failCB(err); failCB && failCB(err);
return; return;
} }
@@ -128,7 +129,7 @@ export default class ResManager {
if (bundle) { if (bundle) {
bundle.load(url, Prefab, (err, res: Prefab) => { bundle.load(url, Prefab, (err, res: Prefab) => {
if (err) { if (err) {
console.log(err); logger.log(err);
return; return;
} }
let cc_N = instantiate(res); let cc_N = instantiate(res);
@@ -139,7 +140,7 @@ export default class ResManager {
"PB", "PB",
(err: Error, _bundle: AssetManager.Bundle) => { (err: Error, _bundle: AssetManager.Bundle) => {
if (err) { if (err) {
console.log(err); logger.log(err);
return; return;
} }
this.loadSubpackagePrefab(url, cb); this.loadSubpackagePrefab(url, cb);
@@ -165,7 +166,7 @@ export default class ResManager {
if (bundle) { if (bundle) {
bundle.load(url, Prefab, (err, res: Prefab) => { bundle.load(url, Prefab, (err, res: Prefab) => {
if (err) { if (err) {
console.log(err); logger.log(err);
return; return;
} }
let cc_N = instantiate(res); let cc_N = instantiate(res);
@@ -176,7 +177,7 @@ export default class ResManager {
"Model3D", "Model3D",
(err: Error, _bundle: AssetManager.Bundle) => { (err: Error, _bundle: AssetManager.Bundle) => {
if (err) { if (err) {
console.log(err); logger.log(err);
return; return;
} }
this.loadSubpackage3DModel(url, cb); this.loadSubpackage3DModel(url, cb);
@@ -199,7 +200,7 @@ export default class ResManager {
if (bundle) { if (bundle) {
bundle.load(url, VideoClip, (err, res: VideoClip) => { bundle.load(url, VideoClip, (err, res: VideoClip) => {
if (err) { if (err) {
console.log(err); logger.log(err);
return; return;
} }
if (!spt.isValid) { if (!spt.isValid) {
@@ -217,7 +218,7 @@ export default class ResManager {
packageName, packageName,
(err: Error, _bundle: AssetManager.Bundle) => { (err: Error, _bundle: AssetManager.Bundle) => {
if (err) { if (err) {
console.log(err); logger.log(err);
return; return;
} }
this.changeBundleVideo(spt, url, packageName, cb); this.changeBundleVideo(spt, url, packageName, cb);
@@ -242,7 +243,7 @@ export default class ResManager {
SpriteFrame, SpriteFrame,
(err, res: SpriteFrame) => { (err, res: SpriteFrame) => {
if (err) { if (err) {
console.log(err); logger.log(err);
return; return;
} }
if (!spt.isValid) { if (!spt.isValid) {
@@ -260,7 +261,7 @@ export default class ResManager {
packageName, packageName,
(err: Error, _bundle: AssetManager.Bundle) => { (err: Error, _bundle: AssetManager.Bundle) => {
if (err) { if (err) {
console.log(err); logger.log(err);
return; return;
} }
this.changeBundleSpriteFrame(spt, url, packageName, cb); this.changeBundleSpriteFrame(spt, url, packageName, cb);
@@ -280,7 +281,7 @@ export default class ResManager {
if (bundle) { if (bundle) {
bundle.load(url + "/texture", Texture2D, (err, res: Texture2D) => { bundle.load(url + "/texture", Texture2D, (err, res: Texture2D) => {
if (err) { if (err) {
console.log(err); logger.log(err);
return; return;
} }
if (!spt.isValid) { if (!spt.isValid) {
@@ -296,7 +297,7 @@ export default class ResManager {
packageName, packageName,
(err: Error, _bundle: AssetManager.Bundle) => { (err: Error, _bundle: AssetManager.Bundle) => {
if (err) { if (err) {
console.log(err); logger.log(err);
return; return;
} }
this.changeBundleTexture(spt, url, packageName, cb); this.changeBundleTexture(spt, url, packageName, cb);
@@ -311,7 +312,7 @@ export default class ResManager {
if (bundle) { if (bundle) {
bundle.load(url, AudioClip, (err, res: AudioClip) => { bundle.load(url, AudioClip, (err, res: AudioClip) => {
if (err) { if (err) {
console.log(err); logger.log(err);
return; return;
} }
cb && cb(res); cb && cb(res);
@@ -321,7 +322,7 @@ export default class ResManager {
"Audio", "Audio",
(err: Error, _bundle: AssetManager.Bundle) => { (err: Error, _bundle: AssetManager.Bundle) => {
if (err) { if (err) {
console.log(err); logger.log(err);
return; return;
} }
this.getBundleAudio(url, cb); this.getBundleAudio(url, cb);
@@ -336,7 +337,7 @@ export default class ResManager {
if (bundle) { if (bundle) {
bundle.load(url, JsonAsset, (err, res: JsonAsset) => { bundle.load(url, JsonAsset, (err, res: JsonAsset) => {
if (err) { if (err) {
console.log(err); logger.log(err);
return; return;
} }
cb && cb(res); cb && cb(res);
@@ -346,7 +347,7 @@ export default class ResManager {
"DataTable", "DataTable",
(err: Error, _bundle: AssetManager.Bundle) => { (err: Error, _bundle: AssetManager.Bundle) => {
if (err) { if (err) {
console.log(err); logger.log(err);
return; return;
} }
this.loadSubpackagePrefab(url, cb); this.loadSubpackagePrefab(url, cb);
@@ -361,7 +362,7 @@ export default class ResManager {
loadRemoteAudio(url: string, cb: Function = null) { loadRemoteAudio(url: string, cb: Function = null) {
assetManager.loadRemote<AudioClip>(url, (err, res: AudioClip) => { assetManager.loadRemote<AudioClip>(url, (err, res: AudioClip) => {
if (err) { if (err) {
console.error(err); logger.error(err);
return; return;
} }
cb && cb(res); cb && cb(res);
@@ -398,9 +399,9 @@ export default class ResManager {
spttemp.frameUrl = url; spttemp.frameUrl = url;
// 加载 // 加载
assetManager.loadRemote<ImageAsset>(url, (err, res: ImageAsset) => { assetManager.loadRemote<ImageAsset>(url, (err, res: ImageAsset) => {
console.log("changeRemoteSpriteFrame方法加载远程图片: ", url); logger.log("changeRemoteSpriteFrame方法加载远程图片: ", url);
if (err) { if (err) {
console.log(err); logger.log(err);
return; return;
} }
if (!spt.isValid) { if (!spt.isValid) {
@@ -427,9 +428,9 @@ export default class ResManager {
// spttemp.frameUrl = url; // spttemp.frameUrl = url;
// // 加载 // // 加载
// assetManager.loadRemote<VideoClip>(url, (err, res: VideoClip) => { // assetManager.loadRemote<VideoClip>(url, (err, res: VideoClip) => {
// console.log("加载远程视频: ", url); // logger.log("加载远程视频: ", url);
// if (err) { // if (err) {
// console.error(err); // logger.error(err);
// return; // return;
// } // }
// if (!spt.isValid) { // if (!spt.isValid) {
@@ -442,7 +443,7 @@ export default class ResManager {
// cb && cb(res); // cb && cb(res);
// }) // })
console.log("loadRemoteVideo方法加载远程视频: ", url); logger.log("loadRemoteVideo方法加载远程视频: ", url);
spt.resourceType = VideoPlayer.ResourceType.REMOTE; spt.resourceType = VideoPlayer.ResourceType.REMOTE;
spt.remoteURL = url; spt.remoteURL = url;
cb && cb(null); cb && cb(null);
@@ -463,7 +464,7 @@ export default class ResManager {
private loadResourceRes(path: string, cb) { private loadResourceRes(path: string, cb) {
resources.load(path, ImageAsset, (err, res: ImageAsset) => { resources.load(path, ImageAsset, (err, res: ImageAsset) => {
if (err) { if (err) {
console.log(err); logger.log(err);
return; return;
} }
cb && cb(res); cb && cb(res);
@@ -490,7 +491,7 @@ export default class ResManager {
SpriteFrame, SpriteFrame,
(err, res: SpriteFrame) => { (err, res: SpriteFrame) => {
if (err) { if (err) {
console.log(err); logger.log(err);
return; return;
} }
if (!spt.isValid) { if (!spt.isValid) {
@@ -507,7 +508,7 @@ export default class ResManager {
if (!spt || !path) return; if (!spt || !path) return;
resources.load(path + "/texture", Texture2D, (err, res: Texture2D) => { resources.load(path + "/texture", Texture2D, (err, res: Texture2D) => {
if (err) { if (err) {
console.log(err); logger.log(err);
return; return;
} }
if (!spt.isValid) { if (!spt.isValid) {
@@ -529,7 +530,7 @@ export default class ResManager {
if (bundle) { if (bundle) {
bundle.load("ui_sprite_gray", Material, (err, res: Material) => { bundle.load("ui_sprite_gray", Material, (err, res: Material) => {
if (err) { if (err) {
console.log(err); logger.log(err);
return; return;
} }
// spt.setSharedMaterial(res, 0) // spt.setSharedMaterial(res, 0)
@@ -540,7 +541,7 @@ export default class ResManager {
"Materials", "Materials",
(err: Error, _bundle: AssetManager.Bundle) => { (err: Error, _bundle: AssetManager.Bundle) => {
if (err) { if (err) {
console.log(err); logger.log(err);
return; return;
} }
this.SetGray(spt, isGray); this.SetGray(spt, isGray);
@@ -560,7 +561,7 @@ export default class ResManager {
if (bundle) { if (bundle) {
bundle.load("mohu", Material, (err, res: Material) => { bundle.load("mohu", Material, (err, res: Material) => {
if (err) { if (err) {
console.log(err); logger.log(err);
return; return;
} }
// spt.setSharedMaterial(res, 0) // spt.setSharedMaterial(res, 0)
@@ -571,7 +572,7 @@ export default class ResManager {
"Materials", "Materials",
(err: Error, _bundle: AssetManager.Bundle) => { (err: Error, _bundle: AssetManager.Bundle) => {
if (err) { if (err) {
console.log(err); logger.log(err);
return; return;
} }
this.SetBlur(spt, isBule); this.SetBlur(spt, isBule);
+3 -2
View File
@@ -16,6 +16,7 @@ import Utils from "../Common/Utils";
import GameRootUI from "../Common/GameRootUI"; import GameRootUI from "../Common/GameRootUI";
import ResManager from "./ResManager"; import ResManager from "./ResManager";
import { CommonConfig } from "../Config/CommonConfig"; import { CommonConfig } from "../Config/CommonConfig";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@@ -203,7 +204,7 @@ export class ViewManager extends Component {
type type
); );
} else { } else {
console.log("打开界面:", i_prefab); logger.log("打开界面:", i_prefab);
ResManager.I.getPrefab( ResManager.I.getPrefab(
i_prefab, i_prefab,
(pb: Node) => { (pb: Node) => {
@@ -229,7 +230,7 @@ export class ViewManager extends Component {
"tips" "tips"
); );
} else { } else {
console.log("打开界面:", i_prefab); logger.log("打开界面:", i_prefab);
ResManager.I.getPrefab( ResManager.I.getPrefab(
i_prefab, i_prefab,
(pb: Node) => { (pb: Node) => {
+4 -3
View File
@@ -1,6 +1,7 @@
import { _decorator, Camera, Component, Node } from "cc"; import { _decorator, Camera, Component, Node } from "cc";
import GameRootUI from "../Main/Common/GameRootUI"; import GameRootUI from "../Main/Common/GameRootUI";
import { MainController } from "../chat18x/core/MainController"; import { MainController } from "../chat18x/core/MainController";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@@ -34,11 +35,11 @@ export class MainScene extends Component {
*/ */
private async initMainController(): Promise<void> { private async initMainController(): Promise<void> {
try { try {
console.log("[MainScene] 开始初始化MainController"); logger.log("[MainScene] 开始初始化MainController");
await MainController.I.init(); await MainController.I.init();
console.log("[MainScene] MainController初始化完成"); logger.log("[MainScene] MainController初始化完成");
} catch (error) { } catch (error) {
console.error("[MainScene] MainController初始化失败:", error); logger.error("[MainScene] MainController初始化失败:", error);
} }
} }
} }
+3 -2
View File
@@ -8,6 +8,7 @@ import { CommAdDialog } from "./Item/CommAdDialog";
import Utils from "../Main/Common/Utils"; import Utils from "../Main/Common/Utils";
import { InnerMsgCode } from "../Main/Config/InnerMsgCode"; import { InnerMsgCode } from "../Main/Config/InnerMsgCode";
import { TipsPanel } from "../chat18x/ui/panels/TipsPanel"; import { TipsPanel } from "../chat18x/ui/panels/TipsPanel";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@@ -34,7 +35,7 @@ export default class SubManager {
/**通用确认框 { content: string, strYes?: string, strNo?: string, yesCallback?: Function, noCallback?: Function, closeCallback?: Function } */ /**通用确认框 { content: string, strYes?: string, strNo?: string, yesCallback?: Function, noCallback?: Function, closeCallback?: Function } */
public static ShowConfirm(param: any) { public static ShowConfirm(param: any) {
if (!GameRootUI.I) { if (!GameRootUI.I) {
console.warn("GameRootUI还未初始化", param); logger.warn("GameRootUI还未初始化", param);
return; return;
} }
ResManager.I.loadSubpackagePrefab("item/ConfirmDialog", (n_node: Node) => { ResManager.I.loadSubpackagePrefab("item/ConfirmDialog", (n_node: Node) => {
@@ -48,7 +49,7 @@ export default class SubManager {
/**通用广告框 { content: string, strAd?: string, strLeft?: string, adCallback?: Function, leftCallback?: Function, closeCallback?: Function } */ /**通用广告框 { content: string, strAd?: string, strLeft?: string, adCallback?: Function, leftCallback?: Function, closeCallback?: Function } */
public static ShowCommonAdDialog(param: any) { public static ShowCommonAdDialog(param: any) {
if (!GameRootUI.I) { if (!GameRootUI.I) {
console.warn("GameRootUI还未初始化", param); logger.warn("GameRootUI还未初始化", param);
return; return;
} }
ResManager.I.loadSubpackagePrefab("item/CommAdDialog", (n_node: Node) => { ResManager.I.loadSubpackagePrefab("item/CommAdDialog", (n_node: Node) => {
+8 -7
View File
@@ -46,6 +46,7 @@ import proto from "db://assets/Scripts/proto/proto.pb.js";
import { ViewManager } from "../../Main/Manager/ViewManager"; import { ViewManager } from "../../Main/Manager/ViewManager";
import { MainScene } from "../MainScene"; import { MainScene } from "../MainScene";
import { prodConfig } from "../../chat18x/config/env/prod"; import { prodConfig } from "../../chat18x/config/env/prod";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@@ -100,7 +101,7 @@ export class PreloadUI extends Component {
// 初始化配置 // 初始化配置
ConfigManager.I.init(); ConfigManager.I.init();
//console.log(ConfigManager.tables.TbGlobalConfig.GameName); //logger.log(ConfigManager.tables.TbGlobalConfig.GameName);
// 初始化环境配置 // 初始化环境配置
AppConfig.I; AppConfig.I;
// 初始化数据层 // 初始化数据层
@@ -116,7 +117,7 @@ export class PreloadUI extends Component {
protected onDestroy(): void {} protected onDestroy(): void {}
onVideoReadyToPlay() { onVideoReadyToPlay() {
console.log("Video Ready"); logger.log("Video Ready");
this._nodeTab.VideoPlayer.getComponent(VideoPlayer).play(); this._nodeTab.VideoPlayer.getComponent(VideoPlayer).play();
} }
update(deltaTime: number) { update(deltaTime: number) {
@@ -155,12 +156,12 @@ export class PreloadUI extends Component {
num_succeed++; num_succeed++;
let percent = 0.45 * (num_prefab / preloadTab.length); let percent = 0.45 * (num_prefab / preloadTab.length);
this.showLoadProgress(0.55 + percent); this.showLoadProgress(0.55 + percent);
console.log("加载成功:", cfg.path); logger.log("加载成功:", cfg.path);
preloadFunc(); preloadFunc();
}, },
(err) => { (err) => {
num_prefab++; num_prefab++;
console.log("加载失败:", err); logger.log("加载失败:", err);
} }
); );
} else { } else {
@@ -199,9 +200,9 @@ export class PreloadUI extends Component {
device: deviceId, device: deviceId,
os, os,
}; };
console.log("登录请求数据:", reqData); logger.log("登录请求数据:", reqData);
let res = await AuthService.I.login(reqData); let res = await AuthService.I.login(reqData);
console.log("登录响应数据:", res); logger.log("登录响应数据:", res);
if (res && res.code === proto.cs.EnmRetCode.SUCCESS) { if (res && res.code === proto.cs.EnmRetCode.SUCCESS) {
const resData = res.data; const resData = res.data;
const loginData = DataManager.I.getDataById<LoginData>(DataId.Login); const loginData = DataManager.I.getDataById<LoginData>(DataId.Login);
@@ -228,7 +229,7 @@ export class PreloadUI extends Component {
private async reqMyInfo() { private async reqMyInfo() {
const reqData = {}; const reqData = {};
let res = await PlayerDataService.I.reqMyInfo(reqData); let res = await PlayerDataService.I.reqMyInfo(reqData);
console.log("个人信息响应数据:", res); logger.log("个人信息响应数据:", res);
if (res && res.code === proto.cs.EnmRetCode.SUCCESS) { if (res && res.code === proto.cs.EnmRetCode.SUCCESS) {
const resData = res.data; const resData = res.data;
const walletData = DataManager.I.getDataById<WalletData>(DataId.Wallet); const walletData = DataManager.I.getDataById<WalletData>(DataId.Wallet);
+21 -19
View File
@@ -13,6 +13,8 @@ import li_BaseView from "../../Main/Common/li_BaseView";
import ResManager from "../../Main/Manager/ResManager"; import ResManager from "../../Main/Manager/ResManager";
import { DataManager, DataId } from "../../chat18x/data/DataManager"; import { DataManager, DataId } from "../../chat18x/data/DataManager";
import { EnvData } from "../../chat18x/data/EnvData"; import { EnvData } from "../../chat18x/data/EnvData";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
//场景背景层 - 视频模式 //场景背景层 - 视频模式
@@ -39,7 +41,7 @@ export class SceneBgVideoLayer extends li_BaseView {
Utils.parseNode(this.node, this._nodeTab); Utils.parseNode(this.node, this._nodeTab);
this.videoPlayer = this._nodeTab.videoPlayer.getComponent(VideoPlayer); this.videoPlayer = this._nodeTab.videoPlayer.getComponent(VideoPlayer);
if (!this.videoPlayer) { if (!this.videoPlayer) {
console.error("SceneBgVideoLayer: video节点未找到或没有VideoPlayer组件"); logger.error("SceneBgVideoLayer: video节点未找到或没有VideoPlayer组件");
} }
this.initVideoEvents(); this.initVideoEvents();
SceneBgVideoLayer.handle = this; SceneBgVideoLayer.handle = this;
@@ -93,7 +95,7 @@ export class SceneBgVideoLayer extends li_BaseView {
} }
) { ) {
if (!this.videoPlayer) { if (!this.videoPlayer) {
console.error("SceneBgVideoLayer: VideoPlayer未初始化"); logger.error("SceneBgVideoLayer: VideoPlayer未初始化");
return; return;
} }
@@ -129,13 +131,13 @@ export class SceneBgVideoLayer extends li_BaseView {
const uiTransform = this.videoPlayer.node.getComponent(UITransform); const uiTransform = this.videoPlayer.node.getComponent(UITransform);
if (uiTransform) { if (uiTransform) {
uiTransform.setAnchorPoint(0.5, 0.5); uiTransform.setAnchorPoint(0.5, 0.5);
console.log("SceneBgVideoLayer: 设置视频锚点为 (0.5, 0.5)"); logger.log("SceneBgVideoLayer: 设置视频锚点为 (0.5, 0.5)");
} }
// 立即开始播放,尺寸和位置将在 READY_TO_PLAY 事件中设置 // 立即开始播放,尺寸和位置将在 READY_TO_PLAY 事件中设置
this.videoPlayer.play(); this.videoPlayer.play();
this.isPlaying = true; this.isPlaying = true;
console.log(`SceneBgVideoLayer: 开始加载视频 ${path}, 配置:`, config); logger.log(`SceneBgVideoLayer: 开始加载视频 ${path}, 配置:`, config);
} }
); );
} }
@@ -146,7 +148,7 @@ export class SceneBgVideoLayer extends li_BaseView {
pause() { pause() {
if (this.videoPlayer && this.isPlaying) { if (this.videoPlayer && this.isPlaying) {
this.videoPlayer.pause(); this.videoPlayer.pause();
console.log("SceneBgVideoLayer: 暂停视频"); logger.log("SceneBgVideoLayer: 暂停视频");
} }
} }
@@ -156,7 +158,7 @@ export class SceneBgVideoLayer extends li_BaseView {
resume() { resume() {
if (this.videoPlayer && !this.videoPlayer.isPlaying) { if (this.videoPlayer && !this.videoPlayer.isPlaying) {
this.videoPlayer.play(); this.videoPlayer.play();
console.log("SceneBgVideoLayer: 继续播放视频"); logger.log("SceneBgVideoLayer: 继续播放视频");
} }
} }
@@ -167,7 +169,7 @@ export class SceneBgVideoLayer extends li_BaseView {
if (this.videoPlayer) { if (this.videoPlayer) {
this.videoPlayer.stop(); this.videoPlayer.stop();
this.clearVideoState(); this.clearVideoState();
console.log("SceneBgVideoLayer: 停止视频"); logger.log("SceneBgVideoLayer: 停止视频");
} }
} }
@@ -179,10 +181,10 @@ export class SceneBgVideoLayer extends li_BaseView {
if (this.videoPlayer) { if (this.videoPlayer) {
if (typeof scale === "number") { if (typeof scale === "number") {
this.videoPlayer.node.setScale(new Vec3(scale, scale, 1)); this.videoPlayer.node.setScale(new Vec3(scale, scale, 1));
console.log(`SceneBgVideoLayer: 设置视频缩放 ${scale}`); logger.log(`SceneBgVideoLayer: 设置视频缩放 ${scale}`);
} else { } else {
this.videoPlayer.node.setScale(scale); this.videoPlayer.node.setScale(scale);
console.log( logger.log(
`SceneBgVideoLayer: 设置视频缩放 (${scale.x}, ${scale.y}, ${scale.z})` `SceneBgVideoLayer: 设置视频缩放 (${scale.x}, ${scale.y}, ${scale.z})`
); );
} }
@@ -209,7 +211,7 @@ export class SceneBgVideoLayer extends li_BaseView {
size: targetSize, size: targetSize,
position: position, position: position,
}; };
console.log("SceneBgVideoLayer: 视频未准备好,配置已存储等待应用"); logger.log("SceneBgVideoLayer: 视频未准备好,配置已存储等待应用");
} }
} }
@@ -248,7 +250,7 @@ export class SceneBgVideoLayer extends li_BaseView {
targetWorldPos = new Vec3(pos.x, pos.y, pos.z || 0); targetWorldPos = new Vec3(pos.x, pos.y, pos.z || 0);
} }
this.videoPlayer.node.setWorldPosition(targetWorldPos); this.videoPlayer.node.setWorldPosition(targetWorldPos);
console.log( logger.log(
`SceneBgVideoLayer: 设置视频位置 (${targetWorldPos.x}, ${targetWorldPos.y}, ${targetWorldPos.z})` `SceneBgVideoLayer: 设置视频位置 (${targetWorldPos.x}, ${targetWorldPos.y}, ${targetWorldPos.z})`
); );
} }
@@ -270,34 +272,34 @@ export class SceneBgVideoLayer extends li_BaseView {
const scale = Math.max(scaleX, scaleY); const scale = Math.max(scaleX, scaleY);
this.videoPlayer.node.setScale(new Vec3(scale, scale, 1)); this.videoPlayer.node.setScale(new Vec3(scale, scale, 1));
console.log( logger.log(
`SceneBgVideoLayer: 设置视频缩放 ${scale} (原始尺寸: ${videoSize.width}x${videoSize.height}, 目标尺寸: ${targetWidth}x${targetHeight})` `SceneBgVideoLayer: 设置视频缩放 ${scale} (原始尺寸: ${videoSize.width}x${videoSize.height}, 目标尺寸: ${targetWidth}x${targetHeight})`
); );
} else { } else {
console.warn("SceneBgVideoLayer: 无法获取视频尺寸,跳过缩放设置"); logger.warn("SceneBgVideoLayer: 无法获取视频尺寸,跳过缩放设置");
} }
} else if (config.scale) { } else if (config.scale) {
// 如果显式传入了 scale 参数,直接应用 // 如果显式传入了 scale 参数,直接应用
if (typeof config.scale === "number") { if (typeof config.scale === "number") {
this.videoPlayer.node.setScale(new Vec3(config.scale, config.scale, 1)); this.videoPlayer.node.setScale(new Vec3(config.scale, config.scale, 1));
console.log(`SceneBgVideoLayer: 设置显式缩放 ${config.scale}`); logger.log(`SceneBgVideoLayer: 设置显式缩放 ${config.scale}`);
} else { } else {
this.videoPlayer.node.setScale(config.scale); this.videoPlayer.node.setScale(config.scale);
console.log( logger.log(
`SceneBgVideoLayer: 设置显式缩放 (${config.scale.x}, ${config.scale.y}, ${config.scale.z})` `SceneBgVideoLayer: 设置显式缩放 (${config.scale.x}, ${config.scale.y}, ${config.scale.z})`
); );
} }
} else { } else {
// 没有指定尺寸或缩放,保持原始缩放 // 没有指定尺寸或缩放,保持原始缩放
this.videoPlayer.node.setScale(Vec3.ONE); this.videoPlayer.node.setScale(Vec3.ONE);
console.log("SceneBgVideoLayer: 保持默认缩放 (1, 1, 1)"); logger.log("SceneBgVideoLayer: 保持默认缩放 (1, 1, 1)");
} }
} }
//================== 事件回调 ================== //================== 事件回调 ==================
private onVideoReadyToPlay = () => { private onVideoReadyToPlay = () => {
console.log("SceneBgVideoLayer: 视频准备完成"); logger.log("SceneBgVideoLayer: 视频准备完成");
// 应用待处理的视频配置 // 应用待处理的视频配置
if (this.pendingVideoConfig) { if (this.pendingVideoConfig) {
@@ -312,12 +314,12 @@ export class SceneBgVideoLayer extends li_BaseView {
private onVideoEvent = (event: any, eventType: string) => { private onVideoEvent = (event: any, eventType: string) => {
switch (eventType) { switch (eventType) {
case "completed": case "completed":
console.log("SceneBgVideoLayer: 视频播放完成"); logger.log("SceneBgVideoLayer: 视频播放完成");
this.clearVideoState(); this.clearVideoState();
this.onVideoEnd(); this.onVideoEnd();
break; break;
case "error": case "error":
console.error("SceneBgVideoLayer: 视频播放错误"); logger.error("SceneBgVideoLayer: 视频播放错误");
this.clearVideoState(); this.clearVideoState();
this.onVideoError(); this.onVideoError();
break; break;
@@ -6,6 +6,7 @@
import { DataId, DataManager } from "../data/DataManager"; import { DataId, DataManager } from "../data/DataManager";
import { GlobalData } from "../data/GlobalData"; import { GlobalData } from "../data/GlobalData";
import { ConfigManager } from "../manager/ConfigManager"; import { ConfigManager } from "../manager/ConfigManager";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
export interface AIConfig { export interface AIConfig {
/** API密钥 */ /** API密钥 */
@@ -62,7 +63,7 @@ export class ApiConfig {
).getTimeout(), // 30秒 ).getTimeout(), // 30秒
}; };
//console.warn(this.config.apiKey); //logger.warn(this.config.apiKey);
} }
/** /**
@@ -99,7 +100,7 @@ export class ApiConfig {
if (temperature >= 0 && temperature <= 2) { if (temperature >= 0 && temperature <= 2) {
this.config.temperature = temperature; this.config.temperature = temperature;
} else { } else {
console.warn("Temperature should be between 0 and 2"); logger.warn("Temperature should be between 0 and 2");
} }
} }
@@ -115,11 +116,11 @@ export class ApiConfig {
*/ */
public validateConfig(): boolean { public validateConfig(): boolean {
if (!this.config.apiKey || this.config.apiKey.trim() === "") { if (!this.config.apiKey || this.config.apiKey.trim() === "") {
console.error("API key is missing"); logger.error("API key is missing");
return false; return false;
} }
if (!this.config.model || this.config.model.trim() === "") { if (!this.config.model || this.config.model.trim() === "") {
console.error("Model name is missing"); logger.error("Model name is missing");
return false; return false;
} }
return true; return true;
+17 -14
View File
@@ -17,6 +17,7 @@ import { GirlData } from "../data/GirlData";
import proto from "db://assets/Scripts/proto/proto.pb.js"; import proto from "db://assets/Scripts/proto/proto.pb.js";
import { TipsPanel } from "../ui/panels/TipsPanel"; import { TipsPanel } from "../ui/panels/TipsPanel";
import LanguageUtils from "../../Main/Common/LanguageUtils"; import LanguageUtils from "../../Main/Common/LanguageUtils";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
/** /**
* AI聊天服务类 * AI聊天服务类
@@ -143,8 +144,10 @@ export class ChatAIService {
}, },
history: savedHistory, history: savedHistory,
}); });
console.log(chat);
console.log( logger.log(chat);
logger.log(
`Loaded ${savedHistory.length} history messages for role ${roleId}` `Loaded ${savedHistory.length} history messages for role ${roleId}`
); );
} else { } else {
@@ -178,9 +181,9 @@ export class ChatAIService {
], ],
}, },
}); });
console.log(chat); logger.log(chat);
console.log(`Created new chat instance for role ${roleId}`); logger.log(`Created new chat instance for role ${roleId}`);
} }
this.chatInstances.set(roleId, chat); this.chatInstances.set(roleId, chat);
@@ -217,7 +220,7 @@ export class ChatAIService {
* @example * @example
* ```typescript * ```typescript
* const response = await chatService.sendMessage(10001, "你好"); * const response = await chatService.sendMessage(10001, "你好");
* console.log(response); // AI的回复 * logger.log(response); // AI的回复
* ``` * ```
*/ */
public async sendMessage(roleId: number, message: string): Promise<string> { public async sendMessage(roleId: number, message: string): Promise<string> {
@@ -248,7 +251,7 @@ export class ChatAIService {
}); });
if (response && response.text) { if (response && response.text) {
console.log(`Response from role ${roleId}:`, response.text); logger.log(`Response from role ${roleId}:`, response.text);
try { try {
// 保存用户消息 // 保存用户消息
@@ -285,7 +288,7 @@ export class ChatAIService {
message, message,
response.text response.text
).catch((emotionError) => { ).catch((emotionError) => {
console.warn( logger.warn(
`Failed to update emotion for role ${roleId}:`, `Failed to update emotion for role ${roleId}:`,
emotionError emotionError
); );
@@ -335,7 +338,7 @@ export class ChatAIService {
EmotionAIService.Instance.clearEmotionHistory(roleId); EmotionAIService.Instance.clearEmotionHistory(roleId);
// 清除本地存储的历史 // 清除本地存储的历史
ChatHistoryManager.Instance.clearHistory(roleId); ChatHistoryManager.Instance.clearHistory(roleId);
console.log(`Cleared chat history for role ${roleId}`); logger.log(`Cleared chat history for role ${roleId}`);
} }
/** /**
@@ -347,7 +350,7 @@ export class ChatAIService {
EmotionAIService.Instance.clearAllEmotionHistory(); EmotionAIService.Instance.clearAllEmotionHistory();
// 清除本地存储的所有历史 // 清除本地存储的所有历史
ChatHistoryManager.Instance.clearAllHistory(); ChatHistoryManager.Instance.clearAllHistory();
console.log("Cleared all chat histories"); logger.log("Cleared all chat histories");
} }
/** /**
@@ -362,7 +365,7 @@ export class ChatAIService {
* @deprecated 使sendMessage方法 * @deprecated 使sendMessage方法
*/ */
public async Post(data: GPTRequest): Promise<string> { public async Post(data: GPTRequest): Promise<string> {
console.warn("Post方法已废弃,请使用sendMessage方法"); logger.warn("Post方法已废弃,请使用sendMessage方法");
const roleId = this.currentRoleId || 10001; // 默认使用第一个角色 const roleId = this.currentRoleId || 10001; // 默认使用第一个角色
const message = data.messages[0]?.content || ""; const message = data.messages[0]?.content || "";
return this.sendMessage(roleId, message); return this.sendMessage(roleId, message);
@@ -377,9 +380,9 @@ export class ChatAIService {
girlId, girlId,
msgs: msgList, msgs: msgList,
}; };
console.log("请求上报聊天数据的请求数据:", reqData); logger.log("请求上报聊天数据的请求数据:", reqData);
let res = await ChatService.I.reqChatMsg(reqData); let res = await ChatService.I.reqChatMsg(reqData);
console.log("请求上报聊天数据的响应数据:", res); logger.log("请求上报聊天数据的响应数据:", res);
if (res && res.code === proto.cs.EnmRetCode.SUCCESS) { if (res && res.code === proto.cs.EnmRetCode.SUCCESS) {
const resData = res.data; const resData = res.data;
// 保存数据 // 保存数据
@@ -408,9 +411,9 @@ export class ChatAIService {
page, page,
limit, limit,
}; };
console.log("获取聊天数据的请求数据:", reqData); logger.log("获取聊天数据的请求数据:", reqData);
let res = await ChatService.I.reqGetChatMsg(reqData); let res = await ChatService.I.reqGetChatMsg(reqData);
console.log("获取聊天数据的响应数据:", res); logger.log("获取聊天数据的响应数据:", res);
if (res && res.code === proto.cs.EnmRetCode.SUCCESS) { if (res && res.code === proto.cs.EnmRetCode.SUCCESS) {
const resData = res.data; const resData = res.data;
// 保存数据 // 保存数据
+25 -24
View File
@@ -9,6 +9,7 @@ import Utils from "../../Main/Common/Utils";
import { InnerMsgCode } from "../../Main/Config/InnerMsgCode"; import { InnerMsgCode } from "../../Main/Config/InnerMsgCode";
import { TipsPanel } from "../ui/panels/TipsPanel"; import { TipsPanel } from "../ui/panels/TipsPanel";
import LanguageUtils from "../../Main/Common/LanguageUtils"; import LanguageUtils from "../../Main/Common/LanguageUtils";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
/** /**
* - Panel和Controller之间的通信协议 * - Panel和Controller之间的通信协议
@@ -102,7 +103,7 @@ export class ChatController {
*/ */
public bindView(callback: IChatPanelCallback): void { public bindView(callback: IChatPanelCallback): void {
this.callback = callback; this.callback = callback;
console.log("ChatController: View bound successfully"); logger.log("ChatController: View bound successfully");
} }
/** /**
@@ -110,7 +111,7 @@ export class ChatController {
*/ */
public unbindView(): void { public unbindView(): void {
this.callback = null; this.callback = null;
console.log("ChatController: View unbound"); logger.log("ChatController: View unbound");
} }
/** /**
@@ -139,7 +140,7 @@ export class ChatController {
// 同步到DialogManager // 同步到DialogManager
//this.syncDialogData(); //this.syncDialogData();
console.log(`ChatController initialized with role ${roleId}`); logger.log(`ChatController initialized with role ${roleId}`);
} else { } else {
const error = new Error(`Invalid roleId: ${roleId}`); const error = new Error(`Invalid roleId: ${roleId}`);
this.handleError(error); this.handleError(error);
@@ -153,7 +154,7 @@ export class ChatController {
*/ */
public switchRole(categoryId: string, roleId: number): boolean { public switchRole(categoryId: string, roleId: number): boolean {
if (!this.chatModel.switchToRole(categoryId, roleId)) { if (!this.chatModel.switchToRole(categoryId, roleId)) {
console.error(`Failed to switch to role ${roleId}`); logger.error(`Failed to switch to role ${roleId}`);
return false; return false;
} }
@@ -166,7 +167,7 @@ export class ChatController {
// 同步对话数据到DialogManager // 同步对话数据到DialogManager
//this.syncDialogData(); //this.syncDialogData();
console.log(`ChatController switched to role ${roleId}`); logger.log(`ChatController switched to role ${roleId}`);
return true; return true;
} }
@@ -182,7 +183,7 @@ export class ChatController {
// 检查聊天次数限制 // 检查聊天次数限制
if (!this.canSendMessage()) { if (!this.canSendMessage()) {
console.warn("ChatController: Cannot send message - chat limit reached"); logger.warn("ChatController: Cannot send message - chat limit reached");
this.callback?.onChatLimitReached(); this.callback?.onChatLimitReached();
return false; return false;
} }
@@ -190,7 +191,7 @@ export class ChatController {
try { try {
const roleId = this.chatModel.getCurrentRoleId(); const roleId = this.chatModel.getCurrentRoleId();
if (!roleId) { if (!roleId) {
console.error("Role ID is not available in ChatModel"); logger.error("Role ID is not available in ChatModel");
TipsPanel.show(LanguageUtils.getText("chat_error_code_1004")); TipsPanel.show(LanguageUtils.getText("chat_error_code_1004"));
} }
@@ -200,7 +201,7 @@ export class ChatController {
// 显示加载中的对话 // 显示加载中的对话
//this.dialogManager?.addLoadingDialog(); //this.dialogManager?.addLoadingDialog();
console.log(`Sending message to role ${roleId}: ${message}`); logger.log(`Sending message to role ${roleId}: ${message}`);
// 发送消息给AI服务 // 发送消息给AI服务
const response = await ChatAIService.Instance.sendMessage( const response = await ChatAIService.Instance.sendMessage(
roleId, roleId,
@@ -225,7 +226,7 @@ export class ChatController {
// 注意:情绪状态将通过异步事件更新,不在这里同步获取 // 注意:情绪状态将通过异步事件更新,不在这里同步获取
console.log(`Response received from role ${roleId}: ${response}`); logger.log(`Response received from role ${roleId}: ${response}`);
return true; return true;
} else { } else {
return false; return false;
@@ -259,7 +260,7 @@ export class ChatController {
public clearChatHistory(): void { public clearChatHistory(): void {
const roleId = this.chatModel.getCurrentRoleId(); const roleId = this.chatModel.getCurrentRoleId();
if (!roleId) { if (!roleId) {
console.warn("Cannot clear history: roleId is null"); logger.warn("Cannot clear history: roleId is null");
return; return;
} }
@@ -270,9 +271,9 @@ export class ChatController {
// 清除模型中的对话记录 // 清除模型中的对话记录
this.chatModel.clearDialogs(); this.chatModel.clearDialogs();
console.log(`Chat history cleared for role ${roleId}`); logger.log(`Chat history cleared for role ${roleId}`);
} catch (error) { } catch (error) {
console.error("Failed to clear chat history:", error); logger.error("Failed to clear chat history:", error);
this.handleError(error as Error); this.handleError(error as Error);
} }
} }
@@ -289,9 +290,9 @@ export class ChatController {
// 清除模型中的对话记录 // 清除模型中的对话记录
this.chatModel.clearDialogs(roleId); this.chatModel.clearDialogs(roleId);
console.log(`Chat history cleared for role ${roleId}`); logger.log(`Chat history cleared for role ${roleId}`);
} catch (error) { } catch (error) {
console.error(`Failed to clear chat history for role ${roleId}:`, error); logger.error(`Failed to clear chat history for role ${roleId}:`, error);
this.handleError(error as Error); this.handleError(error as Error);
} }
} }
@@ -311,7 +312,7 @@ export class ChatController {
this.chatModel.reset(); this.chatModel.reset();
this.callback = null; this.callback = null;
this.dialogManager = null; this.dialogManager = null;
console.log("ChatController destroyed"); logger.log("ChatController destroyed");
} }
/** /**
@@ -356,7 +357,7 @@ export class ChatController {
public loadDialogsFromHistory(roleId?: number): void { public loadDialogsFromHistory(roleId?: number): void {
const targetRoleId = roleId || this.chatModel.getCurrentRoleId(); const targetRoleId = roleId || this.chatModel.getCurrentRoleId();
if (!targetRoleId) { if (!targetRoleId) {
console.warn("Cannot load dialogs: no active role"); logger.warn("Cannot load dialogs: no active role");
return; return;
} }
@@ -373,7 +374,7 @@ export class ChatController {
this.chatModel.addDialog(isPlayer, content, targetRoleId); this.chatModel.addDialog(isPlayer, content, targetRoleId);
}); });
console.log( logger.log(
`Loaded ${chatHistory.length} messages from ChatHistoryManager for role ${targetRoleId}` `Loaded ${chatHistory.length} messages from ChatHistoryManager for role ${targetRoleId}`
); );
} }
@@ -384,7 +385,7 @@ export class ChatController {
*/ */
public syncDialogData(): void { public syncDialogData(): void {
if (!this.dialogManager || !this.chatModel.validate()) { if (!this.dialogManager || !this.chatModel.validate()) {
console.warn( logger.warn(
"Cannot sync dialog data: missing DialogManager or invalid ChatModel" "Cannot sync dialog data: missing DialogManager or invalid ChatModel"
); );
return; return;
@@ -392,7 +393,7 @@ export class ChatController {
const dialogs = this.chatModel.getDialogs(); const dialogs = this.chatModel.getDialogs();
this.dialogManager.syncFromChatModel(dialogs); this.dialogManager.syncFromChatModel(dialogs);
console.log( logger.log(
`Synced ${dialogs.length} dialogs from ChatModel to DialogManager` `Synced ${dialogs.length} dialogs from ChatModel to DialogManager`
); );
} }
@@ -445,9 +446,9 @@ export class ChatController {
// 清除模型中的角色数据 // 清除模型中的角色数据
this.chatModel.clearRoleData(roleId); this.chatModel.clearRoleData(roleId);
console.log(`All data cleared for role ${roleId}`); logger.log(`All data cleared for role ${roleId}`);
} catch (error) { } catch (error) {
console.error(`Failed to clear all data for role ${roleId}:`, error); logger.error(`Failed to clear all data for role ${roleId}:`, error);
this.handleError(error as Error); this.handleError(error as Error);
} }
} }
@@ -482,7 +483,7 @@ export class ChatController {
*/ */
private onEmotionUpdated(data: any): void { private onEmotionUpdated(data: any): void {
if (!data || !data.roleId || data.emotion === undefined) { if (!data || !data.roleId || data.emotion === undefined) {
console.warn("Invalid emotion update data:", data); logger.warn("Invalid emotion update data:", data);
return; return;
} }
@@ -490,7 +491,7 @@ export class ChatController {
// 只处理当前角色的情绪更新 // 只处理当前角色的情绪更新
if (roleId === this.chatModel.getCurrentRoleId()) { if (roleId === this.chatModel.getCurrentRoleId()) {
console.log( logger.log(
`ChatController: Emotion updated for role ${roleId}: ${VideoEmotion[emotion]}` `ChatController: Emotion updated for role ${roleId}: ${VideoEmotion[emotion]}`
); );
@@ -507,7 +508,7 @@ export class ChatController {
* @param error * @param error
*/ */
private handleError(error: Error): void { private handleError(error: Error): void {
console.error("ChatController error:", error); logger.error("ChatController error:", error);
this.callback?.onError(error); this.callback?.onError(error);
} }
} }
+13 -12
View File
@@ -10,6 +10,7 @@ import { ConfigManager } from "../manager/ConfigManager";
import LanguageUtils, { LanguageType } from "../../Main/Common/LanguageUtils"; import LanguageUtils, { LanguageType } from "../../Main/Common/LanguageUtils";
import Utils from "../../Main/Common/Utils"; import Utils from "../../Main/Common/Utils";
import { InnerMsgCode } from "../../Main/Config/InnerMsgCode"; import { InnerMsgCode } from "../../Main/Config/InnerMsgCode";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
/** /**
* AI情绪分析服务类 * AI情绪分析服务类
@@ -24,7 +25,7 @@ import { InnerMsgCode } from "../../Main/Config/InnerMsgCode";
* ```typescript * ```typescript
* const emotionService = EmotionAIService.Instance; * const emotionService = EmotionAIService.Instance;
* const emotion = await emotionService.analyzeEmotionalState(10001); * const emotion = await emotionService.analyzeEmotionalState(10001);
* console.log(VideoEmotion[emotion]); // "calm_down" * logger.log(VideoEmotion[emotion]); // "calm_down"
* ``` * ```
* *
* @author AI Chat System * @author AI Chat System
@@ -86,7 +87,7 @@ export class EmotionAIService {
}); });
this.emotionChatInstances.set(roleId, chat); this.emotionChatInstances.set(roleId, chat);
console.log(`Created new emotion chat instance for role ${roleId}`); logger.log(`Created new emotion chat instance for role ${roleId}`);
// 异步分析历史情绪状态 // 异步分析历史情绪状态
this.initializeEmotionAnalysis(roleId); this.initializeEmotionAnalysis(roleId);
@@ -106,7 +107,7 @@ export class EmotionAIService {
let emotionalState: VideoEmotion; let emotionalState: VideoEmotion;
if (messageCount > 0) { if (messageCount > 0) {
console.log( logger.log(
`Analyzing emotional state for role ${roleId} based on ${messageCount} messages` `Analyzing emotional state for role ${roleId} based on ${messageCount} messages`
); );
@@ -115,11 +116,11 @@ export class EmotionAIService {
if (emotionalState == null) { if (emotionalState == null) {
emotionalState = VideoEmotion.calm_down; emotionalState = VideoEmotion.calm_down;
} }
console.log( logger.log(
`Initial emotional state for role ${roleId}: ${VideoEmotion[emotionalState]}` `Initial emotional state for role ${roleId}: ${VideoEmotion[emotionalState]}`
); );
} else { } else {
console.log( logger.log(
`No history found for role ${roleId}, using default emotion: calm_down` `No history found for role ${roleId}, using default emotion: calm_down`
); );
emotionalState = VideoEmotion.calm_down; emotionalState = VideoEmotion.calm_down;
@@ -131,11 +132,11 @@ export class EmotionAIService {
emotion: emotionalState, emotion: emotionalState,
}); });
console.log( logger.log(
`Emotion initialization completed for role ${roleId}: ${VideoEmotion[emotionalState]}` `Emotion initialization completed for role ${roleId}: ${VideoEmotion[emotionalState]}`
); );
} catch (error) { } catch (error) {
console.error( logger.error(
`Failed to initialize emotion analysis for role ${roleId}:`, `Failed to initialize emotion analysis for role ${roleId}:`,
error error
); );
@@ -209,7 +210,7 @@ export class EmotionAIService {
}); });
if (response && response.text) { if (response && response.text) {
console.log(`Emotion analysis from role ${roleId}:`, response.text); logger.log(`Emotion analysis from role ${roleId}:`, response.text);
return this.parseEmotionResponse(response.text); return this.parseEmotionResponse(response.text);
} else { } else {
const warningMsg = `情绪AI返回了空响应 (角色ID: ${roleId})`; const warningMsg = `情绪AI返回了空响应 (角色ID: ${roleId})`;
@@ -297,7 +298,7 @@ export class EmotionAIService {
if (this.emotionChatInstances.has(roleId)) { if (this.emotionChatInstances.has(roleId)) {
this.emotionChatInstances.delete(roleId); this.emotionChatInstances.delete(roleId);
} }
console.log(`Cleared emotion chat history for role ${roleId}`); logger.log(`Cleared emotion chat history for role ${roleId}`);
} }
/** /**
@@ -305,7 +306,7 @@ export class EmotionAIService {
*/ */
public clearAllEmotionHistory(): void { public clearAllEmotionHistory(): void {
this.emotionChatInstances.clear(); this.emotionChatInstances.clear();
console.log("Cleared all emotion chat histories"); logger.log("Cleared all emotion chat histories");
} }
/** /**
@@ -331,7 +332,7 @@ export class EmotionAIService {
*/ */
private setCurrentEmotion(roleId: number, emotion: VideoEmotion): void { private setCurrentEmotion(roleId: number, emotion: VideoEmotion): void {
this.currentEmotions.set(roleId, emotion); this.currentEmotions.set(roleId, emotion);
console.log(`Updated emotion for role ${roleId}: ${VideoEmotion[emotion]}`); logger.log(`Updated emotion for role ${roleId}: ${VideoEmotion[emotion]}`);
} }
/** /**
@@ -353,7 +354,7 @@ export class EmotionAIService {
} }
} }
} catch (error) { } catch (error) {
console.warn(`Failed to get role name for ${roleId}:`, error); logger.warn(`Failed to get role name for ${roleId}:`, error);
} }
return "AI"; return "AI";
} }
+28 -26
View File
@@ -6,6 +6,8 @@ import { DataManager, DataId } from "../data/DataManager";
import { ThemeData } from "../data/ThemeData"; import { ThemeData } from "../data/ThemeData";
import { GirlData } from "../data/GirlData"; import { GirlData } from "../data/GirlData";
import { ShopData } from "../data/ShopData"; import { ShopData } from "../data/ShopData";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
import proto from "db://assets/Scripts/proto/proto.pb.js"; import proto from "db://assets/Scripts/proto/proto.pb.js";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@@ -30,7 +32,7 @@ export class MainController {
* *
*/ */
async init(): Promise<void> { async init(): Promise<void> {
console.log("[MainController] 开始初始化并预加载数据"); logger.log("[MainController] 开始初始化并预加载数据");
// 并行预加载所有数据 // 并行预加载所有数据
await Promise.all([ await Promise.all([
@@ -39,7 +41,7 @@ export class MainController {
this.preloadShopList() this.preloadShopList()
]); ]);
console.log("[MainController] 数据预加载完成"); logger.log("[MainController] 数据预加载完成");
} }
/** /**
@@ -47,12 +49,12 @@ export class MainController {
*/ */
async preloadThemeData(): Promise<boolean> { async preloadThemeData(): Promise<boolean> {
if (this.isThemeDataPreloaded) { if (this.isThemeDataPreloaded) {
console.log("[MainController] 主题数据已预加载"); logger.log("[MainController] 主题数据已预加载");
return true; return true;
} }
try { try {
console.log("[MainController] 开始预加载主题数据"); logger.log("[MainController] 开始预加载主题数据");
const reqData = {}; const reqData = {};
const res = await ThemeService.I.reqHallTheme(reqData); const res = await ThemeService.I.reqHallTheme(reqData);
@@ -61,14 +63,14 @@ export class MainController {
const themeData = DataManager.I.getDataById<ThemeData>(DataId.Theme); const themeData = DataManager.I.getDataById<ThemeData>(DataId.Theme);
themeData.themes = res.data; themeData.themes = res.data;
this.isThemeDataPreloaded = true; this.isThemeDataPreloaded = true;
console.log("[MainController] 主题数据预加载成功"); logger.log("[MainController] 主题数据预加载成功");
return true; return true;
} else { } else {
console.warn("[MainController] 主题数据预加载失败:", res); logger.warn("[MainController] 主题数据预加载失败:", res);
return false; return false;
} }
} catch (error) { } catch (error) {
console.error("[MainController] 主题数据预加载异常:", error); logger.error("[MainController] 主题数据预加载异常:", error);
return false; return false;
} }
} }
@@ -78,12 +80,12 @@ export class MainController {
*/ */
async preloadDailyRecommend(): Promise<boolean> { async preloadDailyRecommend(): Promise<boolean> {
if (this.isDailyRecommendPreloaded) { if (this.isDailyRecommendPreloaded) {
console.log("[MainController] 每日推荐数据已预加载"); logger.log("[MainController] 每日推荐数据已预加载");
return true; return true;
} }
try { try {
console.log("[MainController] 开始预加载每日推荐数据"); logger.log("[MainController] 开始预加载每日推荐数据");
const reqData = {}; const reqData = {};
const res = await GirlService.I.reqDailyRecommend(reqData); const res = await GirlService.I.reqDailyRecommend(reqData);
@@ -92,14 +94,14 @@ export class MainController {
const girlData = DataManager.I.getDataById<GirlData>(DataId.Girl); const girlData = DataManager.I.getDataById<GirlData>(DataId.Girl);
girlData.setDailyRecommend(res.data); girlData.setDailyRecommend(res.data);
this.isDailyRecommendPreloaded = true; this.isDailyRecommendPreloaded = true;
console.log("[MainController] 每日推荐数据预加载成功"); logger.log("[MainController] 每日推荐数据预加载成功");
return true; return true;
} else { } else {
console.warn("[MainController] 每日推荐数据预加载失败:", res); logger.warn("[MainController] 每日推荐数据预加载失败:", res);
return false; return false;
} }
} catch (error) { } catch (error) {
console.error("[MainController] 每日推荐数据预加载异常:", error); logger.error("[MainController] 每日推荐数据预加载异常:", error);
return false; return false;
} }
} }
@@ -109,12 +111,12 @@ export class MainController {
*/ */
async preloadShopList(): Promise<boolean> { async preloadShopList(): Promise<boolean> {
if (this.isShopListPreloaded) { if (this.isShopListPreloaded) {
console.log("[MainController] 商品列表数据已预加载"); logger.log("[MainController] 商品列表数据已预加载");
return true; return true;
} }
try { try {
console.log("[MainController] 开始预加载商品列表数据"); logger.log("[MainController] 开始预加载商品列表数据");
const reqData = {}; const reqData = {};
const res = await ShopService.I.reqShopList(reqData); const res = await ShopService.I.reqShopList(reqData);
@@ -123,14 +125,14 @@ export class MainController {
const shopData = DataManager.I.getDataById<ShopData>(DataId.Shop); const shopData = DataManager.I.getDataById<ShopData>(DataId.Shop);
shopData.goods = res.data; shopData.goods = res.data;
this.isShopListPreloaded = true; this.isShopListPreloaded = true;
console.log("[MainController] 商品列表数据预加载成功"); logger.log("[MainController] 商品列表数据预加载成功");
return true; return true;
} else { } else {
console.warn("[MainController] 商品列表数据预加载失败:", res); logger.warn("[MainController] 商品列表数据预加载失败:", res);
return false; return false;
} }
} catch (error) { } catch (error) {
console.error("[MainController] 商品列表数据预加载异常:", error); logger.error("[MainController] 商品列表数据预加载异常:", error);
return false; return false;
} }
} }
@@ -161,14 +163,14 @@ export class MainController {
this.isThemeDataPreloaded = false; this.isThemeDataPreloaded = false;
this.isDailyRecommendPreloaded = false; this.isDailyRecommendPreloaded = false;
this.isShopListPreloaded = false; this.isShopListPreloaded = false;
console.log("[MainController] 预加载状态已重置"); logger.log("[MainController] 预加载状态已重置");
} }
/** /**
* *
*/ */
async refreshThemeData(): Promise<boolean> { async refreshThemeData(): Promise<boolean> {
console.log("[MainController] 开始强制刷新主题数据"); logger.log("[MainController] 开始强制刷新主题数据");
try { try {
const reqData = {}; const reqData = {};
const res = await ThemeService.I.reqHallTheme(reqData); const res = await ThemeService.I.reqHallTheme(reqData);
@@ -178,14 +180,14 @@ export class MainController {
const themeData = DataManager.I.getDataById<ThemeData>(DataId.Theme); const themeData = DataManager.I.getDataById<ThemeData>(DataId.Theme);
themeData.themes = res.data; themeData.themes = res.data;
this.isThemeDataPreloaded = true; this.isThemeDataPreloaded = true;
console.log("[MainController] 主题数据刷新成功"); logger.log("[MainController] 主题数据刷新成功");
return true; return true;
} else { } else {
console.warn("[MainController] 主题数据刷新失败:", res); logger.warn("[MainController] 主题数据刷新失败:", res);
return false; return false;
} }
} catch (error) { } catch (error) {
console.error("[MainController] 主题数据刷新异常:", error); logger.error("[MainController] 主题数据刷新异常:", error);
return false; return false;
} }
} }
@@ -194,7 +196,7 @@ export class MainController {
* *
*/ */
async refreshDailyRecommend(): Promise<boolean> { async refreshDailyRecommend(): Promise<boolean> {
console.log("[MainController] 开始强制刷新每日推荐数据"); logger.log("[MainController] 开始强制刷新每日推荐数据");
try { try {
const reqData = {}; const reqData = {};
const res = await GirlService.I.reqDailyRecommend(reqData); const res = await GirlService.I.reqDailyRecommend(reqData);
@@ -204,14 +206,14 @@ export class MainController {
const girlData = DataManager.I.getDataById<GirlData>(DataId.Girl); const girlData = DataManager.I.getDataById<GirlData>(DataId.Girl);
girlData.setDailyRecommend(res.data); girlData.setDailyRecommend(res.data);
this.isDailyRecommendPreloaded = true; this.isDailyRecommendPreloaded = true;
console.log("[MainController] 每日推荐数据刷新成功"); logger.log("[MainController] 每日推荐数据刷新成功");
return true; return true;
} else { } else {
console.warn("[MainController] 每日推荐数据刷新失败:", res); logger.warn("[MainController] 每日推荐数据刷新失败:", res);
return false; return false;
} }
} catch (error) { } catch (error) {
console.error("[MainController] 每日推荐数据刷新异常:", error); logger.error("[MainController] 每日推荐数据刷新异常:", error);
return false; return false;
} }
} }
@@ -3,6 +3,7 @@ import { AiCharacterConfig } from "../config/AiCharacterConfig";
import { DataId, DataManager } from "../data/DataManager"; import { DataId, DataManager } from "../data/DataManager";
import { GlobalData } from "../data/GlobalData"; import { GlobalData } from "../data/GlobalData";
import { ConfigId, ConfigManager } from "../manager/ConfigManager"; import { ConfigId, ConfigManager } from "../manager/ConfigManager";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
/** /**
* *
@@ -25,8 +26,8 @@ export class RoleConfigLoader {
const globalPrompt = globalConfig.getGirlBasePrompt(); const globalPrompt = globalConfig.getGirlBasePrompt();
const prompt = globalPrompt + "\n" + basePrompt + "\n" + additionPrompt; const prompt = globalPrompt + "\n" + basePrompt + "\n" + additionPrompt;
console.log(basePrompt); logger.log(basePrompt);
console.log(additionPrompt); logger.log(additionPrompt);
return prompt; return prompt;
} }
+19 -4
View File
@@ -3,6 +3,7 @@
*/ */
import { BaseData } from "./BaseData"; import { BaseData } from "./BaseData";
import proto from "db://assets/Scripts/proto/proto.pb.js"; import proto from "db://assets/Scripts/proto/proto.pb.js";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
// 数据结构 // 数据结构
export interface AiCharacters { export interface AiCharacters {
@@ -65,10 +66,24 @@ export class AiCharacterData extends BaseData {
/** 设置Ai角色配置*/ /** 设置Ai角色配置*/
public set aiCharacter(data: proto.cs.ICSGetResConfigRes) { public set aiCharacter(data: proto.cs.ICSGetResConfigRes) {
const parsed = JSON.parse(data.data); let parsed: any;
console.log("请求Ai角色配置的解析数据:", parsed); try {
parsed = JSON.parse(data.data);
} catch (e) {
logger.warn("AiCharacterData JSON 解析失败", e);
return;
}
// 解析数据
let allData = this.parseAllAiCharacters(parsed);
// 保存数据
for (const oneData of allData) {
if (!oneData) continue;
// 覆盖或新增
if (!this._dataMap.has(oneData.id)) {
this._ids.push(oneData.id);
}
this._dataMap.set(oneData.id, oneData);
}
} }
/** 获取所有 id */ /** 获取所有 id */
+20 -19
View File
@@ -3,6 +3,7 @@ import { Dialog } from "./DialogData";
import { ConfigManager } from "../manager/ConfigManager"; import { ConfigManager } from "../manager/ConfigManager";
import { DataId, DataManager } from "./DataManager"; import { DataId, DataManager } from "./DataManager";
import { GirlData } from "./GirlData"; import { GirlData } from "./GirlData";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
/** /**
* *
@@ -44,7 +45,7 @@ export class ChatModel {
*/ */
public initializeRole(categoryId: string, girlId: number): boolean { public initializeRole(categoryId: string, girlId: number): boolean {
if (girlId <= 0) { if (girlId <= 0) {
console.error("ChatModel: Invalid roleId provided"); logger.error("ChatModel: Invalid roleId provided");
return false; return false;
} }
@@ -52,7 +53,7 @@ export class ChatModel {
if (this.rolesData.has(girlId)) { if (this.rolesData.has(girlId)) {
this.currentGirlId = girlId; this.currentGirlId = girlId;
this.updateLastActiveTime(girlId); this.updateLastActiveTime(girlId);
console.log(`ChatModel: Switched to existing role ${girlId}`); logger.log(`ChatModel: Switched to existing role ${girlId}`);
return true; return true;
} }
@@ -64,7 +65,7 @@ export class ChatModel {
this.rolesData.set(girlId, newRoleData); this.rolesData.set(girlId, newRoleData);
this.currentGirlId = girlId; this.currentGirlId = girlId;
console.log(`ChatModel: Initialized new role ${girlId}`); logger.log(`ChatModel: Initialized new role ${girlId}`);
return true; return true;
} }
@@ -107,7 +108,7 @@ export class ChatModel {
//const roleDetail = ConfigManager.tables.TbGirlsDetail.get(roleId); //const roleDetail = ConfigManager.tables.TbGirlsDetail.get(roleId);
if (!girlData) { if (!girlData) {
console.error(`ChatModel: Role data not found for roleId ${girlId}`); logger.error(`ChatModel: Role data not found for roleId ${girlId}`);
return null; return null;
} }
@@ -123,7 +124,7 @@ export class ChatModel {
return newRoleData; return newRoleData;
} catch (error) { } catch (error) {
console.error( logger.error(
`ChatModel: Failed to create role data for ${girlId}:`, `ChatModel: Failed to create role data for ${girlId}:`,
error error
); );
@@ -152,7 +153,7 @@ export class ChatModel {
if (oldestRoleId !== null) { if (oldestRoleId !== null) {
this.rolesData.delete(oldestRoleId); this.rolesData.delete(oldestRoleId);
console.log(`ChatModel: Cleaned up unused role ${oldestRoleId} data`); logger.log(`ChatModel: Cleaned up unused role ${oldestRoleId} data`);
} }
} }
@@ -207,18 +208,18 @@ export class ChatModel {
public addDialog(isPlayer: boolean, content: string, roleId?: number): void { public addDialog(isPlayer: boolean, content: string, roleId?: number): void {
const targetRoleId = roleId || this.currentGirlId; const targetRoleId = roleId || this.currentGirlId;
if (!targetRoleId) { if (!targetRoleId) {
console.warn("ChatModel: Cannot add dialog - no active role"); logger.warn("ChatModel: Cannot add dialog - no active role");
return; return;
} }
if (!content || content.trim() === "") { if (!content || content.trim() === "") {
console.warn("ChatModel: Cannot add empty dialog content"); logger.warn("ChatModel: Cannot add empty dialog content");
return; return;
} }
const roleData = this.rolesData.get(targetRoleId); const roleData = this.rolesData.get(targetRoleId);
if (!roleData) { if (!roleData) {
console.warn(`ChatModel: Role data not found for roleId ${targetRoleId}`); logger.warn(`ChatModel: Role data not found for roleId ${targetRoleId}`);
return; return;
} }
@@ -238,7 +239,7 @@ export class ChatModel {
public clearDialogs(roleId?: number): void { public clearDialogs(roleId?: number): void {
const targetRoleId = roleId || this.currentGirlId; const targetRoleId = roleId || this.currentGirlId;
if (!targetRoleId) { if (!targetRoleId) {
console.warn("ChatModel: Cannot clear dialogs - no active role"); logger.warn("ChatModel: Cannot clear dialogs - no active role");
return; return;
} }
@@ -246,7 +247,7 @@ export class ChatModel {
if (roleData) { if (roleData) {
roleData.dialogs = []; roleData.dialogs = [];
this.updateLastActiveTime(targetRoleId); this.updateLastActiveTime(targetRoleId);
console.log(`ChatModel: Dialogs cleared for role ${targetRoleId}`); logger.log(`ChatModel: Dialogs cleared for role ${targetRoleId}`);
} }
} }
@@ -272,13 +273,13 @@ export class ChatModel {
public setCurrentEmotion(emotion: VideoEmotion, roleId?: number): void { public setCurrentEmotion(emotion: VideoEmotion, roleId?: number): void {
const targetRoleId = roleId || this.currentGirlId; const targetRoleId = roleId || this.currentGirlId;
if (!targetRoleId) { if (!targetRoleId) {
console.warn("ChatModel: Cannot set emotion - no active role"); logger.warn("ChatModel: Cannot set emotion - no active role");
return; return;
} }
const roleData = this.rolesData.get(targetRoleId); const roleData = this.rolesData.get(targetRoleId);
if (!roleData) { if (!roleData) {
console.warn(`ChatModel: Role data not found for roleId ${targetRoleId}`); logger.warn(`ChatModel: Role data not found for roleId ${targetRoleId}`);
return; return;
} }
@@ -286,7 +287,7 @@ export class ChatModel {
const oldEmotion = roleData.currentEmotion; const oldEmotion = roleData.currentEmotion;
roleData.currentEmotion = emotion; roleData.currentEmotion = emotion;
this.updateLastActiveTime(targetRoleId); this.updateLastActiveTime(targetRoleId);
console.log( logger.log(
`ChatModel: Role ${targetRoleId} emotion changed from ${VideoEmotion[oldEmotion]} to ${VideoEmotion[emotion]}` `ChatModel: Role ${targetRoleId} emotion changed from ${VideoEmotion[oldEmotion]} to ${VideoEmotion[emotion]}`
); );
} }
@@ -423,7 +424,7 @@ export class ChatModel {
public reset(): void { public reset(): void {
this.rolesData.clear(); this.rolesData.clear();
this.currentGirlId = null; this.currentGirlId = null;
console.log( logger.log(
"ChatModel: All role data cleared and model reset to initial state" "ChatModel: All role data cleared and model reset to initial state"
); );
} }
@@ -441,7 +442,7 @@ export class ChatModel {
this.currentGirlId = null; this.currentGirlId = null;
} }
console.log(`ChatModel: Role ${roleId} data cleared`); logger.log(`ChatModel: Role ${roleId} data cleared`);
} }
} }
@@ -452,13 +453,13 @@ export class ChatModel {
public validate(roleId?: number): boolean { public validate(roleId?: number): boolean {
const targetRoleId = roleId || this.currentGirlId; const targetRoleId = roleId || this.currentGirlId;
if (!targetRoleId) { if (!targetRoleId) {
console.error("ChatModel: No active role"); logger.error("ChatModel: No active role");
return false; return false;
} }
const roleData = this.rolesData.get(targetRoleId); const roleData = this.rolesData.get(targetRoleId);
if (!roleData) { if (!roleData) {
console.error(`ChatModel: Role data not found for ${targetRoleId}`); logger.error(`ChatModel: Role data not found for ${targetRoleId}`);
return false; return false;
} }
return true; return true;
@@ -500,7 +501,7 @@ export class ChatModel {
public setMaxCachedRoles(maxCount: number): void { public setMaxCachedRoles(maxCount: number): void {
if (maxCount > 0) { if (maxCount > 0) {
this.maxCachedRoles = maxCount; this.maxCachedRoles = maxCount;
console.log(`ChatModel: Max cached roles set to ${maxCount}`); logger.log(`ChatModel: Max cached roles set to ${maxCount}`);
// 如果当前缓存超过新限制,清理多余的 // 如果当前缓存超过新限制,清理多余的
this.manageMemory(); this.manageMemory();
+4 -3
View File
@@ -16,6 +16,7 @@ import { GirlData } from "./GirlData";
import { EnvData } from "./EnvData"; import { EnvData } from "./EnvData";
import { GlobalData } from "./GlobalData"; import { GlobalData } from "./GlobalData";
import { AiCharacterData } from "./AiCharacterData"; import { AiCharacterData } from "./AiCharacterData";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
/** /**
* ID * ID
@@ -63,7 +64,7 @@ export class DataManager {
* ID * ID
*/ */
public init(): void { public init(): void {
console.log("[DataManager] 数据管理器初始化"); logger.log("[DataManager] 数据管理器初始化");
this.registerAll(); this.registerAll();
} }
@@ -91,7 +92,7 @@ export class DataManager {
*/ */
private register<T extends BaseData>(dataId: string, ctor: DataCtor<T>): void { private register<T extends BaseData>(dataId: string, ctor: DataCtor<T>): void {
if (this._config.has(dataId)) { if (this._config.has(dataId)) {
console.warn(`[DataManager] 重复注册数据ID: ${dataId},将覆盖旧构造器`); logger.warn(`[DataManager] 重复注册数据ID: ${dataId},将覆盖旧构造器`);
} }
this._config.set(dataId, ctor); this._config.set(dataId, ctor);
} }
@@ -107,7 +108,7 @@ export class DataManager {
// 缓存没有→ 查找构造器 // 缓存没有→ 查找构造器
const Ctor = this._config.get(dataId) as DataCtor<T> | undefined; const Ctor = this._config.get(dataId) as DataCtor<T> | undefined;
if (!Ctor) { if (!Ctor) {
console.warn(`[DataManager] 未找到 dataId 的构造器配置: ${dataId}`); logger.warn(`[DataManager] 未找到 dataId 的构造器配置: ${dataId}`);
return null; return null;
} }
+4 -3
View File
@@ -5,6 +5,7 @@ import { BaseData } from "./BaseData";
import proto from 'db://assets/Scripts/proto/proto.pb.js'; import proto from 'db://assets/Scripts/proto/proto.pb.js';
import Utils from "../../Main/Common/Utils"; import Utils from "../../Main/Common/Utils";
import { InnerMsgCode } from "../../Main/Config/InnerMsgCode"; import { InnerMsgCode } from "../../Main/Config/InnerMsgCode";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
export class GirlChatData extends BaseData { export class GirlChatData extends BaseData {
// id // id
@@ -75,7 +76,7 @@ export class GirlChatData extends BaseData {
chatTotalCount: this.chatTotalCount, chatTotalCount: this.chatTotalCount,
}; };
Utils.sendInnerMsg(InnerMsgCode.ChatTotalCountChange, msgData); Utils.sendInnerMsg(InnerMsgCode.ChatTotalCountChange, msgData);
console.log("当前技师 ", this.id, " ,总聊天次数:", this.chatTotalCount); logger.log("当前技师 ", this.id, " ,总聊天次数:", this.chatTotalCount);
} }
/** 获取剩余聊天次数 */ /** 获取剩余聊天次数 */
@@ -86,7 +87,7 @@ export class GirlChatData extends BaseData {
/** 保存剩余聊天次数 */ /** 保存剩余聊天次数 */
public setChatRemainCount(value: number): void { public setChatRemainCount(value: number): void {
this.chatRemainCount = value; this.chatRemainCount = value;
console.log("当前技师 ", this.id, " ,剩余聊天次数:", this.chatRemainCount); logger.log("当前技师 ", this.id, " ,剩余聊天次数:", this.chatRemainCount);
} }
/** 更新剩余聊天次数 */ /** 更新剩余聊天次数 */
@@ -143,7 +144,7 @@ export class GirlChatData extends BaseData {
// 排序:根据 msgId 从大到小排序 // 排序:根据 msgId 从大到小排序
this.chatRecordIds.sort((a, b) => b - a); this.chatRecordIds.sort((a, b) => b - a);
console.log("当前技师 ", this.id, " ,聊天记录:", this.chatRecord); logger.log("当前技师 ", this.id, " ,聊天记录:", this.chatRecord);
} }
/** 获取聊天记录的所有 id */ /** 获取聊天记录的所有 id */
+4 -3
View File
@@ -10,6 +10,7 @@ import { GirlFavorabilityData } from "./GirlFavorabilityData";
import { DataId } from "./DataManager"; import { DataId } from "./DataManager";
import proto from "db://assets/Scripts/proto/proto.pb.js"; import proto from "db://assets/Scripts/proto/proto.pb.js";
import { PriceType } from "../../schema/schema"; import { PriceType } from "../../schema/schema";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
// 分类的数据结构 // 分类的数据结构
interface CategoryBucket { interface CategoryBucket {
@@ -90,7 +91,7 @@ export class GirlData extends BaseData {
this.setGirlFavorability(categoryId, data.girls); this.setGirlFavorability(categoryId, data.girls);
const bucket = this.ensureBucket(categoryId); const bucket = this.ensureBucket(categoryId);
console.log("保存类别 ", categoryId, " 的技师列表: ", bucket); logger.log("保存类别 ", categoryId, " 的技师列表: ", bucket);
} }
/** 保存技师详细数据 */ /** 保存技师详细数据 */
@@ -108,7 +109,7 @@ export class GirlData extends BaseData {
this.setGirlFavorability(categoryId, details); this.setGirlFavorability(categoryId, details);
const bucket = this.ensureBucket(categoryId); const bucket = this.ensureBucket(categoryId);
console.log("保存类别 ", categoryId, " 的详细数据: ", bucket); logger.log("保存类别 ", categoryId, " 的详细数据: ", bucket);
} }
/** --------------------------------------------------------- 技师的简要数据 --------------------------------------------------------- */ /** --------------------------------------------------------- 技师的简要数据 --------------------------------------------------------- */
@@ -967,7 +968,7 @@ export class GirlData extends BaseData {
if (!data) return; if (!data) return;
this.mergeOneBrief(DAILY_BUCKET, data.girl); this.mergeOneBrief(DAILY_BUCKET, data.girl);
const bucket = this.ensureBucket(DAILY_BUCKET); const bucket = this.ensureBucket(DAILY_BUCKET);
console.log("保存每日推荐: ", bucket); logger.log("保存每日推荐: ", bucket);
} }
/** 判断每日推荐是否存在 */ /** 判断每日推荐是否存在 */
@@ -3,6 +3,7 @@
*/ */
import { BaseData } from "./BaseData"; import { BaseData } from "./BaseData";
import proto from 'db://assets/Scripts/proto/proto.pb.js'; import proto from 'db://assets/Scripts/proto/proto.pb.js';
import { logger } from "db://assets/Scripts/Main/Common/Logger";
export class GirlUnlockData extends BaseData { export class GirlUnlockData extends BaseData {
// id // id
@@ -81,7 +82,7 @@ export class GirlUnlockData extends BaseData {
if (!exists) { if (!exists) {
this.unlockedImageIds.push(id); this.unlockedImageIds.push(id);
} }
console.log("技师 ", this.id, " 当前解锁图片的所有id",this.unlockedImageIds); logger.log("技师 ", this.id, " 当前解锁图片的所有id",this.unlockedImageIds);
} }
/** 获取所有解锁图片的 id */ /** 获取所有解锁图片的 id */
@@ -113,7 +114,7 @@ export class GirlUnlockData extends BaseData {
if (!exists) { if (!exists) {
this.unlockedVideoIds.push(id); this.unlockedVideoIds.push(id);
} }
console.log("技师 ", this.id, " 当前解锁视频的所有id",this.unlockedVideoIds); logger.log("技师 ", this.id, " 当前解锁视频的所有id",this.unlockedVideoIds);
} }
/** 获取所有解锁视频的 id */ /** 获取所有解锁视频的 id */
@@ -93,7 +93,6 @@ export class GlobalData extends BaseData {
this._gameName = obj.GameName; this._gameName = obj.GameName;
this._emotionBasePrompt = obj.EmotionBasePrompt; this._emotionBasePrompt = obj.EmotionBasePrompt;
this._girlBasePrompt = obj.girlBasePrompt; this._girlBasePrompt = obj.girlBasePrompt;
console.log("设置全局数据: ", this._gameName);
} }
} }
+7 -6
View File
@@ -6,6 +6,7 @@ import proto from 'db://assets/Scripts/proto/proto.pb.js';
import type { OrderVO, OrderStatus } from 'db://assets/Scripts/chat18x/payment/types'; import type { OrderVO, OrderStatus } from 'db://assets/Scripts/chat18x/payment/types';
import { mapQueryOrderStatus, shouldPoll } from 'db://assets/Scripts/chat18x/payment/PaymentUtil'; import { mapQueryOrderStatus, shouldPoll } from 'db://assets/Scripts/chat18x/payment/PaymentUtil';
import { sys } from "cc"; import { sys } from "cc";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const ORDER_STORAGE_KEY = "order_data_v1"; const ORDER_STORAGE_KEY = "order_data_v1";
@@ -44,7 +45,7 @@ export class OrderData extends BaseData {
createdAt: Date.now(), // 订单创建时间,毫秒 createdAt: Date.now(), // 订单创建时间,毫秒
}; };
this._orders.set(orderId, vo); this._orders.set(orderId, vo);
console.log("保存订单数据:", this._orders); logger.log("保存订单数据:", this._orders);
} }
/** 根据订单 id 获取订单数据 */ /** 根据订单 id 获取订单数据 */
@@ -68,7 +69,7 @@ export class OrderData extends BaseData {
vo.status = mapQueryOrderStatus(res.status); vo.status = mapQueryOrderStatus(res.status);
vo.retCode = res.retCode ?? 0; vo.retCode = res.retCode ?? 0;
this._orders.set(orderId, vo); this._orders.set(orderId, vo);
console.log("更新订单数据:", vo); logger.log("更新订单数据:", vo);
} }
/** 获取所有需要继续轮询查询的订单 id */ /** 获取所有需要继续轮询查询的订单 id */
@@ -172,9 +173,9 @@ export class OrderData extends BaseData {
map.set(vo.orderId, vo); map.set(vo.orderId, vo);
} }
} }
console.log("加载本地订单数据:", map); logger.log("加载本地订单数据:", map);
} catch (e) { } catch (e) {
console.warn("[OrderData] loadStorage parse error:", e); logger.warn("[OrderData] loadStorage parse error:", e);
this.ensureMap().clear(); this.ensureMap().clear();
} }
} }
@@ -190,9 +191,9 @@ export class OrderData extends BaseData {
orders, orders,
}; };
sys.localStorage.setItem(ORDER_STORAGE_KEY, JSON.stringify(payload)); sys.localStorage.setItem(ORDER_STORAGE_KEY, JSON.stringify(payload));
console.log("保存本地订单数据:", payload); logger.log("保存本地订单数据:", payload);
} catch (e) { } catch (e) {
console.warn("[OrderData] saveStorage error:", e); logger.warn("[OrderData] saveStorage error:", e);
} }
} }
+2 -1
View File
@@ -3,6 +3,7 @@
*/ */
import { BaseData } from "./BaseData"; import { BaseData } from "./BaseData";
import proto from 'db://assets/Scripts/proto/proto.pb.js'; import proto from 'db://assets/Scripts/proto/proto.pb.js';
import { logger } from "db://assets/Scripts/Main/Common/Logger";
export class ShopData extends BaseData { export class ShopData extends BaseData {
// 商品数据 // 商品数据
@@ -41,7 +42,7 @@ export class ShopData extends BaseData {
this._goods.set(vo.id, vo); this._goods.set(vo.id, vo);
this._goodIds.push(vo.id); this._goodIds.push(vo.id);
} }
console.log("设置商品数据:", this._goods); logger.log("设置商品数据:", this._goods);
} }
/** 获取所有商品数据 */ /** 获取所有商品数据 */
+2 -1
View File
@@ -3,6 +3,7 @@
*/ */
import { BaseData } from "./BaseData"; import { BaseData } from "./BaseData";
import proto from 'db://assets/Scripts/proto/proto.pb.js'; import proto from 'db://assets/Scripts/proto/proto.pb.js';
import { logger } from "db://assets/Scripts/Main/Common/Logger";
export class ThemeData extends BaseData { export class ThemeData extends BaseData {
// 主题数据 // 主题数据
@@ -43,7 +44,7 @@ export class ThemeData extends BaseData {
this._themes.set(vo.id, vo); this._themes.set(vo.id, vo);
this._themeIds.push(vo.id); this._themeIds.push(vo.id);
} }
console.log("设置主题数据:", this._themes); logger.log("设置主题数据:", this._themes);
} }
/** 获取所有主题数据 */ /** 获取所有主题数据 */
@@ -3,6 +3,7 @@ import { DataManager, DataId } from "../data/DataManager";
import { GirlData } from "../data/GirlData"; import { GirlData } from "../data/GirlData";
import proto from "db://assets/Scripts/proto/proto.pb.js"; import proto from "db://assets/Scripts/proto/proto.pb.js";
import { ChatService } from "../network/services/ChatService"; import { ChatService } from "../network/services/ChatService";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
export interface ChatMessage { export interface ChatMessage {
role: "user" | "model"; role: "user" | "model";
@@ -49,7 +50,7 @@ export class ChatHistoryManager {
const existingHistory: ChatHistory = JSON.parse(existingData); const existingHistory: ChatHistory = JSON.parse(existingData);
createdAt = existingHistory.createdAt; createdAt = existingHistory.createdAt;
} catch (parseError) { } catch (parseError) {
console.warn(`Failed to parse existing history for role ${roleId}, using current time as createdAt`); logger.warn(`Failed to parse existing history for role ${roleId}, using current time as createdAt`);
} }
} }
@@ -61,11 +62,11 @@ export class ChatHistoryManager {
}; };
sys.localStorage.setItem(key, JSON.stringify(history)); sys.localStorage.setItem(key, JSON.stringify(history));
console.log( logger.log(
`Saved chat history for role ${roleId}, ${messages.length} messages` `Saved chat history for role ${roleId}, ${messages.length} messages`
); );
} catch (error) { } catch (error) {
console.error(`Failed to save chat history for role ${roleId}:`, error); logger.error(`Failed to save chat history for role ${roleId}:`, error);
} }
} }
@@ -80,13 +81,13 @@ export class ChatHistoryManager {
const data = sys.localStorage.getItem(key); const data = sys.localStorage.getItem(key);
if (data) { if (data) {
const history: ChatHistory = JSON.parse(data); const history: ChatHistory = JSON.parse(data);
console.log( logger.log(
`Loaded chat history for role ${roleId}: ${history.messages.length} messages` `Loaded chat history for role ${roleId}: ${history.messages.length} messages`
); );
return history.messages; return history.messages;
} }
} catch (error) { } catch (error) {
console.error(`Failed to load chat history for role ${roleId}:`, error); logger.error(`Failed to load chat history for role ${roleId}:`, error);
// 如果数据损坏,清除错误的数据 // 如果数据损坏,清除错误的数据
this.clearHistory(roleId); this.clearHistory(roleId);
} }
@@ -100,7 +101,7 @@ export class ChatHistoryManager {
public clearHistory(roleId: number): void { public clearHistory(roleId: number): void {
const key = `chat_history_${roleId}`; const key = `chat_history_${roleId}`;
sys.localStorage.removeItem(key); sys.localStorage.removeItem(key);
console.log(`Cleared chat history for role ${roleId}`); logger.log(`Cleared chat history for role ${roleId}`);
} }
/** /**
@@ -118,7 +119,7 @@ export class ChatHistoryManager {
// 限制历史长度,保留最近100条消息 // 限制历史长度,保留最近100条消息
if (history.length > 100) { if (history.length > 100) {
history.splice(0, history.length - 100); history.splice(0, history.length - 100);
console.log(`Trimmed chat history for role ${roleId} to 100 messages`); logger.log(`Trimmed chat history for role ${roleId} to 100 messages`);
} }
this.saveHistory(roleId, history); this.saveHistory(roleId, history);
@@ -163,7 +164,7 @@ export class ChatHistoryManager {
sys.localStorage.removeItem(key); sys.localStorage.removeItem(key);
}); });
console.log( logger.log(
`Cleared all chat histories, ${keysToRemove.length} records removed` `Cleared all chat histories, ${keysToRemove.length} records removed`
); );
} }
@@ -193,7 +194,7 @@ export class ChatHistoryManager {
public async syncToRemote(roleId: number): Promise<void> { public async syncToRemote(roleId: number): Promise<void> {
const history = this.loadHistory(roleId); const history = this.loadHistory(roleId);
if (history.length === 0) { if (history.length === 0) {
console.log(`No history to sync for role ${roleId}`); logger.log(`No history to sync for role ${roleId}`);
return; return;
} }
@@ -204,11 +205,11 @@ export class ChatHistoryManager {
// messages: history // messages: history
// }, "POST"); // }, "POST");
console.log( logger.log(
`Ready to sync ${history.length} messages for role ${roleId} to remote server` `Ready to sync ${history.length} messages for role ${roleId} to remote server`
); );
} catch (error) { } catch (error) {
console.error(`Failed to sync history for role ${roleId}:`, error); logger.error(`Failed to sync history for role ${roleId}:`, error);
} }
} }
@@ -232,7 +233,7 @@ export class ChatHistoryManager {
return history.createdAt; return history.createdAt;
} }
} catch (error) { } catch (error) {
console.error(`Failed to get last chat time for role ${roleId}:`, error); logger.error(`Failed to get last chat time for role ${roleId}:`, error);
} }
return null; return null;
} }
@@ -250,14 +251,14 @@ export class ChatHistoryManager {
// if (response && response.messages) { // if (response && response.messages) {
// this.saveHistory(roleId, response.messages); // this.saveHistory(roleId, response.messages);
// console.log(`Synced ${response.messages.length} messages from remote for role ${roleId}`); // logger.log(`Synced ${response.messages.length} messages from remote for role ${roleId}`);
// } // }
console.log( logger.log(
`Ready to sync history from remote server for role ${roleId}` `Ready to sync history from remote server for role ${roleId}`
); );
} catch (error) { } catch (error) {
console.error(`Failed to sync from remote for role ${roleId}:`, error); logger.error(`Failed to sync from remote for role ${roleId}:`, error);
} }
} }
@@ -288,7 +289,7 @@ export class ChatHistoryManager {
// 按时间戳排序,确保消息顺序正确 // 按时间戳排序,确保消息顺序正确
messages.sort((a, b) => (a.timestamp || 0) - (b.timestamp || 0)); messages.sort((a, b) => (a.timestamp || 0) - (b.timestamp || 0));
console.log( logger.log(
`Converted ${serverMessages.length} server messages to ${messages.length} local messages` `Converted ${serverMessages.length} server messages to ${messages.length} local messages`
); );
return messages; return messages;
@@ -313,7 +314,7 @@ export class ChatHistoryManager {
limit, limit,
}; };
console.log("获取服务端聊天记录:", reqData); logger.log("获取服务端聊天记录:", reqData);
const res = await ChatService.I.reqGetChatMsg(reqData); const res = await ChatService.I.reqGetChatMsg(reqData);
if (res && res.code === proto.cs.EnmRetCode.SUCCESS) { if (res && res.code === proto.cs.EnmRetCode.SUCCESS) {
@@ -333,20 +334,20 @@ export class ChatHistoryManager {
resData.chatRemainCount resData.chatRemainCount
); );
console.log( logger.log(
`成功从服务端获取聊天记录,roleId: ${roleId}, 消息数: ${ `成功从服务端获取聊天记录,roleId: ${roleId}, 消息数: ${
resData.msgs?.length || 0 resData.msgs?.length || 0
}` }`
); );
return true; return true;
} else { } else {
console.warn( logger.warn(
`从服务端获取聊天记录失败,roleId: ${roleId}, code: ${res?.code}` `从服务端获取聊天记录失败,roleId: ${roleId}, code: ${res?.code}`
); );
return false; return false;
} }
} catch (error) { } catch (error) {
console.error(`获取服务端聊天记录异常,roleId: ${roleId}:`, error); logger.error(`获取服务端聊天记录异常,roleId: ${roleId}:`, error);
return false; return false;
} }
} }
@@ -390,7 +391,7 @@ export class ChatHistoryManager {
const mergedMessages = Array.from(messageMap.values()); const mergedMessages = Array.from(messageMap.values());
mergedMessages.sort((a, b) => (a.timestamp || 0) - (b.timestamp || 0)); mergedMessages.sort((a, b) => (a.timestamp || 0) - (b.timestamp || 0));
console.log( logger.log(
`合并聊天记录: 本地 ${localMessages.length} 条, 服务端 ${serverMessages.length} 条, 合并后 ${mergedMessages.length}` `合并聊天记录: 本地 ${localMessages.length} 条, 服务端 ${serverMessages.length} 条, 合并后 ${mergedMessages.length}`
); );
return mergedMessages; return mergedMessages;
@@ -407,18 +408,18 @@ export class ChatHistoryManager {
// 2. 如果本地有数据,直接返回 // 2. 如果本地有数据,直接返回
if (localHistory && localHistory.length > 0) { if (localHistory && localHistory.length > 0) {
console.log( logger.log(
`使用本地聊天记录,roleId: ${roleId}, 消息数: ${localHistory.length}` `使用本地聊天记录,roleId: ${roleId}, 消息数: ${localHistory.length}`
); );
return localHistory; return localHistory;
} }
// 3. 本地没有数据,尝试从服务端获取 // 3. 本地没有数据,尝试从服务端获取
console.log(`本地无聊天记录,尝试从服务端获取,roleId: ${roleId}`); logger.log(`本地无聊天记录,尝试从服务端获取,roleId: ${roleId}`);
const serverSuccess = await this.fetchServerChatHistory(roleId); const serverSuccess = await this.fetchServerChatHistory(roleId);
if (!serverSuccess) { if (!serverSuccess) {
console.log(`服务端获取失败,返回空记录,roleId: ${roleId}`); logger.log(`服务端获取失败,返回空记录,roleId: ${roleId}`);
return []; return [];
} }
@@ -447,7 +448,7 @@ export class ChatHistoryManager {
// 6. 保存到本地存储 // 6. 保存到本地存储
if (convertedMessages.length > 0) { if (convertedMessages.length > 0) {
this.saveHistory(roleId, convertedMessages); this.saveHistory(roleId, convertedMessages);
console.log( logger.log(
`从服务端获取并保存聊天记录,roleId: ${roleId}, 消息数: ${convertedMessages.length}` `从服务端获取并保存聊天记录,roleId: ${roleId}, 消息数: ${convertedMessages.length}`
); );
} }
@@ -8,6 +8,7 @@ import { GlobalConfig } from "../config/GlobalConfig";
import { GirlConfig } from "../config/GirlConfig"; import { GirlConfig } from "../config/GirlConfig";
import { GirlDetailConfig } from "../config/GirlDetailConfig"; import { GirlDetailConfig } from "../config/GirlDetailConfig";
import { AiCharacterConfig } from "../config/AiCharacterConfig"; import { AiCharacterConfig } from "../config/AiCharacterConfig";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
/** /**
* ID * ID
@@ -68,7 +69,7 @@ export class ConfigManager {
"DataTable", "DataTable",
(err: Error, _bundle: AssetManager.Bundle) => { (err: Error, _bundle: AssetManager.Bundle) => {
if (err) { if (err) {
console.log(err); logger.log(err);
reject && reject(err); reject && reject(err);
return; return;
} else { } else {
@@ -87,13 +88,13 @@ export class ConfigManager {
new Uint8Array(data.buffer().slice(0, data.buffer().byteLength)) new Uint8Array(data.buffer().slice(0, data.buffer().byteLength))
); );
} else { } else {
console.error("静态配置加载失败" + curFileName); logger.error("静态配置加载失败" + curFileName);
} }
}); });
promises.push(promise); promises.push(promise);
} }
Promise.all(promises).then((values) => { Promise.all(promises).then((values) => {
console.log("静态配置加载完成"); logger.log("静态配置加载完成");
ConfigManager.tables = new cfg.Tables(ConfigManager.I.getFileData); ConfigManager.tables = new cfg.Tables(ConfigManager.I.getFileData);
}); });
} }
@@ -126,7 +127,7 @@ export class ConfigManager {
ctor: DataCtor<T> ctor: DataCtor<T>
): void { ): void {
if (this._config.has(configId)) { if (this._config.has(configId)) {
console.warn( logger.warn(
`[ConfigManager] 重复注册数据ID: ${configId},将覆盖旧构造器` `[ConfigManager] 重复注册数据ID: ${configId},将覆盖旧构造器`
); );
} }
@@ -146,7 +147,7 @@ export class ConfigManager {
// 缓存没有→ 查找构造器 // 缓存没有→ 查找构造器
const Ctor = this._config.get(configId) as DataCtor<T> | undefined; const Ctor = this._config.get(configId) as DataCtor<T> | undefined;
if (!Ctor) { if (!Ctor) {
console.warn(`[ConfigManager] 未找到 configId 的构造器配置: ${configId}`); logger.warn(`[ConfigManager] 未找到 configId 的构造器配置: ${configId}`);
return null; return null;
} }
@@ -2,6 +2,7 @@ import { ChatContentsLayout } from "../ui/components/ChatContentsLayout";
import { DiaLogData, Dialog } from "../data/DialogData"; import { DiaLogData, Dialog } from "../data/DialogData";
import Utils from "db://assets/Scripts/Main/Common/Utils"; import Utils from "db://assets/Scripts/Main/Common/Utils";
import { InnerMsgCode } from "db://assets/Scripts/Main/Config/InnerMsgCode"; import { InnerMsgCode } from "db://assets/Scripts/Main/Config/InnerMsgCode";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
/** /**
* *
@@ -75,7 +76,7 @@ export class DialogManager {
// 如果是玩家消息,直接添加单个气泡 // 如果是玩家消息,直接添加单个气泡
if (isPlayer) { if (isPlayer) {
this.dialogData.pushDialog(isPlayer, str); this.dialogData.pushDialog(isPlayer, str);
console.log("Dialog updated:", { logger.log("Dialog updated:", {
isPlayer, isPlayer,
content: str.substring(0, 50) + "...", content: str.substring(0, 50) + "...",
}); });
@@ -134,7 +135,7 @@ export class DialogManager {
*/ */
public addLoadingDialog(): void { public addLoadingDialog(): void {
this.dialogData.pushDialog(false, "...", true); this.dialogData.pushDialog(false, "...", true);
console.log("Loading dialog added"); logger.log("Loading dialog added");
Utils.sendInnerMsg(InnerMsgCode.Chat_DialogRefresh); Utils.sendInnerMsg(InnerMsgCode.Chat_DialogRefresh);
} }
@@ -153,7 +154,7 @@ export class DialogManager {
*/ */
public clearDialogs(): void { public clearDialogs(): void {
this.dialogData.cleanDialog(); this.dialogData.cleanDialog();
console.log("All dialogs cleared"); logger.log("All dialogs cleared");
} }
/** /**
@@ -168,7 +169,7 @@ export class DialogManager {
dialog.content, dialog.content,
); );
}); });
console.log(`DialogManager: Set ${dialogs.length} dialogs`); logger.log(`DialogManager: Set ${dialogs.length} dialogs`);
Utils.sendInnerMsg(InnerMsgCode.Chat_DialogRefresh); Utils.sendInnerMsg(InnerMsgCode.Chat_DialogRefresh);
} }
@@ -178,7 +179,7 @@ export class DialogManager {
*/ */
public syncFromChatModel(dialogs: Dialog[]): void { public syncFromChatModel(dialogs: Dialog[]): void {
this.setDialogs(dialogs); this.setDialogs(dialogs);
console.log("DialogManager: Synced dialogs from ChatModel"); logger.log("DialogManager: Synced dialogs from ChatModel");
} }
} }
@@ -7,6 +7,7 @@ import { InnerMsgCode } from "../../Main/Config/InnerMsgCode";
import { ThemePanel } from "../ui/panels/ThemePanel"; import { ThemePanel } from "../ui/panels/ThemePanel";
import { GirlListPanel } from "../ui/panels/GirlListPanel"; import { GirlListPanel } from "../ui/panels/GirlListPanel";
import li_BaseView from "../../Main/Common/li_BaseView"; import li_BaseView from "../../Main/Common/li_BaseView";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
/** /**
* *
@@ -120,7 +121,7 @@ export class NavigationManager {
*/ */
public registerNavigationPanel(panel: any): void { public registerNavigationPanel(panel: any): void {
this.navigationPanel = panel; this.navigationPanel = panel;
console.log("[NavigationManager] NavigationPanel registered"); logger.log("[NavigationManager] NavigationPanel registered");
} }
/** /**
@@ -133,19 +134,19 @@ export class NavigationManager {
callback: Function = null callback: Function = null
): Node { ): Node {
if (!panelType) { if (!panelType) {
console.error("[NavigationManager] switchToPanel: panelType is invalid"); logger.error("[NavigationManager] switchToPanel: panelType is invalid");
return null; return null;
} }
if (this.currentActivePanelType === panelType && !force) { if (this.currentActivePanelType === panelType && !force) {
console.log( logger.log(
`[NavigationManager] Already on ${panelType}, skipping switch` `[NavigationManager] Already on ${panelType}, skipping switch`
); );
return this.currentActivePanel; return this.currentActivePanel;
} }
if (!this.navigationPanel) { if (!this.navigationPanel) {
console.warn( logger.warn(
"[NavigationManager] NavigationPanel not registered, fallback to direct ViewManager call" "[NavigationManager] NavigationPanel not registered, fallback to direct ViewManager call"
); );
//this.fallbackSwitchPanel(panelType); //this.fallbackSwitchPanel(panelType);
@@ -315,12 +316,12 @@ export class NavigationManager {
animationConfig?: SubPanelAnimationConfig animationConfig?: SubPanelAnimationConfig
) { ) {
if (!panelName) { if (!panelName) {
console.error("[NavigationManager] openSubPanel: panelName is empty"); logger.error("[NavigationManager] openSubPanel: panelName is empty");
return; return;
} }
if (!basePanel || !basePanel.isValid) { if (!basePanel || !basePanel.isValid) {
console.error("[NavigationManager] openSubPanel: basePanel is invalid"); logger.error("[NavigationManager] openSubPanel: basePanel is invalid");
return; return;
} }
@@ -334,7 +335,7 @@ export class NavigationManager {
const callback = (n: Node) => { const callback = (n: Node) => {
if (!n || !n.isValid) { if (!n || !n.isValid) {
console.error( logger.error(
"[NavigationManager] openSubPanel: created panel is invalid" "[NavigationManager] openSubPanel: created panel is invalid"
); );
return; return;
@@ -351,7 +352,7 @@ export class NavigationManager {
if (basePanelType) { if (basePanelType) {
this.subPanelMapping.set(n, basePanelType); this.subPanelMapping.set(n, basePanelType);
} else { } else {
console.warn( logger.warn(
`[NavigationManager] 无法确定basePanel类型: ${basePanel.name}` `[NavigationManager] 无法确定basePanel类型: ${basePanel.name}`
); );
} }
@@ -377,21 +378,21 @@ export class NavigationManager {
force: boolean = false force: boolean = false
): Node { ): Node {
if (!panelType) { if (!panelType) {
console.error( logger.error(
"[NavigationManager] switchToPanelWithTransition: panelType is invalid" "[NavigationManager] switchToPanelWithTransition: panelType is invalid"
); );
return null; return null;
} }
if (this.currentActivePanelType === panelType && !force) { if (this.currentActivePanelType === panelType && !force) {
console.log( logger.log(
`[NavigationManager] Already on ${panelType}, skipping switch` `[NavigationManager] Already on ${panelType}, skipping switch`
); );
return this.currentActivePanel; return this.currentActivePanel;
} }
if (!this.navigationPanel) { if (!this.navigationPanel) {
console.warn( logger.warn(
"[NavigationManager] NavigationPanel not registered, fallback to direct ViewManager call" "[NavigationManager] NavigationPanel not registered, fallback to direct ViewManager call"
); );
return null; return null;
@@ -545,13 +546,13 @@ export class NavigationManager {
callback?: Function callback?: Function
): void { ): void {
if (!panelName) { if (!panelName) {
console.error("[NavigationManager] openPopupPanel: panelName is empty"); logger.error("[NavigationManager] openPopupPanel: panelName is empty");
return; return;
} }
const popupCallback = (panel: Node) => { const popupCallback = (panel: Node) => {
if (!panel || !panel.isValid) { if (!panel || !panel.isValid) {
console.error( logger.error(
"[NavigationManager] openPopupPanel: created panel is invalid" "[NavigationManager] openPopupPanel: created panel is invalid"
); );
return; return;
@@ -559,7 +560,7 @@ export class NavigationManager {
// 将弹窗添加到管理集合中 // 将弹窗添加到管理集合中
this.popupPanels.add(panel); this.popupPanels.add(panel);
console.log( logger.log(
`[NavigationManager] Popup panel opened: ${panelName}, total popups: ${this.popupPanels.size}` `[NavigationManager] Popup panel opened: ${panelName}, total popups: ${this.popupPanels.size}`
); );
@@ -577,14 +578,14 @@ export class NavigationManager {
*/ */
public closePopupPanel(panel: Node): void { public closePopupPanel(panel: Node): void {
if (!panel || !panel.isValid) { if (!panel || !panel.isValid) {
console.warn("[NavigationManager] closePopupPanel: panel is invalid"); logger.warn("[NavigationManager] closePopupPanel: panel is invalid");
return; return;
} }
// 从弹窗管理集合中移除 // 从弹窗管理集合中移除
if (this.popupPanels.has(panel)) { if (this.popupPanels.has(panel)) {
this.popupPanels.delete(panel); this.popupPanels.delete(panel);
console.log( logger.log(
`[NavigationManager] Popup panel closed: ${panel.name}, total popups: ${this.popupPanels.size}` `[NavigationManager] Popup panel closed: ${panel.name}, total popups: ${this.popupPanels.size}`
); );
} }
@@ -598,7 +599,7 @@ export class NavigationManager {
panel.destroy(); panel.destroy();
} }
} catch (error) { } catch (error) {
console.error("[NavigationManager] closePopupPanel error:", error); logger.error("[NavigationManager] closePopupPanel error:", error);
} }
} }
@@ -610,7 +611,7 @@ export class NavigationManager {
return; return;
} }
console.log( logger.log(
`[NavigationManager] Closing all popups, count: ${this.popupPanels.size}` `[NavigationManager] Closing all popups, count: ${this.popupPanels.size}`
); );
@@ -631,7 +632,7 @@ export class NavigationManager {
animationConfig?: SubPanelAnimationConfig animationConfig?: SubPanelAnimationConfig
) { ) {
if (!panel) { if (!panel) {
console.warn( logger.warn(
"[NavigationManager] closeSubPanel: panel is null or undefined" "[NavigationManager] closeSubPanel: panel is null or undefined"
); );
return; return;
@@ -645,7 +646,7 @@ export class NavigationManager {
} }
if (!panelNode || !panelNode.isValid) { if (!panelNode || !panelNode.isValid) {
console.warn("[NavigationManager] closeSubPanel: panelNode is invalid"); logger.warn("[NavigationManager] closeSubPanel: panelNode is invalid");
return; return;
} }
@@ -675,7 +676,7 @@ export class NavigationManager {
panel.close(); panel.close();
} }
} catch (error) { } catch (error) {
console.error("[NavigationManager] closeSubPanel error:", error); logger.error("[NavigationManager] closeSubPanel error:", error);
} }
}); });
} }
@@ -699,7 +700,7 @@ export class NavigationManager {
this.subPanelDic.delete(baseNode); this.subPanelDic.delete(baseNode);
} }
} else { } else {
console.warn( logger.warn(
`[NavigationManager] ${panelNode.name} 不在子页面列表中` `[NavigationManager] ${panelNode.name} 不在子页面列表中`
); );
} }
@@ -733,7 +734,7 @@ export class NavigationManager {
} }
private getPanelType(node: Node): PanelType { private getPanelType(node: Node): PanelType {
if (!node || !node.isValid) { if (!node || !node.isValid) {
console.warn("[NavigationManager] getPanelType: node is invalid"); logger.warn("[NavigationManager] getPanelType: node is invalid");
return null; return null;
} }
@@ -747,7 +748,7 @@ export class NavigationManager {
case "PersonalPanel": case "PersonalPanel":
return PanelType.PERSONAL; return PanelType.PERSONAL;
default: default:
console.warn( logger.warn(
`[NavigationManager] Unknown panel type for node: ${node.name}` `[NavigationManager] Unknown panel type for node: ${node.name}`
); );
return null; return null;
@@ -794,7 +795,7 @@ export class NavigationManager {
// 不在这里调用Show(),因为ThemePanel已经有加载状态保护 // 不在这里调用Show(),因为ThemePanel已经有加载状态保护
// 只在必要时调用onHide()确保子页面状态正确 // 只在必要时调用onHide()确保子页面状态正确
if (typeof themePanel.onHide === "function") { if (typeof themePanel.onHide === "function") {
console.log("[NavigationManager] 确保主题面板子页面状态正确"); logger.log("[NavigationManager] 确保主题面板子页面状态正确");
themePanel.onHide(); themePanel.onHide();
} }
} }
@@ -918,7 +919,7 @@ export class NavigationManager {
public setSelectedGirlId(girlId: number): void { public setSelectedGirlId(girlId: number): void {
this.selectedGirlId = girlId; this.selectedGirlId = girlId;
sys.localStorage.setItem(NavigationManager.LastSelectGirlID, girlId); sys.localStorage.setItem(NavigationManager.LastSelectGirlID, girlId);
console.log("[NavigationManager] Selected girl ID set to:", girlId); logger.log("[NavigationManager] Selected girl ID set to:", girlId);
} }
/** /**
@@ -935,7 +936,7 @@ export class NavigationManager {
*/ */
public setSelectedCategoryId(themeId: number): void { public setSelectedCategoryId(themeId: number): void {
this.selectedCategoryId = themeId; this.selectedCategoryId = themeId;
console.log("[NavigationManager] Selected theme ID set to:", themeId); logger.log("[NavigationManager] Selected theme ID set to:", themeId);
} }
/** /**
@@ -9,6 +9,7 @@ import type proto from "db://assets/Scripts/proto/proto.pb.js";
import { type OpenStrategy } from "./PaymentOpener"; import { type OpenStrategy } from "./PaymentOpener";
import { DataManager, DataId } from "db://assets/Scripts/chat18x/data/DataManager"; import { DataManager, DataId } from "db://assets/Scripts/chat18x/data/DataManager";
import { OrderData } from "db://assets/Scripts/chat18x/data/OrderData"; import { OrderData } from "db://assets/Scripts/chat18x/data/OrderData";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
export class CashInrFlow implements PaymentFlow { export class CashInrFlow implements PaymentFlow {
constructor(private waitAppResume: (open: OpenStrategy) => Promise<void>) {} constructor(private waitAppResume: (open: OpenStrategy) => Promise<void>) {}
@@ -41,6 +42,6 @@ export class CashInrFlow implements PaymentFlow {
startIntervalMs: 2000, startIntervalMs: 2000,
maxIntervalMs: 10000, maxIntervalMs: 10000,
jitter: true, jitter: true,
}, (d) => console.log()); }, (d) => logger.log());
} }
} }
@@ -4,6 +4,7 @@
*/ */
import { PaymentApi } from "./PaymentApi"; import { PaymentApi } from "./PaymentApi";
import proto from 'db://assets/Scripts/proto/proto.pb.js'; import proto from 'db://assets/Scripts/proto/proto.pb.js';
import { logger } from "db://assets/Scripts/Main/Common/Logger";
export interface PollOptions { export interface PollOptions {
maxDurationMs: number; // 最大轮询时长(超过就自动退出)(例如 2分钟) maxDurationMs: number; // 最大轮询时长(超过就自动退出)(例如 2分钟)
@@ -41,9 +42,9 @@ export class PaymentPoller {
this.currentPollCount++; this.currentPollCount++;
// 查询 // 查询
let reqData = {orderId: orderId}; let reqData = {orderId: orderId};
console.log("订单:", orderId, " ,第 ", this.currentPollCount, " 次轮询订单的请求数据:", reqData); logger.log("订单:", orderId, " ,第 ", this.currentPollCount, " 次轮询订单的请求数据:", reqData);
const r = await PaymentApi.I.queryOrder(reqData); const r = await PaymentApi.I.queryOrder(reqData);
console.log("订单:", orderId, " ,第 ", this.currentPollCount, " 次轮询订单的响应数据:", r); logger.log("订单:", orderId, " ,第 ", this.currentPollCount, " 次轮询订单的响应数据:", r);
if (r.code === proto.cs.EnmRetCode.SUCCESS && r.data) { if (r.code === proto.cs.EnmRetCode.SUCCESS && r.data) {
// 回调 // 回调
onTick?.(r.data); onTick?.(r.data);
@@ -14,6 +14,7 @@ import { DataManager, DataId } from "db://assets/Scripts/chat18x/data/DataManage
import { OrderData } from "db://assets/Scripts/chat18x/data/OrderData"; import { OrderData } from "db://assets/Scripts/chat18x/data/OrderData";
import Utils from "../../Main/Common/Utils"; import Utils from "../../Main/Common/Utils";
import { InnerMsgCode } from "../../Main/Config/InnerMsgCode"; import { InnerMsgCode } from "../../Main/Config/InnerMsgCode";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
export class PaymentService { export class PaymentService {
private static _I: PaymentService | null = null; private static _I: PaymentService | null = null;
@@ -32,9 +33,9 @@ export class PaymentService {
/** 发起支付:创建订单→打开URL→回到App后开始轮询 */ /** 发起支付:创建订单→打开URL→回到App后开始轮询 */
async startPayment(req: proto.cs.ICSCreateOrderReq, open: OpenStrategy = "system"): Promise<proto.cs.ICSQueryOrderRes> { async startPayment(req: proto.cs.ICSCreateOrderReq, open: OpenStrategy = "system"): Promise<proto.cs.ICSQueryOrderRes> {
// 下单 // 下单
console.log("创建订单的请求数据:", req); logger.log("创建订单的请求数据:", req);
const create = await PaymentApi.I.createOrder(req); const create = await PaymentApi.I.createOrder(req);
console.log("创建订单的响应数据:", create); logger.log("创建订单的响应数据:", create);
if (create.code !== proto.cs.EnmRetCode.SUCCESS || !create.data) { if (create.code !== proto.cs.EnmRetCode.SUCCESS || !create.data) {
return { status: -1, retCode: -1, balance: 0, vipExpire: 0}; return { status: -1, retCode: -1, balance: 0, vipExpire: 0};
} }
@@ -88,7 +89,7 @@ export class PaymentService {
return new Promise<void>((resolve) => { return new Promise<void>((resolve) => {
let finished = false; let finished = false;
const finish = () => { const finish = () => {
console.log("应用回到 finish"); logger.log("应用回到 finish");
if (finished) return; if (finished) return;
finished = true; finished = true;
// 安全移除监听 // 安全移除监听
@@ -98,7 +99,7 @@ export class PaymentService {
const onShow = () => { const onShow = () => {
// 应用回到前台 // 应用回到前台
console.log("应用回到了前台"); logger.log("应用回到了前台");
finish(); finish();
}; };
+2 -1
View File
@@ -8,6 +8,7 @@ import type proto from "db://assets/Scripts/proto/proto.pb.js";
import { type OpenStrategy } from "./PaymentOpener"; import { type OpenStrategy } from "./PaymentOpener";
import { DataManager, DataId } from "db://assets/Scripts/chat18x/data/DataManager"; import { DataManager, DataId } from "db://assets/Scripts/chat18x/data/DataManager";
import { OrderData } from "db://assets/Scripts/chat18x/data/OrderData"; import { OrderData } from "db://assets/Scripts/chat18x/data/OrderData";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
export class WebUsdFlow implements PaymentFlow { export class WebUsdFlow implements PaymentFlow {
constructor(private delayMs: number = 5000) {} constructor(private delayMs: number = 5000) {}
@@ -36,7 +37,7 @@ export class WebUsdFlow implements PaymentFlow {
startIntervalMs: 5000, startIntervalMs: 5000,
maxIntervalMs: 10000, maxIntervalMs: 10000,
jitter: true, jitter: true,
}, (d) => console.log()); }, (d) => logger.log());
} }
private delay(ms: number) { private delay(ms: number) {
@@ -1,4 +1,5 @@
import { ChatAIService } from '../core/ChatAIService'; import { ChatAIService } from '../core/ChatAIService';
import { logger } from "db://assets/Scripts/Main/Common/Logger";
/** /**
* ChatAI - * ChatAI -
@@ -14,7 +15,7 @@ export class ChatAIBatchTestRunner {
private isRunning: boolean = false; private isRunning: boolean = false;
constructor() { constructor() {
console.log("[ChatAIBatchTestRunner] 测试运行器已初始化"); logger.log("[ChatAIBatchTestRunner] 测试运行器已初始化");
} }
/** /**
@@ -32,13 +33,13 @@ export class ChatAIBatchTestRunner {
*/ */
public async runBatchTest(): Promise<void> { public async runBatchTest(): Promise<void> {
if (this.isRunning) { if (this.isRunning) {
console.log("[ChatAIBatchTestRunner] 测试已在运行中,请等待完成..."); logger.log("[ChatAIBatchTestRunner] 测试已在运行中,请等待完成...");
return; return;
} }
this.isRunning = true; this.isRunning = true;
console.log("[ChatAIBatchTestRunner] 开始批量测试角色ID 10001-10030"); logger.log("[ChatAIBatchTestRunner] 开始批量测试角色ID 10001-10030");
console.log("[ChatAIBatchTestRunner] 每次测试间隔10秒"); logger.log("[ChatAIBatchTestRunner] 每次测试间隔10秒");
const startTime = Date.now(); const startTime = Date.now();
const successIds: number[] = []; const successIds: number[] = [];
@@ -47,7 +48,7 @@ export class ChatAIBatchTestRunner {
// 测试角色ID 10001-10030 // 测试角色ID 10001-10030
for (let roleId = 10001; roleId <= 10030; roleId++) { for (let roleId = 10001; roleId <= 10030; roleId++) {
console.log(`[ChatAIBatchTestRunner] 正在测试角色ID: ${roleId}`); logger.log(`[ChatAIBatchTestRunner] 正在测试角色ID: ${roleId}`);
const testStartTime = Date.now(); const testStartTime = Date.now();
@@ -57,12 +58,12 @@ export class ChatAIBatchTestRunner {
if (response && response.trim() !== "") { if (response && response.trim() !== "") {
successIds.push(roleId); successIds.push(roleId);
console.log(`[ChatAIBatchTestRunner] ✅ 角色 ${roleId} 测试成功 (${testDuration}ms)`); logger.log(`[ChatAIBatchTestRunner] ✅ 角色 ${roleId} 测试成功 (${testDuration}ms)`);
console.log(`[ChatAIBatchTestRunner] 响应预览: ${response.substring(0, 50)}...`); logger.log(`[ChatAIBatchTestRunner] 响应预览: ${response.substring(0, 50)}...`);
} else { } else {
failureIds.push(roleId); failureIds.push(roleId);
errorDetails[roleId] = "返回空响应"; errorDetails[roleId] = "返回空响应";
console.log(`[ChatAIBatchTestRunner] ❌ 角色 ${roleId} 返回空响应 (${testDuration}ms)`); logger.log(`[ChatAIBatchTestRunner] ❌ 角色 ${roleId} 返回空响应 (${testDuration}ms)`);
} }
} catch (error) { } catch (error) {
const testDuration = Date.now() - testStartTime; const testDuration = Date.now() - testStartTime;
@@ -70,12 +71,12 @@ export class ChatAIBatchTestRunner {
failureIds.push(roleId); failureIds.push(roleId);
errorDetails[roleId] = errorMessage; errorDetails[roleId] = errorMessage;
console.log(`[ChatAIBatchTestRunner] ❌ 角色 ${roleId} 测试失败 (${testDuration}ms): ${errorMessage}`); logger.log(`[ChatAIBatchTestRunner] ❌ 角色 ${roleId} 测试失败 (${testDuration}ms): ${errorMessage}`);
} }
// 等待10秒(最后一个不需要等待) // 等待10秒(最后一个不需要等待)
if (roleId < 10030) { if (roleId < 10030) {
console.log(`[ChatAIBatchTestRunner] 等待10秒后继续下一个测试...`); logger.log(`[ChatAIBatchTestRunner] 等待10秒后继续下一个测试...`);
await this.delay(10); await this.delay(10);
} }
} }
@@ -86,7 +87,7 @@ export class ChatAIBatchTestRunner {
this.printFinalReport(successIds, failureIds, errorDetails, totalDuration); this.printFinalReport(successIds, failureIds, errorDetails, totalDuration);
this.isRunning = false; this.isRunning = false;
console.log("[ChatAIBatchTestRunner] 批量测试完成!"); logger.log("[ChatAIBatchTestRunner] 批量测试完成!");
} }
/** /**
@@ -103,44 +104,44 @@ export class ChatAIBatchTestRunner {
const failureCount = failureIds.length; const failureCount = failureIds.length;
const successRate = ((successCount / totalTests) * 100).toFixed(2); const successRate = ((successCount / totalTests) * 100).toFixed(2);
console.log("\n" + "=".repeat(60)); logger.log("\n" + "=".repeat(60));
console.log(" ChatAI 批量测试报告"); logger.log(" ChatAI 批量测试报告");
console.log("=".repeat(60)); logger.log("=".repeat(60));
console.log(`测试时间: ${new Date().toLocaleString()}`); logger.log(`测试时间: ${new Date().toLocaleString()}`);
console.log(`总测试数: ${totalTests}`); logger.log(`总测试数: ${totalTests}`);
console.log(`成功数量: ${successCount}`); logger.log(`成功数量: ${successCount}`);
console.log(`失败数量: ${failureCount}`); logger.log(`失败数量: ${failureCount}`);
console.log(`成功率: ${successRate}%`); logger.log(`成功率: ${successRate}%`);
console.log(`总耗时: ${(totalDuration / 1000).toFixed(2)}`); logger.log(`总耗时: ${(totalDuration / 1000).toFixed(2)}`);
console.log(`平均耗时: ${(totalDuration / totalTests / 1000).toFixed(2)}秒/测试`); logger.log(`平均耗时: ${(totalDuration / totalTests / 1000).toFixed(2)}秒/测试`);
console.log("\n" + "-".repeat(30) + " 成功的角色ID " + "-".repeat(30)); logger.log("\n" + "-".repeat(30) + " 成功的角色ID " + "-".repeat(30));
if (successIds.length > 0) { if (successIds.length > 0) {
const successList = this.formatIdList(successIds); const successList = this.formatIdList(successIds);
console.log(successList); logger.log(successList);
} else { } else {
console.log("无成功案例"); logger.log("无成功案例");
} }
console.log("\n" + "-".repeat(30) + " 失败的角色ID " + "-".repeat(30)); logger.log("\n" + "-".repeat(30) + " 失败的角色ID " + "-".repeat(30));
if (failureIds.length > 0) { if (failureIds.length > 0) {
const failureList = this.formatIdList(failureIds); const failureList = this.formatIdList(failureIds);
console.log(failureList); logger.log(failureList);
console.log("\n" + "-".repeat(25) + " 失败详情 " + "-".repeat(25)); logger.log("\n" + "-".repeat(25) + " 失败详情 " + "-".repeat(25));
failureIds.forEach(roleId => { failureIds.forEach(roleId => {
console.log(`角色 ${roleId}: ${errorDetails[roleId]}`); logger.log(`角色 ${roleId}: ${errorDetails[roleId]}`);
}); });
} else { } else {
console.log("无失败案例"); logger.log("无失败案例");
} }
console.log("\n" + "=".repeat(60)); logger.log("\n" + "=".repeat(60));
// 输出简洁版结果供复制使用 // 输出简洁版结果供复制使用
console.log("\n简洁结果:"); logger.log("\n简洁结果:");
console.log(`成功(${successCount}): ${successIds.join(',')}`); logger.log(`成功(${successCount}): ${successIds.join(',')}`);
console.log(`失败(${failureCount}): ${failureIds.join(',')}`); logger.log(`失败(${failureCount}): ${failureIds.join(',')}`);
} }
/** /**
+34 -32
View File
@@ -34,6 +34,8 @@ import { NavigationManager, PanelType } from "../../manager/NavigationManager";
import { GirlService } from "../../network/services/GirlService"; import { GirlService } from "../../network/services/GirlService";
import proto from "db://assets/Scripts/proto/proto.pb.js"; import proto from "db://assets/Scripts/proto/proto.pb.js";
import { TipsPanel } from "./TipsPanel"; import { TipsPanel } from "./TipsPanel";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@ccclass("ChatPanel") @ccclass("ChatPanel")
@@ -110,9 +112,9 @@ export class ChatPanel extends li_BaseView implements IChatPanelCallback {
// 检查 SceneBgVideoLayer 是否可用 // 检查 SceneBgVideoLayer 是否可用
if (!this.videoLayer) { if (!this.videoLayer) {
console.error("ChatPanel: SceneBgVideoLayer.handle 未初始化"); logger.error("ChatPanel: SceneBgVideoLayer.handle 未初始化");
} else { } else {
console.log("ChatPanel: 成功获取 SceneBgVideoLayer 实例"); logger.log("ChatPanel: 成功获取 SceneBgVideoLayer 实例");
} }
this.popUpImage.node.active = false; this.popUpImage.node.active = false;
} }
@@ -199,7 +201,7 @@ export class ChatPanel extends li_BaseView implements IChatPanelCallback {
this.chatController.hasRoleData(this.categoryId, this.id) this.chatController.hasRoleData(this.categoryId, this.id)
) { ) {
// 如果是角色切换且有缓存数据,使用switchRole // 如果是角色切换且有缓存数据,使用switchRole
console.log( logger.log(
`ChatPanel: Switching from role ${this.chatController.getCurrentRoleId()} to role ${ `ChatPanel: Switching from role ${this.chatController.getCurrentRoleId()} to role ${
this.id this.id
}` }`
@@ -207,7 +209,7 @@ export class ChatPanel extends li_BaseView implements IChatPanelCallback {
this.chatController.switchRole(this.categoryId, this.id); this.chatController.switchRole(this.categoryId, this.id);
} else { } else {
// 首次初始化或没有缓存数据,使用initialize // 首次初始化或没有缓存数据,使用initialize
console.log(`ChatPanel: Initializing role ${this.id}`); logger.log(`ChatPanel: Initializing role ${this.id}`);
this.chatController.initialize(this.categoryId, this.id); this.chatController.initialize(this.categoryId, this.id);
} }
} }
@@ -234,7 +236,7 @@ export class ChatPanel extends li_BaseView implements IChatPanelCallback {
if (this.videoLayer) { if (this.videoLayer) {
// Get current emotion from ChatController // Get current emotion from ChatController
const currentEmotion = this.chatController.getCurrentEmotion(); const currentEmotion = this.chatController.getCurrentEmotion();
console.log( logger.log(
`Current emotion for role ${this.id}: ${VideoEmotion[currentEmotion]}` `Current emotion for role ${this.id}: ${VideoEmotion[currentEmotion]}`
); );
@@ -244,7 +246,7 @@ export class ChatPanel extends li_BaseView implements IChatPanelCallback {
chatModel.getDefaultVideo(); chatModel.getDefaultVideo();
if (initialVideo) { if (initialVideo) {
console.log( logger.log(
`Loading initial video: ${initialVideo} (emotion: ${VideoEmotion[initialVideo]})` `Loading initial video: ${initialVideo} (emotion: ${VideoEmotion[initialVideo]})`
); );
@@ -263,7 +265,7 @@ export class ChatPanel extends li_BaseView implements IChatPanelCallback {
} }
} else { } else {
this.currentEmotion = null; // Reset current emotion when no videos available this.currentEmotion = null; // Reset current emotion when no videos available
console.log("No SceneBgVideoLayer available for role", this.id); logger.log("No SceneBgVideoLayer available for role", this.id);
} }
} }
@@ -272,41 +274,41 @@ export class ChatPanel extends li_BaseView implements IChatPanelCallback {
* *
*/ */
adjustVideoScale() { adjustVideoScale() {
console.log( logger.log(
"ChatPanel: adjustVideoScale() 方法已废弃,缩放和位置由 playVideo() 自动处理" "ChatPanel: adjustVideoScale() 方法已废弃,缩放和位置由 playVideo() 自动处理"
); );
// 如果确实需要手动调整,可以重新调用 playVideo // 如果确实需要手动调整,可以重新调用 playVideo
// this.videoLayer.playVideo(currentVideo, { size, position }); // this.videoLayer.playVideo(currentVideo, { size, position });
} }
onChatCountChange() { onChatCountChange() {
console.log("Trigger On ChatCount Change"); logger.log("Trigger On ChatCount Change");
const girlData = DataManager.I.getDataById<GirlData>(DataId.Girl); const girlData = DataManager.I.getDataById<GirlData>(DataId.Girl);
let triggerId = girlData.getTriggerGrilPhotoId(this.categoryId, this.id); let triggerId = girlData.getTriggerGrilPhotoId(this.categoryId, this.id);
if (triggerId == 0) return; if (triggerId == 0) return;
console.log("Trigger pop up Image id:" + this.id + "--" + triggerId); logger.log("Trigger pop up Image id:" + this.id + "--" + triggerId);
this.popUpImage.refresh(this.categoryId, this.id, triggerId); this.popUpImage.refresh(this.categoryId, this.id, triggerId);
} }
setVideoEnable(enable: boolean) { setVideoEnable(enable: boolean) {
if (!this.videoLayer) { if (!this.videoLayer) {
console.error("ChatPanel: SceneBgVideoLayer 不可用"); logger.error("ChatPanel: SceneBgVideoLayer 不可用");
return; return;
} }
if (enable) { if (enable) {
this.videoLayer.resume(); this.videoLayer.resume();
console.log("ChatPanel: 恢复视频播放"); logger.log("ChatPanel: 恢复视频播放");
} else { } else {
this.videoLayer.pause(); this.videoLayer.pause();
console.log("ChatPanel: 暂停视频播放"); logger.log("ChatPanel: 暂停视频播放");
} }
} }
private switchVideoByEmotion(emotion: VideoEmotion): void { private switchVideoByEmotion(emotion: VideoEmotion): void {
if (!this.videoLayer) { if (!this.videoLayer) {
console.warn("Cannot switch video: missing video player"); logger.warn("Cannot switch video: missing video player");
return; return;
} }
// Get video data from ChatModel through ChatController // Get video data from ChatModel through ChatController
@@ -314,7 +316,7 @@ export class ChatPanel extends li_BaseView implements IChatPanelCallback {
// Check if emotion has changed // Check if emotion has changed
if (this.currentEmotion === emotion) { if (this.currentEmotion === emotion) {
console.log( logger.log(
`Emotion ${VideoEmotion[emotion]} unchanged, skipping video switch` `Emotion ${VideoEmotion[emotion]} unchanged, skipping video switch`
); );
return; return;
@@ -324,7 +326,7 @@ export class ChatPanel extends li_BaseView implements IChatPanelCallback {
const matchingVideo = chatModel.getVideoByEmotion(emotion); const matchingVideo = chatModel.getVideoByEmotion(emotion);
if (matchingVideo) { if (matchingVideo) {
console.log( logger.log(
`Switching to video for emotion ${ `Switching to video for emotion ${
VideoEmotion[emotion] VideoEmotion[emotion]
}: ${matchingVideo} (from ${ }: ${matchingVideo} (from ${
@@ -346,14 +348,14 @@ export class ChatPanel extends li_BaseView implements IChatPanelCallback {
// 注意:移除了 adjustVideoScale() 调用,因为 playVideo 现在会自动处理缩放和位置 // 注意:移除了 adjustVideoScale() 调用,因为 playVideo 现在会自动处理缩放和位置
this.setVideoEnable(true); this.setVideoEnable(true);
} else { } else {
console.warn( logger.warn(
`No video found for emotion ${VideoEmotion[emotion]}, falling back to default video` `No video found for emotion ${VideoEmotion[emotion]}, falling back to default video`
); );
// Fallback to default video from ChatModel // Fallback to default video from ChatModel
const fallbackVideo = chatModel.getDefaultVideo(); const fallbackVideo = chatModel.getDefaultVideo();
if (fallbackVideo) { if (fallbackVideo) {
console.log( logger.log(
`Loading fallback video: ${fallbackVideo} (emotion: ${VideoEmotion[fallbackVideo]})` `Loading fallback video: ${fallbackVideo} (emotion: ${VideoEmotion[fallbackVideo]})`
); );
@@ -378,7 +380,7 @@ export class ChatPanel extends li_BaseView implements IChatPanelCallback {
}): void { }): void {
// 检查是否是当前角色 // 检查是否是当前角色
if (data.roleId === this.id) { if (data.roleId === this.id) {
console.log( logger.log(
`Emotion initialized for current role ${this.id}: ${ `Emotion initialized for current role ${this.id}: ${
VideoEmotion[data.emotion] VideoEmotion[data.emotion]
}` }`
@@ -387,7 +389,7 @@ export class ChatPanel extends li_BaseView implements IChatPanelCallback {
// 切换到对应的视频 // 切换到对应的视频
this.switchVideoByEmotion(data.emotion); this.switchVideoByEmotion(data.emotion);
} else { } else {
console.log( logger.log(
`Emotion initialized for role ${data.roleId} (not current role ${this.id}), ignoring` `Emotion initialized for role ${data.roleId} (not current role ${this.id}), ignoring`
); );
} }
@@ -444,7 +446,7 @@ export class ChatPanel extends li_BaseView implements IChatPanelCallback {
* @param message * @param message
*/ */
public onMessageSent(message: string): void { public onMessageSent(message: string): void {
console.log("Message sent:", message); logger.log("Message sent:", message);
// 消息发送后开始显示加载动画,由DialogManager处理 // 消息发送后开始显示加载动画,由DialogManager处理
} }
@@ -453,7 +455,7 @@ export class ChatPanel extends li_BaseView implements IChatPanelCallback {
* @param response AI的回复内容 * @param response AI的回复内容
*/ */
public onMessageReceived(response: string): void { public onMessageReceived(response: string): void {
//console.log("Message received:", response); //logger.log("Message received:", response);
// AI回复收到后加载动画会被自动移除,可以在这里添加其他UI效果 // AI回复收到后加载动画会被自动移除,可以在这里添加其他UI效果
} }
@@ -470,7 +472,7 @@ export class ChatPanel extends li_BaseView implements IChatPanelCallback {
* @param error * @param error
*/ */
public onError(error: Error): void { public onError(error: Error): void {
console.error("Chat error:", error); logger.error("Chat error:", error);
// 出错时加载动画会被自动移除,可以在这里显示错误提示给用户 // 出错时加载动画会被自动移除,可以在这里显示错误提示给用户
} }
@@ -483,7 +485,7 @@ export class ChatPanel extends li_BaseView implements IChatPanelCallback {
* @param emotion * @param emotion
*/ */
public onEmotionUpdated(emotion: VideoEmotion): void { public onEmotionUpdated(emotion: VideoEmotion): void {
console.log( logger.log(
`ChatPanel: Emotion updated to ${VideoEmotion[emotion]} (${emotion})` `ChatPanel: Emotion updated to ${VideoEmotion[emotion]} (${emotion})`
); );
@@ -495,23 +497,23 @@ export class ChatPanel extends li_BaseView implements IChatPanelCallback {
switch (emotion) { switch (emotion) {
case VideoEmotion.calm_down: case VideoEmotion.calm_down:
// 平静状态的UI更新 // 平静状态的UI更新
console.log("UI state: Calm"); logger.log("UI state: Calm");
break; break;
case VideoEmotion.arousal: case VideoEmotion.arousal:
// 兴奋状态的UI更新 // 兴奋状态的UI更新
console.log("UI state: Arousal"); logger.log("UI state: Arousal");
break; break;
case VideoEmotion.desire: case VideoEmotion.desire:
// 渴望状态的UI更新 // 渴望状态的UI更新
console.log("UI state: Desire"); logger.log("UI state: Desire");
break; break;
case VideoEmotion.passion: case VideoEmotion.passion:
// 激情状态的UI更新 // 激情状态的UI更新
console.log("UI state: Passion"); logger.log("UI state: Passion");
break; break;
case VideoEmotion.orgasm: case VideoEmotion.orgasm:
// 高潮状态的UI更新 // 高潮状态的UI更新
console.log("UI state: Orgasm"); logger.log("UI state: Orgasm");
break; break;
} }
} }
@@ -529,17 +531,17 @@ export class ChatPanel extends li_BaseView implements IChatPanelCallback {
*/ */
public clearRoleDataDebug(roleId?: number): void { public clearRoleDataDebug(roleId?: number): void {
if (!this.chatController) { if (!this.chatController) {
console.warn("ChatController not initialized"); logger.warn("ChatController not initialized");
return; return;
} }
const targetRoleId = roleId || this.id; const targetRoleId = roleId || this.id;
if (!targetRoleId) { if (!targetRoleId) {
console.warn("No role ID specified"); logger.warn("No role ID specified");
return; return;
} }
this.chatController.clearRoleData(targetRoleId); this.chatController.clearRoleData(targetRoleId);
console.log(`Cleared data for role ${targetRoleId}`); logger.log(`Cleared data for role ${targetRoleId}`);
} }
} }
@@ -28,6 +28,7 @@ import { GirlData } from "../../data/GirlData";
import { GirlService } from "db://assets/Scripts/chat18x/network/services/GirlService"; import { GirlService } from "db://assets/Scripts/chat18x/network/services/GirlService";
import proto from "db://assets/Scripts/proto/proto.pb.js"; import proto from "db://assets/Scripts/proto/proto.pb.js";
import { SceneBgVideoLayer } from "../../../Sub/UI/SceneBgVideoLayer"; import { SceneBgVideoLayer } from "../../../Sub/UI/SceneBgVideoLayer";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@@ -106,18 +107,18 @@ export class GirlDetailPanel extends li_BaseView {
setVideEnable(enable: boolean) { setVideEnable(enable: boolean) {
if (!this.videoLayer) { if (!this.videoLayer) {
console.error("GirlDetailPanel: SceneBgVideoLayer 不可用"); logger.error("GirlDetailPanel: SceneBgVideoLayer 不可用");
return; return;
} }
if (enable) { if (enable) {
// 恢复播放 // 恢复播放
this.videoLayer.resume(); this.videoLayer.resume();
console.log("GirlDetailPanel: 开启视频播放"); logger.log("GirlDetailPanel: 开启视频播放");
} else { } else {
// 暂停播放 // 暂停播放
this.videoLayer.pause(); this.videoLayer.pause();
console.log("GirlDetailPanel: 暂停视频播放"); logger.log("GirlDetailPanel: 暂停视频播放");
} }
} }
@@ -132,7 +133,7 @@ export class GirlDetailPanel extends li_BaseView {
} }
// 如果没有 videoArea,使用默认尺寸 // 如果没有 videoArea,使用默认尺寸
console.warn("GirlDetailPanel: videoArea 未设置,使用默认尺寸"); logger.warn("GirlDetailPanel: videoArea 未设置,使用默认尺寸");
return new Size(600, 800); return new Size(600, 800);
} }
@@ -159,9 +160,9 @@ export class GirlDetailPanel extends li_BaseView {
// 检查 SceneBgVideoLayer 是否可用 // 检查 SceneBgVideoLayer 是否可用
if (!this.videoLayer) { if (!this.videoLayer) {
console.error("GirlDetailPanel: SceneBgVideoLayer.handle 未初始化"); logger.error("GirlDetailPanel: SceneBgVideoLayer.handle 未初始化");
} else { } else {
console.log("GirlDetailPanel: 成功获取 SceneBgVideoLayer 实例"); logger.log("GirlDetailPanel: 成功获取 SceneBgVideoLayer 实例");
// 初始化视频显示位置 // 初始化视频显示位置
//this.initVideoPosition(); //this.initVideoPosition();
} }
@@ -191,7 +192,7 @@ export class GirlDetailPanel extends li_BaseView {
this.tags.string = desc; this.tags.string = desc;
const star = girlData.getStar(this.category.toString(), this.id); const star = girlData.getStar(this.category.toString(), this.id);
const stars = this.starParent.getComponentsInChildren(Sprite); const stars = this.starParent.getComponentsInChildren(Sprite);
console.log("好感度:" + star); logger.log("好感度:" + star);
for (let i = 0; i < stars.length; i++) { for (let i = 0; i < stars.length; i++) {
const element = stars[i]; const element = stars[i];
if (star > i) { if (star > i) {
@@ -215,7 +216,7 @@ export class GirlDetailPanel extends li_BaseView {
// 使用 SceneBgVideoLayer 加载并播放视频 // 使用 SceneBgVideoLayer 加载并播放视频
if (this.videoLayer && firstPath) { if (this.videoLayer && firstPath) {
console.log(`GirlDetailPanel: 加载视频 ${firstPath}`); logger.log(`GirlDetailPanel: 加载视频 ${firstPath}`);
// 获取 videoArea 的尺寸和位置 // 获取 videoArea 的尺寸和位置
const targetSize = this.videoArea const targetSize = this.videoArea
@@ -234,7 +235,7 @@ export class GirlDetailPanel extends li_BaseView {
this.videoLayer.getVideoPlayer().node.parent; this.videoLayer.getVideoPlayer().node.parent;
if (videoPlayerParent) { if (videoPlayerParent) {
const parentWorldPos = videoPlayerParent.getWorldPosition(); const parentWorldPos = videoPlayerParent.getWorldPosition();
console.log( logger.log(
`GirlDetailPanel: VideoPlayer 父节点世界位置: (${parentWorldPos.x}, ${parentWorldPos.y}, ${parentWorldPos.z})` `GirlDetailPanel: VideoPlayer 父节点世界位置: (${parentWorldPos.x}, ${parentWorldPos.y}, ${parentWorldPos.z})`
); );
} }
@@ -339,7 +340,7 @@ export class GirlDetailPanel extends li_BaseView {
// 停止视频播放,释放资源 // 停止视频播放,释放资源
if (this.videoLayer) { if (this.videoLayer) {
//this.videoLayer.stop(); //this.videoLayer.stop();
//console.log("GirlDetailPanel: 停止视频播放"); //logger.log("GirlDetailPanel: 停止视频播放");
} }
super.onClose(); super.onClose();
@@ -352,7 +353,7 @@ export class GirlDetailPanel extends li_BaseView {
// 确保视频资源被释放 // 确保视频资源被释放
if (this.videoLayer) { if (this.videoLayer) {
//this.videoLayer.stop(); //this.videoLayer.stop();
//console.log("GirlDetailPanel: 销毁时停止视频播放"); //logger.log("GirlDetailPanel: 销毁时停止视频播放");
} }
// 回收所有使用中的节点到对象池 // 回收所有使用中的节点到对象池
@@ -26,6 +26,8 @@ import { ViewManager } from "../../../Main/Manager/ViewManager";
import { TipsPanel } from "./TipsPanel"; import { TipsPanel } from "./TipsPanel";
import ResManager from "../../../Main/Manager/ResManager"; import ResManager from "../../../Main/Manager/ResManager";
import { InnerMsgCode } from "../../../Main/Config/InnerMsgCode"; import { InnerMsgCode } from "../../../Main/Config/InnerMsgCode";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@ccclass("GirlListPopupPanel") @ccclass("GirlListPopupPanel")
@@ -79,7 +81,7 @@ export class GirlListPopupPanel extends li_BaseView {
const path = girlData.getGrilAvatar(this.category.toString(), this.girlId); const path = girlData.getGrilAvatar(this.category.toString(), this.girlId);
this.refreshCoinNum(); this.refreshCoinNum();
//console.log(path); //logger.log(path);
// 加载远程资源 // 加载远程资源
const envData = DataManager.I.getDataById<EnvData>(DataId.Env); const envData = DataManager.I.getDataById<EnvData>(DataId.Env);
let newPath = envData.cdn + "/" + "Girls/" + path + ".png"; let newPath = envData.cdn + "/" + "Girls/" + path + ".png";
@@ -101,13 +103,13 @@ export class GirlListPopupPanel extends li_BaseView {
} }
async buyCharacter() { async buyCharacter() {
// 购买id为girlId的女生 // 购买id为girlId的女生
console.log(this.girlId); logger.log(this.girlId);
// 请求解锁 // 请求解锁
const reqData = { const reqData = {
id: this.girlId, id: this.girlId,
}; };
let res = await GirlService.I.reqUnlockGirl(reqData); let res = await GirlService.I.reqUnlockGirl(reqData);
console.log("请求解锁技师响应数据:", res); logger.log("请求解锁技师响应数据:", res);
if (res && res.code === proto.cs.EnmRetCode.SUCCESS) { if (res && res.code === proto.cs.EnmRetCode.SUCCESS) {
const resData = res.data; const resData = res.data;
// 保存数据 // 保存数据
@@ -6,6 +6,7 @@ import { NavigationManager, PanelType } from "../../manager/NavigationManager";
import { NavigationBtn } from "../items/NavigationBtn"; import { NavigationBtn } from "../items/NavigationBtn";
import { ChatHistoryManager } from "../../manager/ChatHistoryManager"; import { ChatHistoryManager } from "../../manager/ChatHistoryManager";
import { PastGirlListPanel } from "./PastGirlListPanel"; import { PastGirlListPanel } from "./PastGirlListPanel";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@@ -101,7 +102,7 @@ export class NavigationPanel extends li_BaseView {
private refreshButtonVisuals() { private refreshButtonVisuals() {
// TODO: 实现按钮状态更新的视觉效果 // TODO: 实现按钮状态更新的视觉效果
// 根据 currentActivePanel 更新按钮的选中状态 // 根据 currentActivePanel 更新按钮的选中状态
console.log( logger.log(
"[NavigationPanel] Button states updated for:", "[NavigationPanel] Button states updated for:",
this.currentActivePanel this.currentActivePanel
); );
@@ -6,6 +6,7 @@ import { PastGirlListItem } from "../../uiitems/PastGirlListItem";
import { DataManager, DataId } from "../../data/DataManager"; import { DataManager, DataId } from "../../data/DataManager";
import { GirlData } from "../../data/GirlData"; import { GirlData } from "../../data/GirlData";
import { ChatHistoryManager } from "../../manager/ChatHistoryManager"; import { ChatHistoryManager } from "../../manager/ChatHistoryManager";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@@ -71,7 +72,7 @@ export class PastGirlListPanel extends li_BaseView {
private getUnlockedGirls(): number[] { private getUnlockedGirls(): number[] {
const GirlData = DataManager.I.getDataById<GirlData>(DataId.Girl); const GirlData = DataManager.I.getDataById<GirlData>(DataId.Girl);
const allids = GirlData.getAllReleaseGirlIds(); const allids = GirlData.getAllReleaseGirlIds();
console.log(allids); logger.log(allids);
return allids; return allids;
} }
@@ -17,6 +17,8 @@ import proto from "db://assets/Scripts/proto/proto.pb.js";
import { ConfigId, ConfigManager } from "../../manager/ConfigManager"; import { ConfigId, ConfigManager } from "../../manager/ConfigManager";
import { PurchaseConfig } from "../../config/PurchaseConfig"; import { PurchaseConfig } from "../../config/PurchaseConfig";
import LanguageUtils from "../../../Main/Common/LanguageUtils"; import LanguageUtils from "../../../Main/Common/LanguageUtils";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@ccclass("PayToTalkSubpanel") @ccclass("PayToTalkSubpanel")
@@ -76,7 +78,7 @@ export class PayToTalkSubpanel extends Component {
//ChatController.Instance.resetChatCount(); //ChatController.Instance.resetChatCount();
const shopData = DataManager.I.getDataById<ShopData>(DataId.Shop); const shopData = DataManager.I.getDataById<ShopData>(DataId.Shop);
const chatIds = shopData.getChatIds(); const chatIds = shopData.getChatIds();
console.log("聊天商品Id: ", chatIds); logger.log("聊天商品Id: ", chatIds);
if (chatIds.length > 0) { if (chatIds.length > 0) {
this.reqBuyGood(chatIds[0], this.girlId); this.reqBuyGood(chatIds[0], this.girlId);
} }
@@ -84,7 +86,7 @@ export class PayToTalkSubpanel extends Component {
onClick_BuyVip() { onClick_BuyVip() {
//购买VIP //购买VIP
console.log("购买vip"); logger.log("购买vip");
const shopData = DataManager.I.getDataById<ShopData>(DataId.Shop); const shopData = DataManager.I.getDataById<ShopData>(DataId.Shop);
const memberId = shopData.get7DayMemberId(); const memberId = shopData.get7DayMemberId();
this.reqBuyGood(memberId, this.girlId); this.reqBuyGood(memberId, this.girlId);
@@ -98,7 +100,7 @@ export class PayToTalkSubpanel extends Component {
girlId: girlId, girlId: girlId,
}; };
let res = await ShopService.I.reqBuyGood(reqData); let res = await ShopService.I.reqBuyGood(reqData);
console.log("请求使用余额购买商品的响应数据:", res); logger.log("请求使用余额购买商品的响应数据:", res);
if (res && res.code === proto.cs.EnmRetCode.SUCCESS) { if (res && res.code === proto.cs.EnmRetCode.SUCCESS) {
const resData = res.data; const resData = res.data;
// 保存数据 // 保存数据
@@ -26,6 +26,7 @@ import {
} from "../../manager/NavigationManager"; } from "../../manager/NavigationManager";
import { PlayerDataService } from "../../network/services/PlayerDataService"; import { PlayerDataService } from "../../network/services/PlayerDataService";
import proto from "db://assets/Scripts/proto/proto.pb.js"; import proto from "db://assets/Scripts/proto/proto.pb.js";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@@ -91,7 +92,7 @@ export class PersonalPanel extends li_BaseView {
private async refresh() { private async refresh() {
const reqData = {}; const reqData = {};
let res = await PlayerDataService.I.reqMyInfo(reqData); let res = await PlayerDataService.I.reqMyInfo(reqData);
console.log("个人信息响应数据:", res); logger.log("个人信息响应数据:", res);
if (res && res.code === proto.cs.EnmRetCode.SUCCESS) { if (res && res.code === proto.cs.EnmRetCode.SUCCESS) {
const resData = res.data; const resData = res.data;
const walletData = DataManager.I.getDataById<WalletData>(DataId.Wallet); const walletData = DataManager.I.getDataById<WalletData>(DataId.Wallet);
@@ -22,6 +22,8 @@ import LanguageUtils from "../../../Main/Common/LanguageUtils";
import { ImagePopup } from "../components/ImagePopup"; import { ImagePopup } from "../components/ImagePopup";
import { TipsPanel } from "./TipsPanel"; import { TipsPanel } from "./TipsPanel";
import ResManager from "../../../Main/Manager/ResManager"; import ResManager from "../../../Main/Manager/ResManager";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@ccclass("PopupGirlDetailPanel") @ccclass("PopupGirlDetailPanel")
@@ -115,7 +117,7 @@ export class PopupGirlDetailPanel extends li_BaseView {
} }
async buyCharacter() { async buyCharacter() {
// 购买id为girlId的女生 // 购买id为girlId的女生
console.log(this.girlId + "---" + this.resId); logger.log(this.girlId + "---" + this.resId);
// 请求解锁 // 请求解锁
const reqData = { const reqData = {
@@ -124,7 +126,7 @@ export class PopupGirlDetailPanel extends li_BaseView {
type: this.type, type: this.type,
}; };
let res = await GirlService.I.reqUnlockGirlRes(reqData); let res = await GirlService.I.reqUnlockGirlRes(reqData);
console.log("请求解锁资源响应数据:", res); logger.log("请求解锁资源响应数据:", res);
if (res && res.code === proto.cs.EnmRetCode.SUCCESS) { if (res && res.code === proto.cs.EnmRetCode.SUCCESS) {
const resData = res.data; const resData = res.data;
// 保存数据 // 保存数据
@@ -15,6 +15,7 @@ import proto from "db://assets/Scripts/proto/proto.pb.js";
import { NavigationManager, PanelType } from "../../manager/NavigationManager"; import { NavigationManager, PanelType } from "../../manager/NavigationManager";
import { Web3PopPanel } from "./Web3PopPanel"; import { Web3PopPanel } from "./Web3PopPanel";
import { TipsPanel } from "./TipsPanel"; import { TipsPanel } from "./TipsPanel";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@@ -255,7 +256,7 @@ export class PurchasePanel extends li_BaseView {
girlId: 0, girlId: 0,
}; };
let res = await ShopService.I.reqBuyGood(reqData); let res = await ShopService.I.reqBuyGood(reqData);
console.log("请求使用余额购买商品的响应数据:", res); logger.log("请求使用余额购买商品的响应数据:", res);
if (res && res.code === proto.cs.EnmRetCode.SUCCESS) { if (res && res.code === proto.cs.EnmRetCode.SUCCESS) {
const resData = res.data; const resData = res.data;
// 保存数据 // 保存数据
@@ -276,16 +277,16 @@ export class PurchasePanel extends li_BaseView {
network, network,
}; };
let res = await PaymentService.I.startPayment(reqData); let res = await PaymentService.I.startPayment(reqData);
console.log("支付完成的响应数据:", res); logger.log("支付完成的响应数据:", res);
if (res) { if (res) {
let status = res.status; let status = res.status;
if (status === -1) { if (status === -1) {
console.log("支付失败!!!,错误码:", res.retCode); logger.log("支付失败!!!,错误码:", res.retCode);
const key = "error_code_" + res.retCode; const key = "error_code_" + res.retCode;
TipsPanel.show(LanguageUtils.getText(key)); TipsPanel.show(LanguageUtils.getText(key));
} else if (status === 0) { } else if (status === 0) {
console.log("支付成功!!!"); logger.log("支付成功!!!");
const walletData = DataManager.I.getDataById<WalletData>(DataId.Wallet); const walletData = DataManager.I.getDataById<WalletData>(DataId.Wallet);
walletData.balance = Number(res.balance); walletData.balance = Number(res.balance);
walletData.vipExpire = Number(res.vipExpire); walletData.vipExpire = Number(res.vipExpire);
@@ -22,6 +22,7 @@ import { ConfigManager } from "../../manager/ConfigManager";
import LanguageUtils from "../../../Main/Common/LanguageUtils"; import LanguageUtils from "../../../Main/Common/LanguageUtils";
import { Dialog } from "../../data/DialogData"; import { Dialog } from "../../data/DialogData";
import { InnerMsgCode } from "../../../Main/Config/InnerMsgCode"; import { InnerMsgCode } from "../../../Main/Config/InnerMsgCode";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@@ -132,7 +133,7 @@ export class RecordPanel extends li_BaseView {
this.allMessages = ChatHistoryManager.Instance.loadHistory(this.id); this.allMessages = ChatHistoryManager.Instance.loadHistory(this.id);
if (this.allMessages.length === 0) { if (this.allMessages.length === 0) {
console.log(`No chat history found for role ${this.id}`); logger.log(`No chat history found for role ${this.id}`);
this.updateLoadMoreBtn(); this.updateLoadMoreBtn();
return; return;
} }
@@ -170,7 +171,7 @@ export class RecordPanel extends li_BaseView {
// 添加到已显示的消息列表 // 添加到已显示的消息列表
this.displayedMessages.push(...newDialogs); this.displayedMessages.push(...newDialogs);
console.log( logger.log(
`Loaded page ${this.currentPage + 1}, showing ${ `Loaded page ${this.currentPage + 1}, showing ${
this.displayedMessages.length this.displayedMessages.length
}/${this.allMessages.length} messages` }/${this.allMessages.length} messages`
@@ -234,7 +235,7 @@ export class RecordPanel extends li_BaseView {
*/ */
public clearHistory() { public clearHistory() {
ChatHistoryManager.Instance.clearHistory(this.id); ChatHistoryManager.Instance.clearHistory(this.id);
console.log(`Cleared chat history for role ${this.id}`); logger.log(`Cleared chat history for role ${this.id}`);
// 重置数据 // 重置数据
this.allMessages = []; this.allMessages = [];
@@ -18,6 +18,8 @@ import { GButton } from "db://assets/Scripts/Main/Common/GButton";
import { SceneBgVideoLayer } from "../../../Sub/UI/SceneBgVideoLayer"; import { SceneBgVideoLayer } from "../../../Sub/UI/SceneBgVideoLayer";
import { DataManager, DataId } from "../../data/DataManager"; import { DataManager, DataId } from "../../data/DataManager";
import { EnvData } from "../../data/EnvData"; import { EnvData } from "../../data/EnvData";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
interface ShowPanelData { interface ShowPanelData {
@@ -139,7 +141,7 @@ export class ShowPanel extends li_BaseView {
const scale = Math.max(scaleX, scaleY); // 填满整个区域 const scale = Math.max(scaleX, scaleY); // 填满整个区域
this.videoPlayer.node.setScale(new Vec3(scale, scale, 1)); this.videoPlayer.node.setScale(new Vec3(scale, scale, 1));
console.log(`ShowPanel: 调整视频缩放到 ${scale}`); logger.log(`ShowPanel: 调整视频缩放到 ${scale}`);
} }
} }
} }
+18 -17
View File
@@ -35,6 +35,7 @@ import proto from "db://assets/Scripts/proto/proto.pb.js";
import GameRootUI from "../../../Main/Common/GameRootUI"; import GameRootUI from "../../../Main/Common/GameRootUI";
import { MainController } from "../../core/MainController"; import { MainController } from "../../core/MainController";
import { GirlListPanel } from "./GirlListPanel"; import { GirlListPanel } from "./GirlListPanel";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@@ -79,7 +80,7 @@ export class ThemePanel extends li_BaseView {
async Show(forceRefresh: boolean = false) { async Show(forceRefresh: boolean = false) {
// 防止重复加载 // 防止重复加载
if (this.isLoading) { if (this.isLoading) {
console.log("[ThemePanel] 已在加载中,等待当前加载完成"); logger.log("[ThemePanel] 已在加载中,等待当前加载完成");
if (this.loadingPromise) { if (this.loadingPromise) {
await this.loadingPromise; await this.loadingPromise;
} }
@@ -123,12 +124,12 @@ export class ThemePanel extends li_BaseView {
// 如果需要强制刷新,先刷新数据 // 如果需要强制刷新,先刷新数据
if (forceRefresh) { if (forceRefresh) {
console.log("[ThemePanel] 开始强制刷新数据"); logger.log("[ThemePanel] 开始强制刷新数据");
await Promise.all([ await Promise.all([
MainController.I.refreshThemeData(), MainController.I.refreshThemeData(),
MainController.I.refreshDailyRecommend(), MainController.I.refreshDailyRecommend(),
]); ]);
console.log("[ThemePanel] 数据刷新完成"); logger.log("[ThemePanel] 数据刷新完成");
// 再次检查是否已被取消 // 再次检查是否已被取消
if (signal.aborted) { if (signal.aborted) {
@@ -138,7 +139,7 @@ export class ThemePanel extends li_BaseView {
// 优先使用MainController中预加载的数据 // 优先使用MainController中预加载的数据
const preloadStatus = MainController.I.getPreloadStatus(); const preloadStatus = MainController.I.getPreloadStatus();
console.log("[ThemePanel] 预加载状态:", preloadStatus); logger.log("[ThemePanel] 预加载状态:", preloadStatus);
// 处理主题数据 // 处理主题数据
await this.handleThemeData(preloadStatus.themeData); await this.handleThemeData(preloadStatus.themeData);
@@ -161,13 +162,13 @@ export class ThemePanel extends li_BaseView {
// 处理商品列表数据 // 处理商品列表数据
await this.handleShopListData(preloadStatus.shopList); await this.handleShopListData(preloadStatus.shopList);
} catch (error) { } catch (error) {
console.error("[ThemePanel] Show操作出错:", error); logger.error("[ThemePanel] Show操作出错:", error);
this._nodeTab.loadingRec.active = false; this._nodeTab.loadingRec.active = false;
// 如果不是取消操作导致的错误,可以考虑显示错误提示 // 如果不是取消操作导致的错误,可以考虑显示错误提示
if (error.message !== "Operation was aborted") { if (error.message !== "Operation was aborted") {
// 这里可以添加错误提示逻辑 // 这里可以添加错误提示逻辑
console.error("[ThemePanel] 数据加载失败,请稍后重试"); logger.error("[ThemePanel] 数据加载失败,请稍后重试");
} }
} finally { } finally {
this.abortController = null; this.abortController = null;
@@ -179,7 +180,7 @@ export class ThemePanel extends li_BaseView {
*/ */
private async handleThemeData(isPreloaded: boolean): Promise<void> { private async handleThemeData(isPreloaded: boolean): Promise<void> {
if (isPreloaded) { if (isPreloaded) {
console.log("[ThemePanel] 使用预加载的主题数据"); logger.log("[ThemePanel] 使用预加载的主题数据");
// 直接使用预加载的数据渲染界面 // 直接使用预加载的数据渲染界面
const themeData = DataManager.I.getDataById<ThemeData>(DataId.Theme); const themeData = DataManager.I.getDataById<ThemeData>(DataId.Theme);
if (themeData && themeData.themes) { if (themeData && themeData.themes) {
@@ -189,7 +190,7 @@ export class ThemePanel extends li_BaseView {
} }
// 如果没有预加载数据,则请求数据 // 如果没有预加载数据,则请求数据
console.log("[ThemePanel] 请求主题数据"); logger.log("[ThemePanel] 请求主题数据");
const reqData = {}; const reqData = {};
let res = await ThemeService.I.reqHallTheme(reqData); let res = await ThemeService.I.reqHallTheme(reqData);
if (res && res.code === proto.cs.EnmRetCode.SUCCESS) { if (res && res.code === proto.cs.EnmRetCode.SUCCESS) {
@@ -220,7 +221,7 @@ export class ThemePanel extends li_BaseView {
*/ */
private async handleDailyRecommendData(isPreloaded: boolean): Promise<void> { private async handleDailyRecommendData(isPreloaded: boolean): Promise<void> {
if (isPreloaded) { if (isPreloaded) {
console.log("[ThemePanel] 使用预加载的每日推荐数据"); logger.log("[ThemePanel] 使用预加载的每日推荐数据");
// 直接使用预加载的数据渲染界面 // 直接使用预加载的数据渲染界面
const girlData = DataManager.I.getDataById<GirlData>(DataId.Girl); const girlData = DataManager.I.getDataById<GirlData>(DataId.Girl);
if (girlData) { if (girlData) {
@@ -230,7 +231,7 @@ export class ThemePanel extends li_BaseView {
} }
// 如果没有预加载数据,则请求数据 // 如果没有预加载数据,则请求数据
console.log("[ThemePanel] 请求每日推荐数据"); logger.log("[ThemePanel] 请求每日推荐数据");
const reqData = {}; const reqData = {};
let res = await GirlService.I.reqDailyRecommend(reqData); let res = await GirlService.I.reqDailyRecommend(reqData);
if (res && res.code === proto.cs.EnmRetCode.SUCCESS) { if (res && res.code === proto.cs.EnmRetCode.SUCCESS) {
@@ -266,13 +267,13 @@ export class ThemePanel extends li_BaseView {
*/ */
private async handleShopListData(isPreloaded: boolean): Promise<void> { private async handleShopListData(isPreloaded: boolean): Promise<void> {
if (isPreloaded) { if (isPreloaded) {
console.log("[ThemePanel] 商品列表数据已预加载"); logger.log("[ThemePanel] 商品列表数据已预加载");
// 数据已经在DataManager中,不需要额外处理 // 数据已经在DataManager中,不需要额外处理
return; return;
} }
// 如果没有预加载数据,则请求数据 // 如果没有预加载数据,则请求数据
console.log("[ThemePanel] 请求商品列表数据"); logger.log("[ThemePanel] 请求商品列表数据");
await this.reqShopList(); await this.reqShopList();
} }
@@ -336,7 +337,7 @@ export class ThemePanel extends li_BaseView {
} }
openMsgBox() { openMsgBox() {
console.log("打开信箱"); logger.log("打开信箱");
} }
// 刷新余额 // 刷新余额
@@ -380,7 +381,7 @@ export class ThemePanel extends li_BaseView {
*/ */
private clearCache(): void { private clearCache(): void {
if (this.cache && this.cache.length > 0) { if (this.cache && this.cache.length > 0) {
console.log(`[ThemePanel] 清理 ${this.cache.length} 个缓存节点`); logger.log(`[ThemePanel] 清理 ${this.cache.length} 个缓存节点`);
for (let i = this.cache.length - 1; i >= 0; i--) { for (let i = this.cache.length - 1; i >= 0; i--) {
if (this.cache[i] && this.cache[i].node && this.cache[i].node.isValid) { if (this.cache[i] && this.cache[i].node && this.cache[i].node.isValid) {
this.cache[i].node.destroy(); this.cache[i].node.destroy();
@@ -394,7 +395,7 @@ export class ThemePanel extends li_BaseView {
* *
*/ */
public onHide(): void { public onHide(): void {
console.log("[ThemePanel] onHide called"); logger.log("[ThemePanel] onHide called");
this.cancelCurrentOperation(); this.cancelCurrentOperation();
} }
@@ -403,14 +404,14 @@ export class ThemePanel extends li_BaseView {
*/ */
private cancelCurrentOperation(): void { private cancelCurrentOperation(): void {
if (this.abortController) { if (this.abortController) {
console.log("[ThemePanel] 取消当前操作"); logger.log("[ThemePanel] 取消当前操作");
this.abortController.abort(); this.abortController.abort();
this.abortController = null; this.abortController = null;
} }
} }
onDestroy(): void { onDestroy(): void {
console.log("[ThemePanel] onDestroy called"); logger.log("[ThemePanel] onDestroy called");
// 取消当前操作 // 取消当前操作
this.cancelCurrentOperation(); this.cancelCurrentOperation();
@@ -11,6 +11,7 @@ import { QRCodeGenerator } from "db://assets/utils/qrcodeGenerator";
import { TipsPanel } from "./TipsPanel"; import { TipsPanel } from "./TipsPanel";
import { SDKManager } from "../../../Main/Channel/SDKManager"; import { SDKManager } from "../../../Main/Channel/SDKManager";
import LanguageUtils from "../../../Main/Common/LanguageUtils"; import LanguageUtils from "../../../Main/Common/LanguageUtils";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@@ -326,7 +327,7 @@ export class Web3PopPanel extends li_BaseView {
} }
private onCountdownExpired(): void { private onCountdownExpired(): void {
console.log("Web3支付倒计时已过期"); logger.log("Web3支付倒计时已过期");
this.disableButtons(); this.disableButtons();
TipsPanel.show("支付时间已过期,请重新发起支付"); TipsPanel.show("支付时间已过期,请重新发起支付");
} }
@@ -7,6 +7,7 @@ import {
isValid, isValid,
Node, Node,
} from "cc"; } from "cc";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass } = _decorator; const { ccclass } = _decorator;
@@ -28,12 +29,12 @@ export class ParentResize extends Component {
this.uiTransform = this.getComponent(UITransform); this.uiTransform = this.getComponent(UITransform);
if (!this.sprite) { if (!this.sprite) {
console.warn("ParentResize: 未找到 Sprite 组件"); logger.warn("ParentResize: 未找到 Sprite 组件");
return; return;
} }
if (!this.uiTransform) { if (!this.uiTransform) {
console.warn("ParentResize: 未找到 UITransform 组件"); logger.warn("ParentResize: 未找到 UITransform 组件");
return; return;
} }
@@ -41,11 +42,11 @@ export class ParentResize extends Component {
if (this.node.parent) { if (this.node.parent) {
this.parentTransform = this.node.parent.getComponent(UITransform); this.parentTransform = this.node.parent.getComponent(UITransform);
if (!this.parentTransform) { if (!this.parentTransform) {
console.warn("ParentResize: 父物体未找到 UITransform 组件"); logger.warn("ParentResize: 父物体未找到 UITransform 组件");
return; return;
} }
} else { } else {
console.warn("ParentResize: 未找到父物体"); logger.warn("ParentResize: 未找到父物体");
return; return;
} }
} }
@@ -119,7 +120,7 @@ export class ParentResize extends Component {
this.lastParentSize.set(0, 0); // 重置上次记录的尺寸 this.lastParentSize.set(0, 0); // 重置上次记录的尺寸
this.adjustToParent(); this.adjustToParent();
} else { } else {
console.warn("ParentResize: 新父物体未找到 UITransform 组件"); logger.warn("ParentResize: 新父物体未找到 UITransform 组件");
} }
} }
} }
@@ -7,6 +7,7 @@ import {
Size, Size,
isValid, isValid,
} from "cc"; } from "cc";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass } = _decorator; const { ccclass } = _decorator;
@@ -27,12 +28,12 @@ export class SpriteResize extends Component {
this.uiTransform = this.getComponent(UITransform); this.uiTransform = this.getComponent(UITransform);
if (!this.sprite) { if (!this.sprite) {
console.warn("SpriteResize: 未找到 Sprite 组件"); logger.warn("SpriteResize: 未找到 Sprite 组件");
return; return;
} }
if (!this.uiTransform) { if (!this.uiTransform) {
console.warn("SpriteResize: 未找到 UITransform 组件"); logger.warn("SpriteResize: 未找到 UITransform 组件");
return; return;
} }
} }
@@ -19,6 +19,7 @@ import { InnerMsgCode } from "../../Main/Config/InnerMsgCode";
import { DataManager, DataId } from "../data/DataManager"; import { DataManager, DataId } from "../data/DataManager";
import { GirlData } from "../data/GirlData"; import { GirlData } from "../data/GirlData";
import { EnvData } from "../data/EnvData"; import { EnvData } from "../data/EnvData";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@@ -148,7 +149,7 @@ export class GirlListItem extends Component {
}); });
const star = girlData.getStar(this.category.toString(), this.id); const star = girlData.getStar(this.category.toString(), this.id);
console.log("好感度:" + star); logger.log("好感度:" + star);
for (let i = 0; i < this.stars.length; i++) { for (let i = 0; i < this.stars.length; i++) {
const element = this.stars[i]; const element = this.stars[i];
if (star > i) { if (star > i) {
+3 -1
View File
@@ -11,6 +11,8 @@ import { InnerMsgCode } from "../../Main/Config/InnerMsgCode";
import { DataManager, DataId } from "../data/DataManager"; import { DataManager, DataId } from "../data/DataManager";
import { ThemeData } from "../data/ThemeData"; import { ThemeData } from "../data/ThemeData";
import { ViewManager } from "../../Main/Manager/ViewManager"; import { ViewManager } from "../../Main/Manager/ViewManager";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@ccclass("ThemeItem") @ccclass("ThemeItem")
@@ -91,7 +93,7 @@ export class ThemeItem extends Component {
return; return;
} }
console.log( logger.log(
"[ThemeItem] Opening GirlListPanel for category:", "[ThemeItem] Opening GirlListPanel for category:",
this.category this.category
); );
+60 -56
View File
@@ -9,6 +9,7 @@
import LanguageUtils from "../../Main/Common/LanguageUtils"; import LanguageUtils from "../../Main/Common/LanguageUtils";
import { TipsPanel } from "../ui/panels/TipsPanel"; import { TipsPanel } from "../ui/panels/TipsPanel";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
export enum ErrorType { export enum ErrorType {
/** API调用错误 */ /** API调用错误 */
@@ -158,54 +159,6 @@ export class ErrorHandler {
); );
} }
/**
*
*/
private logError(errorInfo: ErrorInfo): void {
this.errorLog.push(errorInfo);
// 限制日志大小
if (this.errorLog.length > this.MAX_LOG_SIZE) {
this.errorLog.shift();
}
}
/**
*
*/
private logToConsole(errorInfo: ErrorInfo): void {
const logMessage = `[${errorInfo.type}] ${errorInfo.message}`;
switch (errorInfo.type) {
case ErrorType.API_ERROR:
case ErrorType.NETWORK_ERROR:
console.error(logMessage, errorInfo.details);
break;
case ErrorType.VALIDATION_ERROR:
console.warn(logMessage, errorInfo.details);
break;
default:
console.log(logMessage, errorInfo.details);
}
// 如果有堆栈信息,也输出
if (errorInfo.stack) {
console.error("Stack trace:", errorInfo.stack);
}
}
/**
*
*/
private showUserFriendlyError(errorInfo: ErrorInfo): void {
let userMessage: string;
TipsPanel.show(LanguageUtils.getText("chat_error_code_2005"));
// TODO: 这里应该显示UI提示,比如Toast或对话框
console.log("用户提示:", userMessage);
}
/** /**
* *
*/ */
@@ -229,14 +182,65 @@ export class ErrorHandler {
} }
/** /**
* *
*/ */
public hasCriticalErrors(): boolean { private logError(errorInfo: ErrorInfo): void {
const criticalTypes = [ErrorType.API_ERROR, ErrorType.CONFIG_ERROR]; this.errorLog.push(errorInfo);
return this.errorLog.some(
(error) => // 限制日志大小
criticalTypes.includes(error.type) && if (this.errorLog.length > this.MAX_LOG_SIZE) {
Date.now() - error.timestamp < 60000 // 1分钟内的错误 this.errorLog.shift();
); }
}
/**
*
*/
private logToConsole(errorInfo: ErrorInfo): void {
const logMessage = `[${errorInfo.type}] ${errorInfo.message}`;
switch (errorInfo.type) {
case ErrorType.API_ERROR:
case ErrorType.NETWORK_ERROR:
logger.error(logMessage, errorInfo.details);
break;
case ErrorType.VALIDATION_ERROR:
logger.warn(logMessage, errorInfo.details);
break;
default:
logger.log(logMessage, errorInfo.details);
}
// 如果有堆栈信息,也输出
if (errorInfo.stack) {
logger.error("Stack trace:", errorInfo.stack);
}
}
/**
*
*/
private showUserFriendlyError(errorInfo: ErrorInfo): void {
let userMessage: string;
switch (errorInfo.type) {
case ErrorType.API_ERROR:
userMessage = "AI服务暂时不可用,请稍后再试";
break;
case ErrorType.NETWORK_ERROR:
userMessage = "网络连接失败,请检查网络设置";
break;
case ErrorType.CONFIG_ERROR:
userMessage = "系统配置错误,请联系管理员";
break;
case ErrorType.STORAGE_ERROR:
userMessage = "数据保存失败,请重试";
break;
default:
userMessage = "发生了未知错误,请重试或联系客服";
}
// TODO: 这里应该显示UI提示,比如Toast或对话框
logger.log("用户提示:", userMessage);
} }
} }
@@ -7,6 +7,7 @@ import {
view, view,
UIOpacity, UIOpacity,
} from "cc"; } from "cc";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@@ -33,7 +34,7 @@ export class UITransitionHelper {
callback?: Function callback?: Function
): void { ): void {
if (!node || !node.isValid) { if (!node || !node.isValid) {
console.warn("UITransitionHelper: Invalid node for slideInFromRight"); logger.warn("UITransitionHelper: Invalid node for slideInFromRight");
return; return;
} }
@@ -73,7 +74,7 @@ export class UITransitionHelper {
callback?: Function callback?: Function
): void { ): void {
if (!node || !node.isValid) { if (!node || !node.isValid) {
console.warn("UITransitionHelper: Invalid node for slideOutToLeft"); logger.warn("UITransitionHelper: Invalid node for slideOutToLeft");
return; return;
} }
@@ -115,7 +116,7 @@ export class UITransitionHelper {
callback?: Function callback?: Function
): void { ): void {
if (!node || !node.isValid) { if (!node || !node.isValid) {
console.warn("UITransitionHelper: Invalid node for slideInFromLeft"); logger.warn("UITransitionHelper: Invalid node for slideInFromLeft");
return; return;
} }
@@ -155,7 +156,7 @@ export class UITransitionHelper {
callback?: Function callback?: Function
): void { ): void {
if (!node || !node.isValid) { if (!node || !node.isValid) {
console.warn("UITransitionHelper: Invalid node for slideOutToRight"); logger.warn("UITransitionHelper: Invalid node for slideOutToRight");
return; return;
} }
@@ -197,7 +198,7 @@ export class UITransitionHelper {
callback?: Function callback?: Function
): void { ): void {
if (!node || !node.isValid) { if (!node || !node.isValid) {
console.warn("UITransitionHelper: Invalid node for slideInFromTop"); logger.warn("UITransitionHelper: Invalid node for slideInFromTop");
return; return;
} }
@@ -237,7 +238,7 @@ export class UITransitionHelper {
callback?: Function callback?: Function
): void { ): void {
if (!node || !node.isValid) { if (!node || !node.isValid) {
console.warn("UITransitionHelper: Invalid node for slideOutToTop"); logger.warn("UITransitionHelper: Invalid node for slideOutToTop");
return; return;
} }
@@ -279,7 +280,7 @@ export class UITransitionHelper {
callback?: Function callback?: Function
): void { ): void {
if (!node || !node.isValid) { if (!node || !node.isValid) {
console.warn("UITransitionHelper: Invalid node for slideInFromBottom"); logger.warn("UITransitionHelper: Invalid node for slideInFromBottom");
return; return;
} }
@@ -319,7 +320,7 @@ export class UITransitionHelper {
callback?: Function callback?: Function
): void { ): void {
if (!node || !node.isValid) { if (!node || !node.isValid) {
console.warn("UITransitionHelper: Invalid node for slideOutToBottom"); logger.warn("UITransitionHelper: Invalid node for slideOutToBottom");
return; return;
} }
@@ -361,7 +362,7 @@ export class UITransitionHelper {
callback?: Function callback?: Function
): void { ): void {
if (!node || !node.isValid) { if (!node || !node.isValid) {
console.warn("UITransitionHelper: Invalid node for fadeIn"); logger.warn("UITransitionHelper: Invalid node for fadeIn");
return; return;
} }
@@ -402,7 +403,7 @@ export class UITransitionHelper {
callback?: Function callback?: Function
): void { ): void {
if (!node || !node.isValid) { if (!node || !node.isValid) {
console.warn("UITransitionHelper: Invalid node for fadeOut"); logger.warn("UITransitionHelper: Invalid node for fadeOut");
return; return;
} }
@@ -440,7 +441,7 @@ export class UITransitionHelper {
callback?: Function callback?: Function
): void { ): void {
if (!node || !node.isValid) { if (!node || !node.isValid) {
console.warn("UITransitionHelper: Invalid node for scaleIn"); logger.warn("UITransitionHelper: Invalid node for scaleIn");
return; return;
} }
@@ -471,7 +472,7 @@ export class UITransitionHelper {
callback?: Function callback?: Function
): void { ): void {
if (!node || !node.isValid) { if (!node || !node.isValid) {
console.warn("UITransitionHelper: Invalid node for scaleOut"); logger.warn("UITransitionHelper: Invalid node for scaleOut");
return; return;
} }
@@ -493,7 +494,7 @@ export class UITransitionHelper {
*/ */
public static stopAllTweens(node: Node): void { public static stopAllTweens(node: Node): void {
if (!node || !node.isValid) { if (!node || !node.isValid) {
console.warn("UITransitionHelper: Invalid node for stopAllTweens"); logger.warn("UITransitionHelper: Invalid node for stopAllTweens");
return; return;
} }
@@ -37,8 +37,6 @@ export function initPolyfills(): void {
return obj; return obj;
}; };
//console.log('[Polyfill] structuredClone polyfill loaded');
} }
} }
+8 -6
View File
@@ -1,4 +1,6 @@
import b from "buffer/index.js"; import b from "buffer/index.js";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { Buffer } = b; const { Buffer } = b;
export enum EDeserializeError { export enum EDeserializeError {
@@ -153,7 +155,7 @@ export default class ByteBuf {
return x return x
} }
else if (h < 0xe0) { else if (h < 0xe0) {
// console.log(`== read ${buf.readInt32BE(this._readerIndex)}`) // logger.log(`== read ${buf.readInt32BE(this._readerIndex)}`)
this.ensureRead(3) this.ensureRead(3)
const x = ((h & 0x1f) << 16) | (buf.readUInt16BE(this._readerIndex + 1)) const x = ((h & 0x1f) << 16) | (buf.readUInt16BE(this._readerIndex + 1))
this._readerIndex += 3 this._readerIndex += 3
@@ -161,7 +163,7 @@ export default class ByteBuf {
} }
else if (h < 0xf0) { else if (h < 0xf0) {
this.ensureRead(4) this.ensureRead(4)
// console.log(`== read ${buf.readInt32BE(this._readerIndex)}`) // logger.log(`== read ${buf.readInt32BE(this._readerIndex)}`)
const x = buf.readInt32BE(this._readerIndex) & 0x0fffffff const x = buf.readInt32BE(this._readerIndex) & 0x0fffffff
this._readerIndex += 4 this._readerIndex += 4
return x return x
@@ -194,12 +196,12 @@ export default class ByteBuf {
else if (h < 0xc0) { else if (h < 0xc0) {
this.ensureRead(2) this.ensureRead(2)
const x = buf.readUInt16BE(this._readerIndex) & 0x3fff const x = buf.readUInt16BE(this._readerIndex) & 0x3fff
// console.log(`== read long :${x} index:${this._readerIndex}`) // logger.log(`== read long :${x} index:${this._readerIndex}`)
this._readerIndex += 2 this._readerIndex += 2
return x return x
} }
else if (h < 0xe0) { else if (h < 0xe0) {
// console.log(`== read ${buf.readInt32BE(this._readerIndex)}`) // logger.log(`== read ${buf.readInt32BE(this._readerIndex)}`)
this.ensureRead(3) this.ensureRead(3)
const x = ((h & 0x1f) << 16) | (buf.readUInt16BE(this._readerIndex + 1)) const x = ((h & 0x1f) << 16) | (buf.readUInt16BE(this._readerIndex + 1))
this._readerIndex += 3 this._readerIndex += 3
@@ -207,7 +209,7 @@ export default class ByteBuf {
} }
else if (h < 0xf0) { else if (h < 0xf0) {
this.ensureRead(4) this.ensureRead(4)
// console.log(`== read ${buf.readInt32BE(this._readerIndex)}`) // logger.log(`== read ${buf.readInt32BE(this._readerIndex)}`)
const x = buf.readInt32BE(this._readerIndex) & 0x0fffffff const x = buf.readInt32BE(this._readerIndex) & 0x0fffffff
this._readerIndex += 4 this._readerIndex += 4
return x return x
@@ -304,7 +306,7 @@ export default class ByteBuf {
// TODO 是否要对 < Number.MAX_SAFE_INTEGER 优化处理? // TODO 是否要对 < Number.MAX_SAFE_INTEGER 优化处理?
const xl = buf.readUInt32BE(this._readerIndex + 4) const xl = buf.readUInt32BE(this._readerIndex + 4)
const xh = buf.readUInt32BE(this._readerIndex) & 0xffffff const xh = buf.readUInt32BE(this._readerIndex) & 0xffffff
// console.log(`== read8 ${xl} ${xh}`) // logger.log(`== read8 ${xl} ${xh}`)
this._readerIndex += 8 this._readerIndex += 8
return (BigInt(xh) << BigInt(32)) | BigInt(xl) return (BigInt(xh) << BigInt(32)) | BigInt(xl)
} }
+8 -7
View File
@@ -1,5 +1,6 @@
import { _decorator, Component, Node, Sprite, Label, Button } from 'cc'; import { _decorator, Component, Node, Sprite, Label, Button } from 'cc';
import { QRCodeGenerator } from '../../utils/qrcodeGenerator'; import { QRCodeGenerator } from '../../utils/qrcodeGenerator';
import { logger } from "db://assets/Scripts/Main/Common/Logger";
const { ccclass, property } = _decorator; const { ccclass, property } = _decorator;
@@ -66,7 +67,7 @@ export class QRCodeGeneratorTest extends Component {
this.updateStatus(`✓ 成功生成二维码 (${this.currentIndex + 1}/${this.testTexts.length})`); this.updateStatus(`✓ 成功生成二维码 (${this.currentIndex + 1}/${this.testTexts.length})`);
// 打印一些调试信息 // 打印一些调试信息
console.log('QRCode生成成功:', { logger.log('QRCode生成成功:', {
text: testText, text: testText,
spriteFrame: qrSprite.spriteFrame, spriteFrame: qrSprite.spriteFrame,
size: qrSprite.spriteFrame?.texture?.width + 'x' + qrSprite.spriteFrame?.texture?.height size: qrSprite.spriteFrame?.texture?.width + 'x' + qrSprite.spriteFrame?.texture?.height
@@ -88,10 +89,10 @@ export class QRCodeGeneratorTest extends Component {
// 演示方法3: 生成 Base64 字符串 // 演示方法3: 生成 Base64 字符串
// const base64 = QRCodeGenerator.generateQRCodeBase64(testText, 200, 8); // const base64 = QRCodeGenerator.generateQRCodeBase64(testText, 200, 8);
// console.log('QRCode Base64:', base64.substring(0, 100) + '...'); // logger.log('QRCode Base64:', base64.substring(0, 100) + '...');
} catch (error) { } catch (error) {
console.error('QRCode生成测试失败:', error); logger.error('QRCode生成测试失败:', error);
this.updateStatus('✗ 生成失败: ' + error.message); this.updateStatus('✗ 生成失败: ' + error.message);
} }
} }
@@ -100,7 +101,7 @@ export class QRCodeGeneratorTest extends Component {
if (this.statusLabel) { if (this.statusLabel) {
this.statusLabel.string = message; this.statusLabel.string = message;
} }
console.log('QRCodeTest:', message); logger.log('QRCodeTest:', message);
} }
/** /**
@@ -109,17 +110,17 @@ export class QRCodeGeneratorTest extends Component {
public static createQRCodeExample() { public static createQRCodeExample() {
// 示例1: 生成网址二维码(异步) // 示例1: 生成网址二维码(异步)
QRCodeGenerator.generateQRCodeSprite('https://www.example.com', 256, 4, (urlQR) => { QRCodeGenerator.generateQRCodeSprite('https://www.example.com', 256, 4, (urlQR) => {
console.log('URL二维码生成完成:', urlQR); logger.log('URL二维码生成完成:', urlQR);
}); });
// 示例2: 生成文本二维码,自定义尺寸(异步) // 示例2: 生成文本二维码,自定义尺寸(异步)
QRCodeGenerator.generateQRCodeSpriteFrame('Hello World!', 300, 10, (textQR) => { QRCodeGenerator.generateQRCodeSpriteFrame('Hello World!', 300, 10, (textQR) => {
console.log('文本二维码生成完成:', textQR); logger.log('文本二维码生成完成:', textQR);
}); });
// 示例3: 生成Base64格式二维码(同步) // 示例3: 生成Base64格式二维码(同步)
const base64QR = QRCodeGenerator.generateQRCodeBase64('测试数据', 150, 5); const base64QR = QRCodeGenerator.generateQRCodeBase64('测试数据', 150, 5);
console.log('Base64二维码生成完成:', base64QR.substring(0, 100) + '...'); logger.log('Base64二维码生成完成:', base64QR.substring(0, 100) + '...');
return { message: '二维码生成中,请查看控制台日志' }; return { message: '二维码生成中,请查看控制台日志' };
} }
+13 -12
View File
@@ -1,5 +1,6 @@
import { Sprite, SpriteFrame, Texture2D, ImageAsset, Node } from 'cc'; import { Sprite, SpriteFrame, Texture2D, ImageAsset, Node } from 'cc';
import qrcode from 'qrcode-generator'; import qrcode from 'qrcode-generator';
import { logger } from "db://assets/Scripts/Main/Common/Logger";
/** /**
* *
@@ -17,7 +18,7 @@ export class QRCodeGenerator {
public static generateQRCodeSprite(text: string, size: number = 256, margin: number = 4, callback?: (sprite: Sprite | null) => void): void { public static generateQRCodeSprite(text: string, size: number = 256, margin: number = 4, callback?: (sprite: Sprite | null) => void): void {
try { try {
if (!text || text.trim().length === 0) { if (!text || text.trim().length === 0) {
console.error('QRCodeGenerator: 文本内容不能为空'); logger.error('QRCodeGenerator: 文本内容不能为空');
callback && callback(null); callback && callback(null);
return; return;
} }
@@ -36,12 +37,12 @@ export class QRCodeGenerator {
callback && callback(sprite); callback && callback(sprite);
} catch (error) { } catch (error) {
console.error('QRCodeGenerator: 创建Sprite组件失败', error); logger.error('QRCodeGenerator: 创建Sprite组件失败', error);
callback && callback(null); callback && callback(null);
} }
}); });
} catch (error) { } catch (error) {
console.error('QRCodeGenerator: 生成二维码Sprite失败', error); logger.error('QRCodeGenerator: 生成二维码Sprite失败', error);
callback && callback(null); callback && callback(null);
} }
} }
@@ -56,13 +57,13 @@ export class QRCodeGenerator {
public static generateQRCodeSpriteFrame(text: string, size: number = 256, margin: number = 4, callback?: (spriteFrame: SpriteFrame | null) => void): void { public static generateQRCodeSpriteFrame(text: string, size: number = 256, margin: number = 4, callback?: (spriteFrame: SpriteFrame | null) => void): void {
try { try {
if (!text || text.trim().length === 0) { if (!text || text.trim().length === 0) {
console.error('QRCodeGenerator: 文本内容不能为空'); logger.error('QRCodeGenerator: 文本内容不能为空');
callback && callback(null); callback && callback(null);
return; return;
} }
if (size <= 0 || size > 2048) { if (size <= 0 || size > 2048) {
console.error('QRCodeGenerator: 尺寸必须在1-2048之间'); logger.error('QRCodeGenerator: 尺寸必须在1-2048之间');
callback && callback(null); callback && callback(null);
return; return;
} }
@@ -83,7 +84,7 @@ export class QRCodeGenerator {
const ctx = canvas.getContext('2d'); const ctx = canvas.getContext('2d');
if (!ctx) { if (!ctx) {
console.error('QRCodeGenerator: 无法获取Canvas上下文'); logger.error('QRCodeGenerator: 无法获取Canvas上下文');
callback && callback(null); callback && callback(null);
return; return;
} }
@@ -124,13 +125,13 @@ export class QRCodeGenerator {
callback && callback(spriteFrame); callback && callback(spriteFrame);
} catch (error) { } catch (error) {
console.error('QRCodeGenerator: 创建纹理失败', error); logger.error('QRCodeGenerator: 创建纹理失败', error);
callback && callback(null); callback && callback(null);
} }
}; };
img.onerror = () => { img.onerror = () => {
console.error('QRCodeGenerator: 图片加载失败'); logger.error('QRCodeGenerator: 图片加载失败');
callback && callback(null); callback && callback(null);
}; };
@@ -138,7 +139,7 @@ export class QRCodeGenerator {
img.src = canvas.toDataURL('image/png'); img.src = canvas.toDataURL('image/png');
} catch (error) { } catch (error) {
console.error('QRCodeGenerator: 生成二维码SpriteFrame失败', error); logger.error('QRCodeGenerator: 生成二维码SpriteFrame失败', error);
callback && callback(null); callback && callback(null);
} }
} }
@@ -153,7 +154,7 @@ export class QRCodeGenerator {
public static generateQRCodeBase64(text: string, size: number = 256, margin: number = 4): string { public static generateQRCodeBase64(text: string, size: number = 256, margin: number = 4): string {
try { try {
if (!text || text.trim().length === 0) { if (!text || text.trim().length === 0) {
console.error('QRCodeGenerator: 文本内容不能为空'); logger.error('QRCodeGenerator: 文本内容不能为空');
return ''; return '';
} }
@@ -173,7 +174,7 @@ export class QRCodeGenerator {
const ctx = canvas.getContext('2d'); const ctx = canvas.getContext('2d');
if (!ctx) { if (!ctx) {
console.error('QRCodeGenerator: 无法获取Canvas上下文'); logger.error('QRCodeGenerator: 无法获取Canvas上下文');
return ''; return '';
} }
@@ -199,7 +200,7 @@ export class QRCodeGenerator {
// 返回Base64字符串 // 返回Base64字符串
return canvas.toDataURL('image/png'); return canvas.toDataURL('image/png');
} catch (error) { } catch (error) {
console.error('QRCodeGenerator: 生成二维码Base64失败', error); logger.error('QRCodeGenerator: 生成二维码Base64失败', error);
return ''; return '';
} }
} }