author  Wuzzy <Wuzzy2@mail.ru> 
Fri, 11 Jan 2019 03:50:06 +0100  
changeset 14552  05b929808585 
parent 14395  f39d34d78028 
child 14553  5ae97eab70eb 
permissions  rwrr 
4976  1 
(* 
2 
* Hedgewars, a free turn based strategy game 

11046  3 
* Copyright (c) 20042015 Andrey Korotaev <unC0Rr@gmail.com> 
4976  4 
* 
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 

8 
* 

10443
42dadeb6e8ae
Remove switching of hog's hat to chef. do it in draw instead.
nemo
parents:
10441
diff
changeset

9 
* This program is distributed in the hope that it will be useful, 
4976  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. 

13 
* 

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 

10108
c68cf030eded
update FSF address. note: two sdl include files (by Sam Lantinga) still have the old FSF address in their copyright  but I ain't gonna touch their copyright headers
sheepluva
parents:
10082
diff
changeset

16 
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 021101301 USA 
4976  17 
*) 
18 

4388  19 
{$INCLUDE "options.inc"} 
4976  20 

4388  21 
unit uGearsRender; 
22 

23 
interface 

7671  24 
uses uTypes, uConsts, GLunit, uFloat, SDLh; 
4388  25 

8026
4a4f21070479
merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents:
7978
diff
changeset

26 
type 
10015  27 
Tar = record 
8330  28 
X, Y: hwFloat; 
29 
dLen: hwFloat; 

30 
b : boolean; 

31 
end; 

8026
4a4f21070479
merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents:
7978
diff
changeset

32 
TRopePoints = record 
8330  33 
Count : Longword; 
34 
HookAngle : GLfloat; 

35 
ar : array[0..MAXROPEPOINTS] of Tar; 

36 
rounded : array[0..MAXROPEPOINTS + 2] of TVertex2f; 

37 
end; 

4388  38 
procedure RenderGear(Gear: PGear; x, y: LongInt); 
12210
442bab755bb4
Render gear timers in front of water
Wuzzy <almikes@aol.com>
parents:
12193
diff
changeset

39 
procedure RenderGearTimer(Gear: PGear; x, y: LongInt); 
13634
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

40 
procedure RenderHHGuiExtras(Gear: PGear; ox, oy: LongInt); 
10866  41 
procedure DrawHHOrder(); 
4388  42 

43 
var RopePoints: record 

44 
Count: Longword; 

45 
HookAngle: GLfloat; 

46 
ar: array[0..MAXROPEPOINTS] of record 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

47 
X, Y: hwFloat; 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

48 
dLen: hwFloat; 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

49 
b: boolean; 
8733
b6002f1956d5
Hard math to fix issue 571. Well, not really hard math,
unc0rr
parents:
8689
diff
changeset

50 
sx, sy, sb: boolean; 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

51 
end; 
4388  52 
rounded: array[0..MAXROPEPOINTS + 2] of TVertex2f; 
53 
end; 

54 

55 
implementation 

9285  56 
uses uRender, uUtils, uVariables, uAmmos, Math, uVisualGearsList; 
4388  57 

58 
procedure DrawRopeLinesRQ(Gear: PGear); 

10523
00ac079fa51f
fix some nasty rendering issues reported by Nexia  thanks a lot!
sheepluva
parents:
10443
diff
changeset

59 
var n: LongInt; 
4388  60 
begin 
61 
with RopePoints do 

62 
begin 

63 
rounded[Count].X:= hwRound(Gear^.X); 

64 
rounded[Count].Y:= hwRound(Gear^.Y); 

65 
rounded[Count + 1].X:= hwRound(Gear^.Hedgehog^.Gear^.X); 

66 
rounded[Count + 1].Y:= hwRound(Gear^.Hedgehog^.Gear^.Y); 

67 
end; 

68 

69 
if (RopePoints.Count > 0) or (Gear^.Elasticity.QWordValue > 0) then 

70 
begin 

10523
00ac079fa51f
fix some nasty rendering issues reported by Nexia  thanks a lot!
sheepluva
parents:
10443
diff
changeset

71 
EnableTexture(false); 
4388  72 
//glEnable(GL_LINE_SMOOTH); 
73 

10848  74 

75 
Tint(Gear^.Tint shr 24 div 3, Gear^.Tint shr 16 and $FF div 3, Gear^.Tint shr 8 and $FF div 3, Gear^.Tint and $FF); 

10523
00ac079fa51f
fix some nasty rendering issues reported by Nexia  thanks a lot!
sheepluva
parents:
10443
diff
changeset

76 

00ac079fa51f
fix some nasty rendering issues reported by Nexia  thanks a lot!
sheepluva
parents:
10443
diff
changeset

77 
n:= RopePoints.Count + 2; 
00ac079fa51f
fix some nasty rendering issues reported by Nexia  thanks a lot!
sheepluva
parents:
10443
diff
changeset

78 

00ac079fa51f
fix some nasty rendering issues reported by Nexia  thanks a lot!
sheepluva
parents:
10443
diff
changeset

79 
SetVertexPointer(@RopePoints.rounded[0], n); 
4388  80 

10523
00ac079fa51f
fix some nasty rendering issues reported by Nexia  thanks a lot!
sheepluva
parents:
10443
diff
changeset

81 
openglPushMatrix(); 
00ac079fa51f
fix some nasty rendering issues reported by Nexia  thanks a lot!
sheepluva
parents:
10443
diff
changeset

82 
openglTranslatef(WorldDx, WorldDy, 0); 
4388  83 

10523
00ac079fa51f
fix some nasty rendering issues reported by Nexia  thanks a lot!
sheepluva
parents:
10443
diff
changeset

84 
glLineWidth(3.0 * cScaleFactor); 
00ac079fa51f
fix some nasty rendering issues reported by Nexia  thanks a lot!
sheepluva
parents:
10443
diff
changeset

85 
glDrawArrays(GL_LINE_STRIP, 0, n); 
10848  86 
Tint(Gear^.Tint); 
10264
cb4331b032f4
use cScaleFactor where I incorrectly used the variable zoom in the past. i was young and needed the money
sheepluva
parents:
10142
diff
changeset

87 
glLineWidth(2.0 * cScaleFactor); 
10523
00ac079fa51f
fix some nasty rendering issues reported by Nexia  thanks a lot!
sheepluva
parents:
10443
diff
changeset

88 
glDrawArrays(GL_LINE_STRIP, 0, n); 
4388  89 

9666
8dcb25112d96
 Bring back white dot in the center of crosshair. Crosshair is blurred now!
unc0rr
parents:
9655
diff
changeset

90 
untint; 
4388  91 

10523
00ac079fa51f
fix some nasty rendering issues reported by Nexia  thanks a lot!
sheepluva
parents:
10443
diff
changeset

92 
openglPopMatrix(); 
4388  93 

10523
00ac079fa51f
fix some nasty rendering issues reported by Nexia  thanks a lot!
sheepluva
parents:
10443
diff
changeset

94 
EnableTexture(true); 
4388  95 
//glDisable(GL_LINE_SMOOTH) 
96 
end 

97 
end; 

98 

99 

6508
bf5db4517148
Fix regression from 6480 too. Extra assignments might make this slightly less efficient.
nemo
parents:
6490
diff
changeset

100 
function DrawRopeLine(X1, Y1, X2, Y2, roplen: LongInt): LongInt; 
6490  101 
var eX, eY, dX, dY: LongInt; 
102 
i, sX, sY, x, y, d: LongInt; 

103 
b: boolean; 

104 
begin 

4388  105 
if (X1 = X2) and (Y1 = Y2) then 
6490  106 
begin 
107 
//OutError('WARNING: zero length rope line!', false); 

10015  108 
DrawRopeLine:= 0; 
6490  109 
exit 
110 
end; 

4388  111 
eX:= 0; 
112 
eY:= 0; 

113 
dX:= X2  X1; 

114 
dY:= Y2  Y1; 

115 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

116 
if (dX > 0) then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

117 
sX:= 1 
4388  118 
else 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

119 
if (dX < 0) then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

120 
begin 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

121 
sX:= 1; 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

122 
dX:= dX 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

123 
end 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

124 
else sX:= dX; 
4388  125 

8689  126 
if (dY > 0) then 
6490  127 
sY:= 1 
4388  128 
else 
6490  129 
if (dY < 0) then 
4388  130 
begin 
6490  131 
sY:= 1; 
132 
dY:= dY 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

133 
end 
8689  134 
else 
6490  135 
sY:= dY; 
136 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

137 
if (dX > dY) then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

138 
d:= dX 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

139 
else 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

140 
d:= dY; 
6490  141 

142 
x:= X1; 

143 
y:= Y1; 

144 

145 
for i:= 0 to d do 

146 
begin 

147 
inc(eX, dX); 

148 
inc(eY, dY); 

149 
b:= false; 

150 
if (eX > d) then 

151 
begin 

152 
dec(eX, d); 

153 
inc(x, sX); 

154 
b:= true 

155 
end; 

156 
if (eY > d) then 

157 
begin 

158 
dec(eY, d); 

159 
inc(y, sY); 

160 
b:= true 

161 
end; 

162 
if b then 

163 
begin 

164 
inc(roplen); 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

165 
if (roplen mod 4) = 0 then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

166 
DrawSprite(sprRopeNode, x  2, y  2, 0) 
6490  167 
end 
6508
bf5db4517148
Fix regression from 6480 too. Extra assignments might make this slightly less efficient.
nemo
parents:
6490
diff
changeset

168 
end; 
10015  169 
DrawRopeLine:= roplen; 
6490  170 
end; 
171 

172 
procedure DrawRope(Gear: PGear); 

10562  173 
var roplen, i: LongInt; 
4388  174 
begin 
10682  175 
if Gear^.Hedgehog^.Gear = nil then exit; 
10848  176 
if (Gear^.Tag = 1) or ((cReducedQuality and rqSimpleRope) <> 0) then 
4388  177 
DrawRopeLinesRQ(Gear) 
178 
else 

179 
begin 

180 
roplen:= 0; 

181 
if RopePoints.Count > 0 then 

182 
begin 

183 
i:= 0; 

184 
while i < Pred(RopePoints.Count) do 

185 
begin 

6508
bf5db4517148
Fix regression from 6480 too. Extra assignments might make this slightly less efficient.
nemo
parents:
6490
diff
changeset

186 
roplen:= DrawRopeLine(hwRound(RopePoints.ar[i].X) + WorldDx, hwRound(RopePoints.ar[i].Y) + WorldDy, 
6490  187 
hwRound(RopePoints.ar[Succ(i)].X) + WorldDx, hwRound(RopePoints.ar[Succ(i)].Y) + WorldDy, roplen); 
4388  188 
inc(i) 
189 
end; 

6508
bf5db4517148
Fix regression from 6480 too. Extra assignments might make this slightly less efficient.
nemo
parents:
6490
diff
changeset

190 
roplen:= DrawRopeLine(hwRound(RopePoints.ar[i].X) + WorldDx, hwRound(RopePoints.ar[i].Y) + WorldDy, 
6490  191 
hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, roplen); 
6508
bf5db4517148
Fix regression from 6480 too. Extra assignments might make this slightly less efficient.
nemo
parents:
6490
diff
changeset

192 
roplen:= DrawRopeLine(hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 
6490  193 
hwRound(Gear^.Hedgehog^.Gear^.X) + WorldDx, hwRound(Gear^.Hedgehog^.Gear^.Y) + WorldDy, roplen); 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

194 
end 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

195 
else 
4388  196 
if Gear^.Elasticity.QWordValue > 0 then 
6508
bf5db4517148
Fix regression from 6480 too. Extra assignments might make this slightly less efficient.
nemo
parents:
6490
diff
changeset

197 
roplen:= DrawRopeLine(hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 
6490  198 
hwRound(Gear^.Hedgehog^.Gear^.X) + WorldDx, hwRound(Gear^.Hedgehog^.Gear^.Y) + WorldDy, roplen); 
4388  199 
end; 
200 

201 

202 
if RopePoints.Count > 0 then 

6999  203 
DrawSpriteRotated(sprRopeHook, hwRound(RopePoints.ar[0].X) + WorldDx, hwRound(RopePoints.ar[0].Y) + WorldDy, 1, RopePoints.HookAngle) 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

204 
else 
4388  205 
if Gear^.Elasticity.QWordValue > 0 then 
6999  206 
DrawSpriteRotated(sprRopeHook, hwRound(Gear^.X) + WorldDx, hwRound(Gear^.Y) + WorldDy, 0, DxDy2Angle(Gear^.dY, Gear^.dX)); 
4388  207 
end; 
208 

209 

210 
procedure DrawAltWeapon(Gear: PGear; sx, sy: LongInt); 

211 
begin 

212 
with Gear^.Hedgehog^ do 

213 
begin 

214 
if not (((Ammoz[CurAmmoType].Ammo.Propz and ammoprop_AltUse) <> 0) and ((Gear^.State and gstAttacked) = 0)) then 

215 
exit; 

216 
DrawTexture(sx + 16, sy + 16, ropeIconTex); 

217 
DrawTextureF(SpritesData[sprAMAmmos].Texture, 0.75, sx + 30, sy + 30, ord(CurAmmoType)  1, 1, 32, 32); 

