示例#1
0
    // 界面还原
    private void Reset()
    {
        for (int i = 0; i < mItemNormalList.Count; ++i)
        {
            StageBalanceItemUI item = mItemNormalList[i];
            if (item != null)
            {
                item.RemoveListener();
                item.Reset();
            }
        }

        for (int i = 0; i < mItemExtraList.Count; ++i)
        {
            StageBalanceItemUI item = mItemExtraList[i];
            if (item != null)
            {
                item.RemoveListener();
                item.Reset();
            }
        }

        mRes = null;

        mTimer             = 15.0f;
        mLeftTimeText.text = ((int)mTimer).ToString();

        mState = UIState.STATE_ORIGINAL;
    }
示例#2
0
    // 得到关卡解锁等级
    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);
    }
    private void onPlayerDataChanged(EventBase ev)
    {
        if (!IsZombieGame)
        {
            return;
        }

        PlayerDataModule module = ModuleManager.Instance.FindModule <PlayerDataModule>();

        if (module == null)
        {
            return;
        }

        if (mLastPlayerLv != module.GetLevel())
        {
            mLastPlayerLv = module.GetLevel();

            Scene_StageSceneTableItem cur = null, next = null;
            if (GetCurAndNextStage(out cur, out next))
            {
                if ((cur != mCurZombieScene) || (next != mNextZombieScene))
                {
                    UpdateZombieStageList();
                }
            }
            else
            {
                Debug.LogError("数据错误");
            }
        }
    }
 public override void Destroy()
 {
     mScene     = null;
     mRes       = null;
     mEndModule = null;
     EventSystem.Instance.removeEventListener(StageEndUIEvent.STAGE_END_FINISH, onGameOver);
 }
示例#5
0
    public bool CheckSuitableFC(int stageId)
    {
        PlayerDataModule module = ModuleManager.Instance.FindModule <PlayerDataModule>();

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

        Scene_StageSceneTableItem ssti = DataManager.Scene_StageSceneTable[stageId] as Scene_StageSceneTableItem;

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

        if (ssti.mSuitableFC > 0)
        {
            if ((int)module.GetGrade() < ssti.mSuitableFC)
            {
                YesOrNoBoxManager.Instance.ShowYesOrNoUI("危险警告", "您的战斗力小于推荐值,继续挑战可能会失败,是否继续?", SendEnterStageRequest, stageId);
                return(false);
            }
        }

        return(true);
    }
示例#6
0
 // 清空
 public void ClearStageListItem()
 {
     mSelectedUI        = null;
     mSelectedLevel     = 0;
     mSelectedStageItem = null;
     mStageItemList     = new List <StageListItemUI>();
 }
示例#7
0
    public StageSceneBalanceComponent(StageScene scene)
    {
        mScene = scene;

        mRes = mScene.GetStageRes();

        EventSystem.Instance.addEventListener(StageEndUIEvent.STAGE_END_FINISH, OnStageEndFinish);
    }
    public ActiveSceneBalanceComponent(StageScene scene)
    {
        mScene = scene;
        mRes   = mScene.GetStageRes();

        EventSystem.Instance.addEventListener(StageEndUIEvent.STAGE_END_FINISH, onGameOver);

        Init();
    }
示例#9
0
    // 销毁
    public override void Destroy()
    {
        mScene = null;

        mRes = null;

        EventSystem.Instance.removeEventListener(StageReliveEvent.STAGE_RELIVE_REQUEST, onReliveRequest);
        EventSystem.Instance.removeEventListener(StageReliveEvent.STAGE_RELIVE_RESPOND, onReliveRespond);
    }
示例#10
0
    public StageSceneReliveComponent(StageScene scene)
    {
        mScene = scene;

        mRes = mScene.GetStageRes();

        EventSystem.Instance.addEventListener(StageReliveEvent.STAGE_RELIVE_REQUEST, onReliveRequest);
        EventSystem.Instance.addEventListener(StageReliveEvent.STAGE_RELIVE_RESPOND, onReliveRespond);
    }
