// ---------------------------------
    //  Call back
    // ---------------------------------

    int OnCountIputChanged(int count)
    {
        UIGraphControl graph_ctrl = FactoryReplicator.m_MiddleContent.graphCtrl;
        int            n          = count;

        if (graph_ctrl.rootNode != null)
        {
            if (n > 9999)
            {
                n = 9999;
            }

            int m = n % graph_ctrl.rootNode.ms.m_productItemCount;
            if (m != 0)
            {
                n = n - m + graph_ctrl.rootNode.ms.m_productItemCount;
            }

            if (n > 9999)
            {
                n = n - graph_ctrl.rootNode.ms.m_productItemCount;
            }

            graph_ctrl.SetGraphCount(n);
        }
        return(n);
    }
Beispiel #2
0
    public void GetItemMaterialFromFactory(CSFactory factory, List <ItemIdCount> itemsNeedToGet, ref bool transferedItem)
    {
        foreach (ItemIdCount iic in itemsNeedToGet)
        {
            Replicator.KnownFormula[] msList = UIGraphControl.GetReplicator().GetKnowFormulasByProductItemId(iic.protoId);
            if (msList == null || msList.Length == 0)
            {
                continue;
            }

            Replicator.Formula ms = Replicator.Formula.Mgr.Instance.Find(msList[0].id);
            foreach (Replicator.Formula.Material mt in ms.materials)
            {
                int itemCount = factory.GetCompoundEndItemCount(mt.itemId);
                if (itemCount > 0)
                {
                    if (CSUtils.AddToStorage(mt.itemId, itemCount, core))
                    {
                        factory.CountDownItem(mt.itemId, itemCount);
                        transferedItem = true;
                    }
                }
            }
        }
    }
    // ---------------------------------
    //  Call back
    // ---------------------------------

    // Replicator --- Graph
    void OnGraphItemClick(int index)
    {
        if (index == -1)
        {
            return;
        }

        UIGraphControl graph_ctrl = FactoryReplicator.m_MiddleContent.graphCtrl;

        int m_id = graph_ctrl.mGraphItemList[index].GetItemID();

        if (ReDrawGraph(m_id))
        {
            _setCompundInfo(m_id);
            // Add id to graphistory
            FactoryReplicator.AddGraphHistory(m_id);
        }
        else
        {
            if (graph_ctrl.mSelectedIndex != -1)
            {
                graph_ctrl.mGraphItemList[graph_ctrl.mSelectedIndex].mCtrl.SetSelected(false);
            }
            graph_ctrl.mGraphItemList[index].mCtrl.SetSelected(true);
            graph_ctrl.mSelectedIndex = index;
        }

        _updateQueryGridItems(m_id);
    }
    //lz-2016.08.09 点击ScriptItem事件
    private void ScriptItemEvent(int itemID, int scriptIndex)
    {
        if (!this.m_Formulas.ContainsKey(itemID) || scriptIndex >= this.m_Formulas[itemID].Count || scriptIndex < 0)
        {
            return;
        }

        //更改new的状态
        Pathea.Replicator.KnownFormula knownFornula = this.m_Formulas[itemID][scriptIndex];
        Pathea.Replicator r = UIGraphControl.GetReplicator();
        if (null != r)
        {
            r.SetKnownFormulaFlag(knownFornula.id);
        }

        bool ok = ReDrawGraph(itemID, scriptIndex);

        if (ok)
        {
            _updateQueryGridItems(itemID);
            _setCompundInfo(itemID);
            // Add id to grap history
            FactoryReplicator.AddGraphHistory(itemID);
        }

        FactoryReplicator.m_MiddleContent.graphScrollBox.Reposition();
    }
    // ---------------------------------
    //  Func
    // ---------------------------------

    void _updateQueryGridItems(int m_id)
    {
        if (FactoryReplicator == null)
        {
            return;
        }

        Pathea.Replicator r = UIGraphControl.GetReplicator();
        if (null == r)
        {
            return;
        }
        // Clear first
        FactoryReplicator.DestroyQueryItems();

        foreach (Pathea.Replicator.KnownFormula kf in r.knowFormulas)
        {
            Pathea.Replicator.Formula ms = kf.Get();
            if (null == ms)
            {
                continue;
            }
            for (int j = 0; j < ms.materials.Count; j++)
            {
                if (ms.materials[j].itemId == m_id)
                {
                    _createQueryItems(ms.productItemId);
                }
            }
        }
    }
 //lz-2016.08.08 通过ItemID找到所有可以合成这个Item的脚本
 private void AddScriptItemData(int itemID)
 {
     if (!this.m_Formulas.ContainsKey(itemID))
     {
         List <Pathea.Replicator.Formula> formulaList = Pathea.Replicator.Formula.Mgr.Instance.FindAllByProDuctID(itemID);
         if (null == formulaList || formulaList.Count <= 0)
         {
             return;
         }
         List <Pathea.Replicator.KnownFormula> knownFormulaList = new List <Replicator.KnownFormula>();
         for (int i = 0; i < formulaList.Count; i++)
         {
             Pathea.Replicator.KnownFormula knownFormula = UIGraphControl.GetReplicator().GetKnownFormula(formulaList[i].id);
             if (null != knownFormula)
             {
                 knownFormulaList.Add(knownFormula);
             }
         }
         ItemProto item = ItemProto.GetItemData(itemID);
         this.m_ItemDataList.Add(item);
         this.m_Formulas.Add(itemID, knownFormulaList);
     }
     if (this.m_Formulas.ContainsKey(itemID) && itemID != this.m_CurItemID)
     {
         this.UpdateCurItemScriptList(itemID);
         this.SelectFirstScritItem(false);
     }
 }
