예제 #1
0
    public int GetMaxCount()
    {
        //lz-2016.10.13 错误 #3912 空对象
        if (null == rootNode || null == rootNode.ms)
        {
            return(1);
        }

        Pathea.Replicator replicator = GetReplicator();
        if (null == replicator)
        {
            return(rootNode.ms.m_productItemCount);
        }

        //lz-2016.08.10 MaxProductCount材料最多可以支持造多少组Product,这里还要乘上这组Product的数量
        int count = replicator.MaxProductCount(rootNode.ms.id) * rootNode.ms.m_productItemCount;

        int stackNum = ItemAsset.ItemProto.GetStackMax(rootNode.GetItemID());

        //lz-2016.08.03 蒲及说如果合成的物品堆叠数为1限制最大数量为一个常数个
        if (stackNum == 1)
        {
            count = Mathf.Min(count, ColonyConst.FACTORY_COMPOUND_GRID_COUNT);
        }
        else
        {
            //lz-2016.08.03 堆叠数大于1的限制最多制造数为 一个常数个*堆叠数
            count = Mathf.Min(count, ColonyConst.FACTORY_COMPOUND_GRID_COUNT * stackNum);
        }

        return(0 == count ? 1 : count);
    }
예제 #2
0
    public void SetGraphCount(int rootNodecount)
    {
        Pathea.Replicator r = GetReplicator();
        if (null == r)
        {
            return;
        }

        int k = rootNodecount / rootNode.ms.m_productItemCount;

        rootNode.getCount = rootNodecount;

        int index = 0;

        for (int i = 0; i < mGraphItemList.Count; i++)
        {
            if (mGraphItemList[i].mPartent == rootNode)
            {
                mGraphItemList[i].needCount = rootNode.ms.materials[index].itemCount * k;
                index++;
            }
            mGraphItemList[i].bagCount = r.GetItemCount(mGraphItemList[i].GetItemID());
        }
        UpdateGraphCount();

        //lz-2018.01.05 如果在道具追踪列表,数量改变的时候更新追踪数量
        if (GameUI.Instance && GameUI.Instance.mItemsTrackWnd.ContainsScript(rootNode.ms.id))
        {
            GameUI.Instance.mItemsTrackWnd.UpdateOrAddScript(rootNode.ms, k);
        }
    }
예제 #3
0
    // ---------------------------------
    //  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);
                }
            }
        }
    }
예제 #4
0
    //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();
    }
예제 #5
0
    void UpdateGraphNodeCount()
    {
        Pathea.Replicator r = GetReplicator();
        if (null == r)
        {
            return;
        }

        for (int i = 0; i < mGraphItemList.Count; i++)
        {
            int bagCount = r.GetItemCount(mGraphItemList[i].GetItemID());
            mGraphItemList[i].bagCount = bagCount;
            mGraphItemList[i].mCtrl.SetCount(mGraphItemList[i].needCount, mGraphItemList[i].bagCount, mGraphItemList[i].getCount);
        }
    }
예제 #6
0
    public int GetMinCount()
    {
        //lz-2016.10.16 错误 #4460  空对象
        if (null == rootNode || null == rootNode.ms)
        {
            return(1);
        }

        Pathea.Replicator replicator = GetReplicator();
        if (null == replicator)
        {
            return(rootNode.ms.m_productItemCount);
        }

        int count = replicator.MinProductCount(rootNode.ms.id);

        return((0 == count ? 1 : count) * rootNode.ms.m_productItemCount);
    }
예제 #7
0
    public bool isCanCreate( )
    {
        if (mGraphItemList.Count == 0)
        {
            return(false);
        }

        Pathea.Replicator r = GetReplicator();
        if (null == r)
        {
            return(false);
        }

        Pathea.Replicator.Formula formula = Pathea.Replicator.Formula.Mgr.Instance.Find(rootNode.ms.id);
        if (null == formula)
        {
            return(false);
        }

        ItemAsset.ItemProto proto = ItemAsset.ItemProto.GetItemData(formula.productItemId);
        if (proto != null)
        {
            if (!GameUI.Instance.mSkillWndCtrl._SkillMgr.CheckUnlockProductItemLevel(proto.level))
            {
                return(false);
            }
            if (!GameUI.Instance.mSkillWndCtrl._SkillMgr.CheckUnlockProductItemType(proto.itemClassId))
            {
                return(false);
            }
        }
        else
        {
            return(false);
        }

        if (r.MaxProductCount(rootNode.ms.id) < (rootNode.getCount / rootNode.ms.m_productItemCount))
        {
            return(false);
        }
        return(true);
    }