示例#11
0
    private void InitItemUIList()
    {
        if (mItemList == null)
        {
            return;
        }

        mItemList.Clear();

        SortedList <int, Scene_StageSceneTableItem> sortedlist = new SortedList <int, Scene_StageSceneTableItem>();

        IDictionaryEnumerator itr = DataManager.Scene_WantedSceneTable.GetEnumerator();

        while (itr.MoveNext())
        {
            Scene_StageSceneTableItem res = itr.Value as Scene_StageSceneTableItem;
            sortedlist.Add(res.resID, res);
        }

//      foreach (Scene_StageSceneTableItem res in DataManager.Scene_WantedSceneTable.Values)
//      {
//          sortedlist.Add(res.resID, res);
//      }

        foreach (Scene_StageSceneTableItem res in sortedlist.Values)
        {
            GameObject obj = WindowManager.Instance.CloneGameObject(cloneItemPrefab);
            if (obj == null)
            {
                continue;
            }

            obj.SetActive(true);
            obj.name                 = "UIWantedItem" + res.resID.ToString();
            obj.transform.parent     = mGrid.transform;
            obj.transform.localScale = Vector3.one;

            UIWantedItem itemui = new UIWantedItem(obj);
            //itemui.Idx = i;
            itemui.Res = res;
            UIEventListener.Get(obj).onClick = OnWantedItemClicked;

            itemui.InitUI();

            mItemList.Add(itemui);
        }

        mGrid.repositionNow = true;
    }
示例#12
0
    // 检查是否可以进入关卡
    public bool CheckEnterStage(int stageId)
    {
        ERROR_CODE result = ERROR_CODE.ERR_SCENE_ENTER_OK;

        do
        {
            PlayerDataModule module = ModuleManager.Instance.FindModule <PlayerDataModule>();
            if (module == null)
            {
                result = ERROR_CODE.ERR_SCENE_ENTER_FAILED;
                break;
            }

            StageData psd = module.GetStageData(stageId);
            if (psd == null)
            {
                result = ERROR_CODE.ERR_SCENE_ENTER_FAILED;
                break;
            }

            if (!DataManager.Scene_StageSceneTable.ContainsKey(stageId))
            {
                result = ERROR_CODE.ERR_SCENE_ENTER_FAILED;
                break;
            }

            Scene_StageSceneTableItem ssti = DataManager.Scene_StageSceneTable[stageId] as Scene_StageSceneTableItem;
            if (ssti == null)
            {
                result = ERROR_CODE.ERR_SCENE_ENTER_FAILED;
                break;
            }

            if (ssti.mEnterTimes > 0 && module.GetStageDailyTimes(stageId) >= ssti.mEnterTimes)
            {
                result = ERROR_CODE.ERR_SCENE_ENTER_FAILED_NOTIMES;
                break;
            }

            return(true);
        } while (true);

        PrintErrorCode(result);

        return(false);
    }
示例#13
0
    // 关卡
    public void SetStageRes(Scene_StageSceneTableItem res)
    {
        if (res == null)
        {
            return;
        }

        mStageNameText.text = res.name;
        mLevelText.text     = StageDataManager.Instance.GetStageUnlockLevel(res.resID).ToString() + "级";
        maxEnterTime        = res.mEnterTimes;

        //if(maxEnterTime < 0)
        mEnterTimeText.gameObject.SetActive(maxEnterTime > 0);

        UIAtlasHelper.SetSpriteImage(mStagePic, res.mStageBk);
        UIAtlasHelper.SetSpriteImage(mBossIcon, res.mBossIcon, true);
    }
示例#14
0
    // 整理读表得到的数据
    public void InitDataStruct()
    {
        mSubTypeDatas = new Dictionary <SceneType, StageSubTypeData>();
        IDictionaryEnumerator itr = DataManager.Scene_StageSceneTable.GetEnumerator();

        while (itr.MoveNext())
        {
            Scene_StageSceneTableItem sceneres = itr.Value as Scene_StageSceneTableItem;
            StageSubTypeData          subdata  = null;
            if (mSubTypeDatas.ContainsKey(SceneManager.GetSceneType(sceneres)))
            {
                subdata = mSubTypeDatas[SceneManager.GetSceneType(sceneres)];
            }

            if (subdata == null)
            {
                subdata = new StageSubTypeData();
                mSubTypeDatas.Add(SceneManager.GetSceneType(sceneres), subdata);
            }

            if (subdata.mFightZoneDatas == null)
            {
                subdata.mFightZoneDatas = new Dictionary <int, StageFightZone>();
            }

            StageFightZone zonedata = null;
            if (subdata.mFightZoneDatas.ContainsKey(sceneres.mZoneId))
            {
                zonedata = subdata.mFightZoneDatas[sceneres.mZoneId];
            }

            if (zonedata == null)
            {
                zonedata = new StageFightZone();
                subdata.mFightZoneDatas.Add(sceneres.mZoneId, zonedata);
            }

            zonedata.mMaxStarNum++;
        }
//      foreach(Scene_StageSceneTableItem sceneres in DataManager.Scene_StageSceneTable.Values)
//      {
//
//      }
    }
