diff --git a/inc/hgl/io/event/KeyboardEvent.h b/inc/hgl/io/event/KeyboardEvent.h index 1f0d4a2..e770f4a 100644 --- a/inc/hgl/io/event/KeyboardEvent.h +++ b/inc/hgl/io/event/KeyboardEvent.h @@ -169,11 +169,13 @@ namespace hgl { if(header.type==InputEventSource::Keyboard) { + KeyboardEventData *ked=(KeyboardEventData *)&data; + switch(KeyboardEventID(header.id)) { - case KeyboardEventID::Pressed: if(OnPressed (KeyboardButton(((KeyboardEventData *)&data)->key)))return EventProcResult::Break;break; - case KeyboardEventID::Released: if(OnReleased (KeyboardButton(((KeyboardEventData *)&data)->key)))return EventProcResult::Break;break; - case KeyboardEventID::Char: if(OnChar ( ((KeyboardEventData *)&data)->ch ) )return EventProcResult::Break;break; + case KeyboardEventID::Pressed: if(OnPressed (KeyboardButton(ked->key))==EventProcResult::Break)return EventProcResult::Break;break; + case KeyboardEventID::Released: if(OnReleased (KeyboardButton(ked->key))==EventProcResult::Break)return EventProcResult::Break;break; + case KeyboardEventID::Char: if(OnChar ( ked->ch ) ==EventProcResult::Break)return EventProcResult::Break;break; } } @@ -183,9 +185,9 @@ namespace hgl return EventProcResult::Continue; } - virtual bool OnPressed(const KeyboardButton &kb){return(false);} - virtual bool OnReleased(const KeyboardButton &kb){return(false);} - virtual bool OnChar(const wchar_t &){return(false);} + virtual EventProcResult OnPressed (const KeyboardButton &kb){return(EventProcResult::Continue);} + virtual EventProcResult OnReleased (const KeyboardButton &kb){return(EventProcResult::Continue);} + virtual EventProcResult OnChar (const wchar_t & ){return(EventProcResult::Continue);} };//class KeyboardEvent class KeyboardStateEvent:public KeyboardEvent @@ -207,24 +209,24 @@ namespace hgl virtual ~KeyboardStateEvent()=default; - virtual bool OnPressed(const KeyboardButton &kb) override + virtual EventProcResult OnPressed(const KeyboardButton &kb) override { - if(!RangeCheck(kb))return(false); + if(!RangeCheck(kb))return(EventProcResult::Continue); press_states[(size_t)kb]=true; pressed_time[(size_t)kb]=cur_time; - return(true); + return(EventProcResult::Break); } - virtual bool OnReleased(const KeyboardButton &kb) override + virtual EventProcResult OnReleased(const KeyboardButton &kb) override { - if(!RangeCheck(kb))return(false); + if(!RangeCheck(kb))return(EventProcResult::Continue); press_states[(size_t)kb]=false; pressed_time[(size_t)kb]=0; - return(true); + return(EventProcResult::Break); } public: diff --git a/inc/hgl/io/event/MouseEvent.h b/inc/hgl/io/event/MouseEvent.h index 88f30ab..37e32da 100644 --- a/inc/hgl/io/event/MouseEvent.h +++ b/inc/hgl/io/event/MouseEvent.h @@ -57,12 +57,12 @@ namespace hgl::io virtual EventProcResult OnEvent (const EventHeader &header,const uint64 data) override; - virtual bool OnMove (const Vector2i &){return false;} - virtual bool OnWheel (const Vector2i &){return false;} + virtual EventProcResult OnMove (const Vector2i &){return EventProcResult::Continue;} + virtual EventProcResult OnWheel (const Vector2i &){return EventProcResult::Continue;} - virtual bool OnPressed (const Vector2i &,MouseButton){return false;} - virtual bool OnReleased (const Vector2i &,MouseButton){return false;} - virtual bool OnDblClicked(const Vector2i &,MouseButton){return false;} + virtual EventProcResult OnPressed (const Vector2i &,MouseButton){return EventProcResult::Continue;} + virtual EventProcResult OnReleased (const Vector2i &,MouseButton){return EventProcResult::Continue;} + virtual EventProcResult OnDblClicked(const Vector2i &,MouseButton){return EventProcResult::Continue;} /** * 某按键是否按下 diff --git a/src/IO/Event/MouseEvent.cpp b/src/IO/Event/MouseEvent.cpp index e88d029..da92dbc 100644 --- a/src/IO/Event/MouseEvent.cpp +++ b/src/IO/Event/MouseEvent.cpp @@ -13,18 +13,19 @@ namespace hgl::io if(MouseEventID(header.id)==MouseEventID::Wheel) { - if(OnWheel (position) )return EventProcResult::Break; + if(OnWheel(position)==EventProcResult::Break) + return EventProcResult::Break; } else { switch(MouseEventID(header.id)) { - case MouseEventID::Move: if(OnMove (position) )return EventProcResult::Break;break; + case MouseEventID::Move: if(OnMove (position) ==EventProcResult::Break)return EventProcResult::Break;break; case MouseEventID::Pressed: pressed_statues[med->button]=true; - if(OnPressed (position,MouseButton(med->button)))return EventProcResult::Break;break; + if(OnPressed (position,MouseButton(med->button))==EventProcResult::Break)return EventProcResult::Break;break; case MouseEventID::Released: pressed_statues[med->button]=false; - if(OnReleased (position,MouseButton(med->button)))return EventProcResult::Break;break; - case MouseEventID::DblClicked: if(OnDblClicked (position,MouseButton(med->button)))return EventProcResult::Break;break; + if(OnReleased (position,MouseButton(med->button))==EventProcResult::Break)return EventProcResult::Break;break; + case MouseEventID::DblClicked: if(OnDblClicked (position,MouseButton(med->button))==EventProcResult::Break)return EventProcResult::Break;break; } } }