예제 #8
0
    void GetCompoundItem()
    {
        Pathea.Replicator r = replicator;
        // add root item and delete need item

        if (!r.HasEnoughPackage(mGraphCtrl.rootNode.GetItemID(), mGraphCtrl.rootNode.getCount))
        {
            IsCompounding = false;
            //ProgressCount = 0;
            CompoundFixedTimeCount      = 0;
            mCompoundSlider.sliderValue = 0;

            MessageBox_N.ShowOkBox(PELocalization.GetString(8000050));
            return;
        }


        if (mGraphCtrl.isCanCreate())
        {
            if (GameConfig.IsMultiMode == true)
            {
                int num = mGraphCtrl.rootNode.getCount / mGraphCtrl.rootNode.ms.m_productItemCount;
                PlayerNetwork.mainPlayer.RequestMergeSkill(mGraphCtrl.rootNode.ms.id, num);
            }
            else
            {
                r.Run(mGraphCtrl.rootNode.ms.id, mGraphCtrl.rootNode.getCount / mGraphCtrl.rootNode.ms.m_productItemCount);
            }

            GameUI.Instance.mItemPackageCtrl.ResetItem();
            for (int i = 0; i < m_CurScriptMatIDs.Count; i++)
            {
                MissionManager.Instance.ProcessCollectMissionByID(m_CurScriptMatIDs[i]);
            }
        }


        IsCompounding = false;
        //ProgressCount = 0;
        CompoundFixedTimeCount      = 0;
        mCompoundSlider.sliderValue = 0;
    }
예제 #9
0
        bool LearnReplicatorFormula(ItemAsset.ReplicatorFormula formula, bool bLearn = true)
        {
            if (null == formula || formula.formulaId == null || formula.formulaId.Length <= 0)
            {
                return(false);
            }

            ReplicatorCmpt replicatorCmpt = Entity.GetCmpt <ReplicatorCmpt>();

            if (null == replicatorCmpt)
            {
                return(false);
            }

            Replicator replicator = replicatorCmpt.replicator;

            if (null == replicator)
            {
                return(false);
            }

            if (bLearn)
            {
                bool ret = false;
                for (int i = 0; i < formula.formulaId.Length; i++)
                {
                    if (replicator.AddFormula(formula.formulaId [i]))
                    {
                        ret = true;
                    }
                }
                if (ret == false)
                {
                    new PeTipMsg(PELocalization.GetString(4000001), PeTipMsg.EMsgLevel.Warning);
                    return(ret);
                }
            }

            LearnEffectAndSound();
            return(true);
        }
예제 #10
0
    private void BtnCompoundOnClick()
    {
        if (mGraphCtrl.rootNode == null)
        {
            return;
        }

        Pathea.Replicator r = replicator;
        if (null == r)
        {
            return;
        }

        if (IsCompounding)
        {
            //lz-2016.09.09 如果在制造中就取消制造
            IsCompounding = !replicator.CancelReplicate(mGraphCtrl.rootNode.ms.id);
            return;
        }

        if (!r.HasEnoughPackage(mGraphCtrl.rootNode.GetItemID(), mGraphCtrl.rootNode.getCount))
        {
            MessageBox_N.ShowOkBox(PELocalization.GetString(8000050));
            return;
        }

        if (mGraphCtrl.isCanCreate())
        {
            CompoundFixedTimeCount = Convert.ToInt32(mGraphCtrl.rootNode.ms.timeNeed / 0.02);
            if (RandomMapConfig.useSkillTree)
            {
                if (GameUI.Instance.mSkillWndCtrl._SkillMgr != null)
                {
                    CompoundFixedTimeCount = (int)GameUI.Instance.mSkillWndCtrl._SkillMgr.CheckReduceTime((float)CompoundFixedTimeCount);
                }
            }
            replicator.StartReplicate(mGraphCtrl.rootNode.ms.id, mGraphCtrl.rootNode.getCount / mGraphCtrl.rootNode.ms.m_productItemCount);
            IsCompounding = true;
        }
    }
예제 #11
0
    //lz-2016.08.08 点击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 = replicator;
        if (null != r)
        {
            r.SetKnownFormulaFlag(knownFornula.id);
        }


        //颜色根据选的脚本改变
        List <GameObject> ListItems = m_LeftList.Gos;

        if (mListSelectedIndex >= 0 && mListSelectedIndex < ListItems.Count)
        {
            Pathea.Replicator.Formula formula = knownFornula.Get();
            bool  isInColony = (formula.workSpace != 0) ? true : false;
            Color textColor  = isInColony ? Color.red : Color.white;
            UICompoundWndListItem listItem = ListItems[mListSelectedIndex].GetComponent <UICompoundWndListItem>();
            listItem.SetTextColor(textColor);
        }

        //绘制当前选择的脚本和Item
        bool ok = ReDrawGraph(itemID, scriptIndex);

        if (ok)
        {
            AddGraphResetList(itemID);
            SetBottomInfo();
            QueryGridItems(itemID);
        }
    }
