protected virtual void CheckExecVerbs()
{
if (_userPut <= 0 || mouseAndKeyboardStat == 0)
return;
if ((ScummMouseButtonState)mouseAndKeyboardStat < ScummMouseButtonState.MaxKey)
{
// Check keypresses
var vs = (from verb in Verbs.Skip(1)
where verb.VerbId != 0 && verb.SaveId == 0 && verb.CurMode == 1
where verb.Key == (byte)mouseAndKeyboardStat
select verb).FirstOrDefault();
if (vs != null)
{
// Trigger verb as if the user clicked it
RunInputScript(ClickArea.Verb, (KeyCode)vs.VerbId, 1);
return;
}
// Generic keyboard input
RunInputScript(ClickArea.Key, mouseAndKeyboardStat, 1);
}
else if ((((ScummMouseButtonState)mouseAndKeyboardStat) & ScummMouseButtonState.MouseMask) != 0)
{
var code = ((ScummMouseButtonState)mouseAndKeyboardStat).HasFlag(ScummMouseButtonState.LeftClick) ? (byte)1 : (byte)2;
var zone = FindVirtScreen(_mousePos.Y);
if (zone == null)
return;
var over = FindVerbAtPos(_mousePos);
if (over != 0)
{
// Verb was clicked
RunInputScript(ClickArea.Verb, (KeyCode)Verbs[over].VerbId, code);
}
else
{
// Scene was clicked
var area = zone == MainVirtScreen ? ClickArea.Scene : ClickArea.Verb;
RunInputScript(area, 0, code);
}
}
}