Initial work on wasm scripting backend

This commit is contained in:
2022-07-18 10:16:47 +02:00
parent 8eb1159d64
commit 7682704945
21 changed files with 651 additions and 31 deletions

View File

@@ -1,5 +1,3 @@
use std::lazy::SyncLazy;
use hashbrown::{HashMap, HashSet};
use crate::static_data::Form;
@@ -28,7 +26,11 @@ pub struct Species {
}
/// A cached String Key to get the default form.
static DEFAULT_KEY: SyncLazy<StringKey> = SyncLazy::new(|| StringKey::new("default"));
static DEFAULT_KEY: conquer_once::OnceCell<StringKey> = conquer_once::OnceCell::uninit();
fn get_default_key() -> StringKey {
DEFAULT_KEY.get_or_init(|| StringKey::new("default")).clone()
}
impl Species {
/// Creates a new species.
@@ -42,7 +44,7 @@ impl Species {
flags: HashSet<StringKey>,
) -> Species {
let mut forms = HashMap::with_capacity(1);
forms.insert_unique_unchecked(DEFAULT_KEY.clone(), default_form);
forms.insert_unique_unchecked(get_default_key(), default_form);
Species {
id,
name: name.clone(),
@@ -96,7 +98,7 @@ impl Species {
/// Gets the form the Pokemon will have by default, if no other form is specified.
pub fn get_default_form(&self) -> &Form {
self.forms.get(&DEFAULT_KEY).unwrap()
self.forms.get(&get_default_key()).unwrap()
}
/// Gets a random gender.