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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/*
* This file is part of laurelin_client
* Copyright (C) 2023 Jonni Liljamo <jonni@liljamo.com>
*
* Licensed under GPL-3.0-only.
* See LICENSE for licensing information.
*/
use bevy::{asset::{AssetLoader, LoadedAsset}, reflect::TypeUuid};
pub mod egui;
mod action_to_log;
pub use action_to_log::action_to_log;
use crate::game_status::{GameStatus, PlayerStatus};
pub fn get_next_player<'a>(player: &'a PlayerStatus, game_status: &'a GameStatus) -> (&'a String, &'a PlayerStatus) {
let next_turn_n: usize = if (player.turn_n + 1) > (game_status.players.len() - 1)
{
0
} else {
player.turn_n + 1
};
game_status
.players
.iter()
.find(|np| np.1.turn_n == next_turn_n)
.unwrap()
}
#[derive(Debug, TypeUuid)]
#[uuid = "da42e27e-e968-4c6a-9892-d96e38b0e643"]
pub struct YamlAsset(pub String);
#[derive(Default)]
pub struct YamlLoader;
impl AssetLoader for YamlLoader {
fn load<'a>(
&'a self,
bytes: &'a [u8],
load_context: &'a mut bevy::asset::LoadContext,
) -> bevy::utils::BoxedFuture<'a, Result<(), bevy::asset::Error>> {
Box::pin(async move {
let yaml_str = std::str::from_utf8(bytes)?;
let asset = YamlAsset(yaml_str.into());
load_context.set_default_asset(LoadedAsset::new(asset));
Ok(())
})
}
fn extensions(&self) -> &[&str] {
&["yaml"]
}
}