Changes in Latest Version (1.1.1 | 30-Oct-2014)
- Minor fix to ensure that hidden apps stay hidden on next startup. This feature broke with the introduction of the "inherit" feature in 1.1.0
Changes in Latest Version (1.1.0 | 28-Oct-2014)
NOTE:
CHANGES:
- There have been some major structural changes to the codebase, so please __delete__ your existing ka0sdashboard folder before un-RARing this one.
- Your downloaded skins need to be updated as well, you can get them HERE.
- For any custom skins, make sure you back them up before deleting the old ka0sdashboard folder.
Skin authors, some of the changes you will need to make to your existing skins:
- Major code overhaul, including performance/readability improvements
- Consolidated codebase to have every dashboard widget being rendered from the same class.
- This means any app (speed, rpm, fuel, gear, pedals, steering) can render any element from any app.
- This allows greater consistency in config.json declaration and will allow skin authors to create "super apps" which can potentially create a single, unified dashboard widget.
- Add state support for the dial - i.e. dials can change background image based on defined parameters.
- This is how the gear app works, now works for any app.
- @Skin authors: This will need some changes to way needles are defined in the config.json (see below)
- Added support for multiple needles in the same app.
- @Skin authors: This will need some changes to way needles are defined in the config.json (see below)
- Added support for multiple, multi-state overlays.
- An overlay is a graphical element which can be used anywhere on the skin.
- For example, it can be used for "glass" textures on top of the dial, or gear numbers via image rather than text, or anything under the sun.
- Added support for multiple, multi-state underlays.
- This is the same as overlays, except overlays are rendered above the needle (top layer), whereas underlays are rendered under the needle but above the dial and other text elements.
- Made the bars element used in the pedals app generic
- This can be used in any element now, not just pedals
- @Skin authors: This will need some changes to way needles are defined in the config.json (see below)
- Added skin-level flag to disable inheritance from the default skin if that widget is not defined in your skin
- Current behavior : If a skin doesn't have a specific widget defined (say the fuel widget), then the Ka0s Dashboard app inherits this from the default skin
- New behavior : If the "inherit" flag is set to false, then the Ka0s Dashboard app will __not__ inherit any undefined widgets from the default skin
- To enable this, set a variable "inherit": false under "skin" in the config.json in your base skin folder (where you define the skin name, description and author)
- Added reload button in the Configuration GUI (enabled if DEBUG = True).
- It reloads the skin configurations from disk and immediately applies them without having to logout of the current race session. Very useful for skin authors.
- Test skin to showcase new capabilities available here : https://www.mediafire.com/?m65mx5xn65yshga
- This is for demo purposes only, not really a usable skin
- OLD __needle__ declaration (for fuel, rpm, speed apps)
Code:"needle": { "size": { "x": 200, "y": 200 }, "position": { "x": 0, "y": 0 }, "image": { "path": "needle", "filename": "needle.<angle>.png" }, "background_opacity": 0, "attribute": "percent_speed", "start_angle": 45, "end_angle": 303 }
- NEW __needle__ declaration (for fuel, rpm, speed apps)
Code:"needles": [ { "size": { "x": 200, "y": 200 }, "position": { "x": 0, "y": 0 }, "image": { "path": "needle", "filename": "needle.<angle>.png" }, "background_opacity": 0, "attribute": "percent_speed", "start_angle": 45, "end_angle": 303 } ]
- OLD __states__ declaration (for gear app)
Code:"dial": { ... "attribute": "percent_rpm", "states": [ { "shift_percent": 0 }, { "shift_percent": 0.92 } ] ... }
- NEW __states__ declaration (for gear app)
- __states__ can now also be used in any app where dial/overlay/underlay is defined
Code:"dial": { ... "states": { "attribute": "percent_rpm", "values" : [ 0, 0.92 ] } ... }
- OLD __pedals__ declaration (for pedals app)
Code:"clutch": { "image": { "size": { "x": 54, "y": 100 }, "position": { "x": 0, "y": 0 }, "image": { "path": "pedals", "filename": "clutch.png" }, "background_opacity": 0 }, "bar": { "color": { "red": 0, "green": 0, "blue": 223 }, "position": { "x": 56, "y": { "start": 82, "max": 80 } }, "width": 3, "background_opacity": 1, "attribute": "clutch" } } ... "brake": { "image": { "size": { "x": 54, "y": 100 }, "position": { "x": 63, "y": 0 }, "image": { "path": "pedals", "filename": "brake.png" }, "background_opacity": 0 }, "bar": { "color": { "red": 223, "green": 0, "blue": 0 }, "position": { "x": 119, "y": { "start": 82, "max": 80 } }, "width": 3, "background_opacity": 1, "attribute": "brake" } } ... "accelerator": { "image": { "size": { "x": 54, "y": 100 }, "position": { "x": 126, "y": 0 }, "image": { "path": "pedals", "filename": "accelerator.png" }, "background_opacity": 0 }, "bar": { "color": { "red": 0, "green": 224, "blue": 0 }, "position": { "x": 182, "y": { "start": 100, "max": 98 } }, "width": 3, "background_opacity": 1, "attribute": "accelerator" } },
- NEW __pedals__ declaration (for pedals app)
- This is now modeled as __underlays__ and __bars__
- __bars__ can be used in any app
Code:"underlays": [ { "size": { "x": 54, "y": 100 }, "position": { "x": 0, "y": 0 }, "image": { "path": "pedals", "filename": "clutch.png" }, "background_opacity": 0 }, { "size": { "x": 54, "y": 100 }, "position": { "x": 63, "y": 0 }, "image": { "path": "pedals", "filename": "brake.png" }, "background_opacity": 0 }, { "size": { "x": 54, "y": 100 }, "position": { "x": 126, "y": 0 }, "image": { "path": "pedals", "filename": "accelerator.png" }, "background_opacity": 0 } ] ... "bars": [ { "color": { "red": 0, "green": 0, "blue": 223 }, "position": { "x": { "coordinates": { "min": 55, "max": 59 }, "attribute": { "name": "static_attribute", "min": 0, "max": 1 } }, "y": { "coordinates": { "min": 80, "max": 0 }, "attribute": { "name": "clutch", "min": 0, "max": 1 } } }, "background_opacity": 1 }, { "color": { "red": 223, "green": 0, "blue": 0 }, "position": { "x": { "coordinates": { "min": 119, "max": 123 }, "attribute": { "name": "static_attribute", "min": 0, "max": 1 } }, "y": { "coordinates": { "min": 80, "max": 0 }, "attribute": { "name": "brake", "min": 0, "max": 1 } } }, "background_opacity": 1 }, { "color": { "red": 0, "green": 224, "blue": 0 }, "position": { "x": { "coordinates": { "min": 182, "max": 187 }, "attribute": { "name": "static_attribute", "min": 0, "max": 1 } }, "y": { "coordinates": { "min": 100, "max": 0 }, "attribute": { "name": "accelerator", "min": 0, "max": 1 } } }, "background_opacity": 1 } ],
Changes in Latest Version (1.0.0 | 06-Oct-2014)
- Added in-game configuration GUI
Changes in Latest Version (0.4.0 | 29-Aug-2014)
- Updated for AC 0.22 shared memory update
Changes in Latest Version (0.3.0 | 15-Aug-2014)
- Added support for glass-type dial overlay
Changes in Latest Version (0.2.0 | 13-Aug-2014)
- Added skinning support!
- Added support for multiple states in gear shift app
- Added support for imperial/metric units
- Added support for apps not updating in the background when dismissed
- Added config file to save user preferences
- Various performance improvements