* frying pan start * fix data saving * Refactor cooking system and add localization support Refactored food data handling in the cooking system to use Visuals instead of FoodData on holders, improved food transfer logic, and added popups and examine messages for user feedback. Added English and Russian localization files for cooking examine and meal descriptions, and updated prototype files to increase plate solution volume and add a whitelist for the cooking furnace. * Refactor cooking system solution handling Removed Solution field from CP14FoodData and updated CP14SharedCookingSystem to use solution containers directly. Improved solution transfer, mixing, and overflow handling during cooking. Increased pan max volume from 30 to 100 in cooking_furnace.yml. * Improve cooking system trash handling and update food sprites Enhanced trash distribution in CP14SharedCookingSystem to randomly assign trash to plates, only adding all trash to the last plate. Updated meat_dish and salad prototypes to use new wooden plate sprites. Added wideAnimationRotation and DrainableSolution to cooking_furnace for improved functionality. * Remove unused usings and redundant comments in cooking components Cleaned up CP14 cooking-related components by removing unused using directives and empty XML comments. This improves code readability and maintainability. * Add tag-based cooking requirements and new meal recipes Introduces tag-based cooking requirement classes (TagRequired, TagBlocked, SolutionRequired) and updates the cooking system to support tag checks. Adds new tags for food items, updates food and meal prototypes to include relevant tags, and implements new meal recipes (Zellasian Breakfast, Monster Egg) with corresponding sprites and localization. Also refactors and renames some tag and structure prototype files for better organization. * Refactor and expand CP14 cooking recipes and tags Reworked meal recipes to use tag-based requirements, added new tags for food categorization (meat, cheese, vegetables, etc.), and removed hardcoded entity recipes for ham in cheese and stuffed potato. Updated and added new meal recipes (bread plate, ham in cheese, stuffed potato), localized their names and descriptions, and migrated/added corresponding sprites. Deprecated SolutionRequired requirement, cleaned up unused tags, and improved TagRequired/TagBlocked logic. Updated prototype files to use new tags and added missing tags to food entities. * Refactor and expand green salad recipes and assets Replaces the old green salad entity and workbench recipe with new cooking recipes for green salad and green salad with meat. Updates English and Russian localization, moves and adds new salad textures, and removes obsolete salad assets and trading request. * mashed potatoes * Add mashed potatoes with herbs meal Introduced a new 'mashed potatoes with herbs' meal, including English and Russian localization, recipe definition, and associated sprite. Updated the texture metadata and added the new image asset. * Update dye.yml * Fix frying pan item size and update plate recipe Moved the 'size: Ginormous' property to the correct component in frying_pen.yml. Renamed the plate recipe and result from 'CP14Plate' to 'CP14PlateWooden' in misc.yml for clarity. * Update meals.yml * Update migration.yml * fixes * fix heating food sounds * Nyranu temperature transmission * Update plate.yml * Cooking DoAfter works * burning logic * cooking more work * auto transform transformable * Update CP14SharedCookingSystem.DoAfter.cs * cool burning visuals! * Add MIT license headers to cooking system files Added sublicensing notice and MIT license header to all files in the CP14 cooking system. Also made minor code cleanups, such as removing unnecessary default initializations and improving XML documentation for clarity. * constant heating required * cooking visuals improve! * sandwiches with processed cheese + reagent burnt fuckuping * inhand pan sprites + FIRE fuckup * crafting & buying pan * fix predicting * random food spawner + chef closet * mapping update * Update frying_pen.yml * move WIP to blacksmith lol
90 lines
2.8 KiB
C#
90 lines
2.8 KiB
C#
/*
|
|
* This file is sublicensed under MIT License
|
|
* https://github.com/space-wizards/space-station-14/blob/master/LICENSE.TXT
|
|
*/
|
|
|
|
using System.Linq;
|
|
using Content.Server.Temperature.Systems;
|
|
using Content.Shared._CP14.Cooking;
|
|
using Content.Shared._CP14.Cooking.Components;
|
|
using Content.Shared._CP14.Temperature;
|
|
using Content.Shared.Random.Helpers;
|
|
using Robust.Shared.Random;
|
|
|
|
namespace Content.Server._CP14.Cooking;
|
|
|
|
public sealed class CP14CookingSystem : CP14SharedCookingSystem
|
|
{
|
|
[Dependency] private readonly TemperatureSystem _temperature = default!;
|
|
|
|
public override void Initialize()
|
|
{
|
|
base.Initialize();
|
|
|
|
SubscribeLocalEvent<CP14RandomFoodDataComponent, MapInitEvent>(OnRandomFoodMapInit);
|
|
}
|
|
|
|
private void OnRandomFoodMapInit(Entity<CP14RandomFoodDataComponent> ent, ref MapInitEvent args)
|
|
{
|
|
if (!TryComp<CP14FoodHolderComponent>(ent, out var holder))
|
|
return;
|
|
|
|
if (!_random.Prob(ent.Comp.Prob))
|
|
return;
|
|
|
|
var randomFood = _random.Pick(OrderedRecipes.Where(r => r.FoodType == holder.FoodType).ToList());
|
|
|
|
//Name and Description
|
|
if (randomFood.FoodData.Name is not null)
|
|
_metaData.SetEntityName(ent, Loc.GetString(randomFood.FoodData.Name));
|
|
if (randomFood.FoodData.Desc is not null)
|
|
_metaData.SetEntityDescription(ent, Loc.GetString(randomFood.FoodData.Desc));
|
|
|
|
//Visuals
|
|
holder.Visuals = randomFood.FoodData.Visuals;
|
|
Dirty(ent.Owner, holder);
|
|
}
|
|
|
|
protected override void OnCookBurned(Entity<CP14FoodCookerComponent> ent, ref CP14BurningDoAfter args)
|
|
{
|
|
base.OnCookBurned(ent, ref args);
|
|
|
|
if (_random.Prob(ent.Comp.BurntAdditionalSpawnProb))
|
|
Spawn(ent.Comp.BurntAdditionalSpawn, Transform(ent).Coordinates);
|
|
}
|
|
|
|
protected override void OnCookFinished(Entity<CP14FoodCookerComponent> ent, ref CP14CookingDoAfter args)
|
|
{
|
|
base.OnCookFinished(ent, ref args);
|
|
|
|
if (args.Cancelled || args.Handled)
|
|
return;
|
|
|
|
TryTransformAll(ent);
|
|
}
|
|
|
|
private void TryTransformAll(Entity<CP14FoodCookerComponent> ent)
|
|
{
|
|
if (!_container.TryGetContainer(ent, ent.Comp.ContainerId, out var container))
|
|
return;
|
|
|
|
var containedEntities = container.ContainedEntities.ToList();
|
|
|
|
foreach (var contained in containedEntities)
|
|
{
|
|
if (!TryComp<CP14TemperatureTransformationComponent>(contained, out var transformable))
|
|
continue;
|
|
|
|
if (!transformable.AutoTransformOnCooked)
|
|
continue;
|
|
|
|
if (transformable.Entries.Count == 0)
|
|
continue;
|
|
|
|
var entry = transformable.Entries[0];
|
|
|
|
_temperature.ForceChangeTemperature(contained, entry.TemperatureRange.X);
|
|
}
|
|
}
|
|
}
|