Types/IconSpecification: Difference between revisions

From Official Factorio Wiki
Jump to navigation Jump to search
(Added examples)
(Updated styling of prototype doc migration note)
 
(11 intermediate revisions by 4 users not shown)
Line 1: Line 1:
<div class="stub"><p>'''The prototype docs have moved to a new website with an improved format.''' This documentation can now be found here: [https://lua-api.factorio.com/latest/index-prototype.html https://lua-api.factorio.com/latest/index-prototype.html]
</p><p>This wiki page is no longer updated and '''will be removed at some point in the future''', so please update your browser bookmarks or other links that sent you here. If you'd like to contribute to the new docs, you can leave your feedback [https://forums.factorio.com/viewforum.php?f=233 on the forums].</p></div>
== Basics ==
== Basics ==
Specifies the icon of an entity/item/technology/recipe etc. The properties are specified directly in the prototype, not in another sub-property.
Specifies the icon of an entity/item/technology/recipe etc. The properties are specified directly in the prototype, not in another sub-property.


Either <code>icons</code> and optionally <code>icon_size</code>, or both <code>icon</code> and <code>icon_size</code> have to be specified.
Either <code>icons</code> and optionally <code>icon_size</code>, or both <code>icon</code> and <code>icon_size</code> have to be specified. If both <code>icons</code> and <code>icon</code> are defined, <code>icon</code> is ignored.
== Prototype properties: Option 1 ==
== Prototype properties: Option 1 ==
=== icons ===
=== icons ===
'''Type''': [[Types/table]] of [[Types/IconData]]
'''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. See [[Types/IconData#Notes]] for further notes on icon layering and its behaviour.


=== icon_size ===
=== icon_size ===
Line 18: Line 24:


'''Default''': 0
'''Default''': 0
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), 64x64@(128,0), 32x32@(196,0) is 3 mipmaps.<br>See also [https://factorio.com/blog/post/fff-291 Factorio Friday Facts #291] about the visual effects of icon mipmaps.


== Prototype properties: Option 2 ==
== Prototype properties: Option 2 ==
Line 24: Line 32:


Path to the icon file.
Path to the icon file.
=== icon_size ===
=== icon_size ===
'''Type''': [[Types/SpriteSizeType]]
'''Type''': [[Types/SpriteSizeType]]


Mandatory. The size of the square icon, in pixels, e.g. 32 for a 32px by 32px icon.
Mandatory. The size of the square icon, in pixels, e.g. 32 for a 32px by 32px icon.
=== icon_mipmaps ===
'''Type''': [[Types/uint8]]
'''Default''': 0
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), 64x64@(128,0), 32x32@(196,0) is 3 mipmaps.<br>See also [https://factorio.com/blog/post/fff-291 Factorio Friday Facts #291] about the visual effects of icon mipmaps.


== Examples ==
== Examples ==
Line 76: Line 92:
   }
   }
}</syntaxhighlight>
}</syntaxhighlight>
{{Prototype property type usage|{{FULLPAGENAME}}}}

Latest revision as of 10:42, 21 September 2023

The prototype docs have moved to a new website with an improved format. This documentation can now be found here: https://lua-api.factorio.com/latest/index-prototype.html

This wiki page is no longer updated and will be removed at some point in the future, so please update your browser bookmarks or other links that sent you here. If you'd like to contribute to the new docs, you can leave your feedback on the forums.


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

Can't be an empty table. See Types/IconData#Notes for further notes on icon layering and its behaviour.

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

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), 64x64@(128,0), 32x32@(196,0) is 3 mipmaps.
See also Factorio Friday Facts #291 about the visual effects of icon mipmaps.

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

Default: 0

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), 64x64@(128,0), 32x32@(196,0) is 3 mipmaps.
See also Factorio Friday Facts #291 about the visual effects of icon mipmaps.

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

Prototype properties that use this type