TIMESTAMP_STRUCT* CAutoTableManager::GetTableItemInLineAsDATETIME(UINT uItemIndex, UINT uLineIndex)
{
    m_pDataTime = (TIMESTAMP_STRUCT*)this->GetTableItemInLine(uItemIndex, uLineIndex);
    AssertEx(AL_NORMAL, m_pDataTime,_T("m_pDataTime为空,函数失败"));
    AssertEx(AL_NORMAL, (m_pAi[uItemIndex].m_pAta == MS_SQL_TYPE_DATETIME),_T("类型不匹配,错误传参"));
    return m_pDataTime;
}
FLOAT* CAutoTableManager::GetTableItemInLineAsFLOAT(UINT uItemIndex, UINT uLineIndex)
{
    m_pFloat = (FLOAT*)this->GetTableItemInLine(uItemIndex, uLineIndex);
    AssertEx(AL_NORMAL, m_pFloat,_T("m_pFloat为空,函数失败"));
    AssertEx(AL_NORMAL, (m_pAi[uItemIndex].m_pAta == MS_SQL_TYPE_FLOAT),_T("类型不匹配,错误传参"));
    return m_pFloat;
}
VOID CAutoTableManager::GetTablePointer(UINT& uItemIndex, UINT& uLineIndex)
{
    AssertEx(AL_NORMAL, (uItemIndex < m_uItemCount), _T("uItemIndex访问越界,错误传参"));
    AssertEx(AL_NORMAL, (uLineIndex < m_uLineCount), _T("uLineIndex访问越界,错误传参"));
    uItemIndex = m_uItemIndex;
    uLineIndex = m_uLineIndex;
}
Esempio n. 4
0
		BOOL GaiBangSkill004_T::EffectOnUnitOnce(Obj_Character& rMe, Obj_Character& rTar, BOOL bCriticalFlag) const
		{
			__ENTER_FUNCTION
			SkillInfo_T& rSkillInfo = rMe.GetSkillInfo();
			TargetingAndDepletingParams_T& rParams = rMe.GetTargetingAndDepletingParams();

			INT nDepleteStrikePointSegment = rParams.GetDepletedStrikePoints()/STRIKE_POINT_SEGMENT_SIZE;
			if(1>nDepleteStrikePointSegment)
			{
				AssertEx(FALSE,"[GaiBangSkill004_T::TakeEffectNow]: Depleted strike point segment illegal!");
				nDepleteStrikePointSegment=1;
			}
			else if(MAX_STRIKE_POINT_SEGMENT<nDepleteStrikePointSegment)
			{
				AssertEx(FALSE,"[GaiBangSkill004_T::TakeEffectNow]: Depleted strike point segment illegal!");
				nDepleteStrikePointSegment=MAX_STRIKE_POINT_SEGMENT;
			}
			INT nAdditionalAttackPower = rSkillInfo.GetDescriptorByIndex(nDepleteStrikePointSegment)->GetValue();
			// init impact1
			OWN_IMPACT impact;
			
			CombatCore_T myCombatCore;
			myCombatCore.Reset();			
			myCombatCore.SetAdditionalAttackLight(nAdditionalAttackPower);
			myCombatCore.GetResultImpact(rMe, rTar, impact);

			// register impact event
			RegisterImpactEvent(rTar, rMe, impact, rParams.GetDelayTime(), bCriticalFlag);
			return TRUE;
			__LEAVE_FUNCTION
			return FALSE;
		}