Beispiel #7
0
    /// <summary>
    /// Raises the max button click event.
    /// </summary>
    void OnMaxBtnClick(GameObject go)
    {
        UIGraphControl graph_ctrl = m_MiddleContent.graphCtrl;
        int            count      = graph_ctrl.GetMaxCount();

        this.UpdateInputCount(count);
    }
Beispiel #8
0
    public static List <int> resolveProtoIdToProcess(List <int> protoIds)
    {
        List <int> resourceId = new List <int> ();

        foreach (int protoId in protoIds)
        {
            if (CSProcessing.CanProcessItem(protoId))
            {
                resourceId.Add(protoId);
                continue;
            }
            List <int> needReplicate = new List <int> ();
            needReplicate.Add(protoId);
            do
            {
                List <int> tempNeed = new List <int> ();
                tempNeed.AddRange(needReplicate);
                foreach (int tempProtoId in tempNeed)
                {
                    Replicator.KnownFormula[] msList = UIGraphControl.GetReplicator().GetKnowFormulasByProductItemId(tempProtoId);
                    if (msList == null || msList.Length == 0)
                    {
                        needReplicate.Remove(tempProtoId);
                        //Debug.LogError("can't get "+tempProtoId+" for colony");
                        continue;
                    }
                    //--to do: temp_ only use script 01
                    Replicator.Formula ms = Replicator.Formula.Mgr.Instance.Find(msList[0].id);
                    foreach (Replicator.Formula.Material mt in ms.materials)
                    {
                        if (CSProcessing.CanProcessItem(mt.itemId))
                        {
                            if (!resourceId.Contains(mt.itemId))
                            {
                                resourceId.Add(mt.itemId);
                            }
                        }
                        else
                        {
                            if (!needReplicate.Contains(mt.itemId))
                            {
                                needReplicate.Add(mt.itemId);
                            }
                        }
                    }
                    needReplicate.Remove(tempProtoId);
                }
            }while(needReplicate.Count > 0);
        }
        return(resourceId);
    }
