more clippy fixes
This commit is contained in:
parent
1d7e3f0704
commit
a6bcc763e9
|
@ -74,8 +74,8 @@ impl FromStr for Exit {
|
|||
|
||||
let position = position.unwrap();
|
||||
|
||||
let effect = if parts.next().is_some() {
|
||||
Transition::from(parts.next().unwrap())
|
||||
let effect = if let Some(transition_line) = parts.next() {
|
||||
Transition::from(transition_line)
|
||||
} else {
|
||||
Transition::None
|
||||
};
|
||||
|
|
137
src/game.rs
137
src/game.rs
|
@ -6,7 +6,7 @@ use std::str::FromStr;
|
|||
use std::collections::HashMap;
|
||||
use std::borrow::BorrowMut;
|
||||
use std::fmt;
|
||||
use std::fmt::{Display, Formatter};
|
||||
use std::fmt::Display;
|
||||
|
||||
/// in very early versions of Bitsy, room tiles were defined as single alphanumeric characters -
|
||||
/// so there was a maximum of 36 unique tiles. later versions are comma-separated.
|
||||
|
@ -60,7 +60,8 @@ pub struct InvalidVersion;
|
|||
|
||||
impl Version {
|
||||
fn from(str: &str) -> Result<Version, InvalidVersion> {
|
||||
let parts: Vec<&str> = str.split(".").collect();
|
||||
let parts: Vec<&str> = str.split('.').collect();
|
||||
|
||||
if parts.len() == 2 {
|
||||
Ok(Version {
|
||||
major: parts[0].parse().unwrap(),
|
||||
|
@ -85,11 +86,11 @@ pub enum NotFound {
|
|||
impl Display for NotFound {
|
||||
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
||||
write!(f,"Not found: {} data", match self {
|
||||
&NotFound::Anything => "game",
|
||||
&NotFound::Avatar => "avatar",
|
||||
&NotFound::Room => "room",
|
||||
&NotFound::Sprite => "sprite",
|
||||
&NotFound::Tile => "tile",
|
||||
NotFound::Anything => "game",
|
||||
NotFound::Avatar => "avatar",
|
||||
NotFound::Room => "room",
|
||||
NotFound::Sprite => "sprite",
|
||||
NotFound::Tile => "tile",
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -124,7 +125,7 @@ impl Game {
|
|||
// would be nice to *try* to parse a game, and catalogue any and all errors without crashing,
|
||||
// for display purposes etc.
|
||||
pub fn from(string: String) -> Result<Game, NotFound> {
|
||||
if string.clone().trim() == "".to_string() {
|
||||
if string.trim() == "" {
|
||||
return Err(NotFound::Anything);
|
||||
}
|
||||
|
||||
|
@ -134,7 +135,7 @@ impl Game {
|
|||
string = transform_line_endings(string, TransformMode::LF)
|
||||
}
|
||||
|
||||
let string = string.trim_start_matches("\n").to_string();
|
||||
let string = string.trim_start_matches('\n').to_string();
|
||||
let mut segments = segments_from_string(string);
|
||||
|
||||
let mut name = "".to_string();
|
||||
|
@ -187,8 +188,8 @@ impl Game {
|
|||
if segment.starts_with("# BITSY VERSION") {
|
||||
let segment = segment.replace("# BITSY VERSION ", "");
|
||||
let segment = Version::from(&segment);
|
||||
if segment.is_ok() {
|
||||
version = Some(segment.unwrap());
|
||||
if let Ok(segment) = segment {
|
||||
version = Some(segment);
|
||||
}
|
||||
} else if segment.starts_with("! ROOM_FORMAT") {
|
||||
let segment = segment.replace("! ROOM_FORMAT ", "");
|
||||
|
@ -203,7 +204,7 @@ impl Game {
|
|||
if font == Font::Custom {
|
||||
custom_font = Some(segment.to_string());
|
||||
}
|
||||
} else if segment.trim() == "TEXT_DIRECTION RTL".to_string() {
|
||||
} else if segment.trim() == "TEXT_DIRECTION RTL" {
|
||||
text_direction = TextDirection::RightToLeft;
|
||||
} else if segment.starts_with("PAL ") {
|
||||
palettes.push(Palette::from(segment));
|
||||
|
@ -216,11 +217,10 @@ impl Game {
|
|||
tiles.push(Tile::from(segment));
|
||||
} else if segment.starts_with("SPR ") {
|
||||
let sprite = Sprite::from(segment);
|
||||
if sprite.is_ok() {
|
||||
let sprite = sprite.unwrap();
|
||||
if ! avatar_exists && sprite.id == "A".to_string() {
|
||||
avatar_exists = true;
|
||||
}
|
||||
|
||||
if let Ok(sprite) = sprite {
|
||||
avatar_exists |= sprite.id == "A";
|
||||
|
||||
sprites.push(sprite);
|
||||
}
|
||||
} else if segment.starts_with("ITM ") {
|
||||
|
@ -228,9 +228,8 @@ impl Game {
|
|||
} else if segment.starts_with("DLG ") {
|
||||
dialogues.push(Dialogue::from(segment));
|
||||
} else if segment.starts_with("END ") {
|
||||
let ending = Ending::from_str(&segment);
|
||||
if ending.is_ok() {
|
||||
endings.push(ending.unwrap());
|
||||
if let Ok(ending) = Ending::from_str(&segment) {
|
||||
endings.push(ending);
|
||||
}
|
||||
} else if segment.starts_with("VAR ") {
|
||||
variables.push(Variable::from(segment));
|
||||
|
@ -272,10 +271,9 @@ impl Game {
|
|||
|sprite| sprite.id == id
|
||||
);
|
||||
|
||||
if index.is_some() {
|
||||
Ok(&self.sprites[index.unwrap()])
|
||||
} else {
|
||||
Err(NotFound::Sprite)
|
||||
match index {
|
||||
Some(index) => Ok(&self.sprites[index]),
|
||||
None => Err(NotFound::Sprite),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -284,10 +282,9 @@ impl Game {
|
|||
|tile| tile.id == id
|
||||
);
|
||||
|
||||
if index.is_some() {
|
||||
Ok(&self.tiles[index.unwrap()])
|
||||
} else {
|
||||
Err(NotFound::Tile)
|
||||
match index {
|
||||
Some(index) => Ok(&self.tiles[index]),
|
||||
None => Err(NotFound::Tile),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -296,10 +293,9 @@ impl Game {
|
|||
|room| room.id == id
|
||||
);
|
||||
|
||||
if index.is_some() {
|
||||
Ok(&self.rooms[index.unwrap()])
|
||||
} else {
|
||||
Err(NotFound::Room)
|
||||
match index {
|
||||
Some(index) => Ok(&self.rooms[index]),
|
||||
None => Err(NotFound::Room),
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -312,9 +308,8 @@ impl Game {
|
|||
let mut tiles: Vec<&Tile> = Vec::new();
|
||||
|
||||
for id in ids {
|
||||
let tile = self.get_tile_by_id(id);
|
||||
if tile.is_ok() {
|
||||
tiles.push(tile.unwrap());
|
||||
if let Ok(tile) = self.get_tile_by_id(id) {
|
||||
tiles.push(tile);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -331,9 +326,9 @@ impl Game {
|
|||
tile_ids.dedup();
|
||||
// remove 0 as this isn't a real tile
|
||||
let zero_index = tile_ids.iter()
|
||||
.position(|i| i == &"0".to_string());
|
||||
if zero_index.is_some() {
|
||||
tile_ids.remove(zero_index.unwrap());
|
||||
.position(|i| i == "0");
|
||||
if let Some(zero_index) = zero_index {
|
||||
tile_ids.remove(zero_index);
|
||||
}
|
||||
// remove Ok once this function returns a result
|
||||
Ok(self.get_tiles_by_ids(tile_ids))
|
||||
|
@ -428,11 +423,9 @@ impl Game {
|
|||
item.id = item_id_changes[&item.id].clone();
|
||||
}
|
||||
|
||||
if item.dialogue_id.is_some() {
|
||||
let key = item.dialogue_id.clone().unwrap();
|
||||
let change = dialogue_id_changes.get(&key);
|
||||
if change.is_some() {
|
||||
item.dialogue_id = Some(change.unwrap().clone());
|
||||
if let Some(key) = item.dialogue_id.clone() {
|
||||
if let Some(change) = dialogue_id_changes.get(&key) {
|
||||
item.dialogue_id = Some(change.clone());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -443,7 +436,7 @@ impl Game {
|
|||
// to insert any new room, we need to know the new IDs of every room
|
||||
// to maintain the integrity of exits and endings
|
||||
|
||||
let mut all_room_ids = self.room_ids().clone();
|
||||
let mut all_room_ids = self.room_ids();
|
||||
|
||||
for room in &game.rooms {
|
||||
let old = room.id.clone();
|
||||
|
@ -457,16 +450,13 @@ impl Game {
|
|||
for room in &game.rooms {
|
||||
let mut room = room.clone();
|
||||
|
||||
let room_id_change = room_id_changes.get(&room.id);
|
||||
if room_id_change.is_some() {
|
||||
room.id = room_id_change.unwrap().clone();
|
||||
if let Some(room_id_change) = room_id_changes.get(&room.id) {
|
||||
room.id = room_id_change.clone();
|
||||
}
|
||||
|
||||
if room.palette_id.is_some() {
|
||||
let key = room.palette_id.clone().unwrap();
|
||||
let change = palette_id_changes.get(&key);
|
||||
if change.is_some() {
|
||||
room.palette_id = Some(change.unwrap().clone());
|
||||
if let Some(key) = room.palette_id.clone() {
|
||||
if let Some(change) = palette_id_changes.get(&key) {
|
||||
room.palette_id = Some(change.clone());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -487,16 +477,14 @@ impl Game {
|
|||
let mut exit = exit.clone();
|
||||
|
||||
let key = exit.exit.room_id.clone();
|
||||
let change = room_id_changes.get(&key);
|
||||
if change.is_some() {
|
||||
exit.exit.room_id = change.unwrap().clone();
|
||||
|
||||
if let Some(change) = room_id_changes.get(&key) {
|
||||
exit.exit.room_id = change.clone();
|
||||
}
|
||||
|
||||
if exit.dialogue_id.is_some() {
|
||||
let key = exit.dialogue_id.clone().unwrap();
|
||||
let dialogue_change = dialogue_id_changes.get(&key);
|
||||
if dialogue_change.is_some() {
|
||||
exit.dialogue_id = Some(dialogue_change.unwrap().clone());
|
||||
if let Some(key) = exit.dialogue_id.clone() {
|
||||
if let Some(dialogue_change) = dialogue_id_changes.get(&key) {
|
||||
exit.dialogue_id = Some(dialogue_change.clone());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -506,10 +494,11 @@ impl Game {
|
|||
room.endings = room.endings.iter().map(|ending| {
|
||||
let mut ending = ending.clone();
|
||||
let key = ending.id.clone();
|
||||
let change = ending_id_changes.get(&key);
|
||||
if change.is_some() {
|
||||
ending.id = change.unwrap().clone();
|
||||
|
||||
if let Some(change) = ending_id_changes.get(&key) {
|
||||
ending.id = change.clone();
|
||||
}
|
||||
|
||||
ending
|
||||
}).collect();
|
||||
|
||||
|
@ -521,22 +510,19 @@ impl Game {
|
|||
for sprite in &game.sprites {
|
||||
let mut sprite = sprite.clone();
|
||||
// avoid having two avatars
|
||||
if sprite.id == "A".to_string() {
|
||||
if sprite.id == "A" {
|
||||
sprite.id = "0".to_string(); // just a default value for replacement
|
||||
}
|
||||
|
||||
if sprite.dialogue_id.is_some() {
|
||||
let key = sprite.dialogue_id.clone().unwrap();
|
||||
if let Some(key) = sprite.dialogue_id.clone() {
|
||||
if dialogue_id_changes.contains_key(&key) {
|
||||
sprite.dialogue_id = Some(dialogue_id_changes[&key].clone());
|
||||
}
|
||||
}
|
||||
|
||||
if sprite.room_id.is_some() {
|
||||
let key = sprite.room_id.clone().unwrap();
|
||||
let change = room_id_changes.get(&key);
|
||||
if change.is_some() {
|
||||
sprite.room_id = Some(change.unwrap().clone());
|
||||
if let Some(key) = sprite.room_id.clone() {
|
||||
if let Some(change) = room_id_changes.get(&key) {
|
||||
sprite.room_id = Some(change.clone());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -689,8 +675,8 @@ impl Game {
|
|||
None
|
||||
}
|
||||
|
||||
pub fn find_tile_with_animation(&self, animation: &Vec<Image>) -> Option<&Tile> {
|
||||
self.tiles.iter().find(|&tile| &tile.animation_frames == animation)
|
||||
pub fn find_tile_with_animation(&self, animation: &[Image]) -> Option<&Tile> {
|
||||
self.tiles.iter().find(|&tile| tile.animation_frames.as_slice() == animation)
|
||||
}
|
||||
|
||||
/// adds a palette safely and returns the ID
|
||||
|
@ -705,12 +691,13 @@ impl Game {
|
|||
|
||||
/// adds a tile safely and returns the ID
|
||||
pub fn add_tile(&mut self, mut tile: Tile) -> String {
|
||||
if tile.id == "0".to_string() || self.tile_ids().contains(&tile.id) {
|
||||
if tile.id == "0" || self.tile_ids().contains(&tile.id) {
|
||||
let new_id = self.new_tile_id();
|
||||
if new_id != tile.id {
|
||||
tile.id = new_id;
|
||||
}
|
||||
}
|
||||
|
||||
let id = tile.id.clone();
|
||||
self.tiles.push(tile);
|
||||
id
|
||||
|
@ -784,7 +771,7 @@ impl Game {
|
|||
let mut unique_tiles: Vec<Tile> = Vec::new();
|
||||
let mut tile_id_changes: HashMap<String, String> = HashMap::new();
|
||||
|
||||
while tiles_temp.len() > 0 {
|
||||
while !tiles_temp.is_empty() {
|
||||
let tile = tiles_temp.pop().unwrap();
|
||||
|
||||
if tile == crate::mock::tile_background() {
|
||||
|
|
|
@ -89,7 +89,7 @@ impl ToString for Image {
|
|||
}
|
||||
|
||||
pub(crate) fn animation_frames_from_string(string: String) -> Vec<Image> {
|
||||
let frames: Vec<&str> = string.split(">").collect();
|
||||
let frames: Vec<&str> = string.split('>').collect();
|
||||
|
||||
frames.iter().map(|&frame| Image::from(frame.to_string())).collect()
|
||||
}
|
||||
|
@ -146,7 +146,7 @@ mod test {
|
|||
let output = Image::from(
|
||||
include_str!("test-resources/image-oob").to_string()
|
||||
);
|
||||
|
||||
|
||||
let expected = Image {
|
||||
pixels: vec![
|
||||
1,1,1,1,1,1,1,1,
|
||||
|
@ -159,7 +159,7 @@ mod test {
|
|||
0,0,0,0,0,0,0,0,
|
||||
]
|
||||
};
|
||||
|
||||
|
||||
assert_eq!(output, expected);
|
||||
}
|
||||
|
||||
|
|
|
@ -62,7 +62,7 @@ impl AnimationFrames for Vec<Image> {
|
|||
let mut string = String::new();
|
||||
let last_frame = self.len() - 1;
|
||||
|
||||
for (i, frame) in self.into_iter().enumerate() {
|
||||
for (i, frame) in self.iter().enumerate() {
|
||||
string.push_str(&frame.to_string());
|
||||
|
||||
if i < last_frame {
|
||||
|
|
|
@ -14,7 +14,7 @@ impl From<String> for Palette {
|
|||
let id = lines[0].replace("PAL ", "");
|
||||
|
||||
let name = match lines[1].starts_with("NAME") {
|
||||
true => Some(lines[1].replace("NAME ", "").to_string()),
|
||||
true => Some(lines[1].replace("NAME ", "")),
|
||||
false => None,
|
||||
};
|
||||
|
||||
|
|
20
src/room.rs
20
src/room.rs
|
@ -33,18 +33,17 @@ impl Room {
|
|||
}
|
||||
|
||||
fn wall_line(&self) -> String {
|
||||
if self.walls.len() > 0 {
|
||||
optional_data_line("WAL", Some(self.walls.join(",")))
|
||||
} else {
|
||||
if self.walls.is_empty() {
|
||||
"".to_string()
|
||||
} else {
|
||||
optional_data_line("WAL", Some(self.walls.join(",")))
|
||||
}
|
||||
}
|
||||
|
||||
fn palette_line(&self) -> String {
|
||||
if self.palette_id.is_some() {
|
||||
optional_data_line("PAL", Some(self.palette_id.as_ref().unwrap()))
|
||||
} else {
|
||||
"".to_string()
|
||||
match &self.palette_id {
|
||||
Some(id) => optional_data_line("PAL", Some(id.clone())),
|
||||
None => "".to_string(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -195,9 +194,10 @@ impl Room {
|
|||
"\nEXT {} {}{}{}{}",
|
||||
instance.position.to_string(),
|
||||
instance.exit.to_string(),
|
||||
if instance.transition.is_some() {
|
||||
instance.transition.as_ref().unwrap().to_string()
|
||||
} else {"".to_string()},
|
||||
match &instance.transition {
|
||||
Some(transition) => transition,
|
||||
None => &Transition::None,
|
||||
}.to_string(),
|
||||
if instance.dialogue_id.is_some() {" DLG "} else {""},
|
||||
instance.dialogue_id.as_ref().unwrap_or(&"".to_string()),
|
||||
));
|
||||
|
|
Loading…
Reference in New Issue