Example #1
0
    void RPC_S2C_FCT_AddCompoudList(uLink.BitStream stream, uLink.NetworkMessageInfo info)
    {
        CompoudItem data_ci = stream.Read <CompoudItem>();

        if (m_Entity == null)
        {
            Debug.LogError("entity not ready");
            return;
        }
        ((CSFactory)m_Entity).SetCompoudItem(data_ci.itemID, data_ci.itemCnt, data_ci.time);
    }
Example #2
0
    void RPC_S2C_FCT_SyncItem(uLink.BitStream stream, uLink.NetworkMessageInfo info)
    {
        int         index   = stream.Read <int>();
        CompoudItem data_ci = stream.Read <CompoudItem>();

        CSFactoryData recordData = (CSFactoryData)_ColonyObj._RecordData;

        if (recordData.m_CompoudItems.Count > index)
        {
            recordData.m_CompoudItems [index] = data_ci;
        }
    }
Example #3
0
    public bool GetTakeAwayCompoundItem(int index, out CompoudItem outCompoudItem)
    {
        outCompoudItem = null;
        List <CompoudItem> ci_list = Data.m_CompoudItems;

        if (index >= ci_list.Count || index < 0)
        {
            return(false);
        }

        if (ci_list[index].curTime >= ci_list[index].time)
        {
            outCompoudItem = ci_list[index];

            return(true);
        }
        outCompoudItem = ci_list[index];
        return(false);
    }
Example #4
0
    public bool SetCompoudItemAuto(int itemID, int count, float time)
    {
        if (Data.m_CompoudItems.Count >= c_CompoudItemCount - 2)
        {
            return(false);
        }

        CompoudItem data_ci = new CompoudItem();

        data_ci.curTime = 0;
        data_ci.time    = time;
        if (Application.isEditor && InTest)
        {
            data_ci.time = 5;
        }
        data_ci.itemID  = itemID;
        data_ci.itemCnt = count;
        Data.m_CompoudItems.Add(data_ci);

        return(true);
    }
Example #5
0
    // ---------------------------------
    //  Callback
    // ---------------------------------

    void OnCompoudClick(CSUI_CompoundItem ci)
    {
        if (!GameConfig.IsMultiMode)
        {
            int index = m_CompoudItems.FindIndex(item0 => item0 == ci);
            if (index != -1)
            {
                if (!CSUI_MainWndCtrl.IsWorking())
                {
                    return;
                }

                if (m_Factory.CompoudItemsCount <= index)
                {
                    return;
                }

                Pathea.PlayerPackageCmpt pkg = Pathea.PeCreature.Instance.mainPlayer.GetCmpt <Pathea.PlayerPackageCmpt>();
                if (pkg == null)
                {
                    Debug.LogError("CSUI_Factory.OnCompoundClick: pkg is null!");
                    return;
                }

                CompoudItem ci_data = null;
                ItemProto   item_data;
                if (!m_Factory.GetTakeAwayCompoundItem(index, out ci_data))
                {
                    if (ci_data != null)
                    {
                        item_data = ItemProto.GetItemData(ci_data.itemID);
                        CSUI_MainWndCtrl.ShowStatusBar(CSUtils.GetNoFormatString(UIMsgBoxInfo.mIsCompounding.GetString(), item_data.GetName()), Color.red);
                    }
                    return;
                }

                item_data = ItemProto.GetItemData(ci_data.itemID);

                int pacakgeEmptyCount = pkg.package.GetSlotList(ci_data.itemID).vacancyCount;
                if (!pkg.package.CanAdd(m_Factory.Data.m_CompoudItems[index].itemID, ci.Count))
                {
                    // Status bar
                    //lz-2016.07.16 背包空间不足这条提示是基地复制器和玩家复制器通用的,在基地用的时候,基地的提示只能显示一行,不能换行
                    string tip = PELocalization.GetString(8000050).Replace("\\n", " ");
                    CSUI_MainWndCtrl.ShowStatusBar(tip, Color.red);
                    if (item_data.maxStackNum > 1 || pacakgeEmptyCount == 0)
                    {
                        return;
                    }
                }

                int originalCount = ci_data.itemCnt;
                int addCount      = originalCount;
                if (item_data.maxStackNum > 1)
                {
                    pkg.Add(ci_data.itemID, ci_data.itemCnt);
                }
                else
                {
                    if (originalCount > pacakgeEmptyCount)
                    {
                        addCount = pacakgeEmptyCount;
                    }
                    pkg.Add(ci_data.itemID, addCount);
                }

                ci_data.itemCnt = originalCount - addCount;
                if (ci_data.itemCnt == 0)
                {
                    m_Factory.TakeAwayCompoudItem(index);
                    CSUI_MainWndCtrl.ShowStatusBar(CSUtils.GetNoFormatString(UIMsgBoxInfo.mTakeAwayCompoundItem.GetString(), item_data.GetName()));
                }
            }
        }
        else
        {
            int index = m_CompoudItems.FindIndex(item0 => item0 == ci);
            if (index != -1)
            {
                if (m_Factory.CompoudItemsCount <= index ||
                    m_Factory.Data.m_CompoudItems[index] == null ||
                    m_Factory.Data.m_CompoudItems[index].curTime < m_Factory.Data.m_CompoudItems[index].time)
                {
                    return;
                }
                m_Factory._ColonyObj._Network.FCT_Fetch(index);
            }
        }
    }
