author  Henek 
Tue, 28 Dec 2010 23:53:37 +0100  
changeset 4748  ce9b48de1f52 
parent 4626  775f43e90383 
child 4792  68f9b331014a 
permissions  rwrr 
4  1 
(* 
1066  2 
* Hedgewars, a free turn based strategy game 
3236
4ab3917d7d44
Update (c) lines to 2010 as unc0rr requested  they all had varying values so I just took the first year mentioned, then tacked on 2010
nemo
parents:
3204
diff
changeset

3 
* Copyright (c) 20042010 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 021111307, USA 

4  17 
*) 
18 

2630  19 
{$INCLUDE "options.inc"} 
20 

4  21 
unit uWorld; 
22 
interface 

4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4248
diff
changeset

23 
uses SDLh, uGears, uConsts, uFloat, uRandom, uTypes; 
2630  24 

3038  25 
procedure initModule; 
26 
procedure freeModule; 

2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2713
diff
changeset

27 

b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2713
diff
changeset

28 
procedure InitWorld; 
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2713
diff
changeset

29 
procedure DrawWorld(Lag: LongInt); 
2905  30 
procedure ShowMission(caption, subcaption, text: ansistring; icon, time : LongInt); 
2786  31 
procedure HideMission; 
3032  32 
procedure ShakeCamera(amount: LongWord); 
3638
33ee433749ba
touch overlay reworked, improvements to zoom and confirmation
koda
parents:
3629
diff
changeset

33 
procedure MoveCamera; 
4  34 

35 
implementation 

4359  36 
uses 
37 
uStore, 

38 
uMisc, 

39 
uIO, 

40 
uLocale, 

41 
uSound, 

42 
uAmmos, 

43 
uVisualGears, 

44 
uChat, 

45 
uLandTexture, 

46 
GLunit, 

4374  47 
uVariables, 
4375  48 
uUtils, 
4378  49 
uTextures, 
4380  50 
uRender, 
4393  51 
uCaptions 
4359  52 
; 
1807  53 

2161
0c8634241fa4
Some work on zooming. Hedgewars are now unplayable.
unc0rr
parents:
2152
diff
changeset

54 
var cWaveWidth, cWaveHeight: LongInt; 
3434  55 
AMSlotSize, AMxOffset, AMyOffset, AMWidth, AMxShift, SlotsNum: LongInt; 
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2682
diff
changeset

56 
tmpSurface: PSDL_Surface; 
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2682
diff
changeset

57 
fpsTexture: PTexture; 
2850
f6f8db825ce7
A little clock for convenience in finding things in demos
nemo
parents:
2839
diff
changeset

58 
timeTexture: PTexture; 
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2713
diff
changeset

59 
FPS: Longword; 
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2713
diff
changeset

60 
CountTicks: Longword; 
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2713
diff
changeset

61 
SoundTimerTicks: Longword; 
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2713
diff
changeset

62 
prevPoint: TPoint; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

63 
amSel: TAmmoType = amNothing; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

64 
missionTex: PTexture; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

65 
missionTimer: LongInt; 
4  66 

67 
procedure InitWorld; 

2704
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset

68 
var i, t: LongInt; 
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset

69 
cp: PClan; 
2863  70 
g: ansistring; 
71 

2904  72 
// helper functions to create the goal/game mode string 
2908  73 
function AddGoal(s: ansistring; gf: longword; si: TGoalStrId; i: LongInt): ansistring; 
2905  74 
var t: ansistring; 
2904  75 
begin 
76 
if (GameFlags and gf) <> 0 then 

77 
begin 

78 
t:= inttostr(i); 

79 
s:= s + format(trgoal[si], t) + '' 

80 
end; 

81 
AddGoal:= s; 

82 
end; 

83 

2908  84 
function AddGoal(s: ansistring; gf: longword; si: TGoalStrId): ansistring; 
2863  85 
begin 
2904  86 
if (GameFlags and gf) <> 0 then 
87 
s:= s + trgoal[si] + ''; 

2863  88 
AddGoal:= s; 
89 
end; 

4  90 
begin 
3764  91 
missionTimer:= 0; 
2786  92 

2704
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset

93 
if (GameFlags and gfRandomOrder) <> 0 then // shuffle them up a bit 
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset

94 
begin 
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset

95 
for i:= 0 to ClansCount * 4 do 
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset

96 
begin 
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset

97 
t:= GetRandom(ClansCount); 
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset

98 
if t <> 0 then 
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset

99 
begin 
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset

100 
cp:= ClansArray[0]; 
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset

101 
ClansArray[0]:= ClansArray[t]; 
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset

102 
ClansArray[t]:= cp; 
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset

103 
ClansArray[t]^.ClanIndex:= t; 
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset

104 
ClansArray[0]^.ClanIndex:= 0; 
2856
cc70797a0b75
Adjust LocalClan when shuffling, set to 1 in case all local clans are bots.
nemo
parents:
2855
diff
changeset

105 
if (LocalClan = t) then LocalClan:= 0 
cc70797a0b75
Adjust LocalClan when shuffling, set to 1 in case all local clans are bots.
nemo
parents:
2855
diff
changeset

106 
else if (LocalClan = 0) then LocalClan:= t 
2704
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset

107 
end; 
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset

108 
end; 
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset

109 
CurrentTeam:= ClansArray[0]^.Teams[0]; 
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset

110 
end; 
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset

111 

2908  112 
// if special game flags/settings are changed, add them to the game mode notice window and then show it 
2863  113 
g:= ''; // no text/things to note yet 
2908  114 

2958  115 
// check different game flags (goals/game modes first for now) 
116 
g:= AddGoal(g, gfKing, gidKing); // king? 

117 

118 
// other important flags 

119 
g:= AddGoal(g, gfForts, gidForts); // forts? 

120 
g:= AddGoal(g, gfLowGravity, gidLowGravity); // low gravity? 

121 
g:= AddGoal(g, gfInvulnerable, gidInvulnerable); // invulnerability? 

122 
g:= AddGoal(g, gfVampiric, gidVampiric); // vampirism? 

123 
g:= AddGoal(g, gfKarma, gidKarma); // karma? 

124 
g:= AddGoal(g, gfPlaceHog, gidPlaceHog); // placement? 

125 
g:= AddGoal(g, gfArtillery, gidArtillery); // artillery? 

126 
g:= AddGoal(g, gfSolidLand, gidSolidLand); // solid land? 

127 
g:= AddGoal(g, gfSharedAmmo, gidSharedAmmo); // shared ammo? 

4132  128 
g:= AddGoal(g, gfResetHealth, gidResetHealth); 
129 
g:= AddGoal(g, gfAISurvival, gidAISurvival); 

130 
g:= AddGoal(g, gfInfAttack, gidInfAttack); 

131 
g:= AddGoal(g, gfResetWeps, gidResetWeps); 

132 
g:= AddGoal(g, gfPerHogAmmo, gidPerHogAmmo); 

2958  133 

2908  134 
// modified damage modificator? 
135 
if cDamagePercent <> 100 then 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

136 
g:= AddGoal(g, gfAny, gidDamageModifier, cDamagePercent); 
2908  137 

3107  138 
// fade in 
139 
ScreenFade:= sfFromBlack; 

140 
ScreenFadeValue:= sfMax; 

141 
ScreenFadeSpeed:= 1; 

142 

2908  143 
// modified mine timers? 
4482  144 
if cMinesTime <> 3000 then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

145 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

146 
if cMinesTime = 0 then 
4003
ca0600ab38bf
disable gfMines and update variable names (landadds > minesnum, cLandAdditions > cLandMines)
koda
parents:
3976
diff
changeset

147 
g:= AddGoal(g, gfAny, gidNoMineTimer) 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

148 
else if cMinesTime < 0 then 
4003
ca0600ab38bf
disable gfMines and update variable names (landadds > minesnum, cLandAdditions > cLandMines)
koda
parents:
3976
diff
changeset

149 
g:= AddGoal(g, gfAny, gidRandomMineTimer) 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

150 
else 
4482  151 
g:= AddGoal(g, gfAny, gidMineTimer, cMinesTime div 1000); 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

152 
end; 
2908  153 

2863  154 
// if the string has been set, show it for (default timeframe) seconds 
155 
if g <> '' then ShowMission(trgoal[gidCaption], trgoal[gidSubCaption], g, 1, 0); 

156 

1825  157 
cWaveWidth:= SpritesData[sprWater].Width; 
2268
053eb81e60ee
little experiment to see if this improve appearance of laser/ufo/cake/laser guided missile  of course, can't actually see it until unc0rr restores waves
nemo
parents:
2226
diff
changeset

158 
//cWaveHeight:= SpritesData[sprWater].Height; 
053eb81e60ee
little experiment to see if this improve appearance of laser/ufo/cake/laser guided missile  of course, can't actually see it until unc0rr restores waves
nemo
parents:
2226
diff
changeset

159 
cWaveHeight:= 32; 
2292
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset

160 

284  161 
cGearScrEdgesDist:= Min(cScreenWidth div 2  100, cScreenHeight div 2  50); 
74  162 
SDL_WarpMouse(cScreenWidth div 2, cScreenHeight div 2); 
2197  163 
prevPoint.X:= 0; 
74  164 
prevPoint.Y:= cScreenHeight div 2; 
1760  165 
WorldDx:=  (LAND_WIDTH div 2) + cScreenWidth div 2; 
2139
5a083e71a71d
Properly decrement sniper rifle if timed out. Try to get camera position straight for once.
nemo
parents:
2119
diff
changeset