예제 #12
0
    private void QueryGridItems(int m_id)
    {
        mQureGridContentPos_x = 30;
        mQueryListFristIndex  = 0;

        mQureGridContent.transform.localPosition = mQueryGridPos;


        m_QueryFormula.Clear();
        Pathea.Replicator r = replicator;
        //lz-2016.10.20 避免数据错误报错
        if (null != r)
        {
            foreach (Pathea.Replicator.KnownFormula kf in r.knowFormulas)
            {
                if (null != kf)
                {
                    Pathea.Replicator.Formula f = kf.Get();
                    if (null != f && null != f.materials && f.materials.Count > 0)
                    {
                        for (int j = 0; j < f.materials.Count; j++)
                        {
                            if (f.materials[j].itemId == m_id)
                            {
                                m_QueryFormula.Add(f);
                                break;
                            }
                        }
                    }
                }
            }
        }

        m_QueryList.UpdateList(m_QueryFormula.Count, SetQueryListContent, ClearQueryListContent);
        UpdateQueryGridBtnState();
    }
예제 #13
0
 public ReplicatorCmpt()
 {
     replicator = new Replicator(this);
 }
예제 #14
0
    public bool _updateLeftList = true;//使更新不过于太频繁

    //log:lz-2016.04.12: 这里加一个参数为了搜索和切换类型分开
    public void UpdateLeftList(bool useSearch = false)
    {
        if (!_updateLeftList)
        {
            return;
        }

        _updateLeftList = false;

        mListSelectedIndex = -1;

        string queryText = mQueryInput.text;

        // replace some #
        queryText = queryText.Replace("*", "");
        queryText = queryText.Replace("$", "");
        queryText = queryText.Replace("(", "");
        queryText = queryText.Replace(")", "");
        queryText = queryText.Replace("@", "");
        queryText = queryText.Replace("^", "");
        queryText = queryText.Replace("[", "");
        queryText = queryText.Replace("]", "");
        //lz-2016.08.12 "\"增加字符过滤
        queryText = queryText.Replace("\\", "");
        //queryText = queryText.Replace(" ", "");

        mQueryInput.text = queryText;

        m_Formulas.Clear();
        m_ItemDataList.Clear();
        Pathea.Replicator r = replicator;

        Dictionary <ItemProto, List <Pathea.Replicator.KnownFormula> > itemDic = new Dictionary <ItemProto, List <Pathea.Replicator.KnownFormula> >();

        foreach (Pathea.Replicator.KnownFormula kf in r.knowFormulas)
        {
            if (kf == null)
            {
                continue;
            }

            Pathea.Replicator.Formula f = kf.Get();
            if (null == f)
            {
                continue;
            }

            ItemProto item = ItemProto.GetItemData(f.productItemId);
            if (item == null)
            {
                continue;
            }
            bool AddItem = false;
            if (mRootType == ItemLabel.Root.ISO)
            {
                // Iso
            }
            else if (mRootType == ItemLabel.Root.all || (mRootType == item.rootItemLabel && (mItemType == 0 || mItemType == item.itemLabel)))
            {
                if (useSearch)
                {
                    if (QueryItem(queryText, item.GetName()))
                    {
                        AddItem = true;
                    }
                }
                else
                {
                    AddItem = true;
                }
            }

            if (AddItem)
            {
                //lz-2016.08.09 这里要用Any()不能用Container()
                if (!itemDic.Keys.Any(a => a.id == item.id))
                {
                    itemDic.Add(item, new List <Replicator.KnownFormula>());
                }

                ItemProto itemKey = itemDic.Keys.First(a => a.id == item.id);
                if (!itemDic[itemKey].Any(a => a.id == kf.id))
                {
                    itemDic[itemKey].Add(kf);
                }
            }
        }

        //lz-2016.08.08根据Item的Sort字段来排序
        itemDic = itemDic.OrderBy(a => a.Key.sortLabel).ToDictionary(k => k.Key, v => v.Value);

        m_Formulas     = itemDic.ToDictionary(k => k.Key.id, v => v.Value);
        m_ItemDataList = itemDic.Keys.ToList();
        m_LeftList.UpdateList(m_ItemDataList.Count, SetLeftListContent, ClearLeftListContent);
        mListScrolBar.scrollValue = 0;
    }