Refactor
This commit is contained in:
parent
b4c25f68f2
commit
b7ac6dc2ce
|
@ -1,11 +0,0 @@
|
|||
install:
|
||||
- appveyor-retry appveyor DownloadFile https://win.rustup.rs/ -FileName rustup-init.exe
|
||||
- if not defined RUSTFLAGS rustup-init.exe -y --default-host x86_64-pc-windows-msvc --default-toolchain nightly
|
||||
- set PATH=%PATH%;C:\Users\appveyor\.cargo\bin
|
||||
- rustc -V
|
||||
- cargo -V
|
||||
|
||||
build: false
|
||||
|
||||
test_script:
|
||||
- cargo test --locked
|
|
@ -1,4 +1,4 @@
|
|||
/target
|
||||
target/
|
||||
**/*.rs.bk
|
||||
Cargo.lock
|
||||
bin/
|
||||
|
|
69
.travis.yml
69
.travis.yml
|
@ -1,69 +0,0 @@
|
|||
language: rust
|
||||
sudo: false
|
||||
|
||||
cache: cargo
|
||||
|
||||
matrix:
|
||||
include:
|
||||
|
||||
# Builds with wasm-pack.
|
||||
- rust: beta
|
||||
env: RUST_BACKTRACE=1
|
||||
addons:
|
||||
firefox: latest
|
||||
chrome: stable
|
||||
before_script:
|
||||
- (test -x $HOME/.cargo/bin/cargo-install-update || cargo install cargo-update)
|
||||
- (test -x $HOME/.cargo/bin/cargo-generate || cargo install --vers "^0.2" cargo-generate)
|
||||
- cargo install-update -a
|
||||
- curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh -s -- -f
|
||||
script:
|
||||
- cargo generate --git . --name testing
|
||||
# Having a broken Cargo.toml (in that it has curlies in fields) anywhere
|
||||
# in any of our parent dirs is problematic.
|
||||
- mv Cargo.toml Cargo.toml.tmpl
|
||||
- cd testing
|
||||
- wasm-pack build
|
||||
- wasm-pack test --chrome --firefox --headless
|
||||
|
||||
# Builds on nightly.
|
||||
- rust: nightly
|
||||
env: RUST_BACKTRACE=1
|
||||
before_script:
|
||||
- (test -x $HOME/.cargo/bin/cargo-install-update || cargo install cargo-update)
|
||||
- (test -x $HOME/.cargo/bin/cargo-generate || cargo install --vers "^0.2" cargo-generate)
|
||||
- cargo install-update -a
|
||||
- rustup target add wasm32-unknown-unknown
|
||||
script:
|
||||
- cargo generate --git . --name testing
|
||||
- mv Cargo.toml Cargo.toml.tmpl
|
||||
- cd testing
|
||||
- cargo check
|
||||
- cargo check --target wasm32-unknown-unknown
|
||||
- cargo check --no-default-features
|
||||
- cargo check --target wasm32-unknown-unknown --no-default-features
|
||||
- cargo check --no-default-features --features console_error_panic_hook
|
||||
- cargo check --target wasm32-unknown-unknown --no-default-features --features console_error_panic_hook
|
||||
- cargo check --no-default-features --features "console_error_panic_hook wee_alloc"
|
||||
- cargo check --target wasm32-unknown-unknown --no-default-features --features "console_error_panic_hook wee_alloc"
|
||||
|
||||
# Builds on beta.
|
||||
- rust: beta
|
||||
env: RUST_BACKTRACE=1
|
||||
before_script:
|
||||
- (test -x $HOME/.cargo/bin/cargo-install-update || cargo install cargo-update)
|
||||
- (test -x $HOME/.cargo/bin/cargo-generate || cargo install --vers "^0.2" cargo-generate)
|
||||
- cargo install-update -a
|
||||
- rustup target add wasm32-unknown-unknown
|
||||
script:
|
||||
- cargo generate --git . --name testing
|
||||
- mv Cargo.toml Cargo.toml.tmpl
|
||||
- cd testing
|
||||
- cargo check
|
||||
- cargo check --target wasm32-unknown-unknown
|
||||
- cargo check --no-default-features
|
||||
- cargo check --target wasm32-unknown-unknown --no-default-features
|
||||
- cargo check --no-default-features --features console_error_panic_hook
|
||||
- cargo check --target wasm32-unknown-unknown --no-default-features --features console_error_panic_hook
|
||||
# Note: no enabling the `wee_alloc` feature here because it requires
|
||||
# nightly for now.
|
55
Cargo.toml
55
Cargo.toml
|
@ -1,52 +1,9 @@
|
|||
[package]
|
||||
name = "fluster"
|
||||
version = "0.1.0"
|
||||
authors = ["Mike Welsh <mwelsh@gmail.com>"]
|
||||
edition = "2018"
|
||||
|
||||
[lib]
|
||||
crate-type = ["cdylib", "rlib"]
|
||||
name = "fluster"
|
||||
path = "src/lib.rs"
|
||||
|
||||
[[bin]]
|
||||
name = "fluster"
|
||||
path = "src/lib.rs"
|
||||
|
||||
[features]
|
||||
default = ["console_error_panic_hook", "console_log"]
|
||||
|
||||
[dependencies]
|
||||
bacon_rajan_cc = "0.2"
|
||||
log = "0.4"
|
||||
url = "1.7.2"
|
||||
svg = "0.5.12"
|
||||
swf = { git = "https://github.com/Herschel/swf-rs", version = "*" }
|
||||
|
||||
# Desktop dependencies
|
||||
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
||||
lyon = "0.13.1"
|
||||
structopt = "0.2.15"
|
||||
glium = "0.24"
|
||||
glutin = "0.20"
|
||||
winit = "0.19.1"
|
||||
|
||||
# Wasm32 dependencies
|
||||
[target.'cfg(target_arch = "wasm32")'.dependencies]
|
||||
console_error_panic_hook = { version = "0.1.1", optional = true }
|
||||
console_log = { version = "0.1", optional = true }
|
||||
js-sys = "0.3.19"
|
||||
wasm-bindgen = "0.2"
|
||||
|
||||
[target.'cfg(target_arch = "wasm32")'.dev-dependencies]
|
||||
wasm-bindgen-test = "0.2"
|
||||
|
||||
[dependencies.web-sys]
|
||||
version = "0.3.19"
|
||||
features = ["CanvasRenderingContext2d", "Document", "Element", "HtmlCanvasElement", "Performance", "HtmlImageElement", "Window"]
|
||||
|
||||
[dev-dependencies]
|
||||
wasm-bindgen-test = "0.2"
|
||||
[workspace]
|
||||
members = [
|
||||
"lib",
|
||||
"desktop",
|
||||
"web"
|
||||
]
|
||||
|
||||
[patch.'https://github.com/Herschel/swf-rs']
|
||||
swf = { path = "../swf-rs" }
|
|
@ -0,0 +1,9 @@
|
|||
[package]
|
||||
name = "fluster"
|
||||
version = "0.1.0"
|
||||
authors = ["Mike Welsh <mwelsh@gmail.com>"]
|
||||
edition = "2018"
|
||||
|
||||
[dependencies]
|
||||
fluster_core = { path = "../lib" }
|
||||
structopt = "0.2.15"
|
|
@ -1,16 +1,4 @@
|
|||
mod backend;
|
||||
mod character;
|
||||
mod color_transform;
|
||||
mod display_object;
|
||||
mod graphic;
|
||||
mod library;
|
||||
mod matrix;
|
||||
mod movie_clip;
|
||||
mod player;
|
||||
mod stage;
|
||||
|
||||
pub use player::Player;
|
||||
use swf::Color;
|
||||
use fluster_core::Player;
|
||||
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
#[allow(dead_code)]
|
|
@ -0,0 +1,33 @@
|
|||
[package]
|
||||
name = "fluster_core"
|
||||
version = "0.1.0"
|
||||
authors = ["Mike Welsh <mwelsh@gmail.com>"]
|
||||
edition = "2018"
|
||||
|
||||
[features]
|
||||
default = ["console_error_panic_hook", "console_log"]
|
||||
|
||||
[dependencies]
|
||||
bacon_rajan_cc = "0.2"
|
||||
log = "0.4"
|
||||
url = "1.7.2"
|
||||
svg = "0.5.12"
|
||||
swf = { git = "https://github.com/Herschel/swf-rs", version = "*" }
|
||||
|
||||
# Desktop dependencies
|
||||
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
|
||||
lyon = "0.13.1"
|
||||
glium = "0.24"
|
||||
glutin = "0.20"
|
||||
winit = "0.19.1"
|
||||
|
||||
# Wasm32 dependencies
|
||||
[target.'cfg(target_arch = "wasm32")'.dependencies]
|
||||
console_error_panic_hook = { version = "0.1.1", optional = true }
|
||||
console_log = { version = "0.1", optional = true }
|
||||
js-sys = "0.3.19"
|
||||
wasm-bindgen = "0.2"
|
||||
|
||||
[dependencies.web-sys]
|
||||
version = "0.3.19"
|
||||
features = ["CanvasRenderingContext2d", "Document", "Element", "HtmlCanvasElement", "Performance", "HtmlImageElement", "Window"]
|
|
@ -0,0 +1,13 @@
|
|||
mod backend;
|
||||
mod character;
|
||||
mod color_transform;
|
||||
mod display_object;
|
||||
mod graphic;
|
||||
mod library;
|
||||
mod matrix;
|
||||
mod movie_clip;
|
||||
mod player;
|
||||
mod stage;
|
||||
|
||||
pub use player::Player;
|
||||
use swf::Color;
|
|
@ -20,7 +20,6 @@ use web_sys::{CanvasRenderingContext2d, HtmlCanvasElement, HtmlImageElement};
|
|||
|
||||
type CharacterId = swf::CharacterId;
|
||||
|
||||
#[cfg_attr(target_arch = "wasm32", wasm_bindgen)]
|
||||
pub struct Player {
|
||||
tag_stream: swf::read::Reader<Cursor<Vec<u8>>>,
|
||||
|
||||
|
@ -35,17 +34,7 @@ pub struct Player {
|
|||
frame_accumulator: f64,
|
||||
}
|
||||
|
||||
#[cfg_attr(target_arch = "wasm32", wasm_bindgen)]
|
||||
impl Player {
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
pub fn new(swf_data: js_sys::Uint8Array) -> Result<Player, JsValue> {
|
||||
console_error_panic_hook::set_once();
|
||||
let mut data = vec![0; swf_data.length() as usize];
|
||||
swf_data.copy_to(&mut data[..]);
|
||||
Self::new_internal(data).map_err(|_| JsValue::null())
|
||||
}
|
||||
|
||||
#[cfg(not(target_arch = "wasm32"))]
|
||||
pub fn new(swf_data: Vec<u8>) -> Result<Player, Box<std::error::Error>> {
|
||||
Self::new_internal(swf_data)
|
||||
}
|
|
@ -0,0 +1,18 @@
|
|||
[package]
|
||||
name = "fluster_web"
|
||||
version = "0.1.0"
|
||||
authors = ["Mike Welsh <mwelsh@gmail.com>"]
|
||||
edition = "2018"
|
||||
|
||||
[lib]
|
||||
crate-type = ["cdylib", "rlib"]
|
||||
|
||||
[dependencies]
|
||||
console_error_panic_hook = { version = "0.1.1", optional = true }
|
||||
console_log = { version = "0.1", optional = true }
|
||||
fluster_core = { path = "../lib" }
|
||||
js-sys = "0.3.19"
|
||||
wasm-bindgen = "0.2"
|
||||
|
||||
[dev-dependencies]
|
||||
wasm-bindgen-test = "0.2"
|
|
@ -0,0 +1,20 @@
|
|||
use js_sys::Uint8Array;
|
||||
use wasm_bindgen::{prelude::*, JsValue};
|
||||
|
||||
#[wasm_bindgen]
|
||||
pub struct Player(fluster_core::Player);
|
||||
|
||||
#[wasm_bindgen]
|
||||
impl Player {
|
||||
pub fn new(swf_data: Uint8Array) -> Result<Player, JsValue> {
|
||||
let mut data = vec![0; swf_data.length() as usize];
|
||||
swf_data.copy_to(&mut data[..]);
|
||||
|
||||
let player = fluster_core::Player::new(data).map_err(|_| JsValue::null())?;
|
||||
Ok(Player(player))
|
||||
}
|
||||
|
||||
pub fn tick(&mut self, dt: f64) {
|
||||
self.0.tick(dt);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue