This commit is contained in:
Bel LaPointe
2023-03-23 17:52:08 -06:00
parent 1f110c82e6
commit aaefbde377
3 changed files with 391 additions and 30 deletions

View File

@@ -3,6 +3,7 @@ use iced::executor;
use iced::keyboard;
use iced::subscription;
use iced::{Alignment, Element, Application, Settings, Subscription, Theme, Command};
use iced_futures::backend::native::async_std::time::every;
use crate::stream::OutputStream;
use crate::config::GUI;
@@ -59,6 +60,7 @@ struct Stick {
#[derive(Debug, Clone)]
enum Message {
EventOccurred(iced_native::Event),
Tick,
Up,
Down,
Left,
@@ -110,6 +112,33 @@ impl Application for Main {
fn update(&mut self, msg: Message) -> Command<Message> {
match msg.clone() {
Message::Tick => {
let mut s = vec![];
for key_code in self.keys_down.iter() {
let nope = String::from("");
let s2 = match key_code {
_ if key_code == &self.inputs.stick.up => &self.flags.cfg.up,
_ if key_code == &self.inputs.stick.down => &self.flags.cfg.down,
_ if key_code == &self.inputs.stick.left => &self.flags.cfg.left,
_ if key_code == &self.inputs.stick.right => &self.flags.cfg.right,
_ if key_code == &self.inputs.a => &self.flags.cfg.a,
_ if key_code == &self.inputs.b => &self.flags.cfg.b,
_ if key_code == &self.inputs.x => &self.flags.cfg.x,
_ if key_code == &self.inputs.y => &self.flags.cfg.y,
_ if key_code == &self.inputs.l => &self.flags.cfg.l,
_ if key_code == &self.inputs.r => &self.flags.cfg.r,
_ => &nope,
};
if s2.len() > 0 {
for c in s2.chars() {
s.push(c);
}
}
}
if s.len() > 0 {
self.flags.output_stream.put(s);
}
},
Message::EventOccurred(event) if self.configuring.is_some() => {
match event {
iced::event::Event::Keyboard(keyboard::Event::KeyPressed{
@@ -163,39 +192,17 @@ impl Application for Main {
self.ntfy = format!("push a key to bind to {:?}", msg.clone());
},
}
let mut s = vec![];
for key_code in self.keys_down.iter() {
let nope = String::from("");
let s2 = match key_code {
_ if key_code == &self.inputs.stick.up => &self.flags.cfg.up,
_ if key_code == &self.inputs.stick.down => &self.flags.cfg.down,
_ if key_code == &self.inputs.stick.left => &self.flags.cfg.left,
_ if key_code == &self.inputs.stick.right => &self.flags.cfg.right,
_ if key_code == &self.inputs.a => &self.flags.cfg.a,
_ if key_code == &self.inputs.b => &self.flags.cfg.b,
_ if key_code == &self.inputs.x => &self.flags.cfg.x,
_ if key_code == &self.inputs.y => &self.flags.cfg.y,
_ if key_code == &self.inputs.l => &self.flags.cfg.l,
_ if key_code == &self.inputs.r => &self.flags.cfg.r,
_ => &nope,
};
if s2.len() > 0 {
for c in s2.chars() {
s.push(c);
}
}
}
if s.len() > 0 {
self.flags.output_stream.put(s);
}
return Command::none();
}
fn subscription(&self) -> Subscription<Message> {
return subscription::events_with(|event, _| match event {
iced::Event::Keyboard(_) => Some(Message::EventOccurred(event)),
_ => None,
});
return subscription::Subscription::batch(vec![
subscription::events_with(|event, _| match event {
iced::Event::Keyboard(_) => Some(Message::EventOccurred(event)),
_ => None,
}),
every(std::time::Duration::from_millis(25)).map(|_| Message::Tick),
]);
}
fn view(&self) -> Element<Message> {