コード例 #1
0
ファイル: UIGem.cs プロジェクト: zyb2013/GameProject3
    private void OnStrengthenClick(GameObject go)
    {
        GTAudioManager.Instance.PlayEffectAudio(GTAudioKey.SOUND_UI_CLICK);
        XGem gem = GTDataManager.Instance.GetGemDataByPos(mPosType, mPos);

        GTNetworkSend.Instance.TryStrengthGem(gem, mStrengthenMats);
    }
コード例 #2
0
ファイル: UIGemInfo.cs プロジェクト: wtrd1234/GameProject3
    public void ShowInfoByPos(EPosType posType, int pos)
    {
        this.mPos     = pos;
        this.mPosType = posType;
        bool isDress = (posType == EPosType.RoleGem);

        ShowDress(isDress);
        XGem gem    = GTDataManager.Instance.GetGemDataByPos(posType, pos);
        int  itemID = gem.Id;
        DGem gemDB  = ReadCfgGem.GetDataById(itemID);

        gemLevel.text      = GTTools.Format("等级 {0}", gem.StrengthenLevel);
        gemFightValue.text = GTTools.Format("战斗力 {0}", AttrHelper.GetFightValue(gem));
        ShowBaseView(itemID);
        GTItemHelper.ShowGemPropertyText(gemPropertys, itemID, gem.StrengthenLevel);
        DGemSuit suitDB        = ReadCfgGemSuit.GetDataById(gemDB.Suit);
        int      activeSuitNum = isDress ? GemModule.Instance.GetActiveSameSuitsCountByPos(pos) : 0;
        bool     hasSuit       = ReadCfgGemSuit.ContainsKey(gemDB.Suit);

        if (hasSuit)
        {
            ShowHasSuit(gemDB);
            ShowSuitPropertysView(activeSuitNum, suitDB);
            ShowSameSuitGemsView(gemDB.Id);
        }
        else
        {
            ShowNoSuit();
        }
    }
コード例 #3
0
ファイル: GTNetworkSend.cs プロジェクト: zyb2013/GameProject3
    public void TryStrengthGem(XGem gem, List <XItem> list)
    {
        if (MLGem.Instance.IsFullStrengthenLevel(gem))
        {
            GTItemHelper.ShowTip("宝石强化等级已满");
            return;
        }
        if (list.Count == 0)
        {
            GTItemHelper.ShowTip("请添加升级材料");
            return;
        }
        int exp = MLGem.Instance.GetExpByStrengthMatList(list);

        if (GTItemHelper.CheckItemEnongh(1, exp) == false)
        {
            return;
        }

        ReqStrengthGem req = new ReqStrengthGem();

        req.TarGem = gem;
        req.UseItems.AddRange(list);
        NetworkManager.Instance.Send <ReqStrengthGem>(MessageID.MSG_REQ_STRENGTHEN_GEM, req);
    }
コード例 #4
0
ファイル: MLGem.cs プロジェクト: zyb2013/GameProject3
    public bool IsCanBeUseAsStrengthenMatToAutoAdd(XItem item)
    {
        XGem gem   = DataDBSGem.GetDataById(item.Instance);
        DGem gemDB = ReadCfgGem.GetDataById(gem.Id);

        return(gemDB.Quality < 3);
    }
コード例 #5
0
    public static Dictionary <EAttr, int> GetAllGemPropertysByIndex(int index)
    {
        if (!DataDBSDressEquip.ContainsKey(index))
        {
            return(New());
        }
        Dictionary <EAttr, int> attrValues = New();

        for (int i = 1; i <= 5; i++)
        {
            int   gemPos = MLGem.Instance.GetDressGemPosByIndexAndTargetPos(index, i);
            XItem item   = DataDBSDressGem.GetDataById(gemPos);
            if (item == null)
            {
                continue;
            }
            XGem gem = DataDBSGem.GetDataById(item.Instance);
            if (gem != null)
            {
                continue;
            }
            CalcGemStrenthLevel(attrValues, gem);
        }
        CalcMaxAttrValue(ref attrValues);
        return(attrValues);
    }
コード例 #6
0
ファイル: DataManager.cs プロジェクト: mengtest/skilldemo
    public void AddNewGem(int instanceId, int id)
    {
        int newPos = GetNewPos(EBagType.GEM);

        if (newPos == 0)
        {
            return;
        }
        XItem item = new XItem();

        item.Instance = instanceId;
        item.Pos      = newPos;
        item.Id       = id;
        item.Num      = 1;
        item.PosType  = (int)EPosType.BagGem;
        DataBagGem.Insert(newPos, item);

        XGem gem = new XGem();

        gem.Instance        = instanceId;
        gem.Id              = id;
        gem.StrengthenLevel = 0;
        gem.StrengthenExp   = 0;
        DataGem.Insert(instanceId, gem);
    }