166 
WorldDy:=  (LAND_HEIGHT  (playHeight div 2)) + (cScreenHeight div 2); 
3434  167 
AMSlotSize:= 33; 
168 
{$IFDEF IPHONEOS} 

169 
AMxOffset:= 10; 

3464  170 
AMyOffset:= 10 + 123; // moved downwards 
3434  171 
AMWidth:= (cMaxSlotAmmoIndex + 1) * AMSlotSize + AMxOffset; 
172 
{$ELSE} 

173 
AMxOffset:= 10; 

174 
AMyOffset:= 60; 

175 
AMWidth:= (cMaxSlotAmmoIndex + 2) * AMSlotSize + AMxOffset; 

176 
{$ENDIF} 

177 
AMxShift:= AMWidth; 

3265
5fe62296fdea
 Parallax effect for horizont when water is out of sight
palewolf
parents:
3249
diff
changeset

178 
SkyOffset:= 0; 
5fe62296fdea
 Parallax effect for horizont when water is out of sight
palewolf
parents:
3249
diff
changeset

179 
HorizontOffset:= 0; 
161  180 
end; 
181 

3405  182 

956  183 
procedure ShowAmmoMenu; 
161  184 
const MENUSPEED = 15; 
3434  185 
const BORDERSIZE = 2; 
186 
var x, y, i, t, g: LongInt; 

187 
Slot, Pos, STurns: LongInt; 

2855
7e6adeb57427
Show the ammo menu of the last local nonbot team when not local turn. needs testing
nemo
parents:
2851
diff
changeset

188 
Ammo: PHHAmmo; 
161  189 
begin 
3952
d6412423da45
moved some utilities to a separate column with round buttons
koda
parents:
3890
diff
changeset

190 
if (TurnTimeLeft = 0) or (not CurrentTeam^.ExtDriven and (((CurAmmoGear = nil) or ((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) = 0)) and hideAmmoMenu)) then 
d6412423da45
moved some utilities to a separate column with round buttons
koda
parents:
3890
diff
changeset

191 
bShowAmmoMenu:= false; 
3434  192 
if bShowAmmoMenu then 
193 
begin 

194 
FollowGear:= nil; 

195 
if AMxShift = AMWidth then prevPoint.X:= 0; 

3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset

196 
if (cReducedQuality and rqSlowMenu) <> 0 then 
3434  197 
AMxShift:= 0 
198 
else 

199 
if AMxShift > MENUSPEED then 

200 
dec(AMxShift, MENUSPEED) 

201 
else 

202 
AMxShift:= 0; 

203 
end else 

204 
begin 

205 
if AMxShift = 0 then 

206 
begin 

207 
CursorPoint.X:= cScreenWidth shr 1; 

208 
CursorPoint.Y:= cScreenHeight shr 1; 

209 
prevPoint:= CursorPoint; 

210 
SDL_WarpMouse(CursorPoint.X + cScreenWidth div 2, cScreenHeight  CursorPoint.Y) 

211 
end; 

3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset

212 
if (cReducedQuality and rqSlowMenu) <> 0 then 
3434  213 
AMxShift:= AMWidth 
214 
else 

215 
if AMxShift < (AMWidth  MENUSPEED) then 

216 
inc(AMxShift, MENUSPEED) 

217 
else 

218 
AMxShift:= AMWidth; 

219 
end; 

220 
Ammo:= nil; 

221 
if (CurrentTeam <> nil) and (CurrentHedgehog <> nil) and (not CurrentTeam^.ExtDriven) and (CurrentHedgehog^.BotLevel = 0) then 

222 
Ammo:= CurrentHedgehog^.Ammo 

223 
else if (LocalAmmo <> 1) then 

224 
Ammo:= GetAmmoByNum(LocalAmmo); 

225 
Pos:= 1; 

226 
if Ammo = nil then 

2971  227 
begin 
3434  228 
bShowAmmoMenu:= false; 
229 
exit 

2971  230 
end; 
3434  231 
SlotsNum:= 0; 
232 
x:= (cScreenWidth shr 1)  AMWidth + AMxShift; 

3395
095273ad0e08
adding a somewhat working autoration for ipad (uStore.pas and uWorld.pas got mixed in the last two commits)
koda
parents:
3390
diff
changeset

233 

095273ad0e08
adding a somewhat working autoration for ipad (uStore.pas and uWorld.pas got mixed in the last two commits)
koda
parents:
3390
diff
changeset

234 
{$IFDEF IPHONEOS} 
3434  235 
Slot:= cMaxSlotIndex; 
3463  236 
x:= x  cOffsetY; 
3464  237 
y:= AMyOffset; 
3434  238 
dec(y, BORDERSIZE); 
239 
DrawSprite(sprAMCorners, x  BORDERSIZE, y, 0); 

240 
for i:= 0 to cMaxSlotAmmoIndex do 

241 
DrawSprite(sprAMBorderHorizontal, x + i * AMSlotSize, y, 0); 

242 
DrawSprite(sprAMCorners, x + AMWidth  AMxOffset, y, 1); 

243 
inc(y, BORDERSIZE); 

244 

245 
for i:= 0 to cMaxSlotIndex do 

246 
if ((i = 0) and (Ammo^[i, 1].Count > 0)) or ((i <> 0) and (Ammo^[i, 0].Count > 0)) then 

247 
begin 

3961
cf0ca1ff6c1a
Constrain to <= to avoid a bug on bottom edge reported by Henek
nemo
parents:
3890
diff
changeset

248 
if (cScreenHeight  CursorPoint.Y >= y) and (cScreenHeight  CursorPoint.Y <= y + AMSlotSize) then Slot:= i; 
3434  249 
inc(SlotsNum); 
250 
DrawSprite(sprAMBorderVertical, x  BORDERSIZE, y, 0); 

251 
t:= 0; 

252 
g:= 0; 

253 
while (t <= cMaxSlotAmmoIndex) and (Ammo^[i, t].Count > 0) do 

254 
begin 

255 
DrawSprite(sprAMSlot, x + g * AMSlotSize, y, 1); 

256 
if (Ammo^[i, t].AmmoType <> amNothing) then 

257 
begin 

258 
STurns:= Ammoz[Ammo^[i, t].AmmoType].SkipTurns  CurrentTeam^.Clan^.TurnNumber; 

259 

260 
if STurns >= 0 then 

261 
begin 

262 
DrawSprite(sprAMAmmosBW, x + g * AMSlotSize, y + 1, LongInt(Ammo^[i, t].AmmoType)1); 

263 
if STurns < 100 then DrawSprite(sprTurnsLeft, x + (g + 1) * AMSlotSize  16, y + AMSlotSize  16, STurns); 

264 
end else 

265 
DrawSprite(sprAMAmmos, x + g * AMSlotSize, y + 1, LongInt(Ammo^[i, t].AmmoType)1); 

266 
if (Slot = i) 

267 
and (CursorPoint.X >= x + g * AMSlotSize) 

3967  268 
and (CursorPoint.X <= x + (g + 1) * AMSlotSize) then 
3434  269 
begin 
270 
if (STurns < 0) then DrawSprite(sprAMSlot, x + g * AMSlotSize, y, 0); 

271 
Pos:= t; 

272 
end; 

273 
inc(g) 

274 
end; 

275 
inc(t) 

276 
end; 

277 
for g:= g to cMaxSlotAmmoIndex do 

278 
DrawSprite(sprAMSlot, x + g * AMSlotSize, y, 1); 

279 
DrawSprite(sprAMBorderVertical, x + AMWidth  AMxOffset, y, 1); 

280 
inc(y, AMSlotSize); 

281 
end; 

3697  282 

3434  283 
DrawSprite(sprAMCorners, x  BORDERSIZE, y, 2); 
284 
for i:= 0 to cMaxSlotAmmoIndex do 

285 
DrawSprite(sprAMBorderHorizontal, x + i * AMSlotSize, y, 1); 

286 
DrawSprite(sprAMCorners, x + AMWidth  AMxOffset, y, 3); 

3395
095273ad0e08
adding a somewhat working autoration for ipad (uStore.pas and uWorld.pas got mixed in the last two commits)
koda
parents:
3390
diff
changeset

287 
{$ELSE} 
3434  288 
Slot:= 0; 
289 
y:= cScreenHeight  AMyOffset; 

290 
DrawSprite(sprAMCorners, x  BORDERSIZE, y, 2); 

291 
for i:= 0 to cMaxSlotAmmoIndex + 1 do 

292 
DrawSprite(sprAMBorderHorizontal, x + i * AMSlotSize, y, 1); 

293 
DrawSprite(sprAMCorners, x + AMWidth  AMxOffset, y, 3); 

294 
dec(y, AMSlotSize); 

295 
DrawSprite(sprAMBorderVertical, x  BORDERSIZE, y, 0); 

296 
for i:= 0 to cMaxSlotAmmoIndex do 

297 
DrawSprite(sprAMSlot, x + i * AMSlotSize, y, 2); 

298 
DrawSprite(sprAMSlot, x + (cMaxSlotAmmoIndex + 1) * AMSlotSize, y, 1); 

299 
DrawSprite(sprAMBorderVertical, x + AMWidth  AMxOffset, y, 1); 

300 

301 
for i:= cMaxSlotIndex downto 0 do 

302 
if ((i = 0) and (Ammo^[i, 1].Count > 0)) or ((i <> 0) and (Ammo^[i, 0].Count > 0)) then 

303 
begin 

3961
cf0ca1ff6c1a
Constrain to <= to avoid a bug on bottom edge reported by Henek
nemo
parents:
3890
diff
changeset

