本文整理汇总了C++中Base类的典型用法代码示例。如果您正苦于以下问题:C++ Base类的具体用法?C++ Base怎么用?C++ Base使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Base类的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetSize
void ScrollControl::UpdateScrollBars()
{
if ( !m_InnerPanel )
{ return; }
if ( ContentsAreDocked() )
{
m_VerticalScrollBar->SetHidden( true );
m_HorizontalScrollBar->SetHidden( true );
m_InnerPanel->SetSize( GetSize() );
m_InnerPanel->SetPos( 0, 0 );
return;
}
int childrenWidth = 0;
int childrenHeight = 0;
//Get the max size of all our children together
for ( Base::List::iterator iter = m_InnerPanel->Children.begin(); iter != m_InnerPanel->Children.end(); ++iter )
{
Base* pChild = *iter;
childrenWidth = Utility::Max( childrenWidth, pChild->Right() );
childrenHeight = Utility::Max( childrenHeight, pChild->Bottom() );
}
if ( m_bCanScrollH )
{
m_InnerPanel->SetSize( Utility::Max( Width(), childrenWidth ), Utility::Max( Height(), childrenHeight ) );
}
else
{
m_InnerPanel->SetSize( Width() - ( m_VerticalScrollBar->Hidden() ? 0 : m_VerticalScrollBar->Width() - 1 ), Utility::Max( Height(), childrenHeight ) );
}
float wPercent = ( float ) Width() / ( float )( childrenWidth + ( m_VerticalScrollBar->Hidden() ? 0 : m_VerticalScrollBar->Width() ) );
float hPercent = ( float ) Height() / ( float )( childrenHeight + ( m_HorizontalScrollBar->Hidden() ? 0 : m_HorizontalScrollBar->Height() ) );
if ( m_bCanScrollV )
{ SetVScrollRequired( hPercent >= 1 ); }
else
{ m_VerticalScrollBar->SetHidden( true ); }
if ( m_bCanScrollH )
{ SetHScrollRequired( wPercent >= 1 ); }
else
{ m_HorizontalScrollBar->SetHidden( true ); }
m_VerticalScrollBar->SetContentSize( m_InnerPanel->Height() );
m_VerticalScrollBar->SetViewableContentSize( Height() - ( m_HorizontalScrollBar->Hidden() ? 0 : m_HorizontalScrollBar->Height() ) );
m_HorizontalScrollBar->SetContentSize( m_InnerPanel->Width() );
m_HorizontalScrollBar->SetViewableContentSize( Width() - ( m_VerticalScrollBar->Hidden() ? 0 : m_VerticalScrollBar->Width() ) );
int newInnerPanelPosX = 0;
int newInnerPanelPosY = 0;
if ( CanScrollV() && !m_VerticalScrollBar->Hidden() )
{
newInnerPanelPosY = - ( ( m_InnerPanel->Height() ) - Height() + ( m_HorizontalScrollBar->Hidden() ? 0 : m_HorizontalScrollBar->Height() ) ) * m_VerticalScrollBar->GetScrolledAmount();
}
if ( CanScrollH() && !m_HorizontalScrollBar->Hidden() )
{
newInnerPanelPosX = - ( ( m_InnerPanel->Width() ) - Width() + ( m_VerticalScrollBar->Hidden() ? 0 : m_VerticalScrollBar->Width() ) ) * m_HorizontalScrollBar->GetScrolledAmount();
}
m_InnerPanel->SetPos( newInnerPanelPosX , newInnerPanelPosY );
}
示例2: init
void init(const PlayBoardBase<H, W>& board)
{
Base::init(board);
std::fill_n(leftMost, arrayH, 0);
std::fill_n(rightMost, arrayH, width()-1);
}
示例3: pa
inline
typename
enable_if2
<
(is_arma_sparse_type<T1>::value && is_arma_type<T2>::value && is_same_type<typename T1::elem_type, typename T2::elem_type>::value),
SpMat<typename T1::elem_type>
>::result
operator/
(
const SpBase<typename T1::elem_type, T1>& x,
const Base<typename T2::elem_type, T2>& y
)
{
arma_extra_debug_sigprint();
const SpProxy<T1> pa(x.get_ref());
const Proxy<T2> pb(y.get_ref());
arma_debug_assert_same_size(pa.get_n_rows(), pa.get_n_cols(), pb.get_n_rows(), pb.get_n_cols(), "element-wise division");
SpMat<typename T1::elem_type> result(pa.get_n_rows(), pa.get_n_cols());
// The compiler should be smart enough to optimize out the inner if/else statement entirely
typename SpProxy<T1>::const_iterator_type it = pa.begin();
uword new_n_nonzero;
while(it.pos() < pa.get_n_nonzero())
{
if(Proxy<T2>::prefer_at_accessor == false)
{
const typename T1::elem_type val = (*it) / pb[(it.col() * pb.get_n_rows()) + it.row()];
if(val != 0)
{
++new_n_nonzero;
}
}
else
{
const typename T1::elem_type val = (*it) / pb.at(it.row(), it.col());
if(val != 0)
{
++new_n_nonzero;
}
}
++it;
}
result.mem_resize(new_n_nonzero);
typename SpProxy<T1>::const_iterator_type it2 = pa.begin();
uword cur_pos = 0;
while(it2.pos() < pa.get_n_nonzero())
{
if(Proxy<T2>::prefer_at_accessor == false)
{
const typename T1::elem_type val = (*it2) / pb[(it2.col() * pb.get_n_rows()) + it2.row()];
if(val != 0)
{
access::rw(result.values[cur_pos]) = val;
access::rw(result.row_indices[cur_pos]) = it2.row();
++access::rw(result.col_ptrs[it2.col() + 1]);
++cur_pos;
}
}
else
{
const typename T1::elem_type val = (*it2) / pb.at(it2.row(), it2.col());
if(val != 0)
{
access::rw(result.values[cur_pos]) = val;
access::rw(result.row_indices[cur_pos]) = it2.row();
++access::rw(result.col_ptrs[it2.col() + 1]);
++cur_pos;
}
}
++it2;
}
// Fix column pointers
for(uword col = 1; col <= result.n_cols; ++col)
{
access::rw(result.col_ptrs[col]) += result.col_ptrs[col - 1];
}
return result;
}
示例4: DebriefingStat
/**
* Prepares debriefing: gathers Aliens, Corpses, Artefacts, UFO Components.
* Adds the items to the craft.
* Also calculates the soldiers experience, and possible promotions.
* If aborted, only the things on the exit area are recovered.
*/
void DebriefingState::prepareDebriefing()
{
_stats.push_back(new DebriefingStat("STR_ALIENS_KILLED", false));
_stats.push_back(new DebriefingStat("STR_ALIEN_CORPSES_RECOVERED", false));
_stats.push_back(new DebriefingStat("STR_LIVE_ALIENS_RECOVERED", false));
_stats.push_back(new DebriefingStat("STR_ALIEN_ARTIFACTS_RECOVERED", false));
_stats.push_back(new DebriefingStat("STR_ALIEN_BASE_CONTROL_DESTROYED", false));
_stats.push_back(new DebriefingStat("STR_CIVILIANS_KILLED_BY_ALIENS", false));
_stats.push_back(new DebriefingStat("STR_CIVILIANS_KILLED_BY_XCOM_OPERATIVES", false));
_stats.push_back(new DebriefingStat("STR_CIVILIANS_SAVED", false));
_stats.push_back(new DebriefingStat("STR_XCOM_OPERATIVES_KILLED", false));
//_stats.push_back(new DebriefingStat("STR_XCOM_OPERATIVES_RETIRED_THROUGH_INJURY", false));
_stats.push_back(new DebriefingStat("STR_XCOM_OPERATIVES_MISSING_IN_ACTION", false));
_stats.push_back(new DebriefingStat("STR_TANKS_DESTROYED", false));
_stats.push_back(new DebriefingStat("STR_XCOM_CRAFT_LOST", false));
_stats.push_back(new DebriefingStat("STR_UFO_POWER_SOURCE", true));
_stats.push_back(new DebriefingStat("STR_UFO_NAVIGATION", true));
_stats.push_back(new DebriefingStat("STR_UFO_CONSTRUCTION", true));
_stats.push_back(new DebriefingStat("STR_ALIEN_FOOD", true));
_stats.push_back(new DebriefingStat("STR_ALIEN_REPRODUCTION", true));
_stats.push_back(new DebriefingStat("STR_ALIEN_ENTERTAINMENT", true));
_stats.push_back(new DebriefingStat("STR_ALIEN_SURGERY", true));
_stats.push_back(new DebriefingStat("STR_EXAMINATION_ROOM", true));
_stats.push_back(new DebriefingStat("STR_ALIEN_ALLOYS", true));
_stats.push_back(new DebriefingStat("STR_ELERIUM_115", true));
SavedGame *save = _game->getSavedGame();
SavedBattleGame *battle = save->getBattleGame();
bool aborted = battle->isAborted();
Craft* craft = 0;
std::vector<Craft*>::iterator craftIterator;
Base* base = 0;
int playerInExitArea = 0; // if this stays 0 the craft is lost...
int playersSurvived = 0; // if this stays 0 the craft is lost...
for (std::vector<Base*>::iterator i = save->getBases()->begin(); i != save->getBases()->end(); ++i)
{
// in case we have a craft - check which craft it is about
for (std::vector<Craft*>::iterator j = (*i)->getCrafts()->begin(); j != (*i)->getCrafts()->end(); ++j)
{
if ((*j)->isInBattlescape())
{
craft = (*j);
base = (*i);
craftIterator = j;
craft->returnToBase();
craft->setLowFuel(true);
craft->setInBattlescape(false);
}
}
}
// UFO crash/landing site disappears
for (std::vector<Ufo*>::iterator i = save->getUfos()->begin(); i != save->getUfos()->end(); ++i)
{
if ((*i)->isInBattlescape())
{
delete *i;
save->getUfos()->erase(i);
break;
}
}
// lets see what happens with units
for (std::vector<BattleUnit*>::iterator j = battle->getUnits()->begin(); j != battle->getUnits()->end(); ++j)
{
UnitStatus status = (*j)->getStatus();
UnitFaction faction = (*j)->getFaction();
int value = (*j)->getUnit()->getValue();
Soldier *soldier = dynamic_cast<Soldier*>((*j)->getUnit());
if (status == STATUS_DEAD)
{
if (faction == FACTION_HOSTILE)
{
addStat("STR_ALIENS_KILLED", 1, value);
}
if (faction == FACTION_PLAYER)
{
if (soldier != 0)
{
addStat("STR_XCOM_OPERATIVES_KILLED", 1, -value);
for (std::vector<Soldier*>::iterator i = base->getSoldiers()->begin(); i != base->getSoldiers()->end(); ++i)
{
if ((*i) == soldier)
{
delete (*i);
base->getSoldiers()->erase(i);
break;
}
}
}
//.........这里部分代码省略.........
示例5: __py_pyDestroyEntity
//-------------------------------------------------------------------------------------
PyObject* Base::__py_pyDestroyEntity(PyObject* self, PyObject* args, PyObject * kwargs)
{
Base* pobj = static_cast<Base*>(self);
if(pobj->initing())
{
PyErr_Format(PyExc_AssertionError,
"%s::destroy(): %d initing, reject the request!\n",
pobj->scriptName(), pobj->id());
PyErr_PrintEx(0);
return NULL;
}
static char * keywords[] =
{
const_cast<char *> ("deleteFromDB"),
const_cast<char *> ("writeToDB"),
NULL
};
if(pobj->isDestroyed())
{
PyErr_Format(PyExc_AssertionError, "%s::destroy: %d is destroyed!\n",
pobj->scriptName(), pobj->id());
PyErr_PrintEx(0);
return NULL;
}
if(pobj->creatingCell() || pobj->cellMailbox() != NULL)
{
PyErr_Format(PyExc_Exception, "%s::destroy: id:%i has cell! creatingCell=%s\n",
pobj->scriptName(), pobj->id(),
pobj->creatingCell() ? "true" : "false");
PyErr_PrintEx(0);
return NULL;
}
PyObject* pyDeleteFromDB = NULL;
PyObject* pyWriteToDB = NULL;
if (!PyArg_ParseTupleAndKeywords(args, kwargs, "|OO",
keywords, &pyDeleteFromDB, &pyWriteToDB))
{
PyErr_Format(PyExc_AssertionError, "%s::destroy: %d ParseTupleAndKeywords(deleteFromDB, &writeToDB) error!\n",
pobj->scriptName(), pobj->id());
PyErr_PrintEx(0);
return NULL;
}
bool deleteFromDB = (pyDeleteFromDB != NULL) ?
(PyObject_IsTrue(pyDeleteFromDB) ? true : false) : false;
bool writeToDB = (pyWriteToDB != NULL) ?
(PyObject_IsTrue(pyWriteToDB) ? true : false) : pobj->hasDB();
if(deleteFromDB || writeToDB)
{
// 有可能已经请求了writeToDB但还未返回写入的dbid
// 这种情况需要返回给用户一个错误, 用户可以继续尝试这个操作
if(pobj->hasDB() && pobj->dbid() == 0)
{
PyErr_Format(PyExc_AssertionError, "%s::destroy: id:%i has db, current dbid is 0. "
"please wait for dbmgr to processing!\n",
pobj->scriptName(), pobj->id());
PyErr_PrintEx(0);
return NULL;
}
}
pobj->onDestroyEntity(deleteFromDB, writeToDB);
pobj->destroyEntity();
S_Return;
}