Exemplo n.º 1
0
        private void InitDishAll()
        {
            InitDishAll(mData);

            InitDishAll(oData);

            maxRequirementNum = dishAll.Count;

            for (int i = 0; i < dishAll.Count; i++)
            {
                IResultSDS sds = dishAll[i];

                if (sds.GetMaxNum() > 1)
                {
                    maxRequirementNum += sds.GetMaxNum() - 1;
                }
            }

            if (maxRequirementNum > CookConst.REQUIRE_NUM_MAX)
            {
                maxRequirementNum = CookConst.REQUIRE_NUM_MAX;
            }

            if (maxRequirementNum < CookConst.REQUIRE_NUM_MIN)
            {
                throw new Exception("GetRequire error!");
            }
        }
Exemplo n.º 2
0
        private DishRequirement GetRequire()
        {
            DishRequirement requirement = new DishRequirement();

            requirement.uid = GetRequirementUid();

            List <IResultSDS> list = new List <IResultSDS>(dishAll);

            int num = random.Get(CookConst.REQUIRE_NUM_MIN, maxRequirementNum + 1);

            DishResultBase[] resultArr = new DishResultBase[num];

            requirement.dishArr = resultArr;

            int optimizeNum = random.Get((int)(CookConst.OPTIMIZE_PROBABILITY_MAX * num) + 1);

            for (int i = 0; i < num; i++)
            {
                int index = random.Get(list.Count);

                IResultSDS sds = list[index];

                if (sds.GetMaxNum() > 1)
                {
                    int oldNum = 1;

                    for (int m = 0; m < i; m++)
                    {
                        DishResultBase tmpResult = resultArr[m];

                        if (tmpResult.sds == sds)
                        {
                            oldNum++;
                        }
                    }

                    if (oldNum == sds.GetMaxNum())
                    {
                        list.RemoveAt(index);
                    }
                }
                else
                {
                    list.RemoveAt(index);
                }

                bool isOptimize = i < optimizeNum;

                DishResultBase result = new DishResultBase();

                result.sds = sds;

                result.isOptimized = isOptimize;

                resultArr[i] = result;
            }

            return(requirement);
        }
Exemplo n.º 3
0
        internal virtual void FromBytes(BinaryReader _br)
        {
            int id = _br.ReadInt32();

            sds = CookMain.getResultData(id);

            isOptimized = _br.ReadBoolean();
        }