218 
end; 

219 
end; 

220 

10866  221 
procedure DrawHHOrder(); 
222 
var HHGear: PGear; 

223 
hh: PHedgehog; 

224 
c, i, t, x, y, sprH, sprW, fSprOff: LongInt; 

225 
begin 

226 
t:= LocalTeam; 

227 

13838
2b6702777c8c
Backed out changeset 6e4e745f42bb. Devs are hating it for ... reasons
Wuzzy <Wuzzy2@mail.ru>
parents:
13837
diff
changeset

228 
if not CurrentTeam^.ExtDriven then 
10866  229 
for i:= 0 to Pred(TeamsCount) do 
230 
if (TeamsArray[i] = CurrentTeam) then 

231 
t:= i; 

232 

10867
36ca7a39f34d
fix segfault caused by last commit if spectating
sheepluva
parents:
10866
diff
changeset

233 
if t < 0 then 
36ca7a39f34d
fix segfault caused by last commit if spectating
sheepluva
parents:
10866
diff
changeset

234 
exit; 
36ca7a39f34d
fix segfault caused by last commit if spectating
sheepluva
parents:
10866
diff
changeset

235 

10866  236 
if TeamsArray[t] <> nil then 
237 
begin 

238 
sprH:= SpritesData[sprBigDigit].Height; 

239 
sprW:= SpritesData[sprBigDigit].Width; 

240 
fSprOff:= sprW div 4 + SpritesData[sprFrame].Width div 4  1; //  1 for overlap to avoid artifacts 

241 
i:= 0; 

242 
c:= 0; 

243 
repeat 

244 
hh:= @TeamsArray[t]^.Hedgehogs[i]; 

245 
inc(i); 

246 
if (hh <> nil) and (hh^.Gear <> nil) then 

247 
begin 

248 
inc(c); 

249 
HHGear:= hh^.Gear; 

250 
x:= hwRound(HHGear^.X) + WorldDx; 

251 
y:= hwRound(HHGear^.Y) + WorldDy  2; 

10992  252 
DrawTextureF(SpritesData[sprFrame].Texture, 0.5, x  fSprOff, y, 0, 1, SpritesData[sprFrame].Width, SpritesData[sprFrame].Height); 
253 
DrawTextureF(SpritesData[sprFrame].Texture, 0.5, x + fSprOff, y, 1, 1, SpritesData[sprFrame].Width, SpritesData[sprFrame].Height); 

254 
DrawTextureF(SpritesData[sprBigDigit].Texture, 0.5, x, y, c, 1, sprW, sprH); 

255 
if SpeechHogNumber = c then 

10869  256 
DrawCircle(x, y, 20, 3, 0, $FF, $FF, $80); 
10866  257 
end; 
258 
until (i > cMaxHHIndex); 

259 
end 

260 

261 
end; 

262 

13634
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

263 
// Render some informational GUI next to hedgehog, like fuel and alternate weapon 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

264 
procedure RenderHHGuiExtras(Gear: PGear; ox, oy: LongInt); 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

265 
var HH: PHedgehog; 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

266 
sx, sy: LongInt; 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

267 
begin 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

268 
HH:= Gear^.Hedgehog; 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

269 
sx:= ox + 1; // this offset is very common 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

270 
sy:= oy  3; 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

271 
if HH^.Unplaced then 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

272 
exit; 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

273 
if (Gear^.State and gstHHDeath) <> 0 then 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

274 
exit; 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

275 
if (Gear^.State and gstHHGone) <> 0 then 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

276 
exit; 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

277 

73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

278 
if ((Gear^.State and gstHHDriven) <> 0) and (CurAmmoGear <> nil) then 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

279 
begin 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

280 
case CurAmmoGear^.Kind of 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

281 
gtJetpack: begin 
14552
05b929808585
Render contour of flying saucer is in (mostly) opaque
Wuzzy <Wuzzy2@mail.ru>
parents:
14395
diff
changeset

282 
// render jetpack contour if underwater 
05b929808585
Render contour of flying saucer is in (mostly) opaque
Wuzzy <Wuzzy2@mail.ru>
parents:
14395
diff
changeset

283 
if (((not SuddenDeathDmg) and (WaterOpacity > 179)) or (SuddenDeathDmg and (SDWaterOpacity > 179))) and 
05b929808585
Render contour of flying saucer is in (mostly) opaque
Wuzzy <Wuzzy2@mail.ru>
parents:
14395
diff
changeset

284 
((cWaterLine < (hwRound(Gear^.Y) + Gear^.Radius  16)) or 
05b929808585
Render contour of flying saucer is in (mostly) opaque
Wuzzy <Wuzzy2@mail.ru>
parents:
14395
diff
changeset

285 
((WorldEdge = weSea) and ((hwRound(Gear^.X) < LeftX) or (hwRound(Gear^.X) > RightX)))) then 
05b929808585
Render contour of flying saucer is in (mostly) opaque
Wuzzy <Wuzzy2@mail.ru>
parents:
14395
diff
changeset

286 
DrawSprite(sprJetpack, sx32, sy32, 4); 
13634
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

287 
if CurAmmoGear^.Tex <> nil then 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

288 
DrawTextureCentered(sx, sy  40, CurAmmoGear^.Tex); 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

289 
DrawAltWeapon(Gear, sx, sy); 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

290 
end; 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

291 
gtRope: DrawAltWeapon(Gear, sx, sy); 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

292 
gtParachute: DrawAltWeapon(Gear, sx, sy); 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

293 
gtLandGun: if CurAmmoGear^.Tex <> nil then 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

294 
DrawTextureCentered(sx, sy  40, CurAmmoGear^.Tex); 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

295 
gtFlamethrower: if CurAmmoGear^.Tex <> nil then 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

296 
DrawTextureCentered(sx, sy  40, CurAmmoGear^.Tex); 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

297 
gtIceGun: if CurAmmoGear^.Tex <> nil then 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

298 
DrawTextureCentered(sx, sy  40, CurAmmoGear^.Tex); 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

299 
end; 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

300 
end; 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

301 
end; 
4388  302 

303 
procedure DrawHH(Gear: PGear; ox, oy: LongInt); 

304 
var i, t: LongInt; 

305 
amt: TAmmoType; 

5615
104f69e798bb
changed aiming to be triggered when touching the crosshair
Xeli
parents:
5561
diff
changeset

306 
sign, hx, hy, tx, ty, sx, sy, m: LongInt; // hedgehog, crosshair, temp, sprite, direction 
4388  307 
dx, dy, ax, ay, aAngle, dAngle, hAngle, lx, ly: real; // laser, change 
13573
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

308 
wraps: LongWord; // numbe of wraps for laser in world wrap 
13776
720dc03600c9
Fix engine crash when using lasersight outside the world bounds
alfadur
parents:
13634
diff
changeset

309 
defaultPos, HatVisible, inWorldBounds: boolean; 
4388  310 
HH: PHedgehog; 
311 
CurWeapon: PAmmo; 

8557  312 
iceOffset:Longint; 
313 
r:TSDL_Rect; 

10443
42dadeb6e8ae
Remove switching of hog's hat to chef. do it in draw instead.
nemo
parents:
10441
diff
changeset

314 
curhat: PTexture; 
4388  315 
begin 
316 
HH:= Gear^.Hedgehog; 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

317 
if HH^.Unplaced then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

318 
exit; 
10443
42dadeb6e8ae
Remove switching of hog's hat to chef. do it in draw instead.
nemo
parents:
10441
diff
changeset

319 
if (HH^.CurAmmoType = amKnife) and (HH = CurrentHedgehog) then 
42dadeb6e8ae
Remove switching of hog's hat to chef. do it in draw instead.
nemo
parents:
10441
diff
changeset

320 
curhat:= ChefHatTexture 
42dadeb6e8ae
Remove switching of hog's hat to chef. do it in draw instead.
nemo
parents:
10441
diff
changeset

321 
else curhat:= HH^.HatTex; 
4388  322 
m:= 1; 
13096
d78e65c66573
Add hedgehog effect heArtillery, allows to set perhedgehog artillery mode
Wuzzy <Wuzzy2@mail.ru>
parents:
12898
diff
changeset

323 
if ((Gear^.State and gstHHHJump) <> 0) and (HH^.Effects[heArtillery] = 0) then 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

324 
m:= 1; 
4388  325 
sx:= ox + 1; // this offset is very common 
326 
sy:= oy  3; 

327 
sign:= hwSign(Gear^.dX); 

328 

329 
if (Gear^.State and gstHHDeath) <> 0 then 

330 
begin 

331 
DrawSprite(sprHHDeath, ox  16, oy  26, Gear^.Pos); 

4810  332 
Tint(HH^.Team^.Clan^.Color shl 8 or $FF); 
4388  333 
DrawSprite(sprHHDeath, ox  16, oy  26, Gear^.Pos + 8); 
9666
8dcb25112d96
 Bring back white dot in the center of crosshair. Crosshair is blurred now!
unc0rr
parents:
9655
diff
changeset

334 
untint; 
4388  335 
exit 
336 
end 

337 
else if (Gear^.State and gstHHGone) <> 0 then 

338 
begin 

6999  339 
DrawSpriteRotatedF(sprTeleport, sx, sy, Gear^.Pos, sign, 0); 
4388  340 
exit 
341 
end; 

342 

343 
defaultPos:= true; 

344 
HatVisible:= false; 

345 

8560  346 
if HH^.Effects[heFrozen] > 0 then 
8656
a8282143a8df
use opacity to indicate thawing. not totally happy w/ effect, but argument was made to indicate some progress towards thaw. drop "exit" since it really wasn't helpful, and not rendering tags, was more annoying than fun.
nemo
parents:
8628
diff
changeset

347 
if HH^.Effects[heFrozen] < 150000 then 
8560  348 
begin 
349 
DrawHedgehog(sx, sy, 

350 
sign, 

351 
0, 

352 
0, 

353 
0); 

354 
defaultPos:= false; 

8656
a8282143a8df
use opacity to indicate thawing. not totally happy w/ effect, but argument was made to indicate some progress towards thaw. drop "exit" since it really wasn't helpful, and not rendering tags, was more annoying than fun.
nemo
parents:
8628
diff
changeset

355 
if HH^.Effects[heFrozen] < 256 then 
a8282143a8df
use opacity to indicate thawing. not totally happy w/ effect, but argument was made to indicate some progress towards thaw. drop "exit" since it really wasn't helpful, and not rendering tags, was more annoying than fun.
nemo
parents:
8628
diff
changeset

356 
HatVisible:= true 
a8282143a8df
use opacity to indicate thawing. not totally happy w/ effect, but argument was made to indicate some progress towards thaw. drop "exit" since it really wasn't helpful, and not rendering tags, was more annoying than fun.
nemo
parents:
8628
diff
changeset

357 
else HatVisible:= false 
8560  358 
end 
8689  359 
else 
8560  360 
begin 
361 
DrawHedgehog(sx, sy, 

362 
sign, 

363 
2, 

364 
4, 

365 
0); 

366 
defaultPos:= false; 

8656
a8282143a8df
use opacity to indicate thawing. not totally happy w/ effect, but argument was made to indicate some progress towards thaw. drop "exit" since it really wasn't helpful, and not rendering tags, was more annoying than fun.
nemo
parents:
8628
diff
changeset

367 
HatVisible:= false 
8560  368 
end; 
369 

4388  370 

7010
10a0a31804f3
Switch effects to longint for convenience of tracking ice states. I could add a new Hedgehog value, but since we have this effects list being all useless as booleans anyway...
nemo
parents:
6999
diff
changeset

371 
if HH^.Effects[hePoisoned] <> 0 then 
4388  372 
begin 
373 
Tint($00, $FF, $40, $40); 

10142  374 
DrawTextureRotatedF(SpritesData[sprSmokeWhite].texture, 2, 0, 0, sx, sy, 0, 1, 22, 22, (RealTicks shr 4) mod 360); 
9666
8dcb25112d96
 Bring back white dot in the center of crosshair. Crosshair is blurred now!
unc0rr
parents:
9655
diff
changeset

375 
untint 
4388  376 
end; 
377 

8557  378 

4388  379 
if ((Gear^.State and gstWinner) <> 0) and 
380 
((CurAmmoGear = nil) or (CurAmmoGear^.Kind <> gtPickHammer)) then 

381 
begin 

382 
DrawHedgehog(sx, sy, 

383 
sign, 

384 
2, 

385 
0, 

386 
0); 

387 
defaultPos:= false 

388 
end; 

389 
if (Gear^.State and gstDrowning) <> 0 then 

390 
begin 

391 
DrawHedgehog(sx, sy, 

392 
sign, 

393 
1, 

394 
7, 

395 
0); 

396 
defaultPos:= false 

397 
end else 

398 
if (Gear^.State and gstLoser) <> 0 then 

399 
begin 

400 
DrawHedgehog(sx, sy, 

401 
sign, 

402 
2, 

403 
3, 

404 
0); 

405 
defaultPos:= false 

406 
end else 

407 

408 
if (Gear^.State and gstHHDriven) <> 0 then 

409 
begin 

5145
120f4271f197
adjust crosshair criteria again. this should take care of sniper rifle and crosshair after attacking
nemo
parents:
5137
diff
changeset

