少年修仙传客户端代码仓库
client_linchunjie
2019-04-28 f6f7820d9dba84addf69c2531a875ee5a90bdc12
Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts
19个文件已修改
14个文件已添加
1877 ■■■■ 已修改文件
Core/GameEngine/DataToCtl/PackageRegedit.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ClientPack/ClientToMapServer/CA2_Interaction/CA212_tagCMViewPlayerInfo.cs 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA719_tagSCPlayerEquipCacheResult.cs 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA719_tagSCPlayerEquipCacheResult.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HA7_Interaction/HA719_tagSCPlayerEquipCacheResult.cs 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/NetworkPackage/ServerPack/HA7_Interaction/HA719_tagSCPlayerEquipCacheResult.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Fight/GameActor/GA_NpcFightZZPlayer.cs 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Lua/Gen/SnxxzUIRoleParticularModelWrap.cs 30 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Equip/EquipFightPower.cs 210 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/Equip/EquipSet.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/EquipGem/EquipEvolutionWin.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/EquipGem/EquipStrengthFull.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/EquipGem/EquipStrengthModel.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/EquipGem/EquipStrengthRein.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/EquipGem/EquipStrengthUpper.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/EquipGem/EquipStrengthWin.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/FairyFeastTransmitShow.cs 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/FairyAu/KingTempleWin.cs 51 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/ItemTip/ItemTipUtility.cs 167 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/ItemTip/TipStrengthenPropertyWidget.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/RoleParticulars/OtherPlayerEquipLevelBehaviour.cs 59 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/RoleParticulars/OtherPlayerEquipLevelBehaviour.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/RoleParticulars/OtherPlayerEquipModel.cs 424 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/RoleParticulars/OtherPlayerEquipModel.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/RoleParticulars/OtherPlayerEquipSlotBehaviour.cs 82 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/RoleParticulars/OtherPlayerEquipSlotBehaviour.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/RoleParticulars/OtherPlayerEquipWin.cs 194 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/RoleParticulars/OtherPlayerEquipWin.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/RoleParticulars/OtherPlayerSuitWidget.cs 165 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/RoleParticulars/OtherPlayerSuitWidget.cs.meta 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/RoleParticulars/RoleParticularModel.cs 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/RoleParticulars/RoleParticularsWin.cs 162 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
System/RoleParticulars/ViewFuncCell.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Core/GameEngine/DataToCtl/PackageRegedit.cs
@@ -25,6 +25,7 @@
    public static void Init()
    {
        // 登记相应的数据体及对应的数据转逻辑类
        Register(typeof(HA719_tagSCPlayerEquipCacheResult) ,typeof(DTCA719_tagSCPlayerEquipCacheResult));
        Register(typeof(HB108_tagMCYinjiStartTime) ,typeof(DTCB108_tagMCYinjiStartTime));
        Register(typeof(HA309_tagMCSkillElementInfo), typeof(DTCA309_tagMCSkillElementInfo));
        Register(typeof(HA325_tagMCNPCAttackCountInfo), typeof(DTCA325_tagMCNPCAttackCountInfo));
Core/NetworkPackage/ClientPack/ClientToMapServer/CA2_Interaction/CA212_tagCMViewPlayerInfo.cs
@@ -1,18 +1,23 @@
using UnityEngine;
using System.Collections;
//A2 12 查看玩家详细信息#tagCMViewPlayerInfo
public class CA212_tagCMViewPlayerInfo : GameNetPackBasic {
    public uint PlayerID;
    public CA212_tagCMViewPlayerInfo () {
        combineCmd = (ushort)0x03FE;
        _cmd = (ushort)0xA212;
    }
    public override void WriteToBytes () {
        WriteBytes (PlayerID, NetDataType.DWORD);
    }
}
//A2 12 查看玩家详细信息#tagCMViewPlayerInfo
public class CA212_tagCMViewPlayerInfo : GameNetPackBasic
{
    public uint PlayerID;
    public byte EquipClassLV;    //大于0为查看指定境界阶装备信息,  0为查看默认信息
    public CA212_tagCMViewPlayerInfo()
    {
        combineCmd = (ushort)0x03FE;
        _cmd = (ushort)0xA212;
    }
    public override void WriteToBytes()
    {
        WriteBytes(PlayerID, NetDataType.DWORD);
        WriteBytes(EquipClassLV, NetDataType.BYTE);
    }
}
Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA719_tagSCPlayerEquipCacheResult.cs
New file
@@ -0,0 +1,13 @@
using UnityEngine;
using System.Collections;
using Snxxz.UI;
// A7 19 查询玩家境界阶装备信息结果 #tagSCPlayerEquipCacheResult
public class DTCA719_tagSCPlayerEquipCacheResult : DtcBasic
{
    OtherPlayerEquipModel model { get { return ModelCenter.Instance.GetModel<OtherPlayerEquipModel>(); } }
    public override void Done(GameNetPackBasic vNetPack)
    {         base.Done(vNetPack);
        var vNetData = vNetPack as HA719_tagSCPlayerEquipCacheResult;         model.OnGetEquipDetails(vNetData);     }
}
Core/NetworkPackage/DTCFile/ServerPack/HA7_Interaction/DTCA719_tagSCPlayerEquipCacheResult.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 9c0893d47e73bc940816981cae5e83fe
timeCreated: 1556330037
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Core/NetworkPackage/ServerPack/HA7_Interaction/HA719_tagSCPlayerEquipCacheResult.cs
New file
@@ -0,0 +1,23 @@
using UnityEngine;
using System.Collections;
// A7 19 查询玩家境界阶装备信息结果 #tagSCPlayerEquipCacheResult
public class HA719_tagSCPlayerEquipCacheResult : GameNetPackBasic {
    public uint PlayerID;    //玩家ID
    public byte EquipClassLV;
    public ushort ItemDataSize;
    public string ItemData;    //物品记录
    public HA719_tagSCPlayerEquipCacheResult () {
        _cmd = (ushort)0xA719;
    }
    public override void ReadFromBytes (byte[] vBytes) {
        TransBytes (out PlayerID, vBytes, NetDataType.DWORD);
        TransBytes (out EquipClassLV, vBytes, NetDataType.BYTE);
        TransBytes (out ItemDataSize, vBytes, NetDataType.WORD);
        TransBytes (out ItemData, vBytes, NetDataType.Chars, ItemDataSize);
    }
}
Core/NetworkPackage/ServerPack/HA7_Interaction/HA719_tagSCPlayerEquipCacheResult.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: f2b31ad6cbddb164d9d5bef0c9ea97e8
timeCreated: 1556330037
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
Fight/GameActor/GA_NpcFightZZPlayer.cs
@@ -149,27 +149,10 @@
            JobSetup = JobSetupConfig.Get(ActorInfo.Job);
            RoleParticularModel.ItemData _item = null;
            if (m_ViewPlayerData.roleEquipDataDic.TryGetValue(RoleEquipType.Clothes, out _item))
            {
                _clothesId = _item.ItemID;
            }
            if (m_ViewPlayerData.roleEquipDataDic.TryGetValue(RoleEquipType.Weapon, out _item))
            {
                _weaponId = _item.ItemID;
            }
            if (m_ViewPlayerData.roleEquipDataDic.TryGetValue(RoleEquipType.Weapon2, out _item))
            {
                _secondaryId = _item.ItemID;
            }
            if (m_ViewPlayerData.roleEquipDataDic.TryGetValue(RoleEquipType.Wing, out _item))
            {
                _wingId = _item.ItemID;
            }
            _clothesId = m_ViewPlayerData.GetItemId(RoleEquipType.Clothes);
            _weaponId = m_ViewPlayerData.GetItemId(RoleEquipType.Weapon);
            _secondaryId = m_ViewPlayerData.GetItemId(RoleEquipType.Weapon2);
            _wingId = m_ViewPlayerData.GetItemId(RoleEquipType.Wing);
        }
        //Debug.LogFormat("Name: {0}", ActorInfo.PlayerName);
@@ -235,20 +218,9 @@
            m_ViewPlayerData = new RoleParticularModel.ViewPlayerData();
        }
        m_ViewPlayerData.roleEquipDataDic.Clear();
        m_ViewPlayerData.itemDatas = LitJson.JsonMapper.ToObject<RoleParticularModel.ItemData[]>(package.ItemData);
        m_ViewPlayerData.rolePropData = LitJson.JsonMapper.ToObject<RoleParticularModel.RolePropData>(package.PropData);
        m_ViewPlayerData.rolePlusData = new RoleParticularModel.RolePlusData();
        m_ViewPlayerData.rolePlusData.AnalysisRolePlusData(package.PlusData);
        if (m_ViewPlayerData.itemDatas != null)
        {
            for (int i = 0; i < m_ViewPlayerData.itemDatas.Length; i++)
            {
                m_ViewPlayerData.itemDatas[i].AnalysisUserData();
                m_ViewPlayerData.roleEquipDataDic[(RoleEquipType)m_ViewPlayerData.itemDatas[i].ItemIndex] = m_ViewPlayerData.itemDatas[i];
            }
        }
        m_ViewPlayerData.AnalysisEquipSuit();
        SyncHelpPlayerInfo();
    }
Lua/Gen/SnxxzUIRoleParticularModelWrap.cs
@@ -26,7 +26,6 @@
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "Init", _m_Init);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "UnInit", _m_UnInit);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "OnBeforePlayerDataInitialize", _m_OnBeforePlayerDataInitialize);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "GetItemData", _m_GetItemData);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "GetViewPlayerData", _m_GetViewPlayerData);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "ViewRoleEquip", _m_ViewRoleEquip);
            Utils.RegisterFunc(L, Utils.METHOD_IDX, "ViewRoleFightPower", _m_ViewRoleFightPower);
