NScumm.Scumm.ScummEngine6.VerbOps C# (CSharp) Метод

VerbOps() приватный Метод

private VerbOps ( ) : void
Результат void
        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));
            }
        }
ScummEngine6