From 69b732185ea7176d6ca0e8c1f239cd6fa0e426c2 Mon Sep 17 00:00:00 2001 From: Todd Stinson Date: Tue, 14 Feb 2012 17:41:35 -0800 Subject: PATH-198: Hooking up the path status indicator to some existing state information. --- indra/newview/llfloaterpathfindingconsole.cpp | 42 ++++++++++++++++++++-- indra/newview/llfloaterpathfindingconsole.h | 2 ++ .../default/xui/en/floater_pathfinding_console.xml | 8 +++-- 3 files changed, 48 insertions(+), 4 deletions(-) diff --git a/indra/newview/llfloaterpathfindingconsole.cpp b/indra/newview/llfloaterpathfindingconsole.cpp index 62f7b9c85c..eccea867c7 100644 --- a/indra/newview/llfloaterpathfindingconsole.cpp +++ b/indra/newview/llfloaterpathfindingconsole.cpp @@ -97,9 +97,13 @@ BOOL LLFloaterPathfindingConsole::postBuild() mCharacterWidthSlider->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onCharacterWidthSet, this)); mCharacterTypeRadioGroup = findChild("character_type"); - llassert(mCharacterTypeRadioGroup != NULL); + llassert(mCharacterTypeRadioGroup != NULL); mCharacterTypeRadioGroup->setCommitCallback(boost::bind(&LLFloaterPathfindingConsole::onCharacterTypeSwitch, this)); + mPathTestingStatus = findChild("path_test_status"); + llassert(mPathTestingStatus != NULL); + updatePathTestStatus(); + return LLFloater::postBuild(); } @@ -125,6 +129,7 @@ BOOL LLFloaterPathfindingConsole::handleAnyMouseClick(S32 x, S32 y, MASK mask, E mHasEndPoint = true; } generatePath(); + updatePathTestStatus(); return TRUE; } @@ -316,6 +321,7 @@ LLFloaterPathfindingConsole::LLFloaterPathfindingConsole(const LLSD& pSeed) mEditTestTabContainer(NULL), mCharacterWidthSlider(NULL), mCharacterTypeRadioGroup(NULL), + mPathTestingStatus(NULL), mNavMeshCnt(0), mHasStartPoint(false), mHasEndPoint(false) @@ -421,6 +427,7 @@ void LLFloaterPathfindingConsole::onShowWorldToggle() void LLFloaterPathfindingConsole::onCharacterWidthSet() { generatePath(); + updatePathTestStatus(); } void LLFloaterPathfindingConsole::onCharacterTypeSwitch() @@ -451,7 +458,7 @@ void LLFloaterPathfindingConsole::onCharacterTypeSwitch() llassert(0); break; } - + updatePathTestStatus(); } void LLFloaterPathfindingConsole::onViewCharactersClicked() @@ -468,6 +475,7 @@ void LLFloaterPathfindingConsole::onClearPathClicked() { mHasStartPoint = false; mHasEndPoint = false; + updatePathTestStatus(); } void LLFloaterPathfindingConsole::generatePath() @@ -478,3 +486,33 @@ void LLFloaterPathfindingConsole::generatePath() LLPathingLib::getInstance()->generatePath(mPathData); } } + +void LLFloaterPathfindingConsole::updatePathTestStatus() +{ + static const LLColor4 warningColor = LLUIColorTable::instance().getColor("DrYellow"); + + std::string statusText(""); + LLStyle::Params styleParams; + + if (!mHasStartPoint && !mHasEndPoint) + { + statusText = getString("pathing_choose_start_and_end_points"); + styleParams.color = warningColor; + } + else if (!mHasStartPoint && mHasEndPoint) + { + statusText = getString("pathing_choose_start_point"); + styleParams.color = warningColor; + } + else if (mHasStartPoint && !mHasEndPoint) + { + statusText = getString("pathing_choose_end_point"); + styleParams.color = warningColor; + } + else + { + statusText = getString("pathing_path_valid"); + } + + mPathTestingStatus->setText((LLStringExplicit)statusText, styleParams); +} diff --git a/indra/newview/llfloaterpathfindingconsole.h b/indra/newview/llfloaterpathfindingconsole.h index 7f8e269459..8f4b7d625e 100644 --- a/indra/newview/llfloaterpathfindingconsole.h +++ b/indra/newview/llfloaterpathfindingconsole.h @@ -109,6 +109,7 @@ private: void onClearPathClicked(); void generatePath(); + void updatePathTestStatus(); LLRootHandle mSelfHandle; LLCheckBoxCtrl *mShowNavMeshCheckBox; @@ -121,6 +122,7 @@ private: LLTabContainer *mEditTestTabContainer; LLSliderCtrl *mCharacterWidthSlider; LLRadioGroup *mCharacterTypeRadioGroup; + LLTextBase *mPathTestingStatus; LLNavMeshDownloadObserver mNavMeshDownloadObserver[10]; int mCurrentMDO; diff --git a/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml b/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml index 1d479d6b24..166d0d8143 100644 --- a/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml +++ b/indra/newview/skins/default/xui/en/floater_pathfinding_console.xml @@ -17,6 +17,10 @@ No navmesh for region. Pathfinding is not enabled for this region. Cannot find pathing library implementation. + Please choose start and end points. + Please choose start point. + Please choose end point. + Path is shown in blue. - Result: No path found.