mindustry logic execution, map- and schematic- parsing and rendering
Diffstat (limited to 'src/data/renderer.rs')
-rw-r--r--src/data/renderer.rs37
1 files changed, 18 insertions, 19 deletions
diff --git a/src/data/renderer.rs b/src/data/renderer.rs
index cfd9c9b..b1b2e0a 100644
--- a/src/data/renderer.rs
+++ b/src/data/renderer.rs
@@ -1,31 +1,30 @@
//! schematic drawing
-use dashmap::mapref::one::Ref;
-use dashmap::DashMap;
-pub(crate) use image::{DynamicImage, RgbaImage};
-use std::ops::{Deref, DerefMut};
-use std::sync::LazyLock;
-
pub(crate) use super::autotile::*;
use crate::block::environment::METAL_FLOOR;
use crate::block::Rotation;
use crate::team::SHARDED;
pub(crate) use crate::utils::ImageUtils;
use crate::Map;
+pub(crate) use image::{DynamicImage, RgbaImage};
pub(crate) use std::borrow::{Borrow, BorrowMut};
+use std::ops::{Deref, DerefMut};
+use std::sync::LazyLock;
use super::schematic::Schematic;
use super::GridPos;
-type Cache = DashMap<String, RgbaImage>;
-include!(concat!(env!("OUT_DIR"), "/asset")); // put function from here
-static CACHE: LazyLock<Cache> = LazyLock::new(|| {
- let mut map = Cache::new();
- put(&mut map);
- map
-});
+macro_rules! r {
+ ($v:expr) => {{
+ static TMP: LazyLock<RgbaImage> = $v;
+ &TMP
+ }};
+}
+
+type Cache = phf::Map<&'static str, &'static LazyLock<RgbaImage>>;
+static CACHE: Cache = include!(concat!(env!("OUT_DIR"), "/asset"));
pub enum ImageHolder {
- Borrow(Ref<'static, String, RgbaImage>),
+ Borrow(&'static RgbaImage),
Own(RgbaImage),
}
@@ -50,7 +49,7 @@ impl Borrow<RgbaImage> for ImageHolder {
fn borrow(&self) -> &RgbaImage {
match self {
Self::Own(x) => x,
- Self::Borrow(x) => x.value(),
+ Self::Borrow(x) => x,
}
}
}
@@ -80,8 +79,8 @@ impl DerefMut for ImageHolder {
}
}
-impl From<Ref<'static, String, RgbaImage>> for ImageHolder {
- fn from(value: Ref<'static, String, RgbaImage>) -> Self {
+impl From<&'static RgbaImage> for ImageHolder {
+ fn from(value: &'static RgbaImage) -> Self {
Self::Borrow(value)
}
}
@@ -92,9 +91,9 @@ impl From<RgbaImage> for ImageHolder {
}
}
-pub(crate) fn try_load(name: &str) -> Option<Ref<'static, String, RgbaImage>> {
+pub(crate) fn try_load(name: &str) -> Option<&'static RgbaImage> {
let key = name.to_string();
- CACHE.get(&key)
+ CACHE.get(&key).map(|v| LazyLock::force(v))
}
pub(crate) fn load(name: &str) -> ImageHolder {