This commit is contained in:
dgflash
2022-06-21 17:43:50 +08:00
parent bdfa76cae1
commit 13a494d767
12 changed files with 1 additions and 510 deletions

View File

@@ -1,12 +0,0 @@
{
"ver": "1.1.0",
"importer": "directory",
"imported": true,
"uuid": "2a22fa08-80f3-4145-8197-bd0b1cbb129a",
"files": [],
"subMetas": {},
"userData": {
"compressionType": {},
"isRemoteBundle": {}
}
}

View File

@@ -1,16 +0,0 @@
{
"ver": "4.0.1",
"importer": "typescript",
"imported": true,
"uuid": "5d11cc2e-27a7-4103-b91b-03989400c84e",
"files": [
".js",
".trans"
],
"subMetas": {},
"userData": {
"importAsPlugin": false,
"moduleId": "project:///assets/script/core/event/AnimationEvent.js",
"importerSettings": 3
}
}

View File

@@ -1,15 +0,0 @@
/*
* @Author: dgflash
* @Date: 2021-07-03 16:13:17
* @LastEditors: dgflash
* @LastEditTime: 2022-01-27 10:05:12
*/
/** ---------- 全局消息事件 ---------- */
export enum EngineMessage {
/** 中途退出游戏后,再进入游戏 */
GAME_ENTER = "EngineMessage.GAME_ENTER",
/** 中途退出游戏 */
GAME_EXIT = "EngineMessage.GAME_EXIT",
/** 游戏尺寸修改事件 */
GAME_RESIZE = "EngineMessage.GAME_RESIZE"
}

View File

@@ -1,13 +0,0 @@
{
"ver": "4.0.23",
"importer": "typescript",
"imported": true,
"uuid": "7f50140e-d51c-4c81-aefb-4f89562e25ba",
"files": [],
"subMetas": {},
"userData": {
"moduleId": "project:///assets/script/core/event/EngineMessage.js",
"importerSettings": 4,
"simulateGlobals": []
}
}

View File

@@ -1,54 +0,0 @@
import { MessageEventData } from "./MessageManager";
/*
* 事件对象基类,继承该类将拥有发送和接送事件的能力
*/
export class EventDispatcher {
protected _msg: MessageEventData | null = null;
/**
* 注册全局事件
* @param event(string) 事件名
* @param listener(function) 处理事件的侦听器函数
* @param thisObj(object) 侦听函数绑定的this对象
*/
public on(event: string, listener: (event: string, args: any) => void, thisObj: any) {
if (this._msg == null) {
this._msg = new MessageEventData();
}
this._msg.on(event, listener, thisObj);
}
/**
* 移除全局事件
* @param event(string) 事件名
* @param listener(function) 处理事件的侦听器函数
* @param thisObj(object) 侦听函数绑定的this对象
*/
public off(event: string) {
if (this._msg) {
this._msg.off(event);
}
}
/**
* 触发全局事件
* @param event(string) 事件名
* @param arg(Array) 事件参数
*/
public dispatchEvent(event: string, arg: any = null) {
if (this._msg == null) {
this._msg = new MessageEventData();
}
this._msg.dispatchEvent(event, arg);
}
/**
* 销毁事件对象
*/
public destroy() {
if (this._msg) {
this._msg.removes();
}
this._msg = null;
}
}

View File

@@ -1,13 +0,0 @@
{
"ver": "4.0.23",
"importer": "typescript",
"imported": true,
"uuid": "e718e259-c64b-49fb-b01f-9b2a2f2b0e6c",
"files": [],
"subMetas": {},
"userData": {
"moduleId": "project:///assets/script/core/event/EventDispatcher.js",
"importerSettings": 4,
"simulateGlobals": []
}
}

View File

