Rename "state" to "fsm_state" to avoid confusion

This commit is contained in:
Keavon Chambers 2021-04-06 22:21:32 -07:00
parent b88c246c87
commit 59f7af3f47
5 changed files with 28 additions and 28 deletions

View file

@ -20,11 +20,11 @@ pub use dispatcher::Callback;
use dispatcher::Dispatcher;
use document_core::Document;
use tools::ToolState;
use tools::ToolFsmState;
use workspace::Workspace;
pub struct EditorState {
tool_state: ToolState,
tool_state: ToolFsmState,
workspace: Workspace,
document: Document,
}
@ -39,7 +39,7 @@ impl Editor {
pub fn new(callback: Callback) -> Self {
Self {
state: EditorState {
tool_state: ToolState::new(),
tool_state: ToolFsmState::new(),
workspace: Workspace::new(),
document: Document::default(),
},

View file

@ -6,46 +6,46 @@ use document_core::Operation;
#[derive(Default)]
pub struct Ellipse {
state: EllipseToolState,
fsm_state: EllipseToolFsmState,
}
impl Tool for Ellipse {
fn handle_input(&mut self, event: &Event, document: &Document) -> (Vec<Response>, Vec<Operation>) {
let mut responses = Vec::new();
let mut operations = Vec::new();
self.state = self.state.transition(event, document, &mut responses, &mut operations);
self.fsm_state = self.fsm_state.transition(event, document, &mut responses, &mut operations);
(responses, operations)
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
enum EllipseToolState {
enum EllipseToolFsmState {
Ready,
LmbDown,
TransformSelected,
}
impl Default for EllipseToolState {
impl Default for EllipseToolFsmState {
fn default() -> Self {
EllipseToolState::Ready
EllipseToolFsmState::Ready
}
}
impl Fsm for EllipseToolState {
impl Fsm for EllipseToolFsmState {
fn transition(self, event: &Event, document: &Document, responses: &mut Vec<Response>, operations: &mut Vec<Operation>) -> Self {
match (self, event) {
(EllipseToolState::Ready, Event::MouseDown(mouse_state)) if mouse_state.mouse_keys.contains(MouseKeys::LEFT) => EllipseToolState::LmbDown,
(EllipseToolFsmState::Ready, Event::MouseDown(mouse_state)) if mouse_state.mouse_keys.contains(MouseKeys::LEFT) => EllipseToolFsmState::LmbDown,
// TODO - Check for left mouse button
(EllipseToolState::LmbDown, Event::MouseUp(mouse_state)) => {
(EllipseToolFsmState::LmbDown, Event::MouseUp(mouse_state)) => {
operations.push(Operation::AddCircle {
cx: mouse_state.position.x as f64,
cy: mouse_state.position.y as f64,
r: 10.0,
});
EllipseToolState::Ready
EllipseToolFsmState::Ready
}
_ => self,

View file

@ -24,7 +24,7 @@ pub trait Fsm {
fn transition(self, event: &Event, document: &Document, responses: &mut Vec<Response>, operations: &mut Vec<Operation>) -> Self;
}
pub struct ToolState {
pub struct ToolFsmState {
pub mouse_state: MouseState,
pub mod_keys: ModKeys,
pub trace: Trace,
@ -35,9 +35,9 @@ pub struct ToolState {
tool_settings: HashMap<ToolType, ToolSettings>,
}
impl Default for ToolState {
impl Default for ToolFsmState {
fn default() -> Self {
ToolState {
ToolFsmState {
mouse_state: MouseState::default(),
mod_keys: ModKeys::default(),
trace: Trace::new(),
@ -61,7 +61,7 @@ impl Default for ToolState {
}
}
impl ToolState {
impl ToolFsmState {
pub fn new() -> Self {
Self::default()
}

View file

@ -12,7 +12,7 @@ impl Tool for Rectangle {
}
}
enum RectangleToolState {
enum RectangleToolFsmState {
Ready,
Dragging,
}

View file

@ -6,44 +6,44 @@ use document_core::Operation;
#[derive(Default)]
pub struct Select {
state: SelectToolState,
fsm_state: SelectToolFsmState,
}
impl Tool for Select {
fn handle_input(&mut self, event: &Event, document: &Document) -> (Vec<Response>, Vec<Operation>) {
let mut responses = Vec::new();
let mut operations = Vec::new();
self.state = self.state.transition(event, document, &mut responses, &mut operations);
self.fsm_state = self.fsm_state.transition(event, document, &mut responses, &mut operations);
(responses, operations)
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
enum SelectToolState {
enum SelectToolFsmState {
Ready,
LmbDown,
TransformSelected,
}
impl Default for SelectToolState {
impl Default for SelectToolFsmState {
fn default() -> Self {
SelectToolState::Ready
SelectToolFsmState::Ready
}
}
impl Fsm for SelectToolState {
impl Fsm for SelectToolFsmState {
fn transition(self, event: &Event, document: &Document, responses: &mut Vec<Response>, operations: &mut Vec<Operation>) -> Self {
match (self, event) {
(SelectToolState::Ready, Event::MouseDown(mouse_state)) if mouse_state.mouse_keys.contains(MouseKeys::LEFT) => SelectToolState::LmbDown,
(SelectToolFsmState::Ready, Event::MouseDown(mouse_state)) if mouse_state.mouse_keys.contains(MouseKeys::LEFT) => SelectToolFsmState::LmbDown,
(SelectToolState::LmbDown, Event::MouseUp(mouse_state)) if mouse_state.mouse_keys.contains(MouseKeys::LEFT) => SelectToolState::Ready,
(SelectToolFsmState::LmbDown, Event::MouseUp(mouse_state)) if mouse_state.mouse_keys.contains(MouseKeys::LEFT) => SelectToolFsmState::Ready,
(SelectToolState::LmbDown, Event::MouseMove(mouse_state)) => SelectToolState::TransformSelected,
(SelectToolFsmState::LmbDown, Event::MouseMove(mouse_state)) => SelectToolFsmState::TransformSelected,
(SelectToolState::TransformSelected, Event::MouseMove(mouse_state)) => self,
(SelectToolFsmState::TransformSelected, Event::MouseMove(mouse_state)) => self,
(SelectToolState::TransformSelected, Event::MouseUp(mouse_state)) if mouse_state.mouse_keys.contains(MouseKeys::LEFT) => SelectToolState::Ready,
(SelectToolFsmState::TransformSelected, Event::MouseUp(mouse_state)) if mouse_state.mouse_keys.contains(MouseKeys::LEFT) => SelectToolFsmState::Ready,
_ => self,
}