TCA* CAutoTableManager::GetTableItemInLineAsTCHAR(UINT uItemIndex, UINT uLineIndex)
{
    m_pTchar = (TCA*)this->GetTableItemInLine(uItemIndex, uLineIndex);
    AssertEx(AL_NORMAL, m_pTchar,_T("m_pTchar为空,函数失败"));
    AssertEx(AL_NORMAL, (m_pAi[uItemIndex].m_pAta == MS_SQL_TYPE_TCHAR),_T("类型不匹配,错误传参"));
    return m_pTchar;
}
Esempio n. 6
0
// DllGame启动线程函数
DWORD WINAPI RrTetris::RrTetrisThread(LPVOID)
{
    RrTetris::gs_lpCMsPacketFactory = NEW CMsPacketFactory(DG2S_PACKET_MAX_COUNT);
    AssertEx(AL_CATAST, gs_lpCMsPacketFactory, _T("内存不足"));
    RrTetris::gs_lpCMsPacketFactory->Register(g_lpCMsBasePacket, PACKET_MAX_COUNT);

    RrTetrisWritePacket(0,NULL);

    // 等待基本初始化
    while(!g_IsMsBaseInit)
    {
        NO_CONTINUOUS;
    }

    // 申请日志对象
    RrTetris::gs_pMsLog = NEW CMsLog(_T("%s/Log/Dll_RrTetris_C.log"), TRUE);
    AssertEx(AL_CATAST, gs_pMsLog, _T("内存不足"));

    // 申请配置对象
    RrTetris::gs_pRrTetrisConfig = NEW CMsIni(_T("%s/RrTetris/RrTetris.ini"));
    AssertEx(AL_CATAST, gs_pRrTetrisConfig, _T("内存不足"));


    ::PostThreadMessage(gs_dwGameStationLogicThreadId, MSM_DLL_EXIT, 0, 0);
    SAFE_DELETE(RrTetris::gs_lpCMsPacketFactory);

    // 等待基本释放
    while(g_IsMsBaseInit)
    {
        NO_CONTINUOUS;
    }
    return 0;
}
uint CGLockTargetHandler::Execute( CGLockTarget* pPacket, Player* pPlayer )
{
	__ENTER_FUNCTION

	GamePlayer* pGamePlayer = (GamePlayer*)pPlayer ;
	Assert( pGamePlayer ) ;

	Obj_Human* pHuman = pGamePlayer->GetHuman() ;

	if(NULL==pHuman)
	{
		AssertEx(FALSE,"[CGLockTargetHandler::Execute]: NULL Obj_Human pointer found!!");
		return PACKET_EXE_ERROR ;
	}
	Scene* pScene = pHuman->getScene() ;
	if( pScene==NULL )
	{
		Assert(FALSE) ;
		return PACKET_EXE_ERROR ;
	}

	//检查线程执行资源是否正确
	Assert( MyGetCurrentThreadID()==pScene->m_ThreadID ) ;

	ObjID_t nMeID = pHuman->GetID();
	if( nMeID == INVALID_ID )
	{
		Assert(FALSE) ;
		return PACKET_EXE_ERROR ;
	}
	//update target
	if(NULL==pPacket)
	{
		AssertEx(FALSE,"[CGLockTargetHandler::Execute]: NULL packet pointer found!!");
		return PACKET_EXE_ERROR ;
	}

	pHuman->SetLockedTarget(pPacket->getTargetID());
	// 当锁定的目标是NPC时将会触发NPC的泡泡说话
	Obj* pTarget = pScene->GetObjManager()->GetObj(pPacket->getTargetID());
	if (pTarget->GetObjType() == Obj::OBJ_TYPE_MONSTER)
	{
		((Obj_Monster*)pTarget)->ProcessPaoPao();
	}
	
	g_pLog->FastSaveLog( LOG_FILE_1, "CGLockTargetHandler: ok obj=%d scene=%d", 
		nMeID, pScene->SceneID() ) ;

	return PACKET_EXE_CONTINUE ;

	__LEAVE_FUNCTION

	return PACKET_EXE_ERROR ;
}
Esempio n. 8
0
VOID PNGAPI CMsPngImage::FlushPng(png_structp png_ptr)
{
    CMsPngImage* pPngImage = (CMsPngImage*)png_get_io_ptr(png_ptr);

    if (pPngImage->m_hFile)
    {
        BOOL bRet = ::FlushFileBuffers(pPngImage->m_hFile);
        AssertEx(bRet, _T("写入图片失败"));
    }
    else
    {
        AssertEx(pPngImage->m_hFile, _T("写入图片失败"));
    }
}
// 初始化表格管理器
BOOL CAutoTableManager::Init(VOID)
{
    _ENTER_FUN_C;

    for (UINT i = 0; i < m_uItemCount; i++)
    {
        switch (m_pAi[i].m_pAta)
        {
        case MS_SQL_TYPE_INT:
            {
                m_pInt = new INT[m_uLineCount];
                AssertEx(AL_NORMAL, m_pInt, _T("m_pInt为空,内存不足"));
                ZeroMemory(m_pInt, sizeof(INT) * m_uLineCount);
                m_pAi[i].m_lpItem = m_pInt;
            }break;
        case MS_SQL_TYPE_TCHAR:
            {
                m_pTchar = new TCA[m_uLineCount];
                AssertEx(AL_NORMAL, m_pTchar, _T("m_pInt为空,内存不足"));
                ZeroMemory(m_pTchar, sizeof(TCA) * m_uLineCount);
                m_pAi[i].m_lpItem = m_pTchar;
            }break;
        case MS_SQL_TYPE_FLOAT:
            {
                m_pFloat = new FLOAT[m_uLineCount];
                AssertEx(AL_NORMAL, m_pFloat, _T("m_pInt为空,内存不足"));
                ZeroMemory(m_pFloat, sizeof(FLOAT) * m_uLineCount);
                m_pAi[i].m_lpItem = m_pFloat;
            }break;
        case MS_SQL_TYPE_DATETIME:
            {
                m_pDataTime = new TIMESTAMP_STRUCT[m_uLineCount];
                AssertEx(AL_NORMAL, m_pDataTime, _T("m_pInt为空,内存不足"));
                ZeroMemory(m_pDataTime, sizeof(TIMESTAMP_STRUCT) * m_uLineCount);
                m_pAi[i].m_lpItem = m_pDataTime;
            }break;
        default:
            {
                AssertEx(AL_NORMAL, FALSE,_T("无效类型,错误逻辑"));
            }
        }
    }
    m_uValidLine = 0;
    m_IsInit = TRUE;
    // 返回成功
    return TRUE;

    _LEAVE_FUN_DISPOSE_END_C;
    return FALSE;
}
Esempio n. 10
0
// DllGame启动线程函数
DWORD WINAPI RrTetris::RrTetrisThread(LPVOID)
{
    RrTetris::gs_lpCMsPacketFactory = NEW CMsPacketFactory(DG2S_PACKET_MAX_COUNT);
    AssertEx(AL_CATAST, gs_lpCMsPacketFactory, _T("内存不足"));
    RrTetris::gs_lpCMsPacketFactory->Register(g_lpCMsBasePacket, PACKET_MAX_COUNT);

    RrTetris::gs_pCMsBaseRun = NEW CMsBaseRun(_T("%s/Log/Dll_RrTetris_Assertx.log"), _T("RrTetrisClass"), _T("RrTetris"), RrTetrisHookProc, RrTetrisWndProc, NULL);
    AssertEx(AL_CATAST, gs_pCMsBaseRun, _T("内存不足"));
    S_2DEngineWndInfo s_ewi;
    s_ewi.m_bTopMost= FALSE;
    s_ewi.m_nX      = CW_USEDEFAULT;
    s_ewi.m_nY      = 0;
    s_ewi.m_nWidth  = CW_USEDEFAULT;
    s_ewi.m_nHeight = 0;
    s_ewi.m_dwStyle = WS_OVERLAPPEDWINDOW;

    // 等待基本初始化
    while(!g_IsMsBaseInit)
    {
        NO_CONTINUOUS;
    }

    // 申请日志对象
    RrTetris::gs_pMsLog = NEW CMsLog(_T("%s/Log/Dll_RrTetris_C.log"), TRUE);
    AssertEx(AL_CATAST, gs_pMsLog, _T("内存不足"));

    // 申请配置对象
    RrTetris::gs_pRrTetrisConfig = NEW CMsIni(_T("%s/RrTetris/RrTetris.ini"));
    AssertEx(AL_CATAST, gs_pRrTetrisConfig, _T("内存不足"));

    RrTetris::gs_hModule = ::GetModuleHandle(_T("Dll_RrTetris_C.dll"));
    RrTetris::gs_hInstance = (HINSTANCE)RrTetris::gs_hModule;
    if (RrTetris::gs_hInstance)
    {
        g_pCMsWinMain->Init(RrTetris::gs_hInstance, NULL, _T(""), SW_SHOW, &s_ewi);
        g_pCMsWinMain->Run();
        g_pCMsWinMain->WaitQuit();
    }
    ::PostThreadMessage(gs_dwGameStationLogicThreadId, MSM_DLL_EXIT, (WPARAM)RrTetris::gs_hModule, 0);
    SAFE_DELETE(RrTetris::gs_pCMsBaseRun);
    SAFE_DELETE(RrTetris::gs_lpCMsPacketFactory);

    // 等待基本释放
    while(g_IsMsBaseInit)
    {
        NO_CONTINUOUS;
    }
    return 0;
}
Esempio n. 11
0
Bitmap::Bitmap(int width, int height, int bpp)
 : m_width(width), m_height(height), m_bpp(bpp), m_data(NULL) {
	AssertEx(m_bpp == 1 || m_bpp == 8 || m_bpp == 16 || m_bpp == 24 || m_bpp == 32
		|| m_bpp == 96 || m_bpp == 128, "Invalid number of bits per pixel");
	AssertEx(width > 0 && height > 0, "Invalid bitmap size");

	if (bpp == 96 || bpp == 128)
		m_gamma = 1.0f;
	else
		m_gamma = -1.0f; // sRGB

	// 1-bit masks are stored in a packed format. 
	m_size = (size_t) std::ceil(((double) m_width * m_height * m_bpp) / 8.0);
	m_data = static_cast<uint8_t *>(allocAligned(m_size));
}
Esempio n. 12
0
// PNG 读取回调
VOID PNGAPI CMsPngImage::ReadPng(png_structp png_ptr, png_bytep data, png_size_t length)
{
    CMsPngImage* pPngImage = (CMsPngImage*)png_get_io_ptr(png_ptr);

    if (pPngImage->m_hFile)
    {
        DWORD dwReadSize;
        BOOL bRet = ::ReadFile(pPngImage->m_hFile, data, length, &dwReadSize, NULL);
        AssertEx(bRet, _T("读取图片失败"));
    }
    else
    {
        AssertEx(pPngImage->m_hFile, _T("读取图片失败"));
    }
}
Esempio n. 13
0
 VOID StdImpact030_T::OnFadeOut(OWN_IMPACT& rImp, Obj_Character& rMe) const
 {
     __ENTER_FUNCTION
     Obj_Character* pTar=NULL;
     Scene* pScene = rMe.getScene();
     if(NULL==pScene)
     {
         AssertEx(FALSE, "[StdImpact030_T::OnFadeOut]: Empty scene pointer found!!");
         return;
     }
     OBJLIST Targets;
     if(FALSE==ScanUnitForTarget(rImp, rMe, *(rMe.getWorldPos()), (FLOAT)GetScanRadius(rImp), GetEffectedObjCount(rImp), Targets))
     {
         return;
     }
     INT nImpact = GetSubImpactIndex(rImp);
     if(INVALID_ID==nImpact)
     {
         return;
     }
     // impacts init finished
     for(INT nIdx=0; Targets.m_Count>nIdx;++nIdx)
     {
         pTar = (Obj_Character*)Targets.m_aObj[nIdx];
         if(NULL!=pTar)
         {
             pScene->GetEventCore().RegisterBeSkillEvent(pTar->GetID(), rMe.GetID(), BEHAVIOR_TYPE_HOSTILITY, 500);
             g_ImpactCore.SendImpactToUnit(*pTar, nImpact, rMe.GetID(), 500);
         }
     }
     return;
     __LEAVE_FUNCTION
 }
