当前位置: 首页>>代码示例>>C++>>正文


C++ Quest::CanShowUnsatified方法代码示例

本文整理汇总了C++中Quest::CanShowUnsatified方法的典型用法代码示例。如果您正苦于以下问题:C++ Quest::CanShowUnsatified方法的具体用法?C++ Quest::CanShowUnsatified怎么用?C++ Quest::CanShowUnsatified使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Quest的用法示例。


在下文中一共展示了Quest::CanShowUnsatified方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: getDialogStatus

uint32 Creature::getDialogStatus(Player *pPlayer, uint32 defstatus)
{
	bool wasReward  = false;
	bool wasRewardRep  = false;
	bool wasAvail   = false;
	bool wasIncompl = false;
	bool wasAnavail = false;

	bool wasAvailShow   = false;
	bool wasUnavailShow = false;

    uint32 quest_id;
    uint32 status;
    Quest *pQuest;

	for( std::list<uint32>::iterator i = mQuestIds.begin( ); i != mQuestIds.end( ); ++ i )
    {
        quest_id = *i;
        status = pPlayer->getQuestStatus(quest_id);
        pQuest = objmgr.GetQuest(quest_id);

		if ( pQuest == NULL ) continue;

		if ( !pQuest->PreReqSatisfied( pPlayer ) || 
			 !pQuest->IsCompatible( pPlayer ) ||
			  pQuest->RewardIsTaken( pPlayer ) 
			) continue;

		if ( status == QUEST_STATUS_INCOMPLETE ) wasIncompl = true;

		if ( status == QUEST_STATUS_COMPLETE )
		{
			if (pQuest->HasFlag( QUEST_SPECIAL_FLAGS_REPEATABLE ))			
				wasRewardRep = true; else
				wasReward  = true;
		}
		if ( status == QUEST_STATUS_AVAILABLE )
		{
			if ( pQuest->CanShowAvailable( pPlayer ) ) wasAvailShow = true;

			wasAvail   = true;
		}

		if ( status == QUEST_STATUS_UNAVAILABLE )
		{
			wasAnavail = true;
			if ( pQuest->CanShowUnsatified( pPlayer ) ) wasUnavailShow = true;

		}

        if ( status == QUEST_STATUS_NONE )
        {
			if (!pQuest->LevelSatisfied( pPlayer ))
			{
                pPlayer->addNewQuest(quest_id, QUEST_STATUS_UNAVAILABLE );
				if ( pQuest->CanShowUnsatified( pPlayer ) ) wasUnavailShow = true;

				wasAnavail = true;
			}
            else
			{
                pPlayer->addNewQuest(quest_id, QUEST_STATUS_AVAILABLE );
				if ( pQuest->CanShowAvailable( pPlayer ) ) wasAvailShow = true;

				wasAvail = true;
			}
        }
    }

   

	for( std::list<uint32>::iterator i = mInvolvedQuestIds.begin( ); i != mInvolvedQuestIds.end( ); ++ i )
    {
        quest_id = *i;
        status = pPlayer->getQuestStatus(quest_id);
        pQuest = objmgr.GetQuest(quest_id);

		if ( status == QUEST_STATUS_INCOMPLETE )
		{
			if ( pQuest->HasFlag( QUEST_SPECIAL_FLAGS_SPEAKTO ) )
			    wasReward = true; else
				wasIncompl = true;
		}
    }

	if (wasReward) return DIALOG_STATUS_REWARD;
	if (wasRewardRep) return DIALOG_STATUS_REWARD_REP;

	if (wasAvail)    
	{
		if (wasAvailShow)
			return DIALOG_STATUS_AVAILABLE; else
			return DIALOG_STATUS_CHAT;
	}

	if (wasIncompl)  return DIALOG_STATUS_INCOMPLETE;

	if ( defstatus != DIALOG_STATUS_NONE )
		return defstatus;

//.........这里部分代码省略.........
开发者ID:Artea,项目名称:mangos-svn,代码行数:101,代码来源:Creature.cpp


注:本文中的Quest::CanShowUnsatified方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。