Adds a large amount of the WASM interface
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -12,6 +12,12 @@ pub trait Nature: ValueIdentifiable + Debug {
|
||||
/// The stat that should receive the decreased modifier.
|
||||
fn decreased_stat(&self) -> Statistic;
|
||||
|
||||
/// The amount that the increased stat gets modified by.
|
||||
fn increased_modifier(&self) -> f32;
|
||||
|
||||
/// The amount that the decreased stat gets modified by.
|
||||
fn decreased_modifier(&self) -> f32;
|
||||
|
||||
/// Calculates the modifier for a given stat. If it's the increased stat, returns the increased
|
||||
/// modifier, if it's the decreased stat, returns the decreased modifier. Otherwise returns 1.0
|
||||
fn get_stat_modifier(&self, stat: Statistic) -> f32;
|
||||
@@ -62,6 +68,14 @@ impl Nature for NatureImpl {
|
||||
self.decrease_stat
|
||||
}
|
||||
|
||||
fn increased_modifier(&self) -> f32 {
|
||||
self.increase_modifier
|
||||
}
|
||||
|
||||
fn decreased_modifier(&self) -> f32 {
|
||||
self.decrease_modifier
|
||||
}
|
||||
|
||||
/// Calculates the modifier for a given stat. If it's the increased stat, returns the increased
|
||||
/// modifier, if it's the decreased stat, returns the decreased modifier. Otherwise returns 1.0
|
||||
fn get_stat_modifier(&self, stat: Statistic) -> f32 {
|
||||
@@ -91,6 +105,8 @@ pub(crate) mod tests {
|
||||
impl Nature for Nature {
|
||||
fn increased_stat(&self) -> Statistic;
|
||||
fn decreased_stat(&self) -> Statistic;
|
||||
fn increased_modifier(&self) -> f32;
|
||||
fn decreased_modifier(&self) -> f32;
|
||||
fn get_stat_modifier(&self, stat: Statistic) -> f32;
|
||||
}
|
||||
impl ValueIdentifiable for Nature {
|
||||
|
||||
@@ -51,6 +51,9 @@ pub trait Form: ValueIdentifiable + Debug {
|
||||
|
||||
/// Check if the form has a specific flag set.
|
||||
fn has_flag(&self, key: &StringKey) -> bool;
|
||||
|
||||
/// Arbitrary flags that can be applied to the move.
|
||||
fn has_flag_by_hash(&self, key_hash: u32) -> bool;
|
||||
}
|
||||
|
||||
/// A form is a variant of a specific species. A species always has at least one form, but can have
|
||||
@@ -207,6 +210,10 @@ impl Form for FormImpl {
|
||||
fn has_flag(&self, key: &StringKey) -> bool {
|
||||
self.flags.contains(key)
|
||||
}
|
||||
|
||||
fn has_flag_by_hash(&self, key_hash: u32) -> bool {
|
||||
self.flags.contains::<u32>(&key_hash)
|
||||
}
|
||||
}
|
||||
|
||||
impl ValueIdentifiable for FormImpl {
|
||||
@@ -240,6 +247,7 @@ pub(crate) mod tests {
|
||||
fn get_random_ability(&self, rand: &mut Random) -> &StringKey;
|
||||
fn get_random_hidden_ability(&self, rand: &mut Random) -> &StringKey;
|
||||
fn has_flag(&self, key: &StringKey) -> bool;
|
||||
fn has_flag_by_hash(&self, key_hash: u32) -> bool;
|
||||
}
|
||||
impl ValueIdentifiable for Form {
|
||||
fn value_identifier(&self) -> ValueIdentifier {
|
||||
|
||||
@@ -31,12 +31,16 @@ pub trait Species: ValueIdentifiable + Debug {
|
||||
fn add_form(&self, id: StringKey, form: Arc<dyn Form>);
|
||||
/// Gets a form by name.
|
||||
fn get_form(&self, id: &StringKey) -> Option<Arc<dyn Form>>;
|
||||
/// Gets a form by the hash of its name.
|
||||
fn get_form_by_hash(&self, name_hash: u32) -> Option<Arc<dyn Form>>;
|
||||
/// Gets the form the Pokemon will have by default, if no other form is specified.
|
||||
fn get_default_form(&self) -> Arc<dyn Form>;
|
||||
/// Gets a random gender.
|
||||
fn get_random_gender(&self, rand: &mut Random) -> Gender;
|
||||
/// Check whether the Pokemon has a specific flag set.
|
||||
fn has_flag(&self, key: &StringKey) -> bool;
|
||||
/// Check whether the Pokemon has a specific flag set.
|
||||
fn has_flag_by_hash(&self, key_hash: u32) -> bool;
|
||||
}
|
||||
|
||||
/// The data belonging to a Pokemon with certain characteristics.
|
||||
@@ -136,6 +140,10 @@ impl Species for SpeciesImpl {
|
||||
self.forms.read().get(id).cloned()
|
||||
}
|
||||
|
||||
fn get_form_by_hash(&self, name_hash: u32) -> Option<Arc<dyn Form>> {
|
||||
self.forms.read().get::<u32>(&name_hash).cloned()
|
||||
}
|
||||
|
||||
/// Gets the form the Pokemon will have by default, if no other form is specified.
|
||||
fn get_default_form(&self) -> Arc<dyn Form> {
|
||||
self.forms.read().get(&get_default_key()).unwrap().clone()
|
||||
@@ -156,6 +164,10 @@ impl Species for SpeciesImpl {
|
||||
fn has_flag(&self, key: &StringKey) -> bool {
|
||||
self.flags.contains(key)
|
||||
}
|
||||
|
||||
fn has_flag_by_hash(&self, key_hash: u32) -> bool {
|
||||
self.flags.contains::<u32>(&key_hash)
|
||||
}
|
||||
}
|
||||
|
||||
impl ValueIdentifiable for SpeciesImpl {
|
||||
@@ -181,9 +193,11 @@ pub(crate) mod tests {
|
||||
fn flags(&self) -> &HashSet<StringKey>;
|
||||
fn add_form(&self, id: StringKey, form: Arc<dyn Form>);
|
||||
fn get_form(&self, id: &StringKey) -> Option<Arc<dyn Form>>;
|
||||
fn get_form_by_hash(&self, name_hash: u32) -> Option<Arc<dyn Form>>;
|
||||
fn get_default_form(&self) -> Arc<dyn Form>;
|
||||
fn get_random_gender(&self, rand: &mut Random) -> Gender;
|
||||
fn has_flag(&self, key: &StringKey) -> bool;
|
||||
fn has_flag_by_hash(&self, key_hash: u32) -> bool;
|
||||
}
|
||||
impl ValueIdentifiable for Species {
|
||||
fn value_identifier(&self) -> ValueIdentifier {
|
||||
|
||||
Reference in New Issue
Block a user