示例#15
0
    /// <summary>
    /// 根据StageSceneTableItem表中的解锁条件ID1来作为可进入等级判定;
    /// </summary>
    /// <param name="item1">当前等级可以进入的</param>
    /// <param name="item2">下一个等级可以进入的</param>
    /// <returns></returns>
    bool GetCurAndNextStage(out Scene_StageSceneTableItem item1, out Scene_StageSceneTableItem item2)
    {
        int cur = 0, next = int.MaxValue;

        item1 = null;
        item2 = null;
        IDictionaryEnumerator itr = DataManager.Scene_StageSceneTable.GetEnumerator();

        while (itr.MoveNext())
        {
            Scene_StageSceneTableItem scene = itr.Value as Scene_StageSceneTableItem;
            if (SceneManager.GetSceneType(scene) != SceneType.SceneType_Zombies)
            {
                continue;
            }

            int limitLv = scene.mUnlockCondId0;

            if ((limitLv < mLastPlayerLv) && (limitLv > cur))
            {
                cur   = limitLv;
                item1 = scene;
            }

            if ((limitLv > mLastPlayerLv) && (limitLv < next))
            {
                next  = limitLv;
                item2 = scene;
            }
        }
//         foreach (Scene_StageSceneTableItem scene in DataManager.Scene_StageSceneTable)
//         {
//
//         }

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

        return(true);
    }
示例#16
0
    override public bool Init(BaseSceneInitParam param)
    {
        StageSceneInitParam stageParam = param as StageSceneInitParam;

        if (!DataManager.SceneTable.ContainsKey(stageParam.res_id))
        {
            return(false);
        }

        mSubRes = DataManager.SceneTable[stageParam.res_id] as Scene_StageSceneTableItem;
        if (!base.Init(stageParam))
        {
            return(false);
        }

        mBalanceComponent = new StageSceneBalanceComponent(this);
        mShowPickGuide    = false;

        mReliveComponent = new StageSceneReliveComponent(this);
        return(true);
    }
示例#17
0
    private void OnWantedItemClicked(GameObject target)
    {
        UIWantedItem item = null;

        foreach (UIWantedItem ui in mItemList)
        {
            if (ObjectCommon.ReferenceEquals(ui.gameObject, target))
            {
                item = ui;
                ui.SetSelected(true);
            }
            else
            {
                ui.SetSelected(false);
            }
        }

        mSelectedItemUI  = item;
        mSelectedItemRes = item.Res;

        UpdateSelectedItem();
    }
示例#18
0
    // 前置关卡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);
    }
示例#19
0
    /// <summary>
    /// 条件描述文本
    /// </summary>
    /// <param name="type">条件类型</param>
    /// <param name="param1">参数1</param>
    /// <param name="param2">参数2</param>
    /// <param name="value">值</param>
    /// <returns></returns>
    public string GetConditionText(ConditionType type, int param1, int param2, int value)
    {
        string ret = null;

        switch (type)
        {
        // 等级
        case ConditionType.LEVEL:
        {
            ret = "等级:" + value.ToString() + "级";
        }
        break;

        // 货币
        case ConditionType.MONEY:
        {
            switch (param1)
            {
            case (int)ProceedsType.Money_Game:
            {
                ret = "金币:" + value.ToString();
            }
            break;

            case (int)ProceedsType.Money_RMB:
            {
                ret = "钻石:" + value.ToString();
            }
            break;

            case (int)ProceedsType.Money_Prestige:
            {
                ret = "声望:" + value.ToString();
            }
            break;

            case (int)ProceedsType.Money_Stren:
            {
                ret = "强化点:" + value.ToString();
            }
            break;

            case (int)ProceedsType.Money_Arena:
            {
                ret = "竞技币:" + value.ToString();
            }
            break;

            default:
            {
                GameDebug.LogError("未知货币类型");
            }
            break;
            }
        }
        break;

        // 经验
        case ConditionType.EXP:
        {
            ret = "经验:" + value.ToString();
        }
        break;

        // 道具
        case ConditionType.ITEM:
        {
            string itemname = ItemManager.Instance.getItemName(param1);
            if (!string.IsNullOrEmpty(itemname))
            {
                ret = itemname + "X" + value.ToString();
            }
        }
        break;

        // 关卡解锁
        case ConditionType.STAGE_UNLOCK:
        {
            if (DataManager.Scene_StageSceneTable.ContainsKey(param1))
            {
                Scene_StageSceneTableItem stageres = DataManager.Scene_StageSceneTable[param1] as Scene_StageSceneTableItem;
                if (stageres != null)
                {
                    ret = "解锁关卡:" + stageres.name;
                }
            }
        }
        break;

        // 关卡评价
        case ConditionType.STAGE_GRADE:
        {
            string[] grade = { "S", "A", "B", "C" };
            if (value >= (int)StageGrade.StageGrade_C && value <= (int)StageGrade.StageGrade_S)
            {
                ret = "关卡评价:" + grade[value];
            }
        }
        break;

        default:
            return(null);
        }

        return(ret);
    }
