author | unc0rr |
Sat, 23 Jul 2011 09:30:51 +0400 | |
changeset 5426 | 109e9b5761c2 |
parent 5285 | af4dc03dd60d |
child 5341 | 479b4108789a |
child 5505 | a55aab592950 |
permissions | -rw-r--r-- |
4 | 1 |
(* |
1066 | 2 |
* Hedgewars, a free turn based strategy game |
4976 | 3 |
* Copyright (c) 2004-2011 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 |
|
4368 | 24 |
uses sysutils, uConsts, SDLh, GLunit, uTypes; |
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 |
|
4 | 29 |
procedure StoreLoad; |
30 |
procedure StoreRelease; |
|
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 |
|
44 |
implementation |
|
4404 | 45 |
uses uMisc, uConsole, uMobile, uVariables, uUtils, uTextures, uRender, uRenderUtils, uCommands, uDebug; |
4 | 46 |
|
2735 | 47 |
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
|
48 |
|
4385 | 49 |
var MaxTextureSize: LongInt; |
2735 | 50 |
cGPUVendor: TGPUVendor; |
4 | 51 |
|
2905 | 52 |
function WriteInRect(Surface: PSDL_Surface; X, Y: LongInt; Color: LongWord; Font: THWFont; s: ansistring): TSDL_Rect; |
2747 | 53 |
var w, h: LongInt; |
54 |
tmpsurf: PSDL_Surface; |
|
55 |
clr: TSDL_Color; |
|
56 |
finalRect: TSDL_Rect; |
|
57 |
begin |
|
3407 | 58 |
w:= 0; h:= 0; // avoid compiler hints |
2747 | 59 |
TTF_SizeUTF8(Fontz[Font].Handle, Str2PChar(s), w, h); |
60 |
finalRect.x:= X + FontBorder + 2; |
|
61 |
finalRect.y:= Y + FontBorder; |
|
62 |
finalRect.w:= w + FontBorder * 2 + 4; |
|
63 |
finalRect.h:= h + FontBorder * 2; |
|
64 |
clr.r:= Color shr 16; |
|
65 |
clr.g:= (Color shr 8) and $FF; |
|
66 |
clr.b:= Color and $FF; |
|
67 |
tmpsurf:= TTF_RenderUTF8_Blended(Fontz[Font].Handle, Str2PChar(s), clr); |
|
68 |
tmpsurf:= doSurfaceConversion(tmpsurf); |
|
69 |
SDLTry(tmpsurf <> nil, true); |
|
70 |
SDL_UpperBlit(tmpsurf, nil, Surface, @finalRect); |
|
71 |
SDL_FreeSurface(tmpsurf); |
|
72 |
finalRect.x:= X; |
|
73 |
finalRect.y:= Y; |
|
74 |
finalRect.w:= w + FontBorder * 2 + 4; |
|
75 |
finalRect.h:= h + FontBorder * 2; |
|
76 |
WriteInRect:= finalRect |
|
77 |
end; |
|
78 |
||
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
|
79 |
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
|
80 |
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
|
81 |
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
|
82 |
Color, i: Longword; |
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
|
83 |
s : shortstring; |
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
|
84 |
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
|
85 |
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
|
86 |
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
|
87 |
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
|
88 |
|
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 |
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
|
90 |
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
|
91 |
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
|
92 |
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
|
93 |
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
|
94 |
|
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
|
95 |
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
|
96 |
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
|
97 |
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
|
98 |
|
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 |
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
|
100 |
|
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 |
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
|
102 |
|
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 |
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
|
104 |
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
|
105 |
|
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 |
// 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
|
107 |
for i:= 0 to texsurf^.w * texsurf^.h - 1 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
|
108 |
if PLongwordArray(texsurf^.pixels)^[i] = AMask then PLongwordArray(texsurf^.pixels)^[i]:= (RMask or GMask or BMask) and 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
|
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 |
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
|
111 |
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
|
112 |
|
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 |
if CrosshairTex <> nil then FreeTexture(CrosshairTex); |
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 |
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
|
115 |
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
|
116 |
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
|
117 |
|
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
|
118 |
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
|
119 |
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
|
120 |
|
4 | 121 |
procedure StoreLoad; |
2905 | 122 |
var s: shortstring; |
4 | 123 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
124 |
procedure WriteNames(Font: THWFont); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
125 |
var t: LongInt; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
126 |
i: LongInt; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
127 |
r, rr: TSDL_Rect; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
128 |
drY: LongInt; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
129 |
texsurf, flagsurf, iconsurf: PSDL_Surface; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
130 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
131 |
r.x:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
132 |
r.y:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
133 |
drY:= - 4; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
134 |
for t:= 0 to Pred(TeamsCount) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
135 |
with TeamsArray[t]^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
136 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
137 |
NameTagTex:= RenderStringTex(TeamName, Clan^.Color, Font); |
690 | 138 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
139 |
r.w:= cTeamHealthWidth + 5; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
140 |
r.h:= NameTagTex^.h; |
690 | 141 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
142 |
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
|
143 |
TryDo(texsurf <> nil, errmsgCreateSurface, true); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
144 |
TryDo(SDL_SetColorKey(texsurf, SDL_SRCCOLORKEY, 0) = 0, errmsgTransparentSet, true); |
690 | 145 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
146 |
DrawRoundRect(@r, cWhiteColor, cNearBlackColorChannels.value, texsurf, true); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
147 |
rr:= r; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
148 |
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
|
149 |
DrawRoundRect(@rr, Clan^.Color, Clan^.Color, texsurf, false); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
150 |
HealthTex:= Surface2Tex(texsurf, false); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
151 |
SDL_FreeSurface(texsurf); |
690 | 152 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
153 |
r.x:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
154 |
r.y:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
155 |
r.w:= 32; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
156 |
r.h:= 32; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
157 |
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
|
158 |
TryDo(texsurf <> nil, errmsgCreateSurface, true); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
159 |
TryDo(SDL_SetColorKey(texsurf, SDL_SRCCOLORKEY, 0) = 0, errmsgTransparentSet, true); |
2747 | 160 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
161 |
r.w:= 26; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
162 |
r.h:= 19; |
2747 | 163 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
164 |
DrawRoundRect(@r, cWhiteColor, cNearBlackColor, texsurf, true); |
3697 | 165 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
166 |
// overwrite flag for cpu teams and keep players from using it |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
167 |
if (Hedgehogs[0].Gear <> nil) and (Hedgehogs[0].BotLevel > 0) then |
4517
0618b31023dc
added team flag to AddTeam and made AI team allowed to have custom flags. added GetGearVelocity and SetGearVelocity and removed CopyPV2. changed knockball to use use these functions instead.
Henek
parents:
4404
diff
changeset
|
168 |
if Flag = 'hedgewars' then Flag:= 'cpu' |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
169 |
else if Flag = 'cpu' then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
170 |
Flag:= 'hedgewars'; |
3697 | 171 |
|
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
|
172 |
flagsurf:= LoadImage(UserPathz[ptFlags] + '/' + Flag, ifNone); |
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
|
173 |
if flagsurf = nil then flagsurf:= LoadImage(Pathz[ptFlags] + '/' + Flag, ifNone); |
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
|
174 |
if flagsurf = nil then flagsurf:= LoadImage(UserPathz[ptFlags] + '/hedgewars', ifNone); |
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
|
175 |
if flagsurf = nil then flagsurf:= LoadImage(Pathz[ptFlags] + '/hedgewars', ifNone); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
176 |
TryDo(flagsurf <> nil, 'Failed to load flag "' + Flag + '" as well as the default flag', true); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
177 |
copyToXY(flagsurf, texsurf, 2, 2); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
178 |
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
|
179 |
flagsurf:= nil; |
3697 | 180 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
181 |
// restore black border pixels inside the flag |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
182 |
PLongwordArray(texsurf^.pixels)^[32 * 2 + 2]:= cNearBlackColor; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
183 |
PLongwordArray(texsurf^.pixels)^[32 * 2 + 23]:= cNearBlackColor; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
184 |
PLongwordArray(texsurf^.pixels)^[32 * 16 + 2]:= cNearBlackColor; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
185 |
PLongwordArray(texsurf^.pixels)^[32 * 16 + 23]:= cNearBlackColor; |
2747 | 186 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
187 |
FlagTex:= Surface2Tex(texsurf, false); |
3041 | 188 |
SDL_FreeSurface(texsurf); |
4874 | 189 |
texsurf:= nil; |
3041 | 190 |
|
3773 | 191 |
AIKillsTex := RenderStringTex(inttostr(stats.AIKills), Clan^.Color, fnt16); |
192 |
||
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
193 |
dec(drY, r.h + 2); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
194 |
DrawHealthY:= drY; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
195 |
for i:= 0 to 7 do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
196 |
with Hedgehogs[i] do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
197 |
if Gear <> nil then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
198 |
begin |
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
|
199 |
NameTagTex:= RenderStringTex(Name, Clan^.Color, fnt16); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
200 |
if Hat <> 'NoHat' then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
201 |
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
|
202 |
if (Length(Hat) > 39) and (Copy(Hat,1,8) = 'Reserved') and (Copy(Hat,9,32) = PlayerHash) then |
4874 | 203 |
LoadHedgehogHat(Gear, 'Reserved/' + Copy(Hat,9,Length(s)-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
|
204 |
else |
4874 | 205 |
LoadHedgehogHat(Gear, Hat); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
206 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
207 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
208 |
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
|
209 |
MissionIcons:= LoadImage(UserPathz[ptGraphics] + '/missions', ifNone); |
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
|
210 |
if MissionIcons = nil then MissionIcons:= LoadImage(Pathz[ptGraphics] + '/missions', ifCritical); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
211 |
iconsurf:= SDL_CreateRGBSurface(SDL_SWSURFACE, 28, 28, 32, RMask, GMask, BMask, AMask); |
3862 | 212 |
if iconsurf <> nil then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
213 |
begin |
3862 | 214 |
r.x:= 0; |
215 |
r.y:= 0; |
|
216 |
r.w:= 28; |
|
217 |
r.h:= 28; |
|
218 |
DrawRoundRect(@r, cWhiteColor, cNearBlackColor, iconsurf, true); |
|
219 |
ropeIconTex:= Surface2Tex(iconsurf, false); |
|
220 |
SDL_FreeSurface(iconsurf); |
|
221 |
iconsurf:= nil; |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
222 |
end; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
223 |
end; |
4 | 224 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
225 |
procedure InitHealth; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
226 |
var i, t: LongInt; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
227 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
228 |
for t:= 0 to Pred(TeamsCount) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
229 |
if TeamsArray[t] <> nil then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
230 |
with TeamsArray[t]^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
231 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
232 |
for i:= 0 to cMaxHHIndex do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
233 |
if Hedgehogs[i].Gear <> nil then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
234 |
RenderHealth(Hedgehogs[i]); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
235 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
236 |
end; |
4 | 237 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
238 |
procedure LoadGraves; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
239 |
var t: LongInt; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
240 |
texsurf: PSDL_Surface; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
241 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
242 |
for t:= 0 to Pred(TeamsCount) do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
243 |
if TeamsArray[t] <> nil then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
244 |
with TeamsArray[t]^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
245 |
begin |
3689 | 246 |
if GraveName = '' then 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
|
247 |
texsurf:= LoadImage(UserPathz[ptGraves] + '/' + GraveName, ifTransparent); |
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
|
248 |
if texsurf = nil then texsurf:= LoadImage(Pathz[ptGraves] + '/' + GraveName, ifTransparent); |
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
|
249 |
if texsurf = nil then texsurf:= LoadImage(UserPathz[ptGraves] + '/Statue', ifTransparent); |
3689 | 250 |
if texsurf = nil then texsurf:= LoadImage(Pathz[ptGraves] + '/Statue', ifCritical or ifTransparent); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
251 |
GraveTex:= Surface2Tex(texsurf, false); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
252 |
SDL_FreeSurface(texsurf) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
253 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
254 |
end; |
4 | 255 |
|
844 | 256 |
var ii: TSprite; |
257 |
fi: THWFont; |
|
258 |
ai: TAmmoType; |
|
259 |
tmpsurf: PSDL_Surface; |
|
260 |
i: LongInt; |
|
4 | 261 |
begin |
2222 | 262 |
|
4 | 263 |
for fi:= Low(THWFont) to High(THWFont) do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
264 |
with Fontz[fi] do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
265 |
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
|
266 |
s:= UserPathz[ptFonts] + '/' + Name; |
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
|
267 |
if not FileExists(s) then s:= Pathz[ptFonts] + '/' + Name; |
3185 | 268 |
WriteToConsole(msgLoading + s + ' (' + inttostr(Height) + 'pt)... '); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
269 |
Handle:= TTF_OpenFont(Str2PChar(s), Height); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
270 |
SDLTry(Handle <> nil, true); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
271 |
TTF_SetFontStyle(Handle, style); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
272 |
WriteLnToConsole(msgOK) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
273 |
end; |
53 | 274 |
|
4 | 275 |
WriteNames(fnt16); |
70 | 276 |
MakeCrossHairs; |
4 | 277 |
LoadGraves; |
278 |
||
279 |
AddProgress; |
|
280 |
for ii:= Low(TSprite) to High(TSprite) do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
281 |
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
|
282 |
// 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
|
283 |
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
|
284 |
(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
|
285 |
(((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
|
286 |
(((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
|
287 |
((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
|
288 |
((vobCount > 0) or (ii <> sprFlake)) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
289 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
290 |
if AltPath = ptNone then |
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
|
291 |
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
|
292 |
begin |
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
|
293 |
tmpsurf:= LoadImage(UserPathz[Path] + '/' + FileName, ifAlpha or ifTransparent); |
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
|
294 |
if tmpsurf = nil then tmpsurf:= LoadImage(Pathz[Path] + '/' + FileName, ifAlpha or ifTransparent) |
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
|
295 |
end |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
296 |
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
|
297 |
begin |
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
|
298 |
tmpsurf:= LoadImage(UserPathz[Path] + '/' + FileName, ifAlpha or ifTransparent); |
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
|
299 |
if tmpsurf = nil then tmpsurf:= LoadImage(Pathz[Path] + '/' + FileName, ifAlpha or ifTransparent or ifCritical) |
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
|
300 |
end |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
301 |
else 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
|
302 |
tmpsurf:= LoadImage(UserPathz[Path] + '/' + FileName, ifAlpha or ifTransparent); |
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
|
303 |
if tmpsurf = nil then tmpsurf:= LoadImage(Pathz[Path] + '/' + FileName, ifAlpha or ifTransparent); |
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
|
304 |
if tmpsurf = nil then tmpsurf:= LoadImage(UserPathz[AltPath] + '/' + FileName, ifAlpha or ifTransparent); |
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
|
305 |
if tmpsurf = nil then tmpsurf:= LoadImage(Pathz[AltPath] + '/' + FileName, ifAlpha or ifCritical or ifTransparent); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
306 |
end; |
2426 | 307 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
308 |
if tmpsurf <> nil then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
309 |
begin |
3558 | 310 |
if getImageDimensions then |
5284
34abd278344e
Remove default transparent chunks. Chunk will only be added if theme defined.
nemo
parents:
5238
diff
changeset
|
311 |
begin |
3558 | 312 |
imageWidth:= tmpsurf^.w; |
313 |
imageHeight:= tmpsurf^.h |
|
3765
ebfe7c9b3085
set flake to non critical, no touches until game is starding, moved some variables to be initialized in the right place
koda
parents:
3764
diff
changeset
|
314 |
end; |
3558 | 315 |
if getDimensions then |
3765
ebfe7c9b3085
set flake to non critical, no touches until game is starding, moved some variables to be initialized in the right place
koda
parents:
3764
diff
changeset
|
316 |
begin |
3558 | 317 |
Width:= tmpsurf^.w; |
318 |
Height:= tmpsurf^.h |
|
3765
ebfe7c9b3085
set flake to non critical, no touches until game is starding, moved some variables to be initialized in the right place
koda
parents:
3764
diff
changeset
|
319 |
end; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
320 |
if (ii in [sprSky, sprSkyL, sprSkyR, sprHorizont, sprHorizontL, sprHorizontR]) then |
3765
ebfe7c9b3085
set flake to non critical, no touches until game is starding, moved some variables to be initialized in the right place
koda
parents:
3764
diff
changeset
|
321 |
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
|
322 |
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
|
323 |
Texture^.Scale:= 2 |
3765
ebfe7c9b3085
set flake to non critical, no touches until game is starding, moved some variables to be initialized in the right place
koda
parents:
3764
diff
changeset
|
324 |
end |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
325 |
else |
3765
ebfe7c9b3085
set flake to non critical, no touches until game is starding, moved some variables to be initialized in the right place
koda
parents:
3764
diff
changeset
|
326 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
327 |
Texture:= Surface2Tex(tmpsurf, false); |
4809
9c7d5f802618
rearrange quality flags a little, disable snow rendering on rqLowRes
koda
parents:
4782
diff
changeset
|
328 |
// 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
|
329 |
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
|
330 |
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
331 |
end; |
3491 | 332 |
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_PRIORITY, priority); |
3765
ebfe7c9b3085
set flake to non critical, no touches until game is starding, moved some variables to be initialized in the right place
koda
parents:
3764
diff
changeset
|
333 |
if saveSurf then |
ebfe7c9b3085
set flake to non critical, no touches until game is starding, moved some variables to be initialized in the right place
koda
parents:
3764
diff
changeset
|
334 |
Surface:= tmpsurf else SDL_FreeSurface(tmpsurf) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
335 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
336 |
else |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
337 |
Surface:= nil |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
338 |
end; |
80 | 339 |
|
4 | 340 |
AddProgress; |
567 | 341 |
|
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
|
342 |
tmpsurf:= LoadImage(UserPathz[ptGraphics] + '/' + cHHFileName, ifAlpha or ifTransparent); |
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 |
if tmpsurf = nil then tmpsurf:= LoadImage(Pathz[ptGraphics] + '/' + cHHFileName, ifAlpha or ifCritical or ifTransparent); |
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
|
344 |
HHTexture:= Surface2Tex(tmpsurf, false); |
761 | 345 |
SDL_FreeSurface(tmpsurf); |
4 | 346 |
|
347 |
InitHealth; |
|
348 |
||
2623 | 349 |
PauseTexture:= RenderStringTex(trmsg[sidPaused], cYellowColor, fntBig); |
350 |
ConfirmTexture:= RenderStringTex(trmsg[sidConfirm], cYellowColor, fntBig); |
|
351 |
SyncTexture:= RenderStringTex(trmsg[sidSync], cYellowColor, fntBig); |
|
281
5b483aa9f2ab
Pause support (mouse cursor is released when the game is paused)
unc0rr
parents:
208
diff
changeset
|
352 |
|
2601 | 353 |
AddProgress; |
354 |
||
2670 | 355 |
// name of weapons in ammo menu |
843 | 356 |
for ai:= Low(TAmmoType) to High(TAmmoType) do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
357 |
with Ammoz[ai] do |
3765
ebfe7c9b3085
set flake to non critical, no touches until game is starding, moved some variables to be initialized in the right place
koda
parents:
3764
diff
changeset
|
358 |
begin |
3384 | 359 |
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
|
360 |
tmpsurf:= TTF_RenderUTF8_Blended(Fontz[CheckCJKFont(trAmmo[NameId],fnt16)].Handle, Str2PChar(trAmmo[NameId]), cWhiteColorChannels); |
3384 | 361 |
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
|
362 |
tmpsurf:= doSurfaceConversion(tmpsurf); |
4925 | 363 |
if (NameTex <> nil) then |
364 |
FreeTexture(NameTex); |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
365 |
NameTex:= Surface2Tex(tmpsurf, false); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
366 |
SDL_FreeSurface(tmpsurf) |
3765
ebfe7c9b3085
set flake to non critical, no touches until game is starding, moved some variables to be initialized in the right place
koda
parents:
3764
diff
changeset
|
367 |
end; |
2376 | 368 |
|
2670 | 369 |
// number of weapons in ammo menu |
844 | 370 |
for i:= Low(CountTexz) to High(CountTexz) do |
3765
ebfe7c9b3085
set flake to non critical, no touches until game is starding, moved some variables to be initialized in the right place
koda
parents:
3764
diff
changeset
|
371 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
372 |
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
|
373 |
tmpsurf:= doSurfaceConversion(tmpsurf); |
4925 | 374 |
if (CountTexz[i] <> nil) then |
375 |
FreeTexture(CountTexz[i]); |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
376 |
CountTexz[i]:= Surface2Tex(tmpsurf, false); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
377 |
SDL_FreeSurface(tmpsurf) |
3765
ebfe7c9b3085
set flake to non critical, no touches until game is starding, moved some variables to be initialized in the right place
koda
parents:
3764
diff
changeset
|
378 |
end; |
844 | 379 |
|
2222 | 380 |
AddProgress; |
2669 | 381 |
|
2672 | 382 |
{$IFDEF SDL_IMAGE_NEWER} |
2669 | 383 |
IMG_Quit(); |
2671
7e0f88013fe8
smaller patches, one missing Sky-lowres, IMG_Init and Mix_Init (might require newer libraries), updates to SDL bindings, code cleanup, new compile flags
koda
parents:
2670
diff
changeset
|
384 |
{$ENDIF} |
4 | 385 |
end; |
386 |
||
387 |
procedure StoreRelease; |
|
388 |
var ii: TSprite; |
|
4901 | 389 |
ai: TAmmoType; |
390 |
i, t: LongInt; |
|
4 | 391 |
begin |
3405 | 392 |
for ii:= Low(TSprite) to High(TSprite) do |
769
788efc1d649f
- Save 8 MB of memory by freeing LandSurface and not using it anymore after game initialization
unc0rr
parents:
768
diff
changeset
|
393 |
begin |
3405 | 394 |
FreeTexture(SpritesData[ii].Texture); |
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
|
395 |
SpritesData[ii].Texture:= nil; |
3405 | 396 |
if SpritesData[ii].Surface <> nil then |
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
|
397 |
SDL_FreeSurface(SpritesData[ii].Surface); |
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
|
398 |
SpritesData[ii].Surface:= nil; |
769
788efc1d649f
- Save 8 MB of memory by freeing LandSurface and not using it anymore after game initialization
unc0rr
parents:
768
diff
changeset
|
399 |
end; |
3405 | 400 |
SDL_FreeSurface(MissionIcons); |
401 |
FreeTexture(ropeIconTex); |
|
402 |
FreeTexture(HHTexture); |
|
4901 | 403 |
FreeTexture(PauseTexture); |
404 |
FreeTexture(ConfirmTexture); |
|
405 |
FreeTexture(SyncTexture); |
|
406 |
// free all ammo name textures |
|
407 |
for ai:= Low(TAmmoType) to High(TAmmoType) do |
|
408 |
begin |
|
409 |
FreeTexture(Ammoz[ai].NameTex); |
|
410 |
end; |
|
411 |
// free all count textures |
|
412 |
for i:= Low(CountTexz) to High(CountTexz) do |
|
413 |
begin |
|
414 |
FreeTexture(CountTexz[i]); |
|
415 |
end; |
|
416 |
// free all team and hedgehog textures |
|
417 |
for t:= 0 to Pred(TeamsCount) do |
|
418 |
begin |
|
419 |
if TeamsArray[t] <> nil then |
|
420 |
begin |
|
421 |
FreeTexture(TeamsArray[t]^.NameTagTex); |
|
422 |
FreeTexture(TeamsArray[t]^.CrosshairTex); |
|
423 |
FreeTexture(TeamsArray[t]^.GraveTex); |
|
424 |
FreeTexture(TeamsArray[t]^.HealthTex); |
|
425 |
FreeTexture(TeamsArray[t]^.AIKillsTex); |
|
426 |
FreeTexture(TeamsArray[t]^.FlagTex); |
|
427 |
for i:= 0 to cMaxHHIndex do |
|
428 |
begin |
|
429 |
FreeTexture(TeamsArray[t]^.Hedgehogs[i].NameTagTex); |
|
430 |
FreeTexture(TeamsArray[t]^.Hedgehogs[i].HealthTagTex); |
|
431 |
FreeTexture(TeamsArray[t]^.Hedgehogs[i].HatTex); |
|
432 |
end; |
|
433 |
end; |
|
434 |
end; |
|
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
435 |
{$IFNDEF S3D_DISABLED} |
3696 | 436 |
if (cStereoMode = smHorizontal) or (cStereoMode = smVertical) or (cStereoMode = smAFR) then |
3692 | 437 |
begin |
438 |
glDeleteTextures(1, @texl); |
|
439 |
glDeleteRenderbuffersEXT(1, @depthl); |
|
440 |
glDeleteFramebuffersEXT(1, @framel); |
|
441 |
glDeleteTextures(1, @texr); |
|
442 |
glDeleteRenderbuffersEXT(1, @depthr); |
|
443 |
glDeleteFramebuffersEXT(1, @framer) |
|
444 |
end |
|
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
445 |
{$ENDIF} |
4 | 446 |
end; |
447 |
||
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
|
448 |
|
4 | 449 |
procedure RenderHealth(var Hedgehog: THedgehog); |
95 | 450 |
var s: shortstring; |
4 | 451 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
452 |
str(Hedgehog.Gear^.Health, s); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
453 |
if Hedgehog.HealthTagTex <> nil then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
454 |
FreeTexture(Hedgehog.HealthTagTex); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
455 |
Hedgehog.HealthTagTex:= RenderStringTex(s, Hedgehog.Team^.Clan^.Color, fnt16) |
4 | 456 |
end; |
457 |
||
2905 | 458 |
function LoadImage(const filename: shortstring; imageFlags: LongInt): PSDL_Surface; |
30 | 459 |
var tmpsurf: PSDL_Surface; |
355 | 460 |
s: shortstring; |
4 | 461 |
begin |
4603 | 462 |
WriteToConsole(msgLoading + filename + '.png [flags: ' + inttostr(imageFlags) + '] '); |
2426 | 463 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
464 |
s:= filename + '.png'; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
465 |
tmpsurf:= IMG_Load(Str2PChar(s)); |
2254 | 466 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
467 |
if tmpsurf = nil then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
468 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
469 |
OutError(msgFailed, (imageFlags and ifCritical) <> 0); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
470 |
exit(nil) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
471 |
end; |
2153 | 472 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
473 |
if ((imageFlags and ifIgnoreCaps) = 0) and ((tmpsurf^.w > MaxTextureSize) or (tmpsurf^.h > MaxTextureSize)) then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
474 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
475 |
SDL_FreeSurface(tmpsurf); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
476 |
OutError(msgFailedSize, (imageFlags and ifCritical) <> 0); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
477 |
// dummy surface to replace non-critical textures that failed to load due to their size |
3862 | 478 |
exit(SDL_CreateRGBSurface(SDL_SWSURFACE, 2, 2, 32, RMask, GMask, BMask, AMask)); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
479 |
end; |
351 | 480 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
481 |
tmpsurf:= doSurfaceConversion(tmpsurf); |
2630 | 482 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
483 |
if (imageFlags and ifTransparent) <> 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
484 |
TryDo(SDL_SetColorKey(tmpsurf, SDL_SRCCOLORKEY, 0) = 0, errmsgTransparentSet, true); |
2630 | 485 |
|
3407 | 486 |
WriteLnToConsole(msgOK + ' (' + inttostr(tmpsurf^.w) + 'x' + inttostr(tmpsurf^.h) + ')'); |
2630 | 487 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
488 |
LoadImage:= tmpsurf //Result |
753 | 489 |
end; |
490 |
||
4874 | 491 |
procedure LoadHedgehogHat(HHGear: PGear; newHat: shortstring); |
492 |
var texsurf: PSDL_Surface; |
|
493 |
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
|
494 |
texsurf:= LoadImage(UserPathz[ptHats] + '/' + newHat, ifNone); |
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
|
495 |
if texsurf = nil then texsurf:= LoadImage(Pathz[ptHats] + '/' + newHat, ifNone); |
4874 | 496 |
|
497 |
// only do something if the hat could be loaded |
|
498 |
if texsurf <> nil then |
|
499 |
begin |
|
500 |
// free the mem of any previously assigned texture |
|
501 |
FreeTexture(HHGear^.Hedgehog^.HatTex); |
|
502 |
||
503 |
// assign new hat to hedgehog |
|
504 |
HHGear^.Hedgehog^.HatTex:= Surface2Tex(texsurf, true); |
|
505 |
||
506 |
// cleanup: free temporary surface mem |
|
507 |
SDL_FreeSurface(texsurf) |
|
508 |
end; |
|
509 |
end; |
|
510 |
||
2905 | 511 |
function glLoadExtension(extension : shortstring) : boolean; |
2428 | 512 |
begin |
4850 | 513 |
{$IF GLunit = gles11} |
4900 | 514 |
// FreePascal doesnt come with OpenGL ES 1.1 Extension headers |
3971 | 515 |
extension:= extension; // avoid hint |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
516 |
glLoadExtension:= false; |
3333 | 517 |
AddFileLog('OpenGL - "' + extension + '" skipped') |
2580
aeccc8f51d3f
completes touch input/control (problems with moving camera)
koda
parents:
2578
diff
changeset
|
518 |
{$ELSE} |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
519 |
glLoadExtension:= glext_LoadExtension(extension); |
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
520 |
if glLoadExtension then |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
521 |
AddFileLog('OpenGL - "' + extension + '" loaded') |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
522 |
else |
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
523 |
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
|
524 |
{$ENDIF} |
2428 | 525 |
end; |
526 |
||
753 | 527 |
procedure SetupOpenGL; |
3928
2560731c860d
move all mobile-related functions in their own module, provides a structure for future mobile ports
koda
parents:
3922
diff
changeset
|
528 |
{$IFNDEF IPHONEOS} |
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
|
529 |
var vendor: shortstring; |
3405 | 530 |
{$IFDEF DARWIN} |
5187 | 531 |
const one : LongInt = 1; |
3405 | 532 |
{$ENDIF} |
3928
2560731c860d
move all mobile-related functions in their own module, provides a structure for future mobile ports
koda
parents:
3922
diff
changeset
|
533 |
{$ENDIF} |
753 | 534 |
begin |
3405 | 535 |
|
2697 | 536 |
{$IFDEF IPHONEOS} |
5186 | 537 |
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 0); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
538 |
SDL_GL_SetAttribute(SDL_GL_RETAINED_BACKING, 1); |
3376 | 539 |
{$ELSE} |
540 |
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); |
|
3928
2560731c860d
move all mobile-related functions in their own module, provides a structure for future mobile ports
koda
parents:
3922
diff
changeset
|
541 |
vendor:= LowerCase(shortstring(pchar(glGetString(GL_VENDOR)))); |
3405 | 542 |
{$IFNDEF SDL13} |
543 |
// this attribute is default in 1.3 and must be enabled in MacOSX |
|
5187 | 544 |
SDL_GL_SetAttribute(SDL_GL_SWAP_CONTROL, LongInt((cReducedQuality and rqDesyncVBlank) = 0)); |
5186 | 545 |
|
3405 | 546 |
{$IFDEF DARWIN} |
547 |
// fixes vsync in Snow Leopard |
|
548 |
CGLSetParameter(CGLGetCurrentContext(), 222, @one); |
|
549 |
{$ENDIF} |
|
550 |
{$ENDIF} |
|
3376 | 551 |
{$ENDIF} |
552 |
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 0); // no depth buffer |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
553 |
SDL_GL_SetAttribute(SDL_GL_RED_SIZE, 5); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
554 |
SDL_GL_SetAttribute(SDL_GL_GREEN_SIZE, 6); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
555 |
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 5); |
3376 | 556 |
SDL_GL_SetAttribute(SDL_GL_ALPHA_SIZE, 0); // no alpha channel required |
557 |
SDL_GL_SetAttribute(SDL_GL_BUFFER_SIZE, 16); // buffer has to be 16 bit only |
|
558 |
SDL_GL_SetAttribute(SDL_GL_ACCELERATED_VISUAL, 1); // try to prefer hardware rendering |
|
2697 | 559 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
560 |
glGetIntegerv(GL_MAX_TEXTURE_SIZE, @MaxTextureSize); |
2697 | 561 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
562 |
AddFileLog('OpenGL-- Renderer: ' + shortstring(pchar(glGetString(GL_RENDERER)))); |
3757 | 563 |
AddFileLog(' |----- Vendor: ' + shortstring(pchar(glGetString(GL_VENDOR)))); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
564 |
AddFileLog(' |----- Version: ' + shortstring(pchar(glGetString(GL_VERSION)))); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
565 |
AddFileLog(' \----- GL_MAX_TEXTURE_SIZE: ' + inttostr(MaxTextureSize)); |
2252 | 566 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
567 |
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
|
568 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
569 |
MaxTextureSize:= 1024; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
570 |
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
|
571 |
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
|
572 |
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
|
573 |
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
|
574 |
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
|
575 |
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
|
576 |
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
|
577 |
|
3692 | 578 |
{$IFDEF IPHONEOS} |
579 |
cGPUVendor:= gvApple; |
|
580 |
{$ELSE} |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
581 |
if StrPos(Str2PChar(vendor), Str2PChar('nvidia')) <> nil then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
582 |
cGPUVendor:= gvNVIDIA |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
583 |
else if StrPos(Str2PChar(vendor), Str2PChar('intel')) <> nil then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
584 |
cGPUVendor:= gvATI |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
585 |
else if StrPos(Str2PChar(vendor), Str2PChar('ati')) <> nil then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
586 |
cGPUVendor:= gvIntel; |
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
587 |
{$ENDIF} |
2647 | 588 |
//SupportNPOTT:= glLoadExtension('GL_ARB_texture_non_power_of_two'); |
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
589 |
{$IFNDEF S3D_DISABLED} |
3696 | 590 |
if (cStereoMode = smHorizontal) or (cStereoMode = smVertical) or (cStereoMode = smAFR) then |
3692 | 591 |
begin |
592 |
// 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
|
593 |
if glLoadExtension('GL_EXT_framebuffer_object') then |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
594 |
begin |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
595 |
// left |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
596 |
glGenFramebuffersEXT(1, @framel); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
597 |
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, framel); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
598 |
glGenRenderbuffersEXT(1, @depthl); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
599 |
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, depthl); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
600 |
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
|
601 |
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
|
602 |
glGenTextures(1, @texl); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
603 |
glBindTexture(GL_TEXTURE_2D, texl); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
604 |
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
|
605 |
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
|
606 |
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
|
607 |
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, texl, 0); |
3692 | 608 |
|
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
609 |
// right |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
610 |
glGenFramebuffersEXT(1, @framer); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
611 |
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, framer); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
612 |
glGenRenderbuffersEXT(1, @depthr); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
613 |
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, depthr); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
614 |
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
|
615 |
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
|
616 |
glGenTextures(1, @texr); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
617 |
glBindTexture(GL_TEXTURE_2D, texr); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
618 |
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
|
619 |
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
|
620 |
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
|
621 |
glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, texr, 0); |
3692 | 622 |
|
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
623 |
// reset |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
624 |
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0) |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
625 |
end |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
626 |
else |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4343
diff
changeset
|
627 |
cStereoMode:= smNone; |
3692 | 628 |
end; |
2735 | 629 |
{$ENDIF} |
630 |
||
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
631 |
if cGPUVendor = gvUnknown then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
632 |
AddFileLog('OpenGL Warning - unknown hardware vendor; please report'); |
2428 | 633 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
634 |
// set view port to whole window |
3940
cc29628976cc
some optimizations to drawing and fetching data of new ammomenu
koda
parents:
3939
diff
changeset
|
635 |
if (rotationQt = 0) or (rotationQt = 180) then |
3922
44804043b691
iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents:
3906
diff
changeset
|
636 |
glViewport(0, 0, cScreenWidth, cScreenHeight) |
44804043b691
iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents:
3906
diff
changeset
|
637 |
else |
44804043b691
iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents:
3906
diff
changeset
|
638 |
glViewport(0, 0, cScreenHeight, cScreenWidth); |
2428 | 639 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
640 |
glMatrixMode(GL_MODELVIEW); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
641 |
// prepare default translation/scaling |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
642 |
glLoadIdentity(); |
3394
47b51e22e670
Henek's patch - adds a column to ammoMenu and removes the F* column in iphone version
koda
parents:
3390
diff
changeset
|
643 |
glRotatef(rotationQt, 0, 0, 1); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
644 |
glScalef(2.0 / cScreenWidth, -2.0 / cScreenHeight, 1.0); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
645 |
glTranslatef(0, -cScreenHeight / 2, 0); |
2428 | 646 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
647 |
// enable alpha blending |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
648 |
glEnable(GL_BLEND); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
649 |
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
|
650 |
// disable/lower perspective correction (will not need it anyway) |
3376 | 651 |
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST); |
652 |
// disable dithering |
|
653 |
glDisable(GL_DITHER); |
|
3641 | 654 |
// enable common states by default as they save a lot |
3376 | 655 |
glEnable(GL_TEXTURE_2D); |
3697 | 656 |
glEnableClientState(GL_VERTEX_ARRAY); |
657 |
glEnableClientState(GL_TEXTURE_COORD_ARRAY); |
|
4 | 658 |
end; |
659 |
||
2161
0c8634241fa4
Some work on zooming. Hedgewars are now unplayable.
unc0rr
parents:
2154
diff
changeset
|
660 |
procedure SetScale(f: GLfloat); |
0c8634241fa4
Some work on zooming. Hedgewars are now unplayable.
unc0rr
parents:
2154
diff
changeset
|
661 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
662 |
// leave immediately if scale factor did not change |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
663 |
if f = cScaleFactor then exit; |
2161
0c8634241fa4
Some work on zooming. Hedgewars are now unplayable.
unc0rr
parents:
2154
diff
changeset
|
664 |
|
3523 | 665 |
if f = cDefaultZoomLevel then |
666 |
glPopMatrix // "return" to default scaling |
|
667 |
else // other scaling |
|
3394
47b51e22e670
Henek's patch - adds a column to ammoMenu and removes the F* column in iphone version
koda
parents:
3390
diff
changeset
|
668 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
669 |
glPushMatrix; // save default scaling |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
670 |
glLoadIdentity; |
3394
47b51e22e670
Henek's patch - adds a column to ammoMenu and removes the F* column in iphone version
koda
parents:
3390
diff
changeset
|
671 |
glRotatef(rotationQt, 0, 0, 1); |
3922
44804043b691
iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents:
3906
diff
changeset
|
672 |
glScalef(f / cScreenWidth, -f / cScreenHeight, 1.0); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
673 |
glTranslatef(0, -cScreenHeight / 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
|
674 |
end; |
2258 | 675 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
676 |
cScaleFactor:= f; |
2161
0c8634241fa4
Some work on zooming. Hedgewars are now unplayable.
unc0rr
parents:
2154
diff
changeset
|
677 |
end; |
0c8634241fa4
Some work on zooming. Hedgewars are now unplayable.
unc0rr
parents:
2154
diff
changeset
|
678 |
|
510 | 679 |
//////////////////////////////////////////////////////////////////////////////// |
680 |
procedure AddProgress; |
|
681 |
var r: TSDL_Rect; |
|
766 | 682 |
texsurf: PSDL_Surface; |
510 | 683 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
684 |
if Step = 0 then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
685 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
686 |
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
|
687 |
texsurf:= LoadImage(UserPathz[ptGraphics] + '/Progress', ifTransparent); |
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
|
688 |
if texsurf = nil then 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
|
689 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
690 |
ProgrTex:= Surface2Tex(texsurf, false); |
3697 | 691 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
692 |
squaresize:= texsurf^.w shr 1; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
693 |
numsquares:= texsurf^.h div squaresize; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
694 |
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
|
695 |
|
5174
f5294509783e
initial refactoring of ObjcExports and OverlayViewController
koda
parents:
5167
diff
changeset
|
696 |
uMobile.GameLoading(); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
697 |
end; |
1045 | 698 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
699 |
TryDo(ProgrTex <> nil, 'Error - Progress Texure is nil!', true); |
2284 | 700 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
701 |
glClear(GL_COLOR_BUFFER_BIT); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
702 |
if Step < numsquares then r.x:= 0 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
703 |
else r.x:= squaresize; |
3697 | 704 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
705 |
r.y:= (Step mod numsquares) * squaresize; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
706 |
r.w:= squaresize; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
707 |
r.h:= squaresize; |
3697 | 708 |
|
3922
44804043b691
iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents:
3906
diff
changeset
|
709 |
DrawFromRect( -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
|
710 |
|
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2705
diff
changeset
|
711 |
{$IFDEF SDL13} |
4933 | 712 |
SDL_RenderPresent(SDLrender); |
5043
2df62e1a6c02
glswapbuffer consistency and create the window in the center (still, it doesn't work past sdl r5296)
koda
parents:
5018
diff
changeset
|
713 |
{$ELSE} |
2df62e1a6c02
glswapbuffer consistency and create the window in the center (still, it doesn't work past sdl r5296)
koda
parents:
5018
diff
changeset
|
714 |
SDL_GL_SwapBuffers(); |
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2705
diff
changeset
|
715 |
{$ENDIF} |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
716 |
inc(Step); |
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2705
diff
changeset
|
717 |
|
510 | 718 |
end; |
719 |
||
720 |
procedure FinishProgress; |
|
721 |
begin |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
722 |
WriteLnToConsole('Freeing progress surface... '); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
723 |
FreeTexture(ProgrTex); |
5174
f5294509783e
initial refactoring of ObjcExports and OverlayViewController
koda
parents:
5167
diff
changeset
|
724 |
uMobile.GameLoaded(); |
510 | 725 |
end; |
726 |
||
2905 | 727 |
function RenderHelpWindow(caption, subcaption, description, extra: ansistring; extracolor: LongInt; iconsurf: PSDL_Surface; iconrect: PSDL_Rect): PTexture; |
2747 | 728 |
var tmpsurf: PSDL_SURFACE; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
729 |
w, h, i, j: LongInt; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
730 |
font: THWFont; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
731 |
r, r2: TSDL_Rect; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
732 |
wa, ha: LongInt; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
733 |
tmpline, tmpline2, tmpdesc: ansistring; |
2747 | 734 |
begin |
2843 | 735 |
// make sure there is a caption as well as a sub caption - description is optional |
736 |
if caption = '' then caption:= '???'; |
|
737 |
if subcaption = '' then subcaption:= ' '; |
|
738 |
||
2841 | 739 |
font:= CheckCJKFont(caption,fnt16); |
740 |
font:= CheckCJKFont(subcaption,font); |
|
741 |
font:= CheckCJKFont(description,font); |
|
742 |
font:= CheckCJKFont(extra,font); |
|
2747 | 743 |
|
744 |
w:= 0; |
|
745 |
h:= 0; |
|
746 |
wa:= FontBorder * 2 + 4; |
|
747 |
ha:= FontBorder * 2; |
|
748 |
||
3407 | 749 |
i:= 0; j:= 0; // avoid compiler hints |
750 |
||
2747 | 751 |
// TODO: Recheck height/position calculation |
752 |
||
753 |
// get caption's dimensions |
|
754 |
TTF_SizeUTF8(Fontz[font].Handle, Str2PChar(caption), i, j); |
|
755 |
// width adds 36 px (image + space) |
|
756 |
w:= i + 36 + wa; |
|
757 |
h:= j + ha; |
|
758 |
||
759 |
// get sub caption's dimensions |
|
760 |
TTF_SizeUTF8(Fontz[font].Handle, Str2PChar(subcaption), i, j); |
|
761 |
// width adds 36 px (image + space) |
|
762 |
if w < (i + 36 + wa) then w:= i + 36 + wa; |
|
763 |
inc(h, j + ha); |
|
764 |
||
765 |
// get description's dimensions |
|
766 |
tmpdesc:= description; |
|
767 |
while tmpdesc <> '' do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
768 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
769 |
tmpline:= tmpdesc; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
770 |
SplitByChar(tmpline, tmpdesc, '|'); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
771 |
if tmpline <> '' then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
772 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
773 |
TTF_SizeUTF8(Fontz[font].Handle, Str2PChar(tmpline), i, j); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
774 |
if w < (i + wa) then w:= i + wa; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
775 |
inc(h, j + ha) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
776 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
777 |
end; |
2747 | 778 |
|
779 |
if extra <> '' then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
780 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
781 |
// get extra label's dimensions |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
782 |
TTF_SizeUTF8(Fontz[font].Handle, Str2PChar(extra), i, j); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
783 |
if w < (i + wa) then w:= i + wa; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
784 |
inc(h, j + ha); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
785 |
end; |
3697 | 786 |
|
2747 | 787 |
// add borders space |
788 |
inc(w, wa); |
|
789 |
inc(h, ha + 8); |
|
790 |
||
791 |
tmpsurf:= SDL_CreateRGBSurface(SDL_SWSURFACE, w, h, 32, RMask, GMask, BMask, AMask); |
|
792 |
TryDo(tmpsurf <> nil, 'RenderHelpWindow: fail to create surface', true); |
|
793 |
||
794 |
// render border and background |
|
795 |
r.x:= 0; |
|
796 |
r.y:= 0; |
|
797 |
r.w:= w; |
|
798 |
r.h:= h; |
|
799 |
DrawRoundRect(@r, cWhiteColor, cNearBlackColor, tmpsurf, true); |
|
800 |
||
801 |
// render caption |
|
802 |
r:= WriteInRect(tmpsurf, 36 + FontBorder + 2, ha, $ffffffff, font, caption); |
|
803 |
// render sub caption |
|
804 |
r:= WriteInRect(tmpsurf, 36 + FontBorder + 2, r.y + r.h, $ffc7c7c7, font, subcaption); |
|
805 |
||
806 |
// render all description lines |
|
807 |
tmpdesc:= description; |
|
808 |
while tmpdesc <> '' do |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
809 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
810 |
tmpline:= tmpdesc; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
811 |
SplitByChar(tmpline, tmpdesc, '|'); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
812 |
r2:= r; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
813 |
if tmpline <> '' then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
814 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
815 |
r:= WriteInRect(tmpsurf, FontBorder + 2, r.y + r.h, $ff707070, font, tmpline); |
3697 | 816 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
817 |
// render highlighted caption (if there's a ':') |
3407 | 818 |
tmpline2:= ''; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
819 |
SplitByChar(tmpline, tmpline2, ':'); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
820 |
if tmpline2 <> '' then |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
821 |
WriteInRect(tmpsurf, FontBorder + 2, r2.y + r2.h, $ffc7c7c7, font, tmpline + ':'); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
822 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
823 |
end; |
2747 | 824 |
|
825 |
if extra <> '' then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
826 |
r:= WriteInRect(tmpsurf, FontBorder + 2, r.y + r.h, extracolor, font, extra); |
2747 | 827 |
|
828 |
r.x:= FontBorder + 6; |
|
829 |
r.y:= FontBorder + 4; |
|
830 |
r.w:= 32; |
|
831 |
r.h:= 32; |
|
832 |
SDL_FillRect(tmpsurf, @r, $ffffffff); |
|
833 |
SDL_UpperBlit(iconsurf, iconrect, tmpsurf, @r); |
|
3697 | 834 |
|
2747 | 835 |
RenderHelpWindow:= Surface2Tex(tmpsurf, true); |
836 |
SDL_FreeSurface(tmpsurf) |
|
837 |
end; |
|
838 |
||
839 |
procedure RenderWeaponTooltip(atype: TAmmoType); |
|
840 |
var r: TSDL_Rect; |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
841 |
i: LongInt; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
842 |
extra: ansistring; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
843 |
extracolor: LongInt; |
2747 | 844 |
begin |
3634 | 845 |
// don't do anything if the window shouldn't be shown |
846 |
if (cReducedQuality and rqTooltipsOff) <> 0 then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
847 |
begin |
3634 | 848 |
WeaponTooltipTex:= nil; |
849 |
exit |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
850 |
end; |
2747 | 851 |
|
852 |
// free old texture |
|
853 |
FreeWeaponTooltip; |
|
854 |
||
855 |
// image region |
|
856 |
i:= LongInt(atype) - 1; |
|
3853 | 857 |
r.x:= (i shr 4) * 32; |
858 |
r.y:= (i mod 16) * 32; |
|
2747 | 859 |
r.w:= 32; |
860 |
r.h:= 32; |
|
861 |
||
862 |
// default (no extra text) |
|
863 |
extra:= ''; |
|
864 |
extracolor:= 0; |
|
865 |
||
866 |
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
|
867 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
868 |
extra:= trmsg[sidNotYetAvailable]; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
869 |
extracolor:= LongInt($ffc77070); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
870 |
end |
4241
835fd7a0e1bf
Move resurrection to utilities, reduce its probablit a bit to match other utilities, rename the "hint" prop since it really isn't being used as a hint anymore. That can be put back if it changes.
nemo
parents:
4222
diff
changeset
|
871 |
else if (Ammoz[atype].Ammo.Propz and ammoprop_NoRoundEnd) <> 0 then // weapon or utility won't end your turn |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
872 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
873 |
extra:= trmsg[sidNoEndTurn]; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
874 |
extracolor:= LongInt($ff70c770); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
875 |
end |
3697 | 876 |
else |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
877 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
878 |
extra:= ''; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
879 |
extracolor:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
880 |
end; |
2747 | 881 |
|
882 |
// render window and return the texture |
|
883 |
WeaponTooltipTex:= RenderHelpWindow(trammo[Ammoz[atype].NameId], trammoc[Ammoz[atype].NameId], trammod[Ammoz[atype].NameId], extra, extracolor, SpritesData[sprAMAmmos].Surface, @r) |
|
2753 | 884 |
end; |
2747 | 885 |
|
886 |
procedure ShowWeaponTooltip(x, y: LongInt); |
|
887 |
begin |
|
888 |
// draw the texture if it exists |
|
889 |
if WeaponTooltipTex <> nil then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
890 |
DrawTexture(x, y, WeaponTooltipTex) |
2747 | 891 |
end; |
892 |
||
893 |
procedure FreeWeaponTooltip; |
|
894 |
begin |
|
5045
f215eb5d4b75
this supposedly makes hwengine work with sdl 1.3 past rev 5296
koda
parents:
5043
diff
changeset
|
895 |
// free the existing texture (if there is any) |
2747 | 896 |
if WeaponTooltipTex = nil then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2910
diff
changeset
|
897 |
exit; |
2747 | 898 |
FreeTexture(WeaponTooltipTex); |
899 |
WeaponTooltipTex:= nil |
|
900 |
end; |
|
901 |
||
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
|
902 |
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
|
903 |
var flags: Longword = 0; |
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
|
904 |
ico: PSDL_Surface; |
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
|
905 |
buf: array[byte] of char; |
5052 | 906 |
{$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
|
907 |
begin |
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
|
908 |
s:= s; // avoid compiler hint |
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
|
909 |
if Length(s) = 0 then cFullScreen:= not cFullScreen |
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
|
910 |
else cFullScreen:= s = '1'; |
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
|
911 |
|
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
|
912 |
buf[0]:= char(0); // avoid compiler hint |
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
|
913 |
AddFileLog('Prepare to change video parameters...'); |
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
|
914 |
|
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
|
915 |
flags:= SDL_OPENGL;// or SDL_RESIZABLE; |
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
|
916 |
|
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
|
917 |
if cFullScreen then |
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
|
918 |
flags:= flags or SDL_FULLSCREEN; |
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
|
919 |
|
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
|
920 |
{$IFDEF SDL_IMAGE_NEWER} |
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
|
921 |
WriteToConsole('Init SDL_image... '); |
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
|
922 |
SDLTry(IMG_Init(IMG_INIT_PNG) <> 0, true); |
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
|
923 |
WriteLnToConsole(msgOK); |
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
|
924 |
{$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
|
925 |
// load engine icon |
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
|
926 |
{$IFDEF DARWIN} |
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
|
927 |
ico:= LoadImage(UserPathz[ptGraphics] + '/hwengine_mac', ifIgnoreCaps); |
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
|
928 |
if ico = nil then ico:= LoadImage(Pathz[ptGraphics] + '/hwengine_mac', ifIgnoreCaps); |
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
|
929 |
{$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
|
930 |
ico:= LoadImage(UserPathz[ptGraphics] + '/hwengine', ifIgnoreCaps); |
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
|
931 |
if ico = nil then ico:= LoadImage(Pathz[ptGraphics] + '/hwengine', ifIgnoreCaps); |
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
|
932 |
{$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
|
933 |
if ico <> nil then |
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
|
934 |
begin |
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
|
935 |
SDL_WM_SetIcon(ico, 0); |
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
|
936 |
SDL_FreeSurface(ico) |
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
|
937 |
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
|
938 |
|
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
|
939 |
// set window caption |
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
|
940 |
SDL_WM_SetCaption('Hedgewars', nil); |
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
|
941 |
|
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
|
942 |
if SDLPrimSurface <> nil then |
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
|
943 |
begin |
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
|
944 |
AddFileLog('Freeing old primary surface...'); |
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
|
945 |
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
|
946 |
SDLPrimSurface:= nil; |
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
|
947 |
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
|
948 |
|
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
|
949 |
{$IFDEF SDL13} |
5187 | 950 |
// these values in x and y make the window appear in the center |
951 |
x:= SDL_WINDOWPOS_CENTERED_MASK; |
|
952 |
y:= SDL_WINDOWPOS_CENTERED_MASK; |
|
953 |
flags:= SDL_WINDOW_OPENGL or SDL_WINDOW_SHOWN; |
|
954 |
||
955 |
{$IFDEF IPHONEOS} |
|
956 |
// make the sdl window appear on the second monitor when present |
|
957 |
x:= x or (SDL_GetNumVideoDisplays() - 1); |
|
958 |
y:= y or (SDL_GetNumVideoDisplays() - 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
|
959 |
|
5187 | 960 |
// hardcode the opengles driver as we do our own drawing |
961 |
SDL_SetHint('SDL_RENDER_DRIVER','opengles'); |
|
962 |
flags:= flags or SDL_WINDOW_BORDERLESS; // do not set SDL_WINDOW_RESIZABLE on iOS |
|
963 |
{$ENDIF} |
|
964 |
||
965 |
SDLwindow:= SDL_CreateWindow('Hedgewars', x, y, cScreenWidth, cScreenHeight, flags); |
|
966 |
SDLTry(SDLwindow <> nil, true); |
|
967 |
SDLrender:= SDL_CreateRenderer(SDLwindow, -1, SDL_RENDERER_ACCELERATED or SDL_RENDERER_PRESENTVSYNC); |
|
968 |
SDLTry(SDLrender <> nil, true); |
|
969 |
||
970 |
// clean the renderer before using it |
|
5004
2efa6a414518
update some sdl-1.3 bindings (working up to rev 5296)
koda
parents:
4976
diff
changeset
|
971 |
SDL_SetRenderDrawColor(SDLrender, 0, 0, 0, 255); |
4933 | 972 |
SDL_RenderClear(SDLrender); |
973 |
SDL_RenderPresent(SDLrender); |
|
5045
f215eb5d4b75
this supposedly makes hwengine work with sdl 1.3 past rev 5296
koda
parents:
5043
diff
changeset
|
974 |
|
5187 | 975 |
// reset the gl context from the one created by SDL (as we have our own drawing system) |
5045
f215eb5d4b75
this supposedly makes hwengine work with sdl 1.3 past rev 5296
koda
parents:
5043
diff
changeset
|
976 |
glMatrixMode(GL_PROJECTION); |
f215eb5d4b75
this supposedly makes hwengine work with sdl 1.3 past rev 5296
koda
parents:
5043
diff
changeset
|
977 |
glLoadIdentity(); |
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
|
978 |
{$ELSE} |
5130
3602ede67ec5
Add a parameter for game simulation with no gui/sound enabled, just to get statistics
unc0rr
parents:
5109
diff
changeset
|
979 |
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
|
980 |
begin |
3602ede67ec5
Add a parameter for game simulation with no gui/sound enabled, just to get statistics
unc0rr
parents:
5109
diff
changeset
|
981 |
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
|
982 |
SDLTry(SDLPrimSurface <> nil, true); |
3602ede67ec5
Add a parameter for game simulation with no gui/sound enabled, just to get statistics
unc0rr
parents:
5109
diff
changeset
|
983 |
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
|
984 |
{$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
|
985 |
|
4900 | 986 |
AddFileLog('Setting up OpenGL (using driver: ' + shortstring(SDL_VideoDriverName(buf, sizeof(buf))) + ')'); |
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
|
987 |
SetupOpenGL(); |
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
|
988 |
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
|
989 |
|
3038 | 990 |
procedure initModule; |
4925 | 991 |
var ai: TAmmoType; |
992 |
i: LongInt; |
|
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2698
diff
changeset
|
993 |
begin |
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
|
994 |
RegisterVariable('fullscr', vtCommand, @chFullScr, true); |
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
|
995 |
|
3394
47b51e22e670
Henek's patch - adds a column to ammoMenu and removes the F* column in iphone version
koda
parents:
3390
diff
changeset
|
996 |
SDLPrimSurface:= nil; |
3922
44804043b691
iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents:
3906
diff
changeset
|
997 |
|
44804043b691
iPad Video Out support (+less warnings +code update for latest SDL)
koda
parents:
3906
diff
changeset
|
998 |
{$IFNDEF IPHONEOS} |
3626 | 999 |
rotationQt:= 0; |
3394
47b51e22e670
Henek's patch - adds a column to ammoMenu and removes the F* column in iphone version
koda
parents:
3390
diff
changeset
|
1000 |
cGPUVendor:= gvUnknown; |
47b51e22e670
Henek's patch - adds a column to ammoMenu and removes the F* column in iphone version
koda
parents:
3390
diff
changeset
|
1001 |
{$ENDIF} |
3697 | 1002 |
|
3394
47b51e22e670
Henek's patch - adds a column to ammoMenu and removes the F* column in iphone version
koda
parents:
3390
diff
changeset
|
1003 |
cScaleFactor:= 2.0; |
47b51e22e670
Henek's patch - adds a column to ammoMenu and removes the F* column in iphone version
koda
parents:
3390
diff
changeset
|
1004 |
SupportNPOTT:= false; |
47b51e22e670
Henek's patch - adds a column to ammoMenu and removes the F* column in iphone version
koda
parents:
3390
diff
changeset
|
1005 |
Step:= 0; |
47b51e22e670
Henek's patch - adds a column to ammoMenu and removes the F* column in iphone version
koda
parents:
3390
diff
changeset
|
1006 |
ProgrTex:= nil; |
4925 | 1007 |
|
1008 |
// init all ammo name texture pointers |
|
1009 |
for ai:= Low(TAmmoType) to High(TAmmoType) do |
|
1010 |
begin |
|
1011 |
Ammoz[ai].NameTex := nil; |
|
1012 |
end; |
|
1013 |
// init all count texture pointers |
|
1014 |
for i:= Low(CountTexz) to High(CountTexz) do |
|
1015 |
begin |
|
1016 |
CountTexz[i] := nil; |
|
1017 |
end; |
|
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2698
diff
changeset
|
1018 |
end; |
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2698
diff
changeset
|
1019 |
|
3038 | 1020 |
procedure freeModule; |
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2705
diff
changeset
|
1021 |
begin |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2705
diff
changeset
|
1022 |
end; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2705
diff
changeset
|
1023 |
|
4 | 1024 |
end. |