コード例 #7
0
 static void CalcAllGemPropertys(Dictionary <EAttr, int> dict)
 {
     Dictionary <int, XItem> .Enumerator em = DataDBSDressGem.Dict.GetEnumerator();
     while (em.MoveNext())
     {
         int dressPos = em.Current.Key;
         int index    = MLGem.Instance.GetIndexByDressGemPos(dressPos);
         if (!DataDBSDressEquip.ContainsKey(index))
         {
             continue;
         }
         int instanceID = em.Current.Value.Instance;
         if (!DataDBSGem.ContainsKey(instanceID))
         {
             continue;
         }
         XGem gem = DataDBSGem.GetDataById(instanceID);
         Dictionary <EAttr, int> .Enumerator em2 = GetPropertys(gem).GetEnumerator();
         while (em2.MoveNext())
         {
             dict[em2.Current.Key] += em2.Current.Value;
         }
         em2.Dispose();
     }
     em.Dispose();
 }
コード例 #8
0
    public static int GetFightValue(XGem gem)
    {
        Dictionary <EAttr, int> attrValues = GetPropertys(gem);
        int value = GetFightValue(attrValues);

        return(value);
    }
コード例 #9
0
ファイル: UIGem.cs プロジェクト: zyb2013/GameProject3
    private void OnAutoToAddMatClick(GameObject go)
    {
        GTAudioManager.Instance.PlayEffectAudio(GTAudioKey.SOUND_UI_CLICK);
        XGem gem = GTDataManager.Instance.GetGemDataByPos(mPosType, mPos);

        mStrengthenMats = MLGem.Instance.GetItemListToOneKeyStrengthen(gem);
        ShowView();
    }
コード例 #10
0
    public static Dictionary <EAttr, int> GetPropertys(XGem gem)
    {
        Dictionary <EAttr, int> attrValues = New();

        CalcGemStrenthLevel(attrValues, gem);
        CalcMaxAttrValue(ref attrValues);
        return(attrValues);
    }
コード例 #11
0
ファイル: DataModule.cs プロジェクト: 759212313/skilldemo
    public XGem Clone()
    {
        XGem gem = new XGem();

        gem.Instance        = Instance;
        gem.Id              = Id;
        gem.StrengthenLevel = StrengthenLevel;
        gem.StrengthenExp   = StrengthenExp;
        return(gem);
    }
コード例 #12
0
ファイル: GTDataFactory.cs プロジェクト: zyb2013/GameProject3
    public static XGem       CreateGem(int id, int instance)
    {
        XGem tab = new XGem();

        tab.Id              = id;
        tab.Instance        = instance;
        tab.StrengthenLevel = 0;
        tab.StrengthenExp   = 0;
        return(tab);
    }
コード例 #13
0
ファイル: MLGem.cs プロジェクト: zyb2013/GameProject3
    public int GetExpByXGem(XGem gem)
    {
        DGem gemDB = ReadCfgGem.GetDataById(gem.Id);
        int  exp   = gem.StrengthenExp + gemDB.Exp;
        int  lv    = gem.StrengthenLevel;

        for (int i = 0; i < lv; i++)
        {
            DGemLevel db = ReadCfgGemLevel.GetDataById(gemDB.Quality * 1000 + gem.StrengthenLevel);
            exp += db.RequireExp;
        }
        return(exp);
    }
