author | Medo <smaxein@googlemail.com> |
Sat, 18 Aug 2012 01:12:03 +0200 | |
changeset 7552 | 1209e1c3c620 |
parent 7546 | b50556f2a0e8 |
child 7565 | 00568d3054d0 |
permissions | -rw-r--r-- |
4 | 1 |
(* |
1066 | 2 |
* Hedgewars, a free turn based strategy game |
6700 | 3 |
* Copyright (c) 2004-2012 Andrey Korotaev <unC0Rr@gmail.com> |
4 | 4 |
* |
183 | 5 |
* This program is free software; you can redistribute it and/or modify |
6 |
* it under the terms of the GNU General Public License as published by |
|
7 |
* the Free Software Foundation; version 2 of the License |
|
4 | 8 |
* |
183 | 9 |
* This program is distributed in the hope that it will be useful, |
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 |
* GNU General Public License for more details. |
|
4 | 13 |
* |
183 | 14 |
* You should have received a copy of the GNU General Public License |
15 |
* along with this program; if not, write to the Free Software |
|
16 |
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA |
|
4 | 17 |
*) |
18 |
||
2623 | 19 |
{$INCLUDE "options.inc"} |
4850 | 20 |
{$IF GLunit = GL}{$DEFINE GLunit:=GL,GLext}{$ENDIF} |
2623 | 21 |
|
4 | 22 |
unit uStore; |
23 |
interface |
|
7043
7c080e5ac8d0
Some work to make more units compile after conversion to c
unc0rr
parents:
7028
diff
changeset
|
24 |
uses SysUtils, uConsts, SDLh, GLunit, uTypes, uLandTexture, uCaptions, uChat; |
3692 | 25 |
|
3038 | 26 |
procedure initModule; |
27 |
procedure freeModule; |
|
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2705
diff
changeset
|
28 |
|
6986
409dd3851309
add support for default pascal mode by removing default arguments value (maybe this also helps the parser)
koda
parents:
6982
diff
changeset
|
29 |
procedure StoreLoad(reload: boolean); |
409dd3851309
add support for default pascal mode by removing default arguments value (maybe this also helps the parser)
koda
parents:
6982
diff
changeset
|
30 |
procedure StoreRelease(reload: boolean); |
4 | 31 |
procedure RenderHealth(var Hedgehog: THedgehog); |
32 |
procedure AddProgress; |
|
510 | 33 |
procedure FinishProgress; |
2905 | 34 |
function LoadImage(const filename: shortstring; imageFlags: LongInt): PSDL_Surface; |
4874 | 35 |
procedure LoadHedgehogHat(HHGear: PGear; newHat: shortstring); |
753 | 36 |
procedure SetupOpenGL; |
2161
0c8634241fa4
Some work on zooming. Hedgewars are now unplayable.
unc0rr
parents:
2154
diff
changeset
|
37 |
procedure SetScale(f: GLfloat); |
3394
47b51e22e670
Henek's patch - adds a column to ammoMenu and removes the F* column in iphone version
koda
parents:
3390
diff
changeset
|
38 |
function RenderHelpWindow(caption, subcaption, description, extra: ansistring; extracolor: LongInt; iconsurf: PSDL_Surface; iconrect: PSDL_Rect): PTexture; |
2747 | 39 |
procedure RenderWeaponTooltip(atype: TAmmoType); |
40 |
procedure ShowWeaponTooltip(x, y: LongInt); |
|
41 |
procedure FreeWeaponTooltip; |
|
4889
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
42 |
procedure MakeCrossHairs; |
4 | 43 |
|
7049 | 44 |
procedure WarpMouse(x, y: Word); inline; |
45 |
procedure SwapBuffers; inline; |
|
46 |
||
4 | 47 |
implementation |
7049 | 48 |
uses uMisc, uConsole, uMobile, uVariables, uUtils, uTextures, uRender, uRenderUtils, uCommands, |
49 |
uDebug{$IFDEF USE_CONTEXT_RESTORE}, uWorld{$ENDIF}; |
|
4 | 50 |
|
5660
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
51 |
//type TGPUVendor = (gvUnknown, gvNVIDIA, gvATI, gvIntel, gvApple); |
2568
e654cbfb23ba
Bunch of neat stuff by Smaxx. ATI check, translucent name tags to reduce terrain fail, disabling health crates on invulnerable hogs. Also tweaks to prior stuff.
nemo
parents:
2567
diff
changeset
|
52 |
|
4385 | 53 |
var MaxTextureSize: LongInt; |
7049 | 54 |
{$IFDEF SDL13} |
55 |
SDLwindow: PSDL_Window; |
|
56 |
SDLGLcontext: PSDL_GLContext; |
|
57 |
{$ELSE} |
|
7028 | 58 |
SDLPrimSurface: PSDL_Surface; |
7049 | 59 |
{$ENDIF} |
4 | 60 |
|
2905 | 61 |
function WriteInRect(Surface: PSDL_Surface; X, Y: LongInt; Color: LongWord; Font: THWFont; s: ansistring): TSDL_Rect; |
2747 | 62 |
var w, h: LongInt; |
63 |
tmpsurf: PSDL_Surface; |
|
64 |
clr: TSDL_Color; |
|
65 |
finalRect: TSDL_Rect; |
|
66 |
begin |
|
3407 | 67 |
w:= 0; h:= 0; // avoid compiler hints |
6286
835392304f81
and while we are giving SDLh.pas all this love, let's fix the signature of one SDL_ttf calls
koda
parents:
6089
diff
changeset
|
68 |
TTF_SizeUTF8(Fontz[Font].Handle, Str2PChar(s), @w, @h); |
6982 | 69 |
finalRect.x:= X + cFontBorder + 2; |
70 |
finalRect.y:= Y + cFontBorder; |
|
71 |
finalRect.w:= w + cFontBorder * 2 + 4; |
|
72 |
finalRect.h:= h + cFontBorder * 2; |
|
2747 | 73 |
clr.r:= Color shr 16; |
74 |
clr.g:= (Color shr 8) and $FF; |
|
75 |
clr.b:= Color and $FF; |
|
76 |
tmpsurf:= TTF_RenderUTF8_Blended(Fontz[Font].Handle, Str2PChar(s), clr); |
|
77 |
tmpsurf:= doSurfaceConversion(tmpsurf); |
|
78 |
SDLTry(tmpsurf <> nil, true); |
|
79 |
SDL_UpperBlit(tmpsurf, nil, Surface, @finalRect); |
|
80 |
SDL_FreeSurface(tmpsurf); |
|
81 |
finalRect.x:= X; |
|
82 |
finalRect.y:= Y; |
|
6982 | 83 |
finalRect.w:= w + cFontBorder * 2 + 4; |
84 |
finalRect.h:= h + cFontBorder * 2; |
|
2747 | 85 |
WriteInRect:= finalRect |
86 |
end; |
|
87 |
||
4889
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
88 |
procedure MakeCrossHairs; |
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
89 |
var t: LongInt; |
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
90 |
tmpsurf, texsurf: PSDL_Surface; |
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
91 |
Color, i: Longword; |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
92 |
s: shortstring; |
4889
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
93 |
begin |
5238
46ddaf14509d
Enable ~/.hedgewars/Data (or platform equivalent) to override/extend pretty much everything in system Data dir. Obviously desyncing can occur, so this is at user's own risk. Should simplify map etc install. Needs testing.
nemo
parents:
5215
diff
changeset
|
94 |
s:= UserPathz[ptGraphics] + '/' + cCHFileName; |
46ddaf14509d
Enable ~/.hedgewars/Data (or platform equivalent) to override/extend pretty much everything in system Data dir. Obviously desyncing can occur, so this is at user's own risk. Should simplify map etc install. Needs testing.
nemo
parents:
5215
diff
changeset
|
95 |
if not FileExists(s+'.png') then s:= Pathz[ptGraphics] + '/' + cCHFileName; |
4889
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
96 |
tmpsurf:= LoadImage(s, ifAlpha or ifCritical); |
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
97 |
|
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
98 |
for t:= 0 to Pred(TeamsCount) do |
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
99 |
with TeamsArray[t]^ do |
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
100 |
begin |
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
101 |
texsurf:= SDL_CreateRGBSurface(SDL_SWSURFACE, tmpsurf^.w, tmpsurf^.h, 32, RMask, GMask, BMask, AMask); |
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
102 |
TryDo(texsurf <> nil, errmsgCreateSurface, true); |
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
103 |
|
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
104 |
Color:= Clan^.Color; |
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
105 |
Color:= SDL_MapRGB(texsurf^.format, Color shr 16, Color shr 8, Color and $FF); |
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
106 |
SDL_FillRect(texsurf, nil, Color); |
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
107 |
|
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
108 |
SDL_UpperBlit(tmpsurf, nil, texsurf, nil); |
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
109 |
|
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
110 |
TryDo(tmpsurf^.format^.BytesPerPixel = 4, 'Ooops', true); |
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
111 |
|
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
112 |
if SDL_MustLock(texsurf) then |
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
113 |
SDLTry(SDL_LockSurface(texsurf) >= 0, true); |
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
114 |
|
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
115 |
// make black pixel be alpha-transparent |
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
116 |
for i:= 0 to texsurf^.w * texsurf^.h - 1 do |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
117 |
if PLongwordArray(texsurf^.pixels)^[i] = AMask then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
118 |
PLongwordArray(texsurf^.pixels)^[i]:= (RMask or GMask or BMask) and Color; |
4889
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
119 |
|
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
120 |
if SDL_MustLock(texsurf) then |
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
121 |
SDL_UnlockSurface(texsurf); |
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
122 |
|
6380
1ff5ad1d771b
Remove a bunch of unnecessary nil checks. FreeTexture does its own nil check.
nemo
parents:
6379
diff
changeset
|
123 |
FreeTexture(CrosshairTex); |
4889
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
124 |
CrosshairTex:= Surface2Tex(texsurf, false); |
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
125 |
SDL_FreeSurface(texsurf) |
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
126 |
end; |
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
127 |
|
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
128 |
SDL_FreeSurface(tmpsurf) |
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
129 |
end; |
f71e30eb1d37
Reset things using team colour on change in SetClanColor in lua. This routine had better have been worth it.
nemo
parents:
4874
diff
changeset
|
130 |
|
4 | 131 |
|
6492 | 132 |
procedure WriteNames(Font: THWFont); |
133 |
var t: LongInt; |
|
7495 | 134 |
i, maxLevel: LongInt; |
6492 | 135 |
r, rr: TSDL_Rect; |
136 |
drY: LongInt; |
|
137 |
texsurf, flagsurf, iconsurf: PSDL_Surface; |
|
7495 | 138 |
foundBot: boolean; |
6492 | 139 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
140 |
r.x:= 0; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
141 |
r.y:= 0; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
142 |
drY:= - 4; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
143 |
for t:= 0 to Pred(TeamsCount) do |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
144 |
with TeamsArray[t]^ do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
145 |
begin |
7013 | 146 |
NameTagTex:= RenderStringTexLim(TeamName, Clan^.Color, Font, cTeamHealthWidth); |
690 | 147 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
148 |
r.w:= cTeamHealthWidth + 5; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
149 |
r.h:= NameTagTex^.h; |
690 | 150 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
151 |
texsurf:= SDL_CreateRGBSurface(SDL_SWSURFACE, r.w, r.h, 32, RMask, GMask, BMask, AMask); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
152 |
TryDo(texsurf <> nil, errmsgCreateSurface, true); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
153 |
TryDo(SDL_SetColorKey(texsurf, SDL_SRCCOLORKEY, 0) = 0, errmsgTransparentSet, true); |
690 | 154 |
|
7546
b50556f2a0e8
This union hasn't been needed for 5 years, and makes using other headers harder.
nemo
parents:
7495
diff
changeset
|
155 |
DrawRoundRect(@r, cWhiteColor, cNearBlackColor, texsurf, true); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
156 |
rr:= r; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
157 |
inc(rr.x, 2); dec(rr.w, 4); inc(rr.y, 2); dec(rr.h, 4); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
158 |
DrawRoundRect(@rr, Clan^.Color, Clan^.Color, texsurf, false); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
159 |
HealthTex:= Surface2Tex(texsurf, false); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
160 |
SDL_FreeSurface(texsurf); |
690 | 161 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
162 |
r.x:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
163 |
r.y:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
164 |
r.w:= 32; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
165 |
r.h:= 32; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
166 |
texsurf:= SDL_CreateRGBSurface(SDL_SWSURFACE, r.w, r.h, 32, RMask, GMask, BMask, AMask); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
167 |
TryDo(texsurf <> nil, errmsgCreateSurface, true); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
168 |
TryDo(SDL_SetColorKey(texsurf, SDL_SRCCOLORKEY, 0) = 0, errmsgTransparentSet, true); |
2747 | 169 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
170 |
r.w:= 26; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
171 |
r.h:= 19; |
2747 | 172 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
173 |
DrawRoundRect(@r, cWhiteColor, cNearBlackColor, texsurf, true); |
3697 | 174 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
175 |
// overwrite flag for cpu teams and keep players from using it |
7495 | 176 |
foundBot:= false; |
177 |
maxLevel:= -1; |
|
178 |
for i:= 0 to cMaxHHIndex do |
|
179 |
with Hedgehogs[i] do |
|
180 |
if (Gear <> nil) and (BotLevel > 0) then |
|
181 |
begin |
|
182 |
foundBot:= true; |
|
183 |
// initially was going to do the highest botlevel of the team, but for now, just apply if entire team has same bot level |
|
184 |
if maxLevel = -1 then maxLevel:= BotLevel |
|
185 |
else if (maxLevel > 0) and (maxLevel <> BotLevel) then maxLevel:= 0; |
|
186 |
//if (maxLevel > 0) and (BotLevel < maxLevel) then maxLevel:= BotLevel |
|
187 |
end |
|
188 |
else if Gear <> nil then maxLevel:= 0; |
|
189 |
||
190 |
if foundBot then |
|
191 |
begin |
|
192 |
// disabled the plain flag - I think it looks ok even w/ full bars obscuring CPU |
|
193 |
//if (maxLevel > 0) and (maxLevel < 3) then Flag:= 'cpu_plain' else |
|
194 |
Flag:= 'cpu' |
|
195 |
end |
|
196 |
else if (Flag = 'cpu') or (Flag = 'cpu_plain') then |
|
197 |
Flag:= 'hedgewars'; |
|
3697 | 198 |
|
5238
46ddaf14509d
Enable ~/.hedgewars/Data (or platform equivalent) to override/extend pretty much everything in system Data dir. Obviously desyncing can occur, so this is at user's own risk. Should simplify map etc install. Needs testing.
nemo
parents:
5215
diff
changeset
|
199 |
flagsurf:= LoadImage(UserPathz[ptFlags] + '/' + Flag, ifNone); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
200 |
if flagsurf = nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
201 |
flagsurf:= LoadImage(Pathz[ptFlags] + '/' + Flag, ifNone); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
202 |
if flagsurf = nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
203 |
flagsurf:= LoadImage(UserPathz[ptFlags] + '/hedgewars', ifNone); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
204 |
if flagsurf = nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
205 |
flagsurf:= LoadImage(Pathz[ptFlags] + '/hedgewars', ifNone); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
206 |
TryDo(flagsurf <> nil, 'Failed to load flag "' + Flag + '" as well as the default flag', true); |
7495 | 207 |
|
208 |
case maxLevel of |
|
209 |
1: copyToXY(SpritesData[sprBotlevels].Surface, flagsurf, 0, 0); |
|
210 |
2: copyToXYFromRect(SpritesData[sprBotlevels].Surface, flagsurf, 5, 2, 17, 13, 5, 2); |
|
211 |
3: copyToXYFromRect(SpritesData[sprBotlevels].Surface, flagsurf, 9, 5, 13, 10, 9, 5); |
|
212 |
4: copyToXYFromRect(SpritesData[sprBotlevels].Surface, flagsurf, 13, 9, 9, 6, 13, 9); |
|
213 |
5: copyToXYFromRect(SpritesData[sprBotlevels].Surface, flagsurf, 17, 11, 5, 4, 17, 11) |
|
214 |
end; |
|
215 |
||
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
216 |
copyToXY(flagsurf, texsurf, 2, 2); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
217 |
SDL_FreeSurface(flagsurf); |
3513
f589230fa21b
now it's possible to select the scheme file in the ifrontendfix a type about loading an image (iphone file system IS case senstive)
koda
parents:
3509
diff
changeset
|
218 |
flagsurf:= nil; |
3697 | 219 |
|
7495 | 220 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
221 |
// restore black border pixels inside the flag |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
222 |
PLongwordArray(texsurf^.pixels)^[32 * 2 + 2]:= cNearBlackColor; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
223 |
PLongwordArray(texsurf^.pixels)^[32 * 2 + 23]:= cNearBlackColor; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
224 |
PLongwordArray(texsurf^.pixels)^[32 * 16 + 2]:= cNearBlackColor; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
225 |
PLongwordArray(texsurf^.pixels)^[32 * 16 + 23]:= cNearBlackColor; |
2747 | 226 |
|
7495 | 227 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
228 |
FlagTex:= Surface2Tex(texsurf, false); |
3041 | 229 |
SDL_FreeSurface(texsurf); |
4874 | 230 |
texsurf:= nil; |
3041 | 231 |
|
3773 | 232 |
AIKillsTex := RenderStringTex(inttostr(stats.AIKills), Clan^.Color, fnt16); |
233 |
||
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
234 |
dec(drY, r.h + 2); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
235 |
DrawHealthY:= drY; |
7495 | 236 |
for i:= 0 to cMaxHHIndex do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
237 |
with Hedgehogs[i] do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
238 |
if Gear <> nil then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
239 |
begin |
7013 | 240 |
NameTagTex:= RenderStringTexLim(Name, Clan^.Color, fnt16, cTeamHealthWidth); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
241 |
if Hat <> 'NoHat' then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
242 |
begin |
2874
3c7c2bf1ba38
A simple hat reservation mechanism. Can be worked around with a little effort, but to make it useful, you'd have to get everyone you played with to work around it too. Quite a bit of effort for a small reward feature.
nemo
parents:
2873
diff
changeset
|
243 |
if (Length(Hat) > 39) and (Copy(Hat,1,8) = 'Reserved') and (Copy(Hat,9,32) = PlayerHash) then |
6515
74a04089bb56
Suggestion of sheepluva's - disable timebox in crates after SD, and set to disabled in Ammo. Also disable switch hedgehog for teams of 1 hedgehog in size, and try and correct what appears to be a bug in reserved hats.
nemo
parents:
6492
diff
changeset
|
244 |
LoadHedgehogHat(Gear, 'Reserved/' + Copy(Hat,9,Length(Hat)-8)) |
2874
3c7c2bf1ba38
A simple hat reservation mechanism. Can be worked around with a little effort, but to make it useful, you'd have to get everyone you played with to work around it too. Quite a bit of effort for a small reward feature.
nemo
parents:
2873
diff
changeset
|
245 |
else |
4874 | 246 |
LoadHedgehogHat(Gear, Hat); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
247 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
248 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
249 |
end; |
5238
46ddaf14509d
Enable ~/.hedgewars/Data (or platform equivalent) to override/extend pretty much everything in system Data dir. Obviously desyncing can occur, so this is at user's own risk. Should simplify map etc install. Needs testing.
nemo
parents:
5215
diff
changeset
|
250 |
MissionIcons:= LoadImage(UserPathz[ptGraphics] + '/missions', ifNone); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
251 |
if MissionIcons = nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
252 |
MissionIcons:= LoadImage(Pathz[ptGraphics] + '/missions', ifCritical); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
253 |
iconsurf:= SDL_CreateRGBSurface(SDL_SWSURFACE, 28, 28, 32, RMask, GMask, BMask, AMask); |
3862 | 254 |
if iconsurf <> nil then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
255 |
begin |
3862 | 256 |
r.x:= 0; |
257 |
r.y:= 0; |
|
258 |
r.w:= 28; |
|
259 |
r.h:= 28; |
|
260 |
DrawRoundRect(@r, cWhiteColor, cNearBlackColor, iconsurf, true); |
|
261 |
ropeIconTex:= Surface2Tex(iconsurf, false); |
|
262 |
SDL_FreeSurface(iconsurf); |
|
263 |
iconsurf:= nil; |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
264 |
end; |
6492 | 265 |
end; |
4 | 266 |
|
6492 | 267 |
procedure InitHealth; |
268 |
var i, t: LongInt; |
|
269 |
begin |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
270 |
for t:= 0 to Pred(TeamsCount) do |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
271 |
if TeamsArray[t] <> nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
272 |
with TeamsArray[t]^ do |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
273 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
274 |
for i:= 0 to cMaxHHIndex do |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
275 |
if Hedgehogs[i].Gear <> nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
276 |
RenderHealth(Hedgehogs[i]); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
277 |
end |
6492 | 278 |
end; |
4 | 279 |
|
6492 | 280 |
procedure LoadGraves; |
281 |
var t: LongInt; |
|
282 |
texsurf: PSDL_Surface; |
|
283 |
begin |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
284 |
for t:= 0 to Pred(TeamsCount) do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
285 |
if TeamsArray[t] <> nil then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
286 |
with TeamsArray[t]^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
287 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
288 |
if GraveName = '' then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
289 |
GraveName:= 'Statue'; |
5238
46ddaf14509d
Enable ~/.hedgewars/Data (or platform equivalent) to override/extend pretty much everything in system Data dir. Obviously desyncing can occur, so this is at user's own risk. Should simplify map etc install. Needs testing.
nemo
parents:
5215
diff
changeset
|
290 |
texsurf:= LoadImage(UserPathz[ptGraves] + '/' + GraveName, ifTransparent); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
291 |
if texsurf = nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
292 |
texsurf:= LoadImage(Pathz[ptGraves] + '/' + GraveName, ifTransparent); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
293 |
if texsurf = nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
294 |
texsurf:= LoadImage(UserPathz[ptGraves] + '/Statue', ifTransparent); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
295 |
if texsurf = nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
296 |
texsurf:= LoadImage(Pathz[ptGraves] + '/Statue', ifCritical or ifTransparent); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
297 |
GraveTex:= Surface2Tex(texsurf, false); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
298 |
SDL_FreeSurface(texsurf) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
299 |
end |
6492 | 300 |
end; |
4 | 301 |
|
6492 | 302 |
procedure StoreLoad(reload: boolean); |
303 |
var s: shortstring; |
|
304 |
ii: TSprite; |
|
844 | 305 |
fi: THWFont; |
306 |
ai: TAmmoType; |
|
307 |
tmpsurf: PSDL_Surface; |
|
308 |
i: LongInt; |
|
4 | 309 |
begin |
5712 | 310 |
AddFileLog('StoreLoad()'); |
5714 | 311 |
|
312 |
if not reload then |
|
313 |
for fi:= Low(THWFont) to High(THWFont) do |
|
314 |
with Fontz[fi] do |
|
315 |
begin |
|
316 |
s:= UserPathz[ptFonts] + '/' + Name; |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
317 |
if not FileExists(s) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
318 |
s:= Pathz[ptFonts] + '/' + Name; |
5714 | 319 |
WriteToConsole(msgLoading + s + ' (' + inttostr(Height) + 'pt)... '); |
320 |
Handle:= TTF_OpenFont(Str2PChar(s), Height); |
|
321 |
SDLTry(Handle <> nil, true); |
|
322 |
TTF_SetFontStyle(Handle, style); |
|
323 |
WriteLnToConsole(msgOK) |
|
324 |
end; |
|
53 | 325 |
|
70 | 326 |
MakeCrossHairs; |
4 | 327 |
LoadGraves; |
6394
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6382
diff
changeset
|
328 |
if not reload then |
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6382
diff
changeset
|
329 |
AddProgress; |
4 | 330 |
|
331 |
for ii:= Low(TSprite) to High(TSprite) do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
332 |
with SpritesData[ii] do |
5215
d4c529624460
Try and avoid problem reported by users like RDChrisco with cards that only support 512 texture size, and disable backgrounds. Also, reorganise the rq flags sprite loading a bit. Needs testing to make sure it matches the sprite uses. It should though.
nemo
parents:
5187
diff
changeset
|
333 |
// FIXME - add a sprite attribute to match on rq flags? |
d4c529624460
Try and avoid problem reported by users like RDChrisco with cards that only support 512 texture size, and disable backgrounds. Also, reorganise the rq flags sprite loading a bit. Needs testing to make sure it matches the sprite uses. It should though.
nemo
parents:
5187
diff
changeset
|
334 |
if (((cReducedQuality and (rqNoBackground or rqLowRes)) = 0) or // why rqLowRes? |
d4c529624460
Try and avoid problem reported by users like RDChrisco with cards that only support 512 texture size, and disable backgrounds. Also, reorganise the rq flags sprite loading a bit. Needs testing to make sure it matches the sprite uses. It should though.
nemo
parents:
5187
diff
changeset
|
335 |
(not (ii in [sprSky, sprSkyL, sprSkyR, sprHorizont, sprHorizontL, sprHorizontR]))) and |
d4c529624460
Try and avoid problem reported by users like RDChrisco with cards that only support 512 texture size, and disable backgrounds. Also, reorganise the rq flags sprite loading a bit. Needs testing to make sure it matches the sprite uses. It should though.
nemo
parents:
5187
diff
changeset
|
336 |
(((cReducedQuality and rqPlainSplash) = 0) or ((not (ii in [sprSplash, sprDroplet, sprSDSplash, sprSDDroplet])))) and |
5285
af4dc03dd60d
Make sky, horizon, flakes and clouds optional, replace repeated strips of skyL/skyR with 2x2 transparent PNGs instead of larger images of variable dimensions, remove a number of empty unused images
nemo
parents:
5284
diff
changeset
|
337 |
(((cReducedQuality and rqKillFlakes) = 0) or (Theme = 'Snow') or (Theme = 'Christmas') or ((not (ii in [sprFlake, sprSDFlake])))) and |
af4dc03dd60d
Make sky, horizon, flakes and clouds optional, replace repeated strips of skyL/skyR with 2x2 transparent PNGs instead of larger images of variable dimensions, remove a number of empty unused images
nemo
parents:
5284
diff
changeset
|
338 |
((cCloudsNumber > 0) or (ii <> sprCloud)) and |
af4dc03dd60d
Make sky, horizon, flakes and clouds optional, replace repeated strips of skyL/skyR with 2x2 transparent PNGs instead of larger images of variable dimensions, remove a number of empty unused images
nemo
parents:
5284
diff
changeset
|
339 |
((vobCount > 0) or (ii <> sprFlake)) then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
340 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
341 |
if AltPath = ptNone then |
6639 | 342 |
if ii in [sprHorizont, sprHorizontL, sprHorizontR, sprSky, sprSkyL, sprSkyR, sprChunk] then // FIXME: hack |
5238
46ddaf14509d
Enable ~/.hedgewars/Data (or platform equivalent) to override/extend pretty much everything in system Data dir. Obviously desyncing can occur, so this is at user's own risk. Should simplify map etc install. Needs testing.
nemo
parents:
5215
diff
changeset
|
343 |
begin |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
344 |
if not reload then |
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
345 |
begin |
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
346 |
tmpsurf:= LoadImage(UserPathz[Path] + '/' + FileName, ifAlpha or ifTransparent); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
347 |
if tmpsurf = nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
348 |
tmpsurf:= LoadImage(Pathz[Path] + '/' + FileName, ifAlpha or ifTransparent) |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
349 |
end |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
350 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
351 |
tmpsurf:= Surface |
5238
46ddaf14509d
Enable ~/.hedgewars/Data (or platform equivalent) to override/extend pretty much everything in system Data dir. Obviously desyncing can occur, so this is at user's own risk. Should simplify map etc install. Needs testing.
nemo
parents:
5215
diff
changeset
|
352 |
end |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
353 |
else |
5238
46ddaf14509d
Enable ~/.hedgewars/Data (or platform equivalent) to override/extend pretty much everything in system Data dir. Obviously desyncing can occur, so this is at user's own risk. Should simplify map etc install. Needs testing.
nemo
parents:
5215
diff
changeset
|
354 |
begin |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
355 |
if not reload then |
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
356 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
357 |
tmpsurf:= LoadImage(UserPathz[Path] + '/' + FileName, ifAlpha or ifTransparent); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
358 |
if tmpsurf = nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
359 |
tmpsurf:= LoadImage(Pathz[Path] + '/' + FileName, ifAlpha or ifTransparent or ifCritical) |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
360 |
end |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
361 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
362 |
tmpsurf:= Surface |
5238
46ddaf14509d
Enable ~/.hedgewars/Data (or platform equivalent) to override/extend pretty much everything in system Data dir. Obviously desyncing can occur, so this is at user's own risk. Should simplify map etc install. Needs testing.
nemo
parents:
5215
diff
changeset
|
363 |
end |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
364 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
365 |
begin |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
366 |
if not reload then |
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
367 |
begin |
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
368 |
tmpsurf:= LoadImage(UserPathz[Path] + '/' + FileName, ifAlpha or ifTransparent); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
369 |
if tmpsurf = nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
370 |
tmpsurf:= LoadImage(Pathz[Path] + '/' + FileName, ifAlpha or ifTransparent); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
371 |
if tmpsurf = nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
372 |
tmpsurf:= LoadImage(UserPathz[AltPath] + '/' + FileName, ifAlpha or ifTransparent); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
373 |
if tmpsurf = nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
374 |
tmpsurf:= LoadImage(Pathz[AltPath] + '/' + FileName, ifAlpha or ifCritical or ifTransparent) |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
375 |
end |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
376 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
377 |
tmpsurf:= Surface |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
378 |
end; |
2426 | 379 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
380 |
if tmpsurf <> nil then |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
381 |
begin |
3558 | 382 |
if getImageDimensions then |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
383 |
begin |
3558 | 384 |
imageWidth:= tmpsurf^.w; |
385 |
imageHeight:= tmpsurf^.h |
|
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
386 |
end; |
3558 | 387 |
if getDimensions then |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
388 |
begin |
3558 | 389 |
Width:= tmpsurf^.w; |
390 |
Height:= tmpsurf^.h |
|
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
391 |
end; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
392 |
if (ii in [sprSky, sprSkyL, sprSkyR, sprHorizont, sprHorizontL, sprHorizontR]) then |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
393 |
begin |
3537
8f5b3108f29c
New approach to the low-res problem. Basically, we already have a 1024 minimum, and the tallest maps are restricting themselves to 2048 maximum. All backgrounds are scaled down 50%, then scaled up on draw. Saves memory, and backgrounds are already deliberately fuzzed for depth of field anyway.
nemo
parents:
3525
diff
changeset
|
394 |
Texture:= Surface2Tex(tmpsurf, true); |
8f5b3108f29c
New approach to the low-res problem. Basically, we already have a 1024 minimum, and the tallest maps are restricting themselves to 2048 maximum. All backgrounds are scaled down 50%, then scaled up on draw. Saves memory, and backgrounds are already deliberately fuzzed for depth of field anyway.
nemo
parents:
3525
diff
changeset
|
395 |
Texture^.Scale:= 2 |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
396 |
end |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
397 |
else |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
398 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
399 |
Texture:= Surface2Tex(tmpsurf, false); |
4809
9c7d5f802618
rearrange quality flags a little, disable snow rendering on rqLowRes
koda
parents:
4782
diff
changeset
|
400 |
// HACK: We should include some sprite attribute to define the texture wrap directions |
9c7d5f802618
rearrange quality flags a little, disable snow rendering on rqLowRes
koda
parents:
4782
diff
changeset
|
401 |
if ((ii = sprWater) or (ii = sprSDWater)) and ((cReducedQuality and (rq2DWater or rqClampLess)) = 0) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
402 |
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
403 |
end; |
3491 | 404 |
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_PRIORITY, priority); |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
405 |
// This should maybe be flagged. It wastes quite a bit of memory. |
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
406 |
if not reload then |
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
407 |
begin |
6674 | 408 |
{$IFDEF USE_CONTEXT_RESTORE} |
5714 | 409 |
Surface:= tmpsurf |
410 |
{$ELSE} |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
411 |
if saveSurf then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
412 |
Surface:= tmpsurf |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
413 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
414 |
SDL_FreeSurface(tmpsurf) |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
415 |
{$ENDIF} |
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
416 |
end |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
417 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
418 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
419 |
Surface:= nil |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
420 |
end; |
80 | 421 |
|
7495 | 422 |
WriteNames(fnt16); |
423 |
||
6394
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6382
diff
changeset
|
424 |
if not reload then |
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6382
diff
changeset
|
425 |
AddProgress; |
567 | 426 |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
427 |
tmpsurf:= LoadImage(UserPathz[ptGraphics] + '/' + cHHFileName, ifAlpha or ifTransparent); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
428 |
if tmpsurf = nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
429 |
tmpsurf:= LoadImage(Pathz[ptGraphics] + '/' + cHHFileName, ifAlpha or ifCritical or ifTransparent); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
430 |
|
2290
bf87ca44782e
Selectively enable clamping - seeing if this helps avoid weird flake problems while still fixing vertical lines in waves and sky
nemo
parents:
2285
diff
changeset
|
431 |
HHTexture:= Surface2Tex(tmpsurf, false); |
761 | 432 |
SDL_FreeSurface(tmpsurf); |
4 | 433 |
|
434 |
InitHealth; |
|
435 |
||
2623 | 436 |
PauseTexture:= RenderStringTex(trmsg[sidPaused], cYellowColor, fntBig); |
437 |
ConfirmTexture:= RenderStringTex(trmsg[sidConfirm], cYellowColor, fntBig); |
|
438 |
SyncTexture:= RenderStringTex(trmsg[sidSync], cYellowColor, fntBig); |
|
281
5b483aa9f2ab
Pause support (mouse cursor is released when the game is paused)
unc0rr
parents:
208
diff
changeset
|
439 |
|
6394
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6382
diff
changeset
|
440 |
if not reload then |
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6382
diff
changeset
|
441 |
AddProgress; |
2601 | 442 |
|
2670 | 443 |
// name of weapons in ammo menu |
843 | 444 |
for ai:= Low(TAmmoType) to High(TAmmoType) do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
445 |
with Ammoz[ai] do |
6380
1ff5ad1d771b
Remove a bunch of unnecessary nil checks. FreeTexture does its own nil check.
nemo
parents:
6379
diff
changeset
|
446 |
begin |
3384 | 447 |
TryDo(trAmmo[NameId] <> '','No default text/translation found for ammo type #' + intToStr(ord(ai)) + '!',true); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
448 |
tmpsurf:= TTF_RenderUTF8_Blended(Fontz[CheckCJKFont(trAmmo[NameId],fnt16)].Handle, Str2PChar(trAmmo[NameId]), cWhiteColorChannels); |
3384 | 449 |
TryDo(tmpsurf <> nil,'Name-texture creation for ammo type #' + intToStr(ord(ai)) + ' failed!',true); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
450 |
tmpsurf:= doSurfaceConversion(tmpsurf); |
6380
1ff5ad1d771b
Remove a bunch of unnecessary nil checks. FreeTexture does its own nil check.
nemo
parents:
6379
diff
changeset
|
451 |
FreeTexture(NameTex); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
452 |
NameTex:= Surface2Tex(tmpsurf, false); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
453 |
SDL_FreeSurface(tmpsurf) |
6380
1ff5ad1d771b
Remove a bunch of unnecessary nil checks. FreeTexture does its own nil check.
nemo
parents:
6379
diff
changeset
|
454 |
end; |
2376 | 455 |
|
2670 | 456 |
// number of weapons in ammo menu |
844 | 457 |
for i:= Low(CountTexz) to High(CountTexz) do |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
458 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
459 |
tmpsurf:= TTF_RenderUTF8_Blended(Fontz[fnt16].Handle, Str2PChar(IntToStr(i) + 'x'), cWhiteColorChannels); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
460 |
tmpsurf:= doSurfaceConversion(tmpsurf); |
6380
1ff5ad1d771b
Remove a bunch of unnecessary nil checks. FreeTexture does its own nil check.
nemo
parents:
6379
diff
changeset
|
461 |
FreeTexture(CountTexz[i]); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
462 |
CountTexz[i]:= Surface2Tex(tmpsurf, false); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
463 |
SDL_FreeSurface(tmpsurf) |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
464 |
end; |
844 | 465 |
|
6394
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6382
diff
changeset
|
466 |
if not reload then |
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6382
diff
changeset
|
467 |
AddProgress; |
2669 | 468 |
IMG_Quit(); |
4 | 469 |
end; |
470 |
||
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
471 |
procedure StoreRelease(reload: boolean); |
4 | 472 |
var ii: TSprite; |
4901 | 473 |
ai: TAmmoType; |
474 |
i, t: LongInt; |
|
4 | 475 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
476 |
for ii:= Low(TSprite) to High(TSprite) do |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
477 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
478 |
FreeTexture(SpritesData[ii].Texture); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
479 |
SpritesData[ii].Texture:= nil; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
480 |
if (SpritesData[ii].Surface <> nil) and (not reload) then |
5562 | 481 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
482 |
SDL_FreeSurface(SpritesData[ii].Surface); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
483 |
SpritesData[ii].Surface:= nil |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
484 |
end |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
485 |
end; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
486 |
SDL_FreeSurface(MissionIcons); |
6394
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6382
diff
changeset
|
487 |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
488 |
// free the textures declared in uVariables |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
489 |
FreeTexture(WeaponTooltipTex); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
490 |
WeaponTooltipTex:= nil; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
491 |
FreeTexture(PauseTexture); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
492 |
PauseTexture:= nil; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
493 |
FreeTexture(SyncTexture); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
494 |
SyncTexture:= nil; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
495 |
FreeTexture(ConfirmTexture); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
496 |
ConfirmTexture:= nil; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
497 |
FreeTexture(ropeIconTex); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
498 |
ropeIconTex:= nil; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
499 |
FreeTexture(HHTexture); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
500 |
HHTexture:= nil; |
6394
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6382
diff
changeset
|
501 |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
502 |
// free all ammo name textures |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
503 |
for ai:= Low(TAmmoType) to High(TAmmoType) do |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
504 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
505 |
FreeTexture(Ammoz[ai].NameTex); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
506 |
Ammoz[ai].NameTex:= nil |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
507 |
end; |
5562 | 508 |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
509 |
// free all count textures |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
510 |
for i:= Low(CountTexz) to High(CountTexz) do |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
511 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
512 |
FreeTexture(CountTexz[i]); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
513 |
CountTexz[i]:= nil |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
514 |
end; |
5562 | 515 |
|
4901 | 516 |
// free all team and hedgehog textures |
517 |
for t:= 0 to Pred(TeamsCount) do |
|
6380
1ff5ad1d771b
Remove a bunch of unnecessary nil checks. FreeTexture does its own nil check.
nemo
parents:
6379
diff
changeset
|
518 |
begin |
4901 | 519 |
if TeamsArray[t] <> nil then |
6380
1ff5ad1d771b
Remove a bunch of unnecessary nil checks. FreeTexture does its own nil check.
nemo
parents:
6379
diff
changeset
|
520 |
begin |
4901 | 521 |
FreeTexture(TeamsArray[t]^.NameTagTex); |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
522 |
TeamsArray[t]^.NameTagTex:= nil; |
4901 | 523 |
FreeTexture(TeamsArray[t]^.CrosshairTex); |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
524 |
TeamsArray[t]^.CrosshairTex:= nil; |
4901 | 525 |
FreeTexture(TeamsArray[t]^.GraveTex); |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
526 |
TeamsArray[t]^.GraveTex:= nil; |
4901 | 527 |
FreeTexture(TeamsArray[t]^.HealthTex); |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
528 |
TeamsArray[t]^.HealthTex:= nil; |
4901 | 529 |
FreeTexture(TeamsArray[t]^.AIKillsTex); |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
530 |
TeamsArray[t]^.AIKillsTex:= nil; |
4901 | 531 |
FreeTexture(TeamsArray[t]^.FlagTex); |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
532 |
TeamsArray[t]^.FlagTex:= nil; |
4901 | 533 |
for i:= 0 to cMaxHHIndex do |
6380
1ff5ad1d771b
Remove a bunch of unnecessary nil checks. FreeTexture does its own nil check.
nemo
parents:
6379
diff
changeset
|
534 |
begin |
4901 | 535 |
FreeTexture(TeamsArray[t]^.Hedgehogs[i].NameTagTex); |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
536 |
TeamsArray[t]^.Hedgehogs[i].NameTagTex:= nil; |
4901 | 537 |
FreeTexture(TeamsArray[t]^.Hedgehogs[i].HealthTagTex); |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
538 |
TeamsArray[t]^.Hedgehogs[i].HealthTagTex:= nil; |
4901 | 539 |
FreeTexture(TeamsArray[t]^.Hedgehogs[i].HatTex); |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
540 |
TeamsArray[t]^.Hedgehogs[i].HatTex:= nil; |
6380
1ff5ad1d771b
Remove a bunch of unnecessary nil checks. FreeTexture does its own nil check.
nemo
parents:
6379
diff
changeset
|
541 |
end; |
4901 | 542 |
end; |
543 |
end; |
|
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
544 |
{$IFNDEF S3D_DISABLED} |
3696 | 545 |
if (cStereoMode = smHorizontal) or (cStereoMode = smVertical) or (cStereoMode = smAFR) then |
6380
1ff5ad1d771b
Remove a bunch of unnecessary nil checks. FreeTexture does its own nil check.
nemo
parents:
6379
diff
changeset
|
546 |
begin |
3692 | 547 |
glDeleteTextures(1, @texl); |
548 |
glDeleteRenderbuffersEXT(1, @depthl); |
|
549 |
glDeleteFramebuffersEXT(1, @framel); |
|
550 |
glDeleteTextures(1, @texr); |
|
551 |
glDeleteRenderbuffersEXT(1, @depthr); |
|
552 |
glDeleteFramebuffersEXT(1, @framer) |
|
6380
1ff5ad1d771b
Remove a bunch of unnecessary nil checks. FreeTexture does its own nil check.
nemo
parents:
6379
diff
changeset
|
553 |
end |
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
554 |
{$ENDIF} |
4 | 555 |
end; |
556 |
||
2677
83ad68ceef72
Non-hacked version of CJK handling. Should switch to CJK rendering only if a particular string needs it, instead of based on locale file.
nemo
parents:
2674
diff
changeset
|
557 |
|
4 | 558 |
procedure RenderHealth(var Hedgehog: THedgehog); |
95 | 559 |
var s: shortstring; |
4 | 560 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
561 |
str(Hedgehog.Gear^.Health, s); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
562 |
FreeTexture(Hedgehog.HealthTagTex); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
563 |
Hedgehog.HealthTagTex:= RenderStringTex(s, Hedgehog.Team^.Clan^.Color, fnt16) |
4 | 564 |
end; |
565 |
||
6990
40e5af28d026
change every return value into a more pascal-ish form, using the name of the fucntion (helps the parser and macpas compaitilibity)
koda
parents:
6986
diff
changeset
|
566 |
function LoadImage(const filename: shortstring; imageFlags: LongInt): PSDL_Surface; |
30 | 567 |
var tmpsurf: PSDL_Surface; |
355 | 568 |
s: shortstring; |
4 | 569 |
begin |
6990
40e5af28d026
change every return value into a more pascal-ish form, using the name of the fucntion (helps the parser and macpas compaitilibity)
koda
parents:
6986
diff
changeset
|
570 |
LoadImage:= nil; |
40e5af28d026
change every return value into a more pascal-ish form, using the name of the fucntion (helps the parser and macpas compaitilibity)
koda
parents:
6986
diff
changeset
|
571 |
WriteToConsole(msgLoading + filename + '.png [flags: ' + inttostr(imageFlags) + '] '); |
2426 | 572 |
|
6990
40e5af28d026
change every return value into a more pascal-ish form, using the name of the fucntion (helps the parser and macpas compaitilibity)
koda
parents:
6986
diff
changeset
|
573 |
s:= filename + '.png'; |
40e5af28d026
change every return value into a more pascal-ish form, using the name of the fucntion (helps the parser and macpas compaitilibity)
koda
parents:
6986
diff
changeset
|
574 |
tmpsurf:= IMG_Load(Str2PChar(s)); |
2254 | 575 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
576 |
if tmpsurf = nil then |
6990
40e5af28d026
change every return value into a more pascal-ish form, using the name of the fucntion (helps the parser and macpas compaitilibity)
koda
parents:
6986
diff
changeset
|
577 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
578 |
OutError(msgFailed, (imageFlags and ifCritical) <> 0); |
6990
40e5af28d026
change every return value into a more pascal-ish form, using the name of the fucntion (helps the parser and macpas compaitilibity)
koda
parents:
6986
diff
changeset
|
579 |
exit; |
40e5af28d026
change every return value into a more pascal-ish form, using the name of the fucntion (helps the parser and macpas compaitilibity)
koda
parents:
6986
diff
changeset
|
580 |
end; |
2153 | 581 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
582 |
if ((imageFlags and ifIgnoreCaps) = 0) and ((tmpsurf^.w > MaxTextureSize) or (tmpsurf^.h > MaxTextureSize)) then |
6990
40e5af28d026
change every return value into a more pascal-ish form, using the name of the fucntion (helps the parser and macpas compaitilibity)
koda
parents:
6986
diff
changeset
|
583 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
584 |
SDL_FreeSurface(tmpsurf); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
585 |
OutError(msgFailedSize, (imageFlags and ifCritical) <> 0); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
586 |
// dummy surface to replace non-critical textures that failed to load due to their size |
6990
40e5af28d026
change every return value into a more pascal-ish form, using the name of the fucntion (helps the parser and macpas compaitilibity)
koda
parents:
6986
diff
changeset
|
587 |
LoadImage:= SDL_CreateRGBSurface(SDL_SWSURFACE, 2, 2, 32, RMask, GMask, BMask, AMask); |
40e5af28d026
change every return value into a more pascal-ish form, using the name of the fucntion (helps the parser and macpas compaitilibity)
koda
parents:
6986
diff
changeset
|
588 |
exit; |
40e5af28d026
change every return value into a more pascal-ish form, using the name of the fucntion (helps the parser and macpas compaitilibity)
koda
parents:
6986
diff
changeset
|
589 |
end; |
351 | 590 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
591 |
tmpsurf:= doSurfaceConversion(tmpsurf); |
2630 | 592 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
593 |
if (imageFlags and ifTransparent) <> 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
594 |
TryDo(SDL_SetColorKey(tmpsurf, SDL_SRCCOLORKEY, 0) = 0, errmsgTransparentSet, true); |
2630 | 595 |
|
3407 | 596 |
WriteLnToConsole(msgOK + ' (' + inttostr(tmpsurf^.w) + 'x' + inttostr(tmpsurf^.h) + ')'); |
2630 | 597 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
598 |
LoadImage:= tmpsurf //Result |
753 | 599 |
end; |
600 |
||
4874 | 601 |
procedure LoadHedgehogHat(HHGear: PGear; newHat: shortstring); |
602 |
var texsurf: PSDL_Surface; |
|
603 |
begin |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
604 |
texsurf:= LoadImage(UserPathz[ptHats] + '/' + newHat, ifNone); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
605 |
if texsurf = nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
606 |
texsurf:= LoadImage(Pathz[ptHats] + '/' + newHat, ifNone); |
4874 | 607 |
|
608 |
// only do something if the hat could be loaded |
|
609 |
if texsurf <> nil then |
|
610 |
begin |
|
611 |
// free the mem of any previously assigned texture |
|
612 |
FreeTexture(HHGear^.Hedgehog^.HatTex); |
|
613 |
||
614 |
// assign new hat to hedgehog |
|
615 |
HHGear^.Hedgehog^.HatTex:= Surface2Tex(texsurf, true); |
|
616 |
||
617 |
// cleanup: free temporary surface mem |
|
618 |
SDL_FreeSurface(texsurf) |
|
619 |
end; |
|
620 |
end; |
|
621 |
||
2905 | 622 |
function glLoadExtension(extension : shortstring) : boolean; |
2428 | 623 |
begin |
4850 | 624 |
{$IF GLunit = gles11} |
4900 | 625 |
// FreePascal doesnt come with OpenGL ES 1.1 Extension headers |
3971 | 626 |
extension:= extension; // avoid hint |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
627 |
glLoadExtension:= false; |
3333 | 628 |
AddFileLog('OpenGL - "' + extension + '" skipped') |
2580
aeccc8f51d3f
completes touch input/control (problems with moving camera)
koda
parents:
2578
diff
changeset
|
629 |
{$ELSE} |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
630 |
glLoadExtension:= glext_LoadExtension(extension); |
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
631 |
if glLoadExtension then |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
632 |
AddFileLog('OpenGL - "' + extension + '" loaded') |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
633 |
else |
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
634 |
AddFileLog('OpenGL - "' + extension + '" failed to load'); |
2568
e654cbfb23ba
Bunch of neat stuff by Smaxx. ATI check, translucent name tags to reduce terrain fail, disabling health crates on invulnerable hogs. Also tweaks to prior stuff.
nemo
parents:
2567
diff
changeset
|
635 |
{$ENDIF} |
2428 | 636 |
end; |
637 |
||
5660
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
638 |
procedure SetupOpenGLAttributes; |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
639 |
begin |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
640 |
{$IFDEF IPHONEOS} |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
641 |
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 0); |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
642 |
SDL_GL_SetAttribute(SDL_GL_RETAINED_BACKING, 1); |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
643 |
{$ELSE} |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
644 |
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
645 |
{$IFNDEF SDL13} // vsync is default in 1.3 |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
646 |
SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, LongInt((cReducedQuality and rqDesyncVBlank) = 0)); |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
647 |
{$ENDIF} |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
648 |
{$ENDIF} |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
649 |
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 0); // no depth buffer |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
650 |
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5); |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
651 |
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 6); |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
652 |
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5); |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
653 |
SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 0); // no alpha channel required |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
654 |
SDL_GL_SetAttribute(SDL_GL_BUFFER_SIZE, 16); // buffer has to be 16 bit only |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
655 |
SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1); // try to prefer hardware rendering |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
656 |
end; |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
657 |
|
753 | 658 |
procedure SetupOpenGL; |
5660
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
659 |
//var vendor: shortstring = ''; |
6021 | 660 |
var buf: array[byte] of char; |
5505
a55aab592950
Ditch the renderer system in sdl1.3 and use the 'old fashioned' sdl/opengl context. This gives us more flexibility and less problem in receiving video events (expecially on mobile platform) as well as not having to care to reset the gl context every time sdl interferes.
koda
parents:
5285
diff
changeset
|
661 |
begin |
6021 | 662 |
buf[0]:= char(0); // avoid compiler hint |
663 |
AddFileLog('Setting up OpenGL (using driver: ' + shortstring(SDL_VideoDriverName(buf, sizeof(buf))) + ')'); |
|
664 |
||
5505
a55aab592950
Ditch the renderer system in sdl1.3 and use the 'old fashioned' sdl/opengl context. This gives us more flexibility and less problem in receiving video events (expecially on mobile platform) as well as not having to care to reset the gl context every time sdl interferes.
koda
parents:
5285
diff
changeset
|
665 |
{$IFDEF SDL13} |
a55aab592950
Ditch the renderer system in sdl1.3 and use the 'old fashioned' sdl/opengl context. This gives us more flexibility and less problem in receiving video events (expecially on mobile platform) as well as not having to care to reset the gl context every time sdl interferes.
koda
parents:
5285
diff
changeset
|
666 |
// this function creates an opengles1.1 context by default on mobile devices |
6885 | 667 |
// unless you un-comment this two attributes |
668 |
//SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, 2); |
|
669 |
//SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, 0); |
|
6611 | 670 |
if SDLGLcontext = nil then |
671 |
SDLGLcontext:= SDL_GL_CreateContext(SDLwindow); |
|
5505
a55aab592950
Ditch the renderer system in sdl1.3 and use the 'old fashioned' sdl/opengl context. This gives us more flexibility and less problem in receiving video events (expecially on mobile platform) as well as not having to care to reset the gl context every time sdl interferes.
koda
parents:
5285
diff
changeset
|
672 |
SDLTry(SDLGLcontext <> nil, true); |
a55aab592950
Ditch the renderer system in sdl1.3 and use the 'old fashioned' sdl/opengl context. This gives us more flexibility and less problem in receiving video events (expecially on mobile platform) as well as not having to care to reset the gl context every time sdl interferes.
koda
parents:
5285
diff
changeset
|
673 |
SDL_GL_SetSwapInterval(1); |
3928
2560731c860d
move all mobile-related functions in their own module, provides a structure for future mobile ports
koda
parents:
3922
diff
changeset
|
674 |
{$ENDIF} |
3405 | 675 |
|
5660
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
676 |
// get the max (horizontal and vertical) size for textures that the gpu can support |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
677 |
glGetIntegerv(GL_MAX_TEXTURE_SIZE, @MaxTextureSize); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
678 |
if MaxTextureSize <= 0 then |
5215
d4c529624460
Try and avoid problem reported by users like RDChrisco with cards that only support 512 texture size, and disable backgrounds. Also, reorganise the rq flags sprite loading a bit. Needs testing to make sure it matches the sprite uses. It should though.
nemo
parents:
5187
diff
changeset
|
679 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
680 |
MaxTextureSize:= 1024; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
681 |
AddFileLog('OpenGL Warning - driver didn''t provide any valid max texture size; assuming 1024'); |
5215
d4c529624460
Try and avoid problem reported by users like RDChrisco with cards that only support 512 texture size, and disable backgrounds. Also, reorganise the rq flags sprite loading a bit. Needs testing to make sure it matches the sprite uses. It should though.
nemo
parents:
5187
diff
changeset
|
682 |
end |
d4c529624460
Try and avoid problem reported by users like RDChrisco with cards that only support 512 texture size, and disable backgrounds. Also, reorganise the rq flags sprite loading a bit. Needs testing to make sure it matches the sprite uses. It should though.
nemo
parents:
5187
diff
changeset
|
683 |
else if (MaxTextureSize < 1024) and (MaxTextureSize >= 512) then |
d4c529624460
Try and avoid problem reported by users like RDChrisco with cards that only support 512 texture size, and disable backgrounds. Also, reorganise the rq flags sprite loading a bit. Needs testing to make sure it matches the sprite uses. It should though.
nemo
parents:
5187
diff
changeset
|
684 |
begin |
d4c529624460
Try and avoid problem reported by users like RDChrisco with cards that only support 512 texture size, and disable backgrounds. Also, reorganise the rq flags sprite loading a bit. Needs testing to make sure it matches the sprite uses. It should though.
nemo
parents:
5187
diff
changeset
|
685 |
cReducedQuality := cReducedQuality or rqNoBackground; |
d4c529624460
Try and avoid problem reported by users like RDChrisco with cards that only support 512 texture size, and disable backgrounds. Also, reorganise the rq flags sprite loading a bit. Needs testing to make sure it matches the sprite uses. It should though.
nemo
parents:
5187
diff
changeset
|
686 |
AddFileLog('Texture size too small for backgrounds, disabling.'); |
d4c529624460
Try and avoid problem reported by users like RDChrisco with cards that only support 512 texture size, and disable backgrounds. Also, reorganise the rq flags sprite loading a bit. Needs testing to make sure it matches the sprite uses. It should though.
nemo
parents:
5187
diff
changeset
|
687 |
end; |
2568
e654cbfb23ba
Bunch of neat stuff by Smaxx. ATI check, translucent name tags to reduce terrain fail, disabling health crates on invulnerable hogs. Also tweaks to prior stuff.
nemo
parents:
2567
diff
changeset
|
688 |
|
5660
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
689 |
(* // find out which gpu we are using (for extension compatibility maybe?) |
3692 | 690 |
{$IFDEF IPHONEOS} |
5660
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
691 |
vendor:= vendor; // avoid hint |
3692 | 692 |
cGPUVendor:= gvApple; |
693 |
{$ELSE} |
|
5660
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
694 |
vendor:= LowerCase(shortstring(pchar(glGetString(GL_VENDOR)))); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
695 |
if StrPos(Str2PChar(vendor), Str2PChar('nvidia')) <> nil then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
696 |
cGPUVendor:= gvNVIDIA |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
697 |
else if StrPos(Str2PChar(vendor), Str2PChar('intel')) <> nil then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
698 |
cGPUVendor:= gvATI |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
699 |
else if StrPos(Str2PChar(vendor), Str2PChar('ati')) <> nil then |
5660
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
700 |
cGPUVendor:= gvIntel |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
701 |
else |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
702 |
AddFileLog('OpenGL Warning - unknown hardware vendor; please report'); |
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
703 |
{$ENDIF} |
2647 | 704 |
//SupportNPOTT:= glLoadExtension('GL_ARB_texture_non_power_of_two'); |
5660
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
705 |
*) |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
706 |
|
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
707 |
// everyone love debugging |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
708 |
AddFileLog('OpenGL-- Renderer: ' + shortstring(pchar(glGetString(GL_RENDERER)))); |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
709 |
AddFileLog(' |----- Vendor: ' + shortstring(pchar(glGetString(GL_VENDOR)))); |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
710 |
AddFileLog(' |----- Version: ' + shortstring(pchar(glGetString(GL_VERSION)))); |
6885 | 711 |
AddFileLog(' |----- Texture Size: ' + inttostr(MaxTextureSize)); |
712 |
AddFileLog(' \----- Extensions: ' + shortstring(pchar(glGetString(GL_EXTENSIONS)))); |
|
713 |
//TODO: don't have the Extensions line trimmed but slipt it into multiple lines |
|
5660
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
714 |
|
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
715 |
{$IFNDEF S3D_DISABLED} |
3696 | 716 |
if (cStereoMode = smHorizontal) or (cStereoMode = smVertical) or (cStereoMode = smAFR) then |
3692 | 717 |
begin |
718 |
// prepare left and right frame buffers and associated textures |
|
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
719 |
if glLoadExtension('GL_EXT_framebuffer_object') then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
720 |
begin |
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
721 |
// left |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
722 |
glGenFramebuffersEXT(1, @framel); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
723 |
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, framel); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
724 |
glGenRenderbuffersEXT(1, @depthl); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
725 |
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, depthl); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
726 |
glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, cScreenWidth, cScreenHeight); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
727 |
glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, depthl); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
728 |
glGenTextures(1, @texl); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
729 |
glBindTexture(GL_TEXTURE_2D, texl); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
730 |
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, cScreenWidth, cScreenHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, nil); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
731 |
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
732 |
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
733 |
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, texl, 0); |
3692 | 734 |
|
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
735 |
// right |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
736 |
glGenFramebuffersEXT(1, @framer); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
737 |
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, framer); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
738 |
glGenRenderbuffersEXT(1, @depthr); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
739 |
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, depthr); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
740 |
glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, cScreenWidth, cScreenHeight); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
741 |
glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, depthr); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
742 |
glGenTextures(1, @texr); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
743 |
glBindTexture(GL_TEXTURE_2D, texr); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
744 |
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, cScreenWidth, cScreenHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, nil); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
745 |
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
746 |
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
747 |
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, texr, 0); |
3692 | 748 |
|
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
749 |
// reset |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
750 |
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0) |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
751 |
end |
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
752 |
else |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
753 |
cStereoMode:= smNone; |
3692 | 754 |
end; |
2735 | 755 |
{$ENDIF} |
756 |
||
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
757 |
// set view port to whole window |
6614 | 758 |
glViewport(0, 0, cScreenWidth, cScreenHeight); |
2428 | 759 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
760 |
glMatrixMode(GL_MODELVIEW); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
761 |
// prepare default translation/scaling |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
762 |
glLoadIdentity(); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
763 |
glScalef(2.0 / cScreenWidth, -2.0 / cScreenHeight, 1.0); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
764 |
glTranslatef(0, -cScreenHeight / 2, 0); |
2428 | 765 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
766 |
// enable alpha blending |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
767 |
glEnable(GL_BLEND); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
768 |
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); |
5045
f215eb5d4b75
this supposedly makes hwengine work with sdl 1.3 past rev 5296
koda
parents:
5043
diff
changeset
|
769 |
// disable/lower perspective correction (will not need it anyway) |
3376 | 770 |
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST); |
771 |
// disable dithering |
|
772 |
glDisable(GL_DITHER); |
|
3641 | 773 |
// enable common states by default as they save a lot |
3376 | 774 |
glEnable(GL_TEXTURE_2D); |
3697 | 775 |
glEnableClientState(GL_VERTEX_ARRAY); |
776 |
glEnableClientState(GL_TEXTURE_COORD_ARRAY); |
|
4 | 777 |
end; |
778 |
||
2161
0c8634241fa4
Some work on zooming. Hedgewars are now unplayable.
unc0rr
parents:
2154
diff
changeset
|
779 |
procedure SetScale(f: GLfloat); |
0c8634241fa4
Some work on zooming. Hedgewars are now unplayable.
unc0rr
parents:
2154
diff
changeset
|
780 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
781 |
// leave immediately if scale factor did not change |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
782 |
if f = cScaleFactor then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
783 |
exit; |
2161
0c8634241fa4
Some work on zooming. Hedgewars are now unplayable.
unc0rr
parents:
2154
diff
changeset
|
784 |
|
3523 | 785 |
if f = cDefaultZoomLevel then |
786 |
glPopMatrix // "return" to default scaling |
|
787 |
else // other scaling |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
788 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
789 |
glPushMatrix; // save default scaling |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
790 |
glLoadIdentity; |
3922
44804043b691
iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents:
3906
diff
changeset
|
791 |
glScalef(f / cScreenWidth, -f / cScreenHeight, 1.0); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
792 |
glTranslatef(0, -cScreenHeight / 2, 0); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
793 |
end; |
2258 | 794 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
795 |
cScaleFactor:= f; |
2161
0c8634241fa4
Some work on zooming. Hedgewars are now unplayable.
unc0rr
parents:
2154
diff
changeset
|
796 |
end; |
0c8634241fa4
Some work on zooming. Hedgewars are now unplayable.
unc0rr
parents:
2154
diff
changeset
|
797 |
|
510 | 798 |
//////////////////////////////////////////////////////////////////////////////// |
799 |
procedure AddProgress; |
|
800 |
var r: TSDL_Rect; |
|
766 | 801 |
texsurf: PSDL_Surface; |
510 | 802 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
803 |
if Step = 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
804 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
805 |
WriteToConsole(msgLoading + 'progress sprite: '); |
5238
46ddaf14509d
Enable ~/.hedgewars/Data (or platform equivalent) to override/extend pretty much everything in system Data dir. Obviously desyncing can occur, so this is at user's own risk. Should simplify map etc install. Needs testing.
nemo
parents:
5215
diff
changeset
|
806 |
texsurf:= LoadImage(UserPathz[ptGraphics] + '/Progress', ifTransparent); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
807 |
if texsurf = nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
808 |
texsurf:= LoadImage(Pathz[ptGraphics] + '/Progress', ifCritical or ifTransparent); |
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2705
diff
changeset
|
809 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
810 |
ProgrTex:= Surface2Tex(texsurf, false); |
3697 | 811 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
812 |
squaresize:= texsurf^.w shr 1; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
813 |
numsquares:= texsurf^.h div squaresize; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
814 |
SDL_FreeSurface(texsurf); |
3928
2560731c860d
move all mobile-related functions in their own module, provides a structure for future mobile ports
koda
parents:
3922
diff
changeset
|
815 |
|
5174
f5294509783e
initial refactoring of ObjcExports and OverlayViewController
koda
parents:
5167
diff
changeset
|
816 |
uMobile.GameLoading(); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
817 |
end; |
1045 | 818 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
819 |
TryDo(ProgrTex <> nil, 'Error - Progress Texure is nil!', true); |
2284 | 820 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
821 |
glClear(GL_COLOR_BUFFER_BIT); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
822 |
if Step < numsquares then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
823 |
r.x:= 0 |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
824 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
825 |
r.x:= squaresize; |
3697 | 826 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
827 |
r.y:= (Step mod numsquares) * squaresize; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
828 |
r.w:= squaresize; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
829 |
r.h:= squaresize; |
3697 | 830 |
|
6999 | 831 |
DrawTextureFromRect( -squaresize div 2, (cScreenHeight - squaresize) shr 1, @r, ProgrTex); |
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2705
diff
changeset
|
832 |
|
7049 | 833 |
SwapBuffers; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
834 |
inc(Step); |
510 | 835 |
end; |
836 |
||
837 |
procedure FinishProgress; |
|
838 |
begin |
|
6394
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6382
diff
changeset
|
839 |
uMobile.GameLoaded(); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
840 |
WriteLnToConsole('Freeing progress surface... '); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
841 |
FreeTexture(ProgrTex); |
6394
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6382
diff
changeset
|
842 |
ProgrTex:= nil; |
5714 | 843 |
Step:= 0 |
510 | 844 |
end; |
845 |
||
2905 | 846 |
function RenderHelpWindow(caption, subcaption, description, extra: ansistring; extracolor: LongInt; iconsurf: PSDL_Surface; iconrect: PSDL_Rect): PTexture; |
2747 | 847 |
var tmpsurf: PSDL_SURFACE; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
848 |
w, h, i, j: LongInt; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
849 |
font: THWFont; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
850 |
r, r2: TSDL_Rect; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
851 |
wa, ha: LongInt; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
852 |
tmpline, tmpline2, tmpdesc: ansistring; |
2747 | 853 |
begin |
2843 | 854 |
// make sure there is a caption as well as a sub caption - description is optional |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
855 |
if caption = '' then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
856 |
caption:= '???'; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
857 |
if subcaption = '' then |
7134 | 858 |
subcaption:= _S' '; |
2843 | 859 |
|
2841 | 860 |
font:= CheckCJKFont(caption,fnt16); |
861 |
font:= CheckCJKFont(subcaption,font); |
|
862 |
font:= CheckCJKFont(description,font); |
|
863 |
font:= CheckCJKFont(extra,font); |
|
2747 | 864 |
|
865 |
w:= 0; |
|
866 |
h:= 0; |
|
6982 | 867 |
wa:= cFontBorder * 2 + 4; |
868 |
ha:= cFontBorder * 2; |
|
2747 | 869 |
|
3407 | 870 |
i:= 0; j:= 0; // avoid compiler hints |
871 |
||
2747 | 872 |
// TODO: Recheck height/position calculation |
873 |
||
874 |
// get caption's dimensions |
|
6286
835392304f81
and while we are giving SDLh.pas all this love, let's fix the signature of one SDL_ttf calls
koda
parents:
6089
diff
changeset
|
875 |
TTF_SizeUTF8(Fontz[font].Handle, Str2PChar(caption), @i, @j); |
2747 | 876 |
// width adds 36 px (image + space) |
877 |
w:= i + 36 + wa; |
|
878 |
h:= j + ha; |
|
879 |
||
880 |
// get sub caption's dimensions |
|
6286
835392304f81
and while we are giving SDLh.pas all this love, let's fix the signature of one SDL_ttf calls
koda
parents:
6089
diff
changeset
|
881 |
TTF_SizeUTF8(Fontz[font].Handle, Str2PChar(subcaption), @i, @j); |
2747 | 882 |
// width adds 36 px (image + space) |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
883 |
if w < (i + 36 + wa) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
884 |
w:= i + 36 + wa; |
2747 | 885 |
inc(h, j + ha); |
886 |
||
887 |
// get description's dimensions |
|
888 |
tmpdesc:= description; |
|
889 |
while tmpdesc <> '' do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
890 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
891 |
tmpline:= tmpdesc; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
892 |
SplitByChar(tmpline, tmpdesc, '|'); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
893 |
if tmpline <> '' then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
894 |
begin |
6286
835392304f81
and while we are giving SDLh.pas all this love, let's fix the signature of one SDL_ttf calls
koda
parents:
6089
diff
changeset
|
895 |
TTF_SizeUTF8(Fontz[font].Handle, Str2PChar(tmpline), @i, @j); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
896 |
if w < (i + wa) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
897 |
w:= i + wa; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
898 |
inc(h, j + ha) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
899 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
900 |
end; |
2747 | 901 |
|
902 |
if extra <> '' then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
903 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
904 |
// get extra label's dimensions |
6286
835392304f81
and while we are giving SDLh.pas all this love, let's fix the signature of one SDL_ttf calls
koda
parents:
6089
diff
changeset
|
905 |
TTF_SizeUTF8(Fontz[font].Handle, Str2PChar(extra), @i, @j); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
906 |
if w < (i + wa) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
907 |
w:= i + wa; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
908 |
inc(h, j + ha); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
909 |
end; |
3697 | 910 |
|
2747 | 911 |
// add borders space |
912 |
inc(w, wa); |
|
913 |
inc(h, ha + 8); |
|
914 |
||
915 |
tmpsurf:= SDL_CreateRGBSurface(SDL_SWSURFACE, w, h, 32, RMask, GMask, BMask, AMask); |
|
916 |
TryDo(tmpsurf <> nil, 'RenderHelpWindow: fail to create surface', true); |
|
917 |
||
918 |
// render border and background |
|
919 |
r.x:= 0; |
|
920 |
r.y:= 0; |
|
921 |
r.w:= w; |
|
922 |
r.h:= h; |
|
923 |
DrawRoundRect(@r, cWhiteColor, cNearBlackColor, tmpsurf, true); |
|
924 |
||
925 |
// render caption |
|
6982 | 926 |
r:= WriteInRect(tmpsurf, 36 + cFontBorder + 2, ha, $ffffffff, font, caption); |
2747 | 927 |
// render sub caption |
6982 | 928 |
r:= WriteInRect(tmpsurf, 36 + cFontBorder + 2, r.y + r.h, $ffc7c7c7, font, subcaption); |
2747 | 929 |
|
930 |
// render all description lines |
|
931 |
tmpdesc:= description; |
|
932 |
while tmpdesc <> '' do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
933 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
934 |
tmpline:= tmpdesc; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
935 |
SplitByChar(tmpline, tmpdesc, '|'); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
936 |
r2:= r; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
937 |
if tmpline <> '' then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
938 |
begin |
6982 | 939 |
r:= WriteInRect(tmpsurf, cFontBorder + 2, r.y + r.h, $ff707070, font, tmpline); |
3697 | 940 |
|
5518 | 941 |
// render highlighted caption (if there is a ':') |
7134 | 942 |
tmpline2:= _S''; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
943 |
SplitByChar(tmpline, tmpline2, ':'); |
7134 | 944 |
if tmpline2 <> _S'' then |
6982 | 945 |
WriteInRect(tmpsurf, cFontBorder + 2, r2.y + r2.h, $ffc7c7c7, font, tmpline + ':'); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
946 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
947 |
end; |
2747 | 948 |
|
949 |
if extra <> '' then |
|
6982 | 950 |
r:= WriteInRect(tmpsurf, cFontBorder + 2, r.y + r.h, extracolor, font, extra); |
2747 | 951 |
|
6982 | 952 |
r.x:= cFontBorder + 6; |
953 |
r.y:= cFontBorder + 4; |
|
2747 | 954 |
r.w:= 32; |
955 |
r.h:= 32; |
|
956 |
SDL_FillRect(tmpsurf, @r, $ffffffff); |
|
957 |
SDL_UpperBlit(iconsurf, iconrect, tmpsurf, @r); |
|
3697 | 958 |
|
2747 | 959 |
RenderHelpWindow:= Surface2Tex(tmpsurf, true); |
960 |
SDL_FreeSurface(tmpsurf) |
|
961 |
end; |
|
962 |
||
963 |
procedure RenderWeaponTooltip(atype: TAmmoType); |
|
964 |
var r: TSDL_Rect; |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
965 |
i: LongInt; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
966 |
extra: ansistring; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
967 |
extracolor: LongInt; |
2747 | 968 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
969 |
// don't do anything if the window shouldn't be shown |
3634 | 970 |
if (cReducedQuality and rqTooltipsOff) <> 0 then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
971 |
begin |
3634 | 972 |
WeaponTooltipTex:= nil; |
973 |
exit |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
974 |
end; |
2747 | 975 |
|
976 |
// free old texture |
|
977 |
FreeWeaponTooltip; |
|
978 |
||
979 |
// image region |
|
980 |
i:= LongInt(atype) - 1; |
|
3853 | 981 |
r.x:= (i shr 4) * 32; |
982 |
r.y:= (i mod 16) * 32; |
|
2747 | 983 |
r.w:= 32; |
984 |
r.h:= 32; |
|
985 |
||
986 |
// default (no extra text) |
|
7134 | 987 |
extra:= _S''; |
2747 | 988 |
extracolor:= 0; |
989 |
||
990 |
if (CurrentTeam <> nil) and (Ammoz[atype].SkipTurns >= CurrentTeam^.Clan^.TurnNumber) then // weapon or utility is not yet available |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
991 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
992 |
extra:= trmsg[sidNotYetAvailable]; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
993 |
extracolor:= LongInt($ffc77070); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
994 |
end |
5518 | 995 |
else if (Ammoz[atype].Ammo.Propz and ammoprop_NoRoundEnd) <> 0 then // weapon or utility will not end your turn |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
996 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
997 |
extra:= trmsg[sidNoEndTurn]; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
998 |
extracolor:= LongInt($ff70c770); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
999 |
end |
3697 | 1000 |
else |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
1001 |
begin |
7134 | 1002 |
extra:= _S''; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
1003 |
extracolor:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
1004 |
end; |
2747 | 1005 |
|
1006 |
// render window and return the texture |
|
1007 |
WeaponTooltipTex:= RenderHelpWindow(trammo[Ammoz[atype].NameId], trammoc[Ammoz[atype].NameId], trammod[Ammoz[atype].NameId], extra, extracolor, SpritesData[sprAMAmmos].Surface, @r) |
|
2753 | 1008 |
end; |
2747 | 1009 |
|
1010 |
procedure ShowWeaponTooltip(x, y: LongInt); |
|
1011 |
begin |
|
1012 |
// draw the texture if it exists |
|
1013 |
if WeaponTooltipTex <> nil then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
1014 |
DrawTexture(x, y, WeaponTooltipTex) |
2747 | 1015 |
end; |
1016 |
||
1017 |
procedure FreeWeaponTooltip; |
|
1018 |
begin |
|
5045
f215eb5d4b75
this supposedly makes hwengine work with sdl 1.3 past rev 5296
koda
parents:
5043
diff
changeset
|
1019 |
// free the existing texture (if there is any) |
2747 | 1020 |
FreeTexture(WeaponTooltipTex); |
1021 |
WeaponTooltipTex:= nil |
|
1022 |
end; |
|
1023 |
||
4398
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4390
diff
changeset
|
1024 |
procedure chFullScr(var s: shortstring); |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4390
diff
changeset
|
1025 |
var flags: Longword = 0; |
6072 | 1026 |
reinit: boolean = false; |
1027 |
{$IFNDEF DARWIN}ico: PSDL_Surface;{$ENDIF} |
|
5052 | 1028 |
{$IFDEF SDL13}x, y: LongInt;{$ENDIF} |
4398
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4390
diff
changeset
|
1029 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
1030 |
if Length(s) = 0 then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
1031 |
cFullScreen:= (not cFullScreen) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
1032 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
1033 |
cFullScreen:= s = '1'; |
4398
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4390
diff
changeset
|
1034 |
|
5660
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
1035 |
AddFileLog('Preparing to change video parameters...'); |
6611 | 1036 |
{$IFDEF SDL13} |
6598
fa518383563b
added pause/resume functionality for android, android need the opengl context to be recreated along with textures and whatnot
Xeli
parents:
6580
diff
changeset
|
1037 |
if SDLwindow = nil then |
6611 | 1038 |
{$ELSE} |
5660
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
1039 |
if SDLPrimSurface = nil then |
6611 | 1040 |
{$ENDIF} |
5660
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
1041 |
begin |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
1042 |
// set window title |
7151 | 1043 |
{$IFNDEF SDL13}SDL_WM_SetCaption(_P'Hedgewars', nil);{$ENDIF} |
5660
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
1044 |
WriteToConsole('Init SDL_image... '); |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
1045 |
SDLTry(IMG_Init(IMG_INIT_PNG) <> 0, true); |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
1046 |
WriteLnToConsole(msgOK); |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
1047 |
// load engine icon |
6598
fa518383563b
added pause/resume functionality for android, android need the opengl context to be recreated along with textures and whatnot
Xeli
parents:
6580
diff
changeset
|
1048 |
{$IFNDEF DARWIN} |
5660
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
1049 |
ico:= LoadImage(UserPathz[ptGraphics] + '/hwengine', ifIgnoreCaps); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
1050 |
if ico = nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
1051 |
ico:= LoadImage(Pathz[ptGraphics] + '/hwengine', ifIgnoreCaps); |
5660
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
1052 |
if ico <> nil then |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
1053 |
begin |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
1054 |
SDL_WM_SetIcon(ico, 0); |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
1055 |
SDL_FreeSurface(ico) |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
1056 |
end; |
6598
fa518383563b
added pause/resume functionality for android, android need the opengl context to be recreated along with textures and whatnot
Xeli
parents:
6580
diff
changeset
|
1057 |
{$ENDIF} |
5660
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
1058 |
end |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
1059 |
else |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
1060 |
begin |
6675
dab56311daa5
tipped by xeli, ammomenu texture needs to be redrawn on resize to update its position
koda
parents:
6674
diff
changeset
|
1061 |
AmmoMenuInvalidated:= true; |
6611 | 1062 |
{$IFDEF IPHONEOS} |
1063 |
// chFullScr is called when there is a rotation event and needs the SetScale and SetupOpenGL to set up the new resolution |
|
1064 |
// this 6 gl functions are the relevant ones and are hacked together here for optimisation |
|
1065 |
glMatrixMode(GL_MODELVIEW); |
|
1066 |
glPopMatrix; |
|
1067 |
glLoadIdentity(); |
|
1068 |
glScalef(2.0 / cScreenWidth, -2.0 / cScreenHeight, 1.0); |
|
1069 |
glTranslatef(0, -cScreenHeight / 2, 0); |
|
1070 |
glViewport(0, 0, cScreenWidth, cScreenHeight); |
|
1071 |
exit; |
|
1072 |
{$ELSE} |
|
5847 | 1073 |
SetScale(cDefaultZoomLevel); |
6674 | 1074 |
{$IFDEF USE_CONTEXT_RESTORE} |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
1075 |
reinit:= true; |
6394
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6382
diff
changeset
|
1076 |
StoreRelease(true); |
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6382
diff
changeset
|
1077 |
ResetLand; |
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6382
diff
changeset
|
1078 |
ResetWorldTex; |
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6382
diff
changeset
|
1079 |
//uTextures.freeModule; //DEBUG ONLY |
6598
fa518383563b
added pause/resume functionality for android, android need the opengl context to be recreated along with textures and whatnot
Xeli
parents:
6580
diff
changeset
|
1080 |
{$ENDIF} |
4398
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4390
diff
changeset
|
1081 |
AddFileLog('Freeing old primary surface...'); |
7085 | 1082 |
{$IFNDEF SDL13} |
4398
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4390
diff
changeset
|
1083 |
SDL_FreeSurface(SDLPrimSurface); |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4390
diff
changeset
|
1084 |
SDLPrimSurface:= nil; |
7085 | 1085 |
{$ENDIF} |
6611 | 1086 |
{$ENDIF} |
5660
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
1087 |
end; |
4398
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4390
diff
changeset
|
1088 |
|
5660
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
1089 |
// these attributes must be set up before creating the sdl window |
5883
a6d764786905
Disable GL SetAttributes for Windows due to many testers with problems. This restores .15 behaviour.
nemo
parents:
5847
diff
changeset
|
1090 |
{$IFNDEF WIN32} |
a6d764786905
Disable GL SetAttributes for Windows due to many testers with problems. This restores .15 behaviour.
nemo
parents:
5847
diff
changeset
|
1091 |
(* On a large number of testers machines, SDL default to software rendering when opengl attributes were set. |
a6d764786905
Disable GL SetAttributes for Windows due to many testers with problems. This restores .15 behaviour.
nemo
parents:
5847
diff
changeset
|
1092 |
These attributes were "set" after CreateWindow in .15, which probably did nothing. |
a6d764786905
Disable GL SetAttributes for Windows due to many testers with problems. This restores .15 behaviour.
nemo
parents:
5847
diff
changeset
|
1093 |
IMO we should rely on the gl_config defaults from SDL, and use SDL_GL_GetAttribute to possibly post warnings if any |
a6d764786905
Disable GL SetAttributes for Windows due to many testers with problems. This restores .15 behaviour.
nemo
parents:
5847
diff
changeset
|
1094 |
bad values are set. *) |
5660
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
1095 |
SetupOpenGLAttributes(); |
5883
a6d764786905
Disable GL SetAttributes for Windows due to many testers with problems. This restores .15 behaviour.
nemo
parents:
5847
diff
changeset
|
1096 |
{$ENDIF} |
4398
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4390
diff
changeset
|
1097 |
{$IFDEF SDL13} |
5187 | 1098 |
// these values in x and y make the window appear in the center |
1099 |
x:= SDL_WINDOWPOS_CENTERED_MASK; |
|
1100 |
y:= SDL_WINDOWPOS_CENTERED_MASK; |
|
6624
e049b5bb0ad1
BUUUUURN OBJC AMMOMENU BUUUURNhg diff! (on a separate note, this reduces the codesize by ~37k)
koda
parents:
6614
diff
changeset
|
1101 |
// SDL_WINDOW_RESIZABLE makes the window respond to rotation events on mobile devices |
e049b5bb0ad1
BUUUUURN OBJC AMMOMENU BUUUURNhg diff! (on a separate note, this reduces the codesize by ~37k)
koda
parents:
6614
diff
changeset
|
1102 |
flags:= SDL_WINDOW_OPENGL or SDL_WINDOW_SHOWN or SDL_WINDOW_RESIZABLE; |
5187 | 1103 |
|
6598
fa518383563b
added pause/resume functionality for android, android need the opengl context to be recreated along with textures and whatnot
Xeli
parents:
6580
diff
changeset
|
1104 |
{$IFDEF MOBILE} |
6611 | 1105 |
if isPhone() then |
1106 |
SDL_SetHint('SDL_IOS_ORIENTATIONS','LandscapeLeft LandscapeRight'); |
|
6624
e049b5bb0ad1
BUUUUURN OBJC AMMOMENU BUUUURNhg diff! (on a separate note, this reduces the codesize by ~37k)
koda
parents:
6614
diff
changeset
|
1107 |
// no need for borders on mobile devices |
e049b5bb0ad1
BUUUUURN OBJC AMMOMENU BUUUURNhg diff! (on a separate note, this reduces the codesize by ~37k)
koda
parents:
6614
diff
changeset
|
1108 |
flags:= flags or SDL_WINDOW_BORDERLESS; |
6598
fa518383563b
added pause/resume functionality for android, android need the opengl context to be recreated along with textures and whatnot
Xeli
parents:
6580
diff
changeset
|
1109 |
{$ENDIF} |
5187 | 1110 |
|
6021 | 1111 |
if SDLwindow = nil then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
1112 |
if cFullScreen then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
1113 |
SDLwindow:= SDL_CreateWindow('Hedgewars', x, y, cOrigScreenWidth, cOrigScreenHeight, flags or SDL_WINDOW_FULLSCREEN) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
1114 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
1115 |
SDLwindow:= SDL_CreateWindow('Hedgewars', x, y, cScreenWidth, cScreenHeight, flags); |
5187 | 1116 |
SDLTry(SDLwindow <> nil, true); |
4398
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4390
diff
changeset
|
1117 |
{$ELSE} |
5670
e01f0b6f1969
enable window resizing (tested only on linux) - fix issue 103
koda
parents:
5662
diff
changeset
|
1118 |
flags:= SDL_OPENGL or SDL_RESIZABLE; |
5660
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
1119 |
if cFullScreen then |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
1120 |
flags:= flags or SDL_FULLSCREEN; |
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
1121 |
|
5130
3602ede67ec5
Add a parameter for game simulation with no gui/sound enabled, just to get statistics
unc0rr
parents:
5109
diff
changeset
|
1122 |
if not cOnlyStats then |
3602ede67ec5
Add a parameter for game simulation with no gui/sound enabled, just to get statistics
unc0rr
parents:
5109
diff
changeset
|
1123 |
begin |
6598
fa518383563b
added pause/resume functionality for android, android need the opengl context to be recreated along with textures and whatnot
Xeli
parents:
6580
diff
changeset
|
1124 |
{$IFDEF WIN32} |
5565 | 1125 |
s:= SDL_getenv('SDL_VIDEO_CENTERED'); |
1126 |
SDL_putenv('SDL_VIDEO_CENTERED=1'); |
|
6598
fa518383563b
added pause/resume functionality for android, android need the opengl context to be recreated along with textures and whatnot
Xeli
parents:
6580
diff
changeset
|
1127 |
{$ENDIF} |
5130
3602ede67ec5
Add a parameter for game simulation with no gui/sound enabled, just to get statistics
unc0rr
parents:
5109
diff
changeset
|
1128 |
SDLPrimSurface:= SDL_SetVideoMode(cScreenWidth, cScreenHeight, cBits, flags); |
3602ede67ec5
Add a parameter for game simulation with no gui/sound enabled, just to get statistics
unc0rr
parents:
5109
diff
changeset
|
1129 |
SDLTry(SDLPrimSurface <> nil, true); |
6598
fa518383563b
added pause/resume functionality for android, android need the opengl context to be recreated along with textures and whatnot
Xeli
parents:
6580
diff
changeset
|
1130 |
{$IFDEF WIN32}SDL_putenv(str2pchar('SDL_VIDEO_CENTERED=' + s));{$ENDIF} |
5130
3602ede67ec5
Add a parameter for game simulation with no gui/sound enabled, just to get statistics
unc0rr
parents:
5109
diff
changeset
|
1131 |
end; |
4398
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4390
diff
changeset
|
1132 |
{$ENDIF} |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4390
diff
changeset
|
1133 |
|
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4390
diff
changeset
|
1134 |
SetupOpenGL(); |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
1135 |
if reinit then |
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
1136 |
begin |
6394
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6382
diff
changeset
|
1137 |
// clean the window from any previous content |
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6382
diff
changeset
|
1138 |
glClear(GL_COLOR_BUFFER_BIT); |
5704 | 1139 |
if SuddenDeathDmg then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
1140 |
glClearColor(SDSkyColor.r * (SDTint/255) / 255, SDSkyColor.g * (SDTint/255) / 255, SDSkyColor.b * (SDTint/255) / 255, 0.99) |
5704 | 1141 |
else if ((cReducedQuality and rqNoBackground) = 0) then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
1142 |
glClearColor(SkyColor.r / 255, SkyColor.g / 255, SkyColor.b / 255, 0.99) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
1143 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6515
diff
changeset
|
1144 |
glClearColor(RQSkyColor.r / 255, RQSkyColor.g / 255, RQSkyColor.b / 255, 0.99); |
5704 | 1145 |
|
6394
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6382
diff
changeset
|
1146 |
// reload everything we had before |
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6382
diff
changeset
|
1147 |
ReloadCaptions(false); |
6382
0e76c5cd4250
move the order of reloading texture to workaround buggy drivers
koda
parents:
6380
diff
changeset
|
1148 |
ReloadLines; |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
1149 |
StoreLoad(true); |
6394
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6382
diff
changeset
|
1150 |
// redraw all land |
7170
84ac6c6d2d8e
Only create textures for non-empty LandPixel chunks. This should save a fair amount of memory, especially on smaller maps, and eliminate a number of draws
nemo
parents:
7151
diff
changeset
|
1151 |
UpdateLandTexture(0, LAND_WIDTH, 0, LAND_HEIGHT, false); |
5608
1e5d925dde9d
Attempt to recreate all textures if using Windows or OSX which lose textures on context recreation.
nemo
parents:
5565
diff
changeset
|
1152 |
end; |
4398
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4390
diff
changeset
|
1153 |
end; |
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4390
diff
changeset
|
1154 |
|
3038 | 1155 |
procedure initModule; |
4925 | 1156 |
var ai: TAmmoType; |
1157 |
i: LongInt; |
|
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2698
diff
changeset
|
1158 |
begin |
6898 | 1159 |
RegisterVariable('fullscr', @chFullScr, true); |
4398
36d7e4b6ca81
Move some command handlers out of uCommands into more appropriate places, thus removing some dependencies. Ideally uCommands shouldn't depend on anything (except for uTypes and uConsts probably)
unc0rr
parents:
4390
diff
changeset
|
1160 |
|
7121
ce5e70fe4eb3
http://www.demoties.com/wp-content/uploads/2011/03/mar-01-6.jpg
nemo
parents:
7102
diff
changeset
|
1161 |
cScaleFactor:= 2.0; |
3394
47b51e22e670
Henek's patch - adds a column to ammoMenu and removes the F* column in iphone version
koda
parents:
3390
diff
changeset
|
1162 |
Step:= 0; |
47b51e22e670
Henek's patch - adds a column to ammoMenu and removes the F* column in iphone version
koda
parents:
3390
diff
changeset
|
1163 |
ProgrTex:= nil; |
5660
1647244b3ffe
set gl attributes before creating the window, or some of them might be ignored (like vsync on osx); also don't skip some reloads when switching to fullscreen and back; finally did a little code re-organisation
koda
parents:
5654
diff
changeset
|
1164 |
SupportNPOTT:= false; |
4925 | 1165 |
|
1166 |
// init all ammo name texture pointers |
|
1167 |
for ai:= Low(TAmmoType) to High(TAmmoType) do |
|
1168 |
begin |
|
1169 |
Ammoz[ai].NameTex := nil; |
|
1170 |
end; |
|
1171 |
// init all count texture pointers |
|
1172 |
for i:= Low(CountTexz) to High(CountTexz) do |
|
1173 |
CountTexz[i] := nil; |
|
7027 | 1174 |
{$IFDEF SDL13} |
7049 | 1175 |
SDLwindow:= nil; |
1176 |
SDLGLcontext:= nil; |
|
1177 |
{$ELSE} |
|
1178 |
SDLPrimSurface:= nil; |
|
7027 | 1179 |
{$ENDIF} |
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2698
diff
changeset
|
1180 |
end; |
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2698
diff
changeset
|
1181 |
|
3038 | 1182 |
procedure freeModule; |
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2705
diff
changeset
|
1183 |
begin |
7026
8d1724e1337e
split OnDestroy across the appropriate modules (this doen't cause leaks on mobile, right?)
koda
parents:
7013
diff
changeset
|
1184 |
StoreRelease(false); |
8d1724e1337e
split OnDestroy across the appropriate modules (this doen't cause leaks on mobile, right?)
koda
parents:
7013
diff
changeset
|
1185 |
TTF_Quit(); |
8d1724e1337e
split OnDestroy across the appropriate modules (this doen't cause leaks on mobile, right?)
koda
parents:
7013
diff
changeset
|
1186 |
{$IFDEF SDL13} |
8d1724e1337e
split OnDestroy across the appropriate modules (this doen't cause leaks on mobile, right?)
koda
parents:
7013
diff
changeset
|
1187 |
SDL_GL_DeleteContext(SDLGLcontext); |
8d1724e1337e
split OnDestroy across the appropriate modules (this doen't cause leaks on mobile, right?)
koda
parents:
7013
diff
changeset
|
1188 |
SDL_DestroyWindow(SDLwindow); |
8d1724e1337e
split OnDestroy across the appropriate modules (this doen't cause leaks on mobile, right?)
koda
parents:
7013
diff
changeset
|
1189 |
{$ENDIF} |
8d1724e1337e
split OnDestroy across the appropriate modules (this doen't cause leaks on mobile, right?)
koda
parents:
7013
diff
changeset
|
1190 |
SDL_Quit(); |
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2705
diff
changeset
|
1191 |
end; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2705
diff
changeset
|
1192 |
|
7049 | 1193 |
procedure WarpMouse(x, y: Word); inline; |
1194 |
begin |
|
1195 |
{$IFDEF SDL13} |
|
1196 |
SDL_WarpMouseInWindow(SDLwindow, x, y); |
|
1197 |
{$ELSE} |
|
1198 |
x:= x; y:= y; // avoid hints |
|
1199 |
{$ENDIF} |
|
1200 |
end; |
|
1201 |
||
1202 |
procedure SwapBuffers; inline; |
|
1203 |
begin |
|
1204 |
{$IFDEF SDL13} |
|
1205 |
SDL_GL_SwapWindow(SDLwindow); |
|
1206 |
{$ELSE} |
|
1207 |
SDL_GL_SwapBuffers(); |
|
1208 |
{$ENDIF} |
|
1209 |
end; |
|
1210 |
||
4 | 1211 |
end. |