bd16045525
* License for new coal skin * Coal skin elements * New coal skin * Better contrast for coal skin select * Lighter white text. * Improved contrasts for actionable UI elements * Make the theme back to a darker background while improving contrast again * Ranking formula refinements (#3288) * Reduce the maximum scaling time from 600s to 500s 8m20s is already much longer than nearly all ranked races will be, so it matters most for eliminated players. It would be too punishing if kept to 600 with the new time scaling method. * New helper function for ranking computations * Make short races less important for ranking points And long races more important * Use double for calculation * Fix as alayan suggested * Fix possible empty race event manager instance * Show remote player in the past * Allow to set commandline arguments on android * Fix #3242 * More on #3242 * FIx #2912 * Better checkboxes (#3291) * Better checkboxes for forest skin * Better checkboxes for ocean skin * Better checkboxes for peach skin * Better checkboxes for ruby skin * Try to create external/internal directory if it's not available. Typically it always exists on new phones, but I didn't find any information if it's guaranteed to exist and it's missing on my old phone. * Always set blend func in GLES 2.0. It's often changed in STK engine and the value stored in irrlicht variable may be invalid. Fixes #3296 * Avoid a crash when user name is empty * Unlock cutscene improvements (#3298) * Don't display unlocked features out of screen when there are 4 to 6-7 And more regular spacing between them * Remove outdated workaround * Store the previous number of story mode point * Allow to get the previous points from player profile * Fix points estimation for finding unlocked tracks - Updated to reflect that the player's points are now updated before this function - Use the real previous number of points rather than trying to estimate the point change (otherwise, the points computation method would have to be duplicated here to not have a bug with GPs who give more points than single race challenges). * Fix #3100 (#3299) * Fix #3100 * Fix server only compilation * Fix stupidly long line full of whitespace (#3303) * Don't use pkg-config on macOS Fixes #3305 * Fix #3309 * Great improvements to skin data (#3312) * Add vertical tab support and get common files from a common folder * License file for the common folder * UI images shared by all 4 colored themes * Delete redundant pictures * Delete background.jpg * Delete dialog.png * Delete glassbutton_deactivated.png * Delete glasscheckbox_checked_deactivated.png * Delete glasscheckbox_deactivated.png * Delete glass_rsection.png * Delete glass_section.png * Delete glassspinner.png * Delete glassspinner_deactivated.png * Delete glass_square_focused_bw.png * Delete left_arrow.png * Delete list_sort_down.png * Delete list_sort_up.png * Delete rating_star.png * Delete right_arrow.png * Delete scrollbar_bg.png * Delete scrollbar_btn.png * Delete table_header.png * Delete tooltip.png * Optimize image size and add vertical tabs * Optimize image size and add vertical tabs for ocean skin * The multiplayer colored squares are also shared * Use the multiplayer colored squares from common * Remove more redundant skin images * Delete glass_square1.png * Delete glass_square2.png * Delete glass_square3.png * Delete glass_square4.png * Delete glass_square_focused.png * Delete glass_square_focused2.png * Delete glass_square_focused3.png * Delete glass_square_focused4.png * Optimize image size and add vertical tabs for peach skin * Optimize image size and add vertical tabs for forest skin * Special focus halo for ruby skin Currently, the halo used in single player is shared with the one used for the first player in local multiplayer, despite the color of the top spinner widget not matching in this situation. Better having this mismatch that a not-so-great halo in single-player. I put it in common as it may be reused for multiplayer focus by other skins. * Use pink selection halo * Put the bottom bar among skinnable UI images * Make the bottom bar part of the skins * Coding style fix * Delete bar.png * Load bottom bar texture from skin rather than gui folder Also rename bg_image to m_bg_image * Move black focus halo to the common folder * Remove duplicate image, use common folder * Delete glass_square1.png * Delete glass_square2.png * Delete glass_square3.png * Delete glass_square4.png * Delete glass_square_focused.png * Delete glass_square_focused2.png * Delete glass_square_focused3.png * Delete glass_square_focused4.png * Delete glass_square_focused_bw.png * Delete left_arrow.png * Delete rating_star.png * Delete right_arrow.png * Delete list_sort_down.png * Delete list_sort_up.png * Delete glassbutton_deactivated.png * Delete glasscheckbox_deactivated.png * Delete glassspinner.png * Delete glassspinner_deactivated.png * Delete scrollbar_bg.png * Delete scrollbar_btn.png * Delete tooltip.png * Delete glasscheckbox_checked_deactivated.png * Use common folder, support vertical tabs, and small tweaks * Optimize image size, add vertical tabs, add custom bottom bar
289 lines
14 KiB
Plaintext
289 lines
14 KiB
Plaintext
<!--
|
|
|
|
Coal skin is based on Ocean skin
|
|
Ocean skin by Dakal and Marianne Gagnon, released under creative-commons BY-SA 3.0+
|
|
Except background.jpg, by elisee
|
|
Except stars, by s@f
|
|
|
|
To make your own skin, I suggest simply duplicating this file and modifying it as needed.
|
|
There are two types of images : some will be simply stretched as a whole, others will
|
|
have non-stretchable borders (you cannot choose which one you must use, it's hardcoded
|
|
for each element type; though, as you will see below, for all "advanced stretching" images
|
|
you can easily fake "simple stretch")
|
|
|
|
All elements will have at least 2 properties :
|
|
type="X" sets what you're skinning with this entry
|
|
image="skinDirectory/imageName.png" sets which image is used for this element
|
|
|
|
Most elements also support states :
|
|
state="neutral"
|
|
state="focused"
|
|
state="down"
|
|
You can thus give different looks for different states. Not all widgets support all states,
|
|
see entries and comments below to know what's supported.
|
|
Note that checkboxes are an exception and have the following styles :
|
|
"neutral+unchecked"
|
|
"neutral+checked"
|
|
"focused+unchecked"
|
|
"focused+checked"
|
|
"deactivated+unchecked"
|
|
"deactivated+checked"
|
|
|
|
"Advanced stretching" images are split this way :
|
|
|
|
+----+--------------------+----+
|
|
| | | |
|
|
+----+--------------------+----+
|
|
| | | |
|
|
| | | |
|
|
| | | |
|
|
+----+--------------------+----+
|
|
| | | |
|
|
+----+--------------------+----+
|
|
|
|
The center border will be stretched in all directions. The 4 corners will not stretch at all.
|
|
Horizontal borders will stretch horizontally, verticallt borders will stretch vertically.
|
|
Use properties left_border="X" right_border="X" top_border="X" bottom_border="X" to specify
|
|
the size of each border in pixels (setting all borders to '0' makes the whole image scaled).
|
|
|
|
In some cases, you may not want vertical stretching to occur (like if the left and right sides
|
|
of the image must not be stretched vertically, e.g. for the spinner). In this case, pass
|
|
parameter preserve_h_aspect_ratios="true" to make the left and right areas stretch by keeping
|
|
their aspect ratio.
|
|
|
|
Some components may fill the full inner area with stuff; others will only take a smaller
|
|
area at the center. To adjust for this, there are properties "hborder_out_portion" and "vborder_out_portion"
|
|
that take a float from 0 to 1, representing the percentage of each border that goes out of the widget's
|
|
area (this might include stuff like shadows, etc.). The 'h' one is for horizontal borders,
|
|
the 'v' one is for vertical borders.
|
|
|
|
Finnally : the image is split, as shown above, into 9 areas. In osme cases, you may not want
|
|
all areas to be rendered. Then you can pass parameter areas="body+left+right+top+bottom"
|
|
and explicitely specify which parts you want to see. The 4 corner areas are only visible
|
|
when the border that intersect at this corner are enabled.
|
|
|
|
-->
|
|
|
|
<skin name="Coal" author="Alayan">
|
|
|
|
<!-- Stateless -->
|
|
<element type="background" image="coal/background.jpg" />
|
|
|
|
<element type="bottom-bar" image="coal/bottom_bar.png" />
|
|
|
|
<element type="achievement-message" image="coal/achievement.png"
|
|
left_border="128" right_border="13" top_border="13" bottom_border="13"
|
|
preserve_h_aspect_ratios="true" hborder_out_portion="0.3" vborder_out_portion="0"/>
|
|
|
|
<element type="friend-message" image="coal/friend.png"
|
|
left_border="128" right_border="13" top_border="13" bottom_border="13"
|
|
preserve_h_aspect_ratios="true" hborder_out_portion="0" vborder_out_portion="0"/>
|
|
|
|
<element type="error-message" image="coal/error.png"
|
|
left_border="128" right_border="13" top_border="13" bottom_border="13"
|
|
preserve_h_aspect_ratios="true" hborder_out_portion="0" vborder_out_portion="0"/>
|
|
|
|
<element type="generic-message" image="coal/generic.png"
|
|
left_border="128" right_border="13" top_border="13" bottom_border="13"
|
|
preserve_h_aspect_ratios="true" hborder_out_portion="0" vborder_out_portion="0"/>
|
|
|
|
<element type="button" state="neutral" image="coal/glassbutton.png"
|
|
left_border="13" right_border="13" top_border="13" bottom_border="13"
|
|
preserve_h_aspect_ratios="true" hborder_out_portion="0" vborder_out_portion="0"/>
|
|
|
|
<element type="button" state="focused" image="coal/glassbutton_focused.png"
|
|
left_border="13" right_border="13" top_border="13" bottom_border="13"
|
|
preserve_h_aspect_ratios="true" hborder_out_portion="0" vborder_out_portion="0"/>
|
|
|
|
<element type="button" state="deactivated" image="common/glassbutton_deactivated.png"
|
|
left_border="13" right_border="13" top_border="13" bottom_border="13"
|
|
preserve_h_aspect_ratios="true" hborder_out_portion="0" vborder_out_portion="0"/>
|
|
|
|
<!-- TODO : buttons could support 'pressed' state -->
|
|
|
|
<element type="textbubble" state="neutral" image="coal/textbubble.png"
|
|
left_border="13" right_border="13" top_border="13" bottom_border="13"
|
|
hborder_out_portion="0.7" vborder_out_portion="0.3" />
|
|
|
|
<element type="textbubble" state="focused" image="coal/textbubble2.png"
|
|
left_border="13" right_border="13" top_border="13" bottom_border="13"
|
|
hborder_out_portion="0.7" vborder_out_portion="0.3" />
|
|
|
|
<element type="progress" state="fill" image="coal/glasssgauge_fill.png"
|
|
left_border="20" right_border="20" top_border="0" bottom_border="0"
|
|
preserve_h_aspect_ratios="true" />
|
|
|
|
<element type="progress" state="neutral" image="common/scrollbar_bg.png"
|
|
left_border="31" right_border="31" top_border="15" bottom_border="15"
|
|
preserve_h_aspect_ratios="true" />
|
|
|
|
|
|
<element type="tab" state="neutral" image="coal/glasstab.png"
|
|
left_border="75" right_border="75" top_border="0" bottom_border="15"
|
|
hborder_out_portion="0.2" />
|
|
|
|
<element type="tab" state="focused" image="coal/glasstab_focus.png"
|
|
left_border="75" right_border="75" top_border="0" bottom_border="15"
|
|
hborder_out_portion="0.2" />
|
|
|
|
<element type="tab" state="down" image="coal/glasstab_down.png"
|
|
left_border="75" right_border="75" top_border="0" bottom_border="15"
|
|
hborder_out_portion="0.2" />
|
|
|
|
|
|
<element type="verticalTab" state="neutral" image="coal/glasstab_vert.png"
|
|
left_border="75" right_border="75" top_border="10" bottom_border="10"
|
|
hborder_out_portion="0.2" />
|
|
|
|
<element type="verticalTab" state="focused" image="coal/glasstab_vert_focus.png"
|
|
left_border="75" right_border="75" top_border="10" bottom_border="10"
|
|
hborder_out_portion="0.2" />
|
|
|
|
<element type="verticalTab" state="down" image="coal/glasstab_vert_down.png"
|
|
left_border="75" right_border="75" top_border="10" bottom_border="10"
|
|
hborder_out_portion="0.2" />
|
|
|
|
<!-- Stateless -->
|
|
<element type="squareFocusHaloBW" image="common/glass_square_focused_bw.png"
|
|
left_border="6" right_border ="6" top_border="6" bottom_border="6"
|
|
hborder_out_portion="1.0" />
|
|
<element type="squareFocusHalo" image="common/glass_square_focused_black.png"
|
|
left_border="6" right_border ="6" top_border="6" bottom_border="6"
|
|
hborder_out_portion="1.0" />
|
|
<element type="squareFocusHalo2" image="common/glass_square_focused_cyan.png"
|
|
left_border="6" right_border ="6" top_border="6" bottom_border="6"
|
|
hborder_out_portion="1.0" />
|
|
<element type="squareFocusHalo3" image="common/glass_square_focused_red.png"
|
|
left_border="6" right_border ="6" top_border="6" bottom_border="6"
|
|
hborder_out_portion="1.0" />
|
|
<element type="squareFocusHalo4" image="common/glass_square_focused_green.png"
|
|
left_border="6" right_border ="6" top_border="6" bottom_border="6"
|
|
hborder_out_portion="1.0" />
|
|
|
|
<!-- Stateless. No splitting into 9 areas is done; the image is just resized. -->
|
|
<element type="selectionHalo" image="coal/bubble.png" />
|
|
<element type="focusHalo" image="coal/glass_iconhighlight_focus.png" />
|
|
|
|
<element type="spinner" state="neutral" image="common/glassspinner.png"
|
|
left_border="110" right_border="110" top_border="0" bottom_border="36"
|
|
preserve_h_aspect_ratios="true" hborder_out_portion="0.0" />
|
|
|
|
<element type="spinner" state="focused" image="coal/glassspinner_focus.png"
|
|
left_border="110" right_border="110" top_border="0" bottom_border="36"
|
|
preserve_h_aspect_ratios="true" hborder_out_portion="0.0" />
|
|
|
|
<element type="spinner" state="deactivated" image="common/glassspinner_deactivated.png"
|
|
left_border="110" right_border="110" top_border="0" bottom_border="36"
|
|
preserve_h_aspect_ratios="true" hborder_out_portion="0.0" />
|
|
|
|
<!-- player name spinner color in multiplayer-->
|
|
<element type="spinner1" state="neutral" image="common/glass_square_black.png"
|
|
left_border="110" right_border="110" top_border="0" bottom_border="36"
|
|
preserve_h_aspect_ratios="true" hborder_out_portion="0.0" />
|
|
<element type="spinner2" state="neutral" image="common/glass_square_cyan.png"
|
|
left_border="110" right_border="110" top_border="0" bottom_border="36"
|
|
preserve_h_aspect_ratios="true" hborder_out_portion="0.0" />
|
|
<element type="spinner3" state="neutral" image="common/glass_square_red.png"
|
|
left_border="110" right_border="110" top_border="0" bottom_border="36"
|
|
preserve_h_aspect_ratios="true" hborder_out_portion="0.0" />
|
|
<element type="spinner4" state="neutral" image="common/glass_square_green.png"
|
|
left_border="110" right_border="110" top_border="0" bottom_border="36"
|
|
preserve_h_aspect_ratios="true" hborder_out_portion="0.0" />
|
|
|
|
|
|
<!-- This one is a bit special. Only area(s) LEFT and/or RIGHT will be rendered. They will be overlaid
|
|
on top of the spinner's background -->
|
|
<element type="spinner" state="down" image="coal/glassspinner_down.png"
|
|
left_border="110" right_border="110" top_border="0" bottom_border="36"
|
|
preserve_h_aspect_ratios="true" hborder_out_portion="0.0" />
|
|
|
|
<!-- For checkboxes, no splitting into 9 areas is done; the image is just stretched -->
|
|
<element type="checkbox" state="neutral+unchecked" image="coal/glasscheckbox.png"/>
|
|
<element type="checkbox" state="neutral+checked" image="coal/glasscheckbox_checked.png"/>
|
|
<element type="checkbox" state="focused+unchecked" image="coal/glasscheckbox_focus.png"/>
|
|
<element type="checkbox" state="focused+checked" image="coal/glasscheckbox_checked_focus.png"/>
|
|
<element type="checkbox" state="deactivated+unchecked" image="common/glasscheckbox_deactivated.png"/>
|
|
<element type="checkbox" state="deactivated+checked" image="common/glasscheckbox_checked_deactivated.png"/>
|
|
|
|
<!-- are always in neutral state for now. No splitting into 9 areas is done; the image is just stretched.
|
|
Note: the body of a guage is the same as for for spinners. -->
|
|
<element type="gaugefill" image="coal/glasssgauge_fill.png" />
|
|
|
|
<!-- Lists are always in neutral state for now -->
|
|
<element type="list" image="coal/glass_section.png"
|
|
left_border="15" right_border="15" top_border="7" bottom_border="7"
|
|
hborder_out_portion="0.0" vborder_out_portion="0.0" />
|
|
|
|
<element type="listitem" state="focused" image="coal/select.png"
|
|
left_border="0" right_border="0" top_border="0" bottom_border="0"
|
|
hborder_out_portion="0.0" vborder_out_portion="0.0" />
|
|
|
|
|
|
<!-- Scrollbars. Background and thumb have no state (always neutral state).
|
|
The buttons are the top and bottom arrows. Image must be top arrow, will
|
|
be mirrorred for bottom. Buttons can be in neutral or down state.
|
|
Advanced stretching is not used here.
|
|
-->
|
|
<element type="scrollbar_background" image="common/scrollbar_bg.png" />
|
|
<element type="scrollbar_thumb" image="coal/scrollbar_thumb.png" />
|
|
<element type="scrollbar_button" image="common/scrollbar_btn.png" />
|
|
<element type="scrollbar_button" state="down" image="coal/scrollbar_btn_down.png" />
|
|
|
|
<element type="left_arrow" state="neutral" image="common/left_arrow.png" />
|
|
<element type="right_arrow" state="neutral" image="common/right_arrow.png" />
|
|
<element type="left_arrow" state="focus" image="coal/left_arrow_focus.png" />
|
|
<element type="right_arrow" state="focus" image="coal/right_arrow_focus.png" />
|
|
|
|
<element type="list_header" state="neutral" image="coal/table_header.png" />
|
|
<element type="list_sort_up" state="neutral" image="common/list_sort_up.png" />
|
|
<element type="list_sort_down" state="neutral" image="common/list_sort_down.png" />
|
|
<element type="list_header" state="down" image="coal/table_header_down.png" />
|
|
|
|
<!-- Stateless -->
|
|
<element type="section" image="coal/glass_section.png"
|
|
left_border="15" right_border="15" top_border="15" bottom_border="15"
|
|
hborder_out_portion="0.0" vborder_out_portion="0.0" />
|
|
|
|
<!-- Stateless -->
|
|
<element type="rounded_section" image="coal/glass_rsection.png"
|
|
left_border="15" right_border="15" top_border="15" bottom_border="15"
|
|
hborder_out_portion="0.0" vborder_out_portion="0.0" />
|
|
|
|
<!-- Stateless -->
|
|
<element type="window" image="coal/dialog.png"
|
|
left_border="7" right_border="7" top_border="50" bottom_border="50"
|
|
hborder_out_portion="1.0" vborder_out_portion="0.2" />
|
|
|
|
<!-- Stateless -->
|
|
<element type="tooltip" image="common/tooltip.png"
|
|
left_border="10" right_border="10" top_border="10" bottom_border="10"
|
|
hborder_out_portion="1.0" vborder_out_portion="1.0" />
|
|
|
|
<!-- Colors -->
|
|
<color type="text" state="neutral" r="220" g="220" b="220" />
|
|
<color type="brighttext" state="neutral" r="240" g="240" b="240" />
|
|
|
|
<!-- For highlighted items, e.g. in list -->
|
|
<color type="text" state="focused" r="255" g="255" b="255" />
|
|
|
|
<!-- Color used to fade out background when a dialog is shown -->
|
|
<color type="dialog_background" state="neutral" a="120" r="0" g="0" b="0" />
|
|
|
|
<!-- Text field color -->
|
|
<color type="text_field" state="background" a="255" r="35" g="35" b="35" />
|
|
<color type="text_field" state="background_focused" a="255" r="15" g="15" b="15" />
|
|
<color type="text_field" state="background_deactivated" a="255" r="90" g="90" b="90" />
|
|
<color type="text_field" state="neutral" a="255" r="35" g="35" b="35" />
|
|
<color type="text_field" state="focused" a="255" r="15" g="15" b="15" />
|
|
<color type="text_field" state="deactivated" a="255" r="90" g="90" b="90" />
|
|
|
|
<!-- Rating star image -->
|
|
<element type="rating" state="neutral" image="common/rating_star.png" />
|
|
|
|
<!-- Font color -->
|
|
<color type="font" state="top" a="255" r="140" g="140" b="140" />
|
|
<color type="font" state="bottom" a="255" r="235" g="235" b="235" />
|
|
<color type="font" state="normal" a="255" r="220" g="220" b="220" />
|
|
|
|
</skin>
|