示例#20
0
    // 服务器同步角色关卡数据
    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);
                }
            }
        }
    }
示例#21
0
    // 服务器同步关卡通关数据
    public void SyncStagePass(role_stage stagedata)
    {
        if (stagedata == null)
        {
            return;
        }

        if (!DataManager.Scene_StageSceneTable.ContainsKey(stagedata.stage_id))
        {
            return;
        }

        Scene_StageSceneTableItem passstageres = DataManager.Scene_StageSceneTable[stagedata.stage_id] as Scene_StageSceneTableItem;

        if (passstageres == null)
        {
            return;
        }

        PlayerDataModule module = ModuleManager.Instance.FindModule <PlayerDataModule>();

        if (module == null)
        {
            return;
        }

        bool firstPass = !module.IsStageHasPassed((int)stagedata.stage_id);

        // 更新角色的关卡数据
        StageData newdata = new StageData();

        newdata.stageid        = (int)stagedata.stage_id;
        newdata.maxgrade       = (StageGrade)stagedata.max_grade;
        newdata.maxcombo       = stagedata.max_combo;
        newdata.killrate       = stagedata.kill_rate;
        newdata.passtimerecord = stagedata.passtime_record;
        newdata.passtimes      = stagedata.pass_times;

        module.UpdateStageData(newdata);

        if (passstageres.mEnterTimes > 0)
        {
            StageDailyData newdailydata = new StageDailyData();
            newdailydata.stageid     = (int)stagedata.stage_id;
            newdailydata.daily_times = module.GetStageDailyTimes((int)stagedata.stage_id) + 1;
            module.UpdateStageDailyData(newdailydata);
        }

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

        if (!mUnlockDatas.ContainsKey(ConditionType.STAGE_GRADE))
        {
            return;
        }

        ArrayList list = mUnlockDatas[ConditionType.STAGE_GRADE];

        if (list == null)
        {
            return;
        }

        // 检查是否有因此解锁的关卡
        System.Type type = typeof(Scene_StageSceneTableItem);
        foreach (StageUnlockData unlockdata in list)
        {
            if (unlockdata.condition == null)
            {
                continue;
            }

            if (unlockdata.condition.mParam1 != stagedata.stage_id)
            {
                continue;
            }

            if (!DataManager.Scene_StageSceneTable.ContainsKey(unlockdata.stageid))
            {
                continue;
            }

            bool success = true;
            Scene_StageSceneTableItem stageres = DataManager.Scene_StageSceneTable[unlockdata.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(stageres);
                if (unlockcondid < 0)
                {
                    continue;
                }

                if (!ConditionManager.Instance.CheckCondition(unlockcondid))
                {
                    success = false;
                    break;
                }
            }

            // 有因此解锁的关卡
            if (success)
            {
                UnlockStageActionParam param = new UnlockStageActionParam();
                param.stageid = unlockdata.stageid;
                Net.Instance.DoAction((int)Message.MESSAGE_ID.ID_MSG_SCENE_UNLOCK, param);
            }
        }

        StagePassServerEvent stageevent = new StagePassServerEvent(StagePassServerEvent.STAGE_PASS_SERVER_EVENT);

        stageevent.mStageData = newdata;
        EventSystem.Instance.PushEvent(stageevent);

        SceneManager.Instance.RequestEnterLastCity();
    }
示例#22
0
    // 主属性变更
    public void onMainPropertyChange(EventBase evt)
    {
        PropertyEvent propertyevent = evt as PropertyEvent;

        if (!System.Enum.IsDefined(typeof(MainPropertyType), propertyevent.propertyId))
        {
            return;
        }

        if (propertyevent.propertyId != (int)MainPropertyType.PropertyType_Level)
        {
            return;
        }

        if (!mUnlockDatas.ContainsKey(ConditionType.LEVEL))
        {
            return;
        }

        ArrayList list = mUnlockDatas[ConditionType.LEVEL];

        if (list == null)
        {
            return;
        }

        // 检查是否有因此解锁的关卡
        System.Type type = typeof(Scene_StageSceneTableItem);
        foreach (StageUnlockData unlockdata in list)
        {
            if (unlockdata.condition == null)
            {
                continue;
            }

            if (unlockdata.condition.mValue != propertyevent.newValue)
            {
                continue;
            }

            if (!DataManager.Scene_StageSceneTable.ContainsKey(unlockdata.stageid))
            {
                continue;
            }

            bool success = true;
            Scene_StageSceneTableItem stageres = DataManager.Scene_StageSceneTable[unlockdata.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(stageres);
                if (unlockcondid < 0)
                {
                    continue;
                }

                if (!ConditionManager.Instance.CheckCondition(unlockcondid))
                {
                    success = false;
                    break;
                }
            }

            // 有因此解锁的关卡
            if (success)
            {
                UnlockStageActionParam param = new UnlockStageActionParam();
                param.stageid = unlockdata.stageid;
                Net.Instance.DoAction((int)Message.MESSAGE_ID.ID_MSG_SCENE_UNLOCK, param);
            }
        }
    }