Esempio n. 14
0
VOID SceneTimer::FreeTimer(INT index)
{
	if( index <0 || index >= maxCount )
	{
#ifdef _DEBUG
		CHAR szTemp[MAX_FILE_PATH];
		sprintf(szTemp,"index = %d",index);
		AssertEx(FALSE,szTemp) ;
#endif
		return ;
	}

	InitOne(index);//释放时初始化

	MyTimer* temp = (MyTimer*)&(m_pTimers[index]);

	*((MyTimer**)temp) =  head;

	head = temp;	


#if _DEBUG
	m_currentUse--;
#endif

}
Esempio n. 15
0
UINT    LBAskAuthHandler::Execute(LBAskAuth* pPacket, Player* pPlayer )
{
    __ENTER_FUNCTION
        
        TID CurrentThreadID = MyGetCurrentThreadID();
        
        if(CurrentThreadID == g_pServerManager->m_ThreadID)
        {
            Assert(pPacket);

            ServerPlayer* pServerPlayer  = (ServerPlayer*)pPlayer;

            Assert(pServerPlayer);

            pServerPlayer->SendPacket(pPacket);
        }
        else
        {
            AssertEx(FALSE,"LBAskAuthHandler 线程资源执行错误!");
        }
        
        Log::SaveLog(LOGIN_LOGFILE,"LBAskAuthHandler::Execute() ....OK");

        return PACKET_EXE_CONTINUE;

    __LEAVE_FUNCTION

        return PACKET_EXE_ERROR;
}
Esempio n. 16
0
	AreaLuminaire(const Properties &props) : Luminaire(props), m_shape(NULL) {
		AssertEx(m_luminaireToWorld.isIdentity(), "Error: non-identity transformation found. "
			"Area luminaires inherit their transformation from their associated shape!");
		m_intensity = props.getSpectrum("intensity", Spectrum(1));
		m_type = EDiffuseDirection | EOnSurface;
		m_intersectable = true;
	}
