Add leader board config
This commit is contained in:
parent
0ff934217d
commit
52ac0952dc
3 changed files with 33 additions and 8 deletions
|
@ -2,6 +2,7 @@ mod bg_generator;
|
||||||
mod leaderboard_entry;
|
mod leaderboard_entry;
|
||||||
|
|
||||||
use leaderboard_entry::*;
|
use leaderboard_entry::*;
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
|
|
||||||
use std::{
|
use std::{
|
||||||
ffi::{c_char, CStr},
|
ffi::{c_char, CStr},
|
||||||
|
@ -11,7 +12,6 @@ use std::{
|
||||||
use anyhow::Result;
|
use anyhow::Result;
|
||||||
use rfactor_sm_reader::{rF2VehicleTelemetry, VehicleScoringInfoV01};
|
use rfactor_sm_reader::{rF2VehicleTelemetry, VehicleScoringInfoV01};
|
||||||
use ui::prelude::*;
|
use ui::prelude::*;
|
||||||
use utilities::prelude::Color;
|
|
||||||
use vulkan_rs::prelude::*;
|
use vulkan_rs::prelude::*;
|
||||||
|
|
||||||
use crate::overlay::{
|
use crate::overlay::{
|
||||||
|
@ -20,7 +20,24 @@ use crate::overlay::{
|
||||||
};
|
};
|
||||||
use crate::write_log;
|
use crate::write_log;
|
||||||
|
|
||||||
use self::bg_generator::BackgroundGenerator;
|
use bg_generator::BackgroundGenerator;
|
||||||
|
|
||||||
|
#[derive(Default, Deserialize, Serialize, Clone, Copy)]
|
||||||
|
pub struct LeaderBoardConfig {
|
||||||
|
first_board_color: [f32; 3],
|
||||||
|
second_board_color: [f32; 3],
|
||||||
|
player_board_color: [f32; 3],
|
||||||
|
}
|
||||||
|
|
||||||
|
impl LeaderBoardConfig {
|
||||||
|
pub const fn new() -> Self {
|
||||||
|
Self {
|
||||||
|
first_board_color: [0.33; 3],
|
||||||
|
second_board_color: [0.51; 3],
|
||||||
|
player_board_color: [0.7, 0.75, 0.15],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub struct LeaderBoard {
|
pub struct LeaderBoard {
|
||||||
gui_handler: Arc<GuiHandler>,
|
gui_handler: Arc<GuiHandler>,
|
||||||
|
@ -44,7 +61,10 @@ impl LeaderBoard {
|
||||||
const LEADERBOARD: &str = include_str!("leaderboard_grid.xml");
|
const LEADERBOARD: &str = include_str!("leaderboard_grid.xml");
|
||||||
const DELTABOARD: &str = include_str!("deltaboard_grid.xml");
|
const DELTABOARD: &str = include_str!("deltaboard_grid.xml");
|
||||||
|
|
||||||
pub fn new(gui_handler: &Arc<GuiHandler>) -> Result<Self> {
|
pub fn new(
|
||||||
|
gui_handler: &Arc<GuiHandler>,
|
||||||
|
leader_board_config: LeaderBoardConfig,
|
||||||
|
) -> Result<Self> {
|
||||||
let leaderboard = GuiBuilder::from_str(gui_handler, Self::LEADERBOARD)?;
|
let leaderboard = GuiBuilder::from_str(gui_handler, Self::LEADERBOARD)?;
|
||||||
let deltaboard = GuiBuilder::from_str(gui_handler, Self::DELTABOARD)?;
|
let deltaboard = GuiBuilder::from_str(gui_handler, Self::DELTABOARD)?;
|
||||||
|
|
||||||
|
@ -64,15 +84,15 @@ impl LeaderBoard {
|
||||||
|
|
||||||
let colors = [
|
let colors = [
|
||||||
{
|
{
|
||||||
let a: [f32; 3] = Color::try_from("#545454")?.into();
|
let a = leader_board_config.first_board_color;
|
||||||
[a[0], a[1], a[2], 1.0]
|
[a[0], a[1], a[2], 1.0]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
let a: [f32; 3] = Color::try_from("#838383")?.into();
|
let a = leader_board_config.second_board_color;
|
||||||
[a[0], a[1], a[2], 1.0]
|
[a[0], a[1], a[2], 1.0]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
let a: [f32; 3] = Color::try_from("#b4bf26")?.into();
|
let a = leader_board_config.player_board_color;
|
||||||
[a[0], a[1], a[2], 1.0]
|
[a[0], a[1], a[2], 1.0]
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
|
@ -42,7 +42,7 @@ impl RadarConfig {
|
||||||
Self {
|
Self {
|
||||||
radar_scale: 1.0,
|
radar_scale: 1.0,
|
||||||
radar_center_factor: 0.25,
|
radar_center_factor: 0.25,
|
||||||
radar_transparency: 0.5,
|
radar_transparency: 0.3,
|
||||||
height_scale: 0.15,
|
height_scale: 0.15,
|
||||||
width_scale: 0.4,
|
width_scale: 0.4,
|
||||||
radar_car_distance: 20.0,
|
radar_car_distance: 20.0,
|
||||||
|
|
|
@ -49,6 +49,7 @@ impl UiSelectorConfig {
|
||||||
pub struct OverlayConfig {
|
pub struct OverlayConfig {
|
||||||
pub ui_config: UiSelectorConfig,
|
pub ui_config: UiSelectorConfig,
|
||||||
pub radar_config: RadarConfig,
|
pub radar_config: RadarConfig,
|
||||||
|
pub leader_board_config: LeaderBoardConfig,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl OverlayConfig {
|
impl OverlayConfig {
|
||||||
|
@ -56,6 +57,7 @@ impl OverlayConfig {
|
||||||
Self {
|
Self {
|
||||||
ui_config: UiSelectorConfig::new(),
|
ui_config: UiSelectorConfig::new(),
|
||||||
radar_config: RadarConfig::new(),
|
radar_config: RadarConfig::new(),
|
||||||
|
leader_board_config: LeaderBoardConfig::new(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -208,7 +210,10 @@ impl Overlay {
|
||||||
|
|
||||||
// create leaderboard
|
// create leaderboard
|
||||||
if self.config.ui_config.enable_leaderboard {
|
if self.config.ui_config.enable_leaderboard {
|
||||||
let leaderboard = Rc::new(RefCell::new(LeaderBoard::new(&gui_handler)?));
|
let leaderboard = Rc::new(RefCell::new(LeaderBoard::new(
|
||||||
|
&gui_handler,
|
||||||
|
self.config.leader_board_config,
|
||||||
|
)?));
|
||||||
self.ui_elements.push(leaderboard);
|
self.ui_elements.push(leaderboard);
|
||||||
|
|
||||||
write_log!("Leader Board successfully created");
|
write_log!("Leader Board successfully created");
|
||||||
|
|
Loading…
Reference in a new issue