/// <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; }
/// <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); }