/** @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 ); }
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); }
// ============================================================================= // 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); }
// ============================================================================= 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; }
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(); } }
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; }
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 }