// 得到关卡解锁等级 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); }
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(); }
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); } } } }