@@ -1,153 +0,0 @@
import { Logger } from "../log/Logger";
class EventData {
public event!: string;
public listener!: (event: string, args: any) => void;
public obj: any;
}
/**
* 批量注册、移除全局事件对象
*/
export class MessageEventData {
private events: any = {};
on(event: string, listener: (event: string, args: any) => void, thisObj: object) {
let list: Array<EventData> = this.events[event];
if (list == null) {
list = [];
this.events[event] = list;
}
let data: EventData = new EventData();
data.event = event;
data.listener = listener;
data.obj = thisObj;
list.push(data);
Message.on(event, listener, thisObj);
}
off(event: string) {
let ebs: Array<EventData> = this.events[event];
if (!ebs) {
return;
}
for (let eb of ebs) {
Message.off(event, eb.listener, eb.obj);
}
delete this.events[event];
}
dispatchEvent(event: string, arg: any = null) {
Message.dispatchEvent(event, arg);
}
removes() {
for (let event in this.events) {
this.off(event);
}
}
}
class MessageManager {
public static readonly Instance: MessageManager = new MessageManager();
private events: any = {};
/**
* 注册全局事件
* @param event(string) 事件名
* @param listener(function) 处理事件的侦听器函数
* @param thisObj(object) 侦听函数绑定的this对象
*/
on(event: string, listener: (event: string, args: any) => void, thisObj: object) {
if (!event || !listener) {
Logger.warning(`注册【${event}】事件的侦听器函数为空`);
return;
}
let list: Array<EventData> = this.events[event];
if (list == null) {
list = [];
this.events[event] = list;
}
let length = list.length;
for (let i = 0; i < length; i++) {
let bin = list[i];
if (bin.listener == listener && bin.obj == thisObj) {
Logger.warning(`名为【${event}】的事件重复注册侦听器`);
}
}
let data: EventData = new EventData();
data.event = event;
data.listener = listener;
data.obj = thisObj;
list.push(data);
}
/**
* 监听一次事件,事件响应后,该监听自动移除
* @param event
* @param listener
* @param thisObj
*/
once(event: string, listener: (event: string, args: any) => void, thisObj: object) {
let _listener: any = ($event: string, $args: any) => {
this.off(event, _listener, thisObj);
_listener = null;
listener.call(thisObj, $event, $args);
}
this.on(event, _listener, thisObj);
}
/**
* 移除全局事件
* @param event(string) 事件名
* @param listener(function) 处理事件的侦听器函数
* @param thisObj(object) 侦听函数绑定的this对象
*/
off(event: string, listener: Function, thisObj: object) {
let list: Array<EventData> = this.events[event];
if (!list) {
Logger.warning(`名为【${event}】的事件不存在`);
return;
}
let length = list.length;
for (let i = 0; i < length; i++) {
let bin: EventData = list[i];
if (bin.listener == listener && bin.obj == thisObj) {
list.splice(i, 1);
break;
}
}
if (list.length == 0) {
delete this.events[event];
}
}
/**
* 触发全局事件
* @param event(string) 事件名
* @param arg(any) 事件参数
*/
dispatchEvent(event: string, arg: any = null) {
let list: Array<EventData> = this.events[event];
if (list != null) {
let temp: Array<EventData> = list.concat();
let length = temp.length;
for (let i = 0; i < length; i++) {
let eventBin = temp[i];
eventBin.listener.call(eventBin.obj, event, arg);
}
}
}
}
export const Message = MessageManager.Instance;

View File

@@ -1,13 +0,0 @@
{
"ver": "4.0.23",
"importer": "typescript",
"imported": true,
"uuid": "6ace47f5-502c-428e-a7b2-bdfbc4260c8d",
"files": [],
"subMetas": {},
"userData": {
"moduleId": "project:///assets/script/core/event/MessageManager.js",
"importerSettings": 4,
"simulateGlobals": []
}
}

View File

@@ -1,12 +0,0 @@
{
"ver": "1.1.0",
"importer": "directory",
"imported": true,
"uuid": "a1165588-934d-4c97-8fca-9f3547564f02",
"files": [],
"subMetas": {},
"userData": {
"compressionType": {},
"isRemoteBundle": {}
}
}

View File

