Compare commits

..

No commits in common. "c9c0942daf6473aca42060feb6b4701b1430c9de" and "b72e8f5ac8f1078d3265fb77d32fe35083f33576" have entirely different histories.

7 changed files with 28 additions and 92 deletions

25
TODO.md
View File

@ -2,11 +2,6 @@
## game data structure ## game data structure
add "from_dir" functions for structs
make that function generic?
--
what is the distinction between animate and inanimate objects? what is the distinction between animate and inanimate objects?
idea: idea:
@ -17,7 +12,21 @@ idea:
* each position could have (optionally) a tile and (optionally) a thing * each position could have (optionally) a tile and (optionally) a thing
* things have render priority * things have render priority
* ideally support gif/png for images (are there other indexed colour formats?) ### colours
~convert colours to hex~
* ~accept abcdef, #abcdef, 0xabcdef (inc. uppercase)~
* ~export as #abcdef~
### palettes
### images
* ideally support gif/png...
### parser
* ~move tests into their respective modules where appropriate~
## players ## players
@ -26,6 +35,10 @@ idea:
* text (how?) * text (how?)
* support older graphics adaptors * support older graphics adaptors
### linux
* ~get working~
### windows ### windows
* ~try to compile~ * ~try to compile~

View File

@ -4,9 +4,9 @@ use serde_derive::{Serialize, Deserialize};
#[derive(Debug, Eq, PartialEq)] #[derive(Debug, Eq, PartialEq)]
pub struct Entity { pub struct Entity {
pub name: String, name: String,
pub image: String, image: String,
pub tags: Vec<String>, tags: Vec<String>,
} }
impl Entity { impl Entity {

View File

@ -112,8 +112,8 @@ pub struct Game {
images: Vec<Image>, images: Vec<Image>,
tiles: Vec<Tile>, tiles: Vec<Tile>,
entities: Vec<Entity>, entities: Vec<Entity>,
// variables: Vec<Variable>, // variables: Vec<Variable>,
// triggers: HashMap<String, ScriptCollection>, // triggers: HashMap<String, ScriptCollection>,
music: Vec<Music>, music: Vec<Music>,
} }
@ -121,7 +121,9 @@ pub struct Game {
pub struct GameParseError; pub struct GameParseError;
impl Game { impl Game {
pub fn from(path: PathBuf) -> Result<Game, GameParseError> { pub fn from(path: String) -> Result<Game, GameParseError> {
let path = PathBuf::from(path);
let mut images = Vec::new(); let mut images = Vec::new();
let mut tiles = Vec::new(); let mut tiles = Vec::new();
let mut entities = Vec::new(); let mut entities = Vec::new();
@ -198,71 +200,4 @@ impl Game {
Ok(Game { config, images, tiles, palettes, music, entities }) Ok(Game { config, images, tiles, palettes, music, entities })
} }
// todo Result<&Image>?
pub fn get_image_by_name(&self, name: String) -> Option<&Image> {
for image in self.images.iter() {
if image.name == name {
return Some(&image);
}
}
None
}
pub fn get_entities_by_tag(&self, tag: &String) -> Vec<&Entity> {
let mut entities = Vec::new();
for entity in self.entities.iter() {
if entity.tags.contains(tag) {
entities.push(entity);
}
}
entities
}
// todo Result<&Entity>?
pub fn get_entity_by_name(&self, name: String) -> Option<&Entity> {
for entity in self.entities.iter() {
if entity.name == name {
return Some(&entity);
}
}
None
}
// todo Result<&Music>?
pub fn get_music_by_name(&self, name: String) -> Option<&Music> {
for music in self.music.iter() {
if music.name == name {
return Some(&music);
}
}
None
}
// todo Result<&Palette>?
pub fn get_palette_by_name(&self, name: String) -> Option<&Palette> {
for palette in self.palettes.iter() {
if palette.name == name {
return Some(&palette);
}
}
None
}
// todo Result<&Tile>?
pub fn get_tile_by_name(&self, name: String) -> Option<&Tile> {
for tile in self.tiles.iter() {
if tile.name == name {
return Some(&tile);
}
}
None
}
} }

View File

@ -1,2 +1,2 @@
image = "avatar" image = "avatar"
tags = ["player"] tags = []

View File

@ -1,2 +0,0 @@
image = "cat"
tags = []

View File

@ -1,2 +0,0 @@
image = "tea"
tags = []

View File

@ -1,8 +0,0 @@
00000000
00000000
00000000
00111100
01100100
00100100
00011000
00000000