304 
if (cScreenHeight  CursorPoint.Y >= y  AMSlotSize) and (cScreenHeight  CursorPoint.Y <= y) then Slot:= i; 
3434  305 
dec(y, AMSlotSize); 
306 
inc(SlotsNum); 

307 
DrawSprite(sprAMBorderVertical, x  BORDERSIZE, y, 0); 

308 
DrawSprite(sprAMSlot, x, y, 1); 

309 
DrawSprite(sprAMSlotKeys, x, y + 1, i); 

310 
t:= 0; 

311 
g:= 1; 

312 
while (t <= cMaxSlotAmmoIndex) and (Ammo^[i, t].Count > 0) do 

313 
begin 

314 
DrawSprite(sprAMSlot, x + g * AMSlotSize, y, 1); 

315 
if (Ammo^[i, t].AmmoType <> amNothing) then 

316 
begin 

317 
STurns:= Ammoz[Ammo^[i, t].AmmoType].SkipTurns  CurrentTeam^.Clan^.TurnNumber; 

318 

319 
if STurns >= 0 then 

320 
begin 

321 
DrawSprite(sprAMAmmosBW, x + g * AMSlotSize, y + 1, LongInt(Ammo^[i, t].AmmoType)1); 

322 
if STurns < 100 then DrawSprite(sprTurnsLeft, x + (g + 1) * AMSlotSize  16, y + AMSlotSize  16, STurns); 

323 
end else 

324 
DrawSprite(sprAMAmmos, x + g * AMSlotSize, y + 1, LongInt(Ammo^[i, t].AmmoType)1); 

325 
if (Slot = i) 

326 
and (CursorPoint.X >= x + g * AMSlotSize) 

3967  327 
and (CursorPoint.X <= x + (g + 1) * AMSlotSize) then 
3434  328 
begin 
329 
if (STurns < 0) then DrawSprite(sprAMSlot, x + g * AMSlotSize, y, 0); 

330 
Pos:= t; 

331 
end; 

332 
inc(g) 

333 
end; 

334 
inc(t) 

335 
end; 

336 
for g:= g to cMaxSlotAmmoIndex + 1 do 

337 
DrawSprite(sprAMSlot, x + g * AMSlotSize, y, 1); 

338 
DrawSprite(sprAMBorderVertical, x + AMWidth  AMxOffset, y, 1); 

339 
end; 

3697  340 

3434  341 
dec(y, BORDERSIZE); 
342 
DrawSprite(sprAMCorners, x  BORDERSIZE, y, 0); 

343 
for i:= 0 to cMaxSlotAmmoIndex + 1 do 

344 
DrawSprite(sprAMBorderHorizontal, x + i * AMSlotSize, y, 0); 

345 
DrawSprite(sprAMCorners, x + AMWidth  AMxOffset, y, 1); 

3395
095273ad0e08
adding a somewhat working autoration for ipad (uStore.pas and uWorld.pas got mixed in the last two commits)
koda
parents:
3390
diff
changeset

346 
{$ENDIF} 
095273ad0e08
adding a somewhat working autoration for ipad (uStore.pas and uWorld.pas got mixed in the last two commits)
koda
parents:
3390
diff
changeset

347 

3434  348 
if (Pos >= 0) then 
349 
begin 

350 
if (Ammo^[Slot, Pos].Count > 0) and (Ammo^[Slot, Pos].AmmoType <> amNothing) then 

3967  351 
begin 
3434  352 
if (amSel <> Ammo^[Slot, Pos].AmmoType) or (WeaponTooltipTex = nil) then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

353 
begin 
3434  354 
amSel:= Ammo^[Slot, Pos].AmmoType; 
355 
RenderWeaponTooltip(amSel) 

356 
end; 

3697  357 

3629
86212d2b116a
redo spinning wheel, redo fix for detail selection, redo ammo quantity and name in ammomenu
koda
parents:
3611
diff
changeset

358 
{$IFDEF IPHONEOS} 
86212d2b116a
redo spinning wheel, redo fix for detail selection, redo ammo quantity and name in ammomenu
koda
parents:
3611
diff
changeset

359 
DrawTexture(cScreenWidth div 2  (AMWidth  10) + AMxShift, AMyOffset  25, Ammoz[Ammo^[Slot, Pos].AmmoType].NameTex); 
86212d2b116a
redo spinning wheel, redo fix for detail selection, redo ammo quantity and name in ammomenu
koda
parents:
3611
diff
changeset

360 

86212d2b116a
redo spinning wheel, redo fix for detail selection, redo ammo quantity and name in ammomenu
koda
parents:
3611
diff
changeset

361 
if Ammo^[Slot, Pos].Count < AMMO_INFINITE then 
86212d2b116a
redo spinning wheel, redo fix for detail selection, redo ammo quantity and name in ammomenu
koda
parents:
3611
diff
changeset

362 
DrawTexture(cScreenWidth div 2 + AMxOffset  45, AMyOffset  25, CountTexz[Ammo^[Slot, Pos].Count]); 
86212d2b116a
redo spinning wheel, redo fix for detail selection, redo ammo quantity and name in ammomenu
koda
parents:
3611
diff
changeset

363 
{$ELSE} 
3434  364 
DrawTexture(cScreenWidth div 2  (AMWidth  10) + AMxShift, cScreenHeight  AMyOffset  25, Ammoz[Ammo^[Slot, Pos].AmmoType].NameTex); 
365 
if Ammo^[Slot, Pos].Count < AMMO_INFINITE then 

366 
DrawTexture(cScreenWidth div 2 + AMxOffset  45, cScreenHeight  AMyOffset  25, CountTexz[Ammo^[Slot, Pos].Count]); 

3629
86212d2b116a
redo spinning wheel, redo fix for detail selection, redo ammo quantity and name in ammomenu
koda
parents:
3611
diff
changeset

367 
{$ENDIF} 
1529
3bc916b419cd
Don't hide ammo menu when user clicks on not yet available weapon
unc0rr
parents:
1439
diff
changeset

368 

3434  369 
if bSelected and (Ammoz[Ammo^[Slot, Pos].AmmoType].SkipTurns  CurrentTeam^.Clan^.TurnNumber < 0) then 
370 
begin 

371 
bShowAmmoMenu:= false; 

372 
SetWeapon(Ammo^[Slot, Pos].AmmoType); 

373 
bSelected:= false; 

374 
FreeWeaponTooltip; 

375 
exit 

3405  376 
end; 
3967  377 
end 
3434  378 
end 
379 
else 

380 
FreeWeaponTooltip; 

3663
8c28abf427f5
reduce the number of keywords used and switch to BMP format for screenshots
koda
parents:
3641
diff
changeset

381 
if (WeaponTooltipTex <> nil) and (AMxShift = 0) then 
3395
095273ad0e08
adding a somewhat working autoration for ipad (uStore.pas and uWorld.pas got mixed in the last two commits)
koda
parents:
3390
diff
changeset

382 
{$IFDEF IPHONEOS} 
3434  383 
ShowWeaponTooltip(x  WeaponTooltipTex^.w  3, AMyOffset  1); 
3395
095273ad0e08
adding a somewhat working autoration for ipad (uStore.pas and uWorld.pas got mixed in the last two commits)
koda
parents:
3390
diff
changeset

384 
{$ELSE} 
4374  385 
ShowWeaponTooltip(x  WeaponTooltipTex^.w  3, Min(y + 1, cScreenHeight  WeaponTooltipTex^.h  40)); 
3395
095273ad0e08
adding a somewhat working autoration for ipad (uStore.pas and uWorld.pas got mixed in the last two commits)
koda
parents:
3390
diff
changeset

386 
{$ENDIF} 
961
a9a349b2b3fa
Use turnsleft sprites to indicate turns left to activate ammo
unc0rr
parents:
956
diff
changeset

387 

3434  388 
bSelected:= false; 
389 
if AMxShift = 0 then DrawSprite(sprArrow, CursorPoint.X, cScreenHeight  CursorPoint.Y, (RealTicks shr 6) mod 8) 

4  390 
end; 
391 

3104  392 
procedure DrawWater(Alpha: byte; OffsetY: LongInt); 
1915  393 
var VertexBuffer: array [0..3] of TVertex2f; 
394 
r: TSDL_Rect; 

2161
0c8634241fa4
Some work on zooming. Hedgewars are now unplayable.
unc0rr
parents:
2152
diff
changeset

395 
lw, lh: GLfloat; 
1915  396 
begin 
4748  397 
if SuddenDeathDmg then 
398 
begin 

399 
SDWaterColorArray[0].a := Alpha; 

400 
SDWaterColorArray[1].a := Alpha; 

401 
SDWaterColorArray[2].a := Alpha; 

402 
SDWaterColorArray[3].a := Alpha 

403 
end 

404 
else 

405 
begin 

406 
WaterColorArray[0].a := Alpha; 

407 
WaterColorArray[1].a := Alpha; 

408 
WaterColorArray[2].a := Alpha; 

409 
WaterColorArray[3].a := Alpha 

410 
end; 

2269
00f5704f5f39
add extra semiopaque layer of water to discolour objects in the water.
nemo
parents:
2268
diff
changeset

411 

3463  412 
lw:= cScreenWidth / cScaleFactor; 
413 
lh:= trunc(cScreenHeight / cScaleFactor) + cScreenHeight div 2 + 16; 

3697  414 

3405  415 
// Water 
416 
r.y:= OffsetY + WorldDy + cWaterLine; 

3463  417 
if WorldDy < trunc(cScreenHeight / cScaleFactor) + cScreenHeight div 2  cWaterLine then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

418 
begin 
3405  419 
if r.y < 0 then 
420 
r.y:= 0; 

1915  421 