410 
if ((Gear^.State and (gstHHThinking or gstAnimation)) = 0) and 
5136
948da1e50205
Fix a few crosshair bugs. Disable ShowCrosshair and just decide when drawing.
nemo
parents:
5041
diff
changeset

411 
/// If current ammo is active, and current ammo has alt attack and uses a crosshair (rope, basically, right now, with no crosshair for parachute/saucer 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

412 
(((CurAmmoGear <> nil) and //((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) <> 0) and 
10390  413 
// don't render crosshair/laser during kamikaze 
414 
((CurAmmoGear^.AmmoType <> amKamikaze) or ((Gear^.State and gstAttacking) = 0)) and 

5136
948da1e50205
Fix a few crosshair bugs. Disable ShowCrosshair and just decide when drawing.
nemo
parents:
5041
diff
changeset

415 
((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_NoCrossHair) = 0)) or 
948da1e50205
Fix a few crosshair bugs. Disable ShowCrosshair and just decide when drawing.
nemo
parents:
5041
diff
changeset

416 
/// If no current ammo is active, and the selected ammo uses a crosshair 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

417 
((CurAmmoGear = nil) and ((Ammoz[HH^.CurAmmoType].Ammo.Propz and ammoprop_NoCrosshair) = 0) and ((Gear^.State and gstAttacked) = 0))) then 
4388  418 
begin 
419 
(* These calculations are a little complex for a few reasons: 

420 
1: I need to draw the laser from weapon origin to nearest land 

421 
2: I need to start the beam outside the hedgie for attractiveness. 

422 
3: I need to extend the beam beyond land. 

423 
This routine perhaps should be pushed into uStore or somesuch instead of continuuing the increase in size of this function. 

424 
*) 

425 
dx:= sign * m * Sin(Gear^.Angle * pi / cMaxAngle); 

426 
dy:= Cos(Gear^.Angle * pi / cMaxAngle); 

12306
cdd884397760
Fix sniper rifle disabling laser sight utility after shooting
Wuzzy <almikes@aol.com>
parents:
12211
diff
changeset

427 
if cLaserSighting or cLaserSightingSniper then 
4388  428 
begin 
429 
lx:= GetLaunchX(HH^.CurAmmoType, sign * m, Gear^.Angle); 

430 
ly:= GetLaunchY(HH^.CurAmmoType, Gear^.Angle); 

431 

432 
// ensure we start outside the hedgehog (he's solid after all) 

433 
while abs(lx * lx + ly * ly) < (Gear^.radius * Gear^.radius) do 

434 
begin 

435 
lx:= lx + dx; 

436 
ly:= ly + dy 

437 
end; 

438 

439 
// add hog's position 

440 
lx:= lx + ox  WorldDx; 

441 
ly:= ly + oy  WorldDy; 

442 

443 
// decrease number of iterations required 

444 
ax:= dx * 4; 

445 
ay:= dy * 4; 

446 

447 
tx:= round(lx); 

448 
ty:= round(ly); 

449 
hx:= tx; 

450 
hy:= ty; 

13573
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

451 
wraps:= 0; 
13776
720dc03600c9
Fix engine crash when using lasersight outside the world bounds
alfadur
parents:
13634
diff
changeset

452 
inWorldBounds := ((ty and LAND_HEIGHT_MASK) or (tx and LAND_WIDTH_MASK)) = 0; 
720dc03600c9
Fix engine crash when using lasersight outside the world bounds
alfadur
parents:
13634
diff
changeset

453 
while inWorldBounds and ((Land[ty, tx] and lfAll) = 0) do 
4388  454 
begin 
13573
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

455 
if wraps > cMaxLaserSightWraps then 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

456 
break; 
4388  457 
lx:= lx + ax; 
458 
ly:= ly + ay; 

459 
tx:= round(lx); 

13573
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

460 
ty:= round(ly); 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

461 
// reached edge of land. 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

462 
if ((ty and LAND_HEIGHT_MASK) <> 0) then 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

463 
begin 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

464 
// assume infinite beam. Extend it way out past camera 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

465 
tx:= round(lx + ax * (max(LAND_WIDTH,4096) div 2)); 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

466 
ty:= round(ly + ay * (max(LAND_WIDTH,4096) div 2)); 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

467 
break; 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

468 
end; 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

469 

e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

470 
if ((sign*m < 0) and (tx < LeftX)) or ((sign*m > 0) and (tx >= RightX)) then 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

471 
if (WorldEdge = weWrap) then 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

472 
// wrap beam 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

473 
begin 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

474 
if (sign*m) < 0 then 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

475 
lx:= RightX  (ax  (lx  LeftX)) 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

476 
else 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

477 
lx:= LeftX + (ax  (RightX  lx)); 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

478 
tx:= round(lx); 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

479 
inc(wraps); 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

480 
end 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

481 
else if (WorldEdge = weBounce) then 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

482 
// just stop 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

483 
break; 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

484 

e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

485 
if ((tx and LAND_WIDTH_MASK) <> 0) then 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

486 
begin 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

487 
if (WorldEdge <> weWrap) and (WorldEdge <> weBounce) then 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

488 
// assume infinite beam. Extend it way out past camera 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

489 
begin 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

490 
tx:= round(lx + ax * (max(LAND_WIDTH,4096) div 2)); 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

491 
ty:= round(ly + ay * (max(LAND_WIDTH,4096) div 2)); 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

492 
end; 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

493 
break; 
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

494 
end; 
4388  495 
end; 
496 

13573
e896ff1b1d96
Make laser sight work properly through wrap world edge
Wuzzy <Wuzzy2@mail.ru>
parents:
13572
diff
changeset

497 
DrawLineWrapped(hx, hy, tx, ty, 1.0, (sign*m) < 0, wraps, $FF, $00, $00, $C0); 
4388  498 
end; 
499 
// draw crosshair 

5615
104f69e798bb
changed aiming to be triggered when touching the crosshair
Xeli
parents:
5561
diff
changeset

500 
CrosshairX := Round(hwRound(Gear^.X) + dx * 80 + GetLaunchX(HH^.CurAmmoType, sign * m, Gear^.Angle)); 
104f69e798bb
changed aiming to be triggered when touching the crosshair
Xeli
parents:
5561
diff
changeset

501 
CrosshairY := Round(hwRound(Gear^.Y) + dy * 80 + GetLaunchY(HH^.CurAmmoType, Gear^.Angle)); 
8689  502 

9666
8dcb25112d96
 Bring back white dot in the center of crosshair. Crosshair is blurred now!
unc0rr
parents:
9655
diff
changeset

503 
setTintAdd(true); 
9655
e154ccca4dad
Tinted crosshair (without that cool white dot in the middle)
unc0rr
parents:
9505
diff
changeset

504 
Tint(HH^.Team^.Clan^.Color shl 8 or $FF); 
e154ccca4dad
Tinted crosshair (without that cool white dot in the middle)
unc0rr
parents:
9505
diff
changeset

505 
DrawTextureRotated(CrosshairTexture, 
5615
104f69e798bb
changed aiming to be triggered when touching the crosshair
Xeli
parents:
5561
diff
changeset

506 
12, 12, CrosshairX + WorldDx, CrosshairY + WorldDy, 0, 
9667
0b27737fc28f
Don't change crosshair look when hedgehog does high jump
unc0rr
parents:
9666
diff
changeset

507 
sign * m * (Gear^.Angle * 180.0) / cMaxAngle); 
9666
8dcb25112d96
 Bring back white dot in the center of crosshair. Crosshair is blurred now!
unc0rr
parents:
9655
diff
changeset

508 
untint; 
8dcb25112d96
 Bring back white dot in the center of crosshair. Crosshair is blurred now!
unc0rr
parents:
9655
diff
changeset

509 
setTintAdd(false); 
4388  510 
end; 
9666
8dcb25112d96
 Bring back white dot in the center of crosshair. Crosshair is blurred now!
unc0rr
parents:
9655
diff
changeset

511 

4388  512 
hx:= ox + 8 * sign; 
513 
hy:= oy  2; 

514 
aangle:= Gear^.Angle * 180 / cMaxAngle  90; 

5935  515 
if (CurAmmoGear <> nil) and (CurAmmoGear^.Kind <> gtTardis) then 
4388  516 
begin 
517 
case CurAmmoGear^.Kind of 

518 
gtShotgunShot: begin 

519 
if (CurAmmoGear^.State and gstAnimation <> 0) then 

6999  520 
DrawSpriteRotated(sprShotgun, hx, hy, sign, aangle) 
4388  521 
else 
6999  522 
DrawSpriteRotated(sprHandShotgun, hx, hy, sign, aangle); 
4388  523 
end; 
6999  524 
gtDEagleShot: DrawSpriteRotated(sprDEagle, hx, hy, sign, aangle); 
4388  525 
gtSniperRifleShot: begin 
526 
if (CurAmmoGear^.State and gstAnimation <> 0) then 

6999  527 
DrawSpriteRotatedF(sprSniperRifle, hx, hy, 1, sign, aangle) 
4388  528 
else 
6999  529 
DrawSpriteRotatedF(sprSniperRifle, hx, hy, 0, sign, aangle) 
4388  530 
end; 
6999  531 
gtBallgun: DrawSpriteRotated(sprHandBallgun, hx, hy, sign, aangle); 
4388  532 
gtRCPlane: begin 
6999  533 
DrawSpriteRotated(sprHandPlane, hx, hy, sign, 0); 
4388  534 
defaultPos:= false 
535 
end; 

536 
gtRope: begin 

537 
if Gear^.X < CurAmmoGear^.X then 

538 
begin 

539 
dAngle:= 0; 

540 
hAngle:= 180; 

541 
i:= 1 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

542 
end 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

543 
else 
4388  544 
begin 
545 
dAngle:= 180; 

546 
hAngle:= 0; 

547 
i:= 1 

548 
end; 

7547  549 
if ((Gear^.State and gstWinner) = 0) then 
550 
begin 

551 
DrawHedgehog(ox, oy, 

552 
i, 

553 
1, 

554 
0, 

555 
DxDy2Angle(CurAmmoGear^.dY, CurAmmoGear^.dX) + dAngle); 

556 
with HH^ do 

10443
42dadeb6e8ae
Remove switching of hog's hat to chef. do it in draw instead.
nemo
parents:
10441
diff
changeset

557 
if (curhat <> nil) then 
4388  558 
begin 
10443
42dadeb6e8ae
Remove switching of hog's hat to chef. do it in draw instead.
nemo
parents:
10441
diff
changeset

559 
DrawTextureRotatedF(curhat, 1.0, 1.0, 6.0, ox, oy, 0, i, 32, 32, 
4388  560 
i*DxDy2Angle(CurAmmoGear^.dY, CurAmmoGear^.dX) + hAngle); 
13233
bb73d6d3348a
Fix simple team hats (32×64) not tinting correctly while on rope or using blowtorch
Wuzzy <Wuzzy2@mail.ru>
parents:
13214
diff
changeset

561 
if (curhat^.w > 64) or ((curhat^.w = 64) and (curhat^.h = 32)) then 
7547  562 
begin 
13233
bb73d6d3348a
Fix simple team hats (32×64) not tinting correctly while on rope or using blowtorch
Wuzzy <Wuzzy2@mail.ru>
parents:
13214
diff
changeset

563 
if ((curhat^.w = 64) and (curhat^.h = 32)) then 
bb73d6d3348a
Fix simple team hats (32×64) not tinting correctly while on rope or using blowtorch
Wuzzy <Wuzzy2@mail.ru>
parents:
13214
diff
changeset

564 
tx := 1 
bb73d6d3348a
Fix simple team hats (32×64) not tinting correctly while on rope or using blowtorch
Wuzzy <Wuzzy2@mail.ru>
parents:
13214
diff
changeset

565 
else 
bb73d6d3348a
Fix simple team hats (32×64) not tinting correctly while on rope or using blowtorch
Wuzzy <Wuzzy2@mail.ru>
parents:
13214
diff
changeset

566 
tx := 32; 
7547  567 
Tint(HH^.Team^.Clan^.Color shl 8 or $FF); 
13233
bb73d6d3348a
Fix simple team hats (32×64) not tinting correctly while on rope or using blowtorch
Wuzzy <Wuzzy2@mail.ru>
parents:
13214
diff
changeset

568 
DrawTextureRotatedF(curhat, 1.0, 1.0, 6.0, ox, oy, tx, i, 32, 32, 
7547  569 
i*DxDy2Angle(CurAmmoGear^.dY, CurAmmoGear^.dX) + hAngle); 
9666
8dcb25112d96
 Bring back white dot in the center of crosshair. Crosshair is blurred now!
unc0rr
parents:
9655
diff
changeset

570 
untint 
7547  571 
end 
4388  572 
end 
573 
end; 

574 
defaultPos:= false 

575 
end; 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

576 
gtBlowTorch: 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

577 
begin 
6999  578 
DrawSpriteRotated(sprBlowTorch, hx, hy, sign, aangle); 
4388  579 
DrawHedgehog(sx, sy, 
580 
sign, 

581 
3, 

582 
HH^.visStepPos div 2, 

583 
0); 

584 
with HH^ do 

