#pragma once #include "CoreMinimal.h" #include "UI/NeuStyle.h" /** * Item icons drawn in code from primitives (DESIGN_UE.md section 8.5, "Icons are drawn in code ... as in v2 itemIcon"): * ore = pentagon, refined = stacked bars, tank = capsule, tool = disc, kit = isometric box, bio = droplet, each with a * two-letter glyph. No texture exists. The table below maps the item ids of section 6.1 to a shape, a colour and a glyph; * an id it does not know gets a plain tile with the first two letters of the id. */ enum class ENeuIconShape : uint8 { Ore, Refined, Tank, Tool, Kit, Bio, Weapon, Box, Use, Generic }; struct FNeuIconStyle { ENeuIconShape Shape = ENeuIconShape::Generic; FLinearColor Color = FLinearColor::White; FString Glyph; }; namespace Neu { /** Shape, colour and glyph for an item id (ferrite, cobalt, pearl, ingot, wafer, lattice, tools, tanks, fauna, kit_*, ...). */ THEDESCENT_API FNeuIconStyle IconStyleFor(FName ItemId); /** Draws the icon of ItemId inside the square of side Size centred on Center. bDim fades it (greyed slots). */ THEDESCENT_API void DrawItemIcon(FNeuPainter& P, FVector2f Center, float Size, FName ItemId, bool bDim = false); /** Ore colours of the cargo display and the icons (section 4.6): ferrite, cobalt, pearl. */ THEDESCENT_API FLinearColor OreColor(FName OreId); THEDESCENT_API FString OreSymbol(FName OreId); }