Changeset 666 for trunk/Music.pas


Ignore:
Timestamp:
Jul 9, 2025, 10:36:23 PM (14 hours ago)
Author:
chronos
Message:
  • Added: Music volume option in game settings form.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Music.pas

    r665 r666  
    1212  TMusicPlayer = class
    1313  private
     14    FVolume: Single;
    1415    PlayerIndex1: Integer;
    1516    InputIndex1: Integer;
     
    1819    InputLength: Integer;
    1920    AutoPlayNext: Boolean;
     21    function GetPlaying: Boolean;
    2022    procedure Initialize;
    2123    procedure EndPlay(PlayerIndex: cint32);
    2224    function GetNextPlaylistItem: string;
    2325    procedure PlayNext(Data: PtrInt);
     26    procedure SetVolume(AValue: Single);
    2427  public
    2528    Playlist: TStringList;
     
    3033    procedure Play;
    3134    procedure Stop;
     35    property Playing: Boolean read GetPlaying;
     36    property Volume: Single read FVolume write SetVolume;
    3237  end;
    3338
     
    7883end;
    7984
     85function TMusicPlayer.GetPlaying: Boolean;
     86begin
     87  Result := PlayerIndex1 >= 0;
     88end;
     89
    8090procedure TMusicPlayer.EndPlay(PlayerIndex: cint32);
    8191begin
    82   if AutoPlayNext and (PlayerIndex = PlayerIndex1) then Application.QueueAsyncCall(PlayNext, 0);
     92  if AutoPlayNext then begin
     93    if PlayerIndex = PlayerIndex1 then Application.QueueAsyncCall(PlayNext, 0);
     94  end else PlayerIndex1 := -1;
    8395end;
    8496
     
    95107end;
    96108
     109procedure TMusicPlayer.SetVolume(AValue: Single);
     110begin
     111  if FVolume = AValue then Exit;
     112  FVolume := AValue;
     113  if FVolume > 1 then FVolume := 1;
     114  if FVolume < 0 then FVolume := 0;
     115  if Playing then
     116    uos_InputSetDSPVolume(PlayerIndex1, InputIndex1, Volume, Volume, True);
     117end;
     118
    97119constructor TMusicPlayer.Create;
    98120begin
    99121  Playlist := TStringList.Create;
     122  PlayerIndex1 := -1;
     123  FVolume := 1;
    100124end;
    101125
     
    154178
    155179  AutoPlayNext := False;
    156   uos_Stop(PlayerIndex1);
     180  if PlayerIndex1 >= 0 then uos_Stop(PlayerIndex1);
    157181
    158182  Inc(PlayerIndex1);
     
    171195  uos_InputSetPositionEnable(PlayerIndex1, InputIndex1, 1);
    172196  InputLength := uos_InputLength(PlayerIndex1, InputIndex1);
    173   uos_InputAddDSPVolume(PlayerIndex1, InputIndex1, 0.5, 0.5);
     197  uos_InputAddDSPVolume(PlayerIndex1, InputIndex1, Volume, Volume);
    174198
    175199  OutputIndex1 := uos_AddIntoDevOut(PlayerIndex1, -1, -1, -1, -1, -1, -1, -1);
     
    185209procedure TMusicPlayer.Stop;
    186210begin
    187   Initialize;
    188211  AutoPlayNext := False;
    189   uos_Stop(PlayerIndex1);
     212  if PlayerIndex1 >= 0 then begin
     213    Initialize;
     214    uos_Stop(PlayerIndex1);
     215  end;
     216  PlayerIndex1 := -1;
    190217end;
    191218
Note: See TracChangeset for help on using the changeset viewer.