#include "stdafx.h" /// 2011.02.08 - prodongi #include "CharacterInfo/SUICharacterInfoSubAddedWnd.h" #include "CharacterInfo/SUICharacterInfoWnd.h" #include "Arena\\ArenaUtility.h" #include "CommonUtil.h" #include #include "SGameMessage.h" #include "SPlayerInfoMgr.h" #include "SNetMessage.h" #include "SMessage.h" #include "SStringDB.h" //#include "Util.h" bool SUICharacterInfoSubAddedWnd::InitControls( KPoint kPos ) { bool ret = SUIWnd::InitControls(kPos); m_moralGageCube = GetChild("added_gauge_cube"); m_moralGage = GetChild("added_gauge"); return ret; } void SUICharacterInfoSubAddedWnd::refreshAll() { refreshPropensity(); } void SUICharacterInfoSubAddedWnd::refreshGameScore(SMSG_INSTANCE_GAME_SCORE* score) { if (score) { std::string str, strTag; strTag = "<#ffffff>"; str = strTag + CStringUtil::GetCommaNumberString( score->deathmatch_kill_count ); SetChildCaption( "text_victory_num", str.c_str()); str = strTag + CStringUtil::GetCommaNumberString( score->deathmatch_death_count ); SetChildCaption( "text_lose_num", str.c_str()); strTag = "<#ffffff>"; str = strTag + CStringUtil::GetCommaNumberString( score->holicpoint ); SetChildCaption( "text_holic_num", str.c_str()); str = strTag + CStringUtil::GetCommaNumberString( score->bearroad_ranking ); SetChildCaption( "text_rank_num", str.c_str()); str = CStringUtil::GetCommaNumberString("<#ffffff>", score->battle_arena_point); SetChildCaption("text_arena_num_00", str.c_str()); str = CStringUtil::GetCommaNumberString("<#ffffff>", score->battle_arena_mvp_count); SetChildCaption("text_arena_mvp_num_00", str.c_str()); struct sSetArenaScore { public: sSetArenaScore() : m_totalWin(0), m_totalLose(0) {} void setCaption(SUIWnd* wnd, int win, int lose, int index) { setCaption(wnd, "text_arena_record_win_%02d", "<#1061da>", win, index); setCaption(wnd, "text_arena_record_lose_%02d", "<#9e0b0f>", lose, index); setCaptionTotal(wnd, "text_winning_rate_num_%02d", win, lose, index); m_totalWin += win; m_totalLose += lose; } private: void setCaption(SUIWnd* wnd, char const* format, char const* color, int score, int index) { std::string str, id; XStringUtil::Format(id, format, index); std::string tag; XStringUtil::Format(tag, "%s", color); str = CStringUtil::GetCommaNumberString(tag.c_str(), score); wnd->SetChildCaption(id.c_str(), str.c_str()); } void setCaptionTotal(SUIWnd* wnd, char const* format, int win, int lose, int index) { int p = 0; int total = win + lose; if (0 != total) p = (win * 100)/total; std::string str, id; XStringUtil::Format(id, format, index); XStringUtil::Format(str, "%d%%", p); wnd->SetChildCaption(id.c_str(), str.c_str()); } public: int m_totalWin; int m_totalLose; }; sSetArenaScore setScore; for (int m = 0; m < sArenaUtility::MAX_MODE_NUM; ++m) { setScore.setCaption(this, score->battle_arena_record[m][0], score->battle_arena_record[m][1], m+1); } setScore.setCaption(this, setScore.m_totalWin, setScore.m_totalLose, 0); } else { SetChildCaption( "text_victory_num", ""); SetChildCaption( "text_lose_num", ""); SetChildCaption( "text_holic_num", ""); SetChildCaption( "text_rank_num", ""); } } void SUICharacterInfoSubAddedWnd::refreshPropensity() { SPlayerInfo & info = m_PlayerInfoMgr.GetPlayerInfo(); //이모럴 __int64 moral = info.GetMoral(); char const* fontColor; if (moral == 0) { fontColor = "<#FFFFFF>"; } if( moral < 0 ) { moral = _abs64(moral); fontColor = "<#1D79D7>"; } else { fontColor = "<#AE0000>"; } // bintitle. 2011.11.07. int => __int64. __int64 moralQuotient = moral/10000; int moralRemainder = moral%10000; SetChildCaption("text_immoral_num_evil_01", CStringUtil::StringFormat("%s%I64d", fontColor, moralQuotient).c_str()); SetChildCaption("text_immoral_num_evil_02", CStringUtil::StringFormat("
%s%d", fontColor, moralRemainder).c_str()); //PK int index; if( info.GetStatus() & TS_ENTER::PlayerInfo::FLAG_PK_ON ) index = 6403; else index = 6404; SetChildCaption( "text_pk_status_on_off", CStringUtil::StringFormat( "<#ffffff>%s", S(index) ).c_str() ); //PK COUNT SetChildCaption( "text_pk_num", CStringUtil::StringFormat( "<#ffffff>%d",info.GetPk_count() ).c_str() ); //학살 횟수 SetChildCaption( "text_kill_num", CStringUtil::StringFormat( "<#ffffff>%d",info.GetDk_count() ).c_str() ); // moral gage int moralPos = calcMoralGagePos(info.GetMoral()); KPoint offset(m_moralGage->GetRect().left, m_moralGageCube->GetRect().top); m_moralGageCube->MovePos(moralPos + offset.x + 2, offset.y); } // bintitle. 2011.11.07. int => __int64. int SUICharacterInfoSubAddedWnd::calcMoralGagePos(__int64 moral) const { int moralNeutral = 110000; int moralTotal = 220000; int gageWidth = m_moralGage->GetRect().GetWidth(); int cubeWidth = m_moralGageCube->GetRect().GetWidth(); int gageRealWidth = gageWidth - cubeWidth; float moralInterval = (float)gageRealWidth/(float)moralTotal; __int64 pos; moral /= 10000; if (0 == moral) // 중립 { pos = moralNeutral; } else { bool good = (0 > moral) ? true : false; moral = _abs64(moral); if( 110000 <= moral ) moral = 110000; if (good) pos = moralNeutral + moral; else pos = moralNeutral - moral; } int _pos = (int)((double)pos * moralInterval); return _pos; } void SUICharacterInfoSubAddedWnd::setExpand(bool expand, bool applyParent) { m_isExpand = expand; /// parent if (applyParent) { SUICharacterInfoWnd* parent = dynamicCast(GetParent()); parent->setExpand(expand); } bool show = expand ? true : false; /// 데스매치 전적 SetChildShow("text_added_01", show); SetChildShow("text_vicroty", show); SetChildShow("text_victory_num", show); SetChildShow("text_lose", show); SetChildShow("text_lose_num", show); SetChildShow("added_table_01", show); /// 베어로드 전적 SetChildShow("text_added_02", show); SetChildShow("text_holic", show); SetChildShow("text_holic_num", show); SetChildShow("text_p", show); SetChildShow("text_rank", show); SetChildShow("text_rank_num", show); SetChildShow("text_rank_01", show); SetChildShow("added_table_02", show); SetChildShow("tab_select_cyan_01", false); SetChildShow("tab_select_cyan_02", false); if (!expand) SetChildShow("tab_select_cyan_01", true); else SetChildShow("tab_select_cyan_02", true); setShowFoldButton(expand); }