aboutsummaryrefslogtreecommitdiffstats
path: root/Game/Code/Screens (follow)
Commit message (Collapse)AuthorAgeFilesLines
* - TStatResult is an abstract class now.tobigun2008-08-082-106/+152
| | | | | | | - GetStats returns a TList of TStatResult now - Free the result-list with FreeStats git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1230 b956fd51-792f-4845-bead-9b4dfca2ff2c
* - Reset-Timestamp changed from STRING to INTEGER (stored as UNIX-timestamp)tobigun2008-08-071-1/+1
| | | | | | - Version-number for database-file added git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1229 b956fd51-792f-4845-bead-9b4dfca2ff2c
* - Introduced TStatType.tobigun2008-08-072-41/+43
| | | | | | - Replaced TSQLiteTable with the new TSQLiteUniTable. The ..UniTable-version does not retrieve data at once (this feature is not needed/wanted in most cases). The major advantage of this version is a better handling of datatypes. TSQLiteTable does not handle datatypes correctly (and even crashes) if the field-types are not one of the SQLite types (e.g. an INT(12) field will crash if it accessed by FieldAsInteger, the same applies to "integer" but the upper-case version "INTEGER" works). With TSQLiteUniTable those crashes should not occur. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1228 b956fd51-792f-4845-bead-9b4dfca2ff2c
* Fixed a bug in UScreenTop5: instead of a lokal var a config value was ↵whiteshark02008-07-191-1/+1
| | | | | | changed to a not existing value when there was a game w/ 6 Players. This causes Player 5's and 6's Scores not to apear in the highscores at the first song and may cause a crash when the config will be saved after singing. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1217 b956fd51-792f-4845-bead-9b4dfca2ff2c
* renamed TLineState to TLyricsStatetobigun2008-07-191-4/+4
| | | | git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1215 b956fd51-792f-4845-bead-9b4dfca2ff2c
* renamed TLineState to TLyricsStatetobigun2008-07-192-12/+12
| | | | git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1214 b956fd51-792f-4845-bead-9b4dfca2ff2c
* lyric engine patches, solvestobigun2008-07-192-63/+60
| | | | | | | | | | - pixeled/transparent fonts bug - some lines were erroneously marked active or disabled - state was not initialized correctly - negative gap problem (TLyricLine.Start was of type cardinal) - some more lyrics bugs git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1211 b956fd51-792f-4845-bead-9b4dfca2ff2c
* Renamed the old ULyrics_bak.pas to UEditorLyrics.pas as it is used in the ↵tobigun2008-07-171-9/+12
| | | | | | editor only. This might be replaced by ULyrics.pas later. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1204 b956fd51-792f-4845-bead-9b4dfca2ff2c
* unit UDataBase;GogolNr12008-07-121-31/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | interface {$IFDEF FPC} {$MODE Delphi} {$ENDIF} {$I switches.inc} uses USongs, USong, SQLiteTable3; //-------------------- //DataBaseSystem - Class including all DB Methods //-------------------- type TStatResult = record Case Typ: Byte of 0: (Singer: ShortString; Score: Word; Difficulty: Byte; SongArtist: ShortString; SongTitle: ShortString); 1: (Player: ShortString; AverageScore: Word); 2: (Artist: ShortString; Title: ShortString; TimesSung: Word); 3: (ArtistName: ShortString; TimesSungtot: Word); end; AStatResult = Array of TStatResult; TDataBaseSystem = class private ScoreDB: TSqliteDatabase; sFilename: string; public property Filename: String read sFilename; Destructor Destroy; override; Procedure Init(const Filename: string); procedure ReadScore(Song: TSong); procedure AddScore(Song: TSong; Level: integer; Name: string; Score: integer); procedure WriteScore(Song: TSong); Function GetStats(var Stats: AStatResult; const Typ, Count: Byte; const Page: Cardinal; const Reversed: Boolean): Boolean; Function GetTotalEntrys(const Typ: Byte): Cardinal; Function GetStatReset: TDateTime; end; var DataBase: TDataBaseSystem; implementation uses IniFiles, ULog, StrUtils, SysUtils; const cUS_Scores = 'us_scores'; cUS_Songs = 'us_songs'; cUS_Statistics_Info = 'us_statistics_info'; //-------------------- //Create - Opens Database and Create Tables if not Exist //-------------------- Procedure TDataBaseSystem.Init(const Filename: string); begin Log.LogStatus('Initializing database: "'+Filename+'"', 'TDataBaseSystem.Init'); //Open Database ScoreDB := TSqliteDatabase.Create( Filename ); sFilename := Filename; try //Look for Tables => When not exist Create them if not ScoreDB.TableExists( cUS_Scores ) then begin ScoreDB.execsql('CREATE TABLE `'+cUS_Scores+'` (`SongID` INT( 11 ) NOT NULL , `Difficulty` INT( 1 ) NOT NULL , `Player` VARCHAR( 150 ) NOT NULL , `Score` INT( 5 ) NOT NULL );'); debugWriteln( 'TDataBaseSystem.Init - CREATED US_Scores' ); end; if not ScoreDB.TableExists( cUS_Songs ) then begin ScoreDB.execsql('CREATE TABLE `'+cUS_Songs+'` (`ID` INTEGER PRIMARY KEY, `Artist` VARCHAR( 255 ) NOT NULL , `Title` VARCHAR( 255 ) NOT NULL , `TimesPlayed` int(5) NOT NULL );'); debugWriteln( 'TDataBaseSystem.Init - CREATED US_Songs' ); end; if not ScoreDB.TableExists( cUS_Statistics_Info ) then begin ScoreDB.execsql('CREATE TABLE `'+cUS_Statistics_Info+'` (`ResetTime` VARCHAR(17) );'); ScoreDB.execsql('INSERT INTO `'+cUS_Statistics_Info+'` (`ResetTime`) VALUES ("'+datetimetostr(now)+'");'); debugWriteln( 'TDataBaseSystem.Init - CREATED US_Statistics_Info' ); end; //Not possible because of String Limitation to 255 Chars //Need to rewrite Wrapper {if not ScoreDB.TableExists('US_SongCache') then ScoreDB.ExecSQL('CREATE TABLE `US_SongCache` (`Path` VARCHAR( 255 ) NOT NULL , `Filename` VARCHAR( 255 ) NOT NULL , `Title` VARCHAR( 255 ) NOT NULL , `Artist` VARCHAR( 255 ) NOT NULL , `Folder` VARCHAR( 255 ) NOT NULL , `Genre` VARCHAR( 255 ) NOT NULL , `Edition` VARCHAR( 255 ) NOT NULL , `Language` VARCHAR( 255 ) NOT NULL , `Creator` VARCHAR( 255 ) NOT NULL , `Cover` VARCHAR( 255 ) NOT NULL , `Background` VARCHAR( 255 ) NOT NULL , `Video` VARCHAR( 255 ) NOT NULL , `VideoGap` FLOAT NOT NULL , `Gap` FLOAT NOT NULL , `Start` FLOAT NOT NULL , `Finish` INT( 11 ) NOT NULL , `BPM` INT( 5 ) NOT NULL , `Relative` BOOLEAN NOT NULL , `NotesGap` INT( 11 ) NOT NULL);');} finally Log.LogInfo( cUS_Songs +' exists: ' + IfThen(ScoreDB.TableExists(cUS_Songs), 'true', 'false'), 'TDataBaseSystem.Init'); Log.LogInfo( cUS_Scores +' exists: ' + IfThen(ScoreDB.TableExists(cUS_Scores), 'true', 'false'), 'TDataBaseSystem.Init'); //ScoreDB.Free; end; end; //-------------------- //Destroy - Frees Database //-------------------- Destructor TDataBaseSystem.Destroy; begin Log.LogInfo('TDataBaseSystem.Free', 'TDataBaseSystem.Destroy'); freeandnil( ScoreDB ); inherited; end; //-------------------- //ReadScore - Read Scores into SongArray //-------------------- procedure TDataBaseSystem.ReadScore(Song: TSong); var TableData: TSqliteTable; Difficulty: Integer; begin if not assigned( ScoreDB ) then exit; //ScoreDB := TSqliteDatabase.Create(sFilename); try try //Search Song in DB TableData := ScoreDB.GetTable('SELECT `Difficulty`, `Player`, `Score` FROM `'+cUS_Scores+'` WHERE `SongID` = (SELECT `ID` FROM `us_songs` WHERE `Artist` = "' + Song.Artist + '" AND `Title` = "' + Song.Title + '" LIMIT 1) ORDER BY `Score` DESC LIMIT 15'); //Empty Old Scores SetLength (Song.Score[0], 0); SetLength (Song.Score[1], 0); SetLength (Song.Score[2], 0); while not TableData.Eof do //Go through all Entrys begin //Add one Entry to Array Difficulty := StrToIntDef(TableData.FieldAsString(TableData.FieldIndex['Difficulty']), -1); if (Difficulty >= 0) AND (Difficulty <= 2) then begin SetLength(Song.Score[Difficulty], Length(Song.Score[Difficulty]) + 1); Song.Score[Difficulty, high(Song.Score[Difficulty])].Name := TableData.FieldAsString(TableData.FieldIndex['Player']); Song.Score[Difficulty, high(Song.Score[Difficulty])].Score := StrtoInt(TableData.FieldAsString(TableData.FieldIndex['Score'])); end; TableData.Next; end; // While not TableData.EOF except for Difficulty := 0 to 2 do begin SetLength(Song.Score[Difficulty], 1); Song.Score[Difficulty, 1].Name := 'Error Reading ScoreDB'; end; end; finally //ScoreDb.Free; end; end; //-------------------- //AddScore - Add one new Score to DB //-------------------- procedure TDataBaseSystem.AddScore(Song: TSong; Level: integer; Name: string; Score: integer); var ID: Integer; TableData: TSqliteTable; begin if not assigned( ScoreDB ) then exit; //ScoreDB := TSqliteDatabase.Create(sFilename); try //Prevent 0 Scores from being added if (Score > 0) then begin ID := ScoreDB.GetTableValue('SELECT `ID` FROM `'+cUS_Songs+'` WHERE `Artist` = "' + Song.Artist + '" AND `Title` = "' + Song.Title + '"'); if ID = 0 then //Song doesn't exist -> Create begin ScoreDB.ExecSQL ('INSERT INTO `'+cUS_Songs+'` ( `ID` , `Artist` , `Title` , `TimesPlayed` ) VALUES (NULL , "' + Song.Artist + '", "' + Song.Title + '", "0");'); ID := ScoreDB.GetTableValue('SELECT `ID` FROM `US_Songs` WHERE `Artist` = "' + Song.Artist + '" AND `Title` = "' + Song.Title + '"'); if ID = 0 then //Could not Create Table exit; end; //Create new Entry ScoreDB.ExecSQL('INSERT INTO `'+cUS_Scores+'` ( `SongID` , `Difficulty` , `Player` , `Score` ) VALUES ("' + InttoStr(ID) + '", "' + InttoStr(Level) + '", "' + Name + '", "' + InttoStr(Score) + '");'); //Delete Last Position when there are more than 5 Entrys if ScoreDB.GetTableValue('SELECT COUNT(`SongID`) FROM `'+cUS_Scores+'` WHERE `SongID` = "' + InttoStr(ID) + '" AND `Difficulty` = "' + InttoStr(Level) +'"') > 5 then begin TableData := ScoreDB.GetTable('SELECT `Player`, `Score` FROM `'+cUS_Scores+'` WHERE SongID = "' + InttoStr(ID) + '" AND `Difficulty` = "' + InttoStr(Level) +'" ORDER BY `Score` ASC LIMIT 1'); ScoreDB.ExecSQL('DELETE FROM `US_Scores` WHERE SongID = "' + InttoStr(ID) + '" AND `Difficulty` = "' + InttoStr(Level) +'" AND `Player` = "' + TableData.FieldAsString(TableData.FieldIndex['Player']) + '" AND `Score` = "' + TableData.FieldAsString(TableData.FieldIndex['Score']) + '"'); end; end; finally //ScoreDB.Free; end; end; //-------------------- //WriteScore - Not needed with new System; But used for Increment Played Count //-------------------- procedure TDataBaseSystem.WriteScore(Song: TSong); begin if not assigned( ScoreDB ) then exit; try //Increase TimesPlayed ScoreDB.ExecSQL ('UPDATE `'+cUS_Songs+'` SET `TimesPlayed` = `TimesPlayed` + "1" WHERE `Title` = "' + Song.Title + '" AND `Artist` = "' + Song.Artist + '";'); except end; end; //-------------------- //GetStats - Write some Stats to Array, Returns True if Chossen Page has Entrys //Case Typ of //0 - Best Scores //1 - Best Singers //2 - Most sung Songs //3 - Most popular Band //-------------------- Function TDataBaseSystem.GetStats(var Stats: AStatResult; const Typ, Count: Byte; const Page: Cardinal; const Reversed: Boolean): Boolean; var Query: String; TableData: TSqliteTable; begin Result := False; if not assigned( ScoreDB ) then exit; if (Length(Stats) < Count) then Exit; {Todo: Add Prevention that only Players with more than 5 Scores are Selected at Typ 2} //Create Query Case Typ of 0: Query := 'SELECT `Player` , `Difficulty` , `Score` , `Artist` , `Title` FROM `'+cUS_Scores+'` INNER JOIN `US_Songs` ON (`SongID` = `ID`) ORDER BY `Score`'; 1: Query := 'SELECT `Player` , ROUND (Sum(`Score`) / COUNT(`Score`)) FROM `'+cUS_Scores+'` GROUP BY `Player` ORDER BY (Sum(`Score`) / COUNT(`Score`))'; 2: Query := 'SELECT `Artist` , `Title` , `TimesPlayed` FROM `'+cUS_Songs+'` ORDER BY `TimesPlayed`'; 3: Query := 'SELECT `Artist` , Sum(`TimesPlayed`) FROM `'+cUS_Songs+'` GROUP BY `Artist` ORDER BY Sum(`TimesPlayed`)'; end; //Add Order Direction If Reversed then Query := Query + ' ASC' else Query := Query + ' DESC'; //Add Limit Query := Query + ' LIMIT ' + InttoStr(Count * Page) + ', ' + InttoStr(Count) + ';'; //Execute Query try TableData := ScoreDB.GetTable(Query); except exit; // this has a try except, because ( on linux at least ) it seems that doing a GetTable, that returns nothing // causes an exception. and in the case of a new Database file, with no scores stored yet... this seems to except here. end; //if Result empty -> Exit if (TableData.RowCount < 1) then exit; //Copy Result to Stats Array while not TableData.Eof do begin Stats[TableData.Row].Typ := Typ; Case Typ of 0:begin Stats[TableData.Row].Singer := TableData.Fields[0]; Stats[TableData.Row].Difficulty := StrtoIntDef(TableData.Fields[1], 0); Stats[TableData.Row].Score := StrtoIntDef(TableData.Fields[2], 0){TableData.FieldAsInteger(2)}; Stats[TableData.Row].SongArtist := TableData.Fields[3]; Stats[TableData.Row].SongTitle := TableData.Fields[4]; end; 1:begin Stats[TableData.Row].Player := TableData.Fields[0]; Stats[TableData.Row].AverageScore := StrtoIntDef(TableData.Fields[1], 0); end; 2:begin Stats[TableData.Row].Artist := TableData.Fields[0]; Stats[TableData.Row].Title := TableData.Fields[1]; Stats[TableData.Row].TimesSung := StrtoIntDef(TableData.Fields[2], 0); end; 3:begin Stats[TableData.Row].ArtistName := TableData.Fields[0]; Stats[TableData.Row].TimesSungtot := StrtoIntDef(TableData.Fields[1], 0); end; end; TableData.Next; end; Result := True; end; //-------------------- //GetTotalEntrys - Get Total Num of entrys for a Stats Query //-------------------- Function TDataBaseSystem.GetTotalEntrys(const Typ: Byte): Cardinal; var Query: String; begin Result := 0; if not assigned( ScoreDB ) then exit; try //Create Query Case Typ of 0: begin Query := 'SELECT COUNT(`SongID`) FROM `'+cUS_Scores+'`;'; if not ScoreDB.TableExists( cUS_Scores ) then exit; end; 1: begin Query := 'SELECT COUNT(DISTINCT `Player`) FROM `'+cUS_Scores+'`;'; if not ScoreDB.TableExists( cUS_Scores ) then exit; end; 2: begin Query := 'SELECT COUNT(`ID`) FROM `'+cUS_Songs+'`;'; if not ScoreDB.TableExists( cUS_Songs ) then exit; end; 3: begin Query := 'SELECT COUNT(DISTINCT `Artist`) FROM `'+cUS_Songs+'`;'; if not ScoreDB.TableExists( cUS_Songs ) then exit; end; end; Result := ScoreDB.GetTableValue(Query); except // TODO : JB_Linux - Why do we get these exceptions on linux !! -> should be solved! on E:ESQLiteException DO begin exit; end; end; end; //-------------------- //GetStatReset - Get reset date of statistic data //-------------------- Function TDataBaseSystem.GetStatReset: TDateTime; var Query: String; TableData: TSqliteTable; begin if not assigned( ScoreDB ) then exit; Query := 'SELECT `ResetTime` FROM `'+cUS_Statistics_Info+'`;'; TableData := ScoreDB.GetTable(Query); result:=StrToDateTime(TableData.Fields[0]); end; end. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1185 b956fd51-792f-4845-bead-9b4dfca2ff2c
* Text has a new property -> Z (default is 0)mogguh2008-07-127-43/+43
| | | | | | | | | Selects on the options have been exchanged for SelectSlides (OptionsScreens are looking less broken (more to come)) Solmization has been banned from the options (it's still available via config.ini and is working) Uncommented poc ttf code [Back] button in OptionsRecord is skineable again git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1183 b956fd51-792f-4845-bead-9b4dfca2ff2c
* Fix for Trac ticket #53 (Preview fading and volume problems) tobigun2008-07-071-45/+46
| | | | git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1168 b956fd51-792f-4845-bead-9b4dfca2ff2c
* disabled screen-mode change after leaving the graphics options screen as it ↵tobigun2008-07-041-1/+6
| | | | | | does not work on windows/macosx. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1166 b956fd51-792f-4845-bead-9b4dfca2ff2c
* Fixed a conditional, that caused ratings not to show upmogguh2008-07-021-1/+1
| | | | git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1159 b956fd51-792f-4845-bead-9b4dfca2ff2c
* Audio/Video engine update:tobigun2008-07-021-68/+36
| | | | | | | | | | | | | | | - lyrics<->audio synchronisation (TSyncSource) - better resampling (optional support for libsamplerate) - cleaner termination of audio/video streams/devices - improved decoders and decoder infrastructure - many other improvements/cleanups Currently just for testing (not enabled by default): - Background music - Voice-Passthrough (hear what you sing) - Video VSync git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1157 b956fd51-792f-4845-bead-9b4dfca2ff2c
* EaseOut_MaxSteps increased for faster score counter in score-screentobigun2008-07-011-1/+1
| | | | git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1152 b956fd51-792f-4845-bead-9b4dfca2ff2c
* nicer pitch-label in record-option screentobigun2008-07-011-27/+53
| | | | git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1151 b956fd51-792f-4845-bead-9b4dfca2ff2c
* - set svn:eol-style to nativetobigun2008-06-0816-7229/+7229
| | | | | | - removed some svn:executable properties from non-executable files git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1144 b956fd51-792f-4845-bead-9b4dfca2ff2c
* goto + labels removedtobigun2008-06-081-54/+57
| | | | git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1139 b956fd51-792f-4845-bead-9b4dfca2ff2c
* just some cleanuptobigun2008-06-078-504/+537
| | | | | | | | | | | - replaced many German and Polish comments - replaced many cryptic var-names - IlNut replaced with LengthNote - renamed the global var "Filename" to "ConversionFilename" to prevent unintended use of it - more readable code (hopefully), especially NewNote and OnSentenceEnd - added some comments on elementary classes/records and their fields git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1137 b956fd51-792f-4845-bead-9b4dfca2ff2c
* - fixed video-backgroundtobigun2008-05-131-5/+7
| | | | | | | - fixed buggy SkipTime (using TRelativeTimer now) - TLineState is a class now. TLineState.CurrentTime is now automatically updated using TRelativeTimer git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1088 b956fd51-792f-4845-bead-9b4dfca2ff2c
* - removed useless for loops in UScreenSingf1fth_freed0m2008-05-121-4/+2
| | | | | | - added cmdline switch "window" for windowmode git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1082 b956fd51-792f-4845-bead-9b4dfca2ff2c
* Volumes are floating point values (single) now. The range changed from [0 .. ↵tobigun2008-05-104-21/+30
| | | | | | 100] to [0.0 .. 1.0] git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1081 b956fd51-792f-4845-bead-9b4dfca2ff2c
* - input-source selection works now (with bass or portaudio with portmixer)tobigun2008-05-093-191/+438
| | | | | | | | | | | | | | | | - audio-effects (DSP) interface for audio-playback plus a simple voice removal example (does not sound that good) - FFMpeg support for BASS - audio-clock for FFMpeg for GetPosition and synchronisation - more compatible seeking in FFMpeg - clean termination of the audio interfaces/streams (especially ffmpeg) - Audio output device enumeration (selection will be added later to the sounds option screen) - display of threshold and volume in the record-options screen - threshold and volume can be changed with the 'T' (threshold) and '+'/'-' (source volume) keys - added a FadeIn() method to the IAudioPlayback interface - some minor changes to the audio classes/screens - new base-class for audio-playback classes (used by bass, portaudio and sdl) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1078 b956fd51-792f-4845-bead-9b4dfca2ff2c
* BugFix: ScoreScreen works again, starting to simplify / tidy up the whole thingmogguh2008-05-091-384/+226
| | | | | | Feature: Eight ratings instead of seven, rating for points reached changed (should be more fair now) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1072 b956fd51-792f-4845-bead-9b4dfca2ff2c
* Option screen has two rows of buttons, to select the row beneath press ↵mogguh2008-05-061-4/+17
| | | | | | | | | [cursor down] / [cursor up] for the row above Settings are not saved if you press [escape] (just for the "main" option screen atm) Long descriptions are used to explain what hides behind a option screen git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1063 b956fd51-792f-4845-bead-9b4dfca2ff2c
* MacOSX patch for WideUpperChar. The cwstring Unicode manager is not ↵tobigun2008-05-021-3/+4
| | | | | | supported at the moment because of some problems with the iconv linker dependencies. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1056 b956fd51-792f-4845-bead-9b4dfca2ff2c
* replaced WideUpperCase with WideCharUpperCasetobigun2008-05-021-2/+2
| | | | git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1055 b956fd51-792f-4845-bead-9b4dfca2ff2c
* Replaced OpenGL12 with SDL's gl/glu/glext units because OpenGL12 was removed ↵tobigun2008-05-0210-11/+10
| | | | | | | | from SDL (several years ago? Last update was done in 2004). In addition OpenGL12 was very buggy (see last commit). The new units support OpenGL up to version 2.0 (extensions must be loaded first, see UGraphic.LoadOpenGLExtensions). At the moment, only 1.2 extensions are loaded. Some constants, that were introduced in OpenGL 1.2 and above (like GL_BGR or GL_CLAMP_TO_EDGE) are in glext.pas, so check this file first for missing constants. The MacOS build depends on OpenGL12.pas but has its own file in the MacOSX/Wrapper folder instead of using the JEDI-SDL one. Sorry, that I broke MacOSX build for now but it should be no problem to get this working again. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1052 b956fd51-792f-4845-bead-9b4dfca2ff2c
* Fixed some range-check errors. Explicitly disable range-checks {$R-} should ↵tobigun2008-04-301-1430/+1430
| | | | | | | | | not be necessary for the MacOSX build anymore. Note: Texture-numbers (e.g. texnum) are unsigned (GLuint) so do not init them to -1. Use 0 instead. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1040 b956fd51-792f-4845-bead-9b4dfca2ff2c
* - reverted some stuff that was erroneously commited by one of the last commits.tobigun2008-04-241-12/+0
| | | | | | | | | - moved DEBUG define from config-*.inc back to switches.inc - APPTYPE is needed by FPC (for Windows) too. Fixed some crashes with Writeln in FPC (Win) if no console is available. - Moved thread-safe ULog.SafeWriteln() to UCommon.ConsoleWriteln(), this is used by DebugWriteln() now, so this is thread-safe too - Added log-levels (sorted by severity): DEBUG, INFO, STATUS, WARN, ERROR, CRITICAL. Default log-level is LOG_LEVEL_ERROR, so warnings and less important logs are not printed by default. You can change this by LOG_LEVEL_DEFAULT or Log.SetLogLevel(Level). Please use Log.LogError/Warn/Status/Info/Debug/... instead of DebugWriteln() to avoid spamming the console. See ULog.pas for further info. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1036 b956fd51-792f-4845-bead-9b4dfca2ff2c
* tried to make songloading working with the old loader and keep all changes ↵s_alexander2008-04-196-841/+838
| | | | | | | | | | | that were made since starting to work on a new one *hope that worked* you may delete your existing cover.cache (the cover cache is still NOT working) git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1024 b956fd51-792f-4845-bead-9b4dfca2ff2c
* translated some polish codef1fth_freed0m2008-04-111-7/+6
| | | | | | | | | | | | | | AddCzesc -> AddLine NrCzesc -> NrLine NrCzesci -> NrLines Pet -> Count SingDrawCzesc -> SingDrawLine SingDrawPlayerCzesc -> SingDrawPlayerLine SingDrawPlayerBGCzesc -> SingDrawPlayerBGLine EditDrawCzesc -> EditDrawLine Tekst -> Text git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1020 b956fd51-792f-4845-bead-9b4dfca2ff2c
* finally removed IlNut from Editor (*hope* it will work)s_alexander2008-04-103-60/+42
| | | | git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1019 b956fd51-792f-4845-bead-9b4dfca2ff2c
* -Corrected some ifdefs in the Editor to make it useable on linuxf1fth_freed0m2008-04-101-40/+44
| | | | | | -translated some polish code git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1018 b956fd51-792f-4845-bead-9b4dfca2ff2c
* workaround for erroneously detection of 48000Hz-only devices as 44100Hz ↵tobigun2008-04-101-1398/+1398
| | | | | | devices in portaudio git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1017 b956fd51-792f-4845-bead-9b4dfca2ff2c
* - removed (linux incompatible) PngImage. In addition it was rather outdated ↵tobigun2008-04-062-2/+14
| | | | | | | | | | | (from 2003, newest version is from 2006) - introduced UImage-unit for JPG/PNG/BMP image saving - the png part uses the libpng12-0.dll (part of SDL_Image) so - the jpg part uses either Delphi's Jpeg unit or FPC's base/pasjpeg unit -> so no additional libs are needed. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1007 b956fd51-792f-4845-bead-9b4dfca2ff2c
* removed lazarus dependenciestobigun2008-04-062-1431/+1404
| | | | | | | | | | | | - added an implementation of AllocateHWnd/DeallocateHWnd to UCommon for the Win32 only units DirWatch and Midi... (do not use AllocateHWnd somewhere else) - added an own implementation of ShowMessage to UCommon (uses MessageBox in Windows, console-output otherwise) - linux still needs lresources for the lrs-file (will be removed soon) - the FPC windows version uses windows resources now (instead of lrs ones). compile them with windres (in FPC's "bin" dir) or delphi (a batch-file for windres will follow soon) - changed path-separator from '\' to '/' in RC-file for windres compatibility git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1006 b956fd51-792f-4845-bead-9b4dfca2ff2c
* TRANSLATE define removed. Define was not used anymore.tobigun2008-04-061-12/+0
| | | | git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1005 b956fd51-792f-4845-bead-9b4dfca2ff2c
* Replaced some {-comments with (*-comments to remove nested comments of the ↵tobigun2008-04-062-4/+17
| | | | | | | | same type like: { {} }. Although delphi and FPC can cope with them, some editors (like lazarus) don't like them and erroneously display everything after the comment as commented out. git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1004 b956fd51-792f-4845-bead-9b4dfca2ff2c
* Covers Cache rewrittenwhiteshark02008-04-041-11/+11
| | | | | | | New Cover.Cache fileformat covers texture loading still missing... git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1001 b956fd51-792f-4845-bead-9b4dfca2ff2c
* rewriting of the txt file parsers_alexander2008-04-034-733/+717
| | | | | | | | removed unused variables from TLines and TLine, removed TMelody overworked the TLines and TLine records git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@1000 b956fd51-792f-4845-bead-9b4dfca2ff2c
* removed unused lclintf/windows referencestobigun2008-04-012-10/+1
| | | | git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@996 b956fd51-792f-4845-bead-9b4dfca2ff2c
* Replaced GetTickCount with SDL_GetTicksf1fth_freed0m2008-04-011-1/+1
| | | | git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@994 b956fd51-792f-4845-bead-9b4dfca2ff2c
* Now colorized textures are appended to the TTextureDatabase too. This will ↵tobigun2008-03-311-2/+2
| | | | | | | | prevent USDX from loading textures for buttons, statics etc. multiple times. This saves approx. 100MB of memory (100MB instead of 200MB, which is still too many) and speeds-up the loading process (starts in 3-6secs now instead of 12secs). git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@992 b956fd51-792f-4845-bead-9b4dfca2ff2c
* Removed unused Format-parameter in LoadTexture() and Add...()tobigun2008-03-318-57/+57
| | | | git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@990 b956fd51-792f-4845-bead-9b4dfca2ff2c
* beep() removedtobigun2008-03-313-6/+1
| | | | git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@989 b956fd51-792f-4845-bead-9b4dfca2ff2c
* - removed "Font Black" and "Font" texture typetobigun2008-03-318-71/+71
| | | | | | | | - use TEXTURE_TYPE_TRANSPARENT/COLORIZED/PLAIN in the future - texture-type is an enum now (not a string as before) -> pros: less memory consumption, compiler-check, case-insensitive, ... git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@988 b956fd51-792f-4845-bead-9b4dfca2ff2c
* Prepared some classes for enhanced Song loading.whiteshark02008-03-305-142/+143
| | | | | | | Commited to work with s_alexander in this task. Song loading doesn't work at this point git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@983 b956fd51-792f-4845-bead-9b4dfca2ff2c
* Some WideChar casts to let it compile in Delphi7 again.whiteshark02008-03-282-2/+2
| | | | git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@979 b956fd51-792f-4845-bead-9b4dfca2ff2c
* USDX is now able to load SingStar XML Songfiles using Whitesharks XML2US Parserf1fth_freed0m2008-03-272-2/+8
| | | | git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@974 b956fd51-792f-4845-bead-9b4dfca2ff2c