// import { _decorator, Component } from 'cc';
// import { EventsType } from '../../interface/IPrimary';
// import { Cards_Constants } from 'db://assets/src/constants/Cards_Constants';
// const { ccclass, property } = _decorator;

// export class EventData
// {
//     public type: EventsType;
//     public onComplete: (arg0) => void;
// }

// @ccclass('EventsManager')
// export class EventsManager extends Component 
// {
//     public useInstance: boolean = false;

//     private static m_Instance: EventsManager;
//     public onFireCallback: () => void;
//     public eventsMap: Map<EventsType, (arg0) => void>;
//     public eventsArray: Array<EventData>;

//     public static get m_GetInstance() : EventsManager
//     {
//         return EventsManager.m_Instance;
//     }

//     protected onLoad(): void 
//     {
//         this.eventsMap = new Map<EventsType, (arg0) => void>();
//         this.eventsArray = new Array<EventData>();

//         if (!EventsManager.m_Instance)
//         {
//             EventsManager.m_Instance = this;
//             return;
//         }
        
//         this.destroy();
//     }
    
//     // public fn_AttachEvent(obj: IFireEvent)
//     // {
//     //     let method = (arg0) => obj.fn_Execute(arg0);
    
//     //     let data = new EventData();
//     //     data.type = obj.evtType;
//     //     data.onComplete = method;

//     //     this.eventsArray.push(data);
//     //     this.eventsMap.set(obj.evtType, (arg0) => obj.fn_Execute(arg0));

//     //     console.log("Event function status: " + this.eventsMap.has(obj.evtType));
//     // }
    
//     public fn_DetachEvent(evtType: EventsType)
//     {

//     }
    
//     public fn_DetachEvents()
//     {

//     }
        
//     public fn_FireEvent(evtType: EventsType, arg0: any)
//     {
//         let foundData = this.eventsArray.find(data => data.type == evtType);
//         if (foundData)
//         {
//             console.log("Found data in array");
//         }
//         else 
//         {
//             console.log("data not found in array");
//         }

//         if (!this.eventsMap.has(evtType))
//         {
//             console.warn("Event function not found");
//         }
    
//         console.log("Fire event for " + evtType);
//         let method = this.eventsMap[evtType];
//         console.log("Mapdata: Fire event for " + method);
//         console.log("ArrayData: Fire event for " + foundData.onComplete);
    
//         this.onFireCallback = () => {};
//         this.onFireCallback.call(foundData.onComplete);
        
//         setTimeout(() => {
//             }, Cards_Constants.MILLI_SEC);
//     }
    
// }