10443
42dadeb6e8ae
Remove switching of hog's hat to chef. do it in draw instead.
nemo
parents:
10441
diff
changeset

585 
if (curhat <> nil) then 
4388  586 
begin 
10443
42dadeb6e8ae
Remove switching of hog's hat to chef. do it in draw instead.
nemo
parents:
10441
diff
changeset

587 
DrawTextureF(curhat, 
4388  588 
1, 
589 
sx, 

590 
sy  5, 

591 
0, 

592 
sign, 

593 
32, 

594 
32); 

13233
bb73d6d3348a
Fix simple team hats (32×64) not tinting correctly while on rope or using blowtorch
Wuzzy <Wuzzy2@mail.ru>
parents:
13214
diff
changeset

595 
if (curhat^.w > 64) or ((curhat^.w = 64) and (curhat^.h = 32)) then 
4388  596 
begin 
13233
bb73d6d3348a
Fix simple team hats (32×64) not tinting correctly while on rope or using blowtorch
Wuzzy <Wuzzy2@mail.ru>
parents:
13214
diff
changeset

597 
if ((curhat^.w = 64) and (curhat^.h = 32)) then 
bb73d6d3348a
Fix simple team hats (32×64) not tinting correctly while on rope or using blowtorch
Wuzzy <Wuzzy2@mail.ru>
parents:
13214
diff
changeset

598 
tx := 1 
bb73d6d3348a
Fix simple team hats (32×64) not tinting correctly while on rope or using blowtorch
Wuzzy <Wuzzy2@mail.ru>
parents:
13214
diff
changeset

599 
else 
bb73d6d3348a
Fix simple team hats (32×64) not tinting correctly while on rope or using blowtorch
Wuzzy <Wuzzy2@mail.ru>
parents:
13214
diff
changeset

600 
tx := 32; 
4810  601 
Tint(HH^.Team^.Clan^.Color shl 8 or $FF); 
10443
42dadeb6e8ae
Remove switching of hog's hat to chef. do it in draw instead.
nemo
parents:
10441
diff
changeset

602 
DrawTextureF(curhat, 
4388  603 
1, 
604 
sx, 

605 
sy  5, 

13233
bb73d6d3348a
Fix simple team hats (32×64) not tinting correctly while on rope or using blowtorch
Wuzzy <Wuzzy2@mail.ru>
parents:
13214
diff
changeset

606 
tx, 
4388  607 
sign, 
608 
32, 

609 
32); 

9666
8dcb25112d96
 Bring back white dot in the center of crosshair. Crosshair is blurred now!
unc0rr
parents:
9655
diff
changeset

610 
untint 
4388  611 
end 
612 
end; 

613 
defaultPos:= false 

614 
end; 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

615 
gtFirePunch: 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

616 
begin 
4388  617 
DrawHedgehog(sx, sy, 
618 
sign, 

619 
1, 

620 
4, 

621 
0); 

622 
defaultPos:= false 

623 
end; 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

624 
gtPickHammer: 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

625 
begin 
4388  626 
defaultPos:= false; 
627 
dec(sy,20); 

628 
end; 

629 
gtTeleport: defaultPos:= false; 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

630 
gtWhip: 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

631 
begin 
6999  632 
DrawSpriteRotatedF(sprWhip, 
4388  633 
sx, 
634 
sy, 

635 
1, 

636 
sign, 

637 
0); 

638 
defaultPos:= false 

639 
end; 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

640 
gtHammer: 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

641 
begin 
6999  642 
DrawSpriteRotatedF(sprHammer, 
4388  643 
sx, 
644 
sy, 

645 
1, 

646 
sign, 

647 
0); 

648 
defaultPos:= false 

649 
end; 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

650 
gtResurrector: 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

651 
begin 
6999  652 
DrawSpriteRotated(sprHandResurrector, sx, sy, 0, 0); 
4388  653 
defaultPos:= false 
654 
end; 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

655 
gtKamikaze: 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

656 
begin 
4388  657 
if CurAmmoGear^.Pos = 0 then 
658 
DrawHedgehog(sx, sy, 

659 
sign, 

660 
1, 

661 
6, 

662 
0) 

663 
else 

6999  664 
DrawSpriteRotatedF(sprKamikaze, 
4388  665 
ox, oy, 
666 
CurAmmoGear^.Pos  1, 

667 
sign, 

668 
aangle); 

669 
defaultPos:= false 

670 
end; 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

671 
gtSeduction: 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

672 
begin 
4388  673 
if CurAmmoGear^.Pos >= 6 then 
674 
DrawHedgehog(sx, sy, 

675 
sign, 

676 
2, 

677 
2, 

678 
0) 

679 
else 

680 
begin 

6999  681 
DrawSpriteRotatedF(sprDress, 
4388  682 
ox, oy, 
683 
CurAmmoGear^.Pos, 

684 
sign, 

685 
0); 

13150
2f7c25bf4201
When using seduction, only show “CENSORED” text in English locale
Wuzzy <Wuzzy2@mail.ru>
parents:
13096
diff
changeset

686 
// sprCensored contains English text, so only show it for English locales 
2f7c25bf4201
When using seduction, only show “CENSORED” text in English locale
Wuzzy <Wuzzy2@mail.ru>
parents:
13096
diff
changeset

687 
// TODO: Make text translatable. But how? 
2f7c25bf4201
When using seduction, only show “CENSORED” text in English locale
Wuzzy <Wuzzy2@mail.ru>
parents:
13096
diff
changeset

688 
if Copy(cLocale, 1, 2) = 'en' then 
2f7c25bf4201
When using seduction, only show “CENSORED” text in English locale
Wuzzy <Wuzzy2@mail.ru>
parents:
13096
diff
changeset

689 
DrawSprite(sprCensored, ox  32, oy  20, 0); 
4388  690 
end; 
691 
defaultPos:= false 

692 
end; 

13634
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

693 
gtFlamethrower: DrawSpriteRotatedF(sprHandFlamethrower, hx, hy, (RealTicks div 125) mod 4, sign, aangle); 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

694 
gtLandGun: DrawSpriteRotated(sprHandBallgun, hx, hy, sign, aangle); 
73c2a669c1fd
Make sure gear fuel and alt weapon overlays are always drawn on top
Wuzzy <Wuzzy2@mail.ru>
parents:
13605
diff
changeset

695 
gtIceGun: DrawSpriteRotated(sprIceGun, hx, hy, sign, aangle); 
4388  696 
end; 
697 

698 
case CurAmmoGear^.Kind of 

699 
gtShotgunShot, 

700 
gtDEagleShot, 

12119  701 
gtSniperRifleShot: 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

702 
begin 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

703 
DrawHedgehog(sx, sy, sign, 0, 4, 0); 
4388  704 
defaultPos:= false; 
705 
HatVisible:= true 

12119  706 
end; 
12898  707 
gtShover, gtMinigun: 
12119  708 
begin 
709 
DrawHedgehog(sx, sy, sign, 0, 5, 0); 

710 
defaultPos:= false; 

711 
HatVisible:= true 

712 
end 

4388  713 
end 
714 
end else 

715 

716 
if ((Gear^.State and gstHHJumping) <> 0) then 

717 
begin 

718 
DrawHedgehog(sx, sy, 

719 
sign*m, 

720 
1, 

721 
1, 

722 
0); 

723 
HatVisible:= true; 

724 
defaultPos:= false 

725 
end else 

726 

727 
if (Gear^.Message and (gmLeft or gmRight) <> 0) and (not isCursorVisible) then 

728 
begin 

729 
DrawHedgehog(sx, sy, 

730 
sign, 

731 
0, 

732 
HH^.visStepPos div 2, 

733 
0); 

734 
defaultPos:= false; 

735 
HatVisible:= true 

736 
end 

737 
else 

738 

739 
if ((Gear^.State and gstAnimation) <> 0) then 

740 
begin 

10560  741 
if (Gear^.Tag < LongInt(ord(Low(TWave)))) or (Gear^.Tag > LongInt(ord(High(TWave)))) then 
4388  742 
begin 
6453
11c578d30bd3
Countless imporvements to the parser and countless help to the parser in sources.
unc0rr
parents:
6328
diff
changeset

743 
Gear^.State:= Gear^.State and (not gstAnimation); 
4388  744 
end 
745 
else 

746 
begin 

6999  747 
DrawSpriteRotatedF(Wavez[TWave(Gear^.Tag)].Sprite, 
4388  748 
sx, 
749 
sy, 

750 
Gear^.Pos, 

751 
sign, 

752 
0.0); 

753 
defaultPos:= false 

754 
end 

755 
end 

756 
else 

757 
if ((Gear^.State and gstAttacked) = 0) then 

758 
begin 

759 
if HH^.Timer > 0 then 

760 
begin 

761 
// There must be a tidier way to do this. Anyone? 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

762 
if aangle <= 90 then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

763 
aangle:= aangle+360; 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

764 
if Gear^.dX > _0 then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

765 
aangle:= aangle((aangle240)*HH^.Timer/10) 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

766 
else 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

767 
aangle:= aangle+((240aangle)*HH^.Timer/10); 
4388  768 
dec(HH^.Timer) 
769 
end; 

770 
amt:= CurrentHedgehog^.CurAmmoType; 

6924  771 
CurWeapon:= GetCurAmmoEntry(HH^); 
4388  772 
case amt of 
6999  773 
amBazooka: DrawSpriteRotated(sprHandBazooka, hx, hy, sign, aangle); 
774 
amSnowball: DrawSpriteRotated(sprHandSnowball, hx, hy, sign, aangle); 

775 
amMortar: DrawSpriteRotated(sprHandMortar, hx, hy, sign, aangle); 

776 
amMolotov: DrawSpriteRotated(sprHandMolotov, hx, hy, sign, aangle); 

777 
amBallgun: DrawSpriteRotated(sprHandBallgun, hx, hy, sign, aangle); 

778 
amDrill: DrawSpriteRotated(sprHandDrill, hx, hy, sign, aangle); 

779 
amRope: DrawSpriteRotated(sprHandRope, hx, hy, sign, aangle); 

780 
amShotgun: DrawSpriteRotated(sprHandShotgun, hx, hy, sign, aangle); 

781 
amDEagle: DrawSpriteRotated(sprHandDEagle, hx, hy, sign, aangle); 

782 
amSineGun: DrawSpriteRotatedF(sprHandSinegun, hx, hy, 73 + (sign * LongInt(RealTicks div 73)) mod 8, sign, aangle); 

8689  783 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

784 
amPortalGun: 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

785 
if (CurWeapon^.Timer and 2) <> 0 then // Add a new Hedgehog value instead of abusing timer? 
6999  786 
DrawSpriteRotatedF(sprPortalGun, hx, hy, 0, sign, aangle) 
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

787 
else 
6999  788 
DrawSpriteRotatedF(sprPortalGun, hx, hy, 1+CurWeapon^.Pos, sign, aangle); 
8689  789 

6999  790 
amSniperRifle: DrawSpriteRotatedF(sprSniperRifle, hx, hy, 0, sign, aangle); 
791 
amBlowTorch: DrawSpriteRotated(sprHandBlowTorch, hx, hy, sign, aangle); 

792 
amCake: DrawSpriteRotated(sprHandCake, hx, hy, sign, aangle); 

793 
amGrenade: DrawSpriteRotated(sprHandGrenade, hx, hy, sign, aangle); 

794 
amWatermelon: DrawSpriteRotated(sprHandMelon, hx, hy, sign, aangle); 

795 
amSkip: DrawSpriteRotated(sprHandSkip, hx, hy, sign, aangle); 

796 
amClusterBomb: DrawSpriteRotated(sprHandCluster, hx, hy, sign, aangle); 

797 
amDynamite: DrawSpriteRotated(sprHandDynamite, hx, hy, sign, aangle); 

13851
f01798038c2e
Rename amDuck and related symbols to amCreeper, gtCreeper, etc.
Wuzzy <Wuzzy2@mail.ru>
parents:
13838
diff
changeset

798 
amCreeper: DrawSpriteRotatedF(sprHandCreeper, hx, hy, 0, sign, aangle); 
6999  799 
amHellishBomb: DrawSpriteRotated(sprHandHellish, hx, hy, sign, aangle); 
800 
amGasBomb: DrawSpriteRotated(sprHandCheese, hx, hy, sign, aangle); 

801 
amMine: DrawSpriteRotated(sprHandMine, hx, hy, sign, aangle); 

11174  802 
amAirMine: DrawSpriteRotated(sprHandAirMine, hx, hy, sign, aangle); 
6999  803 
amSMine: DrawSpriteRotated(sprHandSMine, hx, hy, sign, aangle); 
7730
2013733f9ca9
A bit more on the knife. Also add missing files to CMakeLists
nemo
parents:
7721
diff
changeset

804 
amKnife: DrawSpriteRotatedF(sprHandKnife, hx, hy, 0, sign, aangle); 
5525  805 
amSeduction: begin 
6999  806 
DrawSpriteRotated(sprHandSeduction, hx, hy, sign, aangle); 
8689  807 
DrawCircle(ox, oy, 248, 4, $FF, $00, $00, $AA); 
5561
dfbe55237c64
Shrink number of circle points to 60, reenable seduction circle (no longer crashes)
nemo
parents:
5560
diff
changeset

