mirror of
https://gitlab.com/veloren/veloren.git
synced 2024-08-30 18:12:32 +00:00
add simple interface to get assets from various locations
Former-commit-id: 2ee6c4ef811e935eb8684a2cd827a97b8ad0be7a
This commit is contained in:
parent
29d6cb5127
commit
251cccffe5
@ -15,3 +15,5 @@ mio-extras = "2.0"
|
|||||||
serde = "1.0"
|
serde = "1.0"
|
||||||
serde_derive = "1.0"
|
serde_derive = "1.0"
|
||||||
bincode = "1.0"
|
bincode = "1.0"
|
||||||
|
log = "0.4"
|
||||||
|
pretty_env_logger = "0.3"
|
||||||
|
47
common/src/assets/mod.rs
Normal file
47
common/src/assets/mod.rs
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
use std::env;
|
||||||
|
use std::fs;
|
||||||
|
use std::io;
|
||||||
|
use std::io::prelude::*;
|
||||||
|
use std::fs::File;
|
||||||
|
|
||||||
|
fn try_load(name: &str) -> Option<File> {
|
||||||
|
let basepaths = [
|
||||||
|
// if it's stupid and it works..,
|
||||||
|
"assets".to_string(),
|
||||||
|
"../../assets".to_string(),
|
||||||
|
"../assets".to_string(), /* optimizations */
|
||||||
|
[env!("CARGO_MANIFEST_DIR"), "/assets"].concat(),
|
||||||
|
[env!("CARGO_MANIFEST_DIR"), "/../../assets"].concat(),
|
||||||
|
[env!("CARGO_MANIFEST_DIR"), "/../assets"].concat(),
|
||||||
|
"../../../assets".to_string(),
|
||||||
|
[env!("CARGO_MANIFEST_DIR"), "/../../../assets"].concat(),
|
||||||
|
];
|
||||||
|
for bp in &basepaths {
|
||||||
|
let filename = [bp, name].concat();
|
||||||
|
match File::open(&filename) {
|
||||||
|
Ok(f) => {
|
||||||
|
debug!("loading {} succedeed", filename);
|
||||||
|
return Some(f);
|
||||||
|
},
|
||||||
|
Err(e) => {
|
||||||
|
debug!("loading {} did not work with error: {}", filename, e);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
return None;
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn load(name: &str) -> Result<Vec<u8>,()> {
|
||||||
|
return match try_load(name) {
|
||||||
|
Some(mut f) => {
|
||||||
|
let mut content: Vec<u8> = vec!();
|
||||||
|
f.read_to_end(&mut content);
|
||||||
|
info!("loaded asset successful: {}", name);
|
||||||
|
Ok(content)
|
||||||
|
},
|
||||||
|
None => {
|
||||||
|
warn!("Loading asset failed, wanted to load {} but could not load it, check debug log!", name);
|
||||||
|
Err(())
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
@ -2,7 +2,10 @@
|
|||||||
|
|
||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate serde_derive;
|
extern crate serde_derive;
|
||||||
|
#[macro_use]
|
||||||
|
extern crate log;
|
||||||
|
|
||||||
|
pub mod assets;
|
||||||
pub mod clock;
|
pub mod clock;
|
||||||
pub mod comp;
|
pub mod comp;
|
||||||
pub mod figure;
|
pub mod figure;
|
||||||
|
@ -5,6 +5,7 @@ use crate::{
|
|||||||
ui::{ScaleMode, ToggleButton, Ui},
|
ui::{ScaleMode, ToggleButton, Ui},
|
||||||
window::{Event as WinEvent, Key, Window},
|
window::{Event as WinEvent, Key, Window},
|
||||||
};
|
};
|
||||||
|
use common::assets;
|
||||||
use conrod_core::{
|
use conrod_core::{
|
||||||
color, Color,
|
color, Color,
|
||||||
image::Id as ImgId,
|
image::Id as ImgId,
|
||||||
@ -245,10 +246,13 @@ pub(self) struct Imgs {
|
|||||||
impl Imgs {
|
impl Imgs {
|
||||||
fn new(ui: &mut Ui, renderer: &mut Renderer) -> Imgs {
|
fn new(ui: &mut Ui, renderer: &mut Renderer) -> Imgs {
|
||||||
let mut load = |filename| {
|
let mut load = |filename| {
|
||||||
let image = image::open(
|
let fullpath: String = [
|
||||||
&[env!("CARGO_MANIFEST_DIR"), "/../assets/voxygen/", filename].concat(),
|
"/voxygen/",
|
||||||
)
|
filename,
|
||||||
.unwrap();
|
].concat();
|
||||||
|
let image = image::load_from_memory(
|
||||||
|
assets::load(fullpath.as_str()).expect("Error loading file").as_slice()
|
||||||
|
).unwrap();
|
||||||
ui.new_image(renderer, &image).unwrap()
|
ui.new_image(renderer, &image).unwrap()
|
||||||
};
|
};
|
||||||
Imgs {
|
Imgs {
|
||||||
|
@ -3,6 +3,7 @@ use crate::{
|
|||||||
ui::{self, ScaleMode, Ui},
|
ui::{self, ScaleMode, Ui},
|
||||||
window::Window,
|
window::Window,
|
||||||
};
|
};
|
||||||
|
use common::assets;
|
||||||
use conrod_core::{
|
use conrod_core::{
|
||||||
color,
|
color,
|
||||||
color::TRANSPARENT,
|
color::TRANSPARENT,
|
||||||
@ -224,15 +225,13 @@ struct Imgs {
|
|||||||
impl Imgs {
|
impl Imgs {
|
||||||
fn new(ui: &mut Ui, renderer: &mut Renderer) -> Imgs {
|
fn new(ui: &mut Ui, renderer: &mut Renderer) -> Imgs {
|
||||||
let mut load = |filename| {
|
let mut load = |filename| {
|
||||||
let image = image::open(
|
let fullpath: String = [
|
||||||
&[
|
"/voxygen/",
|
||||||
env!("CARGO_MANIFEST_DIR"),
|
|
||||||
"/../assets/voxygen/",
|
|
||||||
filename,
|
filename,
|
||||||
]
|
].concat();
|
||||||
.concat(),
|
let image = image::load_from_memory(
|
||||||
)
|
assets::load(fullpath.as_str()).expect("Error loading file").as_slice()
|
||||||
.unwrap();
|
).unwrap();
|
||||||
ui.new_image(renderer, &image).unwrap()
|
ui.new_image(renderer, &image).unwrap()
|
||||||
};
|
};
|
||||||
Imgs {
|
Imgs {
|
||||||
|
@ -3,6 +3,7 @@ use crate::{
|
|||||||
ui::{self, ScaleMode, Ui},
|
ui::{self, ScaleMode, Ui},
|
||||||
window::Window,
|
window::Window,
|
||||||
};
|
};
|
||||||
|
use common::assets;
|
||||||
use conrod_core::{
|
use conrod_core::{
|
||||||
color::TRANSPARENT,
|
color::TRANSPARENT,
|
||||||
image::Id as ImgId,
|
image::Id as ImgId,
|
||||||
@ -57,15 +58,13 @@ impl Imgs {
|
|||||||
fn new(ui: &mut Ui, renderer: &mut Renderer) -> Imgs {
|
fn new(ui: &mut Ui, renderer: &mut Renderer) -> Imgs {
|
||||||
// TODO: update paths
|
// TODO: update paths
|
||||||
let mut load = |filename| {
|
let mut load = |filename| {
|
||||||
let image = image::open(
|
let fullpath: String = [
|
||||||
&[
|
"/voxygen/",
|
||||||
env!("CARGO_MANIFEST_DIR"),
|
|
||||||
"/../assets/voxygen/",
|
|
||||||
filename,
|
filename,
|
||||||
]
|
].concat();
|
||||||
.concat(),
|
let image = image::load_from_memory(
|
||||||
)
|
assets::load(fullpath.as_str()).expect("Error loading file").as_slice()
|
||||||
.unwrap();
|
).unwrap();
|
||||||
ui.new_image(renderer, &image).unwrap()
|
ui.new_image(renderer, &image).unwrap()
|
||||||
};
|
};
|
||||||
Imgs {
|
Imgs {
|
||||||
|
Loading…
Reference in New Issue
Block a user