JK2eA
 All Classes Functions Variables
ControllerManager.h
00001 #pragma once
00002 
00003 #include <string>
00004 #include <vector>
00005 #include <map>
00006 #include "Controller.h"
00007 #include "ControllerTrigger.h"
00008 #include <Windows.h>
00009 #include "Observable.h"
00010 
00016 class CControllerManager {
00017 private:
00018         
00022         struct CONTROLLER : CObserver {
00023                 CController*            controller; 
00024                 CObservable*            observable;     
00025                 virtual void            Update();
00026         };
00027         std::vector<CONTROLLER*>                        m_controllers;  
00028 
00036         std::map<std::string, CONTROLLER*>                                        m_controller_search_map_name; 
00037         std::map<CController*, CONTROLLER*>                                       m_controller_search_map_ptr;  
00038         typedef std::map<std::string, CONTROLLER*>::iterator  name_iter_t;
00039         typedef std::map<CController*, CONTROLLER*>::iterator ptr_iter_t;
00040         typedef std::vector<CONTROLLER*>::iterator                        cnt_iter_t;
00041 
00042         /*
00043                 Privatni konstruktor
00044         */
00045         CControllerManager();
00046 public:
00050         static CControllerManager& instance();
00055         ~CControllerManager();
00056 
00061         void Update(const float dt);
00062 
00071         void AddControllerTrigger(CControllerTrigger* cnt, CController *cnt_parent);
00072 
00080         void AddController(CController *cnt, CObservable& param_obser);
00081 
00087         CController* GetController(const std::string& name);
00092         void DelController(CController *cnt);
00097         void DelController(const std::string& name);
00101         void Release();
00102 
00103 
00104 #ifdef _DEBUG
00105 private:
00106         enum { IDC_LIST_VIEW = 1000 };
00107 
00108         HWND m_dbgHwnd;
00109         //
00110         static HWND hList;
00111         //
00112 
00113 
00114         void InitControllerListWindow();
00115         void AddControllerToList(CController *cnt);
00116         void ClearControllerList();
00117 
00118         static BOOL CALLBACK DbgControllerListPROC(HWND dbgHwnd, UINT msg,  WPARAM wParam,LPARAM lParam);
00119 public:
00120         void ShowDebugWnd(HWND parent, HINSTANCE hInstance);
00121 
00122 #endif 
00123 
00124 };
00125