protected virtual void VerbOps()
{
var subOp = ReadByte();
if (subOp == 196)
{
_curVerb = Pop();
_curVerbSlot = GetVerbSlot(_curVerb, 0);
ScummHelper.AssertRange(0, _curVerbSlot, Verbs.Length - 1, "new verb slot");
return;
}
var vs = Verbs[_curVerbSlot];
var slot = _curVerbSlot;
switch (subOp)
{
case 124: // SO_VERB_IMAGE
{
var a = Pop();
if (_curVerbSlot != 0)
{
SetVerbObject(_roomResource, a, slot);
vs.Type = VerbType.Image;
}
}
break;
case 125: // SO_VERB_NAME
Verbs[slot].Text = ReadCharacters();
vs.Type = VerbType.Text;
vs.ImgIndex = 0;
break;
case 126: // SO_VERB_COLOR
vs.Color = (byte)Pop();
break;
case 127: // SO_VERB_HICOLOR
vs.HiColor = (byte)Pop();
break;
case 128: // SO_VERB_AT
vs.CurRect.Top = Pop();
vs.CurRect.Left = Pop();
break;
case 129: // SO_VERB_ON
vs.CurMode = 1;
break;
case 130: // SO_VERB_OFF
vs.CurMode = 0;
break;
case 131: // SO_VERB_DELETE
KillVerb(slot);
break;
case 132: // SO_VERB_NEW
slot = GetVerbSlot(_curVerb, 0);
if (slot == 0)
{
for (slot = 1; slot < Verbs.Length; slot++)
{
if (Verbs[slot].VerbId == 0)
break;
}
_curVerbSlot = slot;
}
vs = Verbs[slot];
vs.VerbId = (ushort)_curVerb;
vs.Color = 2;
vs.HiColor = 0;
vs.DimColor = 8;
vs.Type = VerbType.Text;
vs.CharsetNr = String[0].Default.Charset;
vs.CurMode = 0;
vs.SaveId = 0;
vs.Key = 0;
vs.Center = false;
vs.ImgIndex = 0;
break;
case 133: // SO_VERB_DIMCOLOR
vs.DimColor = (byte)Pop();
break;
case 134: // SO_VERB_DIM
vs.CurMode = 2;
break;
case 135: // SO_VERB_KEY
vs.Key = (byte)Pop();
break;
case 136: // SO_VERB_CENTER
vs.Center = true;
break;
case 137: // SO_VERB_NAME_STR
{
var a = Pop();
if (a == 0)
{
Verbs[slot].Text = new byte[0];
}
else
{
Verbs[slot].Text = GetStringAt(a);
}
vs.Type = VerbType.Text;
vs.ImgIndex = 0;
}
break;
case 139: // SO_VERB_IMAGE_IN_ROOM
{
var b = (byte)Pop();
var a = (ushort)Pop();
if (slot != 0 && a != vs.ImgIndex)
{
SetVerbObject(b, a, slot);
vs.Type = VerbType.Image;
vs.ImgIndex = a;
}
}
break;
case 140: // SO_VERB_BAKCOLOR
vs.BkColor = (byte)Pop();
break;
case 255:
DrawVerb(slot, 0);
VerbMouseOver(0);
break;
default:
throw new NotSupportedException(string.Format("Verbops: default case {0}", subOp));
}
}