pub struct BossMusicController {
pub boss: Option<BossMusic>,
pub note_buffer: Vec<f32>,
pub buffer_capacity: usize,
pub reverse_cursor: usize,
pub active_layer_count: u32,
pub last_strip_hp: f32,
pub time_sig_numerator: u8,
pub algorithm_phase: u8,
pub dominant_action: PlayerActionType,
pub action_counts: [u32; 3],
}Expand description
Per-boss music controller.
Fields§
§boss: Option<BossMusic>§note_buffer: Vec<f32>Note sequence buffer (for Mirror’s reverse melody).
buffer_capacity: usizeMax notes to buffer for Mirror boss reverse playback.
reverse_cursor: usizeReverse playback cursor.
active_layer_count: u32How many layers are currently active (for Null boss stripping).
last_strip_hp: f32Null boss HP fraction at which the last layer was stripped.
time_sig_numerator: u8Time signature numerator (for Committee’s 5/4).
algorithm_phase: u8AlgorithmReborn phase (1, 2, or 3).
dominant_action: PlayerActionTypePlayer’s most-used action (for AlgorithmReborn Phase 2).
action_counts: [u32; 3]Action counts for tracking.
Implementations§
Source§impl BossMusicController
impl BossMusicController
pub fn new() -> Self
Sourcepub fn activate(&mut self, boss: BossMusic, stack: &mut MusicLayerStack)
pub fn activate(&mut self, boss: BossMusic, stack: &mut MusicLayerStack)
Activate boss-specific music behaviour.
Sourcepub fn deactivate(&mut self)
pub fn deactivate(&mut self)
Deactivate boss music (combat over).
Sourcepub fn mirror_buffer_note(&mut self, freq: f32)
pub fn mirror_buffer_note(&mut self, freq: f32)
Feed a generated note into the Mirror boss’s reverse buffer.
Sourcepub fn mirror_next_reversed(&mut self) -> Option<f32>
pub fn mirror_next_reversed(&mut self) -> Option<f32>
Get the next note from the Mirror boss’s reversed buffer.
Sourcepub fn null_update_hp(&mut self, hp_fraction: f32, stack: &mut MusicLayerStack)
pub fn null_update_hp(&mut self, hp_fraction: f32, stack: &mut MusicLayerStack)
Null boss: strip a layer when HP crosses a 10% threshold.
Sourcepub fn record_action(&mut self, action: PlayerActionType)
pub fn record_action(&mut self, action: PlayerActionType)
Record a player action for AlgorithmReborn adaptation.
Sourcepub fn algorithm_advance_phase(&mut self, stack: &mut MusicLayerStack)
pub fn algorithm_advance_phase(&mut self, stack: &mut MusicLayerStack)
AlgorithmReborn: advance to the next phase.
Sourcepub fn process_notes(
&mut self,
notes: &mut Vec<NoteEvent>,
stack: &mut MusicLayerStack,
)
pub fn process_notes( &mut self, notes: &mut Vec<NoteEvent>, stack: &mut MusicLayerStack, )
Process notes through boss-specific transformations.
Trait Implementations§
Source§impl Clone for BossMusicController
impl Clone for BossMusicController
Source§fn clone(&self) -> BossMusicController
fn clone(&self) -> BossMusicController
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for BossMusicController
impl Debug for BossMusicController
Auto Trait Implementations§
impl Freeze for BossMusicController
impl RefUnwindSafe for BossMusicController
impl Send for BossMusicController
impl Sync for BossMusicController
impl Unpin for BossMusicController
impl UnsafeUnpin for BossMusicController
impl UnwindSafe for BossMusicController
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.