Types/Order: Difference between revisions
(removed lang template (these pages should not be translated)) |
m (→Advanced: grammar) |
||
(6 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
The order property is a simple [[Types/string|string]]. When the game | __NOTOC__ | ||
== Basic == | |||
The order property is a '''simple''' [[Types/string|string]]. When the game needs to sort prototypes, it looks at their order properties and sorts those alphabetically. A prototype with an order string of "a" will be listed before other prototypes with order string "b" or "c". The "-" or "[]" structures that can be found in vanilla order strings ''do not'' have any special meaning. | |||
== Advanced == | |||
When the game compares two prototypes (of the same type) if the order strings aren't equal they're [[:Wikipedia:Lexicographical_order|lexicographically compared]] to determine if a given prototype is shown before or after another. If the order strings are equal then the game falls back to comparing the prototype names to determine order. | |||
== Examples == | |||
=== Two item prototypes === | |||
The second item is shown before the first one (in the crafting grid/inventory etc) | |||
<syntaxhighlight lang="lua">{ | |||
type = "item", | type = "item", | ||
name = "item-1", | name = "item-1", | ||
order = " | order = "ad", | ||
}, | }, | ||
Line 12: | Line 20: | ||
type = "item", | type = "item", | ||
name = "item-2", | name = "item-2", | ||
order = " | order = "ab", | ||
}, | },</syntaxhighlight> | ||
=== Some sorted strings === | |||
Using an UTF-8 character list, the sort order of special characters can be identified. This is the sort order for common characters: | |||
* "-" | |||
* "0" | |||
* "9" | |||
* "A" | |||
* "Z" | |||
* "[" | |||
* "]" | |||
* "a" | |||
* "z" | |||
Example using the above ordering: | |||
* "a" | |||
* "ab" | |||
* "azaaa" (<code>b</code> is sorted before <code>z</code>, so "ab" comes before "az", regardless of the rest of the letters after "az") | |||
* "b" | |||
* "b-zzzz" | |||
* "b[aaaa]" (<code>[</code> is sorted after <code>-</code> in UTF-8) | |||
* "bb" (<code>b</code> is sorted after <code>[</code> in UTF-8) |
Latest revision as of 20:45, 7 September 2018
Basic
The order property is a simple string. When the game needs to sort prototypes, it looks at their order properties and sorts those alphabetically. A prototype with an order string of "a" will be listed before other prototypes with order string "b" or "c". The "-" or "[]" structures that can be found in vanilla order strings do not have any special meaning.
Advanced
When the game compares two prototypes (of the same type) if the order strings aren't equal they're lexicographically compared to determine if a given prototype is shown before or after another. If the order strings are equal then the game falls back to comparing the prototype names to determine order.
Examples
Two item prototypes
The second item is shown before the first one (in the crafting grid/inventory etc)
{
type = "item",
name = "item-1",
order = "ad",
},
{
type = "item",
name = "item-2",
order = "ab",
},
Some sorted strings
Using an UTF-8 character list, the sort order of special characters can be identified. This is the sort order for common characters:
- "-"
- "0"
- "9"
- "A"
- "Z"
- "["
- "]"
- "a"
- "z"
Example using the above ordering:
- "a"
- "ab"
- "azaaa" (
b
is sorted beforez
, so "ab" comes before "az", regardless of the rest of the letters after "az") - "b"
- "b-zzzz"
- "b[aaaa]" (
[
is sorted after-
in UTF-8) - "bb" (
b
is sorted after[
in UTF-8)