示例#23
0
    // 初始化数据
    private void Init()
    {
        BaseScene scene = SceneManager.Instance.GetCurScene();

        if (scene == null)
        {
            return;
        }

        if (!typeof(StageScene).IsAssignableFrom(scene.GetType()))
        {
            return;
        }

        StageScene stage = scene as StageScene;

        mRes = stage.GetStageRes();
        if (mRes == null)
        {
            return;
        }

        if (mModule == null)
        {
            mModule = ModuleManager.Instance.FindModule <StageBalanceModule>();
        }

        mOKBtn.SetActive(false);

        mNormalPanel.SetActive(false);
        mExtraPanel.SetActive(false);
        mAwardPanel.SetActive(false);
        mExtraAwardPanel.SetActive(false);
        mNormalEffectUI.Stop();
        mExtraEffectUI.Stop();

        // 不显示普通翻牌
        if (mRes.mRandomAwardTimes < 1 || mRes.mRandomAwardBoxId < 0)
        {
            mLeftAwardTimes = 0;
            mState          = UIState.STATE_3;
        }
        else
        {
            mNormalPanel.SetActive(true);
            mLeftAwardTimes = mRes.mRandomAwardTimes;
            mState          = UIState.STATE_0;
        }

        mNormalTimesLabel1.text = GetCardTypeText(mRes.mRandomAwardCostId);

        foreach (StageBalanceItemUI item in mItemNormalList)
        {
            item.SetCostId(mRes.mRandomAwardCostId);
            item.AddListener();
        }

        UpdateAwardTimes();
        //RandomAward();

        // 不显示钻石翻牌
        if (mRes.mExtraAwardTimes < 1 || mRes.mExtraAwardBoxId < 0)
        {
            mLeftExtraAwardTimes = 0;
            if (mState == UIState.STATE_3)
            {
                mState = UIState.STATE_DESTROY;
                mOKBtn.SetActive(true);
            }
        }
        else
        {
            mLeftExtraAwardTimes = mRes.mExtraAwardTimes;
        }

        mExtraTimesLabel1.text = GetCardTypeText(mRes.mExtraAwardCostId);

        foreach (StageBalanceItemUI item in mItemExtraList)
        {
            item.SetCostId(mRes.mExtraAwardCostId);
            item.AddListener();
        }

        UpdateExtraAwardTimes();
        //RandomExtraAward();
    }
示例#24
0
    private void OnAcceptQuestResponse(EventBase evt)
    {
        QuestEvent e = evt as QuestEvent;

        if (!mUnlockDatas.ContainsKey(ConditionType.QUEST_ACCEPT))
        {
            return;
        }

        ArrayList list = mUnlockDatas[ConditionType.QUEST_ACCEPT];

        if (list == null)
        {
            return;
        }

        // 检查是否有因此解锁的关卡
        System.Type type = typeof(Scene_StageSceneTableItem);
        foreach (StageUnlockData unlockdata in list)
        {
            if (unlockdata.condition == null)
            {
                continue;
            }

            if (unlockdata.condition.mParam1 != e.mQuestId)
            {
                continue;
            }

            if (!DataManager.Scene_StageSceneTable.ContainsKey(unlockdata.stageid))
            {
                continue;
            }

            bool success = true;
            Scene_StageSceneTableItem stageres = DataManager.Scene_StageSceneTable[unlockdata.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(stageres);
                if (unlockcondid < 0)
                {
                    continue;
                }

                if (!ConditionManager.Instance.CheckCondition(unlockcondid))
                {
                    success = false;
                    break;
                }
            }

            // 有因此解锁的关卡
            if (success)
            {
                UnlockStageActionParam param = new UnlockStageActionParam();
                param.stageid = unlockdata.stageid;
                Net.Instance.DoAction((int)Message.MESSAGE_ID.ID_MSG_SCENE_UNLOCK, param);
            }
        }
    }