808 
//Tint($FF, $0, $0, $AA); 
dfbe55237c64
Shrink number of circle points to 60, reenable seduction circle (no longer crashes)
nemo
parents:
5560
diff
changeset

809 
//DrawTexture(ox  240, oy  240, SpritesData[sprVampiric].Texture, 10); 
9666
8dcb25112d96
 Bring back white dot in the center of crosshair. Crosshair is blurred now!
unc0rr
parents:
9655
diff
changeset

810 
//untint; 
5525  811 
end; 
6999  812 
amVampiric: DrawSpriteRotatedF(sprHandVamp, hx, hy, (RealTicks div 125) mod 4, sign, aangle); 
4388  813 
amRCPlane: begin 
6999  814 
DrawSpriteRotated(sprHandPlane, hx, hy, sign, 0); 
4388  815 
defaultPos:= false 
816 
end; 

9768
08799c901a42
Add rubber utility. Graphics are still incomplete. Also flag snow/ice in theme config.
nemo
parents:
9685
diff
changeset

817 
amRubber, 
4388  818 
amGirder: begin 
6999  819 
DrawSpriteRotated(sprHandConstruction, hx, hy, sign, aangle); 
11059
659427d9fd17
display circle for custom build dist values, display nothing if no limit. map borders are not taken into account at this point
sheepluva
parents:
11046
diff
changeset

820 
if cBuildMaxDist = cDefaultBuildMaxDist then 
9505
56e0cca99e20
Allow girder construction to wrap. Makes wrapping w/ large bodies of water a bit more interesting.
nemo
parents:
9285
diff
changeset

821 
begin 
11059
659427d9fd17
display circle for custom build dist values, display nothing if no limit. map borders are not taken into account at this point
sheepluva
parents:
11046
diff
changeset

822 
if WorldEdge = weWrap then 
659427d9fd17
display circle for custom build dist values, display nothing if no limit. map borders are not taken into account at this point
sheepluva
parents:
11046
diff
changeset

823 
begin 
14282
6015b74eea55
overall, using LongInt for leftX/rightX results in fewer casts, since most comparisons are against ints.
nemo
parents:
14200
diff
changeset

824 
if hwRound(Gear^.X) < leftX + 256 then 
11059
659427d9fd17
display circle for custom build dist values, display nothing if no limit. map borders are not taken into account at this point
sheepluva
parents:
11046
diff
changeset

825 
DrawSpriteClipped(sprGirder, 
659427d9fd17
display circle for custom build dist values, display nothing if no limit. map borders are not taken into account at this point
sheepluva
parents:
11046
diff
changeset

826 
rightX+(oxleftX)256, 
659427d9fd17
display circle for custom build dist values, display nothing if no limit. map borders are not taken into account at this point
sheepluva
parents:
11046
diff
changeset

827 
oy256, 
14286  828 
topY+WorldDy, 
14282
6015b74eea55
overall, using LongInt for leftX/rightX results in fewer casts, since most comparisons are against ints.
nemo
parents:
14200
diff
changeset

829 
rightX+WorldDx, 
11059
659427d9fd17
display circle for custom build dist values, display nothing if no limit. map borders are not taken into account at this point
sheepluva
parents:
11046
diff
changeset

830 
cWaterLine+WorldDy, 
14282
6015b74eea55
overall, using LongInt for leftX/rightX results in fewer casts, since most comparisons are against ints.
nemo
parents:
14200
diff
changeset

831 
leftX+WorldDx); 
6015b74eea55
overall, using LongInt for leftX/rightX results in fewer casts, since most comparisons are against ints.
nemo
parents:
14200
diff
changeset

832 
if hwRound(Gear^.X) > rightX  256 then 
11059
659427d9fd17
display circle for custom build dist values, display nothing if no limit. map borders are not taken into account at this point
sheepluva
parents:
11046
diff
changeset

833 
DrawSpriteClipped(sprGirder, 
659427d9fd17
display circle for custom build dist values, display nothing if no limit. map borders are not taken into account at this point
sheepluva
parents:
11046
diff
changeset

834 
leftX(rightXox)256, 
659427d9fd17
display circle for custom build dist values, display nothing if no limit. map borders are not taken into account at this point
sheepluva
parents:
11046
diff
changeset

835 
oy256, 
14286  836 
topY+WorldDy, 
14282
6015b74eea55
overall, using LongInt for leftX/rightX results in fewer casts, since most comparisons are against ints.
nemo
parents:
14200
diff
changeset

837 
rightX+WorldDx, 
11059
659427d9fd17
display circle for custom build dist values, display nothing if no limit. map borders are not taken into account at this point
sheepluva
parents:
11046
diff
changeset

838 
cWaterLine+WorldDy, 
14282
6015b74eea55
overall, using LongInt for leftX/rightX results in fewer casts, since most comparisons are against ints.
nemo
parents:
14200
diff
changeset

839 
leftX+WorldDx) 
11059
659427d9fd17
display circle for custom build dist values, display nothing if no limit. map borders are not taken into account at this point
sheepluva
parents:
11046
diff
changeset

840 
end; 
659427d9fd17
display circle for custom build dist values, display nothing if no limit. map borders are not taken into account at this point
sheepluva
parents:
11046
diff
changeset

841 
DrawSpriteClipped(sprGirder, 
659427d9fd17
display circle for custom build dist values, display nothing if no limit. map borders are not taken into account at this point
sheepluva
parents:
11046
diff
changeset

842 
ox256, 
659427d9fd17
display circle for custom build dist values, display nothing if no limit. map borders are not taken into account at this point
sheepluva
parents:
11046
diff
changeset

843 
oy256, 
14286  844 
topY+WorldDy, 
14282
6015b74eea55
overall, using LongInt for leftX/rightX results in fewer casts, since most comparisons are against ints.
nemo
parents:
14200
diff
changeset

845 
rightX+WorldDx, 
11059
659427d9fd17
display circle for custom build dist values, display nothing if no limit. map borders are not taken into account at this point
sheepluva
parents:
11046
diff
changeset

846 
cWaterLine+WorldDy, 
14282
6015b74eea55
overall, using LongInt for leftX/rightX results in fewer casts, since most comparisons are against ints.
nemo
parents:
14200
diff
changeset

847 
leftX+WorldDx) 
11059
659427d9fd17
display circle for custom build dist values, display nothing if no limit. map borders are not taken into account at this point
sheepluva
parents:
11046
diff
changeset

848 
end 
659427d9fd17
display circle for custom build dist values, display nothing if no limit. map borders are not taken into account at this point
sheepluva
parents:
11046
diff
changeset

849 
else if cBuildMaxDist > 0 then 
659427d9fd17
display circle for custom build dist values, display nothing if no limit. map borders are not taken into account at this point
sheepluva
parents:
11046
diff
changeset

850 
begin 
659427d9fd17
display circle for custom build dist values, display nothing if no limit. map borders are not taken into account at this point
sheepluva
parents:
11046
diff
changeset

851 
DrawCircle(hx, hy, cBuildMaxDist, 3, $FF, 0, 0, $80); 
9505
56e0cca99e20
Allow girder construction to wrap. Makes wrapping w/ large bodies of water a bit more interesting.
nemo
parents:
9285
diff
changeset

852 
end; 
4388  853 
end; 
6999  854 
amBee: DrawSpriteRotatedF(sprHandBee, hx, hy, (RealTicks div 125) mod 4, sign, aangle); 
855 
amFlamethrower: DrawSpriteRotatedF(sprHandFlamethrower, hx, hy, (RealTicks div 125) mod 4, sign, aangle); 

856 
amLandGun: DrawSpriteRotated(sprHandBallgun, hx, hy, sign, aangle); 

8554  857 
amIceGun: DrawSpriteRotated(sprIceGun, hx, hy, sign, aangle); 
4388  858 
amResurrector: DrawCircle(ox, oy, 98, 4, $F5, $DB, $35, $AA); // I'd rather not like to hardcode 100 here 
859 
end; 

860 

861 
case amt of 

862 
amAirAttack, 

12681
4e5e725f2c56
Fix hog holding nothing in hand when choosing napalm or piano strike
Wuzzy <almikes@aol.com>
parents:
12376
diff
changeset

863 
amNapalm, 
4388  864 
amMineStrike, 
6999  865 
amDrillStrike: DrawSpriteRotated(sprHandAirAttack, sx, oy, sign, 0); 
4388  866 
amPickHammer: DrawHedgehog(sx, sy, 
867 
sign, 

868 
1, 

869 
2, 

870 
0); 

12681
4e5e725f2c56
Fix hog holding nothing in hand when choosing napalm or piano strike
Wuzzy <almikes@aol.com>
parents:
12376
diff
changeset

871 
amTeleport, 
4e5e725f2c56
Fix hog holding nothing in hand when choosing napalm or piano strike
Wuzzy <almikes@aol.com>
parents:
12376
diff
changeset

872 
amPiano: DrawSpriteRotatedF(sprTeleport, sx, sy, 0, sign, 0); 
4388  873 
amKamikaze: DrawHedgehog(sx, sy, 
874 
sign, 

875 
1, 

876 
5, 

877 
0); 

6999  878 
amWhip: DrawSpriteRotatedF(sprWhip, 
4388  879 
sx, 
880 
sy, 

881 
0, 

882 
sign, 

883 
0); 

6999  884 
amHammer: DrawSpriteRotatedF(sprHammer, 
4388  885 
sx, 
886 
sy, 

887 
0, 

888 
sign, 

889 
0); 

12898  890 
amBaseballBat, amMinigun: 
12376
c80c51f59a98
Make hogs keep their hat when holding the baseball bat
alfadur
parents:
12306
diff
changeset

891 
begin 
c80c51f59a98
Make hogs keep their hat when holding the baseball bat
alfadur
parents:
12306
diff
changeset

892 
HatVisible:= true; 
c80c51f59a98
Make hogs keep their hat when holding the baseball bat
alfadur
parents:
12306
diff
changeset

893 
DrawHedgehog(sx, sy, 
12119  894 
sign, 
895 
0, 

896 
5, 

897 
0); 

12376
c80c51f59a98
Make hogs keep their hat when holding the baseball bat
alfadur
parents:
12306
diff
changeset

898 
end 
4388  899 
else 
900 
DrawHedgehog(sx, sy, 

901 
sign, 

902 
0, 

903 
4, 

904 
0); 

905 

906 
HatVisible:= true; 

907 
(* with HH^ do 

908 
if (HatTex <> nil) 

909 
and (HatVisibility > 0) then 

910 
DrawTextureF(HatTex, 

911 
HatVisibility, 

912 
sx, 

913 
sy  5, 

914 
0, 

915 
sign, 

916 
32, 

917 
32); *) 

918 
end; 

919 

920 
defaultPos:= false 

921 
end; 

922 

923 
end else // not gstHHDriven 

924 
begin 

11506
24bef86e3f3a
add some dust effect to rolling/sliding hedgehogs
sheepluva
parents:
11317
diff
changeset

925 
// check if hedgehog is sliding/rolling 
8681
d0fc1dca739c
yeah. this was a bad idea. the minor difference in thaw speed vs last hog of team never unthawing.
nemo
parents:
8656
diff
changeset

926 
if (Gear^.Damage > 0) and (HH^.Effects[heFrozen] = 0) 
4388  927 
and (hwSqr(Gear^.dX) + hwSqr(Gear^.dY) > _0_003) then 
928 
begin 

10526
b43d175d1577
Avoid promoting violence to hedgehogs. At least once a year.
nemo
parents:
10523
diff
changeset

929 
defaultPos:= false; 
b43d175d1577
Avoid promoting violence to hedgehogs. At least once a year.
nemo
parents:
10523
diff
changeset

930 
DrawHedgehog(sx, sy, 
b43d175d1577
Avoid promoting violence to hedgehogs. At least once a year.
nemo
parents:
10523
diff
changeset

931 
sign, 
b43d175d1577
Avoid promoting violence to hedgehogs. At least once a year.
nemo
parents:
10523
diff
changeset

932 
2, 
b43d175d1577
Avoid promoting violence to hedgehogs. At least once a year.
nemo
parents:
10523
diff
changeset

933 
1, 
b43d175d1577
Avoid promoting violence to hedgehogs. At least once a year.
nemo
parents:
10523
diff
changeset

934 
Gear^.DirAngle); 
11506
24bef86e3f3a
add some dust effect to rolling/sliding hedgehogs
sheepluva
parents:
11317
diff
changeset

935 

24bef86e3f3a
add some dust effect to rolling/sliding hedgehogs
sheepluva
parents:
11317
diff
changeset

936 
// dust effect 
24bef86e3f3a
add some dust effect to rolling/sliding hedgehogs
sheepluva
parents:
11317
diff
changeset

937 
// TODO fix: this gives different results based on framerate 
24bef86e3f3a
add some dust effect to rolling/sliding hedgehogs
sheepluva
parents:
11317
diff
changeset

938 
if (sx mod 8) = 0 then 
24bef86e3f3a
add some dust effect to rolling/sliding hedgehogs
sheepluva
parents:
11317
diff
changeset

939 
begin 
24bef86e3f3a
add some dust effect to rolling/sliding hedgehogs
sheepluva
parents:
11317
diff
changeset