コード例 #14
0
    private void ShowView()
    {
        labMoneyNum1.text = GTDataManager.Instance.GetItemCountById(1).ToString();
        labMoneyNum2.text = GTDataManager.Instance.GetItemCountById(2).ToString();
        GTItemHelper.ShowItemTexture(moneyTexture1, 1);
        GTItemHelper.ShowItemTexture(moneyTexture2, 2);
        XGem gem    = GTDataManager.Instance.GetGemDataByPos(mPosType, mPos);
        int  itemID = gem.Id;

        GTItemHelper.ShowItemTexture(gemTexture, itemID);
        GTItemHelper.ShowItemQuality(gemQuality, itemID);
        GTItemHelper.ShowItemName(gemName, itemID);

        int costgemNum = mStrengthenMats.Count;

        for (int i = 0; i < mStrengthenItems.Count; i++)
        {
            ItemStrengthen cell = mStrengthenItems[i];
            if (i < costgemNum)
            {
                XItem mat = mStrengthenMats[i];
                cell.Show(true);
                int id = mStrengthenMats[i].Id;
                GTItemHelper.ShowItemTexture(cell.itemTexture, id);
                GTItemHelper.ShowItemQuality(cell.itemQuality, id);
                GTItemHelper.ShowItemNum(cell.itemNum, mat.Num);
            }
            else
            {
                cell.Show(false);
            }
        }
        if (GemModule.Instance.IsFullStrengthenLevel(gem) == true)
        {
            return;
        }
        DGem      gemDB     = ReadCfgGem.GetDataById(itemID);
        DGemLevel levelDB   = ReadCfgGemLevel.GetDataById(gemDB.Quality * 1000 + gem.StrengthenLevel + 1);
        int       addExpNum = GemModule.Instance.GetExpByStrengthMatList(mStrengthenMats);

        GTItemHelper.ShowItemTexture(costMoneyTexture, levelDB.CostMoneyId);
        costMoneyNum.text = addExpNum.ToString();
        gemLevel.text     = GTTools.Format("强化等级 {0}", gem.StrengthenLevel);
        GTItemHelper.ShowProgressText(gemExpNum, gem.StrengthenExp, levelDB.RequireExp);
        GTItemHelper.ShowProgressSlider(gemExpBar, gem.StrengthenExp, levelDB.RequireExp);
        GTItemHelper.ShowGemPropertyText(gemProperty, itemID, gem.StrengthenLevel, true);

        gemSuit.text = GemModule.Instance.GetGemSuitName(itemID);
        gemType.text = GemModule.Instance.GetGemTypeName(itemID);
    }
コード例 #15
0
    public XGem   GetGemDataByPos(EPosType posType, int pos)
    {
        Dictionary <int, XItem> dict = GetItemDataByPosType(posType);
        XItem item = null;

        dict.TryGetValue(pos, out item);
        if (item == null)
        {
            return(null);
        }
        XGem gem = null;

        DataDBSGem.Dict.TryGetValue(item.Instance, out gem);
        return(gem);
    }
コード例 #16
0
ファイル: MLGem.cs プロジェクト: zyb2013/GameProject3
    public List <XItem> GetItemListToOneKeyStrengthen(XGem gem)
    {
        List <XItem>            list     = new List <XItem>();
        Dictionary <int, XItem> bagItems = GTDataManager.Instance.GetItemDataByPosType(EPosType.BagItem);

        HashSet <int> .Enumerator em = mStrengHashSet.GetEnumerator();
        while (em.MoveNext())
        {
            int   id   = em.Current;
            XItem data = GTDataManager.Instance.GetItemDataById(id);
            if (data == null || list.Count > 0)
            {
                continue;
            }
            int num = data.Num;
            for (int i = 0; i < data.Num; i++)
            {
                if (num == 0 || list.Count >= 6)
                {
                    break;
                }
                else
                {
                    XItem newData = new XItem();
                    newData.Id       = data.Id;
                    newData.Instance = data.Instance;
                    newData.Pos      = data.Pos;
                    newData.PosType  = data.PosType;
                    newData.Num      = 1;
                    list.Add(newData);
                    num--;
                }
            }
        }

        List <XItem> pGemList = GetAllGemList(gem);

        for (int i = 0; i < pGemList.Count; i++)
        {
            if (list.Count >= 6)
            {
                break;
            }
            XItem item = pGemList[i];
            list.Add(item);
        }
        return(list);
    }
