コード例 #1
0
    public void OnExtraAwardClicked(int index)
    {
        // 翻牌次数用尽
        if (mLeftExtraAwardTimes < 1)
        {
            return;
        }

        if (mRes == null)
        {
            return;
        }

        if (index < 0 || index >= mItemExtraList.Count)
        {
            return;
        }

        StageBalanceItemUI item = mItemExtraList[index];

        if (item == null)
        {
            return;
        }

        // 翻过了
        if (item.IsAwarded())
        {
            return;
        }

        int idx = mRes.mExtraAwardTimes - mLeftExtraAwardTimes;

        if (idx < 0 || mLeftExtraAwardTimes < 0)
        {
            return;
        }

        if (mRes.mExtraAwardCostId >= 0)
        {
            if (DataManager.ConditionTable.ContainsKey(mRes.mExtraAwardCostId))
            {
                ConditionTableItem condItem = DataManager.ConditionTable[mRes.mExtraAwardCostId] as ConditionTableItem;
                if (condItem != null)
                {
                    // 消耗不足
                    if (!ConditionManager.Instance.CheckCondition(condItem.mType, condItem.mParam1, condItem.mParam2, condItem.mValue * (idx + 1)))
                    {
                        PopTipManager.Instance.AddNewTip(StringHelper.GetErrorString(ERROR_CODE.ERR_SCENE_PASS_FAILED_AWARD_NOCOST, FontColor.Red));
                        //PromptUIManager.Instance.AddNewPrompt(StringHelper.GetErrorString(ERROR_CODE.ERR_SCENE_PASS_FAILED_AWARD_NOCOST));
                        return;
                    }
                }
            }
        }

        role_dropaward drop = StageDataManager.Instance.GetExtraRandomAward(idx);

        if (drop == null)
        {
            return;
        }

        if (drop.drop_id_type == 1)
        {
            item.Award(ConditionManager.Instance.GetConditionIcon(ConditionType.ITEM, drop.drop_id, -1), ConditionManager.Instance.GetConditionText(ConditionType.ITEM, drop.drop_id, -1, drop.drop_num));
        }
        else
        {
            item.Award(ConditionManager.Instance.GetConditionIcon(drop.drop_id), ConditionManager.Instance.GetConditionText(drop.drop_id));
        }

        //mExtraAwardsList.RemoveAt(0);

        mLeftExtraAwardTimes--;

        UpdateExtraAwardTimes();
    }
コード例 #2
0
    // 掉落首次&&通关&&Boss奖励
    public void DropPassAward()
    {
        ObjectBase obj = PlayerController.Instance.GetControlObj();

        if (obj == null)
        {
            return;
        }

        // 首次通关掉落
        PlayerDataModule module = ModuleManager.Instance.FindModule <PlayerDataModule>();

        if (!module.IsStageHasPassed(mSubRes.resID))
        {
            List <role_dropaward> fpList = StageDataManager.Instance.GetFirstPassAwards();
            if (fpList != null)
            {
                for (int i = 0; i < fpList.Count; ++i)
                {
                    role_dropaward fpAward = fpList[i];
                    if (fpAward != null)
                    {
                        if (fpAward.drop_id_type == 0)
                        {
                            GameDebug.LogWarning("掉落物的Dropbox表不使用ConditionId了.");
                        }
                        else
                        {
                            List <PickInitParam> paramList = new List <PickInitParam>();
                            if (SceneObjManager.CreatePickInitParam(Pick.PickType.ITEM, -1, fpAward.drop_id, obj.GetPosition(), 0, out paramList, true, Pick.FlyType.DROP_DOWN, false))
                            {
                                foreach (PickInitParam param in paramList)
                                {
                                    CreateSprite(param);
                                }
                            }
                        }
                    }
                }
            }
        }

        Vector3 pos = BossDeadPos != Vector3.zero ? BossDeadPos : obj.GetPosition();

        if (pos == null)
        {
            return;
        }

        // 通关随机掉落
        List <role_dropaward> dropList = StageDataManager.Instance.GetBossKillAwards();

        if (dropList != null && dropList.Count > 0)
        {
            for (int i = 0; i < dropList.Count; ++i)
            {
                role_dropaward dropAward = dropList[i];
                if (dropAward != null)
                {
                    if (dropAward.drop_id_type == 0)
                    {
                        GameDebug.LogWarning("掉落物的Dropbox表不使用ConditionId了.");
                    }
                    else
                    {
                        List <PickInitParam> paramList = new List <PickInitParam>();
                        if (SceneObjManager.CreatePickInitParam(Pick.PickType.ITEM, -1, dropAward.drop_id, obj.GetPosition(), 0, out paramList, true, Pick.FlyType.FLY_OUT, false))
                        {
                            foreach (PickInitParam param in paramList)
                            {
                                CreateSprite(param);
                            }
                        }
                    }
                }
            }
        }

        // 金币随机掉落
        uint gold = StageDataManager.Instance.GetGoldAwards();

        if (gold != 0 && gold != uint.MaxValue)
        {
            List <PickInitParam> paramList = new List <PickInitParam>();
            if (SceneObjManager.CreatePickInitParam(Pick.PickType.MONEY, 3, (int)gold, pos, 0, out paramList, true, Pick.FlyType.FLY_OUT, false))
            {
                foreach (PickInitParam param in paramList)
                {
                    CreateSprite(param);
                }
            }
        }
    }