Merge remote-tracking branch 'origin/feat/inport-props' into feat/craft-discovery

# Conflicts:
#	Assets/External/Animated PBR Chest Demo/Materials/WoodChest.mat
#	Packages/com.distantlands.cozy.core/Content/Integration/Import for BiRP.unitypackage.meta
#	Packages/com.distantlands.cozy.core/Content/Integration/Import for HDRP.unitypackage.meta
#	Packages/com.distantlands.cozy.core/Content/Integration/Import for URP.unitypackage.meta
This commit is contained in:
2026-07-25 19:42:26 +02:00
954 changed files with 999772 additions and 26193 deletions
@@ -13,8 +13,8 @@ namespace Ashwild.EditorTools
/// editor IS the recipe equation: a row of interactive ingredient cards ("+"-joined) leading to
/// "=" and the result card. Each card's icon opens an item picker to set/change the item, a
/// /+ stepper adjusts its quantity, and ingredient cards carry a remove button; a dashed "+" tile
/// appends a new ingredient. A compact name field sits above it. All edits write straight to the
/// asset and repaint the strip.
/// appends a new ingredient. A compact name field sits above it, and a station card below states
/// where the recipe can be crafted. All edits write straight to the asset and repaint the strip.
/// </summary>
public class RecipeEditorView
{
@@ -51,6 +51,7 @@ namespace Ashwild.EditorTools
Root = new VisualElement();
Root.Add(BuildNameField());
Root.Add(BuildEquation());
Root.Add(BuildStationCard());
Root.Add(BuildPickerProxy());
RefreshEquation();
@@ -76,6 +77,28 @@ namespace Ashwild.EditorTools
return row;
}
/// <summary>
/// Builds the card stating where the recipe can be crafted. The hint spells out the meaning of
/// None, which reads as "no station" but actually means "craftable everywhere — bare hands and
/// every station alike"; any other value restricts the recipe to that station only.
/// Changing it refreshes the list row, whose tag shows the station.
/// </summary>
private VisualElement BuildStationCard()
{
VisualElement card = AshwildUI.Card("Station");
EnumField stationField = new EnumField("Crafted On", recipe.RequiredStation);
stationField.BindProperty(so.FindProperty("requiredStation"));
stationField.RegisterValueChangedCallback(_ => onMetaChanged?.Invoke());
card.Add(stationField);
Label hint = new Label("None = craftable by hand and on every station.");
hint.AddToClassList("ash-card__hint");
card.Add(hint);
return card;
}
#endregion
#region Equation