Beispiel #9
0
    public void ReplicateItem(ItemIdCount iic, List <int> replicatingItems, out List <ItemIdCount> materialList, out int productItemCount)
    {
        Replicator.KnownFormula[] msList = UIGraphControl.GetReplicator().GetKnowFormulasByProductItemId(iic.protoId);
        materialList     = new List <ItemIdCount> ();
        productItemCount = 0;
        if (msList == null || msList.Length == 0)
        {
            return;
        }

        //--to do: temp,only use formula 01?
        Replicator.Formula ms = Replicator.Formula.Mgr.Instance.Find(msList[0].id);
        foreach (Replicator.Formula.Material mt in ms.materials)
        {
            materialList.Add(new ItemIdCount(mt.itemId, mt.itemCount));
        }
        productItemCount = ms.m_productItemCount;
        int productCount = Mathf.CeilToInt(iic.count * 1.0f / ms.m_productItemCount);

        //2.replicate it and count down material in storage
        int countCanGet = CSUtils.GetMaterialListCount(materialList, Assembly);

        if (countCanGet == 0)
        {
            return;
        }
        if (countCanGet >= productCount)
        {
            if (SetCompoudItemAuto(iic.protoId, productCount * ms.m_productItemCount, ms.timeNeed * productCount))
            {
                iic.count = 0;
                foreach (ItemIdCount countDownItem in materialList)
                {
                    CSUtils.CountDownItemFromFactoryAndAllStorage(countDownItem.protoId, countDownItem.count * productCount, Assembly);
                }
                replicatingItems.Add(iic.protoId);
            }
        }
        else
        {
            if (SetCompoudItemAuto(iic.protoId, countCanGet * ms.m_productItemCount, ms.timeNeed * countCanGet))
            {
                iic.count -= countCanGet * ms.m_productItemCount;
                foreach (ItemIdCount countDownItem in materialList)
                {
                    CSUtils.CountDownItemFromFactoryAndAllStorage(countDownItem.protoId, countDownItem.count * countCanGet, Assembly);
                }
                replicatingItems.Add(iic.protoId);
            }
        }
    }
Beispiel #10
0
    // Update is called once per frame
    void Update()
    {
        //lz-2016.10.14 m_Factory空对象
        if (FactoryReplicator == null || null == m_Factory)
        {
            return;
        }

        UIGraphControl graph_ctrl = FactoryReplicator.m_MiddleContent.graphCtrl;

        if (graph_ctrl.isCanCreate())
        {
            FactoryReplicator.m_RightContent.compoundBtn.isEnabled = true;
        }
        else
        {
            FactoryReplicator.m_RightContent.compoundBtn.isEnabled = false;
        }

        // Queue
        for (int i = 0; i < m_CompoudItems.Count; i++)
        {
            if (i < m_Factory.CompoudItemsCount)
            {
                ItemProto data    = ItemProto.GetItemData(m_Factory.Data.m_CompoudItems[i].itemID);
                string[]  iconStr = data.icon;

                if (iconStr.Length != 0)
                {
                    m_CompoudItems[i].IcomName = iconStr[0];
                }
                else
                {
                    m_CompoudItems[i].IcomName = "";
                }

                m_CompoudItems[i].Count = m_Factory.Data.m_CompoudItems[i].itemCnt;

                m_CompoudItems[i].SliderValue = m_Factory.Data.m_CompoudItems[i].curTime / m_Factory.Data.m_CompoudItems[i].time;
                m_CompoudItems[i].ShowSlider  = true;
            }
            else
            {
                m_CompoudItems[i].IcomName    = "Null";
                m_CompoudItems[i].Count       = 0;
                m_CompoudItems[i].SliderValue = 0;
                m_CompoudItems[i].ShowSlider  = false;
            }
        }
    }
Beispiel #11
0
    /// <summary>
    /// Raises the substract button click event.
    /// </summary>
    void OnSubstractBtnClick(GameObject go)
    {
        if (!CSUtils.IsNumber(m_RightContent.countInput.text))
        {
            return;
        }

        int            count      = int.Parse(m_RightContent.countInput.text);
        UIGraphControl graph_ctrl = m_MiddleContent.graphCtrl;

        if (graph_ctrl.rootNode == null)
        {
            return;
        }
        if (count > graph_ctrl.rootNode.ms.m_productItemCount)
        {
            count -= graph_ctrl.rootNode.ms.m_productItemCount;
        }
        this.UpdateInputCount(count);
    }
Beispiel #12
0
    // ---------------------------------
    // Call Back
    // ---------------------------------

    /// <summary>
    /// Raises the count input changed event.
    /// </summary>
    //	void OnCountInputSubmit(string text)
    //	{
    //
    //	}

    void OnCountInputSelected(GameObject go, bool isSelect)
    {
        //lz-2016.08.12 当取消选中的时候更改值
        if (isSelect)
        {
            return;
        }
        int count = 1;

        if (CSUtils.IsNumber(m_RightContent.countInput.text))
        {
            count = int.Parse(m_RightContent.countInput.text);
        }
        UIGraphControl graph_ctrl = m_MiddleContent.graphCtrl;

        if (graph_ctrl.rootNode == null)
        {
            return;
        }

        //lz-2016.08.03 输入的数量限制在范围内
        count = Mathf.Clamp(count, graph_ctrl.rootNode.ms.m_productItemCount, graph_ctrl.GetMaxCount());
        this.UpdateInputCount(count, false);
    }
