日志控制
This commit is contained in:
@@ -64,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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -89,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)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -362,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);
|
||||||
|
|||||||
@@ -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) => {
|
||||||
|
|||||||
@@ -95,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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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密钥 */
|
||||||
@@ -60,7 +61,7 @@ export class ApiConfig {
|
|||||||
).getTimeout(), // 30秒
|
).getTimeout(), // 30秒
|
||||||
};
|
};
|
||||||
|
|
||||||
//console.warn(this.config.apiKey);
|
//logger.warn(this.config.apiKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -97,7 +98,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");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,11 +111,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;
|
||||||
|
|||||||
@@ -269,7 +269,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
|
||||||
);
|
);
|
||||||
|
|||||||
@@ -357,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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -508,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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -354,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";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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 {
|
||||||
@@ -69,7 +70,7 @@ export class AiCharacterData extends BaseData {
|
|||||||
try {
|
try {
|
||||||
parsed = JSON.parse(data.data);
|
parsed = JSON.parse(data.data);
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.warn("AiCharacterData JSON 解析失败", e);
|
logger.warn("AiCharacterData JSON 解析失败", e);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// 解析数据
|
// 解析数据
|
||||||
|
|||||||
@@ -108,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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -124,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
|
||||||
);
|
);
|
||||||
@@ -208,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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -92,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);
|
||||||
}
|
}
|
||||||
@@ -108,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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -127,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},将覆盖旧构造器`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -147,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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -316,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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -335,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;
|
||||||
@@ -352,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}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -646,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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -676,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);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@@ -700,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} 不在子页面列表中`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -734,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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -748,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;
|
||||||
|
|||||||
@@ -308,7 +308,7 @@ export class ChatPanel extends li_BaseView implements IChatPanelCallback {
|
|||||||
|
|
||||||
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
|
||||||
@@ -472,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);
|
||||||
// 出错时加载动画会被自动移除,可以在这里显示错误提示给用户
|
// 出错时加载动画会被自动移除,可以在这里显示错误提示给用户
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -133,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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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 '';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user