NScumm.Scumm.ScummEngine3.CursorCommand C# (CSharp) Метод

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

private CursorCommand ( ) : void
Результат void
        void CursorCommand()
        {
            _opCode = ReadByte();
            switch (_opCode & 0x1F)
            {
                case 1:
				// Cursor On
                    _cursor.State = 1;
                    VerbMouseOver(0);
                    break;

                case 2:
				// Cursor Off
                    _cursor.State = 0;
                    VerbMouseOver(0);
                    break;

                case 3:
				// User Input on
                    _userPut = 1;
                    break;

                case 4:
				// User Input off
                    _userPut = 0;
                    break;

                case 5:
				// SO_CURSOR_SOFT_ON
                    _cursor.State++;
                    VerbMouseOver(0);
                    break;

                case 6:
				// SO_CURSOR_SOFT_OFF
                    _cursor.State--;
                    VerbMouseOver(0);
                    break;

                case 7:         // SO_USERPUT_SOFT_ON
                    _userPut++;
                    break;

                case 8:         // SO_USERPUT_SOFT_OFF
                    _userPut--;
                    break;

                case 10:
                    {
                        // SO_CURSOR_IMAGE
                        var i = GetVarOrDirectByte(OpCodeParameter.Param1); // Cursor number
                        var j = GetVarOrDirectByte(OpCodeParameter.Param2); // Charset letter to use
                        RedefineBuiltinCursorFromChar(i, j);
                    }
                    break;

                case 11:        // SO_CURSOR_HOTSPOT
                    {
                        var i = GetVarOrDirectByte(OpCodeParameter.Param1);
                        var j = GetVarOrDirectByte(OpCodeParameter.Param2);
                        var k = GetVarOrDirectByte(OpCodeParameter.Param3);
                        RedefineBuiltinCursorHotspot(i, j, k);
                    }
                    break;

                case 12:
                    {
                        // SO_CURSOR_SET
                        var i = GetVarOrDirectByte(OpCodeParameter.Param1);
                        if (i >= 0 && i <= 3)
                        {
                            _currentCursor = i;
                        }
//                        else
//                        {
//                            Console.Error.WriteLine("CURSOR_SET: unsupported cursor id {0}", i);
//                        }
                        break;
                    }
                case 13:
                    InitCharset(GetVarOrDirectByte(OpCodeParameter.Param1));
                    break;
                case 14:											/* unk */
                    if (Game.Version == 3)
                    {
                        GetVarOrDirectByte(OpCodeParameter.Param1);
                        GetVarOrDirectByte(OpCodeParameter.Param2);
                        // This is some kind of "init charset" opcode. However, we don't have to do anything
                        // in here, as our initCharset automatically calls loadCharset for GF_SMALL_HEADER,
                        // games if needed.
                    }
                    else
                    {
                        var table = GetWordVarArgs();
                        for (var i = 0; i < table.Length; i++)
                            CharsetColorMap[i] = _charsetData[String[1].Default.Charset][i] = (byte)table[i];
                    }
                    break;
                default:
                    throw new NotImplementedException();
            }

            if (VariableCursorState.HasValue)
            {
                Variables[VariableCursorState.Value] = _cursor.State;
                Variables[VariableUserPut.Value] = _userPut;
            }
        }
    }