示例#1
0
void test_reflect()
{
	tKernel::getSinglePtr()->registerClass(GETCLASS(Shape));
	tKernel::getSinglePtr()->registerClass(GETCLASS(Rect));
	tKernel::getSinglePtr()->registerClass(GETCLASS(Square));

	Shape* pRect= (Shape*)tKernel::getSinglePtr()->newNode("Rect","root/","rect");
	pRect->draw();
	Square* pSquare = (Square*)(tKernel::getSinglePtr()->newNode("Square","root/rect/","square"));
	pSquare->draw();
}
示例#2
0
VOID CObject_Bus::ReleaseRenderInterface(VOID)
{
	if(m_pRenderInterface != NULL)
	{
		INT i;
		for(i = 0; i < m_nPassengerCount; i++)
		{
			if(m_abPassengerAttacheds[i])
			{
				CObject *pObj = (CObject*)(CObjectManager::GetMe()->FindServerObject(m_anPassengerIDs[i]));
				if(pObj != NULL && pObj->GetRenderInterface() != NULL)
				{
					if(pObj != NULL && g_theKernel.IsKindOf(pObj->GetClass(), GETCLASS(CObject_Character)))
					{
						((CObject_Character*)pObj)->GetCharacterData()->Set_BusObjID(INVALID_ID);
						((CObject_Character*)pObj)->Bus_UpdateCharActionSetFile();
					}
					m_pRenderInterface->Detach_Object(pObj->GetRenderInterface());
				}
				m_abPassengerAttacheds[i] = FALSE;
			}
		}
		m_pRenderInterface->Destroy();
		m_pRenderInterface = NULL;
	}
}
示例#3
0
VOID CObject_Bus::UpdateMemberRenderInterfaceByIndex(INT nIndex)
{
	if(m_anPassengerIDs[nIndex] == INVALID_ID)
		return;

	if(m_abPassengerAttacheds[nIndex])
		return;

	if(m_pRenderInterface != NULL && m_pBusData != NULL && strlen(m_pBusData->m_aSeatInfo[nIndex].m_pszLocator) > 0)
	{
		CObject *pObj = (CObject*)(CObjectManager::GetMe()->FindServerObject(m_anPassengerIDs[nIndex]));
		if(pObj != NULL && pObj->GetRenderInterface() != NULL)
		{
			m_pRenderInterface->Attach_Object(pObj->GetRenderInterface(), m_pBusData->m_aSeatInfo[nIndex].m_pszLocator);
			if(g_theKernel.IsKindOf(pObj->GetClass(), GETCLASS(CObject_Character)))
			{
				CObject_Character *pCharMember = (CObject_Character*)(pObj);
				pCharMember->GetCharacterData()->Set_BusObjID(GetServerID());
				pCharMember->Bus_UpdateCharActionSetFile();
			}
			m_abPassengerAttacheds[nIndex] = TRUE;

			UpdateAnimation();
			SetPosition(GetPosition());
		}
	}
}
示例#4
0
VOID CObject_Bus::RemoveAllPassengers(VOID)
{
	INT i;
	for(i = 0; i < DEF_BUS_MAX_PASSENGER_COUNT; i++)
	{
		if(m_anPassengerIDs[i] != INVALID_ID)
		{
			if(m_abPassengerAttacheds[i] && m_pRenderInterface != NULL)
			{
				CObject *pObj = (CObject*)(CObjectManager::GetMe()->FindServerObject(m_anPassengerIDs[i]));
				if(pObj != NULL && pObj->GetRenderInterface() != NULL)
				{
					if(pObj != NULL && g_theKernel.IsKindOf(pObj->GetClass(), GETCLASS(CObject_Character)))
					{
						((CObject_Character*)pObj)->Bus_UpdateCharActionSetFile();
					}
					m_pRenderInterface->Detach_Object(pObj->GetRenderInterface());
				}
			}
			m_anPassengerIDs[i] = INVALID_ID;
			m_abPassengerAttacheds[i] = FALSE;
		}
	}
	m_nPassengerCount = 0;
}
示例#5
0
BOOL CObject_Bus::RemovePassenger(ObjID_t nPassengerID)
{
	if(nPassengerID == INVALID_ID)
		return FALSE;

	INT nCount = GetPassengerCount();
	if(nCount > 0)
	{
		INT i;
		for(i = 0; i < nCount; i++)
		{
			if(m_anPassengerIDs[i] == nPassengerID)
			{
				if(m_abPassengerAttacheds[i] && m_pRenderInterface != NULL)
				{
					CObject *pObj = (CObject*)(CObjectManager::GetMe()->FindServerObject(m_anPassengerIDs[i]));
					if(pObj != NULL && pObj->GetRenderInterface() != NULL)
					{
						if(pObj != NULL && g_theKernel.IsKindOf(pObj->GetClass(), GETCLASS(CObject_Character)))
						{
							((CObject_Character*)pObj)->Bus_UpdateCharActionSetFile();
						}
						m_pRenderInterface->Detach_Object(pObj->GetRenderInterface());
					}
				}
				m_anPassengerIDs[i] = m_anPassengerIDs[nCount - 1];
				m_abPassengerAttacheds[i] = m_abPassengerAttacheds[nCount - 1];
				m_anPassengerIDs[nCount - 1] = INVALID_ID;
				m_abPassengerAttacheds[nCount - 1] = FALSE;
				return TRUE;
			}
		}
	}
	return FALSE;
}
示例#6
0
//插件初始化
extern "C" VOID __stdcall DllInit( tKernel* pKernel )
{
	TDAssert(pKernel);

	g_pKernel = pKernel;

	pKernel->ReisgerClass(GETCLASS(CUISystem));
}
示例#7
0
VOID CZone::RegisterObject(CObject_Map* pObject)
{
	KLAssert(pObject);

	// 判断是否确实是CObject_Map继承类
	if(!g_theKernel.IsKindOf(pObject->GetClass(), GETCLASS(CObject_Map))) 
		return;

	// 注册到Set中,如果已经有该id的物体注册,则直接替换
	INT id = pObject->GetID();
	m_setRegisterObject.insert( id );

	pObject->m_pZone = this;
}
 nsSMState CVE_2013_0779_seamonkey2_13_2_NextState(char c){
   //for each byte we get its class , if it is first byte, we also get byte length
   PRUint32 byteCls = GETCLASS(c);
   if (mCurrentState == eStart)
   { 
     mCurrentBytePos = 0; 
     mCurrentCharLen = mModel->charLenTable[byteCls];
   }
   //from byte's class and stateTable, we get its next state
   mCurrentState=(nsSMState)GETFROMPCK(mCurrentState*(mModel->classFactor)+byteCls,
                                      mModel->stateTable);
   mCurrentBytePos++;
   return mCurrentState;
 }
	/* ------------------------------------------------
	// 请求目标骑宠属性
	------------------------------------------------ */
	INT Mount::TargetMountAttrRequest(LuaPlus::LuaState* state)
	{
		tObject* pObj = CObjectManager::GetMe()->GetMainTarget();

		if (pObj && g_theKernel.IsKindOf(pObj->GetClass(), GETCLASS(CObject_PlayerOther)))
		{
			CObject_PlayerOther* pOtherPlayer = (CObject_PlayerOther*)pObj;
			if (0 < pOtherPlayer->GetCharacterData()->Get_MountID())
			{
				// 发送 请求目标骑宠属性消息
				CGManipulatePet Msg;

				Msg.SetObjID(pOtherPlayer->GetServerID());
				Msg.SetCharObjID(CObjectManager::GetMe()->GetMySelf()->GetServerID());
				Msg.SetManipulateType(MANIPULATE_ASKOTHERPETINFO);

				CNetManager::GetMe()->SendPacket(&Msg);
			}
		}

		return 0;
	}