940 
if Gear^.dX.isNegative then 
24bef86e3f3a
add some dust effect to rolling/sliding hedgehogs
sheepluva
parents:
11317
diff
changeset

941 
tx := hwRound(Gear^.X) + cHHRadius 
24bef86e3f3a
add some dust effect to rolling/sliding hedgehogs
sheepluva
parents:
11317
diff
changeset

942 
else 
24bef86e3f3a
add some dust effect to rolling/sliding hedgehogs
sheepluva
parents:
11317
diff
changeset

943 
tx := hwRound(Gear^.X)  cHHRadius; 
24bef86e3f3a
add some dust effect to rolling/sliding hedgehogs
sheepluva
parents:
11317
diff
changeset

944 
ty:= hwRound(Gear^.Y) + cHHRadius + 2; 
24bef86e3f3a
add some dust effect to rolling/sliding hedgehogs
sheepluva
parents:
11317
diff
changeset

945 
if ((tx and LAND_WIDTH_MASK) = 0) and 
24bef86e3f3a
add some dust effect to rolling/sliding hedgehogs
sheepluva
parents:
11317
diff
changeset

946 
((ty and LAND_HEIGHT_MASK) = 0) and 
24bef86e3f3a
add some dust effect to rolling/sliding hedgehogs
sheepluva
parents:
11317
diff
changeset

947 
(Land[ty, tx] <> 0) then 
24bef86e3f3a
add some dust effect to rolling/sliding hedgehogs
sheepluva
parents:
11317
diff
changeset

948 
AddVisualGear(tx  2 + Random(4), ty  8, vgtDust); 
24bef86e3f3a
add some dust effect to rolling/sliding hedgehogs
sheepluva
parents:
11317
diff
changeset

949 
end; 
24bef86e3f3a
add some dust effect to rolling/sliding hedgehogs
sheepluva
parents:
11317
diff
changeset

950 

24bef86e3f3a
add some dust effect to rolling/sliding hedgehogs
sheepluva
parents:
11317
diff
changeset

951 
// draw april's fool hat 
10526
b43d175d1577
Avoid promoting violence to hedgehogs. At least once a year.
nemo
parents:
10523
diff
changeset

952 
if AprilOne and (curhat <> nil) then 
b43d175d1577
Avoid promoting violence to hedgehogs. At least once a year.
nemo
parents:
10523
diff
changeset

953 
DrawTextureRotatedF(curhat, 1.0, 1.0, 0, sx, sy, 18, sign, 32, 32, 
b43d175d1577
Avoid promoting violence to hedgehogs. At least once a year.
nemo
parents:
10523
diff
changeset

954 
sign*Gear^.DirAngle) 
b43d175d1577
Avoid promoting violence to hedgehogs. At least once a year.
nemo
parents:
10523
diff
changeset

955 
end; 
10528  956 

4388  957 

958 
if ((Gear^.State and gstHHJumping) <> 0) then 

959 
begin 

960 
DrawHedgehog(sx, sy, 

961 
sign*m, 

962 
1, 

963 
1, 

964 
0); 

965 
defaultPos:= false 

966 
end; 

967 
end; 

968 

969 
with HH^ do 

970 
begin 

971 
if defaultPos then 

972 
begin 

10441
d2f599997b54
Revert hog tinting from rdb65298717da since it wasn't sufficiently complete for a release. More sprites need converting, and there's a slight bug in hog tinting, for away hogs with hats I believe.
nemo
parents:
10390
diff
changeset

973 
if HH^.Team^.hasGone then Tint($FFFFFF80); 
6999  974 
DrawSpriteRotatedF(sprHHIdle, 
4388  975 
sx, 
976 
sy, 

977 
(RealTicks div 128 + Gear^.Pos) mod 19, 

978 
sign, 

979 
0); 

980 
HatVisible:= true; 

981 
end; 

982 

983 
if HatVisible then 

984 
if HatVisibility < 1.0 then 

985 
HatVisibility:= HatVisibility + 0.2 

986 
else 

987 
else 

988 
if HatVisibility > 0.0 then 

989 
HatVisibility:= HatVisibility  0.2; 

990 

10443
42dadeb6e8ae
Remove switching of hog's hat to chef. do it in draw instead.
nemo
parents:
10441
diff
changeset

991 
if (curhat <> nil) 
4388  992 
and (HatVisibility > 0) then 
993 
if DefaultPos then 

994 
begin 

11882
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

995 
// Simple hat with automatic offset 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

996 
if (curhat^.h = 32) and ((curhat^.w = 32) or (curhat^.w = 64)) then 
4388  997 
begin 
11882
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

998 
// Frame 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

999 
tx := (RealTicks div 128 + Gear^.Pos) mod 19; 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1000 
// Hat offset 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1001 
ty := 0; 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1002 
if (tx = 2) or (tx = 7) or (tx = 12) then 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1003 
ty := 1 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1004 
else if tx = 16 then 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1005 
ty := 1; 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1006 
// First frame: No tint 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1007 
DrawTextureF(curhat, 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1008 
HatVisibility, 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1009 
sx, 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1010 
sy  5 + ty, 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1011 
0, 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1012 
sign, 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1013 
32, 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1014 
32); 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1015 
// Second frame: Clan tint (if present) 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1016 
if (curhat^.w = 64) then 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1017 
begin 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1018 
Tint(HH^.Team^.Clan^.Color shl 8 or $FF); 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1019 
DrawTextureF(curhat, 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1020 
HatVisibility, 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1021 
sx, 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1022 
sy  5 + ty, 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1023 
1, 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1024 
sign, 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1025 
32, 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1026 
32); 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1027 
untint 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1028 
end 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1029 
end 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1030 
else 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1031 
// Classic animated hat (all frames drawn manually) 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1032 
begin 
10443
42dadeb6e8ae
Remove switching of hog's hat to chef. do it in draw instead.
nemo
parents:
10441
diff
changeset

1033 
DrawTextureF(curhat, 
4388  1034 
HatVisibility, 
1035 
sx, 

1036 
sy  5, 

11882
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1037 
(RealTicks div 128 + Gear^.Pos) mod 19, 
4388  1038 
sign, 
1039 
32, 

1040 
32); 

11882
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1041 
// Apply clan tint 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1042 
if curhat^.w > 64 then 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1043 
begin 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1044 
Tint(HH^.Team^.Clan^.Color shl 8 or $FF); 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1045 
DrawTextureF(curhat, 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1046 
HatVisibility, 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1047 
sx, 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1048 
sy  5, 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1049 
(RealTicks div 128 + Gear^.Pos) mod 19 + 32, 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1050 
sign, 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1051 
32, 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1052 
32); 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1053 
untint 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1054 
end 
7978  1055 
end; 
9666
8dcb25112d96
 Bring back white dot in the center of crosshair. Crosshair is blurred now!
unc0rr
parents:
9655
diff
changeset

1056 
if HH^.Team^.hasGone then untint 
4388  1057 
end 
1058 
else 

1059 
begin 

10443
42dadeb6e8ae
Remove switching of hog's hat to chef. do it in draw instead.
nemo
parents:
10441
diff
changeset

1060 
DrawTextureF(curhat, 
4388  1061 
HatVisibility, 
1062 
sx, 

1063 
sy  5, 

1064 
0, 

1065 
sign*m, 

1066 
32, 

1067 
32); 

11882
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1068 
if (curhat^.w > 64) or ((curhat^.w = 64) and (curhat^.h = 32)) then 
4388  1069 
begin 
11882
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1070 
if ((curhat^.w = 64) and (curhat^.h = 32)) then 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1071 
tx := 1 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1072 
else 
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1073 
tx := 32; 
4810  1074 
Tint(HH^.Team^.Clan^.Color shl 8 or $FF); 
10443
42dadeb6e8ae
Remove switching of hog's hat to chef. do it in draw instead.
nemo
parents:
10441
diff
changeset

1075 
DrawTextureF(curhat, 
4388  1076 
HatVisibility, 
1077 
sx, 

1078 
sy  5, 

11882
bbd0cb0564c5
Simplify the hat format for unanimated hats
Wuzzy <almikes@aol.com>
parents:
11876
diff
changeset

1079 
tx, 
4388  1080 
sign*m, 
1081 
32, 

1082 
32); 

9666
8dcb25112d96
 Bring back white dot in the center of crosshair. Crosshair is blurred now!
unc0rr
parents:
9655
diff
changeset

1083 
untint 
4388  1084 
end 
1085 
end 

1086 
end; 

12898  1087 

4388  1088 
if (Gear^.State and gstHHDriven) <> 0 then 
1089 
begin 

1090 
(* if (CurAmmoGear = nil) then 

1091 
begin 

1092 
amt:= CurrentHedgehog^.CurAmmoType; 

1093 
case amt of 

1094 
amJetpack: DrawSprite(sprJetpack, sx32, sy32, 0); 

1095 
end 

1096 
end; *) 

12376
c80c51f59a98
Make hogs keep their hat when holding the baseball bat
alfadur
parents:
12306
diff
changeset

1097 
if (CurAmmoGear = nil) then 
c80c51f59a98
Make hogs keep their hat when holding the baseball bat
alfadur
parents:
12306
diff
changeset

1098 
begin 
12898  1099 
if ((Gear^.State and (gstAttacked or gstAnimation or gstHHJumping)) = 0) 
1100 
and (Gear^.Message and (gmLeft or gmRight) = 0) then 

1101 
begin 

12376
c80c51f59a98
Make hogs keep their hat when holding the baseball bat
alfadur
parents:
12306
diff
changeset

1102 
amt:= CurrentHedgehog^.CurAmmoType; 
12898  1103 
case amt of 
1104 
amBaseballBat: DrawSpritePivotedF(sprHandBaseball, 

1105 
sx + 9 * sign, sy + 2, 0, sign, 8, 1, aangle); 

1106 
amMinigun: DrawSpritePivotedF(sprMinigun, 

1107 
sx + 20 * sign, sy + 4, 0, sign, 18, 2, aangle); 

1108 
end; 

12376
c80c51f59a98
Make hogs keep their hat when holding the baseball bat
alfadur
parents:
12306
diff
changeset

1109 
end; 
c80c51f59a98
Make hogs keep their hat when holding the baseball bat
alfadur
parents:
12306
diff
changeset

1110 
end 
c80c51f59a98
Make hogs keep their hat when holding the baseball bat
alfadur
parents:
12306
diff
changeset

1111 
else 
4388  1112 
begin 
12119  1113 
aangle:= Gear^.Angle * 180 / cMaxAngle  90; 
4388  1114 
case CurAmmoGear^.Kind of 
1115 
gtJetpack: begin 

1116 
DrawSprite(sprJetpack, sx32, sy32, 0); 

1117 
if cWaterLine > hwRound(Gear^.Y) + Gear^.Radius then 

1118 
begin 

6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

1119 
if (CurAmmoGear^.MsgParam and gmUp) <> 0 then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

1120 
DrawSprite(sprJetpack, sx32, sy28, 1); 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

1121 
if (CurAmmoGear^.MsgParam and gmLeft) <> 0 then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

1122 
DrawSprite(sprJetpack, sx28, sy28, 2); 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

1123 
if (CurAmmoGear^.MsgParam and gmRight) <> 0 then 
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6508
diff
changeset

1124 
DrawSprite(sprJetpack, sx36, sy28, 3) 
4388  1125 
end; 
1126 
end; 

12898  1127 
gtShover: DrawSpritePivotedF(sprHandBaseball, 
1128 
sx + 9 * sign, sy + 2, CurAmmoGear^.Tag, sign, 8, 1, aangle); 

1129 
gtMinigun: DrawSpritePivotedF(sprMinigun, 

1130 
sx + 20 * sign, sy + 4, CurAmmoGear^.Tag, sign, 18, 2, aangle); 

4388  1131 
end; 
1132 
end 

1133 
end; 

1134 

1135 
with HH^ do 

1136 
begin 

6453
11c578d30bd3
Countless imporvements to the parser and countless help to the parser in sources.
unc0rr
parents:
6328
diff
changeset

1137 
if ((Gear^.State and (not gstWinner)) = 0) 
4388  1138 
or ((Gear^.State = gstWait) and (Gear^.dY.QWordValue = 0)) 
1139 
or (bShowFinger and ((Gear^.State and gstHHDriven) <> 0)) then 

1140 
begin 

1141 
t:= sy  cHHRadius  9; 

1142 
if (cTagsMask and htTransparent) <> 0 then 

1143 
Tint($FF, $FF, $FF, $80); 

1144 
if ((cTagsMask and htHealth) <> 0) then 

1145 
begin 

1146 
dec(t, HealthTagTex^.h + 2); 

6999  1147 
DrawTextureCentered(ox, t, HealthTagTex) 
4388  1148 
end; 
1149 
if (cTagsMask and htName) <> 0 then 

1150 
begin 

1151 
dec(t, NameTagTex^.h + 2); 

6999  1152 
DrawTextureCentered(ox, t, NameTagTex) 
4388  1153 
end; 
1154 
if (cTagsMask and htTeamName) <> 0 then 

1155 
begin 

1156 
dec(t, Team^.NameTagTex^.h + 2); 