Esempio n. 17
0
KVOID Kylin::Scene::SpawnScene()
{
    Assert(KylinRoot::GetSingletonPtr()->GetGameFramePtr());
    m_pSceneLoader = KylinRoot::GetSingletonPtr()->GetGameFramePtr()->CreateSceneLoader();

    //-----------------------------------------------------------------
    // ╪стьЁ║╬╟
    Ogre::FileInfoListPtr resPtr = Ogre::ResourceGroupManager::getSingletonPtr()->findResourceFileInfo("General", m_kSceneHag.m_sSceneFile);
    Ogre::FileInfo fInfo = (*(resPtr->begin()));

    KSTR sName = fInfo.archive->getName();
    sName += "/" + m_kSceneHag.m_sSceneFile;
    //------------------------------------------------------------------
    // ╪сть╠Ё╬╟рТюж

    KylinRoot::GetSingletonPtr()->CreateSound("$BackgroundSound",m_kSceneHag.m_nBgSound);

    //------------------------------------------------------------------
    // ж╢ппluaнд╪Ч
    KSTR sLua = StringUtils::replace(sName,".xml",".lua");
    OgreRoot::GetSingletonPtr()->GetScriptVM()->ExecuteScriptFile(sLua.data());
    //-----------------------------------------------------------------
    // ╪стьlevel
    m_pSceneLoader->LoadLevel(m_kSceneHag.m_sSceneFile);
    //-----------------------------------------------------------------
    // ╪стьЁ║╬╟ё╛NPC╣х
    if (!m_pSceneLoader->LoadScene(m_kSceneHag.m_sSceneFile))
    {
        AssertEx(NULL,"Ё║╬╟╪стьй╖╟эё║");
        return;
    }
    //-----------------------------------------------------------------
    // ╪стьмФ╪р
    m_pSceneLoader->LoadPlayer();
}
Esempio n. 18
0
UINT	LBAskRegAuthHandler::Execute(LBAskRegAuth* pPacket, Player* pPlayer )
{
	__ENTER_FUNCTION
		
		TID CurrentThreadID = MyGetCurrentThreadID();
		if(CurrentThreadID == g_pServerManager->m_ThreadID)
		{
			Assert(pPacket);
			BillingPlayer* pBillPlayer= (BillingPlayer*)pPlayer;
			Assert(pBillPlayer);
			
			LBRegPassPort	Msg;
			Msg.SetAccount(pPacket->GetAccount());
			Msg.SetSuperPassWord(pPacket->GetSuperPassWord());
			Msg.SetPassWord(pPacket->GetPassWord());
			Msg.SetPacketIndex(pPacket->GetPlayerID());
			Msg.SetIPAddr(pPacket->GetIP());
			Msg.SetEmail(pPacket->GetEmail());

			pBillPlayer->SendPacket(&Msg);
		}
		else
		{
			AssertEx(FALSE,"LBAskRegAuthHandler 线程资源执行错误!");
		}
		
		g_pLog->FastSaveLog(LOG_FILE_0,"LBAskRegAuthHandler::Execute() Acc=%s IP=%s....OK", pPacket->GetAccount(),pPacket->GetIP() );

		return PACKET_EXE_CONTINUE;

	__LEAVE_FUNCTION

		return PACKET_EXE_ERROR;
}
Esempio n. 19
0
	VOID DBCFile::CreateIndex(INT nColum, const CHAR* szFileName)
	{
		if(nColum <0 || nColum >= m_nFieldsNum || m_nIndexColum==nColum) return;

		m_hashIndex.clear();

		for(INT i=0; i<(INT)m_nRecordsNum; i++)
		{
			FIELD* p = &(m_vDataBuf[i*m_nFieldsNum]);

			FIELD_HASHMAP::iterator itFind = m_hashIndex.find(p->iValue);
			if(itFind != m_hashIndex.end())
			{
				CHAR szTemp[260];
				_snprintf(szTemp, 260, "[%s]Multi index at line %d(SAME:value=%d)", szFileName, i+1, p->iValue);
#ifdef GAME_CLIENT
				throw std::exception(szTemp);
#else
				AssertEx(FALSE,szTemp);
#endif
				return;
			}
			m_hashIndex.insert(std::make_pair(p->iValue, p));
		}
	}
