dev/ajustments-asset-entry #12
@ -182,7 +182,7 @@ impl AssetManager {
|
|||||||
fn decode_glyph_bank_layout(
|
fn decode_glyph_bank_layout(
|
||||||
entry: &AssetEntry,
|
entry: &AssetEntry,
|
||||||
) -> Result<(TileSize, usize, usize, usize), String> {
|
) -> Result<(TileSize, usize, usize, usize), String> {
|
||||||
let meta = entry.metadata_as_glyphs()?;
|
let meta = entry.metadata_as_glyph_bank()?;
|
||||||
|
|
||||||
let tile_size = match meta.tile_size {
|
let tile_size = match meta.tile_size {
|
||||||
8 => TileSize::Size8,
|
8 => TileSize::Size8,
|
||||||
@ -624,7 +624,7 @@ impl AssetManager {
|
|||||||
entry: &AssetEntry,
|
entry: &AssetEntry,
|
||||||
buffer: &[u8],
|
buffer: &[u8],
|
||||||
) -> Result<SoundBank, String> {
|
) -> Result<SoundBank, String> {
|
||||||
let meta = entry.metadata_as_sounds()?;
|
let meta = entry.metadata_as_sound_bank()?;
|
||||||
let sample_rate = meta.sample_rate;
|
let sample_rate = meta.sample_rate;
|
||||||
|
|
||||||
let mut data = Vec::with_capacity(buffer.len() / 2);
|
let mut data = Vec::with_capacity(buffer.len() / 2);
|
||||||
@ -913,7 +913,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_decode_glyph_bank_unpacks_packed_pixels_and_reads_palette_colors() {
|
fn test_decode_glyph_bank_unpacks_packed_pixels_and_reads_palette_colors() {
|
||||||
let entry = test_glyph_asset_entry("tiles", 2, 2);
|
let entry = test_glyph_asset_entry("glyphs", 2, 2);
|
||||||
let mut data = vec![0x10, 0x23];
|
let mut data = vec![0x10, 0x23];
|
||||||
data.extend_from_slice(&[0u8; GLYPH_BANK_PALETTE_BYTES_V1]);
|
data.extend_from_slice(&[0u8; GLYPH_BANK_PALETTE_BYTES_V1]);
|
||||||
data[2] = 0x34;
|
data[2] = 0x34;
|
||||||
@ -928,7 +928,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_decode_glyph_bank_rejects_short_packed_buffer() {
|
fn test_decode_glyph_bank_rejects_short_packed_buffer() {
|
||||||
let entry = test_glyph_asset_entry("tiles", 16, 16);
|
let entry = test_glyph_asset_entry("glyphs", 16, 16);
|
||||||
let data = vec![0u8; expected_glyph_payload_size(16, 16) - 1];
|
let data = vec![0u8; expected_glyph_payload_size(16, 16) - 1];
|
||||||
|
|
||||||
let err = match AssetManager::decode_glyph_bank_from_buffer(&entry, &data) {
|
let err = match AssetManager::decode_glyph_bank_from_buffer(&entry, &data) {
|
||||||
@ -941,7 +941,7 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_decode_glyph_bank_requires_palette_count_64() {
|
fn test_decode_glyph_bank_requires_palette_count_64() {
|
||||||
let mut entry = test_glyph_asset_entry("tiles", 16, 16);
|
let mut entry = test_glyph_asset_entry("glyphs", 16, 16);
|
||||||
entry.metadata["palette_count"] = serde_json::json!(32);
|
entry.metadata["palette_count"] = serde_json::json!(32);
|
||||||
|
|
||||||
let err =
|
let err =
|
||||||
@ -955,14 +955,14 @@ mod tests {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_op_mode_for_glyphs_none_stages_in_memory() {
|
fn test_op_mode_for_glyphs_none_stages_in_memory() {
|
||||||
let entry = test_glyph_asset_entry("tiles", 16, 16);
|
let entry = test_glyph_asset_entry("glyphs", 16, 16);
|
||||||
|
|
||||||
assert_eq!(AssetManager::op_mode_for(&entry), Ok(AssetOpMode::StageInMemory));
|
assert_eq!(AssetManager::op_mode_for(&entry), Ok(AssetOpMode::StageInMemory));
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_op_mode_for_glyphs_none_uses_typed_codec() {
|
fn test_op_mode_for_glyphs_none_uses_typed_codec() {
|
||||||
let entry = test_glyph_asset_entry("tiles", 16, 16);
|
let entry = test_glyph_asset_entry("glyphs", 16, 16);
|
||||||
assert_eq!(AssetManager::op_mode_for(&entry), Ok(AssetOpMode::StageInMemory));
|
assert_eq!(AssetManager::op_mode_for(&entry), Ok(AssetOpMode::StageInMemory));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -992,7 +992,7 @@ mod tests {
|
|||||||
let sound_installer = Arc::clone(&banks) as Arc<dyn SoundBankPoolInstaller>;
|
let sound_installer = Arc::clone(&banks) as Arc<dyn SoundBankPoolInstaller>;
|
||||||
|
|
||||||
let data = test_glyph_asset_data();
|
let data = test_glyph_asset_data();
|
||||||
let asset_entry = test_glyph_asset_entry("test_tiles", 16, 16);
|
let asset_entry = test_glyph_asset_entry("test_glyphs", 16, 16);
|
||||||
|
|
||||||
let am = AssetManager::new(
|
let am = AssetManager::new(
|
||||||
vec![asset_entry],
|
vec![asset_entry],
|
||||||
@ -1030,7 +1030,7 @@ mod tests {
|
|||||||
let sound_installer = Arc::clone(&banks) as Arc<dyn SoundBankPoolInstaller>;
|
let sound_installer = Arc::clone(&banks) as Arc<dyn SoundBankPoolInstaller>;
|
||||||
|
|
||||||
let data = test_glyph_asset_data();
|
let data = test_glyph_asset_data();
|
||||||
let asset_entry = test_glyph_asset_entry("test_tiles", 16, 16);
|
let asset_entry = test_glyph_asset_entry("test_glyphs", 16, 16);
|
||||||
|
|
||||||
let am = AssetManager::new(
|
let am = AssetManager::new(
|
||||||
vec![asset_entry],
|
vec![asset_entry],
|
||||||
@ -1160,7 +1160,7 @@ mod tests {
|
|||||||
let sound_installer = Arc::clone(&banks) as Arc<dyn SoundBankPoolInstaller>;
|
let sound_installer = Arc::clone(&banks) as Arc<dyn SoundBankPoolInstaller>;
|
||||||
let data = test_glyph_asset_data();
|
let data = test_glyph_asset_data();
|
||||||
let am = AssetManager::new(
|
let am = AssetManager::new(
|
||||||
vec![test_glyph_asset_entry("test_tiles", 16, 16)],
|
vec![test_glyph_asset_entry("test_glyphs", 16, 16)],
|
||||||
AssetsPayloadSource::from_bytes(data),
|
AssetsPayloadSource::from_bytes(data),
|
||||||
gfx_installer,
|
gfx_installer,
|
||||||
sound_installer,
|
sound_installer,
|
||||||
@ -1189,7 +1189,7 @@ mod tests {
|
|||||||
let sound_installer = Arc::clone(&banks) as Arc<dyn SoundBankPoolInstaller>;
|
let sound_installer = Arc::clone(&banks) as Arc<dyn SoundBankPoolInstaller>;
|
||||||
let data = test_glyph_asset_data();
|
let data = test_glyph_asset_data();
|
||||||
let am = AssetManager::new(
|
let am = AssetManager::new(
|
||||||
vec![test_glyph_asset_entry("test_tiles", 16, 16)],
|
vec![test_glyph_asset_entry("test_glyphs", 16, 16)],
|
||||||
AssetsPayloadSource::from_bytes(data),
|
AssetsPayloadSource::from_bytes(data),
|
||||||
gfx_installer,
|
gfx_installer,
|
||||||
sound_installer,
|
sound_installer,
|
||||||
|
|||||||
@ -31,7 +31,7 @@ pub struct AssetEntry {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Deserialize, Serialize)]
|
#[derive(Debug, Clone, Deserialize, Serialize)]
|
||||||
pub struct GlyphsMetadata {
|
pub struct GlyphBankMetadata {
|
||||||
pub tile_size: u32,
|
pub tile_size: u32,
|
||||||
pub width: u32,
|
pub width: u32,
|
||||||
pub height: u32,
|
pub height: u32,
|
||||||
@ -40,13 +40,13 @@ pub struct GlyphsMetadata {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Deserialize, Serialize)]
|
#[derive(Debug, Clone, Deserialize, Serialize)]
|
||||||
pub struct SoundsMetadata {
|
pub struct SoundBankMetadata {
|
||||||
pub sample_rate: u32,
|
pub sample_rate: u32,
|
||||||
pub channels: u32,
|
pub channels: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl AssetEntry {
|
impl AssetEntry {
|
||||||
pub fn metadata_as_glyphs(&self) -> Result<GlyphsMetadata, String> {
|
pub fn metadata_as_glyph_bank(&self) -> Result<GlyphBankMetadata, String> {
|
||||||
if self.bank_type != BankType::GLYPH {
|
if self.bank_type != BankType::GLYPH {
|
||||||
return Err(format!(
|
return Err(format!(
|
||||||
"Asset {} is not a GLYPH bank (type: {:?})",
|
"Asset {} is not a GLYPH bank (type: {:?})",
|
||||||
@ -57,7 +57,7 @@ impl AssetEntry {
|
|||||||
.map_err(|e| format!("Invalid GLYPH metadata for asset {}: {}", self.asset_id, e))
|
.map_err(|e| format!("Invalid GLYPH metadata for asset {}: {}", self.asset_id, e))
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn metadata_as_sounds(&self) -> Result<SoundsMetadata, String> {
|
pub fn metadata_as_sound_bank(&self) -> Result<SoundBankMetadata, String> {
|
||||||
if self.bank_type != BankType::SOUNDS {
|
if self.bank_type != BankType::SOUNDS {
|
||||||
return Err(format!(
|
return Err(format!(
|
||||||
"Asset {} is not a SOUNDS bank (type: {:?})",
|
"Asset {} is not a SOUNDS bank (type: {:?})",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user