6999  1157 
DrawTextureCentered(ox, t, Team^.NameTagTex) 
4388  1158 
end; 
1159 
if (cTagsMask and htTransparent) <> 0 then 

9666
8dcb25112d96
 Bring back white dot in the center of crosshair. Crosshair is blurred now!
unc0rr
parents:
9655
diff
changeset

1160 
untint 
4388  1161 
end; 
1162 
if (Gear^.State and gstHHDriven) <> 0 then // Current hedgehog 

1163 
begin 

4394  1164 
if (CurAmmoGear <> nil) and (CurAmmoGear^.Kind = gtResurrector) then 
6999  1165 
DrawTextureCentered(ox, sy  cHHRadius  7  HealthTagTex^.h, HealthTagTex); 
4394  1166 

4388  1167 
if bShowFinger and ((Gear^.State and gstHHDriven) <> 0) then 
10000
d657b6656c19
position "finger"/pointer over current hog above tags
sheepluva
parents:
9998
diff
changeset

1168 
begin 
10001
ec523563826e
disallow currenthh arrow to go offscreen, always point in direction of the hog  this should make the life of new players easier
sheepluva
parents:
10000
diff
changeset

1169 
ty := oy  32; 
10000
d657b6656c19
position "finger"/pointer over current hog above tags
sheepluva
parents:
9998
diff
changeset

1170 
// move finger higher up if tags are above hog 
d657b6656c19
position "finger"/pointer over current hog above tags
sheepluva
parents:
9998
diff
changeset

1171 
if (cTagsMask and htTeamName) <> 0 then 
d657b6656c19
position "finger"/pointer over current hog above tags
sheepluva
parents:
9998
diff
changeset

1172 
ty := ty  Team^.NameTagTex^.h  2; 
d657b6656c19
position "finger"/pointer over current hog above tags
sheepluva
parents:
9998
diff
changeset

1173 
if (cTagsMask and htName) <> 0 then 
d657b6656c19
position "finger"/pointer over current hog above tags
sheepluva
parents:
9998
diff
changeset

1174 
ty := ty  NameTagTex^.h  2; 
d657b6656c19
position "finger"/pointer over current hog above tags
sheepluva
parents:
9998
diff
changeset

1175 
if (cTagsMask and htHealth) <> 0 then 
d657b6656c19
position "finger"/pointer over current hog above tags
sheepluva
parents:
9998
diff
changeset

1176 
ty := ty  HealthTagTex^.h  2; 
10001
ec523563826e
disallow currenthh arrow to go offscreen, always point in direction of the hog  this should make the life of new players easier
sheepluva
parents:
10000
diff
changeset

1177 
tx := ox; 
10312  1178 

1179 
// don't go offscreen 

1180 
//tx := round(max(((cScreenWidth + 16) / cScaleFactor) + SpritesData[sprFinger].Width div 2, min(((cScreenWidth  16) / cScaleFactor)  SpritesData[sprFinger].Width div 2, tx))); 

1181 
//ty := round(max(cScreenHeight div 2  ((cScreenHeight  16) / cScaleFactor) + SpritesData[sprFinger].Height div 2, min(cScreenHeight div 2  ((cScreenHeight + SpritesData[sprFinger].Height) / (cScaleFactor))  SpritesData[sprFinger].Width div 2  96, ty))); 

1182 
t:= 32;//trunc((SpritesData[sprFinger].Width + t) / cScaleFactor); 

1183 
tx := min(max(tx, ViewLeftX + t), ViewRightX  t); 

1184 
t:= 32;//trunc((SpritesData[sprFinger].Height + t) / cScaleFactor); 

1185 
ty := min(ty, ViewBottomY  96); 

1186 
// don't overlap with HH or HH tags 

10313  1187 
if ty < ViewTopY + t then 
1188 
begin 

1189 
if abs(tx  ox) < abs(ty  oy) then 

1190 
ty:= max(ViewTopY + t, oy + t) 

1191 
else 

1192 
ty:= max(ViewTopY + t, ty); 

1193 
end; 

10080  1194 

10082  1195 
dAngle := DxDy2Angle(int2hwfloat(ty  oy), int2hwfloat(tx  ox)) + 90; 
10080  1196 

14395
f39d34d78028
Colorize switching arrows, pointing arrow and target cross in clan color
Wuzzy <Wuzzy2@mail.ru>
parents:
14341
diff
changeset

1197 
Tint(Team^.Clan^.Color shl 8 or $FF); 
10312  1198 
DrawSpriteRotatedF(sprFinger, tx, ty, RealTicks div 32 mod 16, 1, dAngle); 
14395
f39d34d78028
Colorize switching arrows, pointing arrow and target cross in clan color
Wuzzy <Wuzzy2@mail.ru>
parents:
14341
diff
changeset

1199 
untint; 
10000
d657b6656c19
position "finger"/pointer over current hog above tags
sheepluva
parents:
9998
diff
changeset

1200 
end; 
4388  1201 

10001
ec523563826e
disallow currenthh arrow to go offscreen, always point in direction of the hog  this should make the life of new players easier
sheepluva
parents:
10000
diff
changeset

1202 

4388  1203 
if (Gear^.State and gstDrowning) = 0 then 
1204 
if (Gear^.State and gstHHThinking) <> 0 then 

1205 
DrawSprite(sprQuestion, ox  10, oy  cHHRadius  34, (RealTicks shr 9) mod 8) 

1206 
end 

1207 
end; 

1208 

7010
10a0a31804f3
Switch effects to longint for convenience of tracking ice states. I could add a new Hedgehog value, but since we have this effects list being all useless as booleans anyway...
nemo
parents:
6999
diff
changeset

1209 
if HH^.Effects[hePoisoned] <> 0 then 
4388  1210 
begin 
1211 
Tint($00, $FF, $40, $80); 

10142  1212 
DrawTextureRotatedF(SpritesData[sprSmokeWhite].texture, 1.5, 0, 0, sx, sy, 0, 1, 22, 22, 360  (RealTicks shr 5) mod 360); 
4388  1213 
end; 
7010
10a0a31804f3
Switch effects to longint for convenience of tracking ice states. I could add a new Hedgehog value, but since we have this effects list being all useless as booleans anyway...
nemo
parents:
6999
diff
changeset

1214 
if HH^.Effects[heResurrected] <> 0 then 
4388  1215 
begin 
1216 
Tint($f5, $db, $35, $20); 

1217 
DrawSprite(sprVampiric, sx  24, sy  24, 0); 

1218 
end; 

1219 

9685
7d925e82e572
Tweak trophyrace to work better w/ skip (probably, needs testing), drop Invulnerable in favour of effects  heInvulnerable is already in effects,
nemo
parents:
9667
diff
changeset

1220 
if (Gear^.Hedgehog^.Effects[heInvulnerable] <> 0) then 
4388  1221 
begin 
1222 
Tint($FF, $FF, $FF, max($40, round($FF * abs(1  ((RealTicks div 2 + Gear^.uid * 491) mod 1500) / 750)))); 

1223 
DrawSprite(sprInvulnerable, sx  24, sy  24, 0); 

1224 
end; 

8557  1225 

8656
a8282143a8df
use opacity to indicate thawing. not totally happy w/ effect, but argument was made to indicate some progress towards thaw. drop "exit" since it really wasn't helpful, and not rendering tags, was more annoying than fun.
nemo
parents:
8628
diff
changeset

1226 
if HH^.Effects[heFrozen] < 150000 then 
8557  1227 
begin 
8656
a8282143a8df
use opacity to indicate thawing. not totally happy w/ effect, but argument was made to indicate some progress towards thaw. drop "exit" since it really wasn't helpful, and not rendering tags, was more annoying than fun.
nemo
parents:
8628
diff
changeset

1228 
if HH^.Effects[heFrozen] < 150000 then 
8681
d0fc1dca739c
yeah. this was a bad idea. the minor difference in thaw speed vs last hog of team never unthawing.
nemo
parents:
8656
diff
changeset

1229 
Tint($FF, $FF, $FF, min(255,127+HH^.Effects[heFrozen] div 800)); 
8656
a8282143a8df
use opacity to indicate thawing. not totally happy w/ effect, but argument was made to indicate some progress towards thaw. drop "exit" since it really wasn't helpful, and not rendering tags, was more annoying than fun.
nemo
parents:
8628
diff
changeset

1230 

8684  1231 
iceOffset:= min(32, HH^.Effects[heFrozen] div 8); 
8560  1232 
r.x := 128; 
8684  1233 
r.y := 96  iceOffset; 
1234 
r.w := 32; 

8689  1235 
r.h := iceOffset; 
10324
5d90d8ca9657
tweak code of DrawTextureFromRectDir a bit, removing issue with different x offset depending on dir. also removing the workaround wrt that issue in the frozen hog code
sheepluva
parents:
10313
diff
changeset

1236 
DrawTextureFromRectDir(sx  16 + sign*2, sy + 16  iceoffset, r.w, r.h, @r, HHTexture, sign); 
8684  1237 

8557  1238 

8656
a8282143a8df
use opacity to indicate thawing. not totally happy w/ effect, but argument was made to indicate some progress towards thaw. drop "exit" since it really wasn't helpful, and not rendering tags, was more annoying than fun.
nemo
parents:
8628
diff
changeset

1239 
if HH^.Effects[heFrozen] < 150000 then 
9666
8dcb25112d96
 Bring back white dot in the center of crosshair. Crosshair is blurred now!
unc0rr
parents:
9655
diff
changeset

1240 
untint; 
8557  1241 
end; 
1242 

1243 

4388  1244 
if cVampiric and 
1245 
(CurrentHedgehog^.Gear <> nil) and 

1246 
(CurrentHedgehog^.Gear = Gear) then 

1247 
begin 

1248 
Tint($FF, 0, 0, max($40, round($FF * abs(1  (RealTicks mod 1500) / 750)))); 

1249 
DrawSprite(sprVampiric, sx  24, sy  24, 0); 

1250 
end; 

9666
8dcb25112d96
 Bring back white dot in the center of crosshair. Crosshair is blurred now!
unc0rr
parents:
9655
diff
changeset

1251 
untint 
4388  1252 
end; 
1253 

1254 

1255 
procedure RenderGear(Gear: PGear; x, y: LongInt); 

1256 
var 

1257 
HHGear: PGear; 

7093  1258 
vg: PVisualGear; 
4388  1259 
i: Longword; 
6788
88036f0e0a92
I think this is a little more efficient than dxdy, and easier to read. We call DxDy2 a lot, can any of those use Angle/DirAngle?
nemo
parents:
6700
diff
changeset

1260 
aAngle: real; 
4388  1261 
startX, endX, startY, endY: LongInt; 
1262 
begin 

13404
8ce83caec236
Make mine active/hunting glow a bit more obvious. Add frozen sprite, increase ice beam mine "hit" radius a bit
nemo
parents:
13399
diff
changeset

1263 
// airmine has its own sprite 
8ce83caec236
Make mine active/hunting glow a bit more obvious. Add frozen sprite, increase ice beam mine "hit" radius a bit
nemo
parents:
13399
diff
changeset

1264 
if (Gear^.State and gstFrozen <> 0) and (Gear^.Kind <> gtAirMine) then Tint($A0, $A0, $FF, $FF); 
9041
aefe46d64dd9
Make frozen crates uncollectable, add some tinting to frozen items. Suggestions needed for what should happen to explosives
nemo
parents:
8854
diff
changeset

1265 
//if Gear^.State and gstFrozen <> 0 then Tint(IceColor or $FF); 
5612
2638dec1b323
This really should have been a TPoint for consistency
nemo
parents:
5561
diff
changeset

1266 
if Gear^.Target.X <> NoPointX then 
5507
1040c0946ef8
This should make bee/airstrikes play nicer with infinite attack mode
nemo
parents:
5472
diff
changeset

1267 
if Gear^.AmmoType = amBee then 
6999  1268 
DrawSpriteRotatedF(sprTargetBee, Gear^.Target.X + WorldDx, Gear^.Target.Y + WorldDy, 0, 0, (RealTicks shr 3) mod 360) 
8689  1269 
else if Gear^.AmmoType = amIceGun then 
1270 
//DrawSprite(sprSnowDust, Gear^.Target.X + WorldDx, Gear^.Target.Y + WorldDy, (RealTicks shr 2) mod 8) 

7093  1271 
//DrawTextureRotatedF(SpritesData[sprSnowDust].Texture, 1, 0, 0, Gear^.Target.X + WorldDx, Gear^.Target.Y + WorldDy, (RealTicks shr 2) mod 8, 1, 22, 22, (RealTicks shr 3) mod 360) 
1272 
DrawTextureRotatedF(SpritesData[sprSnowDust].Texture, 1/(1+(RealTicks shr 8) mod 5), 0, 0, Gear^.Target.X + WorldDx, Gear^.Target.Y + WorldDy, (RealTicks shr 2) mod 8, 1, 22, 22, (RealTicks shr 3) mod 360) 

7010
10a0a31804f3
Switch effects to longint for convenience of tracking ice states. I could add a new Hedgehog value, but since we have this effects list being all useless as booleans anyway...
nemo
parents:
6999
diff
changeset

1273 
else 
14395
f39d34d78028
Colorize switching arrows, pointing arrow and target cross in clan color
Wuzzy <Wuzzy2@mail.ru>
parents:
14341
diff
changeset