UINT SSScenePlayerCountHandler::Execute(SSScenePlayerCount* pPacket, Player* pPlayer )
{
    __ENTER_FUNCTION    
    
        TID CurrentThreadID = MyGetCurrentThreadID();

        if(CurrentThreadID == g_pServerManager->m_ThreadID)
        {
            //修改g_WorldPlayerCounter 中数据
            Assert(pPacket);
            g_WorldPlayerCounter.m_WorldPlayerCount = pPacket->GetTotalPlayerCount();
            //修改场景负载数据
            //todo..
        }
        else
        {
            AssertEx(FALSE,"SSScenePlayerCountHandler 线程资源执行错误!");
        }
        
        Log::SaveLog(LOGIN_LOGFILE,"SSScenePlayerCountHandler::Execute()....OK,WorldPlayerCount = %d",
            g_WorldPlayerCounter.m_WorldPlayerCount);
        return PACKET_EXE_CONTINUE;

    __LEAVE_FUNCTION    

        return PACKET_EXE_ERROR;
}
Esempio n. 21
0
BOOL RootTrap01_T::EffectOnChar(Obj_Special& rThis, Obj_Character& rTar) const
{
    SpecialObjData_T const* pData = rThis.GetDataRecord();
    if(NULL==pData)
    {
        AssertEx(FALSE,"[RootTrap01_T::EffectOnChar]: Can't find Data record.");
        return FALSE;
    }
    INT nImpactID = pData->GetDescriptorByIndex(0)->GetValue();
    Time_t nContinuance = pData->GetDescriptorByIndex(1)->GetValue();
    OWN_IMPACT impact;
    SOT_Root_T ImpactLogic;
    ImpactLogic.InitStruct(impact);
    impact.m_nCasterID = rThis.GetOwnerID();
    impact.m_nSkillID = INVALID_ID;
    impact.m_nImpactID = nImpactID;
    ImpactLogic.SetContinuance(impact, nContinuance);
    impact.m_nPRI = rThis.GetXinFaLevelForBuffMutex();

    Scene* pScene = rThis.getScene();
    if(NULL!=pScene)
    {
        pScene->GetEventCore().RegisterBeSkillEvent(rTar.GetID(), rThis.GetOwnerID(), BEHAVIOR_TYPE_HOSTILITY, 500);
        pScene->GetEventCore().RegisterImpactEvent(rTar.GetID(), rThis.GetOwnerID(), impact, 500);
    }
    return FALSE;
}
Graphics::Graphics(const RECT& rect) : stage(rect) {
	linePainter = new LinePainter(rect);

	AssertEx(rect.bottom - rect.top == rect.right - rect.left, "only square stage is supported");

	camera = new Camera(moveSpeed, rotateSpeed, rect.bottom - rect.top);

	LightAttribute lightAttr;
	lightAttr.diffuse = Color(255, 255, 255);
	lightAttr.direction = Vector3::right;
	lightAttr.lightOn = true;
	lightAttr.lightType = LightTypeDirection;
	lightAttr.position.Set(200, 0, 0);
	camera->AddLight(Light(lightAttr));

	lightAttr.ambient = Color(90, 90, 90);
	lightAttr.lightType = LightTypeAmbient;
	lightAttr.lightOn = true;
	camera->AddLight(Light(lightAttr));

	zBuffer = new ZBuffer(stage.right - stage.left, stage.bottom - stage.top);

	VertexContainer vertices;
	IndexedTriangleContainer triangles;
	CreatePlane(vertices, triangles, Texture("bmp/metal.bmp"), 2, 3);
	street = new Object();
	//street->Initialize(vertices, triangles, 5.f, 12.f, Vector3(), Vector3());
	AddObject(street);

	xmin = stage.left + 1;
	xmax = stage.right - 2;
	ymin = stage.top + 1;
	ymax = stage.bottom - 2;
}
Esempio n. 23
0
// 释放完成端口
BOOL CMsIocpManager::Release(VOID)
{
    _ENTER_FUN_C;
    this->LogIocp(_T("[开始释放!]"));

    BOOL bRet = TRUE;

    this->Stop(TRUE, TRUE);

    if (m_hCompetionPort)
    {
        bRet = ::CloseHandle(m_hCompetionPort);
        AssertEx(AL_CATAST, bRet, _T("释放完成端口失败,函数失败"));
        m_hCompetionPort = NULL;
    }
    m_IsInit = FALSE;

    this->LogIocp(_T("[释放成功!]"));
    // 返回成功
    return TRUE;

    _LEAVE_FUN_DISPOSE_CONTINUE_C;
    this->LogIocp(_T("[释放失败!]"));
    return FALSE;
}
Esempio n. 24
0
MonteCarloIntegrator::MonteCarloIntegrator(const Properties &props) : SampleIntegrator(props) {
	/* Depth to begin using russian roulette */
	m_rrDepth = props.getInteger("rrDepth", 10);

	/* Longest visualized path length (\c -1 = infinite). 
	   A value of \c 1 will visualize only directly visible light sources.
	   \c 2 will lead to single-bounce (direct-only) illumination, and so on. */
	m_maxDepth = props.getInteger("maxDepth", -1);

	/**
	 * This parameter specifies the action to be taken when the geometric
	 * and shading normals of a surface inconsistently classify a ray as
	 * being located *both* on the front and back-side.
	 *
	 * When \c strictNormals is set to \c false, the shading normal has 
	 * precedence, and rendering proceeds normally at the risk of
	 * introducing small light leaks (this is the default).
	 *
	 * When \c strictNormals is set to \c true, the random walk is
	 * terminated when encountering such a situation. This may
	 * produce black silhouette edges on badly tesselated meshes.
	 */
	m_strictNormals = props.getBoolean("strictNormals", false);

	AssertEx(m_rrDepth > 0, "rrDepth == 0 breaks the computation of alpha values!");
}
Esempio n. 25
0
Item*	HumanItemLogic::GetBankItem(Obj_Human* pHuman,UINT BankIndex)
{
	__ENTER_FUNCTION

		Assert(BankIndex<MAX_BANK_SIZE);
	Assert(BankIndex>=0);
	if(BankIndex<0||BankIndex>MAX_BANK_SIZE)
	{
		AssertEx(FALSE,"HumanItemLogic::GetBankItem() BankIndex 不在合法范围 ");
		return NULL;
	}

	ItemContainer*	pBankContainer = pHuman->GetBankContain();

	Assert(pBankContainer);

	if(!pBankContainer)
	{
		return NULL;
	}

	return pBankContainer->GetItem((UINT)BankIndex);

	__LEAVE_FUNCTION

		return NULL;
}
Esempio n. 26
0
// 初始化
BOOL CDistricNode::Init(DWORD dwRoomNodeCount)
{
    m_dwChildCount = dwRoomNodeCount;
    if (m_dwChildCount)
    {
        m_lppChildList = NEW lpCBaseNode[m_dwChildCount];
        if (m_lppChildList)
        {
            FOR_x_TO(i, m_dwChildCount)
            {
                m_lppChildList[i] = NEW CRoomNode;
                AssertEx(m_lppChildList[i], _T("内存不足"));
            }

            if (g_pCGameStation)
            {
                //DWORD dwDeskCountInEveryRoom = g_pCGameStation->GetConfig()->dwDeskCountInEveryRoom;
                FOR_x_TO(i, m_dwChildCount)
                {
                    m_lppChildList[i]->Init(0);
                }
                return TRUE;
            }
            else
            {
Esempio n. 27
0
UINT LWChangeNameHandler::Execute(LWChangeName* pPacket, Player* pPlayer )
{
__ENTER_FUNCTION
	
	TID CurrentThreadID = MyGetCurrentThreadID();

	if(CurrentThreadID == g_pServerManager->m_ThreadID)
	{

		Assert(pPacket);
		
		ServerPlayer* pServerPlayer  = (ServerPlayer*)pPlayer;
		
		Assert(pServerPlayer);

		pServerPlayer->SendPacket(pPacket);
	}
	else
	{
		AssertEx(FALSE,"LWChangeNameHandler 线程资源执行错误!");
	}
	g_pLog->FastSaveLog(LOG_FILE_0,"LWChangeNameHandler::Execute() ....OK");

	return PACKET_EXE_CONTINUE;

__LEAVE_FUNCTION

	return PACKET_EXE_ERROR;
}
Esempio n. 28
0
	uint CGDispelBuffReqHandler::Execute( CGDispelBuffReq* pPacket, Player* pPlayer )
	{
		__ENTER_FUNCTION

		GamePlayer* pGamePlayer = (GamePlayer*)pPlayer ;
		Assert( pGamePlayer ) ;

		Obj_Human* pHuman = pGamePlayer->GetHuman() ;

		if(NULL==pHuman)
		{
			AssertEx(FALSE,"[CGDispelBuffReqHandler::Execute]: NULL Obj_Human pointer found!!");
			return PACKET_EXE_ERROR ;
		}
		Scene* pScene = pHuman->getScene() ;
		if( pScene==NULL )
		{
			AssertEx(FALSE,"[CGDispelBuffReqHandler::Execute]: NULL scene pointer found!!") ;
			return PACKET_EXE_ERROR ;
		}

		//检查线程执行资源是否正确
		Assert( MyGetCurrentThreadID()==pScene->m_ThreadID ) ;

		ObjID_t nMeID = pHuman->GetID();
		if( nMeID == INVALID_ID )
		{
			Assert(FALSE) ;
			return PACKET_EXE_ERROR ;
		}
		//update target
		if(NULL==pPacket)
		{
			AssertEx(FALSE,"[CGDispelBuffReqHandler::Execute]: NULL packet pointer found!!");
			return PACKET_EXE_ERROR ;
		}
		Obj_Character& rMe = *((Obj_Character*)pHuman);
		rMe.Impact_UnRegisterImpactBySN(pPacket->GetSN());
		g_pLog->FastSaveLog( LOG_FILE_1, "CGDispelBuffReqHandler: ok obj=%d scene=%d", 
			nMeID, pScene->SceneID() ) ;
		return PACKET_EXE_CONTINUE ;

		__LEAVE_FUNCTION

		return PACKET_EXE_ERROR ;
	}
Esempio n. 29
0
		VOID DS_EMei014_T::OnFadeOut(OWN_IMPACT& rImp, Obj_Character& rMe) const
		{
			__ENTER_FUNCTION
			Obj_Character* pTar=NULL;

			OBJLIST Targets;
			if(FALSE==ScanUnitForTarget(rImp, rMe, *(rMe.getWorldPos()), (FLOAT)GetScanRadius(rImp), GetEffectedObjNumber(rImp), Targets))
			{
				return;
			}
			// init impact
			OWN_IMPACT impact;
			DI_ModifyRage_T const* pImpactLogic = (DI_ModifyRage_T const*)g_ImpactLogicList.GetLogicById(DI_MODIFY_RAGE);
			if(NULL==pImpactLogic)
			{
				AssertEx(FALSE,"[SOT_EMei014_T::OnFadeOut]:Can't find the logic for DI_MODIFY_RAGE. check now.");
				return;
			}

			pImpactLogic->InitStruct(impact);	
			impact.m_nSkillID = rImp.m_nSkillID;
			impact.m_nCasterID = rMe.GetID();
			impact.m_nImpactID = GetSubImpactID(rImp);
			INT nRage = GetRageModification(rImp);
			0<nRage?nRage=-nRage:NULL;
			pImpactLogic->SetRageModification(impact, nRage);
			Scene* pScene = rMe.getScene();
			if(NULL==pScene)
			{
				AssertEx(FALSE,"[SOT_EMei014_T::OnFadeOut]:Empty Scene pointer. check now.");
				return;
			}
			// impacts init finished
			for(INT nIdx=0; Targets.m_Count>nIdx;++nIdx)
			{
				pTar = (Obj_Character*)Targets.m_aObj[nIdx];
				if(NULL==pTar)
				{
					continue;
				}
				pScene->GetEventCore().RegisterBeSkillEvent(pTar->GetID(), rMe.GetID(), BEHAVIOR_TYPE_HOSTILITY, 500);
				pScene->GetEventCore().RegisterImpactEvent(pTar->GetID(), rMe.GetID(), impact, 500);
			}
			return;
			__LEAVE_FUNCTION
		}
Esempio n. 30
0
RecyclePlayerManager::~RecyclePlayerManager()
{
    __ENTER_FUNCTION

    AssertEx(GetPlayerNumber() == 0,"场景中还有玩家存在,强制回收玩家管理器!");

    __LEAVE_FUNCTION
}