Example #6
0
    public void OnCancelCompound(int index)
    {
        if (index < Data.m_CompoudItems.Count)
        {
            CompoudItem ci = Data.m_CompoudItems[index];
//			if(ci.IsFinished)
//				return;

            if (PeGameMgr.IsSingle)
            {
                //1.storage add materials
                // 0)get materials
                List <ItemIdCount> materialList = new List <ItemIdCount> ();
                Replicator.Formula ms           = Replicator.Formula.Mgr.Instance.FindByProductId(ci.itemID);
                foreach (Replicator.Formula.Material mt in ms.materials)
                {
                    materialList.Add(new ItemIdCount(mt.itemId, mt.itemCount * ci.itemCnt / ms.m_productItemCount));
                }
                // 1)storage not full
                if (!CSUtils.AddItemListToStorage(materialList, Assembly))
                // 2)storage full, gen object
                {
                    System.Random rand = new System.Random();
                    Vector3       pos;
                    if (gameLogic != null)
                    {
                        pos = Position + gameLogic.transform.rotation * (new Vector3(0, 0, 4));
                    }
                    else
                    {
                        pos = Position + new Vector3(0, 0, 6);
                    }
                    pos = pos + new Vector3((float)rand.NextDouble() * 0.1f, 0, (float)rand.NextDouble() * 0.1f);
                    while (RandomItemMgr.Instance.ContainsPos(pos))
                    {
                        pos += new Vector3(0, 0.01f, 0);
                    }
                    RandomItemMgr.Instance.GenFactoryCancel(pos, CSUtils.ItemIdCountListToIntArray(materialList));
                }
                if (m_CurCompoundIndex == index)
                {
                    if (m_Counter != null)
                    {
                        CSMain.Instance.DestoryCounter(m_Counter);
                        m_Counter = null;
                    }
                }
                if (m_CurCompoundIndex > index)
                {
                    m_CurCompoundIndex--;
                }
                Data.m_CompoudItems.Remove(ci);
            }
            else
            {
                _Net.RPCServer(EPacketType.PT_CL_FCT_GenFactoryCancel, index, ci);

                if (m_CurCompoundIndex == index)
                {
                    if (m_Counter != null)
                    {
                        CSMain.Instance.DestoryCounter(m_Counter);
                        m_Counter = null;
                    }
                }
                if (m_CurCompoundIndex > index)
                {
                    m_CurCompoundIndex--;
                }
                Data.m_CompoudItems.Remove(ci);
            }
        }
    }