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); } }
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); } }