コード例 #17
0
    private void OnAck_StrengthGem(MessageRecv obj)
    {
        System.IO.MemoryStream ms  = new System.IO.MemoryStream(obj.Data);
        AckStrengthGem         ack = Serializer.Deserialize <AckStrengthGem>(ms);
        XGem         gem           = ack.TarGem;
        List <XItem> list          = ack.UseItems;

        DGem gemDB           = ReadCfgGem.GetDataById(gem.Id);
        int  addExpNum       = MLGem.Instance.GetExpByStrengthMatList(list);
        int  strengthenLevel = gem.StrengthenLevel;

        int       levelID = gemDB.Quality * 1000 + strengthenLevel + 1;
        DGemLevel db      = ReadCfgGemLevel.GetDataById(levelID);
        int       expNum  = db.RequireExp - gem.StrengthenExp;

        while (addExpNum >= expNum)
        {
            strengthenLevel++;
            levelID = gemDB.Quality * 1000 + strengthenLevel + 1;
            db      = ReadCfgGemLevel.GetDataById(levelID);
            expNum += db.RequireExp;
        }
        gem.StrengthenLevel = strengthenLevel;
        gem.StrengthenExp   = addExpNum + db.RequireExp - expNum;

        DataDBSGem.Update(gem.Instance, gem);
        GTDataManager.Instance.UseMoney(db.CostMoneyId, expNum);
        for (int i = 0; i < list.Count; i++)
        {
            XItem    item    = list[i];
            EPosType posType = (EPosType)item.PosType;
            switch (posType)
            {
            case EPosType.BagItem:
                GTDataManager.Instance.UseItemById(item.Id, item.Num);
                break;

            case EPosType.BagGem:
                GTDataManager.Instance.DelBagGem(item.Pos);
                break;
            }
        }

        GTWorld.Instance.SyncMainPlayerData(ESyncDataType.TYPE_BASEATTR);
        GTEventCenter.FireEvent(GTEventID.TYPE_BAG_STRENGTHEN_GEM);
        GTEventCenter.FireEvent(GTEventID.TYPE_CHANGE_FIGHTVALUE);
    }
コード例 #18
0
ファイル: DataManager.cs プロジェクト: mengtest/skilldemo
    public XGem GetXGemByPos(EPosType posType, int pos)
    {
        Dictionary <int, XItem> dict = GetItemDataByPosType(posType);

        if (!dict.ContainsKey(pos))
        {
            return(null);
        }
        XItem itemPos = dict[pos];
        XGem  gem     = null;

        if (Gems.ContainsKey(itemPos.Instance))
        {
            gem = Gems[itemPos.Instance];
        }
        return(gem);
    }
コード例 #19
0
    private void ShowGemCellView(int pos)
    {
        int     gemPos = GemModule.Instance.GetDressGemPosByIndexAndTargetPos(mCurIndex, pos);
        ItemGem cell   = mGItems[pos - 1];
        XGem    gem    = GTDataManager.Instance.GetGemDataByPos(EPosType.RoleGem, gemPos);

        if (gem == null)
        {
            cell.Show(false);
        }
        else
        {
            cell.Show(true);
            GTItemHelper.ShowItemTexture(cell.itemTexture, gem.Id);
            GTItemHelper.ShowItemQuality(cell.itemQuality, gem.Id);
        }
    }
コード例 #20
0
ファイル: MLGem.cs プロジェクト: zyb2013/GameProject3
    public List <XItem> GetAllGemList(XGem gem)
    {
        List <XItem> list = new List <XItem>();

        Dictionary <int, XItem> .Enumerator em = DataDBSBagGem.Dict.GetEnumerator();
        while (em.MoveNext())
        {
            if (em.Current.Value.Instance == gem.Instance)
            {
                continue;
            }
            XItem item = em.Current.Value;
            list.Add(item);
        }
        em.Dispose();
        list.Sort(CompareXGem);
        return(list);
    }
コード例 #21
0
    static void CalcGemStrenthLevel(Dictionary <EAttr, int> dict, XGem gem)
    {
        DGem      gemDB = ReadCfgGem.GetDataById(gem.Id);
        DGemLevel db    = ReadCfgGemLevel.GetDataById(gemDB.Quality * 1000 + gem.StrengthenLevel);

        for (int i = 0; i < gemDB.Propertys.Count; i++)
        {
            DStrengthValue gp = gemDB.Propertys[i];
            if (gem.StrengthenLevel >= gp.UnlockLevel)
            {
                dict[gp.Property] += gp.Value;
                int ratio = gem.StrengthenLevel > 0 ? db.PropertyRatio : 100;
                dict[gp.Property] = (int)(dict[gp.Property] * ratio / 100f);
            }
            else
            {
                break;
            }
        }
    }
コード例 #22
0
ファイル: MLGem.cs プロジェクト: zyb2013/GameProject3
    public int CompareXGem(XItem x1, XItem x2)
    {
        XGem e1  = DataDBSGem.GetDataById(x1.Instance);
        XGem e2  = DataDBSGem.GetDataById(x2.Instance);
        DGem db1 = ReadCfgGem.GetDataById(e1.Id);
        DGem db2 = ReadCfgGem.GetDataById(e2.Id);

        if (db1.Quality != db2.Quality)
        {
            return(db1.Quality - db2.Quality);
        }
        if (e1.StrengthenLevel != e2.StrengthenLevel)
        {
            return(e1.StrengthenLevel - e2.StrengthenLevel);
        }
        if (e1.StrengthenExp != e2.StrengthenExp)
        {
            return(e1.StrengthenExp - e2.StrengthenExp);
        }
        return(x2.Pos - x1.Pos);
    }