3405  422 
glDisable(GL_TEXTURE_2D); 
423 
VertexBuffer[0].X:= lw; 

424 
VertexBuffer[0].Y:= r.y; 

425 
VertexBuffer[1].X:= lw; 

426 
VertexBuffer[1].Y:= r.y; 

427 
VertexBuffer[2].X:= lw; 

428 
VertexBuffer[2].Y:= lh; 

429 
VertexBuffer[3].X:= lw; 

430 
VertexBuffer[3].Y:= lh; 

1915  431 

3641  432 
glDisableClientState(GL_TEXTURE_COORD_ARRAY); 
433 
glEnableClientState(GL_COLOR_ARRAY); 

4748  434 
if SuddenDeathDmg then 
435 
glColorPointer(4, GL_UNSIGNED_BYTE, 0, @SDWaterColorArray[0]) 

436 
else 

437 
glColorPointer(4, GL_UNSIGNED_BYTE, 0, @WaterColorArray[0]); 

1915  438 

3405  439 
glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]); 
2171
8208946331ba
Smaxx refactor of LoadImage to use flags, iphone changes by koda (mostly use of rgba instead of rgb)
nemo
parents:
2162
diff
changeset

440 

3405  441 
glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer)); 
1915  442 

3405  443 
glDisableClientState(GL_COLOR_ARRAY); 
3641  444 
glEnableClientState(GL_TEXTURE_COORD_ARRAY); 
3407  445 
glColor4ub($FF, $FF, $FF, $FF); // must not be Tint() as color array seems to stay active and color reset is required 
3405  446 
glEnable(GL_TEXTURE_2D); 
447 
end; 

1915  448 
end; 
449 

3376  450 
procedure DrawWaves(Dir, dX, dY: LongInt; tnt: Byte); 
2292
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset

451 
var VertexBuffer, TextureBuffer: array [0..3] of TVertex2f; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

452 
lw, waves, shift: GLfloat; 
4748  453 
sprite: TSprite; 
2288  454 
begin 
4748  455 
if SuddenDeathDmg then 
456 
sprite:= sprSDWater 

457 
else 

458 
sprite:= sprWater; 

459 

460 
cWaveWidth:= SpritesData[sprite].Width; 

461 

3463  462 
lw:= cScreenWidth / cScaleFactor; 
2292
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset

463 
waves:= lw * 2 / cWaveWidth; 
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset

464 

4748  465 
if SuddenDeathDmg then 
466 
Tint(LongInt(tnt) * SDWaterColorArray[2].r div 255 + 255  tnt, 

467 
LongInt(tnt) * SDWaterColorArray[2].g div 255 + 255  tnt, 

468 
LongInt(tnt) * SDWaterColorArray[2].b div 255 + 255  tnt, 

469 
255 

470 
) 

471 
else 

472 
Tint(LongInt(tnt) * WaterColorArray[2].r div 255 + 255  tnt, 

473 
LongInt(tnt) * WaterColorArray[2].g div 255 + 255  tnt, 

474 
LongInt(tnt) * WaterColorArray[2].b div 255 + 255  tnt, 

475 
255 

476 
); 

3089  477 

4748  478 
glBindTexture(GL_TEXTURE_2D, SpritesData[sprite].Texture^.id); 
2292
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset

479 

87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset

480 
VertexBuffer[0].X:= lw; 
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset

481 
VertexBuffer[0].Y:= cWaterLine + WorldDy + dY; 
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset

482 
VertexBuffer[1].X:= lw; 
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset

483 
VertexBuffer[1].Y:= VertexBuffer[0].Y; 
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset

484 
VertexBuffer[2].X:= lw; 
4748  485 
VertexBuffer[2].Y:= VertexBuffer[0].Y + SpritesData[sprite].Height; 
2292
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset

486 
VertexBuffer[3].X:= lw; 
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset

487 
VertexBuffer[3].Y:= VertexBuffer[2].Y; 
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset

488 

2374  489 
shift:=  lw / cWaveWidth; 
2495  490 
TextureBuffer[0].X:= shift + ((  WorldDx + LongInt(RealTicks shr 6) * Dir + dX) mod cWaveWidth) / (cWaveWidth  1); 
2292
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset

491 
TextureBuffer[0].Y:= 0; 
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset

492 
TextureBuffer[1].X:= TextureBuffer[0].X + waves; 
2447
08d623a494e6
Smaxx's updated german translation + texture gap fixes + updated room list
koda
parents:
2434
diff
changeset

493 
TextureBuffer[1].Y:= TextureBuffer[0].Y; 
08d623a494e6
Smaxx's updated german translation + texture gap fixes + updated room list
koda
parents:
2434
diff
changeset

494 
TextureBuffer[2].X:= TextureBuffer[1].X; 
4748  495 
TextureBuffer[2].Y:= SpritesData[sprite].Texture^.ry; 
2292
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset

496 
TextureBuffer[3].X:= TextureBuffer[0].X; 
2447
08d623a494e6
Smaxx's updated german translation + texture gap fixes + updated room list
koda
parents:
2434
diff
changeset

497 
TextureBuffer[3].Y:= TextureBuffer[2].Y; 
2292
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset

498 

87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset

499 

87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset

500 
glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]); 
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset

501 
glTexCoordPointer(2, GL_FLOAT, 0, @TextureBuffer[0]); 
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset

502 
glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer)); 
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset

503 

3390  504 
Tint($FF, $FF, $FF, $FF); 
2292
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset

505 

87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset

506 
{for i:= 1 to cWaterSprCount do 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

507 
DrawSprite(sprWater, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

508 
i * cWaveWidth + ((WorldDx + (RealTicks shr 6) * Dir + dX) mod cWaveWidth)  (cScreenWidth div 2), 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

509 
cWaterLine + WorldDy + dY, 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

510 
0)} 
2288  511 
end; 
512 

3089  513 
procedure DrawRepeated(spr, sprL, sprR: TSprite; Shift, OffsetY: LongInt); 
3537
8f5b3108f29c
New approach to the lowres 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:
3523
diff
changeset

514 
var i, w, h, lw, lh, rw, rh, sw: LongInt; 
2426  515 
begin 
3405  516 
sw:= round(cScreenWidth / cScaleFactor); 
517 
if (SpritesData[sprL].Texture = nil) or (SpritesData[sprR].Texture = nil) then 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

518 
begin 
3537
8f5b3108f29c
New approach to the lowres 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:
3523
diff
changeset

519 
w:= SpritesData[spr].Width * SpritesData[spr].Texture^.Scale; 
8f5b3108f29c
New approach to the lowres 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:
3523
diff
changeset

520 
h:= SpritesData[spr].Height * SpritesData[spr].Texture^.Scale; 
3405  521 
i:= Shift mod w; 
522 
if i > 0 then dec(i, w); 

523 
dec(i, w * (sw div w + 1)); 

524 
repeat 

3537
8f5b3108f29c
New approach to the lowres 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:
3523
diff
changeset

525 
DrawTexture(i, WorldDy + LAND_HEIGHT + OffsetY  h, SpritesData[spr].Texture, SpritesData[spr].Texture^.Scale); 
3405  526 
inc(i, w) 
527 
until i > sw 

528 
end 

529 
else 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

530 
begin 
3537
8f5b3108f29c
New approach to the lowres 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:
3523
diff
changeset

531 
w:= SpritesData[spr].Width * SpritesData[spr].Texture^.Scale; 
8f5b3108f29c
New approach to the lowres 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:
3523
diff
changeset

532 
h:= SpritesData[spr].Height * SpritesData[spr].Texture^.Scale; 
8f5b3108f29c
New approach to the lowres 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:
3523
diff
changeset

533 
lw:= SpritesData[sprL].Width * SpritesData[spr].Texture^.Scale; 
8f5b3108f29c
New approach to the lowres 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:
3523
diff
changeset

534 
lh:= SpritesData[sprL].Height * SpritesData[spr].Texture^.Scale; 
8f5b3108f29c
New approach to the lowres 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:
3523
diff
changeset

535 
rw:= SpritesData[sprR].Width * SpritesData[spr].Texture^.Scale; 
8f5b3108f29c
New approach to the lowres 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:
3523
diff
changeset

536 
rh:= SpritesData[sprR].Height * SpritesData[spr].Texture^.Scale; 
3405  537 
dec(Shift, w div 2); 
3537
8f5b3108f29c
New approach to the lowres 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:
3523
diff
changeset

538 
DrawTexture(Shift, WorldDy + LAND_HEIGHT + OffsetY  h, SpritesData[spr].Texture, SpritesData[spr].Texture^.Scale); 
3697  539 

3537
8f5b3108f29c
New approach to the lowres 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:
3523
diff
changeset

540 
i:= Shift  lw; 
8f5b3108f29c
New approach to the lowres 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:
3523
diff
changeset

541 
while i >= sw  lw do 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

542 
begin 
3537
8f5b3108f29c
New approach to the lowres 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:
3523
diff
changeset

543 
DrawTexture(i, WorldDy + LAND_HEIGHT + OffsetY  lh, SpritesData[sprL].Texture, SpritesData[sprL].Texture^.Scale); 
8f5b3108f29c
New approach to the lowres 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:
3523
diff
changeset

544 
dec(i, lw); 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

545 
end; 
3697  546 

3405  547 
i:= Shift + w; 
548 
while i <= sw do 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

549 
begin 
3537
8f5b3108f29c
New approach to the lowres 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:
3523
diff
changeset

550 
DrawTexture(i, WorldDy + LAND_HEIGHT + OffsetY  rh, SpritesData[sprR].Texture, SpritesData[sprR].Texture^.Scale); 
8f5b3108f29c
New approach to the lowres 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:
3523
diff
changeset

