Difference between revisions of "ThemeWML"
(→The toplevel [theme] tag: ref) |
|||
(33 intermediate revisions by 22 users not shown) | |||
Line 1: | Line 1: | ||
− | == | + | {{WML Tags}} |
+ | == The toplevel [theme] tag == | ||
− | + | Themes are used both for the wesnoth game and the wesnoth editor. | |
− | + | Themes allow flexible configuration of how everything is laid out on-screen. | |
− | + | The following keys are recognized in '''[theme]''': | |
+ | * '''id''': The internal id of the theme. | ||
+ | * '''name''': Translatable theme name displayed in Preferences. | ||
+ | * '''hidden''': Boolean value (defaults to '''no'''), determines whether the theme will be displayed in Preferences or not. This can be used to prevent players from choosing themes that are not intended for use in regular gameplay. | ||
+ | * '''description''': A short description of the theme to display in Preferences. | ||
− | + | The only tag in '''[theme]''' is '''[[ThemeSystem|[resolution]]]''', but each theme can have multiple [resolution] tags. | |
− | + | The [resolution] tags are scanned until the first one which is of the same or lower resolution than is currently being used is found, and this is used as our theme. | |
− | used is found, and this is used as our theme. | + | This allows us to define themes to work differently on different resolutions, |
− | This allows us to define themes to work differently on different resolutions, and will allow us to support both high | + | and will allow us to support both high and low resolutions elegantly. |
− | and | ||
− | low resolutions elegantly. | ||
− | + | The following keys and tags are recognized for [resolution]: | |
− | * ''width | + | * '''width''', '''height''': dimensions in pixels |
All subtags of [resolution] use the following keys: | All subtags of [resolution] use the following keys: | ||
− | * ''rect'' defines the rectangle to display on. | + | * '''rect'''=''a,b,c,d'': defines the rectangle to display on, where a,b are top-left XY co-ordinates and c,d are bottom-right XY co-ordinates. So, for example rec="0,10,20,30" would create a rectangle that has top left corner at the very left side of the screen, 10 pixels below the very top and is 20 pixels wide and tall. Each of a,b,c,d may be specified as: |
** number : absolute positions | ** number : absolute positions | ||
− | ** ''='' : same value as the same field in reference rect ( | + | ** ''='' : same value as the same field in reference rect (alignment with reference) |
− | ** +number or -number : for a and b, add this value to reference's c and d respectively (spacing from reference) | + | ** +number or -number : for a and b, add this value to reference's c and d respectively (spacing from reference); for c and d, add this value to self's a and b (specify by width and height) |
− | ; for c and d, add this value to self's a and b (specify by width and height) | ||
** =+number or =-number : add this value to same field in reference rect (eg. consider reference as a container box) | ** =+number or =-number : add this value to same field in reference rect (eg. consider reference as a container box) | ||
− | * ''xanchor | + | * '''ref''': id of subtag of [resolution] which is used in case of relative rect component (by default rect of (0,0,0,0)) |
− | ** 'left' its distance from the left side of the screen always remain the same, while changes in the resolution will | + | * '''xanchor''', '''yanchor''': control the behavior of how this rectangle changes as the resolution changes. |
− | change its size by the same amount (top for the y axis). | + | ** '''left''': its distance from the left side of the screen always remain the same, while changes in the resolution will change its size by the same amount (top for the y axis). |
− | ** 'right' its size always remain the same, as well as its distance to the right side of the screen (bottom for the y | + | ** '''right''': its size always remain the same, as well as its distance to the right side of the screen (bottom for the y axis). |
− | axis). | + | ** '''fixed''': its co-ordinates in that axis remain constant |
− | ** 'fixed' its co-ordinates in that axis remain constant | + | ** '''proportional''': its co-ordinates multiplied by the ratio of the resolution being used to the canonical resolution. |
− | ** 'proportional' its co-ordinates multiplied by the ratio of the resolution being used to the canonical resolution. | ||
− | |||
== [main_map] == | == [main_map] == | ||
defines where the main game display (i.e. all the hexagons and units) is displayed. | defines where the main game display (i.e. all the hexagons and units) is displayed. | ||
+ | |||
+ | == [main_map_border] == | ||
+ | Defines the border of the main map area. It has the following keys. | ||
+ | |||
+ | * '''border_size''': the size of the border, the value should be between 0.0 and 0.5. The images which are used by default are sized for 0.5. If the border gets smaller the images still need the same size. They're simply cut off at the right spot. | ||
+ | * '''background_image''': the filename of the image to use as background. | ||
+ | * '''tile_image''': the filename of the image to use for the _off^_usr tile. The image in the minimal can't be controlled only the image in the main map. This image must be in the terrain directory and a png image. When specifying the image the 'terrain/' prefix and '.png' suffix _must_ be ommitted. | ||
== [mini_map] == | == [mini_map] == | ||
− | + | Determines where the mini map is displayed | |
== [panel] == | == [panel] == | ||
− | + | Displays an image as a panel on-screen. | |
− | * ''image'' the image used for the panel | + | * '''image''': the image used for the panel |
== [label] == | == [label] == | ||
− | + | Displays a text label on screen. | |
− | * ''prefix'' a string that will be printed before the text in all | + | * '''prefix''': a string that will be printed before the text in all languages |
− | * ''text'' a text string id to be displayed | + | * '''text''': a text string id to be displayed |
− | * ''postfix'' a string that will be printed after the text in all | + | * '''postfix''': a string that will be printed after the text in all languages |
− | * ''icon'' an image that will be displayed instead of the text if it is available | + | * '''icon''': an image that will be displayed instead of the text if it is available |
− | * ''font_size'' the size of font to use for the label | + | * '''font_size''': the size of font to use for the label |
== [menu] == | == [menu] == | ||
− | + | * '''title''': the id of the string to write on the button | |
− | * ''title'' the id of the string to write on the button | + | * '''title_literal''': a string that will be displayed "as is" in all language after the title |
− | * ''title_literal'' a string that will be displayed "as is" in all language after the title | + | * '''image''': the image to use if available |
− | * ''image'' the image to use if available | + | * '''is_context_menu''': if set to true this menu will not be placed, but displayed on a right click |
− | * ''is_context_menu'' if set to true this menu will not be placed, but displayed on a right click | + | * '''items''': comma separated list of actions to put in the menu. if there is only one action, it will be executed immediately and no menu will be displayed |
− | * ''items'' comma separated list of actions to put in the menu. if there is only one action, it will be executed | + | ** '''cycle''': move to next movable unit |
− | immediately and no menu will be displayed | + | ** '''endunitturn''': consume this unit's move and cycle to the next one |
− | ** 'cycle' move to next movable unit | + | ** '''leader''': center on the leader |
− | ** 'endunitturn' consume this unit's move and cycle to the next one | + | ** '''undo''': undo last action |
− | ** 'leader' | + | ** '''redo''': redo undone action |
− | ** 'undo' undo last action | + | ** '''zoomin''': zoom the map in |
− | ** 'redo' redo undone action | + | ** '''zoomout''': zoom the map out |
− | ** 'zoomin' zoom the map in | + | ** '''zoomdefault''': return to default zoom |
− | ** 'zoomout' zoom the map out | + | ** '''fullscreen''': switch fulscreen mode |
− | ** 'zoomdefault' return to default zoom | + | ** '''accelerated''': switch turbo mode |
− | ** 'fullscreen' switch fulscreen mode | + | ** '''resistance''': show resistance table of current unit |
− | ** 'accelerated' switch turbo mode | + | ** '''terraintable''': show terrain table of current unit |
− | ** 'resistance' show resistance table of current unit | + | ** '''describeunit''': show unit description |
− | ** 'terraintable' show terrain table of current unit | + | ** '''renameunit''': change unit name |
− | ** 'describeunit' show unit description | + | ** '''save''': save the game |
− | ** 'renameunit' change unit name | + | ** '''recruit''': recruit a unit |
− | ** 'save' save the game | + | ** '''repeatrecruit''': repeat last recruitement |
− | ** 'recruit' recruit a unit | + | ** '''recall''': recall a unit from previous scenario |
− | ** 'repeatrecruit' repeat last recruitement | + | ** '''endturn''': end current turn |
− | ** 'recall' recall a unit from previous | + | ** '''togglegrid''': toggle grid display |
− | ** 'endturn' end current turn | + | ** '''statustable''': show status table |
− | ** 'togglegrid' toggle grid display | + | ** '''mute''': mute all sounds |
− | ** 'statustable' show status table | + | ** '''speak''': send message to other players |
− | ** 'mute' mute all sounds | + | ** '''createunit''': debug create a unit on the map |
− | ** 'speak' send message to other players | + | ** '''preferences''': open preference dialog |
− | ** 'createunit' debug create a unit on the map | + | ** '''objectives''': show objective window |
− | ** 'preferences' open preference dialog | + | ** '''unitlist''': list units |
− | ** 'objectives' show objective window | + | ** '''statistics''': show game statistics |
− | ** 'unitlist' list units | + | ** '''quit''': quit the game |
− | ** 'statistics' show game statistics | + | ** '''labelterrain''': label current location |
− | ** 'quit' quit the game | + | ** '''clearlabels''': clear all labels on map |
− | ** 'labelterrain' label current location | + | ** '''showenemymoves''': show grids reachable by the enemy |
− | ** 'showenemymoves' show grids reachable by the enemy | + | ** '''bestenemymoves''': show grids reachable by the enemy with no zone of control |
− | ** 'bestenemymoves' show grids reachable by the enemy with no zone of control | + | ** '''editnewmap''': editor only start a new map |
− | ** 'editnewmap' editor only start a new map | + | ** '''editloadmap''': editor only loads an existing map |
− | ** 'editloadmap' editor only loads an existing map | + | ** '''editsavemap''': editor only saves the current map |
− | ** 'editsavemap' editor only saves the current map | + | ** '''editsaveas''': editor only saves the current map, let you choose a filename |
− | ** 'editsaveas' editor only saves the current map, let you choose a filename | + | ** '''editsetstartpos''': editor only set a starting position for a team |
− | ** 'editsetstartpos' editor only set a starting position for a team | + | ** '''editfloodfill''': editor only flood the map with a terrain |
− | ** 'editfloodfill' editor only flood the map with a terrain | + | ** '''toggleshroud''': toggle the "moving removes shroud" behaviour |
− | ** 'toggleshroud' toggle the "moving removes shroud" behaviour | + | ** '''updateshroud''': removes all possible shroud |
− | ** 'updateshroud' removes all possible shroud | + | ** '''AUTOSAVES''': expands to a list of all Auto-Save games prior to this one |
== [status] == | == [status] == | ||
This tag describes the Status Table. | This tag describes the Status Table. | ||
− | + | This tag contains many other tags, which determine where other game statistics, such as the current turn, and a description of selected units go. | |
− | description of selected units go. | ||
For instance, the [time_of_day] tag will determine where the time of day image goes. | For instance, the [time_of_day] tag will determine where the time of day image goes. | ||
Each subtag of [status] can contain the following attributes | Each subtag of [status] can contain the following attributes | ||
− | ** ''font_size'' the size of font to use for the status | + | ** '''font_size''': the size of font to use for the status |
− | ** ''rect'' the rectangle as for the main_map attribute | + | ** '''rect''': the rectangle as for the main_map attribute |
− | ** ''xanchor'' the x-wise anchoring as for the main_map attribute | + | ** '''xanchor''': the x-wise anchoring as for the main_map attribute |
− | ** ''yanchor'' the y-wise anchoring as for the main_map attribute | + | ** '''yanchor''': the y-wise anchoring as for the main_map attribute |
− | ** ''prefix'' the string to display before the actual status, this is the string id for internationalisation | + | ** '''prefix''': the string to display before the actual status, this is the string id for internationalisation |
− | ** ''prefix_literal'' a string to put after the prefix, but before the label for all languages. | + | ** '''prefix_literal''': a string to put after the prefix, but before the label for all languages. |
− | ** ''postfix_literal'' a string to put after the status | + | ** '''postfix_literal''': a string to put after the status |
− | ** ''postfix'' the string to display after the postfix_literal, this is the string id for internationalisation | + | ** '''postfix''': the string to display after the postfix_literal, this is the string id for internationalisation |
the following tags are recognized for [status]: | the following tags are recognized for [status]: | ||
− | * '''[unit_description]''' the user description of the current unit | + | * '''[unit_description]''': the user description of the current unit. Note: this tag is now obsolete |
− | * '''[unit_type]''' the type of the current unit | + | * '''[unit_name]''': the user description of the current unit |
− | * '''[unit_level]''' the level of the current unit | + | * '''[unit_type]''': the type of the current unit |
− | * '''[unit_traits]''' the traits of the current unit | + | * '''[unit_race]''': the race of the current unit |
− | * '''[unit_status]''' the status of the current unit | + | * '''[unit_level]''': the level of the current unit |
− | * '''[unit_alignment]''' the alignment of the current unit | + | * '''[unit_side]''': the side of the current unit (flag) |
− | * '''[unit_abilities]''' the abilities of the current unit | + | * '''[unit_traits]''': the traits of the current unit |
− | * '''[unit_hp]''' the HP of the current unit | + | * '''[unit_status]''': the status of the current unit |
− | * '''[unit_xp]''' the XP of the current unit | + | * '''[unit_alignment]''': the alignment of the current unit |
− | * '''[unit_moves]''' the moves remaining for the current unit | + | * '''[unit_abilities]''': the abilities of the current unit |
− | * '''[unit_weapons]''' the attacks of the current unit | + | * '''[unit_hp]''': the HP of the current unit |
− | * '''[unit_image]''' the icon for the current unit | + | * '''[unit_xp]''': the XP of the current unit |
− | * '''[unit_profile]''' | + | * '''[unit_moves]''': the moves remaining for the current unit |
− | * '''[time_of_day]''' the time of day on the current location | + | * '''[unit_weapons]''': the attacks of the current unit |
− | * '''[turn]''' the turn number and turn remaining | + | * '''[unit_image]''': the icon for the current unit |
− | * '''[gold]''' the gold remaining | + | * '''[unit_profile]''': the portait for the current unit |
− | * '''[villages]''' the number of villages owned | + | * '''[unit_advancement_options]''': the advancement(s) of the current unit appear in the tooltip of this element |
− | * '''[num_units]''' the number of units owned | + | * '''[time_of_day]''': the time of day on the current location |
− | * '''[upkeep]''' the money needed to keep your units every turn | + | * '''[turn]''': the turn number and turn remaining |
− | * '''[expenses]''' the money lost each turn when you don't have enough income | + | * '''[gold]''': the gold remaining |
− | * '''[income]''' the income per turn (can be positive) | + | * '''[villages]''': the number of villages owned |
− | * '''[terrain]''' the text description of the current terrain | + | * '''[num_units]''': the number of units owned |
− | * '''[position]''' the current terrain's position | + | * '''[upkeep]''': the money needed to keep your units every turn |
− | * '''[side_playing]''' the current playing side | + | * '''[expenses]''': the money lost each turn when you don't have enough income |
− | * '''[observers]''' the current observers | + | * '''[income]''': the income per turn (can be positive) |
+ | * '''[terrain]''': the text description of the current terrain | ||
+ | * '''[position]''': the current terrain's position | ||
+ | * '''[side_playing]''': the current playing side (flag) | ||
+ | * '''[observers]''': the current observers | ||
== See Also == | == See Also == | ||
Line 154: | Line 164: | ||
* [[ReferenceWML]] | * [[ReferenceWML]] | ||
+ | |||
+ | [[Category: WML Reference]] |
Latest revision as of 22:30, 10 August 2024
Contents
The toplevel [theme] tag
Themes are used both for the wesnoth game and the wesnoth editor. Themes allow flexible configuration of how everything is laid out on-screen.
The following keys are recognized in [theme]:
- id: The internal id of the theme.
- name: Translatable theme name displayed in Preferences.
- hidden: Boolean value (defaults to no), determines whether the theme will be displayed in Preferences or not. This can be used to prevent players from choosing themes that are not intended for use in regular gameplay.
- description: A short description of the theme to display in Preferences.
The only tag in [theme] is [resolution], but each theme can have multiple [resolution] tags. The [resolution] tags are scanned until the first one which is of the same or lower resolution than is currently being used is found, and this is used as our theme. This allows us to define themes to work differently on different resolutions, and will allow us to support both high and low resolutions elegantly.
The following keys and tags are recognized for [resolution]:
- width, height: dimensions in pixels
All subtags of [resolution] use the following keys:
- rect=a,b,c,d: defines the rectangle to display on, where a,b are top-left XY co-ordinates and c,d are bottom-right XY co-ordinates. So, for example rec="0,10,20,30" would create a rectangle that has top left corner at the very left side of the screen, 10 pixels below the very top and is 20 pixels wide and tall. Each of a,b,c,d may be specified as:
- number : absolute positions
- = : same value as the same field in reference rect (alignment with reference)
- +number or -number : for a and b, add this value to reference's c and d respectively (spacing from reference); for c and d, add this value to self's a and b (specify by width and height)
- =+number or =-number : add this value to same field in reference rect (eg. consider reference as a container box)
- ref: id of subtag of [resolution] which is used in case of relative rect component (by default rect of (0,0,0,0))
- xanchor, yanchor: control the behavior of how this rectangle changes as the resolution changes.
- left: its distance from the left side of the screen always remain the same, while changes in the resolution will change its size by the same amount (top for the y axis).
- right: its size always remain the same, as well as its distance to the right side of the screen (bottom for the y axis).
- fixed: its co-ordinates in that axis remain constant
- proportional: its co-ordinates multiplied by the ratio of the resolution being used to the canonical resolution.
[main_map]
defines where the main game display (i.e. all the hexagons and units) is displayed.
[main_map_border]
Defines the border of the main map area. It has the following keys.
- border_size: the size of the border, the value should be between 0.0 and 0.5. The images which are used by default are sized for 0.5. If the border gets smaller the images still need the same size. They're simply cut off at the right spot.
- background_image: the filename of the image to use as background.
- tile_image: the filename of the image to use for the _off^_usr tile. The image in the minimal can't be controlled only the image in the main map. This image must be in the terrain directory and a png image. When specifying the image the 'terrain/' prefix and '.png' suffix _must_ be ommitted.
[mini_map]
Determines where the mini map is displayed
[panel]
Displays an image as a panel on-screen.
- image: the image used for the panel
[label]
Displays a text label on screen.
- prefix: a string that will be printed before the text in all languages
- text: a text string id to be displayed
- postfix: a string that will be printed after the text in all languages
- icon: an image that will be displayed instead of the text if it is available
- font_size: the size of font to use for the label
- title: the id of the string to write on the button
- title_literal: a string that will be displayed "as is" in all language after the title
- image: the image to use if available
- is_context_menu: if set to true this menu will not be placed, but displayed on a right click
- items: comma separated list of actions to put in the menu. if there is only one action, it will be executed immediately and no menu will be displayed
- cycle: move to next movable unit
- endunitturn: consume this unit's move and cycle to the next one
- leader: center on the leader
- undo: undo last action
- redo: redo undone action
- zoomin: zoom the map in
- zoomout: zoom the map out
- zoomdefault: return to default zoom
- fullscreen: switch fulscreen mode
- accelerated: switch turbo mode
- resistance: show resistance table of current unit
- terraintable: show terrain table of current unit
- describeunit: show unit description
- renameunit: change unit name
- save: save the game
- recruit: recruit a unit
- repeatrecruit: repeat last recruitement
- recall: recall a unit from previous scenario
- endturn: end current turn
- togglegrid: toggle grid display
- statustable: show status table
- mute: mute all sounds
- speak: send message to other players
- createunit: debug create a unit on the map
- preferences: open preference dialog
- objectives: show objective window
- unitlist: list units
- statistics: show game statistics
- quit: quit the game
- labelterrain: label current location
- clearlabels: clear all labels on map
- showenemymoves: show grids reachable by the enemy
- bestenemymoves: show grids reachable by the enemy with no zone of control
- editnewmap: editor only start a new map
- editloadmap: editor only loads an existing map
- editsavemap: editor only saves the current map
- editsaveas: editor only saves the current map, let you choose a filename
- editsetstartpos: editor only set a starting position for a team
- editfloodfill: editor only flood the map with a terrain
- toggleshroud: toggle the "moving removes shroud" behaviour
- updateshroud: removes all possible shroud
- AUTOSAVES: expands to a list of all Auto-Save games prior to this one
[status]
This tag describes the Status Table. This tag contains many other tags, which determine where other game statistics, such as the current turn, and a description of selected units go. For instance, the [time_of_day] tag will determine where the time of day image goes. Each subtag of [status] can contain the following attributes
- font_size: the size of font to use for the status
- rect: the rectangle as for the main_map attribute
- xanchor: the x-wise anchoring as for the main_map attribute
- yanchor: the y-wise anchoring as for the main_map attribute
- prefix: the string to display before the actual status, this is the string id for internationalisation
- prefix_literal: a string to put after the prefix, but before the label for all languages.
- postfix_literal: a string to put after the status
- postfix: the string to display after the postfix_literal, this is the string id for internationalisation
the following tags are recognized for [status]:
- [unit_description]: the user description of the current unit. Note: this tag is now obsolete
- [unit_name]: the user description of the current unit
- [unit_type]: the type of the current unit
- [unit_race]: the race of the current unit
- [unit_level]: the level of the current unit
- [unit_side]: the side of the current unit (flag)
- [unit_traits]: the traits of the current unit
- [unit_status]: the status of the current unit
- [unit_alignment]: the alignment of the current unit
- [unit_abilities]: the abilities of the current unit
- [unit_hp]: the HP of the current unit
- [unit_xp]: the XP of the current unit
- [unit_moves]: the moves remaining for the current unit
- [unit_weapons]: the attacks of the current unit
- [unit_image]: the icon for the current unit
- [unit_profile]: the portait for the current unit
- [unit_advancement_options]: the advancement(s) of the current unit appear in the tooltip of this element
- [time_of_day]: the time of day on the current location
- [turn]: the turn number and turn remaining
- [gold]: the gold remaining
- [villages]: the number of villages owned
- [num_units]: the number of units owned
- [upkeep]: the money needed to keep your units every turn
- [expenses]: the money lost each turn when you don't have enough income
- [income]: the income per turn (can be positive)
- [terrain]: the text description of the current terrain
- [position]: the current terrain's position
- [side_playing]: the current playing side (flag)
- [observers]: the current observers