NScumm.Scumm.Sound.StopCD C# (CSharp) Метод

StopCD() публичный Метод

public StopCD ( ) : void
Результат void
        public void StopCD()
        {
            timer.Change(-1, -1);
        }

Usage Example

Пример #1
0
        protected override void DecodeParseString()
        {
            int textSlot;

            switch (_actorToPrintStrFor)
            {
            case 252:
                textSlot = 3;
                break;

            case 253:
                textSlot = 2;
                break;

            case 254:
                textSlot = 1;
                break;

            default:
                textSlot = 0;
                break;
            }

            String[textSlot].LoadDefault();
            while ((_opCode = ReadByte()) != 0xFF)
            {
                switch (_opCode & 0xF)
                {
                case 0:         // SO_AT
                    String[textSlot].Position = new Point(
                        (short)GetVarOrDirectWord(OpCodeParameter.Param1),
                        (short)GetVarOrDirectWord(OpCodeParameter.Param2));
                    String[textSlot].Overhead = false;
                    break;

                case 1:         // SO_COLOR
                    String[textSlot].Color = (byte)GetVarOrDirectByte(OpCodeParameter.Param1);
                    break;

                case 2:         // SO_CLIPPED
                    String[textSlot].Right = (short)GetVarOrDirectWord(OpCodeParameter.Param1);
                    break;

                case 4:         // SO_CENTER
                    String[textSlot].Center   = true;
                    String[textSlot].Overhead = false;
                    break;

                case 6:         // SO_LEFT
                {
                    if (Game.Version == 3)
                    {
                        String[textSlot].Height = GetVarOrDirectWord(OpCodeParameter.Param1);
                    }
                    else
                    {
                        String[textSlot].Center   = false;
                        String[textSlot].Overhead = false;
                    }
                }
                break;

                case 7:         // SO_OVERHEAD
                    String[textSlot].Overhead = true;
                    break;

                case 8:
                {           // SO_SAY_VOICE
                    var offset = (ushort)GetVarOrDirectWord(OpCodeParameter.Param1);
                    var delay  = (ushort)GetVarOrDirectWord(OpCodeParameter.Param2);

                    if (Game.GameId == Scumm.IO.GameId.Loom && Game.Version == 4)
                    {
                        if (offset == 0 && delay == 0)
                        {
                            Variables[VariableMusicTimer.Value] = 0;
                            Sound.StopCD();
                        }
                        else
                        {
                            // Loom specified the offset from the start of the CD;
                            // thus we have to subtract the length of the first track
                            // (22500 frames) plus the 2 second = 150 frame leadin.
                            // I.e. in total 22650 frames.
                            offset = (ushort)(offset * 7.5 - 22500 - 2 * 75);

                            // Slightly increase the delay (5 frames = 1/25 of a second).
                            // This noticably improves the experience in Loom CD.
                            delay = (ushort)(delay * 7.5 + 5);

                            Sound.PlayCDTrack(1, 0, offset, delay);
                        }
                    }
//                            else
//                            {
//                                Console.Error.WriteLine("ScummEngine: decodeParseString: Unhandled case 8");
//                            }
                }
                break;

                case 15:
                {           // SO_TEXTSTRING
                    var tmp = ReadCharacters();
                    PrintString(textSlot, tmp);
                    // In SCUMM V1-V3, there were no 'default' values for the text slot
                    // values. Hence to achieve correct behavior, we have to keep the
                    // 'default' values in sync with the active values.
                    //
                    // Note: This is needed for Indy3 (Grail Diary). It's also needed
                    // for Loom, or the lines Bobbin speaks during the intro are put
                    // at position 0,0.
                    //
                    // Note: We can't use saveDefault() here because we only want to
                    // save the position and color. In particular, we do not want to
                    // save the 'center' flag. See bug #933168.
                    if (Game.Version <= 3)
                    {
                        String[textSlot].Default.Position = String[textSlot].Position;
                        String[textSlot].Default.Height   = String[textSlot].Height;
                        String[textSlot].Default.Color    = String[textSlot].Color;
                    }
                }
                    return;

                default:
                    throw new NotImplementedException();
                }
            }

            String[textSlot].SaveDefault();
        }