Exemple #1
0
    public void RemoveArtifact(ArtifactItem item)
    {
        _artifactsInventory.Remove(item);
        AddItem(item);

        RescaleStats();
    }
Exemple #2
0
 private void RemoveArtifact()
 {
     if (Artifact)
     {
         _player.RemoveArtifact(Artifact);
         _removeButtonImage.sprite = _defaultSprite;
         Artifact = null;
     }
 }
 public void MapValues()
 {
     ArtifactItem.TryMapValue();
     SealPresentationNode.TryMapValue();
     SeasonalChallengesPresentationNode.TryMapValue();
     SeasonPass.TryMapValue();
     SeasonPassProgression.TryMapValue();
     SeasonPassUnlock.TryMapValue();
 }
    void UpdateArtifactItem()
    {
        _soulHeroList.Clear();
        count = 0;
        ReloadHero();

        _artifact = null;
        Dictionary <int, Artifact> _map = ObjectSelf.GetInstance().ArtifactContainerBag.GetArtifactMap();

        for (int i = 0; i <= _map.Count; i++)
        {
            if (_map.ContainsKey(i))
            {
                if (index + 1 == i)
                {
                    _artifact = _map[i];
                    break;
                }
            }
        }

        ArtifactItem item = _artifactItem.GetComponent <ArtifactItem>();

        item.ShowInfoSoul(_artifact, count);
        _item.ShowHeroData();

        // 当到达满级之后
        if (_artifact.GetArtifactDB().GetLevel() == 5)
        {
            bool  ret     = false;
            int[] recode  = _artifact.GetArtifactDB().m_IntoRecord;
            int[] heroNum = _artifact.GetArtifactRow().getHeroNum();
            for (int i = 0; i < heroNum.Length; i++)
            {
                if (heroNum[i] > recode[i])
                {
                    ret = true;
                    break;
                }
            }

            if (!ret)
            {
                for (int i = 1; i < _emptyHero.transform.childCount; i++)
                {
                    _emptyHero.transform.GetChild(i).gameObject.SetActive(false);
                }

                _emptyHero.transform.FindChild("TipsText").GetComponent <Text>().text = GameUtils.getString("relics_content16");
                _emptyHero.transform.FindChild("TipsText").GetComponent <Text>().gameObject.SetActive(true);

                return;
            }
        }
    }
    // 显示整个神器界面的信息
    public void ShowInfo(Artifact artifact)
    {
        _artifact = artifact;
        _item     = _artifactItem.AddComponent <ArtifactItem> ();
        _item.ShowInfoSoul(artifact, count);
        _item.ShowHeroData();

        _item._soulBtn.onClick.RemoveAllListeners();
        _item._soulBtn.onClick.AddListener(new UnityEngine.Events.UnityAction(OnClickSoulBtn));

        ReloadHero();
    }
Exemple #6
0
    // 加载一个神器 Item
    void LoadArtifactItem(int index, RectTransform cell)
    {
        if (index < _artifactList.Count)
        {
            ArtifactItem item = cell.gameObject.GetComponent <ArtifactItem>();
            if (item == null)
            {
                item = cell.gameObject.AddComponent <ArtifactItem>();
            }

            item.index     = index;
            item.artiIndex = index;
            item.ShowInfo(_artifactList[index]);
        }
    }
Exemple #7
0
    public void AddArtifact(ArtifactItem item)
    {
        foreach (var slot in _artifactSlots)
        {
            if (slot.Artifact == null)
            {
                slot.AddArtifact(item);

                _artifactsInventory.Add(item);
                RemoveItem(item);
                RescaleStats();

                return;
            }
        }
    }
 public bool DeepEquals(DestinySeasonDefinition other)
 {
     return(other != null &&
            ArtifactItem.DeepEquals(other.ArtifactItem) &&
            BackgroundImagePath == other.BackgroundImagePath &&
            DisplayProperties.DeepEquals(other.DisplayProperties) &&
            SeasonNumber == other.SeasonNumber &&
            SealPresentationNode.DeepEquals(other.SealPresentationNode) &&
            SeasonalChallengesPresentationNode.DeepEquals(other.SeasonalChallengesPresentationNode) &&
            SeasonPass.DeepEquals(other.SeasonPass) &&
            SeasonPassProgression.DeepEquals(other.SeasonPassProgression) &&
            SeasonPassUnlock.DeepEquals(other.SeasonPassUnlock) &&
            StartTimeInSeconds == other.StartTimeInSeconds &&
            StartDate == other.StartDate &&
            EndDate == other.EndDate &&
            Preview.DeepEquals(other.Preview) &&
            Blacklisted == other.Blacklisted &&
            Hash == other.Hash &&
            Index == other.Index &&
            Redacted == other.Redacted);
 }
