示例#1
0
    private static bool CheckCondition(int questid, QuestConditionParam qcp)
    {
        uint             rst = UInt32.MaxValue;
        PlayerDataModule pdm = ModuleManager.Instance.FindModule <PlayerDataModule>();

        switch (qcp.mConditionType)
        {
        case QuestConditionType.Level:
            rst = (uint)pdm.GetLevel();
            break;

        case QuestConditionType.Money_:
            rst = pdm.GetProceeds((ProceedsType)qcp.mArg1);
            break;

        case QuestConditionType.Exp:
            rst = (uint)pdm.GetExp();
            break;

        case QuestConditionType.Item:
            rst = 0;
            break;

        case QuestConditionType.Stage_Unlock:
            rst = Convert.ToUInt32(pdm.IsStageUnlock(qcp.mArg1) ? 1 : 0);
            break;

        case QuestConditionType.Stage_Grade:
            rst = (uint)pdm.GetStageGrade(qcp.mArg1);
            break;

        case QuestConditionType.Battle_Score:
            rst = pdm.GetGrade();
            break;

        case QuestConditionType.Wing_Level:
            rst = pdm.GetWingLevel(qcp.mArg1);
            break;

        case QuestConditionType.Cost_Diamond:
            rst = pdm.GetRMBUsed();
            break;

        case QuestConditionType.Passted_Stage:
            rst = pdm.GetStagePassTimes(qcp.mArg1);
            if (rst > 0)
            {
                GameDebug.Log("Passted_Stage:" + rst);
            }
            break;

        case QuestConditionType.Passted_Zone:
            rst = pdm.GetZonePassTimes(qcp.mArg1);
            break;

        case QuestConditionType.Quest:

            rst = Convert.ToUInt32(pdm.IsQuestFinish(qcp.mArg1) ? 1 : 0);
            break;

        case QuestConditionType.Top_Level:
        {
            return(pdm.GetLevel() <= qcp.mValue);
        }

        case QuestConditionType.Tower_Floor:
        {
            GameDebug.Log("Tower_Floor" + pdm.GetChallengMaxFloor());
            return(pdm.GetChallengMaxFloor() >= qcp.mArg1);
        }

        default:
        {
            int totalProgress = pdm.GetQuestTotalProgress(questid);
            int progress      = pdm.getQuestProgress(questid);
            if (totalProgress != 0 && progress != 0)
            {
                if (totalProgress == progress)
                {
                    return(true);
                }
                if (totalProgress < progress)
                {
                    GameDebug.LogError("任务当前进度大于总进度 任务ID = " + questid);
                    return(false);
                }
            }
        }
        break;
        }

        if (UInt32.MaxValue == rst || qcp.mValue < 0)
        {
            return(false);
        }
        return(rst >= (uint)qcp.mValue);
    }