コード例 #23
0
ファイル: MLGem.cs プロジェクト: zyb2013/GameProject3
    public int GetExpByStrengthMatList(List <XItem> list)
    {
        int value = 0;

        for (int i = 0; i < list.Count; i++)
        {
            XItem item = list[i];
            switch ((EPosType)item.PosType)
            {
            case EPosType.BagItem:
                DItem itemDB = ReadCfgItem.GetDataById(item.Id);
                value += itemDB.Data1 * item.Num;
                break;

            case EPosType.BagGem:
                XGem gem = DataDBSGem.GetDataById(item.Instance);
                value += GetExpByXGem(gem);
                break;
            }
        }
        return(value);
    }
コード例 #24
0
    public int CompareBagGem(XItem x1, XItem x2)
    {
        DItem itemDB1 = ReadCfgItem.GetDataById(x1.Id);
        DItem itemDB2 = ReadCfgItem.GetDataById(x2.Id);

        if (itemDB1.Quality != itemDB2.Quality)
        {
            return(itemDB2.Quality - itemDB1.Quality);
        }
        if (itemDB1.Id != itemDB2.Id)
        {
            return(itemDB1.Id - itemDB2.Id);
        }
        XGem gem1 = DataDBSGem.GetDataById(x1.Instance);
        XGem gem2 = DataDBSGem.GetDataById(x2.Instance);

        if (gem1.StrengthenLevel != gem2.StrengthenLevel)
        {
            return(gem1.StrengthenLevel - gem2.StrengthenLevel);
        }
        return(x1.Instance - x2.Instance);
    }
コード例 #25
0
ファイル: RoleModule.cs プロジェクト: wtrd1234/GameProject3
    public XCharacter GetMainPlayer()
    {
        XCharacter c = GetCurPlayer();

        c.Equips.Clear();
        Dictionary <int, XItem> .Enumerator em1 = DataDBSDressEquip.Dict.GetEnumerator();
        while (em1.MoveNext())
        {
            XEquip it = GTDataManager.Instance.GetEquipDataByPos(EPosType.RoleEquip, em1.Current.Value.Pos);
            if (it != null)
            {
                c.Equips.Add(it);
            }
        }
        em1.Dispose();

        c.Gems.Clear();
        Dictionary <int, XItem> .Enumerator em2 = DataDBSDressGem.Dict.GetEnumerator();
        while (em2.MoveNext())
        {
            XGem it = GTDataManager.Instance.GetGemDataByPos(EPosType.RoleGem, em1.Current.Value.Pos);
            if (it != null)
            {
                c.Gems.Add(it);
            }
        }
        em2.Dispose();

        c.BaseAttr.Clear();
        c.CurrAttr.Clear();
        c.BaseAttr.AddRange(AttrHelper.GetPropertys(c).Values);
        for (int i = 0; i < c.BaseAttr.Count; i++)
        {
            c.CurrAttr.Add(c.BaseAttr[i]);
        }
        return(c);
    }
コード例 #26
0
ファイル: MLGem.cs プロジェクト: zyb2013/GameProject3
    public int GetActiveSameSuitsCountByPos(int pos)
    {
        if (!DataDBSDressGem.ContainsKey(pos))
        {
            return(0);
        }
        XItem dressGem = DataDBSDressGem.GetDataById(pos);

        if (!DataDBSGem.ContainsKey(dressGem.Instance))
        {
            return(0);
        }
        XGem       gem       = DataDBSGem.GetDataById(dressGem.Instance);
        int        p         = (int)(pos / 5.1f);
        List <int> sameSuits = GetSameSuitIDListByID(gem.Id);
        int        count     = 0;

        for (int i = 0; i < sameSuits.Count; i++)
        {
            int suitPos = p * 5 + i + 1;
            if (!DataDBSDressGem.ContainsKey(suitPos))
            {
                continue;
            }
            XItem item = DataDBSDressGem.GetDataById(suitPos);
            if (!DataDBSGem.ContainsKey(item.Instance))
            {
                continue;
            }
            XGem g = DataDBSGem.GetDataById(item.Instance);
            if (sameSuits.Contains(g.Id))
            {
                count++;
            }
        }
        return(count);
    }
コード例 #27
0
ファイル: MLGem.cs プロジェクト: zyb2013/GameProject3
 public bool IsFullStrengthenLevel(XGem gem)
 {
     return(gem.StrengthenLevel >= 120);
 }