// 得到关卡解锁等级
    public int GetStageUnlockLevel(int stageId)
    {
        if (!DataManager.Scene_StageSceneTable.ContainsKey(stageId))
        {
            return(0);
        }

        System.Type type = typeof(Scene_StageSceneTableItem);
        Scene_StageSceneTableItem listRes = DataManager.Scene_StageSceneTable[stageId] as Scene_StageSceneTableItem;

        for (uint i = 0; i < Scene_StageSceneTableItem.MAX_UNLOCK_CONDITION_COUNT; ++i)
        {
            System.Reflection.FieldInfo fieldid = type.GetField("mUnlockCondId" + i.ToString());
            int unlockcondid = (int)fieldid.GetValue(listRes);
            if (unlockcondid < 0)
            {
                continue;
            }

            if (!DataManager.ConditionTable.ContainsKey(unlockcondid))
            {
                continue;
            }

            ConditionTableItem condRes = DataManager.ConditionTable[unlockcondid] as ConditionTableItem;
            if (condRes.mType == ConditionType.LEVEL)
            {
                return(condRes.mValue);
            }
        }

        return(0);
    }
Beispiel #2
0
    public static bool CheckCondition(int conditionid)
    {
        ConditionTableItem  cti = DataManager.ConditionTable[conditionid] as ConditionTableItem;
        QuestConditionParam qcp = new QuestConditionParam();

        qcp.mConditionType = (int)cti.mType;
        qcp.mArg1          = cti.mParam1;
        qcp.mArg2          = cti.mParam2;
        qcp.mValue         = cti.mValue;
        return(CheckCondition(-1, qcp));
    }
    /// <summary>
    /// 条件图标
    /// </summary>
    /// <param name="conditionId">条件表Id</param>
    /// <returns></returns>
    public string GetConditionIcon(int conditionId)
    {
        if (!DataManager.ConditionTable.ContainsKey(conditionId))
        {
            return(null);
        }

        ConditionTableItem res = DataManager.ConditionTable[conditionId] as ConditionTableItem;

        if (res == null)
        {
            return(null);
        }

        return(GetConditionIcon(res.mType, res.mParam1, res.mParam2));
    }
    /// <summary>
    /// 检查是否满足条件
    /// </summary>
    /// <param name="conditionId">条件表Id</param>
    /// <returns>是否满足</returns>
    public bool CheckCondition(int conditionId)
    {
        if (!DataManager.ConditionTable.ContainsKey(conditionId))
        {
            return(false);
        }

        ConditionTableItem res = DataManager.ConditionTable[conditionId] as ConditionTableItem;

        if (res == null)
        {
            return(false);
        }

        return(CheckCondition(res.mType, res.mParam1, res.mParam2, res.mValue));
    }
    /// <summary>
    /// 得到要求的条件值
    /// </summary>
    /// <param name="conditionId"></param>
    /// <returns></returns>
    public int GetConditionRequiredValue(int conditionId)
    {
        if (!DataManager.ConditionTable.ContainsKey(conditionId))
        {
            return(-1);
        }

        ConditionTableItem res = DataManager.ConditionTable[conditionId] as ConditionTableItem;

        if (res == null)
        {
            return(-1);
        }

        return(res.mValue);
    }
    public void SetCostId(int costId)
    {
        if (costId < 0 || !DataManager.ConditionTable.ContainsKey(costId))
        {
            mCostPanel.SetActive(false);
            return;
        }

        string icon = ConditionManager.Instance.GetConditionIcon(costId);

        if (!string.IsNullOrEmpty(icon))
        {
            UIAtlasHelper.SetSpriteImage(mCostIcon, icon);
        }

        ConditionTableItem item = DataManager.ConditionTable[costId] as ConditionTableItem;

        mCostText.text = "X" + item.mValue.ToString();

        mCostPanel.SetActive(true);
    }
    private string GetCardTypeText(int costId)
    {
        if (costId >= 0)
        {
            ConditionTableItem condRes = DataManager.ConditionTable[costId] as ConditionTableItem;
            if (condRes != null)
            {
                if (condRes.mType == ConditionType.MONEY)
                {
                    if (condRes.mParam1 == (int)ProceedsType.Money_Game)
                    {
                        return(StringHelper.GetString("money_game") + StringHelper.GetString("card"));
                    }
                    else if (condRes.mParam1 == (int)ProceedsType.Money_RMB)
                    {
                        return(StringHelper.GetString("money_rmb") + StringHelper.GetString("card"));
                    }
                }
            }
        }

        return(StringHelper.GetString("free") + StringHelper.GetString("card"));
    }
    // 前置关卡Id
    public int GetPervStageId(int stageId)
    {
        if (!DataManager.Scene_StageSceneTable.ContainsKey(stageId))
        {
            return(-1);
        }

        int ret = -1;
        Scene_StageSceneTableItem stageres = DataManager.Scene_StageSceneTable[stageId] as Scene_StageSceneTableItem;

        System.Type type = typeof(Scene_StageSceneTableItem);
        for (uint i = 0; i < Scene_StageSceneTableItem.MAX_UNLOCK_CONDITION_COUNT; ++i)
        {
            System.Reflection.FieldInfo fieldid = type.GetField("mUnlockCondId" + i.ToString());
            int unlockcondid = (int)fieldid.GetValue(stageres);
            if (unlockcondid < 0)
            {
                continue;
            }

            if (!DataManager.ConditionTable.ContainsKey(unlockcondid))
            {
                continue;
            }

            ConditionTableItem condres = DataManager.ConditionTable[unlockcondid] as ConditionTableItem;
            if (condres.mType != ConditionType.STAGE_GRADE)
            {
                continue;
            }

            ret = condres.mParam1;
        }

        return(ret);
    }
    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();
    }
