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)
{
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:

View File

@@ -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;}
/**
* 某按键是否按下

View File

@@ -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;
}
}
}