Fix build without wasm feature enabled

This commit is contained in:
Deukhoofd 2023-01-03 12:58:23 +01:00
parent df47976d97
commit bd804ea280
Signed by: Deukhoofd
GPG Key ID: F63E044490819F6F
3 changed files with 18 additions and 12 deletions

View File

@ -55,7 +55,7 @@ pub enum ScriptCategory {
} }
/// A basic empty script resolver, that always returns None. /// A basic empty script resolver, that always returns None.
#[derive(Debug)] #[derive(Debug, Default)]
pub struct EmptyScriptResolver { pub struct EmptyScriptResolver {
/// A unique identifier so we know what value this is. /// A unique identifier so we know what value this is.
pub identifier: ValueIdentifier, pub identifier: ValueIdentifier,

View File

@ -11,11 +11,10 @@ use project_root::get_project_root;
use serde_json::Value; use serde_json::Value;
use pkmn_lib::defines::LevelInt; use pkmn_lib::defines::LevelInt;
use pkmn_lib::dynamic_data::Gen7BattleStatCalculator;
use pkmn_lib::dynamic_data::Gen7DamageLibrary; use pkmn_lib::dynamic_data::Gen7DamageLibrary;
use pkmn_lib::dynamic_data::Gen7MiscLibrary; use pkmn_lib::dynamic_data::Gen7MiscLibrary;
use pkmn_lib::dynamic_data::{DynamicLibrary, DynamicLibraryImpl}; use pkmn_lib::dynamic_data::{DynamicLibrary, DynamicLibraryImpl};
use pkmn_lib::script_implementations::wasm::script_resolver::WebAssemblyScriptResolver; use pkmn_lib::dynamic_data::{EmptyScriptResolver, Gen7BattleStatCalculator, ScriptResolver};
use pkmn_lib::static_data::{ use pkmn_lib::static_data::{
AbilityImpl, AbilityLibrary, AbilityLibraryImpl, BattleItemCategory, DataLibrary, EffectParameter, Form, FormImpl, AbilityImpl, AbilityLibrary, AbilityLibraryImpl, BattleItemCategory, DataLibrary, EffectParameter, Form, FormImpl,
GrowthRateLibrary, GrowthRateLibraryImpl, ItemImpl, ItemLibrary, ItemLibraryImpl, LearnableMoves, GrowthRateLibrary, GrowthRateLibraryImpl, ItemImpl, ItemLibrary, ItemLibraryImpl, LearnableMoves,
@ -77,8 +76,7 @@ pub fn load_library() -> LoadResult {
); );
let t1 = chrono::Utc::now(); let t1 = chrono::Utc::now();
let mut resolver = WebAssemblyScriptResolver::new(); let script_resolver = load_script_resolver(&path);
load_wasm(&path, resolver.as_mut());
let t2 = chrono::Utc::now(); let t2 = chrono::Utc::now();
let wasm_load_time = t2 - t1; let wasm_load_time = t2 - t1;
@ -87,7 +85,7 @@ pub fn load_library() -> LoadResult {
Box::new(Gen7BattleStatCalculator::new()), Box::new(Gen7BattleStatCalculator::new()),
Box::new(Gen7DamageLibrary::new(false)), Box::new(Gen7DamageLibrary::new(false)),
Box::new(Gen7MiscLibrary::new()), Box::new(Gen7MiscLibrary::new()),
resolver, script_resolver,
)); ));
LoadResult { LoadResult {
@ -352,13 +350,21 @@ pub fn load_species(
species_library species_library
} }
fn load_wasm(path: &String, library: &mut WebAssemblyScriptResolver) { #[cfg(not(feature = "wasm"))]
fn load_script_resolver(path: &String) -> Box<dyn ScriptResolver> {
Box::new(EmptyScriptResolver::default())
}
#[cfg(feature = "wasm")]
fn load_script_resolver(path: &String) -> Box<dyn ScriptResolver> {
let mut resolver = pkmn_lib::script_implementations::wasm::script_resolver::WebAssemblyScriptResolver::new();
let file = File::open(path.to_string() + "gen7_scripts.wasm").unwrap(); let file = File::open(path.to_string() + "gen7_scripts.wasm").unwrap();
let mut reader = BufReader::new(file); let mut reader = BufReader::new(file);
let mut buffer = Vec::new(); let mut buffer = Vec::new();
reader.read_to_end(&mut buffer).unwrap(); reader.read_to_end(&mut buffer).unwrap();
library.load_wasm_from_bytes(&buffer); resolver.load_wasm_from_bytes(&buffer);
library.finalize(); resolver.finalize();
resolver
} }
fn parse_form( fn parse_form(

View File

@ -9,10 +9,9 @@ use std::path::Path;
use std::sync::Arc; use std::sync::Arc;
use pkmn_lib::dynamic_data::{ use pkmn_lib::dynamic_data::{
Battle, BattleParty, DamageSource, DynamicLibrary, ExecutingMove, MoveChoice, PokemonBuilder, PokemonParty, Script, Battle, BattleParty, DamageSource, DynamicLibrary, ExecutingMove, MoveChoice, PokemonBuilder, PokemonParty,
ScriptCategory, ScriptContainer, ScriptOwnerData, TurnChoice, VolatileScriptsOwner, ScriptCategory, ScriptContainer, ScriptOwnerData, TurnChoice, VolatileScriptsOwner,
}; };
use pkmn_lib::script_implementations::wasm::script::WebAssemblyScript;
use crate::common::{library_loader, TestCase}; use crate::common::{library_loader, TestCase};
@ -113,7 +112,8 @@ fn validate_assurance() {
assert_eq!(v, 20_u8); assert_eq!(v, 20_u8);
let s = battle.sides()[1].get_volatile_script(&"assurance_data".into()); let s = battle.sides()[1].get_volatile_script(&"assurance_data".into());
let data_script = s.as_ref().unwrap().get_as::<WebAssemblyScript>(); let binding = s.as_ref().unwrap().get().unwrap().read();
let data_script = binding.as_ref().unwrap();
data_script.on_damage(&p2, DamageSource::Misc, 100, 50); data_script.on_damage(&p2, DamageSource::Misc, 100, 50);