551 
inc(i, rw) 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

552 
end 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

553 
end 
2426  554 
end; 
555 

556 

956  557 
procedure DrawWorld(Lag: LongInt); 
3695
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

558 
var i, t: LongInt; 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

559 
r: TSDL_Rect; 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

560 
tdx, tdy: Double; 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

561 
s: string[15]; 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

562 
highlight: Boolean; 
4393  563 
offsetX, offsetY, ScreenBottom: LongInt; 
3695
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

564 
VertexBuffer: array [0..3] of TVertex2f; 
4  565 
begin 
3811  566 
if not isPaused then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

567 
begin 
3523  568 
if ZoomValue < zoom then 
3444  569 
begin 
3523  570 
zoom:= zoom  0.002 * Lag; 
3697  571 
if ZoomValue > zoom then 
3523  572 
zoom:= ZoomValue 
3697  573 
end 
3774  574 
else 
3523  575 
if ZoomValue > zoom then 
3444  576 
begin 
3523  577 
zoom:= zoom + 0.002 * Lag; 
578 
if ZoomValue < zoom then 

579 
zoom:= ZoomValue 

3611  580 
end 
3444  581 
end 
3611  582 
else 
583 
ZoomValue:= zoom; 

2376  584 

3611  585 
// Sky 
586 
glClear(GL_COLOR_BUFFER_BIT); 

587 
//glPushMatrix; 

588 
//glScalef(1.0, 1.0, 1.0); 

756  589 

3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset

590 
if not isPaused then 
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset

591 
MoveCamera; 
162  592 

3611  593 
if (cReducedQuality and rqNoBackground) = 0 then 
1812  594 
begin 
3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset

595 
// Offsets relative to camera  spare them to wimpier cpus, no bg or flakes for them anyway 
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset

596 
ScreenBottom:= (WorldDy  trunc(cScreenHeight/cScaleFactor)  (cScreenHeight div 2) + cWaterLine); 
4374  597 
offsetY:= 10 * Min(0, 145  ScreenBottom); 
3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset

598 
SkyOffset:= offsetY div 35 + cWaveHeight; 
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset

599 
HorizontOffset:= SkyOffset; 
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset

600 
if ScreenBottom > SkyOffset then 
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset

601 
HorizontOffset:= HorizontOffset + ((ScreenBottomSkyOffset) div 20); 
3265
5fe62296fdea
 Parallax effect for horizont when water is out of sight
palewolf
parents:
3249
diff
changeset

602 

3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset

603 
// background 
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset

604 
DrawRepeated(sprSky, sprSkyL, sprSkyR, (WorldDx + LAND_WIDTH div 2) * 3 div 8, SkyOffset); 
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset

605 
DrawRepeated(sprHorizont, sprHorizontL, sprHorizontR, (WorldDx + LAND_WIDTH div 2) * 3 div 5, HorizontOffset); 
3695
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

606 
end; 
4  607 

3611  608 
DrawVisualGears(0); 
3697  609 

3611  610 
if (cReducedQuality and rq2DWater) = 0 then 
611 
begin 

3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset

612 
// Waves 
3697  613 
DrawWater(255, SkyOffset); 
3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset

614 
DrawWaves( 1, 0  WorldDx div 32,  cWaveHeight + offsetY div 35, 64); 
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset

615 
DrawWaves( 1, 25 + WorldDx div 25,  cWaveHeight + offsetY div 38, 48); 
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset

616 
DrawWaves( 1, 75  WorldDx div 19,  cWaveHeight + offsetY div 45, 32); 
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset

617 
DrawWaves(1, 100 + WorldDx div 14,  cWaveHeight + offsetY div 70, 24); 
3265
5fe62296fdea
 Parallax effect for horizont when water is out of sight
palewolf
parents:
3249
diff
changeset

618 
end 
3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset

619 
else 
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset

620 
DrawWaves(1, 100,  (cWaveHeight + (cWaveHeight shr 1)), 0); 
4  621 

3611  622 
DrawLand(WorldDx, WorldDy); 
1911  623 

3611  624 
DrawWater(255, 0); 
4  625 

1660  626 
// Attack bar 
3611  627 
if CurrentTeam <> nil then 
628 
case AttackBar of 

1660  629 
(* 1: begin 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

630 
r:= StuffPoz[sPowerBar]; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

631 
{$WARNINGS OFF} 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

632 
r.w:= (CurrentHedgehog^.Gear^.Power * 256) div cPowerDivisor; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

633 
{$WARNINGS ON} 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

634 
DrawSpriteFromRect(r, cScreenWidth  272, cScreenHeight  48, 16, 0, Surface); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

635 
end;*) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

636 
2: with CurrentHedgehog^ do 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

637 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

638 
tdx:= hwSign(Gear^.dX) * Sin(Gear^.Angle * Pi / cMaxAngle); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

639 
tdy:=  Cos(Gear^.Angle * Pi / cMaxAngle); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

640 
for i:= (Gear^.Power * 24) div cPowerDivisor downto 0 do 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

641 
DrawSprite(sprPower, 
4159
64e677349124
REmove stupid int64 conversions, provide real fixes to compiler hints
unc0rr
parents:
4132
diff
changeset

642 
hwRound(Gear^.X) + GetLaunchX(CurAmmoType, hwSign(Gear^.dX), Gear^.Angle) + LongInt(round(WorldDx + tdx * (24 + i * 2)))  16, 
64e677349124
REmove stupid int64 conversions, provide real fixes to compiler hints
unc0rr
parents:
4132
diff
changeset

643 
hwRound(Gear^.Y) + GetLaunchY(CurAmmoType, Gear^.Angle) + LongInt(round(WorldDy + tdy * (24 + i * 2)))  16, 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

644 
i) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

645 
end 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

646 
end; 
1660  647 

3611  648 
DrawVisualGears(1); 
2713  649 

3611  650 
DrawGears; 
4  651 

3611  652 
DrawVisualGears(2); 
1045  653 

3611  654 
DrawWater(cWaterOpacity, 0); 
2269
00f5704f5f39
add extra semiopaque layer of water to discolour objects in the water.
nemo
parents:
2268
diff
changeset

655 

3611  656 
// Waves 
657 
DrawWaves( 1, 25  WorldDx div 9,  cWaveHeight, 12); 

3265
5fe62296fdea
 Parallax effect for horizont when water is out of sight
palewolf
parents:
3249
diff
changeset

658 

3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset

659 
if (cReducedQuality and rq2DWater) = 0 then 
3265
5fe62296fdea
 Parallax effect for horizont when water is out of sight
palewolf
parents:
3249
diff
changeset

660 
begin 
3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset

661 
//DrawWater(cWaterOpacity,  offsetY div 40); 
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset

662 
DrawWaves(1, 50 + WorldDx div 6,  cWaveHeight  offsetY div 40, 8); 
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset

663 
DrawWater(cWaterOpacity,  offsetY div 20); 
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset

664 
DrawWaves( 1, 75  WorldDx div 4,  cWaveHeight  offsetY div 20, 2); 
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset

665 
DrawWater(cWaterOpacity,  offsetY div 10); 
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset

666 
DrawWaves( 1, 25 + WorldDx div 3,  cWaveHeight  offsetY div 10, 0); 
3265
5fe62296fdea
 Parallax effect for horizont when water is out of sight
palewolf
parents:
3249
diff
changeset

667 
end 
3611  668 
else 
669 
DrawWaves(1, 50,  (cWaveHeight shr 1), 0); 

3695
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

670 

2161
0c8634241fa4
Some work on zooming. Hedgewars are now unplayable.
unc0rr
parents:
2152
diff
changeset

671 

2288  672 
{$WARNINGS OFF} 
2161
0c8634241fa4
Some work on zooming. Hedgewars are now unplayable.
unc0rr
parents:
2152
diff
changeset

673 
// Target 
3104  674 
if (TargetPoint.X <> NoPointX) and (CurrentTeam <> nil) and (CurrentHedgehog <> nil) then 
675 
begin 

676 
with PHedgehog(CurrentHedgehog)^ do 

677 
begin 

3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3811
diff
changeset

678 
if (CurAmmoType = amBee) then 
3110  679 
DrawRotatedF(sprTargetBee, TargetPoint.X + WorldDx, TargetPoint.Y + WorldDy, 0, 0, (RealTicks shr 3) mod 360) 
680 
else 

3104  681 
DrawRotatedF(sprTargetP, TargetPoint.X + WorldDx, TargetPoint.Y + WorldDy, 0, 0, (RealTicks shr 3) mod 360); 
682 
end; 

683 
end; 

4  684 
{$WARNINGS ON} 
2161
0c8634241fa4
Some work on zooming. Hedgewars are now unplayable.
unc0rr
parents:
2152
diff
changeset

685 

3523  686 
// this scale is used to keep the various widgets at the same dimension at all zoom levels 
687 
SetScale(cDefaultZoomLevel); 

2724  688 

689 

690 
// Turn time 

2803
1f446fc5c8ec
allow to compile engine as library with HWLIBRARY symbol
koda
parents:
2786
diff
changeset

691 
{$IFDEF IPHONEOS} 
3025  692 
offsetX:= cScreenHeight  13; 
2803
1f446fc5c8ec
allow to compile engine as library with HWLIBRARY symbol
koda
parents:
2786
diff
changeset

693 
{$ELSE} 
3025  694 
offsetX:= 48; 
2803
1f446fc5c8ec
allow to compile engine as library with HWLIBRARY symbol
koda
parents:
2786
diff
changeset