Beispiel #13
0
    public static List <ItemIdCount> ResolveItemsToProcess(List <ItemIdCount> itemsNeedToGet, CSAssembly core = null, CSFactory factory = null)
    {
        List <ItemIdCount> resourceItems  = new List <ItemIdCount> ();
        List <ItemIdCount> ItemsOwnRecord = new List <ItemIdCount> ();

        foreach (ItemIdCount iic in itemsNeedToGet)
        {
            if (CSProcessing.CanProcessItem(iic.protoId))
            {
                resourceItems.Add(iic);
                continue;
            }
            List <ItemIdCount> needReplicate = new List <ItemIdCount> ();
            needReplicate.Add(iic);
            do
            {
                List <ItemIdCount> tempNeed = new List <ItemIdCount> ();
                tempNeed.AddRange(needReplicate);
                foreach (ItemIdCount tempIic in tempNeed)
                {
                    Replicator.KnownFormula[] msList = UIGraphControl.GetReplicator().GetKnowFormulasByProductItemId(tempIic.protoId);
                    if (msList == null || msList.Length == 0)
                    {
                        needReplicate.Remove(tempIic);
                        //Debug.LogError("can't get "+tempIic.protoId+"for colony");
                        continue;
                    }
                    //--to do: temp_ only use script 01
                    Replicator.Formula ms = Replicator.Formula.Mgr.Instance.Find(msList[0].id);
                    foreach (Replicator.Formula.Material mt in ms.materials)
                    {
                        int needCount = mt.itemCount * Mathf.CeilToInt(tempIic.count * 1.0f / ms.m_productItemCount);
                        if (core != null)
                        {
                            int ownMaterialCount = CSUtils.GetItemCountFromAllStorage(mt.itemId, core);
                            if (factory != null)
                            {
                                ownMaterialCount += factory.GetAllCompoundItemCount(mt.itemId);
                            }

                            ItemIdCount ownRecord = ItemsOwnRecord.Find(it => it.protoId == mt.itemId);
                            if (ownMaterialCount > 0)
                            {
                                if (ownRecord == null || ownRecord.count < ownMaterialCount)
                                {
                                    int leftRecordCount = 0;
                                    if (ownRecord == null)
                                    {
                                        leftRecordCount = ownMaterialCount;
                                    }
                                    else
                                    {
                                        leftRecordCount = ownMaterialCount - ownRecord.count;
                                    }
                                    int addRecordCount = 0;
                                    if (needCount > leftRecordCount)
                                    {
                                        needCount     -= leftRecordCount;
                                        addRecordCount = leftRecordCount;
                                    }
                                    else
                                    {
                                        needCount      = 0;
                                        addRecordCount = needCount;
                                    }
                                    if (ownRecord == null)
                                    {
                                        ItemsOwnRecord.Add(new ItemIdCount(mt.itemId, addRecordCount));
                                    }
                                    else
                                    {
                                        ownRecord.count += addRecordCount;
                                    }
                                    if (needCount == 0)
                                    {
                                        continue;
                                    }
                                }
                            }
                        }

                        if (CSProcessing.CanProcessItem(mt.itemId))
                        {
                            CSUtils.AddItemIdCount(resourceItems, mt.itemId, needCount);
                        }
                        else
                        {
                            CSUtils.AddItemIdCount(needReplicate, mt.itemId, needCount);
                        }
                    }
                    needReplicate.Remove(tempIic);
                }
            }while(needReplicate.Count > 0);
        }

        return(resourceItems);
    }
