Adds assist and assurance, fixes
This commit is contained in:
10
pkmn_lib_interface/src/app_interface/dynamic_data/battle.rs
Normal file → Executable file
10
pkmn_lib_interface/src/app_interface/dynamic_data/battle.rs
Normal file → Executable file
@@ -50,6 +50,12 @@ impl Battle {
|
||||
pub fn get_pokemon(&self, side: u8, index: u8) -> Option<Pokemon> {
|
||||
unsafe { battle_get_pokemon(self.inner.reference, side, index).get_value() }
|
||||
}
|
||||
|
||||
pub fn find_party_for_pokemon(&self, pokemon: &Pokemon) -> Option<BattleParty> {
|
||||
unsafe {
|
||||
battle_find_party_for_pokemon(self.inner.reference, pokemon.reference()).get_value()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
wasm_value_getters! {
|
||||
@@ -80,4 +86,8 @@ extern "wasm" {
|
||||
fn battle_get_random(r: ExternRef<Battle>) -> ExternRef<BattleRandom>;
|
||||
fn battle_get_choice_queue(r: ExternRef<Battle>) -> ExternRef<ChoiceQueue>;
|
||||
fn battle_get_pokemon(r: ExternRef<Battle>, side: u8, index: u8) -> ExternRef<Pokemon>;
|
||||
fn battle_find_party_for_pokemon(
|
||||
r: ExternRef<Battle>,
|
||||
mon: ExternRef<Pokemon>,
|
||||
) -> ExternRef<BattleParty>;
|
||||
}
|
||||
|
||||
0
pkmn_lib_interface/src/app_interface/dynamic_data/battle_party.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/dynamic_data/battle_party.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/dynamic_data/battle_random.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/dynamic_data/battle_random.rs
Normal file → Executable file
44
pkmn_lib_interface/src/app_interface/dynamic_data/battle_side.rs
Normal file → Executable file
44
pkmn_lib_interface/src/app_interface/dynamic_data/battle_side.rs
Normal file → Executable file
@@ -1,10 +1,13 @@
|
||||
use crate::app_interface::{Battle, Pokemon};
|
||||
use crate::handling::cacheable::Cacheable;
|
||||
use crate::handling::cached_value::CachedValue;
|
||||
use crate::handling::Cacheable;
|
||||
use crate::{
|
||||
cached_value, cached_value_getters, wasm_value_getters, ExternRef, ExternalReferenceType,
|
||||
Script, ScriptPtr,
|
||||
};
|
||||
use alloc::boxed::Box;
|
||||
use alloc::rc::Rc;
|
||||
use cstr_core::{c_char, CString};
|
||||
|
||||
struct BattleSideInner {
|
||||
reference: ExternRef<BattleSide>,
|
||||
@@ -41,6 +44,39 @@ impl BattleSide {
|
||||
pub fn get_pokemon(&self, index: usize) -> Option<Pokemon> {
|
||||
unsafe { battleside_get_pokemon(self.inner.reference, index).get_value() }
|
||||
}
|
||||
|
||||
#[cfg(not(feature = "mock_data"))]
|
||||
pub fn add_volatile(&self, script: Box<dyn Script>) -> &dyn Script {
|
||||
unsafe {
|
||||
battleside_add_volatile(self.inner.reference, ScriptPtr::new(script))
|
||||
.val()
|
||||
.unwrap()
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(not(feature = "mock_data"))]
|
||||
pub fn remove_volatile(&self, script: &dyn Script) {
|
||||
unsafe {
|
||||
let name = CString::new(script.get_name()).unwrap();
|
||||
battleside_remove_volatile(self.inner.reference, name.into_raw());
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(not(feature = "mock_data"))]
|
||||
pub fn get_volatile<T>(&self, script_name: &str) -> Option<&T>
|
||||
where
|
||||
T: Script + 'static,
|
||||
{
|
||||
unsafe {
|
||||
let script_name = CString::new(script_name).unwrap();
|
||||
let s = battleside_get_volatile(self.inner.reference, script_name.into_raw()).val();
|
||||
if let Some(s) = s {
|
||||
Some(s.as_any().downcast_ref().unwrap())
|
||||
} else {
|
||||
None
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
wasm_value_getters! {
|
||||
@@ -64,4 +100,10 @@ extern "wasm" {
|
||||
fn battleside_get_pokemon_per_side(r: ExternRef<BattleSide>) -> u8;
|
||||
fn battleside_get_battle(r: ExternRef<BattleSide>) -> ExternRef<Battle>;
|
||||
fn battleside_get_pokemon(r: ExternRef<BattleSide>, index: usize) -> ExternRef<Pokemon>;
|
||||
|
||||
fn battleside_add_volatile_by_name(r: ExternRef<BattleSide>, name: *const c_char) -> ScriptPtr;
|
||||
fn battleside_add_volatile(r: ExternRef<BattleSide>, script: ScriptPtr) -> ScriptPtr;
|
||||
fn battleside_has_volatile(r: ExternRef<BattleSide>, name: *const c_char) -> bool;
|
||||
fn battleside_remove_volatile(r: ExternRef<BattleSide>, name: *const c_char);
|
||||
fn battleside_get_volatile(r: ExternRef<BattleSide>, name: *const c_char) -> ScriptPtr;
|
||||
}
|
||||
|
||||
0
pkmn_lib_interface/src/app_interface/dynamic_data/choice_queue.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/dynamic_data/choice_queue.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/dynamic_data/dynamic_library.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/dynamic_data/dynamic_library.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/dynamic_data/executing_move.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/dynamic_data/executing_move.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/dynamic_data/learned_move.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/dynamic_data/learned_move.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/dynamic_data/mod.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/dynamic_data/mod.rs
Normal file → Executable file
5
pkmn_lib_interface/src/app_interface/dynamic_data/party.rs
Normal file → Executable file
5
pkmn_lib_interface/src/app_interface/dynamic_data/party.rs
Normal file → Executable file
@@ -15,6 +15,10 @@ impl Party {
|
||||
pub fn get_pokemon(&self, index: usize) -> Option<Pokemon> {
|
||||
unsafe { party_get_pokemon(self.reference, index).get_value() }
|
||||
}
|
||||
|
||||
pub fn length(&self) -> usize {
|
||||
unsafe { party_get_length(self.reference) }
|
||||
}
|
||||
}
|
||||
|
||||
impl ExternalReferenceType for Party {
|
||||
@@ -26,4 +30,5 @@ impl ExternalReferenceType for Party {
|
||||
#[cfg(not(feature = "mock_data"))]
|
||||
extern "wasm" {
|
||||
fn party_get_pokemon(r: ExternRef<Party>, index: usize) -> ExternRef<Pokemon>;
|
||||
fn party_get_length(r: ExternRef<Party>) -> usize;
|
||||
}
|
||||
|
||||
13
pkmn_lib_interface/src/app_interface/dynamic_data/pokemon.rs
Normal file → Executable file
13
pkmn_lib_interface/src/app_interface/dynamic_data/pokemon.rs
Normal file → Executable file
@@ -1,7 +1,7 @@
|
||||
use crate::app_interface::ability::{Ability, AbilityIndex};
|
||||
use crate::app_interface::{
|
||||
Battle, ClampedStatisticSet, Form, Gender, Item, LearnedMove, LevelInt, Nature, Species,
|
||||
Statistic, StatisticSet,
|
||||
Battle, BattleSide, ClampedStatisticSet, Form, Gender, Item, LearnedMove, LevelInt, Nature,
|
||||
Species, Statistic, StatisticSet,
|
||||
};
|
||||
use crate::handling::cached_value::CachedValue;
|
||||
use crate::handling::Cacheable;
|
||||
@@ -169,6 +169,15 @@ impl Pokemon {
|
||||
pub fn heal(&self, amount: u32, allow_revive: bool) -> bool {
|
||||
unsafe { pokemon_heal(self.inner.reference, amount, allow_revive) }
|
||||
}
|
||||
|
||||
#[cfg(not(feature = "mock_data"))]
|
||||
pub fn battle_side(&self) -> BattleSide {
|
||||
self.battle()
|
||||
.unwrap()
|
||||
.sides()
|
||||
.get(self.battle_side_index() as u32)
|
||||
.unwrap()
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(not(feature = "mock_data"))]
|
||||
|
||||
0
pkmn_lib_interface/src/app_interface/dynamic_data/statistic_set.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/dynamic_data/statistic_set.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/dynamic_data/turn_choices.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/dynamic_data/turn_choices.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/list.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/list.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/mod.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/mod.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/static_data/ability.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/static_data/ability.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/static_data/data_libraries/item_library.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/static_data/data_libraries/item_library.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/static_data/data_libraries/mod.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/static_data/data_libraries/mod.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/static_data/data_libraries/move_library.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/static_data/data_libraries/move_library.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/static_data/data_libraries/species_library.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/static_data/data_libraries/species_library.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/static_data/data_libraries/type_library.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/static_data/data_libraries/type_library.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/static_data/effect_parameter.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/static_data/effect_parameter.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/static_data/item.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/static_data/item.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/static_data/mod.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/static_data/mod.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/static_data/move_data.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/static_data/move_data.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/static_data/nature.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/static_data/nature.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/static_data/species.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/static_data/species.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/string_key.rs
Normal file → Executable file
0
pkmn_lib_interface/src/app_interface/string_key.rs
Normal file → Executable file
Reference in New Issue
Block a user