@@ -173,35 +172,6 @@
                    
                    
                    return 0;
                }
            } catch(System.Exception gen_e) {
                return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
            }
        }
        [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
        static int _m_GetItemData(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                Snxxz.UI.RoleParticularModel gen_to_be_invoked = (Snxxz.UI.RoleParticularModel)translator.FastGetCSObj(L, 1);
                {
                    RoleEquipType _type;translator.Get(L, 2, out _type);
                        Snxxz.UI.RoleParticularModel.ItemData gen_ret = gen_to_be_invoked.GetItemData( _type );
                        translator.Push(L, gen_ret);
                    return 1;
                }
                
            } catch(System.Exception gen_e) {
System/Equip/EquipFightPower.cs
@@ -8,7 +8,6 @@
    public class EquipFightPower : Singleton<EquipFightPower>
    {
        PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
        EquipModel equipModel { get { return ModelCenter.Instance.GetModel<EquipModel>(); } }
        EquipStarModel starModel { get { return ModelCenter.Instance.GetModel<EquipStarModel>(); } }
@@ -30,8 +29,7 @@
        {
            Equation.Instance.Clear();
            Equation.Instance.AddKeyValue("equipScoreTotal", CountEquipScore(level));
            var power = 0;
            power = Equation.Instance.Eval<int>(scoreFormula);
            var power = Equation.Instance.Eval<int>(scoreFormula);
            var propertyContainer = new Properties();
            CountProperties(level, ref propertyContainer);
@@ -87,13 +85,18 @@
        private List<int> CountEightSuitSkills(int level)
        {
            var eightSuitLevel = equipModel.GetSuitLevel(level, EquipSuitType.EightSuit);
            return CountEightSuitSkills(PlayerDatas.Instance.baseData.Job, level, eightSuitLevel);
        }
        private List<int> CountEightSuitSkills(int job, int level, int eightSuitLevel)
        {
            var skills = new List<int>();
            var eightSuitLevel = equipModel.GetSuitLevel(level, EquipSuitType.EightSuit);
            List<EquipSuitConfig> eightConfigs = null;
            if (eightSuitLevel >= 0)
            {
                eightConfigs = EquipSuitConfig.GetConfigs(PlayerDatas.Instance.baseData.Job, level, EquipSuitType.EightSuit);
                eightConfigs = EquipSuitConfig.GetConfigs(job, level, EquipSuitType.EightSuit);
            }
            for (int i = 9; i >= 0; i--)
@@ -131,20 +134,25 @@
            var fiveSuitLevel = equipModel.GetSuitLevel(level, EquipSuitType.FiveSuit);
            var eightSuitLevel = equipModel.GetSuitLevel(level, EquipSuitType.EightSuit);
            CountSuitProperties(level, twoSuitLevel, fiveSuitLevel, eightSuitLevel, ref container);
        }
        private void CountSuitProperties(int level, int twoLevel, int fiveLevel, int eightLevel, ref Properties container)
        {
            List<EquipSuitConfig> twoConfigs = null;
            if (twoSuitLevel >= 0)
            if (twoLevel >= 0)
            {
                twoConfigs = EquipSuitConfig.GetConfigs(PlayerDatas.Instance.baseData.Job, level, EquipSuitType.TwoSuit);
            }
            List<EquipSuitConfig> fiveConfigs = null;
            if (fiveSuitLevel >= 0)
            if (fiveLevel >= 0)
            {
                fiveConfigs = EquipSuitConfig.GetConfigs(PlayerDatas.Instance.baseData.Job, level, EquipSuitType.FiveSuit);
            }
            List<EquipSuitConfig> eightConfigs = null;
            if (eightSuitLevel >= 0)
            if (eightLevel >= 0)
            {
                eightConfigs = EquipSuitConfig.GetConfigs(PlayerDatas.Instance.baseData.Job, level, EquipSuitType.EightSuit);
            }
@@ -156,7 +164,7 @@
                    continue;
                }
                if (twoSuitLevel >= i)
                if (twoLevel >= i)
                {
                    var config = twoConfigs.Find(x => { return x.star == i; });
                    foreach (var property in config.attr)
@@ -165,7 +173,7 @@
                    }
                }
                if (fiveSuitLevel >= i)
                if (fiveLevel >= i)
                {
                    var config = fiveConfigs.Find(x => { return x.star == i; });
                    foreach (var property in config.attr)
@@ -174,7 +182,7 @@
                    }
                }
                if (eightSuitLevel >= i)
                if (eightLevel >= i)
                {
                    var config = eightConfigs.Find(x => { return x.star == i; });
                    foreach (var property in config.attr)
@@ -197,11 +205,19 @@
                    continue;
                }
                var values = strengthenModel.GetEquipValueList(level, i);
                foreach (var item in values)
                {
                    container.Add(item.AttType, item.AttValue);
                }
                var type = EquipStrengthModel.GetEquipStrengthType(i);
                var strengthenLevel = strengthenModel.GetStrengthLevel(level, i);
                CountStrengthenProperties(type, strengthenLevel, ref container);
            }
        }
        private void CountStrengthenProperties(int type, int strengthenLevel, ref Properties container)
        {
            var config = ItemPlusConfig.GetTypeAndLevel(type, strengthenLevel);
            var min = Mathf.Min(config.attType.Length, config.attValue.Length);
            for (int i = 0; i < min; i++)
            {
                container.Add(config.attType[i], config.attValue[i]);
            }
        }
@@ -217,23 +233,27 @@
                }
                var star = starModel.GetEquipStarLevel(equipPosition);
                var config = EquipStarConfig.Get(equipPosition.x, equipPosition.y, star);
                if (config == null)
                {
                    continue;
                }
                CountStarProperties(level, i, star, ref container);
            }
        }
                foreach (var property in config.BaseAttrInfo)
                {
                    container.Add(property.x, property.y);
                }
                foreach (var property in config.StarAttrInfo)
                {
                    container.Add(property.x, property.y);
                }
        private void CountStarProperties(int level, int place, int star, ref Properties container)
        {
            var config = EquipStarConfig.Get(level, place, star);
            if (config == null)
            {
                return;
            }
            foreach (var property in config.BaseAttrInfo)
            {
                container.Add(property.x, property.y);
            }
            foreach (var property in config.StarAttrInfo)
            {
                container.Add(property.x, property.y);
            }
        }
        private void CountGemProperties(int level, ref Properties container)
@@ -260,30 +280,39 @@
                        continue;
                    }
                    var itemConfig = ItemConfig.Get(gem);
                    if (itemConfig.Effect2 > 0)
                    {
                        container.Add(itemConfig.Effect2, itemConfig.EffectValueA2);
                    }
                    if (itemConfig.Effect3 > 0)
                    {
                        container.Add(itemConfig.Effect3, itemConfig.EffectValueA3);
                    }
                    if (itemConfig.Effect4 > 0)
                    {
                        container.Add(itemConfig.Effect4, itemConfig.EffectValueA4);
                    }
                    if (itemConfig.Effect5 > 0)
                    {
                        container.Add(itemConfig.Effect5, itemConfig.EffectValueA5);
                    }
                    CountGemItemProperties(gem, ref container);
                }
            }
        }
        private void CountGemItemProperties(int gem, ref Properties container)
        {
            var config = ItemConfig.Get(gem);
            if (config == null)
            {
                return;
            }
            if (config.Effect2 > 0)
            {
                container.Add(config.Effect2, config.EffectValueA2);
            }
            if (config.Effect3 > 0)
            {
                container.Add(config.Effect3, config.EffectValueA3);
            }
            if (config.Effect4 > 0)
            {
                container.Add(config.Effect4, config.EffectValueA4);
            }
            if (config.Effect5 > 0)
            {
                container.Add(config.Effect5, config.EffectValueA5);
            }
        }
        private void CountTrainProperties(int level, ref Properties container)
@@ -316,6 +345,74 @@
                container.Add(data.config.attType3, Mathf.Min(data.config.attMax3, trainedProperties.z));
            }
        }
        public int CalculatePower(int job, int level, List<EquipInfo> equipInfos)
        {
            var propertyContainer = new Properties();
            var totalScore = 0;
            var stars = new List<int>();
            foreach (var info in equipInfos)
            {
                totalScore += info.score;
                stars.Add(info.starLevel);
                var config = ItemConfig.Get(info.itemId);
                var strengthenType = EquipStrengthModel.GetEquipStrengthType(config.EquipPlace);
                CountStrengthenProperties(strengthenType, info.strengthenLevel, ref propertyContainer);
                CountStarProperties(config.LV, config.EquipPlace, info.starLevel, ref propertyContainer);
                if (!info.stones.IsNullOrEmpty())
                {
                    foreach (var gem in info.stones)
                    {
                        CountGemItemProperties(gem, ref propertyContainer);
                    }
                }
                if (!info.trainProperties.IsNullOrEmpty())
                {
                    foreach (var property in info.trainProperties)
                    {
                        propertyContainer.Add(property.x, property.y);
                    }
                }
            }
            stars.Sort((int x, int y) => { return x.CompareTo(y); });
            var twoSuitLevel = stars.Count > 1 ? stars[1] : -1;
            var fiveSuitLevel = stars.Count > 4 ? stars[4] : -1;
            var eightSuitLevel = stars.Count > 7 ? stars[7] : -1;
            CountSuitProperties(level, twoSuitLevel, fiveSuitLevel, eightSuitLevel, ref propertyContainer);
            Equation.Instance.Clear();
            Equation.Instance.AddKeyValue("equipScoreTotal", totalScore);
            var power = Equation.Instance.Eval<int>(scoreFormula);
            Equation.Instance.Clear();
            var keys = propertyContainer.keys;
            for (int i = 0; i < keys.Count; i++)
            {
                var id = keys[i];
                var value = propertyContainer[id];
                var config = PlayerPropertyConfig.Get(id);
                Equation.Instance.AddKeyValue(config.Parameter, value);
            }
            power += Equation.Instance.Eval<int>(propertyFormula);
            var skills = CountEightSuitSkills(job, level, eightSuitLevel);
            if (!skills.IsNullOrEmpty())
            {
                foreach (var skill in skills)
                {
                    var config = SkillConfig.Get(skill);
                    power += config.FightPower;
                }
            }
            return power;
        }
        class Properties
