Exemple #1
0
        protected internal override void ProcessInput()
        {
            var cutsceneExitKeyEnabled = (!VariableCutSceneExitKey.HasValue || Variables[VariableCutSceneExitKey.Value] != 0);

            // VAR_VERSION_KEY (usually ctrl-v) is used in COMI, Dig and FT to trigger
            // a version dialog, unless VAR_VERSION_KEY is set to 0. However, the COMI
            // version string is hard coded in the engine, hence we don't invoke
            // versionDialog for it. Dig/FT version strings are partly hard coded, too.
//            if (Game.GameId != GameId.CurseOfMonkeyIsland && 0 != Variables[VariableVersionKey] &&
//                _inputManager.IsKeyDown(KeyCode.V) && _inputManager.IsKeyDown(KeyCode.Control)) {
//                VersionDialog();
//
//            } else
            if (cutsceneExitKeyEnabled && _inputState.IsKeyDown(KeyCode.Escape))
            {
                // Skip cutscene (or active SMUSH video).
                if (SmushActive)
                {
                    if (Game.GameId == GameId.FullThrottle)
                    {
                        Insane.EscapeKeyHandler();
                    }
                    else
                    {
                        SmushVideoShouldFinish = true;
                    }
                    _skipVideo = true;
                }
                else
                {
                    AbortCutscene();
                }

                mouseAndKeyboardStat = KeyCode.Escape;
            }
            else
            {
                base.ProcessInput();
            }

            if (_skipVideo && !SmushActive)
            {
                AbortCutscene();
                mouseAndKeyboardStat = KeyCode.Escape;
                _skipVideo           = false;
            }
        }
Exemple #2
0
        protected override void KernelSetFunctions()
        {
            var args = GetStackList(30);

            switch (args[0])
            {
            case 4:
                GrabCursor(args[1], args[2], args[3], args[4]);
                break;

            case 6:
            {
                // SMUSH movie playback
                if (args[1] == 0 && !_skipVideo)
                {
                    var videoname = GetStringAddressVar(VariableVideoName).GetText();
                    // TODO: vs
                    // Correct incorrect smush filename in Macintosh FT demo
//                            if ((_game.id == GID_FT) && (_game.features & GF_DEMO) && (_game.platform == Common::kPlatformMacintosh) &&
//                                (!strcmp(videoname, "jumpgorge.san")))
//                                _splayer.play("jumpgorg.san", _smushFrameRate);
                    // WORKAROUND: A faster frame rate is required, to keep audio/video in sync in this video
//                            else
                    if (Game.GameId == GameId.Dig && videoname == "sq3.san")
                    {
                        SmushPlayer.Play(videoname, 14);
                    }
                    else
                    {
                        SmushPlayer.Play(videoname, _smushFrameRate);
                    }

                    if (Game.GameId == GameId.Dig)
                    {
                        _disableFadeInEffect = true;
                    }
                }
                else if (Game.GameId == GameId.FullThrottle && !_skipVideo)
                {
                    var insaneVarNum = (Game.Features.HasFlag(GameFeatures.Demo) /* && (Game.Platform == Common::kPlatformDOS)*/)
                                ? (uint)232 : 233;

                    Insane.SetSmushParams(_smushFrameRate);
                    Insane.RunScene(insaneVarNum);
                }
            }
            break;

            case 12:
                SetCursorFromImg(args[1], -1, args[2]);
                break;

            case 13:
                Actors[args[1]].RemapActorPalette(args[2], args[3], args[4], -1);
                break;

            case 14:
                Actors[args[1]].RemapActorPalette(args[2], args[3], args[4], args[5]);
                break;

            case 15:
                _smushFrameRate = args[1];
                break;

            case 16:
            case 17:
                EnqueueText(GetStringAddressVar(VariableString2Draw), args[3], args[4], (byte)args[2], (byte)args[1], (args[0] == 16));
                break;

            case 20:
                IMuseDigital.RadioChatterSFX = args[1] != 0;
                break;

            case 107:
                Actors[args[1]].SetScale(args[2], -1);
                break;

            case 108:
                SetShadowPalette(args[1], args[2], args[3], args[4], args[5], args[6]);
                break;

            case 109:
                SetShadowPalette(0, args[1], args[2], args[3], args[4], args[5]);
                break;

            case 117:
                FreezeScripts(2);
                break;

            case 118:
                EnqueueObject(args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], 3);
                break;

            case 119:
                EnqueueObject(args[1], args[2], args[3], args[4], args[5], args[6], args[7], args[8], 0);
                break;

            case 124:
                _saveSound = args[1] != 0;
                break;

            default:
//                    Console.Error.WriteLine("KernelSetFunctions: default case {0} (param count {1})", args[0], args.Length);
                break;
            }
        }