use crate::*; #[derive(Clone, Debug)] pub enum ClipCommand { Get(usize, usize), Put(usize, usize, Option>>), Enqueue(usize, usize), Edit(Option>>), SetLoop(usize, usize, bool), SetColor(usize, usize, ItemPalette), } command!(|self: ClipCommand, app: Tek|match self { Self::Get(track, scene) => { todo!() }, Self::Put(track, scene, clip) => { let old = app.scenes[scene].clips[track].clone(); app.scenes[scene].clips[track] = clip; Some(Self::Put(track, scene, old)) }, Self::Enqueue(track, scene) => { app.tracks[track].player.enqueue_next(app.scenes[scene].clips[track].as_ref()); None }, Self::SetColor(track, scene, color) => { app.scenes[scene].clips[track].as_ref().map(|clip|{ let mut clip = clip.write().unwrap(); let old = clip.color.clone(); clip.color = color.clone(); panic!("{color:?} {old:?}"); Self::SetColor(track, scene, old) }) }, _ => None });