Exemple #9
0
 public void UpdateRoleGodProps(GameClient client)
 {
     try
     {
         ShenQiData shenQiData = client.ClientData.shenQiData;
         int        shenQiID   = shenQiData.ShenQiID;
         if (shenQiID >= 1)
         {
             ArtifactItem artifactItem = null;
             lock (this.ShenQiRunTimeData.Mutex)
             {
                 this.ShenQiRunTimeData.ArtifactXmlDict.TryGetValue(shenQiID, out artifactItem);
             }
             if (shenQiData.LifeAdd < artifactItem.PropArray[0] || shenQiData.DefenseAdd < artifactItem.PropArray[2] || shenQiData.AttackAdd < artifactItem.PropArray[1] || shenQiData.ToughnessAdd < artifactItem.PropArray[3])
             {
                 shenQiID--;
             }
             List <GodItem> godList = null;
             lock (this.ShenQiRunTimeData.Mutex)
             {
                 godList = this.ShenQiRunTimeData.GodXmlList;
             }
             if (godList != null && godList.Count >= 1)
             {
                 Dictionary <int, double> addPropsDict = new Dictionary <int, double>();
                 foreach (GodItem item in godList)
                 {
                     bool open = true;
                     foreach (int id in item.OpenCondition)
                     {
                         if (id > shenQiID)
                         {
                             open = false;
                             break;
                         }
                     }
                     if (open)
                     {
                         foreach (Dictionary <int, double> propDic in item.ActivationProperty)
                         {
                             foreach (KeyValuePair <int, double> propItem in propDic)
                             {
                                 addPropsDict[propItem.Key] = (addPropsDict.ContainsKey(propItem.Key) ? (addPropsDict[propItem.Key] + propItem.Value) : propItem.Value);
                             }
                         }
                     }
                 }
                 foreach (KeyValuePair <int, double> item2 in addPropsDict)
                 {
                     client.ClientData.PropsCacheManager.SetExtPropsSingle(new object[]
                     {
                         28,
                         item2.Key,
                         item2.Value
                     });
                 }
             }
         }
     }
     catch (Exception ex)
     {
         LogManager.WriteLog(LogTypes.Error, string.Format("ShenQi :: 更新角色神像加成错误 roleid={0} ex:{1}", client.ClientData.RoleID, ex.Message), null, true);
     }
 }
