예제 #1
0
    /// <summary>
    /// 更新船坞容量大小
    /// </summary>
    private void UpdatePackSize()
    {
        int           m_Count     = 0;
        ItemContainer m_Container = null;
        WarshipL1     warshipL1   = 0;

        switch (State.GetPageIndex())
        {
        case 0:
            warshipL1 = WarshipL1.MiningShip;
            break;

        case 1:
            warshipL1 = WarshipL1.FightWarship;
            break;

        case 2:
            warshipL1 = WarshipL1.SurveillanceShip;
            break;
        }
        m_Container = m_ShipProxy.GetShipContainer(warshipL1);
        m_Count     = m_ShipProxy.GetShipByType(warshipL1).Length;
        int m_MaxCount = m_Container != null ? (int)m_Container.CurrentSizeMax : 0;

        State.SetPageLabel(State.GetPageIndex(), string.Format(GetLocalization("shiphangar_text_1009"), m_Count, m_MaxCount));
    }
예제 #2
0
    /// <summary>
    /// 获取船类型包
    /// </summary>
    /// <param name="warshipL1"></param>
    /// <returns></returns>
    public ItemContainer GetShipContainer(WarshipL1 warshipL1)
    {
        PackageProxy m_PackageProxy = Facade.RetrieveProxy(ProxyName.PackageProxy) as PackageProxy;

        switch (warshipL1)
        {
        case WarshipL1.MiningShip:
            return(m_PackageProxy.GetItemList <ItemContainer>(Category.WarehousePackage, Category.Package)[2]);

        case WarshipL1.FightWarship:
            return(m_PackageProxy.GetItemList <ItemContainer>(Category.WarehousePackage, Category.Package)[1]);

        case WarshipL1.SurveillanceShip:
            return(m_PackageProxy.GetItemList <ItemContainer>(Category.WarehousePackage, Category.Package)[0]);
        }
        return(null);
    }
예제 #3
0
    /// <summary>
    /// 根据类型获取船
    /// </summary>
    /// <param name="warshipL1"></param>
    /// <returns></returns>
    public IShip[] GetShipByType(WarshipL1 warshipL1)
    {
        IShip[]      m_Ships       = GetShips();
        List <IShip> m_ShipsByType = new List <IShip>();

        if (m_Ships != null && m_Ships.Length > 0)
        {
            foreach (IShip item in m_Ships)
            {
                if (item.GetWarShipType() == warshipL1)
                {
                    m_ShipsByType.Add(item);
                }
            }
        }
        return(m_ShipsByType.ToArray());
    }
예제 #4
0
    /// <summary>
    /// 物品最大数量
    /// </summary>
    private void GetGoodMax()
    {
        //玩家钱包容量
        int m_MoneyNum = Mathf.FloorToInt(m_Money * 1.0f / (m_ShopParameter.Price / m_ShopParameter.Bounds));
        //库存
        int m_Stock = m_ShopParameter.Stock;
        //背包空间
        ItemContainer m_Container  = m_PackageProxy.GetPackage(m_ShopParameter.Category);
        long          m_PackageNum = 0;

        //船包
        if (m_Container == null)
        {
            Item      item      = m_CfgEternityProxy.GetItemByKey(m_ShopParameter.Tid);
            WarshipL1 warshipL1 = 0;
            ItemTypeUtil.SetSubType(ref warshipL1, ItemTypeUtil.GetItemType(item.Type));
            m_PackageNum = m_ShipProxy.GetShipContainer(warshipL1).CurrentSizeMax - m_ShipProxy.GetShipByType(warshipL1).Length;
        }
        //普通包
        else
        {
            //拥有数量
            int m_LeftNum;
            //剩余堆
            int m_Stack = 0;
            if (m_Container.Items == null)
            {
                m_LeftNum = 0;
            }
            else
            {
                m_LeftNum = m_Container.Items.Count;
            }
            int m_Empty = (int)m_Container.CurrentSizeMax - m_LeftNum;


            if ((m_PackageProxy.GetItemCountByTID(m_ShopParameter.Tid) % m_ItemConfig.StackingLimit) > 0)
            {
                m_Stack = (int)(m_ItemConfig.StackingLimit - (m_PackageProxy.GetItemCountByTID(m_ShopParameter.Tid) % m_ItemConfig.StackingLimit));
            }
            else
            {
                m_Stack = 0;
            }
            //无限堆包内堆已满
            if (m_ItemConfig.Heaps == 0 && m_Stack == 0)
            {
                m_PackageNum = m_ItemConfig.StackingLimit * m_Empty;
            }
            //无限堆包内堆未满
            else if (m_ItemConfig.Heaps == 0 && m_Stack > 0)
            {
                m_PackageNum = m_Stack + m_Empty * m_ItemConfig.StackingLimit;
            }
            //单堆
            else
            {
                m_PackageNum = m_ItemConfig.StackingLimit - m_PackageProxy.GetItemCountByTID(m_ShopParameter.Tid);
            }
        }

        List <long> m_Capacity = new List <long>()
        {
            m_MoneyNum, m_PackageNum
        };

        if (m_Stock != -1)
        {
            m_Capacity.Add(m_Stock);
        }
        if (m_ShopParameter.LimitCount != -1)
        {
            m_Capacity.Add(m_ShopParameter.LimitCount);
        }
        m_Max = m_Capacity.Min();
    }
예제 #5
0
 public void SetWarShipType(WarshipL1 value)
 {
     m_WarshipL1 = value;
 }