Beispiel #14
0
    // ---------------------------------
    //  Func
    // ---------------------------------

    private bool ReDrawGraph(int itemID, int scirptIndex = 0)
    {
        if (FactoryReplicator == null)
        {
            return(false);
        }
        this.AddScriptItemData(itemID);
        if (!this.m_Formulas.ContainsKey(itemID) || scirptIndex >= this.m_Formulas[itemID].Count || scirptIndex < 0)
        {
            return(true);
        }

        UIGraphControl graph_ctrl = FactoryReplicator.m_MiddleContent.graphCtrl;

        if (m_RootType == ItemLabel.Root.ISO)
        {
            // Iso
        }
        else
        {
            if (itemID != -1)
            {
                //Pathea.Replicator.Formula ms = Pathea.Replicator.Formula.Mgr.Instance.FindByProductId(m_id);

                Pathea.Replicator.KnownFormula knownFornula = this.m_Formulas[itemID][scirptIndex];
                Pathea.Replicator.Formula      ms           = knownFornula.Get();
                ItemProto item = this.m_ItemDataList.Find(a => a.id == itemID);

                if (ms == null || item == null)
                {
                    return(false);
                }

                FactoryReplicator.ClearGraph();

                int level_v = 0;

                UIGraphNode root = graph_ctrl.AddGraphItem(level_v, null, ms, item.icon, "Icon");
                root.mTipCtrl.SetToolTipInfo(ListItemType.mItem, itemID);
                root.mCtrl.ItemClick += this.OnGraphItemClick;


                for (int j = 0; j < ms.materials.Count; j++)
                {
                    if (ms.materials[j].itemId != 0)
                    {
                        ItemProto item2   = ItemProto.GetItemData(ms.materials[j].itemId);
                        string[]  strico2 = item2.icon;

                        UIGraphNode node = graph_ctrl.AddGraphItem(level_v, root, null, strico2, "Icon");
                        node.mTipCtrl.SetToolTipInfo(ListItemType.mItem, ms.materials[j].itemId);
                        node.mCtrl.ItemClick += this.OnGraphItemClick;
                    }
                }
                UpdateItemsTrackState(ms);
            }
        }
        //		graph_ctrl.DrawGraph();
        FactoryReplicator.DrawGraph();
        return(true);
    }
Beispiel #15
0
    void OnCompoundBtnClick(GameObject go)
    {
        if (!GameConfig.IsMultiMode)
        {
            UIGraphControl graph_ctrl = FactoryReplicator.m_MiddleContent.graphCtrl;

            if (!graph_ctrl.isCanCreate())
            {
                return;
            }

            int item_id  = graph_ctrl.rootNode.GetItemID();
            int item_num = graph_ctrl.rootNode.getCount;

            //lz-2016.09.26 时间使用份数计算的,所有要除掉productItemCount
            float time = graph_ctrl.rootNode.ms.timeNeed * item_num / graph_ctrl.rootNode.ms.m_productItemCount;

            if (RandomMapConfig.useSkillTree)
            {
                if (GameUI.Instance.mSkillWndCtrl._SkillMgr != null)
                {
                    time = GameUI.Instance.mSkillWndCtrl._SkillMgr.CheckReduceTime((float)time);
                }
            }

            if (m_Factory.SetCompoudItem(item_id, item_num, time))
            {
                for (int i = 0; i < graph_ctrl.mGraphItemList.Count; i++)
                {
                    if (graph_ctrl.mGraphItemList[i].mPartent == graph_ctrl.rootNode)
                    {
                        PeCreature.Instance.mainPlayer.GetCmpt <PlayerPackageCmpt>().package.Destroy(graph_ctrl.mGraphItemList[i].GetItemID(), graph_ctrl.mGraphItemList[i].needCount);
                    }
                }

                // Status bar
                CSUI_MainWndCtrl.ShowStatusBar(CSUtils.GetNoFormatString(UIMsgBoxInfo.mJoinCompoudingQueue.GetString(), ItemProto.GetItemData(item_id).GetName()));

                //....
                if (GameUI.Instance.mItemPackageCtrl != null)
                {
                    GameUI.Instance.mItemPackageCtrl.ResetItem();
                }
            }
        }
        else
        {
            UIGraphControl graph_ctrl = FactoryReplicator.m_MiddleContent.graphCtrl;

            if (!graph_ctrl.isCanCreate())
            {
                return;
            }
            int skill_id = graph_ctrl.rootNode.ms.id;
            //lz-2016.09.26 多人的接口需要的是productCount
            int productCount = graph_ctrl.rootNode.getCount / graph_ctrl.rootNode.ms.m_productItemCount;
            //to do--skillid,num
            if (m_Factory.Data.m_CompoudItems.Count >= CSFactory.c_CompoudItemCount)
            {
                return;
            }
            //lz-2016.09.26 多人的接口需要的是productCount
            m_Factory._ColonyObj._Network.FCT_Compoud(skill_id, productCount);
        }
    }