Changed VerifySelected to emit useful errors insted of just the row name and number selected.
This commit is contained in:
+35
-7
@@ -194,16 +194,44 @@ namespace OptionRowHandlerUtil
|
|||||||
int GetOneSelection( const vector<bool> &vbSelected );
|
int GetOneSelection( const vector<bool> &vbSelected );
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void VerifySelected( SelectType st, const vector<bool> &vbSelected, const RString &sName )
|
inline void VerifySelected(SelectType st, vector<bool> &selected, const RString &sName)
|
||||||
{
|
{
|
||||||
int iNumSelected = 0;
|
int num_selected = 0;
|
||||||
if( st == SELECT_ONE )
|
if( st == SELECT_ONE )
|
||||||
{
|
{
|
||||||
ASSERT_M( vbSelected.size() > 0, ssprintf("%s: %i/%i", sName.c_str(), iNumSelected, int(vbSelected.size())) );
|
int first_selected= -1;
|
||||||
for( unsigned e = 0; e < vbSelected.size(); ++e )
|
if(selected.empty())
|
||||||
if( vbSelected[e] )
|
{
|
||||||
iNumSelected++;
|
LuaHelpers::ReportScriptErrorFmt("Option row %s requires only one "
|
||||||
ASSERT_M( iNumSelected == 1, ssprintf("%s: %i/%i", sName.c_str(), iNumSelected, int(vbSelected.size())) );
|
"thing to be selected, but the list of selected things has zero "
|
||||||
|
"elements.", sName.c_str());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for(unsigned int e= 0; e < selected.size(); ++e)
|
||||||
|
{
|
||||||
|
if(selected[e])
|
||||||
|
{
|
||||||
|
num_selected++;
|
||||||
|
if(first_selected == -1)
|
||||||
|
{
|
||||||
|
first_selected= static_cast<int>(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(num_selected != 1)
|
||||||
|
{
|
||||||
|
LuaHelpers::ReportScriptErrorFmt("Option row %s requires only one "
|
||||||
|
"thing to be selected, but %i out of %i things are selected.",
|
||||||
|
sName.c_str(), num_selected, static_cast<int>(selected.size()));
|
||||||
|
for(unsigned int e= 0; e < selected.size(); ++e)
|
||||||
|
{
|
||||||
|
if(selected[e] && e != first_selected)
|
||||||
|
{
|
||||||
|
selected[e]= false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user