aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormogguh <mogguh@b956fd51-792f-4845-bead-9b4dfca2ff2c>2007-11-11 22:42:20 +0000
committermogguh <mogguh@b956fd51-792f-4845-bead-9b4dfca2ff2c>2007-11-11 22:42:20 +0000
commit20642715b0cb09503a6ccb864ddb97b00628ca86 (patch)
treeb8ba8075216d89fd707b155199485f7947239166
parent26880465f723cf6b1cc18ce50e4f7b063b17fdad (diff)
downloadusdx-20642715b0cb09503a6ccb864ddb97b00628ca86.tar.gz
usdx-20642715b0cb09503a6ccb864ddb97b00628ca86.tar.xz
usdx-20642715b0cb09503a6ccb864ddb97b00628ca86.zip
Thanks to Linnex all the Wine bugs should be gone now, I can't test that myself so give some comments please. Added his suggestions into the source which fix the "on startup" bug (sdl_listmodes), "font problem" (pf24bit), "sql db new score" (exceptions are caught)..
git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/branches/1.0.1@602 b956fd51-792f-4845-bead-9b4dfca2ff2c
-rw-r--r--Game/Code/Classes/UDataBase.pas37
-rw-r--r--Game/Code/Classes/UIni.pas4
-rw-r--r--Game/Code/Classes/UTexture.pas19
3 files changed, 41 insertions, 19 deletions
diff --git a/Game/Code/Classes/UDataBase.pas b/Game/Code/Classes/UDataBase.pas
index b8b41bc1..e7e8c535 100644
--- a/Game/Code/Classes/UDataBase.pas
+++ b/Game/Code/Classes/UDataBase.pas
@@ -147,25 +147,28 @@ begin
//Prevent 0 Scores from being added
if (Score > 0) then
begin
-
- ID := ScoreDB.GetTableValue('SELECT `ID` FROM `US_Songs` WHERE `Artist` = "' + Song.Artist + '" AND `Title` = "' + Song.Title + '"');
- if ID = 0 then //Song doesn't exist -> Create
- begin
- ScoreDB.ExecSQL ('INSERT INTO `US_Songs` ( `ID` , `Artist` , `Title` , `TimesPlayed` ) VALUES (NULL , "' + Song.Artist + '", "' + Song.Title + '", "0");');
+ try //todo : wrapper shouldn't throw exceptions at all - this fixed a wine bug, thanks linnex! (11.11.07)
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 `US_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 `US_Scores` WHERE `SongID` = "' + InttoStr(ID) + '" AND `Difficulty` = "' + InttoStr(Level) +'"') > 5 then
- begin
- TableData := ScoreDB.GetTable('SELECT `Player`, `Score` FROM `US_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']) + '"');
+ if ID = 0 then //Song doesn't exist -> Create
+ begin
+ ScoreDB.ExecSQL ('INSERT INTO `US_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 `US_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 `US_Scores` WHERE `SongID` = "' + InttoStr(ID) + '" AND `Difficulty` = "' + InttoStr(Level) +'"') > 5 then
+ begin
+ TableData := ScoreDB.GetTable('SELECT `Player`, `Score` FROM `US_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;
+ except
+ // katze!
end;
-
end;
finally
//ScoreDB.Free;
diff --git a/Game/Code/Classes/UIni.pas b/Game/Code/Classes/UIni.pas
index 82bae011..5297e7e1 100644
--- a/Game/Code/Classes/UIni.pas
+++ b/Game/Code/Classes/UIni.pas
@@ -251,12 +251,14 @@ begin
// Resolution
SetLength(IResolution, 0);
Modes := SDL_ListModes(nil, SDL_OPENGL or SDL_FULLSCREEN); // Check if there are any modes available
+ if(Assigned(Modes)) then //this should solve the biggest wine problem | THANKS Linnex (11.11.07)
repeat
SetLength(IResolution, Length(IResolution) + 1);
IResolution[High(IResolution)] := IntToStr(Modes^.w) + 'x' + IntToStr(Modes^.h);
Inc(Modes);
until Modes^ = nil;
-
+ end;
+
// if no modes were set, then failback to 800x600
// as per http://sourceforge.net/forum/message.php?msg_id=4544965
// THANKS : linnex at users.sourceforge.net
diff --git a/Game/Code/Classes/UTexture.pas b/Game/Code/Classes/UTexture.pas
index 275f0748..c832f5c1 100644
--- a/Game/Code/Classes/UTexture.pas
+++ b/Game/Code/Classes/UTexture.pas
@@ -189,6 +189,12 @@ end;
function TTextureUnit.LoadTexture(FromRegistry: boolean; Nazwa, Format, Typ: PChar; Col: LongWord): TTexture;
var
+
+// a patch from Linnex, that solves the font problem in wine which causes chrashes
+ ChangeFormatBMP: TBitmap;
+// end of patch (11.11.07)
+
+
Res: TResourceStream;
TextureB: TBitmap;
TextureJ: TJPEGImage;
@@ -449,7 +455,18 @@ begin
end;
if Typ = 'Font' then begin
- TextureB.PixelFormat := pf24bit;
+
+// a patch from Linnex, that solves the font problem in wine which causes chrashes
+ //TextureB.PixelFormat := pf24bit;
+ ChangeFormatBMP := TBitmap.Create();
+ ChangeFormatBMP.Assign(TextureB);
+ TextureB.PixelFormat := pf24bit;
+ TextureB.Width := ChangeFormatBMP.Width;
+ TextureB.Height := ChangeFormatBMP.Height;
+ TextureB.Canvas.Draw(0, 0, ChangeFormatBMP);
+ ChangeFormatBMP.Free;
+// end of patch (11.11.07)
+
for Pet := 0 to TextureB.Height-1 do begin
PPix := TextureB.ScanLine[Pet];
for Pet2 := 0 to TextureB.Width-1 do begin