1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
use bevy::prelude::*;
use bevy_scoreboard::{Scoreboard, ScoreboardPlugin};

fn main() {
    App::new()
        .add_plugins((DefaultPlugins, ScoreboardPlugin))
        .insert_resource(ScoreTimer(Timer::from_seconds(1.0, TimerMode::Repeating)))
        .add_systems(Startup, startup)
        .add_systems(Update, update_scores)
        .run();
}

#[derive(Resource)]
struct ScoreTimer(Timer);

fn update_scores(
    mut score_timer: ResMut<ScoreTimer>,
    mut scoreboard: ResMut<Scoreboard>,
    time: Res<Time>,
) {
    score_timer.0.tick(time.delta());
    if score_timer.0.just_finished() {
        scoreboard.increment(1, 1);
        scoreboard.increment(2, 2);
        scoreboard.increment(3, 4);
        scoreboard.increment(4, 8);
    }
}

fn startup(mut commands: Commands, mut scoreboard: ResMut<Scoreboard>) {
    scoreboard.add_player(1, "Ferris", Color::srgb(1., 0., 0.));
    scoreboard.add_player(2, "Paul", Color::srgb(0., 1., 0.));
    scoreboard.add_player(3, "George", Color::srgb(0., 0., 1.));
    scoreboard.add_player(4, "Ringo", Color::srgb(1., 1., 0.));
    commands.spawn(Camera2dBundle::default());
}