From 81945c399590c1bd2c6837bdae0091f6b649b3a1 Mon Sep 17 00:00:00 2001 From: tobigun Date: Sun, 6 Jun 2010 10:08:25 +0000 Subject: - URecord.ValidateSettings should not display the popup itself - Array free version of CheckPlayersConfig git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@2450 b956fd51-792f-4845-bead-9b4dfca2ff2c --- src/base/UMain.pas | 9 ++++++++- src/base/URecord.pas | 31 ++++++++++++++++++++----------- 2 files changed, 28 insertions(+), 12 deletions(-) (limited to 'src/base') diff --git a/src/base/UMain.pas b/src/base/UMain.pas index 0d479420..1d924d56 100644 --- a/src/base/UMain.pas +++ b/src/base/UMain.pas @@ -98,6 +98,7 @@ uses procedure Main; var WindowTitle: string; + BadPlayer: integer; begin {$IFNDEF Debug} try @@ -304,8 +305,14 @@ begin SoundLib.StartBgMusic; // check microphone settings, goto record options if they are corrupt - if (not AudioInputProcessor.ValidateSettings) then + BadPlayer := AudioInputProcessor.ValidateSettings; + if (BadPlayer <> 0) then + begin + ScreenPopupError.ShowPopup( + Format(Language.Translate('ERROR_PLAYER_DEVICE_ASSIGNMENT'), + [BadPlayer])); Display.CurrentScreen^.FadeTo( @ScreenOptionsRecord ); + end; //------------------------------ // Start Mainloop diff --git a/src/base/URecord.pas b/src/base/URecord.pas index 5d2b4666..6b8ba8cf 100644 --- a/src/base/URecord.pas +++ b/src/base/URecord.pas @@ -139,9 +139,11 @@ type {** * Validates the mic settings. * If a player was assigned to multiple mics a popup will be displayed - * with the ID of the player and the return value will be false. + * with the ID of the player. + * The return value is the player number of the first player that is not + * configured correctly or 0 if all players are correct. *} - function ValidateSettings: boolean; + function ValidateSettings: integer; {** * Checks if players 1 to PlayerCount are configured correctly. @@ -153,7 +155,12 @@ type * The PlayerState array is zero based (index 0 for player 1). *} function CheckPlayersConfig(PlayerCount: cardinal; - var PlayerState: TBooleanDynArray): integer; + var PlayerState: TBooleanDynArray): integer; overload; + + {** + * Same as the array version but it does not output a state for each player. + *} + function CheckPlayersConfig(PlayerCount: cardinal): integer; overload; {** * Handle microphone input @@ -185,8 +192,6 @@ implementation uses ULog, - UGraphic, - ULanguage, UNote; var @@ -619,7 +624,7 @@ begin end; end; -function TAudioInputProcessor.ValidateSettings: boolean; +function TAudioInputProcessor.ValidateSettings: integer; const MAX_PLAYER_COUNT = 6; // FIXME: there should be a global variable for this var @@ -648,10 +653,7 @@ begin // check if player is already assigned to another device/channel if (PlayerMap[PlayerID - 1]) then begin - ScreenPopupError.ShowPopup( - Format(Language.Translate('ERROR_PLAYER_DEVICE_ASSIGNMENT'), - [PlayerID])); - Result := false; + Result := PlayerID; Exit; end; @@ -660,7 +662,7 @@ begin end; end; end; - Result := true; + Result := 0; end; function TAudioInputProcessor.CheckPlayersConfig(PlayerCount: cardinal; @@ -708,6 +710,13 @@ begin end; end; +function TAudioInputProcessor.CheckPlayersConfig(PlayerCount: cardinal): integer; +var + PlayerState: TBooleanDynArray; +begin + CheckPlayersConfig(PlayerCount, PlayerState); +end; + {* * Handles captured microphone input data. * Params: -- cgit v1.2.3