mirror of
https://github.com/Gongxh0901/kunpolibrary
synced 2025-11-05 05:45:48 +00:00
添加内部属性标记
This commit is contained in:
@@ -80,6 +80,7 @@ export class Binary {
|
||||
* @param view DataView对象
|
||||
* @param offset 当前偏移量
|
||||
* @returns 下一个数据的偏移量
|
||||
* @internal
|
||||
*/
|
||||
private static validateBinaryFormat(view: DataView, offset: number): number {
|
||||
const type = view.getUint8(offset);
|
||||
@@ -118,6 +119,7 @@ export class Binary {
|
||||
}
|
||||
}
|
||||
|
||||
/** @internal */
|
||||
private static readValue(view: DataView, offset: number): any {
|
||||
const type = view.getUint8(offset++);
|
||||
|
||||
@@ -166,6 +168,7 @@ export class Binary {
|
||||
}
|
||||
}
|
||||
|
||||
/** @internal */
|
||||
private static writeValue(value: any, chunks: Uint8Array[]): void {
|
||||
if (value === null) {
|
||||
chunks.push(new Uint8Array([0]));
|
||||
@@ -235,6 +238,7 @@ export class Binary {
|
||||
}
|
||||
}
|
||||
|
||||
/** @internal */
|
||||
private static getNextOffset(view: DataView, offset: number): number {
|
||||
const type = view.getUint8(offset);
|
||||
switch (type) {
|
||||
|
||||
@@ -11,8 +11,11 @@ export abstract class HeapNode {
|
||||
|
||||
|
||||
export class BinaryHeap<T extends HeapNode> {
|
||||
/** @internal */
|
||||
private _nodes: Array<T>;
|
||||
/** @internal */
|
||||
private _size: number;
|
||||
/** @internal */
|
||||
private _capacity: number;
|
||||
|
||||
constructor(capacity: number) {
|
||||
@@ -132,6 +135,7 @@ export class BinaryHeap<T extends HeapNode> {
|
||||
return true;
|
||||
}
|
||||
|
||||
/** @internal */
|
||||
private _parent(index: number): number {
|
||||
return (index - 1) >> 1;
|
||||
}
|
||||
@@ -144,6 +148,7 @@ export class BinaryHeap<T extends HeapNode> {
|
||||
return this._size == 0;
|
||||
}
|
||||
|
||||
/** @internal */
|
||||
private _sortUp(node: T, index: number): void {
|
||||
let parentIndex = this._parent(index);
|
||||
const nodes = this._nodes;
|
||||
@@ -159,6 +164,7 @@ export class BinaryHeap<T extends HeapNode> {
|
||||
nodes[index] = node;
|
||||
}
|
||||
|
||||
/** @internal */
|
||||
private _sortDown(node: T, index: number): void {
|
||||
let childIndex = (index << 1) + 1;
|
||||
const nodes = this._nodes;
|
||||
|
||||
@@ -25,8 +25,11 @@ export class DoublyNode<T> extends LinkedNode<T> {
|
||||
|
||||
/** 单向链表 */
|
||||
export class LinkedList<T> {
|
||||
/** @internal */
|
||||
protected _equalsFn: (a: T, b: T) => boolean;
|
||||
/** @internal */
|
||||
protected _count: number;
|
||||
/** @internal */
|
||||
protected _head: LinkedNode<T>;
|
||||
/**
|
||||
* create
|
||||
@@ -172,7 +175,9 @@ export class LinkedList<T> {
|
||||
|
||||
/** 双向链表 */
|
||||
export class DoublyLinkedList<T> extends LinkedList<T> {
|
||||
/** @internal */
|
||||
protected _head: DoublyNode<T>; // 重新定义 head 类型
|
||||
/** @internal */
|
||||
protected _tail: DoublyNode<T>;
|
||||
/**
|
||||
* create
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { DoublyLinkedList } from "./LinkedList";
|
||||
|
||||
export class Stack<T> {
|
||||
/** @internal */
|
||||
private _items: DoublyLinkedList<T>;
|
||||
constructor(equalsFn?: (a: T, b: T) => boolean) {
|
||||
this._items = new DoublyLinkedList<T>(equalsFn);
|
||||
|
||||
@@ -44,4 +44,27 @@ export class MathTool {
|
||||
}
|
||||
return out;
|
||||
}
|
||||
|
||||
/**
|
||||
* 内部使用的辅助方法,用于计算平滑过渡的因子
|
||||
* @internal
|
||||
*/
|
||||
public static calculateSmoothFactor(elapsedTime: number, responseTime: number): number {
|
||||
return elapsedTime / (elapsedTime + responseTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* 内部使用的工具方法,不应该在库外部使用
|
||||
* @internal
|
||||
*/
|
||||
public static internalRoundToDecimal(value: number, decimals: number): number {
|
||||
const factor = Math.pow(10, decimals);
|
||||
return Math.round(value * factor) / factor;
|
||||
}
|
||||
|
||||
/**
|
||||
* 内部使用的辅助常量
|
||||
* @internal
|
||||
*/
|
||||
public static readonly INTERNAL_EPSILON = 0.00001;
|
||||
}
|
||||
@@ -11,16 +11,28 @@ import { log } from "./log";
|
||||
let TimeCache: Date = null;
|
||||
|
||||
export class Time {
|
||||
/** 游戏系统启动时间戳 */
|
||||
/**
|
||||
* 游戏系统启动时间戳
|
||||
* @internal
|
||||
*/
|
||||
private static _osBootTime: number = 0;
|
||||
|
||||
/** 主动设置的网络时间 单位ms */
|
||||
/**
|
||||
* 主动设置的网络时间 单位ms
|
||||
* @internal
|
||||
*/
|
||||
private static _netTime: number = 0;
|
||||
|
||||
/** 本地时间与网路时间的偏移量 单位ms */
|
||||
/**
|
||||
* 本地时间与网路时间的偏移量 单位ms
|
||||
* @internal
|
||||
*/
|
||||
private static _netTimeDiff: number = 0;
|
||||
|
||||
/** 获取当前毫秒时间戳 */
|
||||
/**
|
||||
* 获取当前毫秒时间戳
|
||||
* @internal
|
||||
*/
|
||||
private static _nowTimestamp: () => number;
|
||||
|
||||
/** 获取游戏系统启动时间戳 */
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
/**
|
||||
* @Author: Gongxh
|
||||
* @Date: 2024-12-14
|
||||
* @Description: tools 导出
|
||||
*/
|
||||
|
||||
|
||||
@@ -4,6 +4,13 @@
|
||||
* @Description: 对象帮助类
|
||||
*/
|
||||
export class ObjectHelper {
|
||||
/**
|
||||
* 获取对象属性
|
||||
* @param obj 对象
|
||||
* @param key 属性名
|
||||
* @returns 属性值
|
||||
* @internal
|
||||
*/
|
||||
public static getObjectProp(obj: Record<string, any>, key: string): any {
|
||||
if (obj.hasOwnProperty(key)) {
|
||||
return obj[key];
|
||||
|
||||
@@ -9,15 +9,18 @@ import { TimerNode } from "./TimerNode";
|
||||
import { TimerNodePool } from "./TimerNodePool";
|
||||
|
||||
export class Timer {
|
||||
/** @internal */
|
||||
private _timerNodeOrder: number = 0;
|
||||
|
||||
/** 经过的时间 */
|
||||
/** 经过的时间 @internal */
|
||||
private _elapsedTime: number = 0;
|
||||
|
||||
/** @internal */
|
||||
private _pool: TimerNodePool;
|
||||
/** @internal */
|
||||
private _heap: BinaryHeap<TimerNode>;
|
||||
|
||||
/** 暂停的计时器 */
|
||||
/** 暂停的计时器 @internal */
|
||||
private _pausedTimers: Map<number, TimerNode>;
|
||||
|
||||
/**
|
||||
@@ -31,9 +34,7 @@ export class Timer {
|
||||
|
||||
/**
|
||||
* 定时器管理类
|
||||
*
|
||||
* @param {number} initTimerCapacity 初始定时器容量
|
||||
* @memberof Timer
|
||||
*/
|
||||
public constructor(initTimerCapacity: number) {
|
||||
this._heap = new BinaryHeap<TimerNode>(initTimerCapacity);
|
||||
@@ -56,7 +57,6 @@ export class Timer {
|
||||
|
||||
/**
|
||||
* 删除指定计时器
|
||||
*
|
||||
* @param {number} timerId 定时器ID
|
||||
* @memberof Timer
|
||||
*/
|
||||
@@ -106,34 +106,10 @@ export class Timer {
|
||||
}
|
||||
}
|
||||
|
||||
// /**
|
||||
// * 根据回调更新定时器
|
||||
// *
|
||||
// * @param {number} timerId 定时器ID
|
||||
// * @param {number} interval 回调间隔
|
||||
// * @param {number} loop 重复次数
|
||||
// * @param {boolean} [resetTime=false] 是否更新下次回调时间(从当前时间开始计时)
|
||||
// * @returns {boolean} 如果TimerID存在则返回true
|
||||
// * @memberof Timer
|
||||
// */
|
||||
// public updateTimer(timerId: number, interval: number, loop: number, resetTime: boolean = false): boolean {
|
||||
// const timerNode = this._pool.get(timerId);
|
||||
// if (!timerNode) {
|
||||
// return false;
|
||||
// }
|
||||
// timerNode.interval = interval;
|
||||
// timerNode.loop = loop;
|
||||
// if (resetTime) {
|
||||
// timerNode.expireTime = this._elapsedTime + interval;
|
||||
// }
|
||||
// return this._heap.update(timerNode);
|
||||
// }
|
||||
|
||||
/**
|
||||
* 更新时钟
|
||||
*
|
||||
* @param {number} deltaTime 更新间隔
|
||||
* @memberof Timer
|
||||
* @internal
|
||||
*/
|
||||
public update(deltaTime: number): void {
|
||||
const elapsedTime = (this._elapsedTime += deltaTime);
|
||||
@@ -170,8 +146,6 @@ export class Timer {
|
||||
|
||||
/**
|
||||
* 清空所有定时器
|
||||
*
|
||||
* @memberof Timer
|
||||
*/
|
||||
public clear(): void {
|
||||
this._heap.clear();
|
||||
@@ -180,6 +154,7 @@ export class Timer {
|
||||
this._timerNodeOrder = 0;
|
||||
}
|
||||
|
||||
/** @internal */
|
||||
private _getTimerNode(callback: () => void, interval: number, loop: number): TimerNode {
|
||||
const timerNode = this._pool.allocate();
|
||||
|
||||
@@ -193,6 +168,7 @@ export class Timer {
|
||||
return timerNode;
|
||||
}
|
||||
|
||||
/** @internal */
|
||||
private _recycle(timerNode: TimerNode): void {
|
||||
this._pool.recycle(timerNode.id);
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
*/
|
||||
import { HeapNode } from "../DataStruct/BinaryHeap";
|
||||
|
||||
/** @internal */
|
||||
export class TimerNode extends HeapNode {
|
||||
/** 定时器ID */
|
||||
public id: number;
|
||||
|
||||
@@ -11,12 +11,15 @@ const TimerVersionMask = (1 << TimerIdBit) - 1;
|
||||
const TimerMaxVersion = TimerVersionMask;
|
||||
|
||||
export class TimerNodePool {
|
||||
/** @internal */
|
||||
private _pool: Array<TimerNode> = new Array<TimerNode>();
|
||||
/** @internal */
|
||||
private _freeIndices: Array<number> = new Array<number>();
|
||||
|
||||
/**
|
||||
* 定时器池
|
||||
* @param {number} capacity 初始容量
|
||||
* @internal
|
||||
*/
|
||||
public constructor(capacity: number) {
|
||||
for (let i = 0; i < capacity; ++i) {
|
||||
@@ -31,6 +34,7 @@ export class TimerNodePool {
|
||||
/**
|
||||
* 分配定时器节点
|
||||
* @returns {TimerNode} 定时器节点
|
||||
* @internal
|
||||
*/
|
||||
public allocate(): TimerNode {
|
||||
let timerNode: TimerNode;
|
||||
@@ -59,6 +63,7 @@ export class TimerNodePool {
|
||||
/**
|
||||
* 回收定时器节点
|
||||
* @param {number} timerId 定时器ID
|
||||
* @internal
|
||||
*/
|
||||
public recycle(timerId: number): void {
|
||||
const index = timerId >>> TimerIdBit;
|
||||
@@ -82,6 +87,7 @@ export class TimerNodePool {
|
||||
* 根据TimerID获取定时器节点
|
||||
* @param {number} timerId 定时器ID
|
||||
* @returns {TimerNode}
|
||||
* @internal
|
||||
*/
|
||||
public get(timerId: number): TimerNode | undefined {
|
||||
const index = timerId >>> TimerIdBit;
|
||||
@@ -107,6 +113,7 @@ export class TimerNodePool {
|
||||
|
||||
/**
|
||||
* 清空正在使用的Timer
|
||||
* @internal
|
||||
*/
|
||||
public clear(): void {
|
||||
const pools = this._pool;
|
||||
|
||||
Reference in New Issue
Block a user