summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 2b79b90)
raw | patch | inline | side by side (parent: 2b79b90)
author | fgsfds <pvt.fgsfds@gmail.coma> | |
Tue, 22 Aug 2017 15:26:01 +0000 (18:26 +0300) | ||
committer | fgsfds <pvt.fgsfds@gmail.coma> | |
Tue, 22 Aug 2017 15:26:01 +0000 (18:26 +0300) |
src/game/g_game.pas | patch | blob | history |
diff --git a/src/game/g_game.pas b/src/game/g_game.pas
index e4f7afea5da959741fbb7a5b0af47bfaaf2a99b1..ab82f010edd0b0294f0338d3b6199400797f0efe 100644 (file)
--- a/src/game/g_game.pas
+++ b/src/game/g_game.pas
end;
procedure g_Game_SetupScreenSize();
+const
+ RES_FACTOR = 4.0 / 3.0;
var
- d: Single;
+ s: Single;
+ rf: Single;
+ bw, bh: Word;
begin
// Ðàçìåð ýêðàíîâ èãðîêîâ:
gPlayerScreenSize.X := gScreenWidth-196;
// Ðàçìåð çàäíåãî ïëàíà:
if BackID <> DWORD(-1) then
begin
- d := SKY_STRETCH;
-
- if (gScreenWidth*d > gMapInfo.Width) or
- (gScreenHeight*d > gMapInfo.Height) then
- d := 1.0;
-
- gBackSize.X := Round(gScreenWidth*d);
- gBackSize.Y := Round(gScreenHeight*d);
+ s := SKY_STRETCH;
+ if (gScreenWidth*s > gMapInfo.Width) or
+ (gScreenHeight*s > gMapInfo.Height) then
+ begin
+ gBackSize.X := gScreenWidth;
+ gBackSize.Y := gScreenHeight;
+ end
+ else
+ begin
+ e_GetTextureSize(BackID, @bw, @bh);
+ rf := Single(bw) / Single(bh);
+ if (rf > RES_FACTOR) then bw := Round(Single(bh) * RES_FACTOR)
+ else if (rf < RES_FACTOR) then bh := Round(Single(bw) / RES_FACTOR);
+ s := Max(gScreenWidth / bw, gScreenHeight / bh);
+ if (s < 1.0) then s := 1.0;
+ gBackSize.X := Round(bw*s);
+ gBackSize.Y := Round(bh*s);
+ end;
end;
end;