pub trait GameData {
type Tileset: TilesetTrait;
type Map: MapTrait;
type Palette: PaletteTrait;
type TileMeta: TileMetaTrait;
type Move: Copy + Eq + Hash + Debug;
type Item: Copy + Eq + Hash + Debug;
type Species: Copy + Eq + Hash + Debug;
// Required methods
fn tileset_provider(&self) -> &dyn TilesetProvider<Self::Tileset>;
fn map_provider(&self) -> &dyn MapProvider<Self::Map>;
fn palette_provider(&self) -> &dyn PaletteProvider<Self::Palette>;
fn tile_metadata(&self) -> &dyn TileMetadata<Self::TileMeta>;
fn render_data(
&self,
) -> &dyn RenderData<Move = Self::Move, Item = Self::Item, Species = Self::Species>;
}Expand description
Master trait that provides access to all game data subsystems.
GameData is the central dependency-injection point for the engine.
Implementations supply concrete types for tilesets, maps, palettes,
tile metadata, moves, items, and species, along with provider objects
that serve the corresponding data.
§Type Parameters
Tileset— ATilesetTraitimplementation (typically an enum of tileset IDs).Map— AMapTraitimplementation (typically an enum of map IDs).Palette— APaletteTraitimplementation (typically an enum of palette IDs).TileMeta— ATileMetaTraitimplementation for tile collision lookups.Move— The move/ability ID type (Copy + Eq + Hash + Debug).Item— The item ID type (Copy + Eq + Hash + Debug).Species— The species/monster ID type (Copy + Eq + Hash + Debug).
§Example
ⓘ
struct MonsterGameData;
impl GameData for MonsterGameData {
type Tileset = TilesetId;
type Map = MapId;
type Palette = PaletteId;
type TileMeta = TileMetaId;
type Move = MoveId;
type Item = ItemId;
type Species = SpeciesId;
fn tileset_provider(&self) -> &dyn TilesetProvider<Self::Tileset> {
&MY_TILESET_PROVIDER
}
// ... etc
}Required Associated Types§
Sourcetype Tileset: TilesetTrait
type Tileset: TilesetTrait
The tileset identifier type.
Sourcetype Palette: PaletteTrait
type Palette: PaletteTrait
The palette identifier type.
Sourcetype TileMeta: TileMetaTrait
type TileMeta: TileMetaTrait
The tile metadata identifier type.
Required Methods§
Sourcefn tileset_provider(&self) -> &dyn TilesetProvider<Self::Tileset>
fn tileset_provider(&self) -> &dyn TilesetProvider<Self::Tileset>
Returns a reference to the tileset data provider.
Sourcefn map_provider(&self) -> &dyn MapProvider<Self::Map>
fn map_provider(&self) -> &dyn MapProvider<Self::Map>
Returns a reference to the map data provider.
Sourcefn palette_provider(&self) -> &dyn PaletteProvider<Self::Palette>
fn palette_provider(&self) -> &dyn PaletteProvider<Self::Palette>
Returns a reference to the palette data provider.
Sourcefn tile_metadata(&self) -> &dyn TileMetadata<Self::TileMeta>
fn tile_metadata(&self) -> &dyn TileMetadata<Self::TileMeta>
Returns a reference to the tile metadata provider.
Sourcefn render_data(
&self,
) -> &dyn RenderData<Move = Self::Move, Item = Self::Item, Species = Self::Species>
fn render_data( &self, ) -> &dyn RenderData<Move = Self::Move, Item = Self::Item, Species = Self::Species>
Returns a reference to the render data provider.
Dyn Compatibility§
This trait is dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety".