本文整理汇总了C++中UIWindow::SetBindChar方法的典型用法代码示例。如果您正苦于以下问题:C++ UIWindow::SetBindChar方法的具体用法?C++ UIWindow::SetBindChar怎么用?C++ UIWindow::SetBindChar使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UIWindow
的用法示例。
在下文中一共展示了UIWindow::SetBindChar方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: UnSelectCreature
void CreatureManager::UnSelectCreature()
{
if (m_nSelectNum >= 0)
{
int nLastSelect = m_nSelectNum;
if (g_getRButtonState(App::sInstance().GetHGE()) == eRButtonState_Up)
{
Character* lastChar = GetCreature(nLastSelect);
if(lastChar!=NULL && lastChar->GetCamp()==eCamp_Friend && !(lastChar->GetFinish()))
{
//返回至原位置
eActionStage stage = lastChar->GetActionStage();
if(stage == eActionStage_HandleStage)
{
lastChar->SetActionStage(eActionStage_MoveStage);
lastChar->CancelMove();
//关闭操作界面
UIWindow* commandWindow = UISystem::sInstance().GetWindow(eWindowID_Command);
if(commandWindow)
{
commandWindow->SetShow(false);
}
}
//攻击阶段、技能阶段、使用物品阶段可以返回至操作阶段
else if(stage == eActionStage_AttackStage || stage == eActionStage_GoodStage || stage == eActionStage_SkillStage)
{
lastChar->SetActionStage(eActionStage_HandleStage);
//打开操作界面
UIWindow* commandWindow = UISystem::sInstance().GetWindow(eWindowID_Command);
if(commandWindow)
{
commandWindow->SetShow(true);
commandWindow->SetBindChar(lastChar);
}
}
//右键取消选中的友方,需要重置行动阶段,处于移动中的单位不可以当时取消
else if(stage == eActionStage_MoveStage && lastChar->GetCharacterState()==eCharacterState_Stand)
{
lastChar->SetActionStage(eActionStage_WaitStage);
m_nSelectNum = -1;
}
}
else
m_nSelectNum = -1;
}
}
}
示例2: SelectCreature
void CreatureManager::SelectCreature()
{
//友方回合才可以进行选择操作,包括查看敌方行动范围
if (m_eCampTurn == eCampTurn_Friend)
{
Block mouseBlock = App::sInstance().GetMouseBlock();
Character* selectChar = NULL;
if (mouseBlock.xpos!=-1 && mouseBlock.ypos!=-1)
{
selectChar = GetCreature(mouseBlock.xpos,mouseBlock.ypos);
//选中单位
if(selectChar!=NULL)
{
//需要拦截点击操作界面的消息
if (g_getLButtonState(App::sInstance().GetHGE()) == eLButtonState_Up && !(UISystem::sInstance().GetWindow(eWindowID_Command)->IsOnControl()))
{
int nLastSelect = m_nSelectNum;
if (selectChar->GetCamp() == eCamp_Friend )
{
//上次没有选择单位
if(nLastSelect == -1)
{
//选中的未行动友方进入移动阶段
if(!selectChar->GetFinish())
{
m_nSelectNum = selectChar->GetNum();
selectChar->SetActionStage(eActionStage_MoveStage);
}
}
//连续两次点击同一友方单位
else if(nLastSelect == selectChar->GetNum())
{
if(!selectChar->GetFinish())
{
//跳过移动阶段,进入操作阶段
selectChar->SetActionStage(eActionStage_HandleStage);
//打开操作界面
UIWindow* commandWindow = UISystem::sInstance().GetWindow(eWindowID_Command);
if(commandWindow)
{
commandWindow->SetShow(true);
commandWindow->SetBindChar(selectChar);
}
}
}
//其他情况
else
{
Character* lastChar = GetCreature(nLastSelect);
if(lastChar != NULL)
{
//上次点的是别的友方
if(lastChar->GetCamp() == eCamp_Friend)
{
if(lastChar->GetFinish() && !selectChar->GetFinish())
{
m_nSelectNum = selectChar->GetNum();
selectChar->SetActionStage(eActionStage_MoveStage);
}
// //上次的友方返回至待命阶段
// lastChar->SetActionStage(eActionStage_WaitStage);
// selectChar->SetActionStage(eActionStage_MoveStage);
}
else if(lastChar->GetCamp() == eCamp_Enemy)
{
if(!selectChar->GetFinish())
{
m_nSelectNum = selectChar->GetNum();
selectChar->SetActionStage(eActionStage_MoveStage);
}
}
}
else
//这里是错误分支,不可以运行到这里
return;
}
}
else if (selectChar->GetCamp() == eCamp_Enemy)
{
Character* lastChar = GetCreature(nLastSelect);
if(lastChar!=NULL)
{
if(lastChar->GetCamp()==eCamp_Friend)
{
if(lastChar->GetActionStage() == eActionStage_AttackStage)
{
//判断是否可以攻击到选中单位
if(lastChar->CanHitTarget(selectChar))
{
lastChar->SetTarget(selectChar->GetNum());
lastChar->GeginHit();
m_nSelectNum = -1;
return;
}
}
}
else if (lastChar->GetCamp() == eCamp_Enemy)
{
m_nSelectNum = selectChar->GetNum();
}
//.........这里部分代码省略.........