EventDispatcher派生类返回使用EventProcResult替换bool

This commit is contained in:
2025-07-30 23:16:08 +08:00
parent 11838e9cc8
commit f1a36055e4
3 changed files with 25 additions and 22 deletions

View File

@@ -169,11 +169,13 @@ namespace hgl
{ {
if(header.type==InputEventSource::Keyboard) if(header.type==InputEventSource::Keyboard)
{ {
KeyboardEventData *ked=(KeyboardEventData *)&data;
switch(KeyboardEventID(header.id)) switch(KeyboardEventID(header.id))
{ {
case KeyboardEventID::Pressed: if(OnPressed (KeyboardButton(((KeyboardEventData *)&data)->key)))return EventProcResult::Break;break; case KeyboardEventID::Pressed: if(OnPressed (KeyboardButton(ked->key))==EventProcResult::Break)return EventProcResult::Break;break;
case KeyboardEventID::Released: if(OnReleased (KeyboardButton(((KeyboardEventData *)&data)->key)))return EventProcResult::Break;break; case KeyboardEventID::Released: if(OnReleased (KeyboardButton(ked->key))==EventProcResult::Break)return EventProcResult::Break;break;
case KeyboardEventID::Char: if(OnChar ( ((KeyboardEventData *)&data)->ch ) )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; return EventProcResult::Continue;
} }
virtual bool OnPressed(const KeyboardButton &kb){return(false);} virtual EventProcResult OnPressed (const KeyboardButton &kb){return(EventProcResult::Continue);}
virtual bool OnReleased(const KeyboardButton &kb){return(false);} virtual EventProcResult OnReleased (const KeyboardButton &kb){return(EventProcResult::Continue);}
virtual bool OnChar(const wchar_t &){return(false);} virtual EventProcResult OnChar (const wchar_t & ){return(EventProcResult::Continue);}
};//class KeyboardEvent };//class KeyboardEvent
class KeyboardStateEvent:public KeyboardEvent class KeyboardStateEvent:public KeyboardEvent
@@ -207,24 +209,24 @@ namespace hgl
virtual ~KeyboardStateEvent()=default; 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; press_states[(size_t)kb]=true;
pressed_time[(size_t)kb]=cur_time; 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; press_states[(size_t)kb]=false;
pressed_time[(size_t)kb]=0; pressed_time[(size_t)kb]=0;
return(true); return(EventProcResult::Break);
} }
public: public:

View File

@@ -57,12 +57,12 @@ namespace hgl::io
virtual EventProcResult OnEvent (const EventHeader &header,const uint64 data) override; virtual EventProcResult OnEvent (const EventHeader &header,const uint64 data) override;
virtual bool OnMove (const Vector2i &){return false;} virtual EventProcResult OnMove (const Vector2i &){return EventProcResult::Continue;}
virtual bool OnWheel (const Vector2i &){return false;} virtual EventProcResult OnWheel (const Vector2i &){return EventProcResult::Continue;}
virtual bool OnPressed (const Vector2i &,MouseButton){return false;} virtual EventProcResult OnPressed (const Vector2i &,MouseButton){return EventProcResult::Continue;}
virtual bool OnReleased (const Vector2i &,MouseButton){return false;} virtual EventProcResult OnReleased (const Vector2i &,MouseButton){return EventProcResult::Continue;}
virtual bool OnDblClicked(const Vector2i &,MouseButton){return false;} virtual EventProcResult OnDblClicked(const Vector2i &,MouseButton){return EventProcResult::Continue;}
/** /**
* 某按键是否按下 * 某按键是否按下

View File

@@ -13,18 +13,19 @@ namespace hgl::io
if(MouseEventID(header.id)==MouseEventID::Wheel) if(MouseEventID(header.id)==MouseEventID::Wheel)
{ {
if(OnWheel (position) )return EventProcResult::Break; if(OnWheel(position)==EventProcResult::Break)
return EventProcResult::Break;
} }
else else
{ {
switch(MouseEventID(header.id)) 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; 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; case MouseEventID::Released: pressed_statues[med->button]=false;
if(OnReleased (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)))return EventProcResult::Break;break; case MouseEventID::DblClicked: if(OnDblClicked (position,MouseButton(med->button))==EventProcResult::Break)return EventProcResult::Break;break;
} }
} }
} }