695 
{$ENDIF} 
3463  696 
offsetY:= cOffsetY; 
3890
e4b7b30232fd
Extend time limit to 9999, remove ready timer if time is over 999 and stop drawing time if it is over 999 (draws wrong over 999 anyway)  this has the effect of allowing an "unlimited" time appearance if turns are over a quarter hour or so. This can be used to add an unlimited time scheme or button to ipad
nemo
parents:
3836
diff
changeset

697 
if ((TurnTimeLeft <> 0) and (TurnTimeLeft < 1000000)) or (ReadyTimeLeft <> 0) then 
3774  698 
begin 
699 
if ReadyTimeLeft <> 0 then 

700 
i:= Succ(Pred(ReadyTimeLeft) div 1000) 

701 
else 

702 
i:= Succ(Pred(TurnTimeLeft) div 1000); 

703 

4  704 
if i>99 then t:= 112 
705 
else if i>9 then t:= 96 

706 
else t:= 80; 

3463  707 
DrawSprite(sprFrame, (cScreenWidth shr 1) + t + offsetY, cScreenHeight  offsetX, 1); 
4  708 
while i > 0 do 
709 
begin 

710 
dec(t, 32); 

3463  711 
DrawSprite(sprBigDigit, (cScreenWidth shr 1) + t + offsetY, cScreenHeight  offsetX, i mod 10); 
4  712 
i:= i div 10 
713 
end; 

3463  714 
DrawSprite(sprFrame, (cScreenWidth shr 1) + t  4 + offsetY, cScreenHeight  offsetX, 0); 
4  715 
end; 
79  716 

2567  717 
{$IFNDEF IPHONEOS} 
2428  718 
// Timetrial 
719 
if ((TrainingFlags and tfTimeTrial) <> 0) and (TimeTrialStartTime > 0) then 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

720 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

721 
if TimeTrialStopTime = 0 then i:= RealTicks  TimeTrialStartTime else i:= TimeTrialStopTime  TimeTrialStartTime; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

722 
t:= 272; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

723 
// right frame 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

724 
DrawSprite(sprFrame, cScreenWidth div 2 + t, 8, 1); 
2428  725 
dec(t, 32); 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

726 
// 1 ms 
3697  727 
DrawSprite(sprBigDigit, cScreenWidth div 2 + t, 8, i mod 10); 
2428  728 
dec(t, 32); 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

729 
i:= i div 10; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

730 
// 10 ms 
2428  731 
DrawSprite(sprBigDigit, cScreenWidth div 2 + t, 8, i mod 10); 
732 
dec(t, 32); 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

733 
i:= i div 10; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

734 
// 100 ms 
2428  735 
DrawSprite(sprBigDigit, cScreenWidth div 2 + t, 8, i mod 10); 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

736 
dec(t, 16); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

737 
// Point 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

738 
DrawSprite(sprBigDigit, cScreenWidth div 2 + t, 8, 11); 
2428  739 
dec(t, 32); 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

740 
i:= i div 10; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

741 
// 1 s 
2428  742 
DrawSprite(sprBigDigit, cScreenWidth div 2 + t, 8, i mod 10); 
743 
dec(t, 32); 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

744 
i:= i div 10; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

745 
// 10s 
2428  746 
DrawSprite(sprBigDigit, cScreenWidth div 2 + t, 8, i mod 6); 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

747 
dec(t, 16); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

748 
// Point 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

749 
DrawSprite(sprBigDigit, cScreenWidth div 2 + t, 8, 10); 
2428  750 
dec(t, 32); 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

751 
i:= i div 6; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

752 
// 1 m 
2428  753 
DrawSprite(sprBigDigit, cScreenWidth div 2 + t, 8, i mod 10); 
754 
dec(t, 32); 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

755 
i:= i div 10; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

756 
// 10 m 
2428  757 
DrawSprite(sprBigDigit, cScreenWidth div 2 + t, 8, i mod 10); 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

758 
// left frame 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

759 
DrawSprite(sprFrame, cScreenWidth div 2 + t  4, 8, 0); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

760 
end; 
2567  761 
{$ENDIF} 
762 

4  763 
// Captions 
4393  764 
DrawCaptions; 
4  765 

47  766 
// Teams Healths 
547  767 
for t:= 0 to Pred(TeamsCount) do 
768 
with TeamsArray[t]^ do 

47  769 
begin 
2839  770 
highlight:= bShowFinger and (CurrentTeam = TeamsArray[t]) and ((RealTicks mod 1000) < 500); 
3697  771 

2747  772 
if highlight then 
3445  773 
Tint(Clan^.Color); 
2839  774 

775 
// draw name 

776 
DrawTexture(NameTagTex^.w  16, cScreenHeight + DrawHealthY, NameTagTex); 

3697  777 

2839  778 
// draw flag 
779 
DrawTexture(14, cScreenHeight + DrawHealthY, FlagTex); 

3697  780 

2839  781 
// draw health bar 
690  782 
r.x:= 0; 
783 
r.y:= 0; 

547  784 
r.w:= 2 + TeamHealthBarWidth; 
764
7513452b1d51
Now game looks almost like it did before switching to OpenGL
unc0rr
parents:
762
diff
changeset

785 
r.h:= HealthTex^.h; 
2747  786 
DrawFromRect(14, cScreenHeight + DrawHealthY, @r, HealthTex); 
690  787 

2839  788 
// draw health bar's right border 
83  789 
inc(r.x, cTeamHealthWidth + 2); 
790 
r.w:= 3; 

2839  791 
DrawFromRect(TeamHealthBarWidth + 16, cScreenHeight + DrawHealthY, @r, HealthTex); 
3770  792 

793 
// draw ai kill counter for gfAISurvival 

794 
if (GameFlags and gfAISurvival) <> 0 then begin 

795 
DrawTexture(TeamHealthBarWidth + 22, cScreenHeight + DrawHealthY, 

3773  796 
AIKillsTex); 
3770  797 
end; 
798 

2839  799 
// if highlighted, draw flag and other contents again to keep their colors 
800 
// this approach should be faster than drawing all borders one by one tinted or not 

801 
if highlight then 

802 
begin 

3390  803 
Tint($FF, $FF, $FF, $FF); 
690  804 

2839  805 
// draw name 
2747  806 
r.x:= 2; 
807 
r.y:= 2; 

2839  808 
r.w:= NameTagTex^.w  4; 
809 
r.h:= NameTagTex^.h  4; 

810 
DrawFromRect(NameTagTex^.w  14, cScreenHeight + DrawHealthY + 2, @r, NameTagTex); 

811 
// draw flag 

2747  812 
r.w:= 22; 
813 
r.h:= 15; 

814 
DrawFromRect(12, cScreenHeight + DrawHealthY + 2, @r, FlagTex); 

2839  815 
// draw health bar 
816 
r.w:= TeamHealthBarWidth + 1; 

817 
r.h:= HealthTex^.h  4; 

818 
DrawFromRect(16, cScreenHeight + DrawHealthY + 2, @r, HealthTex); 

2747  819 
end; 
47  820 
end; 
821 

5  822 
// Lag alert 
2567  823 
if isInLag then DrawSprite(sprLag, 32  (cScreenWidth shr 1), 32, (RealTicks shr 7) mod 12); 
4  824 

5  825 
// Wind bar 
2567  826 
{$IFDEF IPHONEOS} 
3405  827 
offsetX:= cScreenHeight  13; 
828 
offsetY:= (cScreenWidth shr 1) + 74; 

2567  829 
{$ELSE} 
3405  830 
offsetX:= 30; 
831 
offsetY:= 180; 

2567  832 
{$ENDIF} 
3405  833 
DrawSprite(sprWindBar, (cScreenWidth shr 1)  offsetY, cScreenHeight  offsetX, 0); 
834 
if WindBarWidth > 0 then 

835 
begin 

836 
{$WARNINGS OFF} 

837 
r.x:= 8  (RealTicks shr 6) mod 8; 

838 
{$WARNINGS ON} 

839 
r.y:= 0; 

840 
r.w:= WindBarWidth; 

841 
r.h:= 13; 

842 
DrawSpriteFromRect(sprWindR, r, (cScreenWidth shr 1)  offsetY + 77, cScreenHeight  offsetX + 2, 13, 0); 

843 
end 

844 
else 

845 
if WindBarWidth < 0 then 

846 
begin 

847 
{$WARNINGS OFF} 

3407  848 
r.x:= (Longword(WindBarWidth) + RealTicks shr 6) mod 8; 
3405  849 
{$WARNINGS ON} 
850 
r.y:= 0; 

851 
r.w:=  WindBarWidth; 

852 
r.h:= 13; 

853 
DrawSpriteFromRect(sprWindL, r, (cScreenWidth shr 1)  offsetY + 74 + WindBarWidth, cScreenHeight  offsetX + 2, 13, 0); 

854 
end; 

5  855 

161  856 
// AmmoMenu 
3434  857 
if (AMxShift < AMWidth) or bShowAmmoMenu then ShowAmmoMenu; 
161  858 

2287  859 
// Cursor 
860 
if isCursorVisible and bShowAmmoMenu then 

861 
DrawSprite(sprArrow, CursorPoint.X, cScreenHeight  CursorPoint.Y, (RealTicks shr 6) mod 8); 

942  862 

2287  863 
DrawChat; 
4  864 

2567  865 
if fastUntilLag then DrawCentered(0, (cScreenHeight shr 1), SyncTexture); 
866 
if isPaused then DrawCentered(0, (cScreenHeight shr 1), PauseTexture); 

3774  867 
if not isFirstFrame and (missionTimer <> 0) or isPaused or fastUntilLag or (GameState = gsConfirm) then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

