1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- import { director } from "cc";
- import BufferManager from "./BufferManager";
- import IBuffer from "./IBuffer";
- export default class BaseBuffer implements IBuffer
- {
- time: number;
- startTime: number;
- endTime: number;
- group: string;
- private static uuidIndex:number=0;
- private uuid:number;
- constructor(group:string,time:number){
- this.group=group;
- this.time=time;
- this.uuid=BaseBuffer.uuidIndex;
- BaseBuffer.uuidIndex++;
- }
- /**
- * 合并同组BUFFER 如果BUFFER必须是唯一则在Run 函数中调用。
- */
- protected mergeBuffer():void{
- let groupList:IBuffer[]=BufferManager.GetBufferGroup(this.group);
- let otherTime:number=0;
- let currentTime:number=director.getCurrentTime();
- let otherEndTime:number;
- if(groupList.length>1){
- groupList.forEach(element => {
- //排除自身
- if(element!=this){
- otherEndTime=element.GetEndTime();
- if(otherEndTime<currentTime){
- otherTime+=otherEndTime-currentTime;
- }
- }
- });
- //清理
- while(groupList.length>1){
- let buffer:IBuffer;
- for (let index = 0; index < groupList.length; index++) {
- buffer = groupList[index];
- //排除自身
- if(buffer!=this){
- BufferManager.RemoveBuffer(buffer);
- }
- }
- groupList=BufferManager.GetBufferGroup(this.group);
- }
- }
- //合并时间
- this.time+=otherTime;
- }
- /**
- * 剩余时间
- */
- GetTimeRemaining(): number {
- let currentTime:number=director.getCurrentTime();
- let endTime:number=this.GetEndTime();
- if(currentTime<endTime){
- return endTime-currentTime;
- }
- return 0;
- }
- GetEndTime(): number {
- return this.endTime;
- }
-
- Tick(dt: number): void {
-
- }
- Run(data:any):void{
- this.startTime=director.getCurrentTime();
- this.endTime=this.startTime+this.time;
- }
-
- GetUUID(): number {
- return this.uuid;
- }
- }
|