oml-game 0.40.2-alpha

Game foundation extracted from Fiiish-RS to remove boilerplate for future procjects.
Documentation
use crate::system::filesystem_stream::FilesystemStream;
use crate::system::filesystem_stream_empty::FilesystemStreamEmpty;

pub trait Filesystem {
	fn open(&mut self, name: &str) -> Box<dyn FilesystemStream>;
	fn create(&mut self, name: &str, _overwrite: bool) -> Box<dyn FilesystemStream> {
		let stream = FilesystemStreamEmpty::open(name);

		Box::new(stream)
	}
	fn exists(&self, _name: &str) -> bool {
		false
	}

	fn writable(&self) -> bool {
		false
	}

	fn name(&self) -> &str;
	fn filesystem_type(&self) -> &str;

	fn format(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
		writeln!(
			f,
			"[Trait] Filesystem: {} [{}]",
			self.name(),
			self.filesystem_type()
		)
	}
}

impl std::fmt::Debug for dyn Filesystem {
	fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
		self.format(f)
	}
}