EventDispatcher派生类返回使用EventProcResult替换bool
This commit is contained in:
@@ -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:
|
||||||
|
@@ -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;}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 某按键是否按下
|
* 某按键是否按下
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user