868 
begin 
3774  869 
if (ReadyTimeLeft = 0) and (missionTimer > 0) then dec(missionTimer, Lag); 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

870 
if missionTimer < 0 then missionTimer:= 0; // avoid subtracting below 0 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

871 
if missionTex <> nil then 
4374  872 
DrawCentered(0, Min((cScreenHeight shr 1) + 100, cScreenHeight  48  missionTex^.h), missionTex); 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

873 
end; 
2786  874 

2724  875 
// fps 
876 
{$IFDEF IPHONEOS} 

3463  877 
offsetX:= 8; 
2724  878 
{$ELSE} 
3463  879 
offsetX:= 10; 
2724  880 
{$ENDIF} 
3463  881 
offsetY:= cOffsetY; 
3695
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

882 
inc(Frames); 
2850
f6f8db825ce7
A little clock for convenience in finding things in demos
nemo
parents:
2839
diff
changeset

883 

3695
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

884 
if cShowFPS or (GameType = gmtDemo) then inc(CountTicks, Lag); 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

885 
if (GameType = gmtDemo) and (CountTicks >= 1000) then 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

886 
begin 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

887 
i:=GameTicks div 1000; 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

888 
t:= i mod 60; 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

889 
s:= inttostr(t); 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

890 
if t < 10 then s:= '0' + s; 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

891 
i:= i div 60; 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

892 
t:= i mod 60; 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

893 
s:= inttostr(t) + ':' + s; 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

894 
if t < 10 then s:= '0' + s; 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

895 
s:= inttostr(i div 60) + ':' + s; 
3697  896 

3695
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

897 
if timeTexture <> nil then 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

898 
FreeTexture(timeTexture); 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

899 
timeTexture:= nil; 
3697  900 

3695
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

901 
tmpSurface:= TTF_RenderUTF8_Blended(Fontz[fnt16].Handle, Str2PChar(s), cWhiteColorChannels); 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

902 
tmpSurface:= doSurfaceConversion(tmpSurface); 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

903 
timeTexture:= Surface2Tex(tmpSurface, false); 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

904 
SDL_FreeSurface(tmpSurface) 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

905 
end; 
2850
f6f8db825ce7
A little clock for convenience in finding things in demos
nemo
parents:
2839
diff
changeset

906 

3695
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

907 
if timeTexture <> nil then 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

908 
DrawTexture((cScreenWidth shr 1)  20  timeTexture^.w  offsetY, offsetX + timeTexture^.h+5, timeTexture); 
2850
f6f8db825ce7
A little clock for convenience in finding things in demos
nemo
parents:
2839
diff
changeset

909 

3695
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

910 
if cShowFPS then 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

911 
begin 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

912 
if CountTicks >= 1000 then 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

913 
begin 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

914 
FPS:= Frames; 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

915 
Frames:= 0; 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

916 
CountTicks:= 0; 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

917 
s:= inttostr(FPS) + ' fps'; 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

918 
if fpsTexture <> nil then 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

919 
FreeTexture(fpsTexture); 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

920 
fpsTexture:= nil; 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

921 
tmpSurface:= TTF_RenderUTF8_Blended(Fontz[fnt16].Handle, Str2PChar(s), cWhiteColorChannels); 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

922 
tmpSurface:= doSurfaceConversion(tmpSurface); 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

923 
fpsTexture:= Surface2Tex(tmpSurface, false); 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

924 
SDL_FreeSurface(tmpSurface) 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

925 
end; 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

926 
if fpsTexture <> nil then 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

927 
DrawTexture((cScreenWidth shr 1)  60  offsetY, offsetX, fpsTexture); 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

928 
end; 
174  929 

3695
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

930 
if CountTicks >= 1000 then CountTicks:= 0; 
2850
f6f8db825ce7
A little clock for convenience in finding things in demos
nemo
parents:
2839
diff
changeset

931 

3695
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

932 
// lag warning (?) 
c11abf387a7d
reverted stereo craziness  the experimental3D branch has been created for a reason
koda
parents:
3693
diff
changeset

933 
inc(SoundTimerTicks, Lag); 
174  934 
if SoundTimerTicks >= 50 then 
935 
begin 

936 
SoundTimerTicks:= 0; 

937 
if cVolumeDelta <> 0 then 

938 
begin 

939 
str(ChangeVolume(cVolumeDelta), s); 

2619  940 
AddCaption(Format(trmsg[sidVolume], s), cWhiteColor, capgrpVolume) 
174  941 
end 
756  942 
end; 
943 

2724  944 
if GameState = gsConfirm then 
3025  945 
DrawCentered(0, (cScreenHeight shr 1), ConfirmTexture); 
2161
0c8634241fa4
Some work on zooming. Hedgewars are now unplayable.
unc0rr
parents:
2152
diff
changeset

946 

3107  947 
if ScreenFade <> sfNone then 
948 
begin 

949 
if not isFirstFrame then 

950 
case ScreenFade of 

951 
sfToBlack, sfToWhite: if ScreenFadeValue + Lag * ScreenFadeSpeed < sfMax then 

952 
inc(ScreenFadeValue, Lag * ScreenFadeSpeed) 

953 
else 

3123  954 
ScreenFadeValue:= sfMax; 
3107  955 
sfFromBlack, sfFromWhite: if ScreenFadeValue  Lag * ScreenFadeSpeed > 0 then 
956 
dec(ScreenFadeValue, Lag * ScreenFadeSpeed) 

957 
else 

3123  958 
ScreenFadeValue:= 0; 
3107  959 
end; 
960 
if ScreenFade <> sfNone then 

961 
begin 

962 
case ScreenFade of 

3376  963 
sfToBlack, sfFromBlack: Tint(0, 0, 0, ScreenFadeValue * 255 div 1000); 
964 
sfToWhite, sfFromWhite: Tint($FF, $FF, $FF, ScreenFadeValue * 255 div 1000); 

3107  965 
end; 
3697  966 

3113  967 
VertexBuffer[0].X:= cScreenWidth; 
968 
VertexBuffer[0].Y:= cScreenHeight; 

969 
VertexBuffer[1].X:= cScreenWidth; 

970 
VertexBuffer[1].Y:= 0; 

971 
VertexBuffer[2].X:= cScreenWidth; 

972 
VertexBuffer[2].Y:= 0; 

973 
VertexBuffer[3].X:= cScreenWidth; 

974 
VertexBuffer[3].Y:= cScreenHeight; 

3697  975 

3376  976 
glDisable(GL_TEXTURE_2D); 
3641  977 

3113  978 
glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]); 
979 
glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer)); 

3641  980 

3376  981 
glEnable(GL_TEXTURE_2D); 
3390  982 
Tint($FF, $FF, $FF, $FF); 
3123  983 
if not isFirstFrame and ((ScreenFadeValue = 0) or (ScreenFadeValue = sfMax)) then ScreenFade:= sfNone 
3107  984 
end 
985 
end; 

986 

3123  987 
SetScale(zoom); 
988 

989 
// Cursor 

990 
if isCursorVisible then 

991 
begin 

992 
if not bShowAmmoMenu then 

3204  993 
begin 
3123  994 
with CurrentHedgehog^ do 
3582
4debed8656d7
fix segfault on HHgear being 0 (e.g. after drowning) in cursor/target selection mode, thanks "ivze" for the headsup!
sheepluva
parents:
3580
diff
changeset

995 
if (Gear <> nil) and ((Gear^.State and gstHHChooseTarget) <> 0) then 
3123  996 
begin 
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3811
diff
changeset

997 
i:= GetAmmoEntry(CurrentHedgehog^)^.Pos; 
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3811
diff
changeset

998 
with Ammoz[CurAmmoType] do 
3123  999 
if PosCount > 1 then 
3204  1000 
DrawSprite(PosSprite, CursorPoint.X  (SpritesData[PosSprite].Width shr 1), cScreenHeight  CursorPoint.Y  (SpritesData[PosSprite].Height shr 1),i); 
3123  1001 
end; 
3204  1002 
DrawSprite(sprArrow, CursorPoint.X, cScreenHeight  CursorPoint.Y, (RealTicks shr 6) mod 8) 
1003 
end 

3123  1004 
end; 
3107  1005 
isFirstFrame:= false 
4  1006 
end; 
1007 

79  1008 
procedure MoveCamera; 
2428  1009 
var EdgesDist, wdy: LongInt; 
3638
33ee433749ba
touch overlay reworked, improvements to zoom and confirmation
koda
parents:
3629
diff
changeset

1010 
PrevSentPointTime: LongWord = 0; 
4  1011 
begin 
3551  1012 
{$IFNDEF IPHONEOS} 
2970
011075f93746
Let's try this too (override following remote if in ammo menu)
nemo
parents:
2959
diff
changeset

1013 
if (not (CurrentTeam^.ExtDriven and isCursorVisible and not bShowAmmoMenu)) and cHasFocus then 
3551  1014 
begin 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1015 
SDL_GetMouseState(@CursorPoint.X, @CursorPoint.Y); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1016 
CursorPoint.X:= CursorPoint.X  (cScreenWidth shr 1); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1017 
CursorPoint.Y:= cScreenHeight  CursorPoint.Y; 
3551  1018 
end; 
1019 
{$ENDIF} 

678  1020 

2762
2fbc8d35eb52
Mode to place hogs at start of game. Will probably need a bit more testing.
nemo
parents:
2747
diff
changeset

