Beispiel #1
0
        public override void OnInspectorGUI()
        {
            base.OnInspectorGUI();

            CombineManager_Example pTarget = target as CombineManager_Example;

            if (GUILayout.Button("Check Combine"))
            {
                pTarget.DoAwake_Force();
                pTarget.DoCheck_PossibleCombineRecipe();
                Debug.Log("Check Combine");
            }

            if (GUILayout.Button("Try Combine"))
            {
                pTarget.DoAwake_Force();
                pTarget.DoCombine(pTarget.eRecipeName_ForTest);
                Debug.Log("Try Combination");
            }
        }
Beispiel #2
0
        public IEnumerator CombineDataManager_UseCaseTest()
        {
            /// 1. 예시 조합 매니져<see cref="CombineManager_Example"/> 생성
            GameObject             pObjectManager  = new GameObject(nameof(CombineManager_Example));
            CombineManager_Example pManagerExample = pObjectManager.AddComponent <CombineManager_Example>();



            /// 2. 매니져에 레시피 데이터 등록
            pManagerExample.listRecipeData.Add(new CombineManager_Example.RecipeData_Example(CombineManager_Example.ERecipeKey.Cookie,
                                                                                             new CombineManager_Example.RequireCombineMaterialData(CombineManager_Example.EItemKey.Dough, 2),
                                                                                             new CombineManager_Example.RequireCombineMaterialData(CombineManager_Example.EItemKey.Water, 2),
                                                                                             new CombineManager_Example.RequireCombineMaterialData(CombineManager_Example.EItemKey.Fire, 1)));

            pManagerExample.listRecipeData.Add(new CombineManager_Example.RecipeData_Example(CombineManager_Example.ERecipeKey.RoastMeat,
                                                                                             new CombineManager_Example.RequireCombineMaterialData(CombineManager_Example.EItemKey.Beef, 2),
                                                                                             new CombineManager_Example.RequireCombineMaterialData(CombineManager_Example.EItemKey.Fire, 1)));

            pManagerExample.listRecipeData.Add(new CombineManager_Example.RecipeData_Example(CombineManager_Example.ERecipeKey.Stew,
                                                                                             new CombineManager_Example.RequireCombineMaterialData(CombineManager_Example.EItemKey.Beef, 2),
                                                                                             new CombineManager_Example.RequireCombineMaterialData(CombineManager_Example.EItemKey.Water, 2),
                                                                                             new CombineManager_Example.RequireCombineMaterialData(CombineManager_Example.EItemKey.Fire, 1)));

            pManagerExample.listRecipeData.Add(new CombineManager_Example.RecipeData_Example(CombineManager_Example.ERecipeKey.Stew,
                                                                                             new CombineManager_Example.RequireCombineMaterialData(CombineManager_Example.EItemKey.Fork, 2),
                                                                                             new CombineManager_Example.RequireCombineMaterialData(CombineManager_Example.EItemKey.Water, 2),
                                                                                             new CombineManager_Example.RequireCombineMaterialData(CombineManager_Example.EItemKey.Fire, 1)));

            pManagerExample.pDataManager.DoInit_CombineData(pManagerExample.listRecipeData.ToArray());



            /// 3. 조합 가능한 레시피 목록 출력 - 없음
            pManagerExample.listCombinationItem.Clear();
            pManagerExample.listCombinationItem.Add(new CombineManager_Example.CombinationItem_Example(CombineManager_Example.EItemKey.Beef, 1));
            pManagerExample.listCombinationItem.Add(new CombineManager_Example.CombinationItem_Example(CombineManager_Example.EItemKey.Water, 1));
            pManagerExample.listCombinationItem.Add(new CombineManager_Example.CombinationItem_Example(CombineManager_Example.EItemKey.Fire, 1));

            ICombineRecipe[] arrCombineRecipe = pManagerExample.DoCheck_PossibleCombineRecipe();
            Assert.AreEqual(arrCombineRecipe.Length, 0);



            /// 4. 조합 가능한 레시피 목록 출력 - 있음
            const int const_iHasMaterialCount = 5;

            pManagerExample.listCombinationItem.Clear();
            pManagerExample.listCombinationItem.Add(new CombineManager_Example.CombinationItem_Example(CombineManager_Example.EItemKey.Beef, const_iHasMaterialCount));
            pManagerExample.listCombinationItem.Add(new CombineManager_Example.CombinationItem_Example(CombineManager_Example.EItemKey.Water, const_iHasMaterialCount));
            pManagerExample.listCombinationItem.Add(new CombineManager_Example.CombinationItem_Example(CombineManager_Example.EItemKey.Fire, const_iHasMaterialCount));

            arrCombineRecipe = pManagerExample.DoCheck_PossibleCombineRecipe();
            Assert.AreEqual(arrCombineRecipe.Length, 2);



            /// 5. 조합 시도 - 실패
            bool bCombieResult = pManagerExample.DoCombine(CombineManager_Example.ERecipeKey.Cookie);

            Assert.IsFalse(bCombieResult);



            /// 6. 조합 시도 - 성공 - 한개만 가능한 케이스
            bCombieResult = pManagerExample.DoCombine(CombineManager_Example.ERecipeKey.RoastMeat);
            Assert.IsTrue(bCombieResult);

            List <ICombineRecipe> listRecipe = pManagerExample.pDataManager.GetRecipeList(CombineManager_Example.ERecipeKey.RoastMeat.ToString());

            CombineManager_Example.RecipeData_Example pRecipeData = listRecipe[0] as CombineManager_Example.RecipeData_Example;

            int iRequire_BeefCount, iBeefCount;

            GetItemCount(pManagerExample, pRecipeData, CombineManager_Example.EItemKey.Beef, out iRequire_BeefCount, out iBeefCount);
            Assert.AreEqual(const_iHasMaterialCount - iRequire_BeefCount, iBeefCount);

            int iRequire_FireCount, iFireCount;

            GetItemCount(pManagerExample, pRecipeData, CombineManager_Example.EItemKey.Fire, out iRequire_FireCount, out iFireCount);
            Assert.AreEqual(const_iHasMaterialCount - iRequire_FireCount, iFireCount);



            /// 7. 조합 시도 - 성공 - 여러개 가능한 케이스
            pManagerExample.listCombinationItem.Clear();
            pManagerExample.listCombinationItem.Add(new CombineManager_Example.CombinationItem_Example(CombineManager_Example.EItemKey.Beef, const_iHasMaterialCount));
            pManagerExample.listCombinationItem.Add(new CombineManager_Example.CombinationItem_Example(CombineManager_Example.EItemKey.Water, const_iHasMaterialCount));
            pManagerExample.listCombinationItem.Add(new CombineManager_Example.CombinationItem_Example(CombineManager_Example.EItemKey.Fire, const_iHasMaterialCount));

            bCombieResult = pManagerExample.DoCombine(CombineManager_Example.ERecipeKey.Stew);
            Assert.IsTrue(bCombieResult);

            listRecipe  = pManagerExample.pDataManager.GetRecipeList(CombineManager_Example.ERecipeKey.Stew.ToString());
            pRecipeData = listRecipe[0] as CombineManager_Example.RecipeData_Example;

            yield return(null);
        }
Beispiel #3
0
 private static void GetItemCount(CombineManager_Example pManagerExample, CombineManager_Example.RecipeData_Example pRecipeData, CombineManager_Example.EItemKey eItemKey, out int iRequireCount, out int iItemCount)
 {
     iRequireCount = pRecipeData.arrRecipeDecrease.Where(p => p.IRequireMaterialKey == eItemKey.ToString()).FirstOrDefault().iRequireCount;
     iItemCount    = pManagerExample.listCombinationItem.Where(p => p.strCombineMaterialKey == eItemKey.ToString()).FirstOrDefault().iItemCount;
 }