Beispiel #10
0
    private void UpdateUI()
    {
        mIsDirty = false;
        jinglianBtn.isEnabled     = !mWingMoudle.IsFullLevel();
        jinglianTxt.applyGradient = jinglianBtn.isEnabled;

        WingCommonTableItem mCommorRes;

        WingItemUI wing_item_ui = mWingItemUIList[CurPageNum - 1];

        if (wing_item_ui == null)
        {
            GameDebug.LogError("获取wing_item_ui失败");
            return;
        }

        IsTryOn            = wing_item_ui.IsTryOn;
        State              = mWingMoudle.GetWingState(CurPageNum);
        wing_item_ui.State = State;
        mCommorRes         = mWingMoudle.GetCommonResByIndex(CurPageNum);
        //GameDebug.Log("state:"+State);
        wingName.text = mCommorRes.wingName;

        if (State == WingState.Locked)
        {
            int  condition;
            bool isActive = mWingMoudle.CheckCondition(ref mCommorRes, out condition);
            wing_item_ui.SetDaChengPicVisable(Convert.ToInt32(condition));
            WingDescriptText.text = mCommorRes.desc;
            jihuotiaojianTxt.text = StringHelper.GetString("wing_condition");
            zhanValue.text        = StringHelper.GetString("wing_no_active");
            for (int i = 0; i < WingDefine.MaxConditonNum; ++i)
            {
                if ((condition & (1 << i)) == 0) //条件没有达成
                {
                    UIAtlasHelper.SetSpriteImage(mConditionUIList[i].biaoji1, "wing0:wing0-nocom", true);
                    UIAtlasHelper.SetSpriteImage(mConditionUIList[i].num1, "wing0:wing0-019");
                }
                else
                {
                    UIAtlasHelper.SetSpriteImage(mConditionUIList[i].biaoji1, "wing0:wing0-003", true);
                    UIAtlasHelper.SetSpriteImage(mConditionUIList[i].num1, "wing0:wing0-011");
                }

                Type tp                = mCommorRes.GetType();
                int  conditionId       = Convert.ToInt32(tp.GetField(("condition" + (i + 1))).GetValue(mCommorRes));
                ConditionTableItem cti = DataManager.ConditionTable[conditionId] as ConditionTableItem;
                if (cti != null)
                {
                    mConditionUIList[i].content1.text = cti.mDesc;
                }
            }

            jihuoAni.gameObject.SetActive(isActive);
            equipWord.text = StringHelper.GetString("wing_equip");
            UIAtlasHelper.SetButtonImage(equipBtn, "common:btn_yellow_4word");
            tip.gameObject.SetActive(true);
            tip.text = StringHelper.GetString("wingtip").Replace("?", mCommorRes.middleLevel.ToString());
        }
        else
        {
            WingItemData       wing_item_data;
            WingLevelTableItem wing_level_res;

            if (!mWingMoudle.GetWingItemData(CurPageNum, out wing_item_data))
            {
                return;
            }
            if (!mWingMoudle.GetWingLevelRes(wing_item_data.id, (int)wing_item_data.level, out wing_level_res))
            {
                return;
            }
            levelnum.text         = "LV" + wing_item_data.level;
            zhanValue.text        = wing_level_res.battleScore.ToString();
            jihuotiaojianTxt.text = StringHelper.GetString("wing_property");
            if (wing_item_data.level < WingDefine.Max_Wing_Level)
            {
                string re             = StringHelper.GetString("nextlevel") + ":";
                var    next_level_res = DataManager.WingLevelTable[wing_item_data.id * 1000 + wing_item_data.level + 1] as WingLevelTableItem;
                if (next_level_res != null)
                {
                    nextLevel.text        = re + GetPropString(next_level_res.propertyType, next_level_res.propertyNum);
                    levelPercent.text     = wing_item_data.process + "/" + next_level_res.costNum;
                    levelProcessbar.value = (float)wing_item_data.process / (float)next_level_res.costNum;
                }
            }
            else
            {
                nextLevel.text        = "";
                levelPercent.text     = "已满级";
                levelProcessbar.value = 1;
            }
            buffDesc.text = wing_level_res.buffDesc;
            string picName = WingModule.GetWingPic(wing_item_data.id, (int)wing_item_data.level);
            if (picName != mWingItemUIList[CurPageNum - 1].mWingSprite.spriteName)
            {
                UIAtlasHelper.SetSpriteImage(mWingItemUIList[CurPageNum - 1].mWingSprite, picName);
            }

            for (int i = 0; i < WingDefine.PropertyNum; i++)
            {
                uint num      = 0;
                uint totalnum = 0;
                switch (i)
                {
                case 0:
                    num      = wing_item_data.life;
                    totalnum = wing_item_data.liftTotal;
                    break;

                case 1:
                    num      = wing_item_data.attack;
                    totalnum = wing_item_data.attackTotal;
                    break;

                case 2:
                    num      = wing_item_data.defence;
                    totalnum = wing_item_data.defenceTotal;
                    break;

                case 3:
                    num      = wing_item_data.critical;
                    totalnum = wing_item_data.criticalTotal;
                    break;

                case 4:
                    num      = wing_item_data.power;
                    totalnum = wing_item_data.powerTotal;
                    break;
                }

                mProps[i].propname.text        = GetPropString(i, num);
                mProps[i].propProcessBar.value = (float)num / (float)totalnum;

                if (mProps[i].propProcessBar.value.Equals(1))
                {
                    UIAtlasHelper.SetSpriteImage(mProps[i].foreGround, "common:process_short_fg1");
                }
                else
                {
                    UIAtlasHelper.SetSpriteImage(mProps[i].foreGround, "common:processbar_short_fg2");
                }
            }

            UIAtlasHelper.SetSpriteImage(stuff, ItemManager.Instance.getItemBmp(mCommorRes.costId));
            stuffname.text = ItemManager.Instance.getItemName(mCommorRes.costId);
            PlayerDataModule pdm = ModuleManager.Instance.FindModule <PlayerDataModule>();
            stuffnum.text = pdm.GetItemNumByID(mCommorRes.costId).ToString();

            if (State == WingState.Wear)
            {
                equipWord.text = StringHelper.GetString("wing_takeoff");
                UIAtlasHelper.SetButtonImage(equipBtn, "common:btn_blue_4word");
            }
            else
            {
                equipWord.text = StringHelper.GetString("wing_equip");
                UIAtlasHelper.SetButtonImage(equipBtn, "common:btn_yellow_4word");
            }
            int level = wing_item_data.level < mCommorRes.middleLevel ? mCommorRes.middleLevel : mCommorRes.hightLevel;
            tip.text = StringHelper.GetString("wingtip").Replace("?", level.ToString());
            tip.gameObject.SetActive(wing_item_data.level < mCommorRes.middleLevel);
        }
        pageBar.CurPageNum = mWingMoudle.GetWingPageCount();
        pageBar.LockPage   = PlayerDataPool.Instance.MainData.mWingData.GetLockIndex();
    }
    // 服务器同步角色关卡数据
    public void onSyncStageData(EventBase e)
    {
        PlayerDataModule module = ModuleManager.Instance.FindModule <PlayerDataModule>();

        ClearZoneStarNum();

        mUnlockDatas = new Dictionary <ConditionType, ArrayList>();
        Dictionary <SceneType, Dictionary <int, ZoneTempData> > mTempDatas = new Dictionary <SceneType, Dictionary <int, ZoneTempData> >();

        System.Type           type = typeof(Scene_StageSceneTableItem);
        IDictionaryEnumerator itr  = DataManager.Scene_StageSceneTable.GetEnumerator();

        while (itr.MoveNext())
        {
            Scene_StageSceneTableItem res     = itr.Value as Scene_StageSceneTableItem;
            ConditionTableItem        condres = null;
            for (uint i = 0; i < Scene_StageSceneTableItem.MAX_UNLOCK_CONDITION_COUNT; ++i)
            {
                // 建立解锁条件->解锁关卡id的映射
                System.Reflection.FieldInfo fieldid = type.GetField("mUnlockCondId" + i.ToString());
                int unlockcondid = (int)fieldid.GetValue(res);
                if (unlockcondid >= 0 && DataManager.ConditionTable.ContainsKey(unlockcondid))
                {
                    ConditionTableItem condtableres = DataManager.ConditionTable[unlockcondid] as ConditionTableItem;
                    ArrayList          unlocklist   = null;
                    if (mUnlockDatas.ContainsKey(condtableres.mType))
                    {
                        unlocklist = mUnlockDatas[condtableres.mType];
                    }

                    if (unlocklist == null)
                    {
                        unlocklist = new ArrayList();
                        mUnlockDatas.Add(condtableres.mType, unlocklist);
                    }

                    StageUnlockData unlockdata = new StageUnlockData();
                    unlockdata.condition = condtableres;
                    unlockdata.stageid   = res.resID;
                    unlocklist.Add(unlockdata);

                    if (condtableres.mType == ConditionType.STAGE_GRADE)
                    {
                        condres = condtableres;
                    }
                }
            }

            // 战区星星数
            if (module.IsStageHasPassed(res.resID) && mSubTypeDatas.ContainsKey(SceneManager.GetSceneType(res)))
            {
                Dictionary <int, StageFightZone> zonedata = mSubTypeDatas[SceneManager.GetSceneType(res)].mFightZoneDatas;
                if (zonedata != null && zonedata.ContainsKey(res.mZoneId))
                {
                    zonedata[res.mZoneId].mStarNum++;
                }
            }

            // 按解锁关系排序
            Dictionary <int, ZoneTempData> tempSubTypeData = null;
            if (mTempDatas.ContainsKey(SceneManager.GetSceneType(res)))
            {
                tempSubTypeData = mTempDatas[SceneManager.GetSceneType(res)];
            }

            if (tempSubTypeData == null)
            {
                tempSubTypeData = new Dictionary <int, ZoneTempData>();
                mTempDatas.Add(SceneManager.GetSceneType(res), tempSubTypeData);
            }

            ZoneTempData tempZoneData = null;
            if (tempSubTypeData.ContainsKey(res.mZoneId))
            {
                tempZoneData = tempSubTypeData[res.mZoneId];
            }

            if (tempZoneData == null)
            {
                tempZoneData = new ZoneTempData();
                tempSubTypeData.Add(res.mZoneId, tempZoneData);
            }

            if (tempZoneData.mStageTempDatas == null)
            {
                tempZoneData.mStageTempDatas = new Dictionary <int, StageTempData>();
            }

            StageTempData temp = new StageTempData();
            temp.stageId = res.resID;

            if (condres != null)
            {
                temp.prevStageId = condres.mParam1;
            }
            else
            {
                temp.prevStageId = -1;
                if (!tempZoneData.mHeadStageIdList.Contains(res.resID))
                {
                    tempZoneData.mHeadStageIdList.Add(res.resID);
                }
                //tempZoneData.mHeadStageId = res.resID;
            }
            tempZoneData.mStageTempDatas.Add(res.resID, temp);
        }
//      foreach (Scene_StageSceneTableItem res in DataManager.Scene_StageSceneTable.Values)
//      {
//
//      }

        foreach (SceneType subtype in mTempDatas.Keys)
        {
            if (!mSubTypeDatas.ContainsKey(subtype))
            {
                continue;
            }

            StageSubTypeData subtypedata = mSubTypeDatas[subtype];
            Dictionary <int, ZoneTempData> tempsubdata = mTempDatas[subtype];
            foreach (int zoneid in tempsubdata.Keys)
            {
                if (!subtypedata.mFightZoneDatas.ContainsKey(zoneid))
                {
                    continue;
                }

                StageFightZone fightzonedata = subtypedata.mFightZoneDatas[zoneid];
                fightzonedata.mStageListIds = new ArrayList();

                ZoneTempData tempzonedata = tempsubdata[zoneid];
                foreach (StageTempData tempstagedata in tempzonedata.mStageTempDatas.Values)
                {
                    if (tempstagedata.prevStageId < 0 || !tempzonedata.mStageTempDatas.ContainsKey(tempstagedata.prevStageId))
                    {
                        continue;
                    }

                    tempzonedata.mStageTempDatas[tempstagedata.prevStageId].nextStageId = tempstagedata.stageId;
                }

                for (int i = 0; i < tempzonedata.mHeadStageIdList.Count; ++i)
                {
                    int headId = tempzonedata.mHeadStageIdList[i];
                    if (!tempzonedata.mStageTempDatas.ContainsKey(headId))
                    {
                        continue;
                    }

                    fightzonedata.mStageListIds.Add(headId);
                }

                for (int i = 0; i < tempzonedata.mHeadStageIdList.Count; ++i)
                {
                    int headId = tempzonedata.mHeadStageIdList[i];
                    if (!tempzonedata.mStageTempDatas.ContainsKey(headId))
                    {
                        continue;
                    }

                    StageTempData curdata = tempzonedata.mStageTempDatas[headId];
                    if (curdata == null)
                    {
                        continue;
                    }

                    if (!tempzonedata.mStageTempDatas.ContainsKey(curdata.nextStageId))
                    {
                        continue;
                    }

                    StageTempData nextdata = tempzonedata.mStageTempDatas[curdata.nextStageId];
                    do
                    {
                        fightzonedata.mStageListIds.Add(nextdata.stageId);

                        nextdata = tempzonedata.mStageTempDatas.ContainsKey(nextdata.nextStageId) ? tempzonedata.mStageTempDatas[nextdata.nextStageId] : null;
                    } while (nextdata != null);
                }
            }
        }
    }