@@ -1,199 +0,0 @@
import { error, log, warn } from "cc";
export enum LogType {
/** 网络层日志 */
Net = 1,
/** 数据结构层日志 */
Model = 2,
/** 业务逻辑层日志 */
Business = 4,
/** 视图层日志 */
View = 8,
/** 配置数据 */
Config = 16,
/** 登录日志 */
Trace = 32,
}
/** 日志管理 */
export class Logger {
private static tags: number = 0;
public static init(): void {
this.tags =
LogType.Net |
LogType.Model |
LogType.Business |
LogType.View |
LogType.Config |
LogType.Trace;
}
/** 开始计时 */
public static start(): void {
console.time("Time");
}
/** 打印范围内时间消耗 */
public static end(): void {
console.timeEnd("Time");
}
/** 打印表格 */
public static table(msg: any, describe?: string): void {
if (!this.isOpen(LogType.Trace)) {
return;
}
console.table(msg);
}
/** 无颜色日志 */
public static trace(msg: any, describe?: string) {
this.print(LogType.Trace, msg, "", describe)
}
/** 网络层数据日志 */
public static logNet(msg: any, describe?: string) {
this.orange(LogType.Net, msg, describe);
}
/** 客户端数据结构层日志 */
public static logModel(msg: any, describe?: string) {
this.violet(LogType.Model, msg, describe);
}
/** 客户端数据结构层日志 */
public static logBusiness(msg: any, describe?: string) {
this.blue(LogType.Business, msg, describe);
}
/** 客户端数据结构层日志 */
public static logView(msg: any, describe?: string) {
this.green(LogType.View, msg, describe);
}
/** 客户端配置数据 */
public static logConfig(msg: any, describe?: string) {
this.gray(LogType.Config, msg, describe);
}
public static erroring(msg: string) {
error('[ERROR]' + msg);
}
public static warning(msg: string) {
warn('[WARN]:' + msg);
}
// 橙色
public static orange(tag: LogType, msg: any, describe?: string) {
this.print(tag, msg, "color:#ee7700;", describe)
}
// 紫色
public static violet(tag: LogType, msg: any, describe?: string) {
this.print(tag, msg, "color:Violet;", describe)
}
// 蓝色
public static blue(tag: LogType, msg: any, describe?: string) {
this.print(tag, msg, "color:#3a5fcd;", describe)
}
// 绿色
public static green(tag: LogType, msg: any, describe?: string) {
this.print(tag, msg, "color:green;", describe)
}
// 灰色
public static gray(tag: LogType, msg: any, describe?: string) {
this.print(tag, msg, "color:gray;", describe)
}
private static isOpen(tag: LogType): boolean {
return (this.tags & tag) != 0;
}
public static print(tag: LogType, msg: any, color: string, describe?: string) {
// 标记没有打开,不打印该日志
if (!this.isOpen(tag)) {
return;
}
var backLog = console.log || log;
if (describe) {
backLog.call(null, "%c%s%s%s:%s%o", color, this.getDateString(), '[' + tag + ']', this.stack(5), describe, msg);
}
else {
backLog.call(null, "%c%s%s%s:%o", color, this.getDateString(), '[' + tag + ']', this.stack(5), msg);
}
}
private static stack(index: number): string {
var e = new Error();
var lines = e.stack!.split("\n");
var result: Array<any> = [];
lines.forEach((line) => {
line = line.substring(7);
var lineBreak = line.split(" ");
if (lineBreak.length < 2) {
result.push(lineBreak[0]);
}
else {
result.push({ [lineBreak[0]]: lineBreak[1] });
}
});
var list: string[] = [];
var splitList: Array<string> = [];
if (index < result.length - 1) {
var value: string;
for (var a in result[index]) {
var splitList = a.split(".");
if (splitList.length == 2) {
list = splitList.concat();
}
else {
value = result[index][a];
var start = value!.lastIndexOf("/");
var end = value!.lastIndexOf(".");
if (start > -1 && end > -1) {
var r = value!.substring(start + 1, end);
list.push(r);
}
else {
list.push(value);
}
}
}
}
if (list.length == 1) {
return "[" + list[0] + ".ts]";
}
else if (list.length == 2) {
return "[" + list[0] + ".ts->" + list[1] + "]";
}
return "";
}
public static getDateString(): string {
let d = new Date();
let str = d.getHours().toString();
let timeStr = "";
timeStr += (str.length == 1 ? "0" + str : str) + ":";
str = d.getMinutes().toString();
timeStr += (str.length == 1 ? "0" + str : str) + ":";
str = d.getSeconds().toString();
timeStr += (str.length == 1 ? "0" + str : str) + ":";
str = d.getMilliseconds().toString();
if (str.length == 1) str = "00" + str;
if (str.length == 2) str = "0" + str;
timeStr += str;
timeStr = "[" + timeStr + "]";
return timeStr;
}
}
Logger.init();

View File

@@ -1,9 +0,0 @@
{
"ver": "4.0.23",
"importer": "typescript",
"imported": true,
"uuid": "79a44851-f674-4a13-9a83-2a0b2cdc41eb",
"files": [],
"subMetas": {},
"userData": {}
}

View File

@@ -1,5 +1,5 @@
import { Component } from "cc";
import { EventDispatcher } from "../event/EventDispatcher";
import { EventDispatcher } from "../common/event/EventDispatcher";
export const guid = function () {
let guid: string = "";