Fix wasm build

This commit is contained in:
Stephen Seo 2023-02-23 15:09:13 +09:00
parent b6ee1be6c2
commit e00e23682c
4 changed files with 25 additions and 26 deletions

View File

@ -973,8 +973,7 @@ impl GameInterface for RaylibGame {
let path_str = path
.to_str()
.ok_or_else(|| format!("Failed to convert \"{path:?}\" to str!"))?;
let path_buf: Vec<u8> = path_str.as_bytes().into();
let cstring: CString = CString::from_vec_unchecked(path_buf);
let cstring: CString = CString::from_vec_unchecked(path_str.as_bytes().into());
let sound = ffi::LoadSound(cstring.as_ptr());
let raylib_sound_handler = RaylibSoundHandler {
sound: Rc::new(RaylibSound { sound }),

View File

@ -8,8 +8,8 @@ use faux_quicksilver::Window;
use original_impl::GameState;
pub struct WasmState {
pub window: Window,
pub game_state: GameState,
pub window: Box<Window>,
pub game_state: Box<GameState>,
}
impl WasmState {
@ -25,8 +25,8 @@ impl WasmState {
#[no_mangle]
pub extern "C" fn ld45_initialize() -> *mut ::std::os::raw::c_void {
let game_interface = RaylibGame::new_boxed(800, 600);
let mut window = Window::new(game_interface);
let game_state = GameState::new(&mut window).unwrap();
let mut window = Box::new(Window::new(game_interface));
let game_state = Box::new(GameState::new(&mut window).unwrap());
Box::into_raw(Box::new(WasmState { window, game_state })) as *mut ::std::os::raw::c_void
}

View File

@ -1238,11 +1238,11 @@ impl GameState {
s_get.clone(),
)?;
let s_power_up = String::from("power_up.mp3");
window.load_sound(
&PathBuf::from_str("static/power_up.mp3")
.map_err(|_| String::from("Failed to load \"static/power_up.mp3\""))?,
s_power_up.clone(),
)?;
//window.load_sound(
// &PathBuf::from_str("static/power_up.mp3")
// .map_err(|_| String::from("Failed to load \"static/power_up.mp3\""))?,
// s_power_up.clone(),
//)?;
let s_tap = String::from("tap.mp3");
window.load_sound(
&PathBuf::from_str("static/tap.mp3")
@ -1250,17 +1250,17 @@ impl GameState {
s_tap.clone(),
)?;
let s_speak_m = String::from("speak_m.mp3");
window.load_sound(
&PathBuf::from_str("static/speak_m.mp3")
.map_err(|_| String::from("Failed to load \"static/speak_m.mp3\""))?,
s_speak_m.clone(),
)?;
//window.load_sound(
// &PathBuf::from_str("static/speak_m.mp3")
// .map_err(|_| String::from("Failed to load \"static/speak_m.mp3\""))?,
// s_speak_m.clone(),
//)?;
let s_speak_f = String::from("speak_f.mp3");
window.load_sound(
&PathBuf::from_str("static/speak_f.mp3")
.map_err(|_| String::from("Failed to load \"static/speak_f.mp3\""))?,
s_speak_f.clone(),
)?;
//window.load_sound(
// &PathBuf::from_str("static/speak_f.mp3")
// .map_err(|_| String::from("Failed to load \"static/speak_f.mp3\""))?,
// s_speak_f.clone(),
//)?;
let font = String::from("ClearSans-Regular.ttf");
window.load_font(

View File

@ -1,4 +1,5 @@
CC = source "${HOME}/git/emsdk/emsdk_env.sh" && emcc
EM_ENV = "${HOME}/git/emsdk/emsdk_env.sh"
CC = source ${EM_ENV} && emcc
all: ld45.html
@ -6,10 +7,8 @@ ld45.html: src/main.c ../target/wasm32-unknown-emscripten/release/libld45_lib.a
${CC} -o ld45.html -s USE_GLFW=3 -Iinclude \
-Llib -lraylib \
-L../target/wasm32-unknown-emscripten/release -lld45_lib \
-sTOTAL_MEMORY=1024MB \
-sALLOW_MEMORY_GROWTH=1 \
-sALLOW_MEMORY_GROWTH \
-O2 \
-fsanitize=address \
-sEXPORTED_FUNCTIONS="['_malloc', '_main']" \
-sEXPORTED_RUNTIME_METHODS=ccall,cwrap \
--preload-file ../static src/main.c
@ -19,7 +18,8 @@ ld45.html: src/main.c ../target/wasm32-unknown-emscripten/release/libld45_lib.a
#-sWARN_UNALIGNED=1 \
../target/wasm32-unknown-emscripten/release/libld45_lib.a: ../src/lib.rs
cd ..; source "${HOME}/git/emsdk/emsdk_env.sh"; cargo build --lib --release --target wasm32-unknown-emscripten
cd .. && source ${EM_ENV} && cargo build --lib --release --target wasm32-unknown-emscripten
# cd .. && source ${EM_ENV} && cargo rustc --lib --release --target wasm32-unknown-emscripten -- -C link-args=-Wl,-zstack-size=8388608
.PHONY: clean