Exemple #10
0
        public ShenQiData LevelUpShenQiData(GameClient client, int useBaoJi)
        {
            ShenQiData result;

            if (!GlobalNew.IsGongNengOpened(client, GongNengIDs.ShenQi, false))
            {
                result = new ShenQiData
                {
                    UpResultType = -1
                };
            }
            else
            {
                ShenQiData data = client.ClientData.shenQiData;
                try
                {
                    if (null == data)
                    {
                        LogManager.WriteLog(LogTypes.Error, string.Format("ShenQi :: 注入失败,获取角色神器数据错误,角色id:{0}", client.ClientData.RoleID), null, true);
                        return(new ShenQiData
                        {
                            UpResultType = 0
                        });
                    }
                    ArtifactItem artifactItem = null;
                    lock (this.ShenQiRunTimeData.Mutex)
                    {
                        this.ShenQiRunTimeData.ArtifactXmlDict.TryGetValue(data.ShenQiID, out artifactItem);
                    }
                    if (null == artifactItem)
                    {
                        LogManager.WriteLog(LogTypes.Error, string.Format("ShenQi :: 注入失败,获取角色神器数据配置项错误,角色id:{0}, ShenQiID:{1}", client.ClientData.RoleID, data.ShenQiID), null, true);
                        return(new ShenQiData
                        {
                            UpResultType = 0
                        });
                    }
                    if (client.ClientData.ShenLiJingHuaPoints < artifactItem.CostShenLiJingHua)
                    {
                        return(new ShenQiData
                        {
                            UpResultType = -2
                        });
                    }
                    int GoldGoodsNum = 0;
                    if (artifactItem.CostGoldGoodsID > 0)
                    {
                        GoldGoodsNum = Global.GetTotalGoodsCountByID(client, artifactItem.CostGoldGoodsID);
                    }
                    if (client.ClientData.YinLiang < artifactItem.CostGoldCoin && (artifactItem.CostGoldGoodsNum <= 0 || GoldGoodsNum < artifactItem.CostGoldGoodsNum))
                    {
                        return(new ShenQiData
                        {
                            UpResultType = -4
                        });
                    }
                    if (useBaoJi > 0 && client.ClientData.UserMoney < artifactItem.CostDiamond && !HuanLeDaiBiManager.GetInstance().HuanledaibiEnough(client, artifactItem.CostDiamond))
                    {
                        return(new ShenQiData
                        {
                            UpResultType = -3
                        });
                    }
                    GameManager.ClientMgr.ModifyShenLiJingHuaPointsValue(client, -artifactItem.CostShenLiJingHua, "神器注入_精华", true, true);
                    if (artifactItem.CostGoldGoodsNum > 0 && GoldGoodsNum >= artifactItem.CostGoldGoodsNum)
                    {
                        bool oneUseBind      = false;
                        bool oneUseTimeLimit = false;
                        if (Global.UseGoodsBindOrNot(client, artifactItem.CostGoldGoodsID, artifactItem.CostGoldGoodsNum, true, out oneUseBind, out oneUseTimeLimit) < 1)
                        {
                            return(new ShenQiData
                            {
                                UpResultType = -4
                            });
                        }
                    }
                    else if (!GameManager.ClientMgr.SubUserYinLiang(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, artifactItem.CostGoldCoin, "神器注入_金币", false))
                    {
                        return(new ShenQiData
                        {
                            UpResultType = -4
                        });
                    }
                    if (useBaoJi > 0)
                    {
                        if (!GameManager.ClientMgr.SubUserMoney(Global._TCPManager.MySocketListener, Global._TCPManager.tcpClientPool, Global._TCPManager.TcpOutPacketPool, client, artifactItem.CostDiamond, "神器注入_钻石", true, true, false, DaiBiSySType.ShenQiXiTong))
                        {
                            return(new ShenQiData
                            {
                                UpResultType = -4
                            });
                        }
                    }
                    int   rate     = 0;
                    int   r        = Global.GetRandomNumber(0, 101);
                    int[] addProps = null;
                    for (int i = 0; i < artifactItem.QiangHuaRate.Length; i++)
                    {
                        rate += artifactItem.QiangHuaRate[i];
                        if (r <= rate)
                        {
                            addProps       = artifactItem.QiangHuaArray[i];
                            data.BurstType = i;
                            if (useBaoJi > 0 && 0 == i)
                            {
                                addProps       = artifactItem.QiangHuaArray[1];
                                data.BurstType = 1;
                            }
                            break;
                        }
                    }
                    data.LifeAdd      += addProps[0];
                    data.LifeAdd       = ((data.LifeAdd > artifactItem.PropArray[0]) ? artifactItem.PropArray[0] : data.LifeAdd);
                    data.AttackAdd    += addProps[1];
                    data.AttackAdd     = ((data.AttackAdd > artifactItem.PropArray[1]) ? artifactItem.PropArray[1] : data.AttackAdd);
                    data.DefenseAdd   += addProps[2];
                    data.DefenseAdd    = ((data.DefenseAdd > artifactItem.PropArray[2]) ? artifactItem.PropArray[2] : data.DefenseAdd);
                    data.ToughnessAdd += addProps[3];
                    data.ToughnessAdd  = ((data.ToughnessAdd > artifactItem.PropArray[3]) ? artifactItem.PropArray[3] : data.ToughnessAdd);
                    if (data.LifeAdd < artifactItem.PropArray[0] || data.DefenseAdd < artifactItem.PropArray[2] || data.AttackAdd < artifactItem.PropArray[1] || data.ToughnessAdd < artifactItem.PropArray[3])
                    {
                        data.UpResultType = 1;
                    }
                    else if (this.ShenQiRunTimeData.ArtifactXmlDict.ContainsKey(data.ShenQiID + 1))
                    {
                        data.UpResultType = 2;
                        data.ShenQiID++;
                        data.LifeAdd      = 0;
                        data.AttackAdd    = 0;
                        data.DefenseAdd   = 0;
                        data.ToughnessAdd = 0;
                    }
                    else
                    {
                        data.UpResultType = 3;
                    }
                    data.ShenLiJingHuaLeft = client.ClientData.ShenLiJingHuaPoints;
                    List <int> props = new List <int>();
                    props.AddRange(new int[]
                    {
                        data.ShenQiID,
                        data.LifeAdd,
                        data.AttackAdd,
                        data.DefenseAdd,
                        data.ToughnessAdd
                    });
                    Global.SaveRoleParamsIntListToDB(client, props, "36", true);
                    client.ClientData.shenQiData = data;
                    this.UpdateRoleShenQiProps(client);
                    this.UpdateRoleTouhgnessProps(client);
                    if (data.UpResultType == 2 || data.UpResultType == 3)
                    {
                        this.UpdateRoleGodProps(client);
                        GameManager.logDBCmdMgr.AddDBLogInfo(-1, "神像", "神器升阶", client.ClientData.RoleName, "系统", "增加", 1, client.ClientData.ZoneID, client.strUserID, data.ShenQiID, client.ServerId, null);
                    }
                    GameManager.logDBCmdMgr.AddDBLogInfo(-1, "韧性", "神器注入_韧性", client.ClientData.RoleName, "系统", "增加", addProps[3], client.ClientData.ZoneID, client.strUserID, Convert.ToInt32(RoleAlgorithm.GetExtProp(client, 101)), client.ServerId, null);
                    GameManager.ClientMgr.NotifyUpdateEquipProps(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client);
                    GameManager.ClientMgr.NotifyOthersLifeChanged(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, client, true, false, 7);
                }
                catch (Exception ex)
                {
                    LogManager.WriteLog(LogTypes.Error, string.Format("ShenQi :: 升级角色神器数据错误 roleid={0} ex:{1}", client.ClientData.RoleID, ex.Message), null, true);
                    return(data);
                }
                result = data;
            }
            return(result);
        }
Exemple #11
0
        public void LoadArtifactXml()
        {
            string fileName = "";

            try
            {
                fileName = Global.GameResPath(ShenQiConsts.Artifact);
                XElement xml = CheckHelper.LoadXml(fileName, true);
                if (null != xml)
                {
                    Dictionary <int, ArtifactItem> artifactDict = new Dictionary <int, ArtifactItem>();
                    IEnumerable <XElement>         nodes        = xml.Elements();
                    foreach (XElement xmlItem in nodes)
                    {
                        if (xmlItem != null)
                        {
                            int    id        = Convert.ToInt32(Global.GetDefAttributeStr(xmlItem, "ID", "0"));
                            string name      = Global.GetDefAttributeStr(xmlItem, "Name", "");
                            int[]  propArray = new int[]
                            {
                                Convert.ToInt32(Global.GetDefAttributeStr(xmlItem, "LifeV", "0")),
                                Convert.ToInt32(Global.GetDefAttributeStr(xmlItem, "AddAttack", "0")),
                                Convert.ToInt32(Global.GetDefAttributeStr(xmlItem, "AddDefense", "0")),
                                Convert.ToInt32(Global.GetDefAttributeStr(xmlItem, "Toughness", "0"))
                            };
                            string[] qiangHua = Global.GetDefAttributeStr(xmlItem, "QiangHua", "").Split(new char[]
                            {
                                '|'
                            });
                            int[]   qiangHuaRateArray = new int[3];
                            int[][] qiangHuaArray     = new int[3][];
                            for (int i = 0; i < qiangHua.Length; i++)
                            {
                                string[] item = qiangHua[i].Split(new char[]
                                {
                                    ','
                                });
                                qiangHuaRateArray[i] = (int)(Convert.ToDouble(item[0]) * 100.0);
                                qiangHuaArray[i]     = new int[4];
                                qiangHuaArray[i][0]  = Convert.ToInt32(item[1]);
                                qiangHuaArray[i][1]  = Convert.ToInt32(item[2]);
                                qiangHuaArray[i][2]  = Convert.ToInt32(item[3]);
                                qiangHuaArray[i][3]  = Convert.ToInt32(item[4]);
                            }
                            int      costShenLi       = Convert.ToInt32(Global.GetDefAttributeStr(xmlItem, "CostShenLiJingHua", "0"));
                            int      costJinBi        = Convert.ToInt32(Global.GetDefAttributeStr(xmlItem, "CostGoldCoin", "0"));
                            int      costZuanShi      = Convert.ToInt32(Global.GetDefAttributeStr(xmlItem, "CostDiamond", "0"));
                            int      costGoldGoodsID  = 0;
                            int      costGoldGoodsNum = 0;
                            string[] costGoldGoods    = Global.GetDefAttributeStr(xmlItem, "CostGoldGoods", "").Split(new char[]
                            {
                                ','
                            });
                            if (costGoldGoods.Length == 2)
                            {
                                costGoldGoodsID  = Convert.ToInt32(costGoldGoods[0]);
                                costGoldGoodsNum = Convert.ToInt32(costGoldGoods[1]);
                            }
                            artifactDict[id] = new ArtifactItem
                            {
                                ID                = id,
                                Name              = name,
                                PropArray         = propArray,
                                QiangHuaRate      = qiangHuaRateArray,
                                QiangHuaArray     = qiangHuaArray,
                                CostShenLiJingHua = costShenLi,
                                CostGoldCoin      = costJinBi,
                                CostDiamond       = costZuanShi,
                                CostGoldGoodsID   = costGoldGoodsID,
                                CostGoldGoodsNum  = costGoldGoodsNum
                            };
                        }
                    }
                    lock (this.ShenQiRunTimeData.Mutex)
                    {
                        this.ShenQiRunTimeData.ArtifactXmlDict = artifactDict;
                    }
                }
            }
            catch (Exception ex)
            {
                LogManager.WriteLog(LogTypes.Fatal, string.Format("加载xml配置文件:{0}, 失败。", fileName), ex, true);
            }
        }
Exemple #12
0
 public void AddArtifact(ArtifactItem artifact)
 {
     Artifact = artifact;
     _removeButtonImage.sprite = artifact.SpriteImage;
 }