Implements the script source methods on all current structs that implement it.
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This commit is contained in:
parent
f0bc62ce19
commit
00f66bbf59
|
@ -31,6 +31,8 @@ pub struct Battle<'a> {
|
||||||
current_turn: u32,
|
current_turn: u32,
|
||||||
volatile_scripts: Arc<RwLock<ScriptSet>>,
|
volatile_scripts: Arc<RwLock<ScriptSet>>,
|
||||||
last_turn_time: i64,
|
last_turn_time: i64,
|
||||||
|
|
||||||
|
script_source_data: RwLock<ScriptSourceData>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> Battle<'a> {
|
impl<'a> Battle<'a> {
|
||||||
|
@ -64,6 +66,7 @@ impl<'a> Battle<'a> {
|
||||||
current_turn: 0,
|
current_turn: 0,
|
||||||
volatile_scripts: Default::default(),
|
volatile_scripts: Default::default(),
|
||||||
last_turn_time: 0,
|
last_turn_time: 0,
|
||||||
|
script_source_data: Default::default(),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
for i in 0..number_of_sides {
|
for i in 0..number_of_sides {
|
||||||
|
@ -176,11 +179,11 @@ impl<'a> VolatileScripts<'a> for Battle<'a> {
|
||||||
|
|
||||||
impl<'a> ScriptSource<'a> for Battle<'a> {
|
impl<'a> ScriptSource<'a> for Battle<'a> {
|
||||||
fn get_script_count(&self) -> usize {
|
fn get_script_count(&self) -> usize {
|
||||||
todo!()
|
1
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_script_source_data(&self) -> &RwLock<ScriptSourceData> {
|
fn get_script_source_data(&self) -> &RwLock<ScriptSourceData> {
|
||||||
todo!()
|
&self.script_source_data
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_own_scripts(&self, scripts: &mut Vec<ScriptWrapper>) {
|
fn get_own_scripts(&self, scripts: &mut Vec<ScriptWrapper>) {
|
||||||
|
|
|
@ -23,6 +23,8 @@ pub struct BattleSide<'a> {
|
||||||
battle: Weak<RwLock<Battle<'a>>>,
|
battle: Weak<RwLock<Battle<'a>>>,
|
||||||
has_fled_battle: bool,
|
has_fled_battle: bool,
|
||||||
volatile_scripts: Arc<RwLock<ScriptSet>>,
|
volatile_scripts: Arc<RwLock<ScriptSet>>,
|
||||||
|
|
||||||
|
script_source_data: RwLock<ScriptSourceData>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> BattleSide<'a> {
|
impl<'a> BattleSide<'a> {
|
||||||
|
@ -47,6 +49,7 @@ impl<'a> BattleSide<'a> {
|
||||||
battle,
|
battle,
|
||||||
has_fled_battle: false,
|
has_fled_battle: false,
|
||||||
volatile_scripts: Default::default(),
|
volatile_scripts: Default::default(),
|
||||||
|
script_source_data: Default::default(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pub fn index(&self) -> u8 {
|
pub fn index(&self) -> u8 {
|
||||||
|
@ -277,11 +280,11 @@ impl<'a> VolatileScripts<'a> for BattleSide<'a> {
|
||||||
|
|
||||||
impl<'a> ScriptSource<'a> for BattleSide<'a> {
|
impl<'a> ScriptSource<'a> for BattleSide<'a> {
|
||||||
fn get_script_count(&self) -> usize {
|
fn get_script_count(&self) -> usize {
|
||||||
todo!()
|
self.battle.upgrade().unwrap().read().get_script_count() + 1
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_script_source_data(&self) -> &RwLock<ScriptSourceData> {
|
fn get_script_source_data(&self) -> &RwLock<ScriptSourceData> {
|
||||||
todo!()
|
&self.script_source_data
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_own_scripts(&self, scripts: &mut Vec<ScriptWrapper>) {
|
fn get_own_scripts(&self, scripts: &mut Vec<ScriptWrapper>) {
|
||||||
|
|
|
@ -65,6 +65,7 @@ pub struct ExecutingMove<'a, 'b> {
|
||||||
use_move: &'a MoveData,
|
use_move: &'a MoveData,
|
||||||
script: ScriptContainer,
|
script: ScriptContainer,
|
||||||
targets: Vec<Option<&'a Pokemon<'b>>>,
|
targets: Vec<Option<&'a Pokemon<'b>>>,
|
||||||
|
script_source_data: RwLock<ScriptSourceData>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, 'b> ExecutingMove<'a, 'b> {
|
impl<'a, 'b> ExecutingMove<'a, 'b> {
|
||||||
|
@ -89,6 +90,7 @@ impl<'a, 'b> ExecutingMove<'a, 'b> {
|
||||||
use_move,
|
use_move,
|
||||||
script,
|
script,
|
||||||
targets,
|
targets,
|
||||||
|
script_source_data: Default::default(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
pub fn target_count(&self) -> usize {
|
pub fn target_count(&self) -> usize {
|
||||||
|
@ -150,7 +152,7 @@ impl<'a, 'b> ScriptSource<'a> for ExecutingMove<'a, 'b> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_script_source_data(&self) -> &RwLock<ScriptSourceData> {
|
fn get_script_source_data(&self) -> &RwLock<ScriptSourceData> {
|
||||||
todo!()
|
&self.script_source_data
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_own_scripts(&self, scripts: &mut Vec<ScriptWrapper>) {
|
fn get_own_scripts(&self, scripts: &mut Vec<ScriptWrapper>) {
|
||||||
|
|
|
@ -92,6 +92,8 @@ pub struct Pokemon<'a> {
|
||||||
ability_script: ScriptContainer,
|
ability_script: ScriptContainer,
|
||||||
status_script: ScriptContainer,
|
status_script: ScriptContainer,
|
||||||
volatile: Arc<RwLock<ScriptSet>>,
|
volatile: Arc<RwLock<ScriptSet>>,
|
||||||
|
|
||||||
|
script_source_data: RwLock<ScriptSourceData>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> Pokemon<'a> {
|
impl<'a> Pokemon<'a> {
|
||||||
|
@ -154,6 +156,7 @@ impl<'a> Pokemon<'a> {
|
||||||
ability_script: ScriptContainer::default(),
|
ability_script: ScriptContainer::default(),
|
||||||
status_script: ScriptContainer::default(),
|
status_script: ScriptContainer::default(),
|
||||||
volatile: Default::default(),
|
volatile: Default::default(),
|
||||||
|
script_source_data: Default::default(),
|
||||||
};
|
};
|
||||||
pokemon.recalculate_flat_stats();
|
pokemon.recalculate_flat_stats();
|
||||||
pokemon
|
pokemon
|
||||||
|
@ -535,11 +538,18 @@ impl<'a> Pokemon<'a> {
|
||||||
|
|
||||||
impl<'a> ScriptSource<'a> for Pokemon<'a> {
|
impl<'a> ScriptSource<'a> for Pokemon<'a> {
|
||||||
fn get_script_count(&self) -> usize {
|
fn get_script_count(&self) -> usize {
|
||||||
todo!()
|
let mut c = 3;
|
||||||
|
if let Some(battle_data) = &self.battle_data {
|
||||||
|
if let Some(battle) = battle_data.battle.upgrade() {
|
||||||
|
c += battle.read().sides()[battle_data.battle_side_index as usize]
|
||||||
|
.get_script_count();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
c
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_script_source_data(&self) -> &RwLock<ScriptSourceData> {
|
fn get_script_source_data(&self) -> &RwLock<ScriptSourceData> {
|
||||||
todo!()
|
&self.script_source_data
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_own_scripts(&self, scripts: &mut Vec<ScriptWrapper>) {
|
fn get_own_scripts(&self, scripts: &mut Vec<ScriptWrapper>) {
|
||||||
|
|
|
@ -23,7 +23,7 @@ macro_rules! script_hook {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Default)]
|
#[derive(Default, Debug)]
|
||||||
pub struct ScriptSourceData {
|
pub struct ScriptSourceData {
|
||||||
is_initialized: bool,
|
is_initialized: bool,
|
||||||
scripts: Vec<ScriptWrapper>,
|
scripts: Vec<ScriptWrapper>,
|
||||||
|
@ -46,6 +46,7 @@ pub trait ScriptSource<'a> {
|
||||||
fn collect_scripts(&self, scripts: &mut Vec<ScriptWrapper>);
|
fn collect_scripts(&self, scripts: &mut Vec<ScriptWrapper>);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug)]
|
||||||
pub enum ScriptWrapper {
|
pub enum ScriptWrapper {
|
||||||
Script(Weak<RwLock<Option<Box<dyn Script>>>>),
|
Script(Weak<RwLock<Option<Box<dyn Script>>>>),
|
||||||
Set(Weak<RwLock<ScriptSet>>),
|
Set(Weak<RwLock<ScriptSet>>),
|
||||||
|
|
Loading…
Reference in New Issue