@@ -362,6 +459,17 @@
        }
        public struct EquipInfo
        {
            public int itemId;
            public int score;
            public int strengthenLevel;
            public int breakLevel;
            public int starLevel;
            public List<int> stones;
            public List<Int2> trainProperties;
        }
    }
}
System/Equip/EquipSet.cs
@@ -82,6 +82,8 @@
        public EquipAppearance GetAppearance()
        {
            var appearance = new EquipAppearance();
            appearance.job = PlayerDatas.Instance.baseData.Job;
            var clothes = equipSlots[(int)RoleEquipType.Clothes].equip.value;
            if (string.IsNullOrEmpty(clothes))
            {
@@ -169,6 +171,7 @@
    public struct EquipAppearance
    {
        public int job;
        public int clothes;
        public int weapon;
        public int secondary;
System/EquipGem/EquipEvolutionWin.cs
@@ -147,7 +147,7 @@
            int equipLevel = strengthModel.SelectLevel;
            int equipPlace = strengthModel.SelectEquipPlace;
            int equipIndex = EquipPlaceMapConfig.GetServerPlace(equipLevel, equipPlace);
            equipType = strengthModel.GetEquipStrengthType(equipPlace);
            equipType = EquipStrengthModel.GetEquipStrengthType(equipPlace);
            int equipLv = 0;
            int advancedLv = 0;
            if (strengthModel.EquipStrengthDic.ContainsKey(equipIndex))//获取当前强化等级
System/EquipGem/EquipStrengthFull.cs
@@ -41,7 +41,7 @@
            }
            NeedMoney.gameObject.SetActive(false);
            m_TextNumber.text = "+" + equipLv;
            int equipType = strengthModel.GetEquipStrengthType(equipPlace);
            int equipType = EquipStrengthModel.GetEquipStrengthType(equipPlace);
            var star = equipStarModel.GetEquipStarLevel(new Int2(level, equipPlace));
            var item = packModel.GetItemByGuid(equipGuid);
System/EquipGem/EquipStrengthModel.cs
@@ -46,7 +46,7 @@
{
    public Dictionary<int, EquipStrength> EquipStrengthDic = new Dictionary<int, EquipStrength>();//强化数据
    public Dictionary<int, Dictionary<int, int>> EquipLevelMaxDic = new Dictionary<int, Dictionary<int, int>>();//强化类型的最大等级上限
    public Dictionary<int, int> PartTypeDic = new Dictionary<int, int>();//强化的部位类型
    static Dictionary<int, int> PartTypeDic = new Dictionary<int, int>();//强化的部位类型
    public Dictionary<int, int> EvolutionTypeMaxDic = new Dictionary<int, int>();
    public event Action EquipStrengthUpdate;//强化数据刷新
    public event Action EquipStrengthLvUpdate;//强化升级成功
@@ -55,8 +55,7 @@
    public event Action SelectLevelRefresh;//一级页签刷新
    private bool isChangeBool = true;
    public bool IsChangeBool
    {
    public bool IsChangeBool {
        get { return isChangeBool; }
        set { isChangeBool = value; }
    }
@@ -64,8 +63,7 @@
    public int SelectLevel//装备类别
    {
        get { return selectLevel; }
        set
        {
        set {
            if (selectLevel != value)
            {
                selectLevel = value;
@@ -80,8 +78,7 @@
    public int SelectEquipPlace//装备类别
    {
        get { return selectEquipPlace; }
        set
        {
        set {
            if (selectEquipPlace != value)
            {
                selectEquipPlace = value;
@@ -182,7 +179,7 @@
        }
    }
    public int GetEquipStrengthType(int equipPlace)//获取装备类型
    public static int GetEquipStrengthType(int equipPlace)//获取装备类型
    {
        int type = 1;
        if (PartTypeDic.ContainsKey(equipPlace))
@@ -192,7 +189,7 @@
        return type;
    }
    public int GetEquipLevelMax(int type,int star)//获取某一类型的最大强化等级
    public int GetEquipLevelMax(int type, int star)//获取某一类型的最大强化等级
    {
        int lv = 0;
        if (EquipLevelMaxDic.ContainsKey(type))
System/EquipGem/EquipStrengthRein.cs
@@ -64,7 +64,7 @@
            DisplayMoney();
            int equipType = strengthModel.GetEquipStrengthType(equipPlace);
            int equipType = EquipStrengthModel.GetEquipStrengthType(equipPlace);
            var star = equipStarModel.GetEquipStarLevel(new Int2(level, equipPlace));
            var maxStar = EquipStarModel.GetMaxStarLevel(item.config.ItemColor, level);
System/EquipGem/EquipStrengthUpper.cs
@@ -61,7 +61,7 @@
            DisplayMoney();
            int equipType = strengthModel.GetEquipStrengthType(equipPlace);
            int equipType = EquipStrengthModel.GetEquipStrengthType(equipPlace);
            var star = equipStarModel.GetEquipStarLevel(new Int2(level, equipPlace));
            var maxStar = EquipStarModel.GetMaxStarLevel(item.config.ItemColor, level);
System/EquipGem/EquipStrengthWin.cs
@@ -322,7 +322,7 @@
                    advancedLv = model.EquipStrengthDic[equipIndex].EvolveLV;
                }
                int equipType = model.GetEquipStrengthType(equipPlace);
                int equipType = EquipStrengthModel.GetEquipStrengthType(equipPlace);
                var itemPlusMaxConfig = ItemPlusMaxConfig.GetEquipTypeAndEquipStar(equipType, star);//获取强化等级上限值
                if (itemPlusMaxConfig == null)
                {
@@ -410,7 +410,7 @@
            if (m_EquipStrengthUpper.gameObject.activeSelf)
            {
                int equipType = model.GetEquipStrengthType(model.SelectEquipPlace);
                int equipType = EquipStrengthModel.GetEquipStrengthType(model.SelectEquipPlace);
                var equipPosition = new Int2(model.SelectLevel, model.SelectEquipPlace);
                var star = equipStarModel.GetEquipStarLevel(equipPosition);
                var equipGuid = equipModel.GetEquip(equipPosition);
@@ -449,7 +449,7 @@
            {
                equipLv = model.EquipStrengthDic[equipIndex].StrengthLevel;
            }
            int equipType = model.GetEquipStrengthType(model.SelectEquipPlace);
            int equipType = EquipStrengthModel.GetEquipStrengthType(model.SelectEquipPlace);
            var itemPlusMaxConfig = ItemPlusMaxConfig.GetEquipTypeAndEquipStar(equipType, star);//获取强化等级上限值
            if (itemPlusMaxConfig.levelMax > equipLv)
            {
System/FairyAu/FairyFeastTransmitShow.cs
@@ -232,36 +232,11 @@
            var viewPlayerData = roleParticularModel.GetViewPlayerData((int)model.transmitPlayer);
            if (viewPlayerData != null)
            {
                clothesId = 0;
                var itemData = roleParticularModel.GetItemData(RoleEquipType.Clothes);
                if (itemData != null)
                {
                    clothesId = itemData.ItemID;
                }
                fashionClothesId = 0;
                itemData = roleParticularModel.GetItemData(RoleEquipType.FashionClothes);
                if (itemData != null)
                {
                    fashionClothesId = itemData.ItemID;
                }
                wingsId = 0;
                itemData = roleParticularModel.GetItemData(RoleEquipType.Wing);
                if (itemData != null)
                {
                    wingsId = itemData.ItemID;
                }
                secondaryId = 0;
                itemData = roleParticularModel.GetItemData(RoleEquipType.Weapon2);
                if (itemData != null)
                {
                    secondaryId = itemData.ItemID;
                }
                fashionSecondaryId = 0;
                itemData = roleParticularModel.GetItemData(RoleEquipType.FashionWeapon2);
                if (itemData != null)
                {
                    fashionSecondaryId = itemData.ItemID;
                }
                clothesId = viewPlayerData.GetItemId(RoleEquipType.Clothes);
                fashionClothesId = viewPlayerData.GetItemId(RoleEquipType.FashionClothes);
                wingsId = viewPlayerData.GetItemId(RoleEquipType.Wing);
                secondaryId = viewPlayerData.GetItemId(RoleEquipType.Weapon2);
                fashionSecondaryId = viewPlayerData.GetItemId(RoleEquipType.FashionWeapon2);
                data = new UI3DPlayerExhibitionData
                {
System/FairyAu/KingTempleWin.cs
@@ -153,52 +153,15 @@
            m_LeaderMob.gameObject.SetActive(_hasLeaderData);
            if (_hasLeaderData)
            {
                int clothes = 0;
                int _suitEffect = 0;
                var _leaderData = model.kingFairyData.leaderData;
                RoleParticularModel.ItemData itemData;
                if (_leaderData.roleEquipDataDic.ContainsKey(RoleEquipType.Clothes))
                {
                    itemData = _leaderData.roleEquipDataDic[RoleEquipType.Clothes];
                    clothes = itemData.ItemID;
                    _suitEffect = _leaderData.GetEquipSuitLevel();
                }
                int weapon = 0;
                if (_leaderData.roleEquipDataDic.ContainsKey(RoleEquipType.Weapon))
                {
                    itemData = _leaderData.roleEquipDataDic[RoleEquipType.Weapon];
                    weapon = itemData.ItemID;
                }
                int wing = 0;
                if (_leaderData.roleEquipDataDic.ContainsKey(RoleEquipType.Wing))
                {
                    itemData = _leaderData.roleEquipDataDic[RoleEquipType.Wing];
                    wing = itemData.ItemID;
                }
                int weapon2 = 0;
                if (_leaderData.roleEquipDataDic.ContainsKey(RoleEquipType.Weapon2))
                {
                    itemData = _leaderData.roleEquipDataDic[RoleEquipType.Weapon2];
                    weapon2 = itemData.ItemID;
                }
                int fashionClothes = 0;
                if (_leaderData.roleEquipDataDic.ContainsKey(RoleEquipType.FashionClothes))
                {
                    itemData = _leaderData.roleEquipDataDic[RoleEquipType.FashionClothes];
                    fashionClothes = itemData.ItemID;
                }
                int fashionWeapon = 0;
                if (_leaderData.roleEquipDataDic.ContainsKey(RoleEquipType.FashionWeapon))
                {
                    itemData = _leaderData.roleEquipDataDic[RoleEquipType.FashionWeapon];
                    fashionWeapon = itemData.ItemID;
                }
                int fashionWeapon2 = 0;
                if (_leaderData.roleEquipDataDic.ContainsKey(RoleEquipType.FashionWeapon2))
                {
                    itemData = _leaderData.roleEquipDataDic[RoleEquipType.FashionWeapon2];
                    fashionWeapon2 = itemData.ItemID;
                }
                int clothes = _leaderData.GetItemId(RoleEquipType.Clothes);
                int weapon = _leaderData.GetItemId(RoleEquipType.Weapon);
                int wing = _leaderData.GetItemId(RoleEquipType.Wing);
                int weapon2 = _leaderData.GetItemId(RoleEquipType.Weapon2);
                int fashionClothes = _leaderData.GetItemId(RoleEquipType.FashionClothes);
                int fashionWeapon = _leaderData.GetItemId(RoleEquipType.FashionWeapon);
                int fashionWeapon2 = _leaderData.GetItemId(RoleEquipType.FashionWeapon2);
                var data = new UI3DPlayerExhibitionData
                {
System/ItemTip/ItemTipUtility.cs
@@ -137,6 +137,21 @@
            public int level;
        }
        public struct OtherPlayerEquipInfo
        {
            public int job;
            public int itemId;
            public int score;
            public List<Int2> legendProperties;
            public List<int> suitPlaces;
            public Dictionary<EquipSuitType, int> suitLevels;
            public int strengthenLevel;
            public int starLevel;
            public List<Int2> trainProperties;
            public Dictionary<int, bool> gemHoleActiveStates;
            public Dictionary<int, int> gems;
        }
        static PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
        static EquipModel equipModel { get { return ModelCenter.Instance.GetModel<EquipModel>(); } }
        static EquipStarModel starModel { get { return ModelCenter.Instance.GetModel<EquipStarModel>(); } }
@@ -329,6 +344,13 @@
            }
        }
        public static void ShowOtherPlayerEquip(OtherPlayerEquipInfo info)
        {
            secondaryData = null;
            mainTipData = CreateOtherPlayerEquipData(info);
            WindowCenter.Instance.Open<EquipTipWin>();
        }
        public static void ShowGatherSoul(PackType packType, int index)
        {
            if (packType == PackType.GatherSoul || packType == PackType.InterimPack)
@@ -429,6 +451,147 @@
                legendProperty = GetLegendProperty(itemId),
                getWay = GetGetWay(itemId)
            };
        }
        static TipData CreateOtherPlayerEquipData(OtherPlayerEquipInfo info)
        {
            var config = ItemConfig.Get(info.itemId);
            var baseInfo = new BaseInfo()
            {
                itemId = info.itemId,
                star = info.starLevel,
                strengthenLevel = info.strengthenLevel,
                score = info.score,
                isEquiped=true,
            };
            var baseProperty = GetBaseProperty(info.itemId);
            if (info.starLevel > 0)
            {
                var starProperties = new List<Int2>();
                baseProperty.star = info.starLevel;
                var starConfig = EquipStarConfig.Get(config.LV, config.EquipPlace, info.starLevel);
                starProperties.AddRange(starConfig.BaseAttrInfo);
                baseProperty.starProperties = starProperties;
            }
            var legendProperty = new LegendProperty()
            {
                properties = info.legendProperties,
            };
            var skillInfo = GetSkillInfo(info.itemId);
            var job = config.JobLimit;
            var twoConfigs = EquipSuitConfig.GetConfigs(job, config.LV, EquipSuitType.TwoSuit);
            var name = twoConfigs[0].name;
            var level = config.LV;
            var maxSuitLevel = EquipStarModel.GetMaxStarLevel(level);
            var twoSuitProperties = new Dictionary<int, EquipSuitPropertyEntry>();
            var fiveSuitProperties = new Dictionary<int, EquipSuitPropertyEntry>();
            var eightSuits = new Dictionary<int, bool>();
            var eightSuitLevel = info.suitLevels[EquipSuitType.EightSuit];
            for (var i = 0; i <= 9; i++, i++, i++)
            {
                var configs = EquipSuitConfig.GetConfigs(job, level, EquipSuitType.TwoSuit);
                var actived = info.suitLevels[EquipSuitType.TwoSuit] >= i;
                var properties = new List<Int2>();
                foreach (var item in configs)
                {
                    if (item.star == i)
                    {
                        properties.AddRange(item.attr);
                        break;
                    }
                }
                twoSuitProperties[i] = new EquipSuitPropertyEntry()
                {
                    type = EquipSuitType.TwoSuit,
                    actived = actived,
                    properties = properties,
                };
                configs = EquipSuitConfig.GetConfigs(job, level, EquipSuitType.FiveSuit);
                actived = info.suitLevels[EquipSuitType.FiveSuit] >= i;
                properties = new List<Int2>();
                foreach (var item in configs)
                {
                    if (item.star == i)
                    {
                        properties.AddRange(item.attr);
                        break;
                    }
                }
                fiveSuitProperties[i] = new EquipSuitPropertyEntry()
                {
                    type = EquipSuitType.TwoSuit,
                    actived = actived,
                    properties = properties,
                };
                eightSuits[i] = eightSuitLevel >= i;
            }
            var suitInfo = new SuitInfo()
            {
                name = name,
                level = level,
                job = job,
                maxSuitLevel = maxSuitLevel,
                places = info.suitPlaces,
                twoSuitProperties = twoSuitProperties,
                fiveSuitProperties = fiveSuitProperties,
                eightSuits = eightSuits
            };
            var starInfo = new StarInfo()
            {
                equipPosition = new Int2(config.LV, config.EquipPlace),
                starLevel = info.starLevel,
                maxLevel = EquipStarModel.GetMaxStarLevel(config.ItemColor, config.LV),
            };
            var type = EquipStrengthModel.GetEquipStrengthType(config.EquipPlace);
            var strengthenConfig = ItemPlusConfig.GetTypeAndLevel(type, info.strengthenLevel);
            var strengthenProperties = new List<Int2>();
            for (int i = 0; i < strengthenConfig.attType.Length; i++)
            {
                strengthenProperties.Add(new Int2(strengthenConfig.attType[i], strengthenConfig.attValue[i]));
            }
            var strengthenProperty = new StrengthenProperty()
            {
                strengthenLevel = info.strengthenLevel,
                properties = strengthenProperties
            };
            var gemInfo = new GemInfo()
            {
                activeStates = info.gemHoleActiveStates,
                gems = info.gems,
            };
            var trainProperty = new TrainProperty()
            {
                properties = info.trainProperties,
            };
            return new TipData()
            {
                itemId = info.itemId,
                baseInfo = baseInfo,
                baseProperty = baseProperty,
                legendProperty = legendProperty,
                skillInfo = skillInfo,
                suitInfo = suitInfo,
                starInfo = starInfo,
                strengthenProperty = strengthenProperty,
                gemInfo = gemInfo,
                trainProperty = trainProperty,
            };
        }
        static TipData CreateGoodEquipData(int itemId, int goodId)
@@ -690,7 +853,7 @@
            var isEquiped = equipModel.GetEquip(new Int2(level, place)) == guid;
            var type = strengthenModel.GetEquipStrengthType(place);
            var type = EquipStrengthModel.GetEquipStrengthType(place);
            var star = starModel.GetEquipStarLevel(new Int2(level, place));
            var maxStar = EquipStarModel.GetMaxStarLevel(item.config.ItemColor, level);
            var maxStrengthenLevel = strengthenModel.GetEquipLevelMax(type, Mathf.Min(star, maxStar));
@@ -1070,7 +1233,7 @@
            var data = new StrengthenProperty();
            var strengthenLevel = strengthenModel.GetStrengthLevel(level, place);
            var type = strengthenModel.GetEquipStrengthType(place);
            var type = EquipStrengthModel.GetEquipStrengthType(place);
            var star = starModel.GetEquipStarLevel(new Int2(level, place));
            var maxStar = EquipStarModel.GetMaxStarLevel(item.config.ItemColor, item.config.LV);
            var maxStrengthenLevel = strengthenModel.GetEquipLevelMax(type, Mathf.Min(star, maxStar));
System/ItemTip/TipStrengthenPropertyWidget.cs
@@ -20,11 +20,7 @@
            for (int i = 0; i < count; i++)
            {
                var property = data.properties[i];
                var config = PlayerPropertyConfig.Get(property.x);
                var name = config.Name;
                var value = PlayerPropertyConfig.GetValueDescription(property.x, property.y);
                lines[i] = string.Format("{0}:{1}", name, value);
                lines[i] = PlayerPropertyConfig.GetFullDescription(property.x, property.y);
            }
            m_PropertyBehaviour.text = string.Join("\r\n", lines);
        }
System/RoleParticulars/OtherPlayerEquipLevelBehaviour.cs
New file
@@ -0,0 +1,59 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Friday, April 26, 2019
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class OtherPlayerEquipLevelBehaviour : ScrollItem
    {
        [SerializeField] Text m_Title;
        [SerializeField] Image m_BackGround;
        [SerializeField] Button m_Select;
        int level;
        OtherPlayerEquipModel model { get { return ModelCenter.Instance.GetModel<OtherPlayerEquipModel>(); } }
        public override void Display(object _data)
        {
            base.Display(_data);
            this.level = (int)_data;
            var realm = EquipControlConfig.Get(this.level, 1).realm;
            this.m_Title.text = RealmConfig.Get(realm).Name;
            model.selectedLevelChangeEvent += OnSelected;
            m_Select.SetListener(Select);
        }
        public override void Dispose()
        {
            model.selectedLevelChangeEvent -= OnSelected;
            base.Dispose();
        }
        private void Select()
        {
            model.SelectLevel(this.level);
        }
        private void OnSelected()
        {
            DisplayBackGround(model.selectedLevel == this.level);
        }
        private void DisplayBackGround(bool selected)
        {
            m_BackGround.SetSprite(selected ? "ListBtn_Select" : "ListBtn_UnSelect");
        }
    }
}
System/RoleParticulars/OtherPlayerEquipLevelBehaviour.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 808e6d8d919a2d64db44947530a864ed
timeCreated: 1556262320
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/RoleParticulars/OtherPlayerEquipModel.cs
New file
@@ -0,0 +1,424 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System;
using LitJson;
namespace Snxxz.UI
{
    public class OtherPlayerEquipModel : Model
    {
        int m_SelectedLevel = 0;
        public int selectedLevel {
            get {
                return m_SelectedLevel;
            }
            private set {
                if (this.m_SelectedLevel != value)
                {
                    m_SelectedLevel = value;
                    if (selectedLevelChangeEvent != null)
                    {
                        selectedLevelChangeEvent();
                    }
                }
            }
        }
        public int playerId { get; private set; }
        public int playerJob { get; private set; }
        public int playerRealm { get; private set; }
        public int playerVipLevel { get; private set; }
        public int wing { get; private set; }
        public event Action selectedLevelChangeEvent;
        Dictionary<int, EquipDetailsGroup> equipDetailsGroups = new Dictionary<int, EquipDetailsGroup>();
        RoleParticularModel roleParticularModel { get { return ModelCenter.Instance.GetModel<RoleParticularModel>(); } }
        public override void Init()
        {
        }
        public override void UnInit()
        {
        }
        public void ViewPlayerEquip(PlayerBriefInfo info)
        {
            this.playerId = info.id;
            this.playerJob = info.job;
            this.playerRealm = info.realm;
            this.playerVipLevel = info.vipLevel;
            this.wing = info.wing;
            SelectLevel(1);
            WindowCenter.Instance.Open<OtherPlayerEquipWin>();
        }
        public void SelectLevel(int level)
        {
            if (equipDetailsGroups.ContainsKey(level))
            {
                selectedLevel = level;
            }
            else
            {
                switch (roleParticularModel.viewPlayerType)
                {
                    case 4:
                    case 7:
                        {
                            var sendInfo = new CC002_tagCGViewCrossPlayerInfo();
                            sendInfo.PlayerID = (uint)roleParticularModel.viewPlayer;
                            GameNetSystem.Instance.SendInfo(sendInfo);
                        }
                        break;
                    case 5:
                    case 6:
                        {
                            var sendInfo = new CA212_tagCMViewPlayerInfo();
                            sendInfo.PlayerID = (uint)roleParticularModel.viewPlayer;
                            sendInfo.EquipClassLV = (byte)level;
                            GameNetSystem.Instance.SendToCrossServer(sendInfo);
                        }
                        break;
                    default:
                        {
                            var sendInfo = new CA212_tagCMViewPlayerInfo();
                            sendInfo.PlayerID = (uint)roleParticularModel.viewPlayer;
                            sendInfo.EquipClassLV = (byte)level;
                            GameNetSystem.Instance.SendInfo(sendInfo);
                        }
                        break;
                }
            }
        }
        public void OnGetEquipDetails(HA719_tagSCPlayerEquipCacheResult info)
        {
            equipDetailsGroups[info.EquipClassLV] = new EquipDetailsGroup(playerJob, info.EquipClassLV, info.ItemData);
            selectedLevel = info.EquipClassLV;
        }
        public Dictionary<int, EquipBrief> GetEquipBriefs()
        {
            if (equipDetailsGroups.ContainsKey(selectedLevel))
            {
                var equipDetailsGroup = equipDetailsGroups[selectedLevel];
                var equipBriefs = new Dictionary<int, EquipBrief>();
                foreach (var details in equipDetailsGroup.equips.Values)
                {
                    var config = ItemConfig.Get(details.itemId);
                    equipBriefs[config.EquipPlace] = new EquipBrief()
                    {
                        itemId = details.itemId,
                        star = details.star,
                    };
                }
                return equipBriefs;
            }
            else
            {
                return null;
            }
        }
        public int GetFightPoint()
        {
            if (equipDetailsGroups.ContainsKey(selectedLevel))
            {
                return equipDetailsGroups[selectedLevel].fightPoint;
            }
            else
            {
                return 0;
            }
        }
        public EquipAppearance GetEquipAppearance()
        {
            if (equipDetailsGroups.ContainsKey(selectedLevel))
            {
                var equipDetailsGroup = equipDetailsGroups[selectedLevel];
                var equips = equipDetailsGroup.equips;
                var suitLevels = equipDetailsGroup.GetSuitLevels();
                var appearance = new EquipAppearance()
                {
                    job = playerJob,
                    clothes = equips.ContainsKey((int)RoleEquipType.Clothes) ? equips[(int)RoleEquipType.Clothes].itemId : 0,
                    weapon = equips.ContainsKey((int)RoleEquipType.Weapon) ? equips[(int)RoleEquipType.Weapon].itemId : 0,
                    secondary = equips.ContainsKey((int)RoleEquipType.Weapon2) ? equips[(int)RoleEquipType.Weapon2].itemId : 0,
                    wings = wing,
                    isSuit = suitLevels.ContainsKey(EquipSuitType.EightSuit) && suitLevels[EquipSuitType.EightSuit] > 0,
                };
                return appearance;
            }
            else
            {
                return default(EquipAppearance);
            }
        }
        public ItemTipUtility.OtherPlayerEquipInfo GetEquipInfo(int level, int place)
        {
            if (!equipDetailsGroups.ContainsKey(level))
            {
                return default(ItemTipUtility.OtherPlayerEquipInfo);
            }
            if (!equipDetailsGroups[level].equips.ContainsKey(place))
            {
                return default(ItemTipUtility.OtherPlayerEquipInfo);
            }
            var details = equipDetailsGroups[level].equips[place];
            var equipInfo = new ItemTipUtility.OtherPlayerEquipInfo();
            equipInfo.job = playerJob;
            equipInfo.itemId = details.itemId;
            equipInfo.score = details.score;
            equipInfo.legendProperties = details.legendProperties;
            equipInfo.suitPlaces = equipDetailsGroups[level].GetSuitPlaces();
            equipInfo.suitLevels = equipDetailsGroups[level].GetSuitLevels();
            equipInfo.strengthenLevel = details.strengthenLevel;
            equipInfo.starLevel = details.star;
            equipInfo.trainProperties = details.trainProperties;
            var gemHoleActiveStates = new Dictionary<int, bool>();
            gemHoleActiveStates[0] = true;
            gemHoleActiveStates[1] = details.star >= 2;
            gemHoleActiveStates[2] = details.star >= 5;
            gemHoleActiveStates[3] = playerVipLevel >= 6;
            equipInfo.gemHoleActiveStates = gemHoleActiveStates;
            equipInfo.gems = new Dictionary<int, int>();
            for (var i = 0; i < details.stones.Count; i++)
            {
                equipInfo.gems[i] = details.stones[i];
            }
            return equipInfo;
        }
        public SuitInfo GetSuitInfo()
        {
            if (!equipDetailsGroups.ContainsKey(selectedLevel))
            {
                return default(SuitInfo);
            }
            var suitInfo = new SuitInfo();
            suitInfo.job = playerJob;
            suitInfo.level = selectedLevel;
            suitInfo.collectedPlaces = equipDetailsGroups[selectedLevel].GetSuitPlaces();
            suitInfo.suitLevels = equipDetailsGroups[selectedLevel].GetSuitLevels();
            return suitInfo;
        }
        public void Clear()
        {
            selectedLevel = 0;
            equipDetailsGroups.Clear();
        }
        public struct EquipBrief
        {
            public int itemId;
            public int star;
        }
        public class EquipDetails
        {
            public int itemId;
            public int score;
            public int star;
            public int strengthenLevel;
            public int evolveLevel;
            public List<int> stones = new List<int>();
            public int trainLevel;
            public List<Int2> trainProperties = new List<Int2>();
            public List<Int2> legendProperties = new List<Int2>();
            public EquipDetails(JsonData serverInfo)
            {
                itemId = (int)serverInfo["ItemID"];
                star = serverInfo.Keys.Contains("Star") ? (int)serverInfo["Star"] : 0;
                strengthenLevel = serverInfo.Keys.Contains("PlusLV") ? (int)serverInfo["PlusLV"] : 0;
                evolveLevel = serverInfo.Keys.Contains("EvolveLV") ? (int)serverInfo["EvolveLV"] : 0;
                if (serverInfo.Keys.Contains("Stone"))
                {
                    var stoneJson = serverInfo["Stone"];
                    for (int i = 0; i < stoneJson.Count; i++)
                    {
                        stones.Add((int)stoneJson[i]);
                    }
                }
                if (serverInfo.Keys.Contains("Wash"))
                {
                    var washJson = serverInfo["Wash"];
                    trainLevel = (int)washJson["LV"];
                    var washValueJson = washJson["Value"];
                    var config = ItemConfig.Get(itemId);
                    var trainType = EquipTrainModel.GetTrainType(config.EquipPlace);
                    var trainData = EquipWashConfig.Get(trainType, trainLevel);
                    trainProperties.Add(new Int2(trainData.config.attType1, (int)washValueJson[0]));
                    trainProperties.Add(new Int2(trainData.config.attType2, (int)washValueJson[1]));
                    trainProperties.Add(new Int2(trainData.config.attType3, (int)washValueJson[2]));
                }
                else
                {
                    var config = ItemConfig.Get(itemId);
                    var trainType = EquipTrainModel.GetTrainType(config.EquipPlace);
                    var trainData = EquipWashConfig.Get(trainType, 1);
                    trainProperties.Add(new Int2(trainData.config.attType1, 0));
                    trainProperties.Add(new Int2(trainData.config.attType2, 0));
                    trainProperties.Add(new Int2(trainData.config.attType3, 0));
                }
                Dictionary<int, List<int>> userData = null;
                if (serverInfo.Keys.Contains("UserData"))
                {
                    userData = ConfigParse.Analysis(serverInfo["UserData"].ToString());
                    if (userData.ContainsKey(17) && userData.ContainsKey(19))
                    {
                        var count = Mathf.Min(userData[17].Count, userData[19].Count);
                        for (int i = 0; i < count; i++)
                        {
                            legendProperties.Add(new Int2(userData[17][i], userData[19][i]));
                        }
                    }
                }
                var legendIds = new List<int>();
                var legendValues = new List<int>();
                foreach (var property in legendProperties)
                {
                    legendIds.Add(property.x);
                    legendValues.Add(property.y);
                }
                this.score = ItemLogicUtility.Instance.GetEquipScore(PackType.Item, itemId, userData);
            }
        }
        public class EquipDetailsGroup
        {
            public readonly int job;
            public readonly int level = 0;
            public readonly int fightPoint = 0;
            public Dictionary<int, EquipDetails> equips = new Dictionary<int, EquipDetails>();
            public EquipDetailsGroup(int job, int level, string equipInfo)
            {
                this.job = job;
                this.level = level;
                var json = JsonMapper.ToObject(equipInfo);
                foreach (var key in json.Keys)
                {
                    var serverPlace = 0;
                    int.TryParse(key, out serverPlace);
                    if (serverPlace == 0)
                    {
                        continue;
                    }
                    var equipPosition = EquipSet.ServerPlaceToClientPlace(serverPlace);
                    equips[equipPosition.y] = new EquipDetails(json[key]);
                }
                var equipInfos = new List<EquipFightPower.EquipInfo>();
                foreach (var equip in equips.Values)
                {
                    equipInfos.Add(new EquipFightPower.EquipInfo()
                    {
                        itemId = equip.itemId,
                        score = equip.score,
                        strengthenLevel = equip.strengthenLevel,
                        starLevel = equip.star,
                        stones = equip.stones,
                        trainProperties = equip.trainProperties,
                    });
                }
                fightPoint = EquipFightPower.Instance.CalculatePower(this.job, this.level, equipInfos);
            }
            public List<int> GetSuitPlaces()
            {
                var places = new List<int>();
                foreach (var item in equips)
                {
                    if (ItemLogicUtility.Instance.IsSuitEquip(item.Value.itemId))
                    {
                        places.Add(item.Key);
                    }
                }
                return places;
            }
            public Dictionary<EquipSuitType, int> GetSuitLevels()
            {
                var stars = new List<int>();
                foreach (var item in equips)
                {
                    if (item.Key > 8)
                    {
                        continue;
                    }
                    var star = item.Value.star;
                    stars.Add(star);
                }
                stars.Sort((int x, int y) => { return x.CompareTo(y); });
                var twoSuitLevel = stars.Count > 1 ? stars[1] : -1;
                var fiveSuitLevel = stars.Count > 4 ? stars[4] : -1;
                var eightSuitLevel = stars.Count > 7 ? stars[7] : -1;
                return new Dictionary<EquipSuitType, int>() {
                    { EquipSuitType.TwoSuit, twoSuitLevel },
                    { EquipSuitType.FiveSuit, fiveSuitLevel},
                    {EquipSuitType.EightSuit, eightSuitLevel },
                };
            }
        }
        public struct PlayerBriefInfo
        {
            public int id;
            public int job;
            public int realm;
            public int vipLevel;
            public int wing;
        }
        public struct SuitInfo
        {
            public int level;
            public int job;
            public List<int> collectedPlaces;
            public Dictionary<EquipSuitType, int> suitLevels;
        }
    }
}
System/RoleParticulars/OtherPlayerEquipModel.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: d6dcf0874b3151d47a57443733c657f2
timeCreated: 1556258269
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/RoleParticulars/OtherPlayerEquipSlotBehaviour.cs
New file
@@ -0,0 +1,82 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Friday, April 26, 2019
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class OtherPlayerEquipSlotBehaviour : MonoBehaviour
    {
        [SerializeField] Button m_ViewDetials;
        [SerializeField] Text m_SlotName;
        [SerializeField] Image m_Icon;
        [SerializeField] Image m_IconFrame;
        [SerializeField] Text m_Star;
        OtherPlayerEquipModel model { get { return ModelCenter.Instance.GetModel<OtherPlayerEquipModel>(); } }
        int place;
        int itemId;
        int star;
        public void Display(int place, int itemId, int star)
        {
            this.place = place;
            this.itemId = itemId;
            this.star = star;
            DisplayBaseInfo();
        }
        public void Dispose()
        {
        }
        private void DisplayBaseInfo()
        {
            m_SlotName.text = UIHelper.GetEquipPlaceName(place);
            var hasEquip = this.itemId != 0;
            m_SlotName.gameObject.SetActive(!hasEquip);
            if (hasEquip)
            {
                var config = ItemConfig.Get(this.itemId);
                m_Icon.SetSprite(config.IconKey);
                m_IconFrame.SetItemBackGround(config.ItemColor);
                m_Star.gameObject.SetActive(true);
                m_Star.text = this.star >= 1 ? string.Format("{0}星", this.star) : "";
            }
            else
            {
                m_Star.gameObject.SetActive(false);
                m_Icon.SetSprite(GetDefaultEquipIcon(place));
                m_IconFrame.SetSprite("ItemNormal_a");
            }
        }
        private string GetDefaultEquipIcon(int place)
        {
            return StringUtility.Contact("EquipDefaultIcon_", place);
        }
        private void Start()
        {
            m_ViewDetials.SetListener(ViewEquipDetails);
        }
        private void ViewEquipDetails()
        {
            ItemTipUtility.ShowOtherPlayerEquip(model.GetEquipInfo(model.selectedLevel, this.place));
        }
    }
}
System/RoleParticulars/OtherPlayerEquipSlotBehaviour.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 720ecb8d6acc65f4b98869a9bada1c01
timeCreated: 1556249011
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/RoleParticulars/OtherPlayerEquipWin.cs
New file
@@ -0,0 +1,194 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Friday, April 26, 2019
//--------------------------------------------------------
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
namespace Snxxz.UI
{
    public class OtherPlayerEquipWin : Window
    {
        [SerializeField] RectTransform m_Content;
        [SerializeField] Button m_Close;
        [SerializeField] CyclicScroll m_EquipLevelScroll;
        [SerializeField] EquipSlots m_EquipSlots;
        [SerializeField] Text m_FightPoint;
        [SerializeField] RawImage m_Role;
        [SerializeField] OtherPlayerSuitWidget m_WidgetSuit;
        OtherPlayerEquipModel model { get { return ModelCenter.Instance.GetModel<OtherPlayerEquipModel>(); } }
        EquipModel equipModel { get { return ModelCenter.Instance.GetModel<EquipModel>(); } }
        bool resetRoleRotation = false;
        #region Built-in
        protected override void BindController()
        {
        }
        protected override void AddListeners()
        {
            m_Close.SetListener(() => { WindowCenter.Instance.Close<OtherPlayerEquipWin>(); });
        }
        protected override void OnPreOpen()
        {
            resetRoleRotation = true;
            m_Content.gameObject.SetActive(false);
            model.selectedLevelChangeEvent += OnSelectedLevelChange;
        }
        protected override void OnAfterOpen()
        {
        }
        protected override void OnPreClose()
        {
            model.selectedLevelChangeEvent -= OnSelectedLevelChange;
        }
        protected override void OnAfterClose()
        {
        }
        protected override void OnActived()
        {
            base.OnActived();
            DisplayEquipLevels();
            if (model.selectedLevel != 0)
            {
                m_Content.gameObject.SetActive(true);
                DisplayEquips();
                DisplayFightPoint();
                DisplayAppearance();
                DisplaySuitInfo();
            }
        }
        #endregion
        private void OnSelectedLevelChange()
        {
            m_Content.gameObject.SetActive(true);
            DisplayEquips();
            DisplayFightPoint();
            DisplayAppearance();
            DisplaySuitInfo();
        }
        private void DisplayEquipLevels()
        {
            var realm = model.playerRealm;
            var levels = new List<int>();
            var allLevels = equipModel.GetAllEquipSets();
            foreach (var level in allLevels)
            {
                var config = EquipControlConfig.Get(level, 1);
                if (realm >= config.realm)
                {
                    levels.Add(level);
                }
            }
            m_EquipLevelScroll.Init(levels);
        }
        private void DisplayEquips()
        {
            var equipDetails = model.GetEquipBriefs();
            for (int i = 1; i <= 12; i++)
            {
                var itemId = equipDetails.ContainsKey(i) ? equipDetails[i].itemId : 0;
                var star = equipDetails.ContainsKey(i) ? equipDetails[i].star : 0;
                m_EquipSlots[i].Display(i, itemId, star);
            }
        }
        private void DisplayFightPoint()
        {
            m_FightPoint.text = model.GetFightPoint().ToString();
        }
        private void DisplayAppearance()
        {
            var appearance = model.GetEquipAppearance();
            UI3DModelExhibition.Instance.ShowPlayer(m_Role, new UI3DPlayerExhibitionData()
            {
                job = appearance.job,
                clothesId = appearance.clothes,
                weaponId = appearance.weapon,
                secondaryId = appearance.secondary,
                keepRotation = resetRoleRotation,
            });
            resetRoleRotation = false;
        }
        private void DisplaySuitInfo()
        {
            m_WidgetSuit.Display(model.GetSuitInfo());
        }
        [System.Serializable]
        public class EquipSlots
        {
            public OtherPlayerEquipSlotBehaviour weapon;
            public OtherPlayerEquipSlotBehaviour secondary;
            public OtherPlayerEquipSlotBehaviour hat;
            public OtherPlayerEquipSlotBehaviour clothes;
            public OtherPlayerEquipSlotBehaviour belt;
            public OtherPlayerEquipSlotBehaviour trousers;
            public OtherPlayerEquipSlotBehaviour shoes;
            public OtherPlayerEquipSlotBehaviour glove;
            public OtherPlayerEquipSlotBehaviour neck;
            public OtherPlayerEquipSlotBehaviour fairy1;
            public OtherPlayerEquipSlotBehaviour fairy2;
            public OtherPlayerEquipSlotBehaviour jade;
            public OtherPlayerEquipSlotBehaviour this[int place] {
                get {
                    switch ((RoleEquipType)place)
                    {
                        case RoleEquipType.Weapon:
                            return weapon;
                        case RoleEquipType.Weapon2:
                            return secondary;
                        case RoleEquipType.Hat:
                            return hat;
                        case RoleEquipType.Clothes:
                            return clothes;
                        case RoleEquipType.Belt:
                            return belt;
                        case RoleEquipType.Trousers:
                            return trousers;
                        case RoleEquipType.Shoes:
                            return shoes;
                        case RoleEquipType.Glove:
                            return glove;
                        case RoleEquipType.Neck:
                            return neck;
                        case RoleEquipType.FairyCan1:
                            return fairy1;
                        case RoleEquipType.FairyCan2:
                            return fairy2;
                        case RoleEquipType.Jade:
                            return jade;
                        default:
                            return null;
                    }
                }
            }
        }
    }
}
System/RoleParticulars/OtherPlayerEquipWin.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: c98313b28f1d52c438270c585b823c88
timeCreated: 1556248770
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/RoleParticulars/OtherPlayerSuitWidget.cs
New file
@@ -0,0 +1,165 @@
//--------------------------------------------------------
//    [Author]:           第二世界
//    [  Date ]:           Friday, April 26, 2019
//--------------------------------------------------------
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using UnityEngine.UI;
using System;
namespace Snxxz.UI
{
    public class OtherPlayerSuitWidget : MonoBehaviour
    {
        [SerializeField] Text m_SuitName;
        [SerializeField] StarToggle[] m_StarToggles;
        [SerializeField] Text[] m_SuitEquipNames;
        [SerializeField] EquipSuitPropertyBar m_TwoSuit;
        [SerializeField] EquipSuitPropertyBar m_FiveSuit;
        [SerializeField] Text m_EightSuitTitle;
        [SerializeField] Text m_EightSuitDescription;
        List<int> collectedPlaces;
        int level;
        int job;
        int twoSuitLevel;
        int fiveSuitLevel;
        int eightSuitLevel;
        public void Display(OtherPlayerEquipModel.SuitInfo suitInfo)
        {
            collectedPlaces = suitInfo.collectedPlaces;
            level = suitInfo.level;
            job = suitInfo.job;
            twoSuitLevel = suitInfo.suitLevels[EquipSuitType.TwoSuit];
            fiveSuitLevel = suitInfo.suitLevels[EquipSuitType.FiveSuit];
            eightSuitLevel = suitInfo.suitLevels[EquipSuitType.EightSuit];
            m_SuitName.text = EquipSuitConfig.GetConfigs(job, level, EquipSuitType.TwoSuit)[0].name;
            var maxLevel = EquipStarModel.GetMaxStarLevel(level);
            m_StarToggles[3].SetActive(maxLevel >= 9);
            m_StarToggles[2].SetActive(maxLevel >= 6);
            m_StarToggles[1].SetActive(maxLevel >= 3);
            m_StarToggles[0].SetActive(true);
            m_StarToggles[3].AddListener(() => { DisplayProperty(9); });
            m_StarToggles[2].AddListener(() => { DisplayProperty(6); });
            m_StarToggles[1].AddListener(() => { DisplayProperty(3); });
            m_StarToggles[0].AddListener(() => { DisplayProperty(0); });
            m_StarToggles[0].Select();
            for (int i = 1; i <= 8; i++)
            {
                var hasSuit = collectedPlaces.Contains(i);
                m_SuitEquipNames[i - 1].color = UIHelper.GetUIColor(hasSuit ? TextColType.Green : TextColType.White, true);
                m_SuitEquipNames[i - 1].text = UIHelper.GetEquipPlaceName(i);
            }
        }
        void DisplayProperty(int star)
        {
            var twoConfigs = EquipSuitConfig.GetConfigs(PlayerDatas.Instance.baseData.Job, level, EquipSuitType.TwoSuit);
            var fiveConfigs = EquipSuitConfig.GetConfigs(PlayerDatas.Instance.baseData.Job, level, EquipSuitType.FiveSuit);
            var eightConfigs = EquipSuitConfig.GetConfigs(PlayerDatas.Instance.baseData.Job, level, EquipSuitType.EightSuit);
            var config = twoConfigs.Find(x => { return x.star == star; });
            var properties = new List<Int2>();
            var twoSuit = new EquipSuitPropertyEntry()
            {
                type = EquipSuitType.TwoSuit,
                actived = twoSuitLevel >= star,
                properties = new List<Int2>(config.attr),
            };
            config = fiveConfigs.Find(x => { return x.star == star; });
            properties = new List<Int2>();
            var fiveSuit = new EquipSuitPropertyEntry()
            {
                type = EquipSuitType.FiveSuit,
                actived = fiveSuitLevel >= star,
                properties = new List<Int2>(config.attr),
            };
            config = eightConfigs.Find(x => { return x.star == star; });
            m_TwoSuit.Display(twoSuit);
            m_FiveSuit.Display(fiveSuit);
            m_EightSuitDescription.text = GetEightSuitDescription(config.id);
            var color = UIHelper.GetUIColor(eightSuitLevel >= star ? TextColType.Green : TextColType.White, true);
            m_EightSuitTitle.color = color;
            m_EightSuitDescription.color = color;
        }
        public void Dispose()
        {
        }
        private string GetEightSuitDescription(int suitId)
        {
            var config = EquipSuitConfig.Get(suitId);
            if (config.skillID > 0)
            {
                return config.description;
            }
            else
            {
                return PlayerPropertyConfig.GetFullDescription(config.attr[0]);
            }
        }
        [System.Serializable]
        public class StarToggle
        {
            public int star;
            public Text title;
            public Toggle toggle;
            Action onSelect;
            public void SetActive(bool active)
            {
                title.gameObject.SetActive(active);
                toggle.interactable = active;
                if (active)
                {
                    toggle.SetListener(OnValueChange);
                }
                else
                {
                    toggle.RemoveAllListeners();
                }
            }
            public void Select()
            {
                toggle.isOn = true;
            }
            public void AddListener(Action callBack)
            {
                onSelect = callBack;
            }
            private void OnValueChange(bool value)
            {
                if (value)
                {
                    if (onSelect != null)
                    {
                        onSelect();
                    }
                }
            }
        }
    }
}
System/RoleParticulars/OtherPlayerSuitWidget.cs.meta
New file
@@ -0,0 +1,12 @@
fileFormatVersion: 2
guid: 68b60f9b9f16c934f8e82ad5adef028f
timeCreated: 1556249026
licenseType: Pro
MonoImporter:
  serializedVersion: 2
  defaultReferences: []
  executionOrder: 0
  icon: {instanceID: 0}
  userData:
  assetBundleName:
  assetBundleVariant:
System/RoleParticulars/RoleParticularModel.cs
@@ -32,15 +32,6 @@
        private Dictionary<int, ViewPlayerData> viewPlayerDataDic = new Dictionary<int, ViewPlayerData>();
        private Dictionary<int, ulong> funcFightPowerDict = new Dictionary<int, ulong>();
        public event Action PowerUpdate;
        public ItemData GetItemData(RoleEquipType type)
        {
            if (viewPlayerDataDic.ContainsKey(viewPlayer))
            {
                if (viewPlayerDataDic[viewPlayer].roleEquipDataDic.ContainsKey(type))
                    return viewPlayerDataDic[viewPlayer].roleEquipDataDic[type];
            }
            return null;
        }
        public ViewPlayerData GetViewPlayerData(int player)
        {
@@ -157,20 +148,11 @@
            }
            viewPlayerData.getTime = DateTime.Now;
            viewPlayerData.roleEquipDataDic.Clear();
            viewPlayerData.itemDatas = JsonMapper.ToObject<ItemData[]>(package.ItemData);
            viewPlayerData.rolePropData = JsonMapper.ToObject<RolePropData>(package.PropData);
            viewPlayerData.rolePlusData = new RolePlusData();
            viewPlayerData.rolePlusData.AnalysisRolePlusData(package.PlusData);
            if (viewPlayerData.itemDatas != null)
            {
                for (int i = 0; i < viewPlayerData.itemDatas.Length; i++)
                {
                    viewPlayerData.itemDatas[i].AnalysisUserData();
                    viewPlayerData.roleEquipDataDic[(RoleEquipType)viewPlayerData.itemDatas[i].ItemIndex] = viewPlayerData.itemDatas[i];
                }
            }
            viewPlayerData.AnalysisEquipSuit();
            ShowRoleParticulars(viewPlayerData);
        }
@@ -692,16 +674,26 @@
            public RolePropData rolePropData;
            public RolePlusData rolePlusData;
            public Dictionary<RoleEquipType, ItemData> roleEquipDataDic = new Dictionary<RoleEquipType, ItemData>();
            public DateTime getTime;
            public void AnalysisEquipSuit()
            {
            }
            public int GetEquipSuitLevel()
            {
                return 0;
            }
            public int GetItemId(RoleEquipType type)
            {
                if (rolePropData.EquipShowID != null)
                {
                    foreach (var id in rolePropData.EquipShowID)
                    {
                        var itemConfig = ItemConfig.Get(id);
                        if (itemConfig != null && itemConfig.EquipPlace == (int)type)
                        {
                            return id;
                        }
                    }
                }
                return 0;
            }
@@ -729,6 +721,7 @@
                }
            }
        }
        [Serializable]
        public struct RolePropData
        {
@@ -742,6 +735,8 @@
            public ulong FightPower;
            public uint EquipShowSwitch;
            public int ServerGroupID;
            public int VIPLV;
            public int[] EquipShowID;
        }
        public class RolePlusData
System/RoleParticulars/RoleParticularsWin.cs
@@ -16,19 +16,20 @@
    public class RoleParticularsWin : Window
    {
        [SerializeField] List<RoleEquip> roleEquipList = new List<RoleEquip>();
        [SerializeField] Button addFriendBtn;
        [SerializeField] Button m_AddFriend;
        [SerializeField] Button m_ViewHorse;
        [SerializeField] Button m_ViewPet;
        [SerializeField] Button closeBtn;
        [SerializeField] Text fairyName;
        [SerializeField] Image realmImg;
        [SerializeField] Text playerTxt;
        [SerializeField] Text fightPowerTxt;
        [SerializeField] RawImage roleModel;
        [SerializeField] Button m_ViewRealmEquip;
        [SerializeField] Button m_Close;
        [SerializeField] Text m_FairyName;
        [SerializeField] Image m_RealmIcon;
        [SerializeField] Text m_PlayerName;
        [SerializeField] Text m_FightPower;
        [SerializeField] RawImage m_RawPlayer;
        RoleParticularModel model { get { return ModelCenter.Instance.GetModel<RoleParticularModel>(); } }
        FriendsModel friendsModel { get { return ModelCenter.Instance.GetModel<FriendsModel>(); } }
        OtherPlayerEquipModel otherPlayerEquipModel { get { return ModelCenter.Instance.GetModel<OtherPlayerEquipModel>(); } }
        
        #region Built-in
@@ -38,36 +39,11 @@
        protected override void AddListeners()
        {
            addFriendBtn.onClick.AddListener(OnAddFriend);
            closeBtn.onClick.AddListener(CloseClick);
            for (int i = 0; i < roleEquipList.Count; i++)
            {
                RoleEquipType roleEquipType = roleEquipList[i].type;
                roleEquipList[i].itemCell.button.onClick.AddListener(() =>
                {
                    OnRoleEquipClick(roleEquipType);
                });
            }
            m_AddFriend.onClick.AddListener(OnAddFriend);
            m_Close.onClick.AddListener(CloseClick);
            m_ViewHorse.onClick.AddListener(ViewHorse);
            m_ViewPet.onClick.AddListener(ViewPet);
        }
        private void OnRoleEquipClick(RoleEquipType type)
        {
            RoleParticularModel.ItemData itemData = model.GetItemData(type);
            if (itemData != null)
            {
//                 RoleParticularModel.ViewPlayerData viewPlayerData = model.GetViewPlayerData(model.viewPlayer);
//                 ItemAttrData attrData = new ItemAttrData(itemData.ItemID, false, 1, -1, false, PackType.Deleted,
//                     "", itemData.useDataDict);
//                 attrData.SetStrengthData(viewPlayerData.rolePlusData.GetEquipStarLv((int)type),1);
//                 attrData.SetGemModel(viewPlayerData.rolePlusData.GetEquipStone((int)type));
//                 itemTipsModel.SetItemTipsModel(attrData);
                ItemTipUtility.Show(itemData.ItemID);
            }
            m_ViewRealmEquip.AddListener(ViewRealmEquip);
        }
        protected override void OnPreOpen()
@@ -82,6 +58,7 @@
        protected override void OnPreClose()
        {
            otherPlayerEquipModel.Clear();
            WindowCenter.Instance.windowAfterCloseEvent -= WindowAfterCloseEvent;
        }
@@ -131,25 +108,25 @@
            }
        }
        private void ViewRealmEquip()
        {
            var viewPlayerData = model.GetViewPlayerData(model.viewPlayer);
            var wing  = viewPlayerData.GetItemId(RoleEquipType.Wing);
            otherPlayerEquipModel.ViewPlayerEquip(new OtherPlayerEquipModel.PlayerBriefInfo()
            {
                id = model.viewPlayer,
                realm = viewPlayerData.rolePropData.RealmLV,
                job = viewPlayerData.rolePropData.Job,
                vipLevel = viewPlayerData.rolePropData.VIPLV,
                wing = wing,
            });
        }
        private void OnShowRoleEquip()
        {
            for (int i = 0; i < roleEquipList.Count; i++)
            {
                ItemCell itemCell = roleEquipList[i].itemCell;
                RoleParticularModel.ItemData itemData = model.GetItemData(roleEquipList[i].type);
                itemCell.gameObject.SetActive(itemData != null);
                if (itemData == null)
                {
                    continue;
                }
                ItemCellModel cellModel = new ItemCellModel(itemData.ItemID, false, 1,
                   "", PackType.Equip, false, itemData.useDataDict);
                itemCell.Init(cellModel);
            }
            var viewPlayerData = model.GetViewPlayerData(model.viewPlayer);
            addFriendBtn.gameObject.SetActive(!viewPlayerData.IsCrossServerPlayer()
            m_AddFriend.gameObject.SetActive(!viewPlayerData.IsCrossServerPlayer()
                && friendsModel.GetFirendInfo((uint)model.viewPlayer, (byte)GroupType.Friend) == null);
            if (viewPlayerData != null)
@@ -159,70 +136,35 @@
                if (viewPlayerData.rolePropData.FamilyID == 0)
                {
                    fairyName.gameObject.SetActive(false);
                    m_FairyName.gameObject.SetActive(false);
                }
                else
                {
                    fairyName.gameObject.SetActive(true);
                    fairyName.text = StringUtility.Contact(Language.Get("RoleParticularWin_1"), viewPlayerData.rolePropData.FamilyName);
                    m_FairyName.gameObject.SetActive(true);
                    m_FairyName.text = StringUtility.Contact(Language.Get("RoleParticularWin_1"),
                        viewPlayerData.rolePropData.FamilyName);
                }
                var realmLv = viewPlayerData.rolePropData.RealmLV;
                realmImg.gameObject.SetActive(realmLv > 0);
                m_RealmIcon.gameObject.SetActive(realmLv > 0);
                if (realmLv > 0)
                {
                    RealmConfig _tagRealmModel = RealmConfig.Get(realmLv);
                    if (_tagRealmModel != null)
                    RealmConfig realmConfig = RealmConfig.Get(realmLv);
                    if (realmConfig != null)
                    {
                        realmImg.SetSprite(_tagRealmModel.Img);
                        m_RealmIcon.SetSprite(realmConfig.Img);
                    }
                }
                playerTxt.text = StringUtility.Contact(viewPlayerData.rolePropData.Name, "Lv. ", viewPlayerData.rolePropData.LV);
                fightPowerTxt.text = StringUtility.Contact(Language.Get("RoleParticularWin_2"), viewPlayerData.rolePropData.FightPower);
                m_PlayerName.text = StringUtility.Contact(viewPlayerData.rolePropData.Name, "Lv. ", viewPlayerData.rolePropData.LV);
                m_FightPower.text = StringUtility.Contact(Language.Get("RoleParticularWin_2"), viewPlayerData.rolePropData.FightPower);
                int clothes = 0;
                int _suitLevel = 0;
                RoleParticularModel.ItemData itemData = model.GetItemData(RoleEquipType.Clothes);
                if (itemData != null)
                {
                    clothes = itemData.ItemID;
                    _suitLevel = viewPlayerData.GetEquipSuitLevel();
                }
                int weapon = 0;
                itemData = model.GetItemData(RoleEquipType.Weapon);
                if (itemData != null)
                {
                    weapon = itemData.ItemID;
                }
                int wing = 0;
                itemData = model.GetItemData(RoleEquipType.Wing);
                if (itemData != null)
                {
                    wing = itemData.ItemID;
                }
                int weapon2 = 0;
                itemData = model.GetItemData(RoleEquipType.Weapon2);
                if (itemData != null)
                {
                    weapon2 = itemData.ItemID;
                }
                int fashionClothes = 0;
                itemData = model.GetItemData(RoleEquipType.FashionClothes);
                if (itemData != null)
                {
                    fashionClothes = itemData.ItemID;
                }
                int fashionWeapon = 0;
                itemData = model.GetItemData(RoleEquipType.FashionWeapon);
                if (itemData != null)
                {
                    fashionWeapon = itemData.ItemID;
                }
                int fashionWeapon2 = 0;
                itemData = model.GetItemData(RoleEquipType.FashionWeapon2);
                if (itemData != null)
                {
                    fashionWeapon2 = itemData.ItemID;
                }
                int clothes = viewPlayerData.GetItemId(RoleEquipType.Clothes);
                int weapon = viewPlayerData.GetItemId(RoleEquipType.Weapon);
                int wing = viewPlayerData.GetItemId(RoleEquipType.Wing);
                int weapon2 = viewPlayerData.GetItemId(RoleEquipType.Weapon2);
                int fashionClothes = viewPlayerData.GetItemId(RoleEquipType.FashionClothes);
                int fashionWeapon = viewPlayerData.GetItemId(RoleEquipType.FashionWeapon);
                int fashionWeapon2 = viewPlayerData.GetItemId(RoleEquipType.FashionWeapon2);
                var data = new UI3DPlayerExhibitionData
                {
@@ -237,18 +179,12 @@
                    secondaryId = weapon2,
                    isDialogue = false,
                };
                UI3DModelExhibition.Instance.ShowPlayer(roleModel, data);
                m_RawPlayer.gameObject.SetActive(true);
                UI3DModelExhibition.Instance.ShowPlayer(m_RawPlayer, data);
            }
        }
        [Serializable]
        public class RoleEquip
        {
            public RoleEquipType type;
            public ItemCell itemCell;
        }
    }
}
System/RoleParticulars/ViewFuncCell.cs
@@ -79,14 +79,17 @@
                {
                    case FuncPowerType.Equip:
                        {
                            foreach (var itemData in viewPlayerData.roleEquipDataDic.Values)
                            if (viewPlayerData.rolePropData.EquipShowID != null)
                            {
                                ItemConfig _tagChinItemModel = ItemConfig.Get(itemData.ItemID);
                                if (_tagChinItemModel != null && (_tagChinItemModel.ItemColor > viewRoleFuncModel.condition[0]
                                    || (_tagChinItemModel.ItemColor == viewRoleFuncModel.condition[0]
                                    && (viewRoleFuncModel.condition.Length < 2 || _tagChinItemModel.StarLevel >= viewRoleFuncModel.condition[1]))))
                                foreach (var itemId in viewPlayerData.rolePropData.EquipShowID)
                                {
                                    targetValue++;
                                    ItemConfig _tagChinItemModel = ItemConfig.Get(itemId);
                                    if (_tagChinItemModel != null && (_tagChinItemModel.ItemColor > viewRoleFuncModel.condition[0]
                                        || (_tagChinItemModel.ItemColor == viewRoleFuncModel.condition[0]
                                        && (viewRoleFuncModel.condition.Length < 2 || _tagChinItemModel.StarLevel >= viewRoleFuncModel.condition[1]))))
                                    {
                                        targetValue++;
                                    }
                                }
                            }
                            var packTypeModel = playerPack.GetSinglePack(PackType.Equip);
@@ -123,10 +126,10 @@
                    case FuncPowerType.Wing:
                        {
                            handled = true;
                            RoleParticularModel.ItemData itemData = model.GetItemData(RoleEquipType.Wing);
                            if (itemData!=null)
                            var wingId = viewPlayerData.GetItemId(RoleEquipType.Wing);
                            if (wingId != 0)
                            {
                                ItemConfig _tagChinItemModel = ItemConfig.Get(itemData.ItemID);
                                ItemConfig _tagChinItemModel = ItemConfig.Get(wingId);
                                targetCompareTxt.text = string.Format(viewRoleFuncModel.compareTip, _tagChinItemModel.ItemName);
                            }
                            else