Major amounts of progress
This commit is contained in:
@@ -1,2 +1,80 @@
|
||||
#[derive(Debug)]
|
||||
pub struct Battle {}
|
||||
use crate::dynamic_data::event_hooks::event_hook::EventHook;
|
||||
use crate::dynamic_data::flow::choice_queue::ChoiceQueue;
|
||||
use crate::dynamic_data::history::history_holder::HistoryHolder;
|
||||
use crate::dynamic_data::libraries::dynamic_library::DynamicLibrary;
|
||||
use crate::dynamic_data::models::battle_party::BattleParty;
|
||||
use crate::dynamic_data::models::battle_random::BattleRandom;
|
||||
use crate::dynamic_data::models::battle_result::BattleResult;
|
||||
use crate::dynamic_data::models::battle_side::BattleSide;
|
||||
use crate::dynamic_data::script_handling::script_set::ScriptSet;
|
||||
use derive_getters::Getters;
|
||||
use std::sync::{Arc, Mutex};
|
||||
|
||||
#[derive(Getters, Debug)]
|
||||
pub struct Battle<'a> {
|
||||
library: &'a DynamicLibrary<'a>,
|
||||
parties: Vec<BattleParty>,
|
||||
can_flee: bool,
|
||||
number_of_sides: u8,
|
||||
pokemon_per_side: u8,
|
||||
sides: Vec<BattleSide<'a>>,
|
||||
#[getter(skip)]
|
||||
random: BattleRandom,
|
||||
choice_queue: ChoiceQueue,
|
||||
has_ended: bool,
|
||||
result: BattleResult,
|
||||
event_hook: EventHook,
|
||||
history_holder: Box<HistoryHolder>,
|
||||
current_turn: u32,
|
||||
volatile: ScriptSet,
|
||||
last_turn_time: i64,
|
||||
}
|
||||
|
||||
impl<'a> Battle<'a> {
|
||||
pub fn new(
|
||||
library: &'a DynamicLibrary<'a>,
|
||||
parties: Vec<BattleParty>,
|
||||
can_flee: bool,
|
||||
number_of_sides: u8,
|
||||
pokemon_per_side: u8,
|
||||
random_seed: Option<u128>,
|
||||
) -> Arc<Mutex<Self>> {
|
||||
let random = if let Some(seed) = random_seed {
|
||||
BattleRandom::new_with_seed(seed)
|
||||
} else {
|
||||
BattleRandom::new()
|
||||
};
|
||||
let sides = Vec::with_capacity(number_of_sides as usize);
|
||||
let battle = Arc::new(Mutex::new(Self {
|
||||
library,
|
||||
parties,
|
||||
can_flee,
|
||||
number_of_sides,
|
||||
pokemon_per_side,
|
||||
sides,
|
||||
random,
|
||||
choice_queue: ChoiceQueue {},
|
||||
has_ended: false,
|
||||
result: BattleResult::Inconclusive,
|
||||
event_hook: Default::default(),
|
||||
history_holder: Box::new(HistoryHolder {}),
|
||||
current_turn: 0,
|
||||
volatile: ScriptSet {},
|
||||
last_turn_time: 0,
|
||||
}));
|
||||
|
||||
for i in 0..number_of_sides {
|
||||
battle.lock().unwrap().sides[i as usize] =
|
||||
BattleSide::new(i, Arc::downgrade(&battle), pokemon_per_side);
|
||||
}
|
||||
battle
|
||||
}
|
||||
|
||||
pub fn random(&mut self) -> &mut BattleRandom {
|
||||
&mut self.random
|
||||
}
|
||||
|
||||
pub fn can_slot_be_filled(&self) -> bool {
|
||||
todo!()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user