1021 
if (not PlacingHogs) and (FollowGear <> nil) and (not isCursorVisible) and (not fastUntilLag) then 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1022 
if abs(CursorPoint.X  prevPoint.X) + abs(CursorPoint.Y  prevpoint.Y) > 4 then 
3680  1023 
begin 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1024 
FollowGear:= nil; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1025 
prevPoint:= CursorPoint; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1026 
exit 
3680  1027 
end 
1028 
else 

1029 
begin 

2970
011075f93746
Let's try this too (override following remote if in ammo menu)
nemo
parents:
2959
diff
changeset

1030 
CursorPoint.X:= (prevPoint.X * 7 + hwRound(FollowGear^.X) + hwSign(FollowGear^.dX) * 100 + WorldDx) div 8; 
011075f93746
Let's try this too (override following remote if in ammo menu)
nemo
parents:
2959
diff
changeset

1031 
CursorPoint.Y:= (prevPoint.Y * 7 + cScreenHeight  (hwRound(FollowGear^.Y) + WorldDy)) div 8; 
3680  1032 
end; 
4  1033 

2375  1034 
wdy:= trunc(cScreenHeight / cScaleFactor) + cScreenHeight div 2  cWaterLine  cVisibleWater; 
1035 
if WorldDy < wdy then WorldDy:= wdy; 

1036 

2197  1037 
if ((CursorPoint.X = prevPoint.X) and (CursorPoint.Y = prevpoint.Y)) then exit; 
4  1038 

3434  1039 
if AMxShift < AMWidth then 
3680  1040 
begin 
3463  1041 
{$IFDEF IPHONEOS} 
3434  1042 
if CursorPoint.X < cScreenWidth div 2 + AMxShift  AMWidth then CursorPoint.X:= cScreenWidth div 2 + AMxShift  AMWidth; 
1043 
if CursorPoint.X > cScreenWidth div 2 + AMxShift  AMxOffset then CursorPoint.X:= cScreenWidth div 2 + AMxShift  AMxOffset; 

1044 
if CursorPoint.Y < cScreenHeight  AMyOffset  SlotsNum * AMSlotSize then CursorPoint.Y:= cScreenHeight  AMyOffset  SlotsNum * AMSlotSize; 

1045 
if CursorPoint.Y > cScreenHeight  AMyOffset then CursorPoint.Y:= cScreenHeight  AMyOffset; 

3463  1046 
{$ELSE} 
3434  1047 
if CursorPoint.X < cScreenWidth div 2 + AMxShift  AMWidth + AMSlotSize then CursorPoint.X:= cScreenWidth div 2 + AMxShift  AMWidth + AMSlotSize; 
1048 
if CursorPoint.X > cScreenWidth div 2 + AMxShift  AMxOffset then CursorPoint.X:= cScreenWidth div 2 + AMxShift  AMxOffset; 

1049 
if CursorPoint.Y > AMyOffset + (SlotsNum + 1) * AMSlotSize then CursorPoint.Y:= AMyOffset + (SlotsNum + 1) * AMSlotSize; 

1050 
if CursorPoint.Y < AMyOffset + AMSlotSize then CursorPoint.Y:= AMyOffset + AMSlotSize; 

3463  1051 
{$ENDIF} 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1052 
prevPoint:= CursorPoint; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1053 
if cHasFocus then SDL_WarpMouse(CursorPoint.X + cScreenWidth div 2, cScreenHeight  CursorPoint.Y); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1054 
exit 
3680  1055 
end; 
162  1056 

4  1057 
if isCursorVisible then 
3680  1058 
begin 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1059 
if (not CurrentTeam^.ExtDriven) and (GameTicks >= PrevSentPointTime + cSendCursorPosTime) then 
3680  1060 
begin 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1061 
SendIPCXY('P', CursorPoint.X  WorldDx, cScreenHeight  CursorPoint.Y  WorldDy); 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1062 
PrevSentPointTime:= GameTicks 
3680  1063 
end; 
1064 
EdgesDist:= cCursorEdgesDist 

1065 
end 

1066 
else 

1067 
EdgesDist:= cGearScrEdgesDist; 

1068 

1069 
// this generates the border around the screen that moves the camera when cursor is near it 

1070 
if isCursorVisible or (FollowGear <> nil) then 

1071 
begin 

1072 
if CursorPoint.X <  cScreenWidth div 2 + EdgesDist then 

1073 
begin 

1074 
WorldDx:= WorldDx  CursorPoint.X  cScreenWidth div 2 + EdgesDist; 

1075 
CursorPoint.X:=  cScreenWidth div 2 + EdgesDist 

1076 
end 

1077 
else 

1078 
if CursorPoint.X > cScreenWidth div 2  EdgesDist then 

1079 
begin 

1080 
WorldDx:= WorldDx  CursorPoint.X + cScreenWidth div 2  EdgesDist; 

1081 
CursorPoint.X:= cScreenWidth div 2  EdgesDist 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1082 
end; 
3680  1083 
if CursorPoint.Y < EdgesDist then 
1084 
begin 

1085 
WorldDy:= WorldDy + CursorPoint.Y  EdgesDist; 

1086 
CursorPoint.Y:= EdgesDist 

1087 
end 

1088 
else 

1089 
if CursorPoint.Y > cScreenHeight  EdgesDist then 

1090 
begin 

1091 
WorldDy:= WorldDy + CursorPoint.Y  cScreenHeight + EdgesDist; 

1092 
CursorPoint.Y:= cScreenHeight  EdgesDist 

1093 
end; 

1094 
end 

1095 
else 

1096 
if cHasFocus then 

1097 
begin 

1098 
WorldDx:= WorldDx  CursorPoint.X + prevPoint.X; 

1099 
WorldDy:= WorldDy + CursorPoint.Y  prevPoint.Y; 

1100 
CursorPoint.X:= 0; 

1101 
CursorPoint.Y:= cScreenHeight div 2; 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1102 
end; 
351  1103 

3680  1104 
// this moves the camera according to CursorPoint X and Y 
4  1105 
prevPoint:= CursorPoint; 
2567  1106 
if cHasFocus then SDL_WarpMouse(CursorPoint.X + (cScreenWidth shr 1), cScreenHeight  CursorPoint.Y); 
1760  1107 
if WorldDy > LAND_HEIGHT + 1024 then WorldDy:= LAND_HEIGHT + 1024; 
2375  1108 
if WorldDy < wdy then WorldDy:= wdy; 
2426  1109 
if WorldDx <  LAND_WIDTH  1024 then WorldDx:=  LAND_WIDTH  1024; 
1110 
if WorldDx > 1024 then WorldDx:= 1024; 

4  1111 
end; 
1112 

2905  1113 
procedure ShowMission(caption, subcaption, text: ansistring; icon, time : LongInt); 
2786  1114 
var r: TSDL_Rect; 
1115 
begin 

1116 
r.w:= 32; 

1117 
r.h:= 32; 

1118 

1119 
if time = 0 then time:= 5000; 

1120 
missionTimer:= time; 

3697  1121 
if missionTex <> 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:
3483
diff
changeset

1122 
FreeTexture(missionTex); 
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:
3483
diff
changeset

1123 
missionTex:= nil; 
2786  1124 

1125 
if icon > 1 then 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1126 
begin 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1127 
r.x:= 0; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1128 
r.y:= icon * 32; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1129 
missionTex:= RenderHelpWindow(caption, subcaption, text, '', 0, MissionIcons, @r) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1130 
end 
2786  1131 
else 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1132 
begin 
4626
775f43e90383
fixed showmission so it actually displays the right icons
Henek
parents:
4482
diff
changeset

1133 
r.x:= ((icon  1) shr 4) * 32; 
775f43e90383
fixed showmission so it actually displays the right icons
Henek
parents:
4482
diff
changeset

1134 
r.y:= ((icon  1) mod 16) * 32; 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1135 
missionTex:= RenderHelpWindow(caption, subcaption, text, '', 0, SpritesData[sprAMAmmos].Surface, @r) 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1136 
end; 
2786  1137 
end; 
1138 

1139 
procedure HideMission; 

1140 
begin 

3045  1141 
missionTimer:= 0; 
1142 
if missionTex <> nil then FreeTexture(missionTex); 

2786  1143 
end; 
1144 

3032  1145 
procedure ShakeCamera(amount: LongWord); 
1146 
begin 

4374  1147 
amount:= Max(1, amount); 
3032  1148 
WorldDx:= WorldDx  amount + LongInt(getRandom(1 + amount * 2)); 
1149 
WorldDy:= WorldDy  amount + LongInt(getRandom(1 + amount * 2)); 

1150 
end; 

1151 

3038  1152 
procedure initModule; 
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2682
diff
changeset

1153 
begin 
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1154 
fpsTexture:= nil; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1155 
FollowGear:= nil; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1156 
WindBarWidth:= 0; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1157 
bShowAmmoMenu:= false; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1158 
bSelected:= false; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1159 
bShowFinger:= false; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1160 
Frames:= 0; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1161 
WorldDx:= 512; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1162 
WorldDy:= 256; 
3697  1163 

2948
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1164 
FPS:= 0; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1165 
CountTicks:= 0; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1166 
SoundTimerTicks:= 0; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1167 
prevPoint.X:= 0; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1168 
prevPoint.Y:= 0; 
3f21a9dc93d0
Replace tabs with spaces using 'expand t 4' command
unc0rr
parents:
2931
diff
changeset

1169 
missionTimer:= 0; 
3240  1170 
missionTex:= nil; 
3463  1171 
cOffsetY:= 0; 
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2682
diff
changeset

1172 
end; 
4  1173 

3038  1174 
procedure freeModule; 
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2713
diff
changeset

1175 
begin 
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2713
diff
changeset

1176 
end; 
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2713
diff
changeset

1177 

4  1178 
end. 