예제 #1
0
파일: Block.cs 프로젝트: xulouzhe/THUAI3.0
        public override void UseCooker(int TeamNumber, Talent t)
        {
            string Material = "";

            SortedSet <DishType> dishTypeSet = new SortedSet <DishType>();
            bool isSpicedPot = false;

            if (WorldMap.Grid[(int)Position.x, (int)Position.y].ContainsType(typeof(Tool)))
            {
                foreach (Tool GameObject in WorldMap.Grid[(int)Position.x, (int)Position.y].GetObjects(typeof(Tool)))
                {
                    if (GameObject.Tool == ToolType.Condiment)
                    {
                        GameObject.Parent = null;
                        isSpicedPot       = true;
                        break;
                    }
                }
            }
            if (WorldMap.Grid[(int)Position.x, (int)Position.y].ContainsType(typeof(Dish)))
            {
                foreach (Dish GameObject in WorldMap.Grid[(int)Position.x, (int)Position.y].GetObjects(typeof(Dish)))
                {
                    dishTypeSet.Add(GameObject.Dish);
                    GameObject.Parent = null;
                }
            }
            if (dishTypeSet.Count == 0)
            {
                return;
            }
            if (!isSpicedPot)
            {
                isCooking     = true;
                ProtectedTeam = TeamNumber;
                Dish          = DishType.DarkDish;//未煮熟之前都是黑暗料理
                foreach (var dishType in dishTypeSet)
                {
                    Material += dishType.ToString();
                }
                cookingResult = (string)Configs["CookingTable"][Material];
                if (cookingResult == null)
                {
                    cookingResult = "DarkDish";
                }
                CookingTimer.Change((int)Configs[cookingResult]["CookTime"], 0);
                ProtectTimer.Change((int)(1.25 * (double)Configs[cookingResult]["CookTime"]), 0);
            }
            else
            {
                int score = 0;
                foreach (var dishType in dishTypeSet)
                {
                    score += (int)Configs[dishType.ToString()]["Score"];
                }
                if (score < 60)
                {
                    return;
                }
                isCooking     = true;
                ProtectedTeam = TeamNumber;
                Dish          = DishType.DarkDish;
                cookingResult = "SpicedPot_" + (score / 20).ToString();
                CookingTimer.Change((int)Configs["SpicedPot"]["CookTime"], 0);
                ProtectTimer.Change((int)(1.25 * (double)Configs["SpicedPot"]["CookTime"]), 0);
            }
        }
예제 #2
0
        public override void UseCooker(int TeamNumber, Talent t)
        {
            if (isCooking)
            {
                return;
            }
            string Material = "";

            SortedSet <DishType> dishTypeSet = new SortedSet <DishType>();
            bool isSpicedPot = false;
            var  toolObjects = WorldMap.Grid[(int)Position.x, (int)Position.y].GetObjects(typeof(Tool));

            if (toolObjects != null)
            {
                foreach (Tool tool in toolObjects)
                {
                    if (tool.Tool == ToolType.Condiment)
                    {
                        tool.Parent = null;
                        isSpicedPot = true;
                        break;
                    }
                }
            }
            var dishObjects = WorldMap.Grid[(int)Position.x, (int)Position.y].GetObjects(typeof(Dish));

            if (dishObjects != null)
            {
                foreach (Dish dish in dishObjects)
                {
                    dishTypeSet.Add(dish.Dish);
                    dish.Parent = null;
                }
            }
            if (dishTypeSet.Count == 0)
            {
                return;
            }
            if (!isSpicedPot)
            {
                isCooking     = true;
                ProtectedTeam = TeamNumber;
                Dish          = DishType.CookingDish;//未煮熟
                foreach (var dishType in dishTypeSet)
                {
                    Material += dishType.ToString();
                }
                cookingResult = (string)Configs("CookingTable", Material);
                if (cookingResult == null)
                {
                    cookingResult = "DarkDish";
                }
                CookingTimer.Change((int)Configs(cookingResult, "CookTime"), 0);
                ProtectTimer.Change((int)(1.25 * (double)Configs(cookingResult, "CookTime")), 0);
            }
            else
            {
                int score = 0;
                foreach (var dishType in dishTypeSet)
                {
                    if ((int)dishType <= (int)DishType.CookedRice)
                    {
                        score += (int)Configs(dishType.ToString(), "Score");
                    }
                }
                if (score < 60)
                {
                    return;
                }
                isCooking     = true;
                ProtectedTeam = TeamNumber;
                Dish          = DishType.CookingDish;
                if (t != Talent.Cook && score > 80)
                {
                    score = 80;
                }
                cookingResult = "SpicedPot" + (score / 20).ToString();
                CookingTimer.Change((int)Configs("SpicedPot", "CookTime"), 0);
                ProtectTimer.Change((int)(1.25 * (double)Configs("SpicedPot", "CookTime")), 0);
            }
        }