示例#10
0
extern VOID InstallUISystem( tKernel* pKernel )
{
	KLAssert(pKernel);
	g_pKernel = pKernel;
	pKernel->ReisgerClass(GETCLASS(CUISystem));
}
VOID CGameInterface::Object_ShowContexMenu(INT idObj,BOOL showMyself)
{
	CObject* pObject = (CObject*)CObjectManager::GetMe()->FindServerObject(idObj);
	if(!pObject) return;

	CHAR szObjId[32]; _snprintf(szObjId, 32, "%d", pObject->GetID());

	//得到鼠标位置
	POINT ptMouse = CInputSystem::GetMe()->MouseGetPos();

	CHAR szXPos[32]; _snprintf(szXPos, 32, "%d", ptMouse.x);
	CHAR szYPos[32]; _snprintf(szYPos, 32, "%d", ptMouse.y);
	
	std::vector< STRING > vParam;
	//根据不同物体产生不同右键事件
	if(g_theKernel.IsKindOf(pObject->GetClass(), GETCLASS(CObject_PlayerMySelf)))
	{
		if(showMyself)
		{
			// 如果自己已经在队伍中了
			if( CUIDataPool::GetMe()->IsInTeam())
			{
				vParam.push_back("player_in_team");
				vParam.push_back(szObjId);
				vParam.push_back(szXPos);
				vParam.push_back(szYPos);
				CEventSystem::GetMe()->PushEvent(GE_SHOW_CONTEXMENU, vParam);
				return;
			}

			// 自己没有组队
			vParam.push_back("player");
			vParam.push_back(szObjId);
			vParam.push_back(szXPos);
			vParam.push_back(szYPos);
			CEventSystem::GetMe()->PushEvent(GE_SHOW_CONTEXMENU, vParam);
		}
	}
	else if(g_theKernel.IsKindOf(pObject->GetClass(), GETCLASS(CObject_PlayerOther)))
	{
		CObject_PlayerOther* pOtherObject = (CObject_PlayerOther*)pObject;

		// 自己有队伍, 点击的其他玩家也有队伍
		if((pOtherObject->GetCharacterData()->Get_HaveTeamFlag())&&( CUIDataPool::GetMe()->IsInTeam()))
		{
			vParam.push_back("other_team_member");
			vParam.push_back(szObjId);
			vParam.push_back(szXPos);
			vParam.push_back(szYPos);
			CEventSystem::GetMe()->PushEvent(GE_SHOW_CONTEXMENU, vParam);
			return;

		}

		//点击其他玩家没有队伍
		if((!pOtherObject->GetCharacterData()->Get_HaveTeamFlag()))
		{
			vParam.push_back("other_not_team_member");
			vParam.push_back(szObjId);
			vParam.push_back(szXPos);
			vParam.push_back(szYPos);
			CEventSystem::GetMe()->PushEvent(GE_SHOW_CONTEXMENU, vParam);
			return;

		}

		
		// 自己没队伍, 点击其他玩家有队伍
		if((pOtherObject->GetCharacterData()->Get_HaveTeamFlag())&&( !CUIDataPool::GetMe()->IsInTeam()))
		{
			vParam.push_back("other_team_member_me_not_teamer");
			vParam.push_back(szObjId);
			vParam.push_back(szXPos);
			vParam.push_back(szYPos);
			CEventSystem::GetMe()->PushEvent(GE_SHOW_CONTEXMENU, vParam);
			return;

		}


		vParam.push_back("other_player");
		vParam.push_back(szObjId);
		vParam.push_back(szXPos);
		vParam.push_back(szYPos);
		CEventSystem::GetMe()->PushEvent(GE_SHOW_CONTEXMENU, vParam);
	}
	else if(g_theKernel.IsKindOf(pObject->GetClass(), GETCLASS(CObject_PlayerNPC)))
	{
		PET_GUID_t pg = CObjectManager::GetMe()->GetMySelf()->GetCharacterData()->Get_CurrentPetGUID();

		//自己的宠物
		if(!(pg.IsNull()) && CDataPool::GetMe()->Pet_GetPet(pg) && CDataPool::GetMe()->Pet_GetPet(pg)->m_idServer == pObject->GetServerID())
		{
			vParam.push_back("my_pet");
			vParam.push_back(szObjId);
			vParam.push_back(szXPos);
			vParam.push_back(szYPos);
			CEventSystem::GetMe()->PushEvent(GE_SHOW_CONTEXMENU, vParam);
			return;
		}

		CObject_PlayerNPC* pNpcObject = (CObject_PlayerNPC*)pObject;
		//其他宠物
		if(pNpcObject->GetNpcType() == NPC_TYPE_PET)
		{
			if(INVALID_ID != pNpcObject->GetCharacterData()->Get_OwnerID())
			{
				//有归属的宠物才显示菜单
				vParam.push_back("other_pet");
				vParam.push_back(szObjId);
				vParam.push_back(szXPos);
				vParam.push_back(szYPos);
				CEventSystem::GetMe()->PushEvent(GE_SHOW_CONTEXMENU, vParam);
			}
			return;
		}

		vParam.push_back("npc");
		vParam.push_back(szObjId);
		vParam.push_back(szXPos);
		vParam.push_back(szYPos);
		CEventSystem::GetMe()->PushEvent(GE_SHOW_CONTEXMENU, vParam);
	}
	else return;

}
示例#12
0
VOID CGameProcedure::InitStaticMemeber(VOID)
{
	//-------------------------------------------------------------------
	//初始化随即变量种子
	srand( (unsigned)timeGetTime() );

	//-------------------------------------------------------------------
	// 注册本地类
	g_theKernel.ReisgerClass(GETCLASS(tNode));
	//网络管理器
	g_theKernel.ReisgerClass(GETCLASS(CNetManager));
	//场景管理器
	g_theKernel.ReisgerClass(GETCLASS(CWorldManager));
	//物体管理器
	g_theKernel.ReisgerClass(GETCLASS(CObjectManager));
	g_theKernel.ReisgerClass(GETCLASS(CObject));
	g_theKernel.ReisgerClass(GETCLASS(CObject_Surface));
	g_theKernel.ReisgerClass(GETCLASS(CObject_Effect));
	g_theKernel.ReisgerClass(GETCLASS(CObject_Bullet));
	//g_theKernel.ReisgerClass(GETCLASS(CObject_SkillObj));
	g_theKernel.ReisgerClass(GETCLASS(CObject_Special));
	g_theKernel.ReisgerClass(GETCLASS(CObject_Map));
	g_theKernel.ReisgerClass(GETCLASS(CObject_Static));
	g_theKernel.ReisgerClass(GETCLASS(CObject_Building));
	g_theKernel.ReisgerClass(GETCLASS(CObject_Dynamic));
	g_theKernel.ReisgerClass(GETCLASS(CObject_Character));
	g_theKernel.ReisgerClass(GETCLASS(CObject_PlayerMySelf));
	g_theKernel.ReisgerClass(GETCLASS(CObject_PlayerNPC));
	g_theKernel.ReisgerClass(GETCLASS(CObject_PlayerOther));
	g_theKernel.ReisgerClass(GETCLASS(CObject_ProjTex));
	g_theKernel.ReisgerClass(GETCLASS(CObject_ProjTex_MouseTarget));
	g_theKernel.ReisgerClass(GETCLASS(CObject_ProjTex_AuraDure));
	g_theKernel.ReisgerClass(GETCLASS(CTripperObject_Transport));
	g_theKernel.ReisgerClass(GETCLASS(CTripperObject_ItemBox));
	g_theKernel.ReisgerClass(GETCLASS(CTripperObject_Resource));
	g_theKernel.ReisgerClass(GETCLASS(CTripperObject_Platform));

	//输入管理器
	g_theKernel.ReisgerClass(GETCLASS(CInputSystem));
	//计时器
	g_theKernel.ReisgerClass(GETCLASS(tTimeSystem));
	//声音管理器
	g_theKernel.ReisgerClass(GETCLASS(CSoundSystemFMod));
	//数据库管理器
	g_theKernel.ReisgerClass(GETCLASS(CDataBaseSystem));
	//数据库管理器
	g_theKernel.ReisgerClass(GETCLASS(CVariableSystem));
	//UI操作接口
	g_theKernel.ReisgerClass(GETCLASS(CGameInterface));
	//UI数据池
	g_theKernel.ReisgerClass(GETCLASS(CUIDataPool));
	g_theKernel.ReisgerClass(GETCLASS(CDataPool));
	//UI鼠标操作类
	g_theKernel.ReisgerClass(GETCLASS(CCursorMng));
	//脚本系统
	g_theKernel.ReisgerClass(GETCLASS(CScriptSystem));
	//事件系统
	g_theKernel.ReisgerClass(GETCLASS(CEventSystem));
	//操作管理
	g_theKernel.ReisgerClass(GETCLASS(CActionSystem));
	//UI模型显示管理
	g_theKernel.ReisgerClass(GETCLASS(CFakeObjSystem));
	//外接帮助系统
	g_theKernel.ReisgerClass(GETCLASS(CHelperSystem));

	//-------------------------------------------------------------------
	// 加载插件中的类
//	PROFILE_PUSH(LoadPluginDll);
//	g_theKernel.LoadPlugin(_T("Debuger.dll"), &g_theKernel);
	g_theKernel.LoadPlugin(_T("WXRender.dll"), &g_theKernel);
	g_theKernel.LoadPlugin(_T("UISystem.dll"), &g_theKernel);
//	PROFILE_POP(LoadPluginDll);

	//-------------------------------------------------------------------
	//初始化所有的循环实例
	s_pProcLogIn			= new CGamePro_Login();			//!< 登录循环
	s_pProcCharSel			= new CGamePro_CharSel();		//!< 人物选择流程
	s_pProcCharCreate		= new CGamePro_CharCreate();	//!< 人物创建流程
	s_pProcEnter			= new CGamePro_Enter();			//!< 等待进入场景流程
	s_pProcMain				= new CGamePro_Main();			//!< 主游戏循环
	s_pProcChangeScene		= new CGamePro_ChangeScene();	//!< 服务器切换流程



	
	// 初始化数据核心
//0. 输入管理器
	s_pInputSystem	= (tInputSystem*)	g_theKernel.NewNode(_T("CInputSystem"), _T("bin"), _T("input"));  
//1. 计时器
	s_pTimeSystem	= (tTimeSystem*)	g_theKernel.NewNode(_T("tTimeSystem"), _T("bin"), _T("time"));  
//2. 网络管理器
	s_pNetManager	= (CNetManager*)	g_theKernel.NewNode(_T("CNetManager"), _T("bin"), _T("netman"));  
//3. 音效管理器
	s_pSoundSystem  = (tSoundSystem*)	g_theKernel.NewNode(_T("CSoundSystemFMod"), _T("bin"), _T("snd"));
//4. 渲染器节点
	s_pGfxSystem	= (CRenderSystem*)	g_theKernel.NewNode(_T("CRenderSystem"), _T("bin"), _T("gfx"));
//5. 调试器节点
//	s_pDebuger		= (tDebuger*)		g_theKernel.NewNode(_T("TDDebuger"), _T("bin"), _T("debuger"));
//6. 物体管理器
	s_pObjectManager= (tObjectSystem*)	g_theKernel.NewNode(_T("CObjectManager"), _T("bin"), _T("objman"));  
//7. UI管理器
	s_pUISystem		= (tUISystem*)		g_theKernel.NewNode(_T("CUISystem"), _T("bin"), _T("ui_"));
//8. 世界管理器
	s_pWorldManager = (tWorldSystem*)	g_theKernel.NewNode(_T("CWorldManager"), _T("bin"), _T("worldman"));  
//9. 数据库管理器
	s_pDataBaseSystem	= (tDataBaseSystem*)	g_theKernel.NewNode(_T("CDataBaseSystem"), _T("bin"), _T("dbc"));
//10. 系统变量管理器
	s_pVariableSystem	= (tVariableSystem*)	g_theKernel.NewNode(_T("CVariableSystem"), _T("bin"), _T("var"));
//11. 接口管理器
	s_pGameInterface	= ( tGameInterfaceBase* ) g_theKernel.NewNode( _T("CGameInterface"), _T("bin"), _T("interface"));
//12. UI数据池
	s_pDataPool			= ( tDataPool* ) g_theKernel.NewNode( _T( "CUIDataPool" ), _T( "bin" ), _T( "datapool" ) );
	s_pDataPool_		= ( tDataPool_* ) g_theKernel.NewNode( _T( "CDataPool" ), _T( "bin" ), _T( "datapool_" ) );
//13. 鼠标指针管理器
	s_pCursorMng		= ( tCursorSystem* ) g_theKernel.NewNode( _T( "CCursorMng"), _T( "bin" ), _T("cursor" ) );
//14. 脚本系统
	s_pScriptSystem		= ( tScriptSystem* ) g_theKernel.NewNode( _T( "CScriptSystem"), _T( "bin" ), _T("script" ) );
//15. 事件系统
	s_pEventSystem		= ( tEventSystem* ) g_theKernel.NewNode( _T( "CEventSystem"), _T( "bin" ), _T("event" ) );
//16. 操作管理
	s_pActionSystem		= ( tActionSystem* ) g_theKernel.NewNode( _T( "CActionSystem"), _T( "bin" ), _T("action" ) );
//17. UI模型显示管理
	s_pFakeObjSystem	= ( tFakeObjSystem* ) g_theKernel.NewNode( _T( "CFakeObjSystem"), _T( "bin" ), _T("fake" ) );
//18. 外接帮助系统
	s_pHelperSystem		= ( tHelperSystem* ) g_theKernel.NewNode( _T( "CHelperSystem"), _T( "bin" ), _T("helper" ) );

//19. 资源提供
	s_pResourceProvider	= ( CResourceProvider* ) g_theKernel.NewNode( _T( "CResourceProvider"), _T( "bin" ), _T("resprovider" ) );

	//-------------------------------------------------------------------
	//初始化工作节点
	s_pVariableSystem	->Initial(NULL);
	s_pEventSystem		->Initial(NULL);
	//-------------------------------------------------------------------
	// 创建主窗口
	CreateMainWnd();

	//-------------------------------------------------------------------
	s_pGfxSystem		->Initial(&g_hMainWnd);
	s_pScriptSystem		->Initial(NULL);
	s_pDataBaseSystem	->Initial(NULL);
	s_pTimeSystem		->Initial(NULL);
	s_pNetManager		->Initial(NULL); 
	s_pWorldManager		->Initial(NULL); 
	s_pObjectManager	->Initial(NULL); 
	if(s_pDebuger)		s_pDebuger->Initial(NULL); 
	if(s_pUISystem)		s_pUISystem->Initial(NULL);
	s_pInputSystem		->Initial(NULL); 
	s_pSoundSystem		->Initial(&g_hMainWnd);
	s_pDataPool			->Initial(NULL);
	s_pDataPool_		->Initial(NULL);
	s_pCursorMng		->Initial(&g_hInstance);
	s_pActionSystem		->Initial(NULL);
	s_pGameInterface	->Initial(NULL);
	s_pFakeObjSystem	->Initial(NULL);
	s_pHelperSystem		->Initial(NULL);
	s_pResourceProvider	->Initial(NULL);


	s_pSkillDataMgr	= new CSkillDataMgr;
	s_pSkillDataMgr->Init( s_pDataBaseSystem->GetDataBase( DBC_SKILL_DATA )->GetDBCFile() );

	s_pBuffImpactMgr	= new CBuffImpactMgr;
	s_pBuffImpactMgr->Init( s_pDataBaseSystem->GetDataBase( DBC_BUFF_IMPACT )->GetDBCFile() );

	s_pDirectlyImpactMgr	= new CDirectlyImpactMgr;
	s_pDirectlyImpactMgr->Init( s_pDataBaseSystem->GetDataBase( DBC_DIRECTLY_IMPACT )->GetDBCFile() );

	s_pBulletDataMgr	= new CBulletDataMgr;
	s_pBulletDataMgr->Init( s_pDataBaseSystem->GetDataBase( DBC_BULLET_DATA ) );
	//camp
	s_pCampDataMgr	= new CampAndStandDataMgr_T;
	s_pCampDataMgr->InitFromDBMemory(s_pDataBaseSystem->GetDataBase(DBC_CAMP_AND_STAND)->GetDBCFile());

	s_pActionSetMgr	= new CActionSetMgr;
	s_pActionSetMgr->Init( "ActionSet/" );

	//-------------------------------------------------------------------
	//创建Tick驱动
	INT nMaxFPS = s_pVariableSystem->GetAs_Int("System_MaxFPS");
	if(nMaxFPS < 5 || nMaxFPS >150) nMaxFPS = 30;

	m_hTickEvent = ::CreateEvent(NULL, FALSE, FALSE, NULL);
	::ResetEvent(m_hTickEvent);
	m_hEventTimer = ::timeSetEvent((INT)(1000.0f/nMaxFPS), (INT)(1000.0f/nMaxFPS), EventTimerProc, 0, TIME_PERIODIC|TIME_CALLBACK_FUNCTION); 

	// 2006-2-27
	// 初试化 人物创建过程, 在这里面创建了男 , 女人物主角, 避免在进入游戏过程中, 创建很慢.
	if(s_pProcCharCreate)
	{
		s_pProcCharCreate->CallInit();
	}//
}
示例#13
0
VOID CGameProcedure::InitStaticMemeber(VOID)
{
	//-------------------------------------------------------------------
	// 初始化随即变量种子
	srand( (unsigned)timeGetTime() );

	//-------------------------------------------------------------------
	// 注册本地类
	g_theKernel.ReisgerClass(GETCLASS(tNode));
	// 网络管理器
	g_theKernel.ReisgerClass(GETCLASS(CNetManager));
	// 场景管理器
	g_theKernel.ReisgerClass(GETCLASS(CWorldManager));
	// 物体管理器
	g_theKernel.ReisgerClass(GETCLASS(CObjectManager));
	g_theKernel.ReisgerClass(GETCLASS(CObject));
	g_theKernel.ReisgerClass(GETCLASS(CObject_Surface));
	g_theKernel.ReisgerClass(GETCLASS(CObject_Effect));
	g_theKernel.ReisgerClass(GETCLASS(CObject_Bullet));
	//g_theKernel.ReisgerClass(GETCLASS(CObject_SkillObj));
	g_theKernel.ReisgerClass(GETCLASS(CObject_Special));
	g_theKernel.ReisgerClass(GETCLASS(CObject_Map));
	g_theKernel.ReisgerClass(GETCLASS(CObject_Static));
	g_theKernel.ReisgerClass(GETCLASS(CObject_Building));
	g_theKernel.ReisgerClass(GETCLASS(CObject_Dynamic));
	g_theKernel.ReisgerClass(GETCLASS(CObject_Character));
	g_theKernel.ReisgerClass(GETCLASS(CObject_PlayerMySelf));
	g_theKernel.ReisgerClass(GETCLASS(CObject_PlayerNPC));
	g_theKernel.ReisgerClass(GETCLASS(CObject_PlayerOther));
	g_theKernel.ReisgerClass(GETCLASS(CObject_ProjTex));
	g_theKernel.ReisgerClass(GETCLASS(CObject_ProjTex_MouseTarget));
	g_theKernel.ReisgerClass(GETCLASS(CObject_ProjTex_AuraDure));
	g_theKernel.ReisgerClass(GETCLASS(CObject_ProjTex_BloodStain));
	g_theKernel.ReisgerClass(GETCLASS(CTripperObject_Transport));
	g_theKernel.ReisgerClass(GETCLASS(CTripperObject_ItemBox));
	g_theKernel.ReisgerClass(GETCLASS(CTripperObject_ItemDrop));
	g_theKernel.ReisgerClass(GETCLASS(CTripperObject_Resource));
	g_theKernel.ReisgerClass(GETCLASS(CTripperObject_Platform));
	g_theKernel.ReisgerClass(GETCLASS(CObject_Bus));

	// 图形系统
	g_theKernel.ReisgerClass(GETCLASS(CEngineInterface));
	// 输入管理器
	g_theKernel.ReisgerClass(GETCLASS(CInputSystem));
	// 计时器
	g_theKernel.ReisgerClass(GETCLASS(tTimeSystem));
	// 声音管理器
	g_theKernel.ReisgerClass(GETCLASS(CSoundSystemFMod));
	// 数据库管理器
	g_theKernel.ReisgerClass(GETCLASS(CDataBaseSystem));
	// 数据库管理器
	g_theKernel.ReisgerClass(GETCLASS(CVariableSystem));
	// UI操作接口
	g_theKernel.ReisgerClass(GETCLASS(CGameInterface));
	// UI数据池
	g_theKernel.ReisgerClass(GETCLASS(CUIDataPool));
	g_theKernel.ReisgerClass(GETCLASS(CDataPool));
	// UI鼠标操作类
	g_theKernel.ReisgerClass(GETCLASS(CCursorMng));
	// 脚本系统
	g_theKernel.ReisgerClass(GETCLASS(CScriptSystem));
	// 事件系统
	g_theKernel.ReisgerClass(GETCLASS(CEventSystem));
	// 操作管理
	g_theKernel.ReisgerClass(GETCLASS(CActionSystem));
	// UI模型显示管理
	g_theKernel.ReisgerClass(GETCLASS(CFakeObjSystem));
	// 外接帮助系统
	g_theKernel.ReisgerClass(GETCLASS(CHelperSystem));
	// 资源
	g_theKernel.ReisgerClass(GETCLASS(CResourceProvider));
	// 物品传输系统
	g_theKernel.ReisgerClass(GETCLASS(CTransferItemSystem));
	//注册定时器
	g_theKernel.ReisgerClass(GETCLASS(CTimerManager));

	//-------------------------------------------------------------------
	// 加载插件中的类
//	PROFILE_PUSH(LoadPluginDll);
//	g_theKernel.LoadPlugin(_T("Debuger.dll"), &g_theKernel);
#ifdef USEOGRELIB
extern VOID InstallUISystem( tKernel* pKernel );

	InstallUISystem(&g_theKernel);
#else
	g_theKernel.LoadPlugin(_T("UI_CEGUI.dll"), &g_theKernel);
#endif
	

//	PROFILE_POP(LoadPluginDll);

	//-------------------------------------------------------------------
	// 初始化所有的循环实例
	s_pProcLogIn			= new CGamePro_Login();			// 登录循环
	s_pProcCharSel			= new CGamePro_CharSel();		// 人物选择流程
	s_pProcCharCreate		= new CGamePro_CharCreate();	// 人物创建流程
	s_pProcEnter			= new CGamePro_Enter();			// 等待进入场景流程
	s_pProcMain				= new CGamePro_Main();			// 主游戏循环
	s_pProcChangeScene		= new CGamePro_ChangeScene();	// 服务器切换流程


	//-------------------------------------------------------------------
	// 初始化数据核心
	//0. 输入管理器
	s_pInputSystem		= (tInputSystem*)		g_theKernel.NewNode( _T("CInputSystem"), _T("bin"), _T("input"));  
	//1. 计时器
	s_pTimeSystem		= (tTimeSystem*)		g_theKernel.NewNode( _T("tTimeSystem"), _T("bin"), _T("time"));  
	//2. 网络管理器
	s_pNetManager		= (CNetManager*)		g_theKernel.NewNode( _T("CNetManager"), _T("bin"), _T("netman"));  
	//3. 音效管理器
	s_pSoundSystem		= (tSoundSystem*)		g_theKernel.NewNode( _T("CSoundSystemFMod"), _T("bin"), _T("snd"));
	//4. 渲染器节点
	s_pGfxSystem		= (tGfxSystem*)			g_theKernel.NewNode( _T("CEngineInterface"), _T("bin"), _T("gfx"));
	//5. 调试器节点
//	s_pDebuger			= (tDebuger*)			g_theKernel.NewNode( _T("tDebuger"), _T("bin"), _T("debuger"));
	//6. 物体管理器
	s_pObjectManager	= (tObjectSystem*)		g_theKernel.NewNode( _T("CObjectManager"), _T("bin"), _T("objman"));  
	//7. UI管理器
	s_pUISystem			= (tUISystem*)			g_theKernel.NewNode( _T("CUISystem"), _T("bin"), _T("ui_"));
	//8. 数据库管理器
	s_pDataBaseSystem	= (tDataBaseSystem*)	g_theKernel.NewNode( _T("CDataBaseSystem"), _T("bin"), _T("dbc"));
	//9. 世界管理器
	s_pWorldManager		= (tWorldSystem*)		g_theKernel.NewNode( _T("CWorldManager"), _T("bin"), _T("worldman"));  
	//10. 系统变量管理器
	s_pVariableSystem	= (tVariableSystem*)	g_theKernel.NewNode( _T("CVariableSystem"), _T("bin"), _T("var"));
	//11. 接口管理器
	s_pGameInterface	= (tGameInterfaceBase*) g_theKernel.NewNode( _T("CGameInterface"), _T("bin"), _T("interface"));
	//12. UI数据池
	s_pUIDataPool		= ( tUIDataPool* )		g_theKernel.NewNode( _T( "CUIDataPool" ), _T( "bin" ), _T( "datapool" ) );
	s_pDataPool			= ( tDataPool* )		g_theKernel.NewNode( _T( "CDataPool" ), _T( "bin" ), _T( "datapool_" ) );
	//13. 鼠标指针管理器
	s_pCursorMng		= ( tCursorSystem* )	g_theKernel.NewNode( _T( "CCursorMng"), _T( "bin" ), _T("cursor" ) );
	//14. 脚本系统
	s_pScriptSystem		= ( tScriptSystem* )	g_theKernel.NewNode( _T( "CScriptSystem"), _T( "bin" ), _T("script" ) );
	//15. 事件系统
	s_pEventSystem		= ( tEventSystem* )		g_theKernel.NewNode( _T( "CEventSystem"), _T( "bin" ), _T("event" ) );
	//16. 操作管理
	s_pActionSystem		= ( tActionSystem* )	g_theKernel.NewNode( _T( "CActionSystem"), _T( "bin" ), _T("action" ) );
	//17. UI模型显示管理
	s_pFakeObjSystem	= ( tFakeObjSystem* )	g_theKernel.NewNode( _T( "CFakeObjSystem"), _T( "bin" ), _T("fake" ) );
	//18. 外接帮助系统
	s_pHelperSystem		= ( tHelperSystem* )	g_theKernel.NewNode( _T( "CHelperSystem"), _T( "bin" ), _T("helper" ) );
	//19. 资源提供
	s_pResourceProvider	= (tResourceProvider*)	g_theKernel.NewNode( _T( "CResourceProvider"), _T( "bin" ), _T("resprovider" ) );
	//20.定时器
	tTimerSystem* timerSys = (tTimerSystem*)g_theKernel.NewNode(_T("CTimerManager"), _T("bin"), _T("timer") );
	timerSys->Initial(NULL);
	//21.物品传输系统
	s_pTransferItemSystem = (tTransferItemSystem*)g_theKernel.NewNode(_T("CTransferItemSystem"), _T("bin"), _T("transfer"));

	// 在创建主窗口之前先加载配置表
	s_pVariableSystem	->Initial(NULL);

	//-------------------------------------------------------------------
	// 创建主窗口
	CreateMainWnd();

	//-------------------------------------------------------------------
	// 初始化工作节点

	s_pEventSystem		->Initial(NULL);
	s_pGfxSystem		->Initial(&g_hMainWnd);
	s_pScriptSystem		->Initial(NULL);
	s_pDataBaseSystem	->Initial(NULL);
	s_pTimeSystem		->Initial(NULL);
	s_pNetManager		->Initial(NULL); 
	s_pWorldManager		->Initial(NULL); 
	s_pObjectManager	->Initial(NULL); 
//	if(s_pDebuger)		
//		s_pDebuger		->Initial(NULL); 
	if(s_pUISystem)		
		s_pUISystem		->Initial(NULL);
	s_pInputSystem		->Initial(NULL); 
	s_pSoundSystem		->Initial(&g_hMainWnd);
	s_pUIDataPool		->Initial(NULL);
	s_pDataPool			->Initial(NULL);
	s_pCursorMng		->Initial(&g_hInstance);
	s_pActionSystem		->Initial(NULL);
	s_pGameInterface	->Initial(NULL);
	s_pFakeObjSystem	->Initial(NULL);
	s_pHelperSystem		->Initial(NULL);
	s_pResourceProvider	->Initial(NULL);
	s_pTransferItemSystem->Initial(NULL);


	s_pSkillDataMgr	= new CSkillDataMgr;
	s_pSkillDataMgr->Init( s_pDataBaseSystem->GetDataBase( DBC_SKILL_DATA )->GetDBCFile() );

	s_pBuffImpactMgr = new CBuffImpactMgr;
	s_pBuffImpactMgr->Init( s_pDataBaseSystem->GetDataBase( DBC_BUFF_IMPACT )->GetDBCFile() );

	s_pDirectlyImpactMgr = new CDirectlyImpactMgr;
	s_pDirectlyImpactMgr->Init( s_pDataBaseSystem->GetDataBase( DBC_DIRECTLY_IMPACT )->GetDBCFile() );

	s_pBulletDataMgr = new CBulletDataMgr;
	s_pBulletDataMgr->Init( s_pDataBaseSystem->GetDataBase( DBC_BULLET_DATA ) );
	s_pBulletEntityManager = new CBulletEntityManager;
	
	// camp
	s_pCampDataMgr = new CampAndStandDataMgr_T;
	s_pCampDataMgr->InitFromDBMemory(s_pDataBaseSystem->GetDataBase(DBC_CAMP_AND_STAND)->GetDBCFile());

	s_pActionSetMgr	= new CActionSetMgr;
	s_pActionSetMgr->Init( "ActionSet/" );	

	// 每日活动功能
	s_pDaytipsDataMgr	= new DaytipsDataMgr;
	s_pDaytipsDataMgr->Init( s_pDataBaseSystem->GetDataBase( DBC_DAY_TIPS )->GetDBCFile() );
	
	// 任务表
	s_pQuestLogDataMgr	= new QuestLogDataMgr;
	s_pQuestLogDataMgr->Init( s_pDataBaseSystem->GetDataBase( DBC_QUEST_LOG )->GetDBCFile() );

	//-------------------------------------------------------------------
	// 创建Tick驱动
	INT nMaxFPS = s_pVariableSystem->GetAs_Int("System_MaxFPS");
	if(nMaxFPS < 5 || nMaxFPS >150) 
		nMaxFPS = 30;

	m_hTickEvent = ::CreateEvent(NULL, FALSE, FALSE, NULL);
	::ResetEvent(m_hTickEvent);
	m_hEventTimer = ::timeSetEvent((INT)(1000.0f/nMaxFPS), (INT)(1000.0f/nMaxFPS), EventTimerProc, 0, TIME_PERIODIC|TIME_CALLBACK_FUNCTION); 

	// ------------------------------------------------------------------
	// 通过关闭窗口事件,来实现初始化所有窗口。
	// 解决了在游戏中初始化窗口时卡的问题。

	std::vector< STRING > vParam;
	CHAR szTemp[MAX_PATH];

	_snprintf(szTemp, MAX_PATH, "%d", 0);
	vParam.push_back(szTemp);

	vParam.push_back("distance");

	_snprintf(szTemp, MAX_PATH, "%.3f", 1.0f);
	vParam.push_back(szTemp);

	CEventSystem::GetMe()->PushEvent(GE_OBJECT_CARED_EVENT, vParam);
}