public int CompareBagEquip(XEquip xe1, XEquip xe2) { DEquip equipDB1 = ReadCfgEquip.GetDataById(xe1.Id); DEquip equipDB2 = ReadCfgEquip.GetDataById(xe2.Id); if (equipDB1.Pos != equipDB2.Pos) { return(equipDB2.Pos - equipDB1.Pos); } if (xe1.StrengthenLevel != xe2.StarLevel) { return(xe2.StrengthenLevel - xe1.StrengthenLevel); } if (xe1.AdvanceLevel != xe2.AdvanceLevel) { return(xe2.AdvanceLevel - xe2.AdvanceLevel); } if (xe1.StarLevel != xe2.StarLevel) { return(xe2.StarLevel - xe1.StarLevel); } if (equipDB1.Id != equipDB2.Id) { return(equipDB2.Id - equipDB1.Id); } return(xe1.Instance - xe2.Instance); }
public int CompareBagItem(XItem x1, XItem x2) { DItem itemDB1 = ReadCfgItem.GetDataById(x1.Id); DItem itemDB2 = ReadCfgItem.GetDataById(x2.Id); if (itemDB1.ItemType != itemDB2.ItemType) { return(itemDB1.ItemType - itemDB2.ItemType); } if (itemDB1.Quality != itemDB2.Quality) { return(itemDB2.Quality - itemDB1.Quality); } if (itemDB1.ItemType == EItemType.EQUIP) { XEquip xe1 = DataDBSEquip.GetDataById(x1.Instance); XEquip xe2 = DataDBSEquip.GetDataById(x2.Instance); return(CompareBagEquip(xe1, xe2)); } if (itemDB1.Id != itemDB2.Id) { return(itemDB2.Id - itemDB1.Id); } return(x1.Instance - x2.Instance); }
private void OnAck_AdvanceEquip(MessageRecv obj) { System.IO.MemoryStream ms = new System.IO.MemoryStream(obj.Data); AckAdvanceEquip ack = Serializer.Deserialize <AckAdvanceEquip>(ms); XEquip equip = ack.TarEquip; List <XItem> list = ack.UseItems; DEquip equipDB = ReadCfgEquip.GetDataById(equip.Id); int advanceID = equipDB.Quality * 1000 + equip.AdvanceLevel + 1; DEquipAdvanceCost db = ReadCfgEquipAdvanceCost.GetDataById(advanceID); GTDataManager.Instance.UseMoney(db.CostMoneyId, db.CostMoneyNum); GTDataManager.Instance.UseItemById(db.CostItemId, db.CostItemNum); if (list != null) { for (int i = 0; i < list.Count; i++) { GTDataManager.Instance.DelBagEquip(list[i].Pos); } } equip.AdvanceLevel++; DataDBSEquip.Update(equip.Instance, equip); CharacterManager.Instance.SyncMainPlayerData(ESyncDataType.TYPE_BASEATTR); GTEventCenter.FireEvent(GTEventID.TYPE_ADVANCE_EQUIP); GTEventCenter.FireEvent(GTEventID.TYPE_CHANGE_FIGHTVALUE); }
public List <XItem> GetItemListToOneKeyStrengthen(XEquip equip) { List <XItem> list = new List <XItem>(); DEquip equipDB = ReadCfgEquip.GetDataById(equip.Id); DEquipStrengLevel levelDB = ReadCfgEquipStrengLevel.GetDataById(equipDB.Quality * 1000 + equip.StrengthenLevel + 1); int moneyNum = GTDataManager.Instance.GetItemCountById(DEquip.EQUIP_STRENGTHEN_MONEY_ID_2); if (moneyNum > 0) { int needNum = levelDB.RequireExp - equip.StrengthenExp; int addNum = moneyNum >= needNum ? needNum : moneyNum; XItem item = new XItem(); item.Id = DEquip.EQUIP_STRENGTHEN_MONEY_ID_2; item.PosType = (int)EPosType.RoleMoney; item.Num = addNum; list.Add(item); return(list); } List <XItem> allEquipMatList = GetAllEquipMatList(); for (int i = 0; i < list.Count; i++) { if (list.Count >= 6) { break; } if (IsCanAsMatToAutoAdd(allEquipMatList[i])) { XItem item = allEquipMatList[i]; list.Add(item); } } return(list); }
public bool IsCanAsMatToAutoAdd(XItem item) { XEquip equip = DataDBSEquip.GetDataById(item.Instance); DEquip equipDB = ReadCfgEquip.GetDataById(equip.Id); return(equipDB.Quality < 3); }
public int CompareStrengthMat(XItem x1, XItem x2) { XEquip e1 = DataDBSEquip.GetDataById(x1.Instance); XEquip e2 = DataDBSEquip.GetDataById(x2.Instance); DEquip db1 = ReadCfgEquip.GetDataById(e1.Id); DEquip db2 = ReadCfgEquip.GetDataById(e2.Id); if (db1.Quality != db2.Quality) { return(db1.Quality - db2.Quality); } if (e1.StarLevel != e2.StarLevel) { return(e1.StarLevel - e2.StarLevel); } if (e1.AdvanceLevel != e2.AdvanceLevel) { return(e1.AdvanceLevel - e2.AdvanceLevel); } if (e1.StrengthenExp != e2.StrengthenExp) { return(e1.StrengthenExp - e2.StrengthenExp); } return(x2.Pos - x1.Pos); }
public int GetStrengthenExpByMatList(List <XItem> list) { if (list == null) { return(0); } int exp = 0; for (int i = 0; i < list.Count; i++) { if (list[i].PosType == (int)EPosType.RoleMoney) { exp += list[i].Num; } else { XItem mat = list[i]; DEquip equipDB = ReadCfgEquip.GetDataById(mat.Id); XEquip equip = DataDBSEquip.GetDataById(mat.Instance); exp += equipDB.DeComposeNum2; exp += equip.StrengthenExp; int lv = equip.StrengthenLevel; for (int j = lv; j > 0; j--) { DEquipStrengLevel db = ReadCfgEquipStrengLevel.GetDataById(equipDB.Quality * 1000 + j); exp += db.RequireExp; } } } return(exp); }
static void CalcAllEquipPropertys(Dictionary <EAttr, int> dict) { Dictionary <int, XItem> dressEquips = DataDBSDressEquip.Dict; Dictionary <int, XItem> .Enumerator em1 = dressEquips.GetEnumerator(); while (em1.MoveNext()) { if (em1.Current.Value.Instance == 0) { continue; } int instanceID = em1.Current.Value.Instance; if (!DataDBSEquip.ContainsKey(instanceID)) { continue; } XEquip equip = DataDBSEquip.GetDataById(instanceID); Dictionary <EAttr, int> .Enumerator em2 = GetPropertys(equip).GetEnumerator(); while (em2.MoveNext()) { dict[em2.Current.Key] += em2.Current.Value; } em2.Dispose(); } em1.Dispose(); }
public void ShowViewByPos(EPosType posType, int pos) { this.mPos = pos; this.mPosType = posType; ShowDress(posType == EPosType.RoleEquip); XEquip equip = GTDataManager.Instance.GetEquipDataByPos(mPosType, mPos); if (equip == null) { return; } int itemID = equip.Id; ShowBaseView(itemID); equipFightValue.text = GTTools.Format("战斗力 {0}", GTAttrHelper.GetFightValue(equip)); equipAdvanceLevel.text = MLEquip.Instance.GetEquipAdvanceNameByLevel(equip.AdvanceLevel); Dictionary <EAttr, int> propertys = GTAttrHelper.GetPropertys(equip); title3.text = GTTools.Format("装备星级 {0}", equip.StarLevel); title2.text = GTTools.Format("进阶等级 {0}", equip.AdvanceLevel); title1.text = GTTools.Format("强化等级 {0}", equip.StrengthenLevel); GTItemHelper.ShowPropertyText(this.equipPropertys, propertys, true); GTItemHelper.ShowEquipStrengthText(text1, itemID, equip.StrengthenLevel); GTItemHelper.ShowEquipAdvanceText(text2, itemID, equip.AdvanceLevel); GTItemHelper.ShowEquipStarText(text3, itemID, equip.StarLevel); }
public static int GetFightValue(XEquip equip) { Dictionary <EAttr, int> attrValues = GetPropertys(equip); int value = GetFightValue(attrValues); return(value); }
private void OnStrengthenEquipClick(GameObject go) { GTAudioManager.Instance.PlayEffectAudio(GTAudioKey.SOUND_UI_CLICK); XEquip equip = GTDataManager.Instance.GetEquipDataByPos(mPosType, mPos); EquipService.Instance.TryStrengthEquip(equip, mStrengthenCostItems); }
public void AddNewEquip(int instanceId, int id) { int newPos = GetNewPos(EBagType.ITEM); if (newPos == 0) { return; } XItem item = new XItem(); item.Instance = instanceId; item.Pos = newPos; item.Id = id; item.Num = 1; item.PosType = (int)EPosType.BagItem; DataBagItem.Insert(newPos, item); XEquip equip = new XEquip(); equip.Instance = instanceId; equip.Id = id; equip.StarLevel = 0; equip.StrengthenLevel = 0; equip.AdvanceLevel = 0; equip.StrengthenExp = 0; DataEquip.Insert(instanceId, equip); }
public void TryUpStarEquip(XEquip equip) { if (EquipModule.Instance.IsFullStarLevel(equip)) { GTItemHelper.ShowTip("装备星级已满"); return; } DEquip equipDB = ReadCfgEquip.GetDataById(equip.Id); int starID = equipDB.Quality * 1000 + equip.StarLevel + 1; DEquipStar db = ReadCfgEquipStar.GetDataById(starID); if (!GTItemHelper.CheckItemEnongh(db.CostMoneyId, db.CostMoneyNum)) { return; } if (!GTItemHelper.CheckItemEnongh(db.CostItemId, db.CostItemNum)) { return; } ReqUpStarEquip req = new ReqUpStarEquip(); req.TarEquip = equip; NetworkManager.Instance.Send <ReqUpStarEquip>(MessageID.MSG_REQ_UPSTAR_EQUIP, req); }
private void OnUpStarEquipClick(GameObject go) { GTAudioManager.Instance.PlayEffectAudio(GTAudioKey.SOUND_UI_CLICK); XEquip equip = GTDataManager.Instance.GetEquipDataByPos(mPosType, mPos); EquipService.Instance.TryUpStarEquip(equip); }
private void OnAdvanceEquipClick(GameObject go) { GTAudioManager.Instance.PlayEffectAudio(GTAudioKey.SOUND_UI_CLICK); XEquip equip = GTDataManager.Instance.GetEquipDataByPos(mPosType, mPos); GTNetworkSend.Instance.TryAdvanceEquip(equip); }
private void ShowAdvanceView() { XEquip equip = GTDataManager.Instance.GetEquipDataByPos(mPosType, mPos); if (equip == null) { return; } int itemID = equip.Id; if (EquipModule.Instance.IsFullStarLevel(equip)) { return; } GTItemHelper.ShowItemTexture(mEquipAdvance.nowEquipTexture, itemID); GTItemHelper.ShowItemQuality(mEquipAdvance.nowEquipQuality, itemID); GTItemHelper.ShowItemName(mEquipAdvance.nowEquipName, itemID); GTItemHelper.ShowItemTexture(mEquipAdvance.nexEquipTexture, itemID); GTItemHelper.ShowItemQuality(mEquipAdvance.nexEquipQuality, itemID); GTItemHelper.ShowItemName(mEquipAdvance.nexEquipName, itemID); Dictionary <EAttr, int> nowPropertys = AttrHelper.GetPropertys(equip); XEquip nexEquip = new XEquip(); GTTools.Copy(nexEquip, equip); nexEquip.AdvanceLevel++; Dictionary <EAttr, int> nexPropertys = AttrHelper.GetPropertys(nexEquip); GTItemHelper.ShowPropertyText(mEquipAdvance.nowEquipPropertys, nowPropertys, false); GTItemHelper.ShowPropertyText(mEquipAdvance.nexEquipPropertys, nexPropertys, false); mEquipAdvance.nowEquipFightValue.text = AttrHelper.GetFightValue(nowPropertys).ToString(); mEquipAdvance.nexEquipFightValue.text = AttrHelper.GetFightValue(nexPropertys).ToString(); DEquip equipDB = ReadCfgEquip.GetDataById(itemID); DEquipAdvanceCost db = ReadCfgEquipAdvanceCost.GetDataById(equipDB.Quality * 1000 + equip.AdvanceLevel + 1); int hasItemNum = GTDataManager.Instance.GetItemCountById(db.CostItemId); GTItemHelper.ShowItemTexture(mEquipAdvance.costItemTexture, db.CostItemId); GTItemHelper.ShowPriceText(mEquipAdvance.costItemNum, hasItemNum, db.CostItemNum); GTItemHelper.ShowItemQuality(mEquipAdvance.costItemQuality, itemID); if (db.CostEquipNum > 0) { mEquipAdvance.costEquipBtn.SetActive(true); GTItemHelper.ShowItemTexture(mEquipAdvance.costEquipTexture, itemID); GTItemHelper.ShowItemQuality(mEquipAdvance.costEquipQuality, itemID); int hasSameEquipNum = EquipModule.Instance.GetBagSameEquipList(equip).Count; GTItemHelper.ShowPriceText(mEquipAdvance.costEquipNum, hasSameEquipNum, db.CostEquipNum); } else { mEquipAdvance.costEquipBtn.SetActive(false); } GTItemHelper.ShowItemTexture(mEquipAdvance.costMoneyTexture, db.CostMoneyId); GTItemHelper.ShowItemNum(mEquipAdvance.costMoneyNum, db.CostMoneyNum); GTItemHelper.ShowEquipAdvanceText(mEquipAdvance.advanceText, itemID, equip.AdvanceLevel); }
private void OnRecvDressEquip(int srcPos, int tarPos) { ShowCellView(tarPos); if (mAvatar == null) { return; } XEquip dressEquip = GTDataManager.Instance.GetEquipDataByPos(EPosType.RoleEquip, tarPos); mAvatar.ChangeAvatar(tarPos, dressEquip == null ? 0 : dressEquip.Id); }
public static XEquip CreateEquip(int id, int instance) { XEquip tab = new XEquip(); tab.Id = id; tab.Instance = instance; tab.StrengthenLevel = 0; tab.StarLevel = 0; tab.StrengthenExp = 0; tab.AdvanceLevel = 0; return(tab); }
public XEquip GetDressEquipByPos(int pos) { if (!DressEquips.ContainsKey(pos)) { return(null); } XItem item = DressEquips[pos]; XEquip equip = null; Equips.TryGetValue(item.Instance, out equip); return(equip); }
public XEquip Clone() { XEquip e = new XEquip(); e.Id = this.Id; e.Instance = this.Instance; e.StarLevel = this.StarLevel; e.AdvanceLevel = this.AdvanceLevel; e.StrengthenLevel = this.StrengthenLevel; e.StrengthenExp = this.StrengthenExp; return(e); }
public static Dictionary <EAttr, int> GetPropertys(XEquip equip) { Dictionary <EAttr, int> attrValues = GetEquipBasePropertys(equip.Id); if (equip != null) { CalCfgStrengthValuethLevel(attrValues, equip); CalcEquipAdvanceLevel(attrValues, equip); CalcEquipStarLevel(attrValues, equip); } CalcMaxAttrValue(ref attrValues); return(attrValues); }
private void ShowStrengthenView() { XEquip equip = GTDataManager.Instance.GetEquipDataByPos(mPosType, mPos); if (equip == null) { return; } if (EquipModule.Instance.IsFullStrengthenLevel(equip) == true) { return; } int itemID = equip.Id; GTItemHelper.ShowItemTexture(mEquipStrengthen.equipTexture, itemID); GTItemHelper.ShowItemQuality(mEquipStrengthen.equipQuality, itemID); GTItemHelper.ShowItemName(mEquipStrengthen.equipName, itemID); int costEquipNum = mStrengthenCostItems.Count; for (int i = 0; i < mEquipStrengthen.mStrengthenItems.Count; i++) { ItemStrengthen cell = mEquipStrengthen.mStrengthenItems[i]; if (i < costEquipNum) { XItem mat = mStrengthenCostItems[i]; cell.Show(true); int id = mStrengthenCostItems[i].Id; GTItemHelper.ShowItemTexture(cell.itemTexture, id); GTItemHelper.ShowItemQuality(cell.itemQuality, id); GTItemHelper.ShowItemNum(cell.itemNum, mat.Num); } else { cell.Show(false); } } DEquip equipDB = ReadCfgEquip.GetDataById(itemID); DEquipStrengLevel levelDB = ReadCfgEquipStrengLevel.GetDataById(equipDB.Quality * 1000 + equip.StrengthenLevel + 1); int addExpNum = EquipModule.Instance.GetStrengthenExpByMatList(mStrengthenCostItems); GTItemHelper.ShowItemTexture(mEquipStrengthen.costMoneyTexture, DEquip.EQUIP_STRENGTHEN_MONEY_ID_1); mEquipStrengthen.costMoneyNum.text = addExpNum.ToString(); mEquipStrengthen.equipStrengthLevel.text = GTTools.Format("强化等级 {0}", equip.StrengthenLevel); GTItemHelper.ShowProgressText(mEquipStrengthen.equipStrengthExp, equip.StrengthenExp, levelDB.RequireExp); GTItemHelper.ShowProgressSlider(mEquipStrengthen.equipStrengthExpBar, equip.StrengthenExp, levelDB.RequireExp); Dictionary <EAttr, int> propertys = AttrHelper.GetPropertys(equip); GTItemHelper.ShowEquipStrengthText(mEquipStrengthen.strengthText, itemID, equip.StrengthenLevel); GTItemHelper.ShowPropertyText(mEquipStrengthen.propertyText, propertys, true); }
public XEquip GetEquipDataByPos(EPosType posType, int pos) { Dictionary <int, XItem> dict = GetItemDataByPosType(posType); XItem item = null; dict.TryGetValue(pos, out item); if (item == null) { return(null); } XEquip equip = null; DataDBSEquip.Dict.TryGetValue(item.Instance, out equip); return(equip); }
static void CalcEquipStarLevel(Dictionary <EAttr, int> dict, XEquip equip) { int lv = equip.StarLevel; DEquip equipDB = ReadCfgEquip.GetDataById(equip.Id); DEquipStar starDB = ReadCfgEquipStar.GetDataById(equipDB.Quality * 1000 + lv); float percent = 1; if (starDB != null) { percent = starDB.Percent / 100f + 1; } dict[EAttr.HP] = (int)(dict[EAttr.HP] * percent); dict[EAttr.AP] = (int)(dict[EAttr.AP] * percent); dict[EAttr.DF] = (int)(dict[EAttr.DF] * percent); }
public XEquip GetXEquipByPos(EPosType posType, int pos) { Dictionary <int, XItem> dict = GetItemDataByPosType(posType); if (!dict.ContainsKey(pos)) { return(null); } XItem itemPos = dict[pos]; XEquip equip = null; if (Equips.ContainsKey(itemPos.Instance)) { equip = Equips[itemPos.Instance]; } return(equip); }
private void OnAutoToAddMatClick(GameObject go) { GTAudioManager.Instance.PlayEffectAudio(GTAudioKey.SOUND_UI_CLICK); if (mStrengthenCostItems.Count > 0) { return; } XEquip equip = GTDataManager.Instance.GetEquipDataByPos(mPosType, mPos); List <XItem> list = EquipModule.Instance.GetItemListToOneKeyStrengthen(equip); if (list.Count == 0) { GTItemHelper.ShowTip("没有蓝绿装,且没有水晶"); return; } mStrengthenCostItems = list; ShowStrengthenView(); }
static void CalcEquipAdvanceLevel(Dictionary <EAttr, int> dict, XEquip equip) { int lv = equip.AdvanceLevel; DEquipAdvance db = ReadCfgEquipAdvance.GetDataById(equip.Id); for (int i = 0; i < db.Propertys.Count; i++) { if (i < lv) { KeyValuePair <EAttr, int> ep = db.Propertys[i]; dict[ep.Key] += ep.Value; } else { break; } } }
private void OnAck_StrengthEquip(MessageRecv obj) { System.IO.MemoryStream ms = new System.IO.MemoryStream(obj.Data); AckStrengthEquip ack = Serializer.Deserialize <AckStrengthEquip>(ms); XEquip equip = ack.TarEquip; List <XItem> list = ack.UseItems; DEquip cfg = ReadCfgEquip.GetDataById(equip.Id); int strengthenLevel = equip.StrengthenLevel; int strID = cfg.Quality * 1000 + strengthenLevel + 1; int addExpNum = EquipModule.Instance.GetStrengthenExpByMatList(list); DEquipStrengLevel db = ReadCfgEquipStrengLevel.GetDataById(strID); int expNum = db.RequireExp - equip.StrengthenExp; while (addExpNum >= expNum) { strengthenLevel++; db = ReadCfgEquipStrengLevel.GetDataById(cfg.Quality * 1000 + strengthenLevel + 1); expNum += db.RequireExp; } equip.StrengthenLevel = strengthenLevel; equip.StrengthenExp = addExpNum + db.RequireExp - expNum; DataDBSEquip.Update(equip.Instance, equip); GTDataManager.Instance.UseMoney(DEquip.EQUIP_STRENGTHEN_MONEY_ID_1, expNum); for (int i = 0; i < list.Count; i++) { XItem item = list[i]; if ((EPosType)item.PosType == EPosType.RoleMoney) { GTDataManager.Instance.UseMoney(item.Id, item.Num); } else { GTDataManager.Instance.DelBagEquip(item.Pos); } } CharacterManager.Instance.SyncMainPlayerData(ESyncDataType.TYPE_BASEATTR); GTEventCenter.FireEvent(GTEventID.TYPE_STRENGTHEN_EQUIP); GTEventCenter.FireEvent(GTEventID.TYPE_CHANGE_FIGHTVALUE); }
public void TryAdvanceEquip(XEquip equip) { if (EquipModule.Instance.IsFullAdvanceLevel(equip)) { GTItemHelper.ShowTip("进阶等级已满"); return; } DEquip cfg = ReadCfgEquip.GetDataById(equip.Id); int advanceID = cfg.Quality * 1000 + equip.AdvanceLevel + 1; DEquipAdvanceCost db = ReadCfgEquipAdvanceCost.GetDataById(advanceID); if (!GTItemHelper.CheckItemEnongh(db.CostMoneyId, db.CostMoneyNum)) { return; } if (!GTItemHelper.CheckItemEnongh(db.CostItemId, db.CostItemNum)) { return; } List <XItem> list; if (db.CostEquipNum > 0) { list = EquipModule.Instance.GetBagSameEquipList(equip); if (list.Count < db.CostEquipNum) { GTItemHelper.ShowTip("缺少同样的装备"); return; } list.RemoveRange(db.CostEquipNum, list.Count - db.CostEquipNum); } else { list = new List <XItem>(); } ReqAdvanceEquip req = new ReqAdvanceEquip(); req.TarEquip = equip; req.UseItems.AddRange(list); NetworkManager.Instance.Send <ReqAdvanceEquip>(MessageID.MSG_REQ_ADVANCE_EQUIP, req); }
public List <XItem> GetBagSameEquipList(XEquip equip) { List <XItem> list = new List <XItem>(); Dictionary <int, XItem> .Enumerator em = DataDBSBagItem.Dict.GetEnumerator(); while (em.MoveNext()) { XItem item = em.Current.Value; DItem itemDB = ReadCfgItem.GetDataById(item.Id); if (itemDB.ItemType != EItemType.EQUIP) { continue; } XEquip e = DataDBSEquip.GetDataById(item.Instance); if (e.Id != equip.Id) { continue; } if (e.Instance == equip.Instance) { continue; } if (e.StarLevel > 0) { continue; } if (e.StrengthenLevel > 0) { continue; } if (e.StrengthenExp > 0) { continue; } if (e.AdvanceLevel > 0) { continue; } list.Add(item); } em.Dispose(); return(list); }