Exemple #1
0
/**
 @brief 증감량을 문자열로 만들어 돌려준다.
*/
_tstring XAdjParam::GetstrAdjParam( int adjParam ) const
{
    const auto pAdjParam = &(m_pCurrAry->m_adjParam[ adjParam ]);
    if( pAdjParam->valFixedImm >= 0 )		// 고정값이 디폴트가 아니면 고정치값만 적용한다
        return XFORMAT("%+d", (int)pAdjParam->valFixedImm );
    if( pAdjParam->valPercent )
        return XFORMAT( "%+.1f%%", pAdjParam->valPercent * 100.f );
    return XFORMAT( "%+d", (int)pAdjParam->valImm );
}
Exemple #2
0
void XSceneTrader::UpdateCharacter()
{
	// 리콜시간 텍스트 갱신
	UpdateRecallTimeCheck();

//	bool bChar = (ACCOUNT->GetTradeTimer()->IsOn() == 1);
//	const bool bTrader = (ACCOUNT->GettimerTrader().IsOn() == FALSE);
	const bool bTrader = ACCOUNT->IsReadyTrader();

	xSET_SHOW( this, "wnd.trader.char", bTrader );
	xSET_SHOW( this, "butt.trader.trade", bTrader );
	xSET_SHOW( this, "wnd.trader.recall", !bTrader );
// 	xSET_SHOW( this, "text.trader.recalltime", !bTrader );
	xSET_SHOW( this, "text.trader.whistle", !bTrader );
	xSET_SHOW( this, "text.trader.cash", !bTrader );
	if( !bTrader ) {
		// 무역상이 없으면
// 		xSET_TEXT( this, "text.trader.recalltime"
// 			, XE::Format( _T( "%s\n%d : %d : %d" ), XTEXT( 80131 ), 48, 12, 03 ) );
		xSET_TEXT( this, "text.trader.whistle", _T( "x1" ) );
		const int cashCost = ACCOUNT->GetCashForTraderRecall();
		xSET_TEXT( this, "text.trader.cash", XFORMAT( "x%d", cashCost ) );
		xSET_BUTT_HANDLER( this, "butt.trader.recall", &XSceneTrader::OnClickRecall );
	}
	OnClickTradeCancel(NULL, 0, 0);
}
Exemple #3
0
// =============================================================================
// Nat Ryall                                                         16-Apr-2008
// =============================================================================
void CGhost::SetState(t_PlayerState iState)
{
	switch (iState)
	{
	case PlayerState_Idle:
		{
			if (!m_pSprite->IsActiveAnimation("Idle"))
				m_pSprite->Play("Idle");
		}
		break;

	case PlayerState_Move:
	case PlayerState_Warp:
		{
			m_pEyes->SetArea(XFORMAT("F%d", m_iTransitionDir + 1));
			m_iMoveTime = m_pSprite->GetAnimation()->m_iAnimationTime;

			if (m_pCurrentBlock->m_iTileType == TileType_Entrance || (m_pTargetBlock && m_pTargetBlock->m_iTileType == TileType_Entrance))
				m_iMoveTime *= 3;
		}
		break;
	}

	CPlayer::SetState(iState);
}
Exemple #4
0
// =============================================================================
xbool Xen::CException::HandleError(xstring sMessage, xstring sCondition, xstring sFunction, xstring sFile, xint iLine)
{
	xstring sExceptionMessage;

#if !XRETAIL
	sExceptionMessage = XFORMAT
	(
		"Failed Condition: %s" XENDL "Function: %s" XENDL "Line: %d" XENDL XENDL "%s" XENDL XENDL "Would you like to debug?", 
		sCondition.c_str(), sFunction.c_str(), iLine, sMessage.c_str()
	);
#else
	sExceptionMessage = sMessage;
#endif

XLOG(sExceptionMessage.c_str());

#if XWINDOWS
	#if !XRETAIL
		xint iDialogResult = MessageBox(NULL, sExceptionMessage.c_str(), "Application Error", MB_YESNO | MB_ICONERROR | MB_APPLMODAL | MB_SETFOREGROUND | MB_DEFBUTTON1);

		if (iDialogResult == IDYES)
			return true;
	#endif
#endif
	
	throw CException(sExceptionMessage);
	return false;
}
Exemple #5
0
void XSceneTrader::UpdateSlidingResource(const char *key, XGAME::xtResource resource)
{
	if (m_slider[resource])	{
		const int maxRes = ACCOUNT->GetResource(resource);
		const int numCurr = int(maxRes * m_slider[resource]->GetCurr());
		const _tstring str1 = XE::NtS(numCurr);
		const _tstring str2 = XE::NtS(maxRes);
		xSET_TEXT(this, key, XFORMAT("%s / %s", str1.c_str(), str2.c_str()));
		m_resourceGold[resource] = int(numCurr * XGC->m_resourceRate[resource]);
		UpdateTotalGold();
	}
}
Exemple #6
0
int XSceneTrader::OnClickTradeCancel(XWnd *pWnd, DWORD p1, DWORD p2)
{
	// 슬라이드 텍스트 0으로 초기화
	for( int i = 0; i < 5; ++i ) {
		const int num = ACCOUNT->GetResource( (XGAME::xtResource)i );
		_tstring strText = XFORMAT("%d / %s", 0, XE::NtS(num));
		xSET_TEXTF( this
							, strText.c_str()
							, "text.trader.resource%d", i );
	}
	// 슬라이드 초기화
	for (int i = 0; i < XGAME::xRES_MAX; i++) {
		m_resourceGold[i] = 0;
		m_slider[i]->SetCurr(0.f);
	}
	UpdateTotalGold();		// 총 금액 업데이트
	return 1;
}
Exemple #7
0
void XEWinSocketSvr::DelUserProcess( XSPUserBase spUser )
{
	if( XBREAK(spUser == nullptr) )
		return;
	auto spConnect = spUser->GetspConnect();
	// spUser에게 삭제 이벤트를 보내고 리스트에서 삭제
	const ID idUser = spUser->GetidUser();
	m_pUserMng->DelUser( spUser );
#if _DEV_LEVEL <= DLV_DEV_EXTERNAL
	// 사람많으면 느려지니까 개발중에만 나오도록 바꿈.
//	auto spConnect = spUser->GetspConnect();
	if( XASSERT(spConnect) ) {
		TCHAR szLog[ 1024 ];
		_tcscpy_s( szLog, XFORMAT( "usermng del user: %s, idAcc=%d", spConnect->GetszIP(), idUser ) );
		XEServerMain::sGet()->DoLog( XE::xSLOG_DESTROY_USER, szLog, ( DWORD ) this );
	}
#endif					
}