lifetimes are too hard, assets are now ref-counted
This commit is contained in:
parent
150233728c
commit
707a71b432
|
@ -1,11 +1,12 @@
|
||||||
use skunk2d::*;
|
use skunk2d::*;
|
||||||
|
use std::rc::Rc;
|
||||||
|
|
||||||
const WIDTH: i32 = 1920 / 3;
|
const WIDTH: i32 = 1920 / 3;
|
||||||
const HEIGHT: i32 = 1080 / 3;
|
const HEIGHT: i32 = 1080 / 3;
|
||||||
|
|
||||||
struct World {
|
struct World {
|
||||||
img: Image,
|
img: Rc<Image>,
|
||||||
font: Tileset,
|
font: Rc<Tileset>,
|
||||||
pos: Vec2<i32>,
|
pos: Vec2<i32>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@ use crate::vec2::Vec2;
|
||||||
use crate::Rect;
|
use crate::Rect;
|
||||||
use std::fs;
|
use std::fs;
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
|
use std::rc::Rc;
|
||||||
|
|
||||||
//todo: make dynamically different bitdepths
|
//todo: make dynamically different bitdepths
|
||||||
pub struct Image {
|
pub struct Image {
|
||||||
|
@ -17,11 +18,11 @@ impl Image {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn load(path: &str) -> Self {
|
pub fn load(path: &str) -> Rc<Self> {
|
||||||
Self::load_data(fs::read(path).unwrap().as_slice())
|
Self::load_data(fs::read(path).unwrap().as_slice())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn load_data(data: &[u8]) -> Self {
|
pub fn load_data(data: &[u8]) -> Rc<Self> {
|
||||||
let mut options = gif::DecodeOptions::new();
|
let mut options = gif::DecodeOptions::new();
|
||||||
options.set_color_output(gif::ColorOutput::Indexed);
|
options.set_color_output(gif::ColorOutput::Indexed);
|
||||||
let mut decoder = options.read_info(data).unwrap();
|
let mut decoder = options.read_info(data).unwrap();
|
||||||
|
@ -39,6 +40,7 @@ impl Image {
|
||||||
y: y as i32,
|
y: y as i32,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
.into()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn clear(&mut self) {
|
pub fn clear(&mut self) {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
use crate::{Image, Rect, Vec2};
|
use crate::{Image, Rect, Vec2};
|
||||||
use std::fs;
|
use std::fs;
|
||||||
|
use std::rc::Rc;
|
||||||
|
|
||||||
pub struct Tileset {
|
pub struct Tileset {
|
||||||
count: i32,
|
count: i32,
|
||||||
|
@ -8,11 +9,11 @@ pub struct Tileset {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Tileset {
|
impl Tileset {
|
||||||
pub fn load(path: &str, tile_count: Vec2<i32>) -> Self {
|
pub fn load(path: &str, tile_count: Vec2<i32>) -> Rc<Self> {
|
||||||
Self::load_data(fs::read(path).unwrap().as_slice(), tile_count)
|
Self::load_data(fs::read(path).unwrap().as_slice(), tile_count)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn load_data(data: &[u8], tile_count: Vec2<i32>) -> Self {
|
pub fn load_data(data: &[u8], tile_count: Vec2<i32>) -> Rc<Self> {
|
||||||
let img = Image::load_data(data);
|
let img = Image::load_data(data);
|
||||||
let mut images: Vec<Image> = vec![];
|
let mut images: Vec<Image> = vec![];
|
||||||
let size = Vec2 {
|
let size = Vec2 {
|
||||||
|
@ -41,6 +42,7 @@ impl Tileset {
|
||||||
size,
|
size,
|
||||||
images,
|
images,
|
||||||
}
|
}
|
||||||
|
.into()
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get(&self, idx: i32) -> &Image {
|
pub fn get(&self, idx: i32) -> &Image {
|
||||||
|
|
Loading…
Reference in New Issue