53 lines
1.2 KiB
Rust
53 lines
1.2 KiB
Rust
use crate::std_bis::*;
|
|
use crate::{board, entities};
|
|
|
|
use parity_scale_codec::{Decode, Encode};
|
|
#[cfg(feature = "std")]
|
|
use std::collections::BTreeMap;
|
|
|
|
#[derive(Clone, Copy, Debug, Decode, Encode, Eq, Hash, Ord, PartialEq, PartialOrd)]
|
|
pub struct SimId(pub [u8; 16]);
|
|
|
|
impl sp_runtime_interface::pass_by::PassBy for SimId {
|
|
type PassBy = sp_runtime_interface::pass_by::Codec<Self>;
|
|
}
|
|
|
|
#[derive(Clone, Copy, Debug, Decode, Encode, Eq, Hash, Ord, PartialEq, PartialOrd)]
|
|
pub struct EntityId(pub u32);
|
|
|
|
impl sp_runtime_interface::pass_by::PassBy for EntityId {
|
|
type PassBy = sp_runtime_interface::pass_by::Codec<Self>;
|
|
}
|
|
|
|
#[derive(Clone, Debug, Decode, Encode, Eq, PartialEq)]
|
|
pub enum SimError {
|
|
EntityNotFound,
|
|
SimNotFound,
|
|
}
|
|
|
|
impl sp_runtime_interface::pass_by::PassBy for SimError {
|
|
type PassBy = sp_runtime_interface::pass_by::Codec<Self>;
|
|
}
|
|
|
|
#[cfg(feature = "std")]
|
|
pub use sim::*;
|
|
|
|
#[cfg(feature = "std")]
|
|
mod sim {
|
|
use super::*;
|
|
|
|
#[derive(Debug)]
|
|
pub struct Sim {
|
|
pub board: board::Board,
|
|
pub entities: BTreeMap<EntityId, entities::Entity>,
|
|
pub entity_counter: u32,
|
|
}
|
|
|
|
impl Sim {
|
|
pub fn add_entity(&mut self, entity: entities::Entity) {
|
|
self.entities.insert(EntityId(self.entity_counter), entity);
|
|
self.entity_counter += 1;
|
|
}
|
|
}
|
|
}
|