1274 
begin 
f39d34d78028
Colorize switching arrows, pointing arrow and target cross in clan color
Wuzzy <Wuzzy2@mail.ru>
parents:
14341
diff
changeset

1275 
if CurrentHedgehog <> nil then 
f39d34d78028
Colorize switching arrows, pointing arrow and target cross in clan color
Wuzzy <Wuzzy2@mail.ru>
parents:
14341
diff
changeset

1276 
Tint(CurrentHedgehog^.Team^.Clan^.Color shl 8 or $FF); 
7010
10a0a31804f3
Switch effects to longint for convenience of tracking ice states. I could add a new Hedgehog value, but since we have this effects list being all useless as booleans anyway...
nemo
parents:
6999
diff
changeset

1277 
DrawSpriteRotatedF(sprTargetP, Gear^.Target.X + WorldDx, Gear^.Target.Y + WorldDy, 0, 0, (RealTicks shr 3) mod 360); 
14395
f39d34d78028
Colorize switching arrows, pointing arrow and target cross in clan color
Wuzzy <Wuzzy2@mail.ru>
parents:
14341
diff
changeset

1278 
if CurrentHedgehog <> nil then 
f39d34d78028
Colorize switching arrows, pointing arrow and target cross in clan color
Wuzzy <Wuzzy2@mail.ru>
parents:
14341
diff
changeset

1279 
untint; 
f39d34d78028
Colorize switching arrows, pointing arrow and target cross in clan color
Wuzzy <Wuzzy2@mail.ru>
parents:
14341
diff
changeset

1280 
end; 
5507
1040c0946ef8
This should make bee/airstrikes play nicer with infinite attack mode
nemo
parents:
5472
diff
changeset

1281 

4388  1282 
case Gear^.Kind of 
6999  1283 
gtGrenade: DrawSpriteRotated(sprBomb, x, y, 0, Gear^.DirAngle); 
1284 
gtSnowball: DrawSpriteRotated(sprSnowball, x, y, 0, Gear^.DirAngle); 

1285 
gtGasBomb: DrawSpriteRotated(sprCheese, x, y, 0, Gear^.DirAngle); 

8689  1286 

5871
09daa06191d7
Since we are tweaking molotov. make the flame flickery and add a drowning frame
nemo
parents:
5787
diff
changeset

1287 
gtMolotov: if (Gear^.State and gstDrowning) = 0 then 
6999  1288 
DrawSpriteRotatedF(sprMolotov, x, y, (RealTicks div 125) mod 8, hwSign(Gear^.dX), Gear^.DirAngle * hwSign(Gear^.dX)) 
5871
09daa06191d7
Since we are tweaking molotov. make the flame flickery and add a drowning frame
nemo
parents:
5787
diff
changeset

1289 
else DrawSprite(sprMolotov, x, y, 8); 
4388  1290 

1291 
gtRCPlane: begin 

6788
88036f0e0a92
I think this is a little more efficient than dxdy, and easier to read. We call DxDy2 a lot, can any of those use Angle/DirAngle?
nemo
parents:
6700
diff
changeset

1292 
aangle:= Gear^.Angle * 360 / 4096; 
88036f0e0a92
I think this is a little more efficient than dxdy, and easier to read. We call DxDy2 a lot, can any of those use Angle/DirAngle?
nemo
parents:
6700
diff
changeset

1293 
if Gear^.Tag < 0 then aangle:= 360aangle; 
10032
db65298717da
This adds idle hog tinting. Active hog tinting still needed.
nemo
parents:
10001
diff
changeset

1294 
Tint(Gear^.Tint); 
6999  1295 
DrawSpriteRotatedF(sprPlane, x, y, 0, Gear^.Tag, aangle  90); 
9666
8dcb25112d96
 Bring back white dot in the center of crosshair. Crosshair is blurred now!
unc0rr
parents:
9655
diff
changeset

1296 
untint; 
6999  1297 
DrawSpriteRotatedF(sprPlane, x, y, 1, Gear^.Tag, aangle  90) 
4388  1298 
end; 
6999  1299 
gtBall: DrawSpriteRotatedF(sprBalls, x, y, Gear^.Tag,0, Gear^.DirAngle); 
4388  1300 

13282
b13071610c07
Flying portal balls now spawn a few spark effects
Wuzzy <Wuzzy2@mail.ru>
parents:
13233
diff
changeset

1301 
gtPortal: begin 
b13071610c07
Flying portal balls now spawn a few spark effects
Wuzzy <Wuzzy2@mail.ru>
parents:
13233
diff
changeset

1302 
if ((Gear^.Tag and 1) = 0) // still moving? 
7272
71df899c4163
Second part of the change. Make collision check use the new mask bit.
nemo
parents:
7168
diff
changeset

1303 
or (Gear^.LinkedGear = nil) or (Gear^.LinkedGear^.LinkedGear <> Gear) // not linked&backlinked? 
71df899c4163
Second part of the change. Make collision check use the new mask bit.
nemo
parents:
7168
diff
changeset

1304 
or ((Gear^.LinkedGear^.Tag and 1) = 0) then // linked portal still moving? 
13282
b13071610c07
Flying portal balls now spawn a few spark effects
Wuzzy <Wuzzy2@mail.ru>
parents:
13233
diff
changeset

1305 
DrawSpriteRotatedF(sprPortal, x, y, Gear^.Tag, hwSign(Gear^.dX), Gear^.DirAngle) 
b13071610c07
Flying portal balls now spawn a few spark effects
Wuzzy <Wuzzy2@mail.ru>
parents:
13233
diff
changeset

1306 
else 
b13071610c07
Flying portal balls now spawn a few spark effects
Wuzzy <Wuzzy2@mail.ru>
parents:
13233
diff
changeset

1307 
DrawSpriteRotatedF(sprPortal, x, y, 4 + Gear^.Tag div 2, hwSign(Gear^.dX), Gear^.DirAngle); 
b13071610c07
Flying portal balls now spawn a few spark effects
Wuzzy <Wuzzy2@mail.ru>
parents:
13233
diff
changeset

1308 

b13071610c07
Flying portal balls now spawn a few spark effects
Wuzzy <Wuzzy2@mail.ru>
parents:
13233
diff
changeset

1309 
// Portal ball trace effects 
b13071610c07
Flying portal balls now spawn a few spark effects
Wuzzy <Wuzzy2@mail.ru>
parents:
13233
diff
changeset

1310 
if ((Gear^.Tag and 1) = 0) and ((GameTicks mod 4) = 0) and (not isPaused) then 
b13071610c07
Flying portal balls now spawn a few spark effects
Wuzzy <Wuzzy2@mail.ru>
parents:
13233
diff
changeset

1311 
begin 
b13071610c07
Flying portal balls now spawn a few spark effects
Wuzzy <Wuzzy2@mail.ru>
parents:
13233
diff
changeset

1312 
vg:= AddVisualGear(hwRound(Gear^.X), hwRound(Gear^.Y), vgtDust, 1); 
13328
2489c36c61b7
Fix crash when firing portal gun at low quality graphics
Wuzzy <Wuzzy2@mail.ru>
parents:
13282
diff
changeset

1313 
if vg <> nil then 
2489c36c61b7
Fix crash when firing portal gun at low quality graphics
Wuzzy <Wuzzy2@mail.ru>
parents:
13282
diff
changeset

1314 
if Gear^.Tag = 0 then 
2489c36c61b7
Fix crash when firing portal gun at low quality graphics
Wuzzy <Wuzzy2@mail.ru>
parents:
13282
diff
changeset

1315 
vg^.Tint:= $fab02ab0 
2489c36c61b7
Fix crash when firing portal gun at low quality graphics
Wuzzy <Wuzzy2@mail.ru>
parents:
13282
diff
changeset

1316 
else if Gear^.Tag = 2 then 
2489c36c61b7
Fix crash when firing portal gun at low quality graphics
Wuzzy <Wuzzy2@mail.ru>
parents:
13282
diff
changeset

1317 
vg^.Tint:= $364df7b0; 
13282
b13071610c07
Flying portal balls now spawn a few spark effects
Wuzzy <Wuzzy2@mail.ru>
parents:
13233
diff
changeset

1318 
end; 
b13071610c07
Flying portal balls now spawn a few spark effects
Wuzzy <Wuzzy2@mail.ru>
parents:
13233
diff
changeset

1319 
end; 
4388  1320 

1321 
gtDrill: if (Gear^.State and gsttmpFlag) <> 0 then 

6999  1322 
DrawSpriteRotated(sprAirDrill, x, y, 0, DxDy2Angle(Gear^.dY, Gear^.dX)) 
4388  1323 
else 
6999  1324 
DrawSpriteRotated(sprDrill, x, y, 0, DxDy2Angle(Gear^.dY, Gear^.dX)); 
4388  1325 

1326 
gtHedgehog: DrawHH(Gear, x, y); 

1327 

6999  1328 
gtShell: DrawSpriteRotated(sprBazookaShell, x, y, 0, DxDy2Angle(Gear^.dY, Gear^.dX)); 
4388  1329 

1330 
gtGrave: begin 

12849
40c410cd6402
rock the duck a bit  also replace a few other values with realtick that seemed like they should probably animate in pause
nemo
parents:
12764
diff
changeset

1331 
DrawTextureF(Gear^.Hedgehog^.Team^.GraveTex, 1, x, y, (RealTicks shr 7+Gear^.uid) and 15, 1, 32, 32); 
4388  1332 
if Gear^.Health > 0 then 
1333 
begin 

1334 
//Tint($33, $33, $FF, max($40, round($FF * abs(1  (GameTicks mod (6000 div Gear^.Health)) / 750)))); 

12849
40c410cd6402
rock the duck a bit  also replace a few other values with realtick that seemed like they should probably animate in pause
nemo
parents:
12764
diff
changeset

1335 
Tint($f5, $db, $35, max($40, round($FF * abs(1  (RealTicks mod 1500) / (750 + Gear^.Health))))); 
4388  1336 
//Tint($FF, $FF, $FF, max($40, round($FF * abs(1  (RealTicks mod 1500) / 750)))); 
1337 
DrawSprite(sprVampiric, x  24, y  24, 0); 

9666
8dcb25112d96
 Bring back white dot in the center of crosshair. Crosshair is blurred now!
unc0rr
parents:
9655
diff
changeset

1338 
untint 
4388  1339 
end 
1340 
end; 

12849
40c410cd6402
rock the duck a bit  also replace a few other values with realtick that seemed like they should probably animate in pause
nemo
parents:
12764
diff
changeset

1341 
gtBee: DrawSpriteRotatedF(sprBee, x, y, (RealTicks shr 5) mod 2, 0, DxDy2Angle(Gear^.dY, Gear^.dX)); 
4388  1342 
gtPickHammer: DrawSprite(sprPHammer, x  16, y  50 + LongInt(((GameTicks shr 5) and 1) * 2), 0); 
1343 
gtRope: DrawRope(Gear); 

8689  1344 

9041
aefe46d64dd9
Make frozen crates uncollectable, add some tinting to frozen items. Suggestions needed for what should happen to explosives
nemo
parents:
8854
diff
changeset

1345 
gtMine: begin 
aefe46d64dd9
Make frozen crates uncollectable, add some tinting to frozen items. Suggestions needed for what should happen to explosives
nemo
parents:
8854
diff
changeset

1346 
if (((Gear^.State and gstAttacking) = 0)or((Gear^.Timer and $3FF) < 420)) and (Gear^.Health <> 0) then 
6999  1347 
DrawSpriteRotated(sprMineOff, x, y, 0, Gear^.DirAngle) 
9041
aefe46d64dd9
Make frozen crates uncollectable, add some tinting to frozen items. Suggestions needed for what should happen to explosives
nemo
parents:
8854
diff
changeset

1348 
else if Gear^.Health <> 0 then 
aefe46d64dd9
Make frozen crates uncollectable, add some tinting to frozen items. Suggestions needed for what should happen to explosives
nemo
parents:
8854
diff
changeset

1349 
DrawSpriteRotated(sprMineOn, x, y, 0, Gear^.DirAngle) 
aefe46d64dd9
Make frozen crates uncollectable, add some tinting to frozen items. Suggestions needed for what should happen to explosives
nemo
parents:
8854
diff
changeset

1350 
else DrawSpriteRotated(sprMineDead, x, y, 0, Gear^.DirAngle); 
aefe46d64dd9
Make frozen crates uncollectable, add some tinting to frozen items. Suggestions needed for what should happen to explosives
nemo
parents:
8854
diff
changeset

1351 
end; 
13404
8ce83caec236
Make mine active/hunting glow a bit more obvious. Add frozen sprite, increase ice beam mine "hit" radius a bit
nemo
parents:
13399
diff
changeset

1352 
gtAirMine: 
14341
d5317635f368
fix bounds check, make out of bounds air mines fall since there's no land to check them into
nemo
parents:
14286
diff
changeset

1353 
if (Gear^.State and gstFrozen <> 0) then 
d5317635f368
fix bounds check, make out of bounds air mines fall since there's no land to check them into
nemo
parents:
14286
diff
changeset

1354 
DrawSprite(sprFrozenAirMine, x16, y16, 0) 
