예제 #1
0
    /// <summary>
    /// 设置船mod 或是船装备mod数据
    /// </summary>
    /// <param name="equipmentModL1"></param>
    /// <param name="GeneralModContainer"></param>
    /// <param name="ExclusivelyModContainer"></param>
    private void SetShipModOrShipEquipModData(EquipmentModL1 equipmentModL1, IModContainer GeneralModContainer, IModContainer ExclusivelyModContainer)
    {
        for (int i = 0; i < m_ModCellList.Count; i++)
        {
            m_ModCellList[i].Cleanup();
            if (i < GeneralModContainer.GetCurrentSizeMax())
            {
                m_ModCellList[i].SetBaseData(equipmentModL1, EquipmentModL2.General, GeneralModContainer.GetUID(), i);
            }
            else
            {
                m_ModCellList[i].SetBaseData(equipmentModL1, EquipmentModL2.Exclusively, ExclusivelyModContainer.GetUID(), i - (int)GeneralModContainer.GetCurrentSizeMax());
            }
        }

        IMod[] mods = GeneralModContainer.GetMods();
        if (mods != null && mods.Length > 0)
        {
            for (int i = 0; i < mods.Length; i++)
            {
                m_ModCellList[mods[i].GetPos()].SetData(mods[i]);
            }
        }
        mods = ExclusivelyModContainer.GetMods();
        int GeneralModCount = (int)GeneralModContainer.GetCurrentSizeMax();

        if (mods != null && mods.Length > 0)
        {
            for (int i = 0; i < mods.Length; i++)
            {
                m_ModCellList[mods[i].GetPos() + GeneralModCount].SetData(mods[i]);
            }
        }
    }
 /// <summary>
 /// 设置基础数据
 /// </summary>
 /// <param name="modType1">mod类型1</param>
 /// <param name="modType2">mod类型2</param>
 /// <param name="containerUid">背包uid</param>
 /// <param name="pos">位置标记</param>
 public void SetBaseData(EquipmentModL1 modType1, EquipmentModL2 modType2, ulong containerUid, int pos)
 {
     Initialize();
     m_ModType1     = modType1;
     m_ModType2     = modType2;
     m_ContainerUid = containerUid;
     m_Pos          = pos;
 }
 /// <summary>
 /// 清理
 /// </summary>
 public void Cleanup()
 {
     Initialize();
     m_Icon.enabled = false;
     m_Data         = null;
     m_ModType1     = 0;
     m_ModType2     = 0;
     m_ContainerUid = 0;
     m_Pos          = 0;
     m_Uid          = 0;
     m_Tid          = 0;
 }
예제 #4
0
    /// <summary>
    /// 布局飞船或武器的MOD部分
    /// </summary>
    /// <param name="itemContainer">武器数据</param>
    /// <param name="modNode">MOD节点</param>
    private void LayoutShipOrWeaponModList(ItemContainer itemContainer, EquipmentModL1 type, Transform modNode)
    {
        CfgEternityProxy cfg = GetConfig();

        uint containerSizeA = 0;
        uint containerSizeB = 0;

        ItemContainer containerA = null;
        ItemContainer containerB = null;

        if (itemContainer != null && itemContainer.Items != null)
        {
            string containerKeyA = Category.EquipmentMod.ToString() + type.ToString() + EquipmentModL2.General.ToString();
            string containerKeyB = Category.EquipmentMod.ToString() + type.ToString() + EquipmentModL2.Exclusively.ToString();

            foreach (ItemBase item in itemContainer.Items.Values)
            {
                if (item is ItemContainer)
                {
                    ItemContainer container = item as ItemContainer;

                    if (container.ContainerType.Equals(containerKeyA))
                    {
                        containerA     = container;
                        containerSizeA = container.CurrentSizeMax;
                    }
                    else if (container.ContainerType.Equals(containerKeyB))
                    {
                        containerB     = container;
                        containerSizeB = container.CurrentSizeMax;
                    }
                }
            }
        }

        int[] qualitys = new int[containerSizeA + containerSizeB];
        if (containerA != null && containerA.Items != null)
        {
            foreach (ItemBase mod in containerA.Items.Values)
            {
                qualitys[mod.Position] = cfg.GetItemByKey(mod.TID).Quality;
            }
        }
        if (containerB != null && containerB.Items != null)
        {
            foreach (ItemBase mod in containerB.Items.Values)
            {
                qualitys[containerSizeA + mod.Position] = cfg.GetItemByKey(mod.TID).Quality;
            }
        }

        LayoutModList(qualitys, modNode);
    }