Types/IconSpecification: Difference between revisions

From Official Factorio Wiki
Jump to navigation Jump to search
(→‎icon_mipmaps: description)
m (Add note about limitations in layered icon definitions.)
Line 8: Line 8:


The rendering order of the individual icons follows the table (array) order: Later added icons (higher index) get drawn on top of previously added icons (lower index). Can't be an empty table.
The rendering order of the individual icons follows the table (array) order: Later added icons (higher index) get drawn on top of previously added icons (lower index). Can't be an empty table.
'''Note:''' Icon layering was mainly designed for the barrel recipes and might not handle all modded instances correctly. Depending on the use-case it might be benifitial to use non-layered icons. For reference see [https://forums.factorio.com/69221 here] and [https://forums.factorio.com/98732 here].


=== icon_size ===
=== icon_size ===

Revision as of 07:14, 17 October 2022

Basics

Specifies the icon of an entity/item/technology/recipe etc. The properties are specified directly in the prototype, not in another sub-property.

Either icons and optionally icon_size, or both icon and icon_size have to be specified. If both icons and icon are defined, icon is ignored.

Prototype properties: Option 1

icons

Type: Types/table of Types/IconData

The rendering order of the individual icons follows the table (array) order: Later added icons (higher index) get drawn on top of previously added icons (lower index). Can't be an empty table.

Note: Icon layering was mainly designed for the barrel recipes and might not handle all modded instances correctly. Depending on the use-case it might be benifitial to use non-layered icons. For reference see here and here.

icon_size

Type: Types/SpriteSizeType

Mandatory if icon_size is not specified inside all instances of Types/IconData inside icons. The size of the square icon, in pixels, e.g. 32 for a 32px by 32px icon.

icon_mipmaps

Type: Types/uint8

Default: 0

Prototype properties: Option 2

icon

Type: Types/FileName

Path to the icon file.

icon_size

Type: Types/SpriteSizeType

Mandatory. The size of the square icon, in pixels, e.g. 32 for a 32px by 32px icon.

icon_mipmaps

Type: Types/uint8

Icons of reduced size will be used at decreased scale. 0 or 1 mipmaps is a single image. The file must contain 1/2 size images with a geometric-ratio, for each mipmap level. Each next level is aligned to the upper-left corner. Example sequence: 128x128@(0,0), 64,64@(128,0), 32x32@(196,0) is 3 mipmaps.

Default: 0

Examples

Simple icon with size:

  icon = "__base__/graphics/icons/fluid/heavy-oil.png",
  icon_size = 32,

Layered icon, size defined outside of layers:

icon_size = 32,
icons = {
  {
    icon = "__base__/graphics/icons/fluid/barreling/empty-barrel.png"
  },
  {
    icon = "__base__/graphics/icons/fluid/barreling/barrel-side-mask.png",
    tint = { a = 0.75,  b = 0, g = 0, r = 0 }
  },
  {
    icon = "__base__/graphics/icons/fluid/barreling/barrel-hoop-top-mask.png",
    tint = { a = 0.75, b = 0.5, g = 0.5, r = 0.5 }
  }
}

Layered icon, size defined per layer:

icons = {
  {
    icon = "__base__/graphics/icons/fluid/barreling/barrel-empty.png",
    icon_size = 32
  },
  {
    icon = "__base__/graphics/icons/fluid/barreling/barrel-empty-side-mask.png",
    icon_size = 32,
    tint = { a = 0.75, b = 0, g = 0, r = 0 }
  },
  {
    icon = "__base__/graphics/icons/fluid/barreling/barrel-empty-top-mask.png",
    icon_size = 32,
    tint = { a = 0.75, b = 0.5, g = 0.5, r = 0.5 }
  },
  {
    icon = "__base__/graphics/icons/fluid/crude-oil.png",
    icon_size = 32,
    scale = 0.5,
    shift = {7, 8 }
  }
}