author | blackmetalowiec |
Tue, 29 Nov 2011 16:24:25 +0100 | |
changeset 6470 | a4d23fd2be08 |
parent 6453 | 11c578d30bd3 |
child 6492 | 71db3c0daa0a |
permissions | -rw-r--r-- |
4 | 1 |
(* |
1066 | 2 |
* Hedgewars, a free turn based strategy game |
4976 | 3 |
* Copyright (c) 2004-2011 Andrey Korotaev <unC0Rr@gmail.com> |
4 | 4 |
* |
183 | 5 |
* This program is free software; you can redistribute it and/or modify |
6 |
* it under the terms of the GNU General Public License as published by |
|
7 |
* the Free Software Foundation; version 2 of the License |
|
4 | 8 |
* |
183 | 9 |
* This program is distributed in the hope that it will be useful, |
10 |
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
11 |
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
12 |
* GNU General Public License for more details. |
|
4 | 13 |
* |
183 | 14 |
* You should have received a copy of the GNU General Public License |
15 |
* along with this program; if not, write to the Free Software |
|
16 |
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA |
|
4 | 17 |
*) |
18 |
||
2630 | 19 |
{$INCLUDE "options.inc"} |
4850 | 20 |
{$IF GLunit = GL}{$DEFINE GLunit:=GL,GLext}{$ENDIF} |
2630 | 21 |
|
4 | 22 |
unit uWorld; |
23 |
interface |
|
4357
a1fcfc341a52
Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents:
4248
diff
changeset
|
24 |
uses SDLh, uGears, uConsts, uFloat, uRandom, uTypes; |
3697 | 25 |
|
3038 | 26 |
procedure initModule; |
27 |
procedure freeModule; |
|
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2713
diff
changeset
|
28 |
|
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2713
diff
changeset
|
29 |
procedure InitWorld; |
6394
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6380
diff
changeset
|
30 |
procedure ResetWorldTex; |
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6380
diff
changeset
|
31 |
|
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2713
diff
changeset
|
32 |
procedure DrawWorld(Lag: LongInt); |
3692 | 33 |
procedure DrawWorldStereo(Lag: LongInt; RM: TRenderMode); |
2905 | 34 |
procedure ShowMission(caption, subcaption, text: ansistring; icon, time : LongInt); |
2786 | 35 |
procedure HideMission; |
6011
519f8a58c021
Fix a bunch of warnings (also improves speed a bit in 32 bit code)
unC0Rr
parents:
5862
diff
changeset
|
36 |
procedure ShakeCamera(amount: LongInt); |
5682
06d5f561f772
some camera adjustments (should also fix cam flickering on lowerst res)
sheepluva
parents:
5675
diff
changeset
|
37 |
procedure InitCameraBorders; |
3638
33ee433749ba
touch overlay reworked, improvements to zoom and confirmation
koda
parents:
3629
diff
changeset
|
38 |
procedure MoveCamera; |
5521 | 39 |
procedure onFocusStateChanged; |
4 | 40 |
|
41 |
implementation |
|
4359 | 42 |
uses |
43 |
uStore, |
|
44 |
uMisc, |
|
45 |
uIO, |
|
46 |
uLocale, |
|
47 |
uSound, |
|
48 |
uAmmos, |
|
49 |
uVisualGears, |
|
50 |
uChat, |
|
51 |
uLandTexture, |
|
52 |
GLunit, |
|
4374 | 53 |
uVariables, |
4375 | 54 |
uUtils, |
4378 | 55 |
uTextures, |
4380 | 56 |
uRender, |
5191
c7000a6b397b
- Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
5149
diff
changeset
|
57 |
uCaptions, |
5521 | 58 |
uCursor, |
6016
85410eef7ba4
disable the followgear vertical offset for small screen devices
koda
parents:
6011
diff
changeset
|
59 |
uCommands, |
85410eef7ba4
disable the followgear vertical offset for small screen devices
koda
parents:
6011
diff
changeset
|
60 |
uMobile |
4359 | 61 |
; |
4 | 62 |
|
2161
0c8634241fa4
Some work on zooming. Hedgewars are now unplayable.
unc0rr
parents:
2152
diff
changeset
|
63 |
var cWaveWidth, cWaveHeight: LongInt; |
3434 | 64 |
AMSlotSize, AMxOffset, AMyOffset, AMWidth, AMxShift, SlotsNum: LongInt; |
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2682
diff
changeset
|
65 |
tmpSurface: PSDL_Surface; |
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2682
diff
changeset
|
66 |
fpsTexture: PTexture; |
2850
f6f8db825ce7
A little clock for convenience in finding things in demos
nemo
parents:
2839
diff
changeset
|
67 |
timeTexture: PTexture; |
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2713
diff
changeset
|
68 |
FPS: Longword; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2713
diff
changeset
|
69 |
CountTicks: Longword; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2713
diff
changeset
|
70 |
SoundTimerTicks: Longword; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2713
diff
changeset
|
71 |
prevPoint: TPoint; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
72 |
amSel: TAmmoType = amNothing; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
73 |
missionTex: PTexture; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
74 |
missionTimer: LongInt; |
4850 | 75 |
stereoDepth: GLfloat; |
3692 | 76 |
|
4816
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
77 |
const cStereo_Sky = 0.0500; |
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
78 |
cStereo_Horizon = 0.0250; |
6302
db8bdbb34e03
Spread flakes out over 5 layers now (far back, mid distance, just behind land, just in front of lands and hog, near distance). Spread clouds out over 3 layers (far back, mid distance, just behind land). Add a flatten clouds option, use
nemo
parents:
6296
diff
changeset
|
79 |
cStereo_MidDistance = 0.0175; |
4816
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
80 |
cStereo_Water_distant = 0.0125; |
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
81 |
cStereo_Land = 0.0075; |
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
82 |
cStereo_Water_near = 0.0025; |
6289
95ffd59d0f4a
Increase rarity of near flakes (don't want them intruding in game much). Also fix stereo. Near flakes were being drawn far.
nemo
parents:
6276
diff
changeset
|
83 |
cStereo_Outside = -0.0400; |
4 | 84 |
|
85 |
procedure InitWorld; |
|
2704
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset
|
86 |
var i, t: LongInt; |
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset
|
87 |
cp: PClan; |
2863 | 88 |
g: ansistring; |
89 |
||
2904 | 90 |
// helper functions to create the goal/game mode string |
2908 | 91 |
function AddGoal(s: ansistring; gf: longword; si: TGoalStrId; i: LongInt): ansistring; |
2905 | 92 |
var t: ansistring; |
2904 | 93 |
begin |
94 |
if (GameFlags and gf) <> 0 then |
|
95 |
begin |
|
96 |
t:= inttostr(i); |
|
97 |
s:= s + format(trgoal[si], t) + '|' |
|
98 |
end; |
|
99 |
AddGoal:= s; |
|
100 |
end; |
|
101 |
||
2908 | 102 |
function AddGoal(s: ansistring; gf: longword; si: TGoalStrId): ansistring; |
2863 | 103 |
begin |
2904 | 104 |
if (GameFlags and gf) <> 0 then |
105 |
s:= s + trgoal[si] + '|'; |
|
2863 | 106 |
AddGoal:= s; |
107 |
end; |
|
4 | 108 |
begin |
3764 | 109 |
missionTimer:= 0; |
2786 | 110 |
|
2704
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset
|
111 |
if (GameFlags and gfRandomOrder) <> 0 then // shuffle them up a bit |
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset
|
112 |
begin |
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset
|
113 |
for i:= 0 to ClansCount * 4 do |
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset
|
114 |
begin |
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset
|
115 |
t:= GetRandom(ClansCount); |
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset
|
116 |
if t <> 0 then |
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset
|
117 |
begin |
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset
|
118 |
cp:= ClansArray[0]; |
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset
|
119 |
ClansArray[0]:= ClansArray[t]; |
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset
|
120 |
ClansArray[t]:= cp; |
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset
|
121 |
ClansArray[t]^.ClanIndex:= t; |
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset
|
122 |
ClansArray[0]^.ClanIndex:= 0; |
2856
cc70797a0b75
Adjust LocalClan when shuffling, set to -1 in case all local clans are bots.
nemo
parents:
2855
diff
changeset
|
123 |
if (LocalClan = t) then LocalClan:= 0 |
cc70797a0b75
Adjust LocalClan when shuffling, set to -1 in case all local clans are bots.
nemo
parents:
2855
diff
changeset
|
124 |
else if (LocalClan = 0) then LocalClan:= t |
2704
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset
|
125 |
end; |
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset
|
126 |
end; |
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset
|
127 |
CurrentTeam:= ClansArray[0]^.Teams[0]; |
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset
|
128 |
end; |
51cda17b7c3b
Rolling random numbers before land is generated is bad, m'kay? InitWorld probably not the best place for it.
nemo
parents:
2699
diff
changeset
|
129 |
|
2908 | 130 |
// if special game flags/settings are changed, add them to the game mode notice window and then show it |
2863 | 131 |
g:= ''; // no text/things to note yet |
2908 | 132 |
|
4883
7cddc9201a1d
added dummy for tardis and ugly icons for tardis and structure
Henek
parents:
4850
diff
changeset
|
133 |
// add custom goals from lua script if there are any |
7cddc9201a1d
added dummy for tardis and ugly icons for tardis and structure
Henek
parents:
4850
diff
changeset
|
134 |
if LuaGoals <> '' then g:= LuaGoals + '|'; |
7cddc9201a1d
added dummy for tardis and ugly icons for tardis and structure
Henek
parents:
4850
diff
changeset
|
135 |
|
2958 | 136 |
// check different game flags (goals/game modes first for now) |
137 |
g:= AddGoal(g, gfKing, gidKing); // king? |
|
5022
d2a2f6c9b236
some final work and buggfix for Tag Team, it is now playable
Henek
parents:
4976
diff
changeset
|
138 |
g:= AddGoal(g, gfTagTeam, gidTagTeam); // tag team mode? |
2958 | 139 |
|
140 |
// other important flags |
|
141 |
g:= AddGoal(g, gfForts, gidForts); // forts? |
|
142 |
g:= AddGoal(g, gfLowGravity, gidLowGravity); // low gravity? |
|
143 |
g:= AddGoal(g, gfInvulnerable, gidInvulnerable); // invulnerability? |
|
144 |
g:= AddGoal(g, gfVampiric, gidVampiric); // vampirism? |
|
145 |
g:= AddGoal(g, gfKarma, gidKarma); // karma? |
|
146 |
g:= AddGoal(g, gfPlaceHog, gidPlaceHog); // placement? |
|
147 |
g:= AddGoal(g, gfArtillery, gidArtillery); // artillery? |
|
148 |
g:= AddGoal(g, gfSolidLand, gidSolidLand); // solid land? |
|
149 |
g:= AddGoal(g, gfSharedAmmo, gidSharedAmmo); // shared ammo? |
|
4132 | 150 |
g:= AddGoal(g, gfResetHealth, gidResetHealth); |
151 |
g:= AddGoal(g, gfAISurvival, gidAISurvival); |
|
152 |
g:= AddGoal(g, gfInfAttack, gidInfAttack); |
|
153 |
g:= AddGoal(g, gfResetWeps, gidResetWeps); |
|
154 |
g:= AddGoal(g, gfPerHogAmmo, gidPerHogAmmo); |
|
2958 | 155 |
|
2908 | 156 |
// modified damage modificator? |
157 |
if cDamagePercent <> 100 then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
158 |
g:= AddGoal(g, gfAny, gidDamageModifier, cDamagePercent); |
2908 | 159 |
|
3107 | 160 |
// fade in |
161 |
ScreenFade:= sfFromBlack; |
|
162 |
ScreenFadeValue:= sfMax; |
|
163 |
ScreenFadeSpeed:= 1; |
|
164 |
||
2908 | 165 |
// modified mine timers? |
4482 | 166 |
if cMinesTime <> 3000 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
167 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
168 |
if cMinesTime = 0 then |
4003
ca0600ab38bf
disable gfMines and update variable names (landadds -> minesnum, cLandAdditions -> cLandMines)
koda
parents:
3976
diff
changeset
|
169 |
g:= AddGoal(g, gfAny, gidNoMineTimer) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
170 |
else if cMinesTime < 0 then |
4003
ca0600ab38bf
disable gfMines and update variable names (landadds -> minesnum, cLandAdditions -> cLandMines)
koda
parents:
3976
diff
changeset
|
171 |
g:= AddGoal(g, gfAny, gidRandomMineTimer) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
172 |
else |
4482 | 173 |
g:= AddGoal(g, gfAny, gidMineTimer, cMinesTime div 1000); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
174 |
end; |
2908 | 175 |
|
2863 | 176 |
// if the string has been set, show it for (default timeframe) seconds |
177 |
if g <> '' then ShowMission(trgoal[gidCaption], trgoal[gidSubCaption], g, 1, 0); |
|
178 |
||
1825 | 179 |
cWaveWidth:= SpritesData[sprWater].Width; |
2268
053eb81e60ee
little experiment to see if this improve appearance of laser/ufo/cake/laser guided missile - of course, can't actually see it until unc0rr restores waves
nemo
parents:
2226
diff
changeset
|
180 |
//cWaveHeight:= SpritesData[sprWater].Height; |
053eb81e60ee
little experiment to see if this improve appearance of laser/ufo/cake/laser guided missile - of course, can't actually see it until unc0rr restores waves
nemo
parents:
2226
diff
changeset
|
181 |
cWaveHeight:= 32; |
2292
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset
|
182 |
|
5682
06d5f561f772
some camera adjustments (should also fix cam flickering on lowerst res)
sheepluva
parents:
5675
diff
changeset
|
183 |
InitCameraBorders(); |
5191
c7000a6b397b
- Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
5149
diff
changeset
|
184 |
uCursor.init(); |
2197 | 185 |
prevPoint.X:= 0; |
74 | 186 |
prevPoint.Y:= cScreenHeight div 2; |
1760 | 187 |
WorldDx:= - (LAND_WIDTH div 2) + cScreenWidth div 2; |
2139
5a083e71a71d
Properly decrement sniper rifle if timed out. Try to get camera position straight for once.
nemo
parents:
2119
diff
changeset
|
188 |
WorldDy:= - (LAND_HEIGHT - (playHeight div 2)) + (cScreenHeight div 2); |
3434 | 189 |
AMSlotSize:= 33; |
190 |
{$IFDEF IPHONEOS} |
|
6276
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
191 |
if isPhone() then |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
192 |
begin |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
193 |
AMxOffset:= -30 + cScreenHeight div 2; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
194 |
AMyOffset:= 10; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
195 |
end |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
196 |
else |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
197 |
begin |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
198 |
AMxOffset:= AMSlotSize + cScreenHeight div 2; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
199 |
AMyOffset:= -10 + cScreenWidth div 3; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
200 |
end; |
3434 | 201 |
AMWidth:= (cMaxSlotAmmoIndex + 1) * AMSlotSize + AMxOffset; |
202 |
{$ELSE} |
|
203 |
AMxOffset:= 10; |
|
204 |
AMyOffset:= 60; |
|
205 |
AMWidth:= (cMaxSlotAmmoIndex + 2) * AMSlotSize + AMxOffset; |
|
206 |
{$ENDIF} |
|
207 |
AMxShift:= AMWidth; |
|
3265
5fe62296fdea
- Parallax effect for horizont when water is out of sight
palewolf
parents:
3249
diff
changeset
|
208 |
SkyOffset:= 0; |
5fe62296fdea
- Parallax effect for horizont when water is out of sight
palewolf
parents:
3249
diff
changeset
|
209 |
HorizontOffset:= 0; |
161 | 210 |
end; |
211 |
||
5682
06d5f561f772
some camera adjustments (should also fix cam flickering on lowerst res)
sheepluva
parents:
5675
diff
changeset
|
212 |
procedure InitCameraBorders; |
06d5f561f772
some camera adjustments (should also fix cam flickering on lowerst res)
sheepluva
parents:
5675
diff
changeset
|
213 |
begin |
06d5f561f772
some camera adjustments (should also fix cam flickering on lowerst res)
sheepluva
parents:
5675
diff
changeset
|
214 |
cGearScrEdgesDist:= min(2 * cScreenHeight div 5, 2 * cScreenWidth div 5); |
06d5f561f772
some camera adjustments (should also fix cam flickering on lowerst res)
sheepluva
parents:
5675
diff
changeset
|
215 |
end; |
3405 | 216 |
|
6394
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6380
diff
changeset
|
217 |
// for uStore texture resetting |
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6380
diff
changeset
|
218 |
procedure ResetWorldTex; |
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6380
diff
changeset
|
219 |
begin |
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6380
diff
changeset
|
220 |
FreeTexture(fpsTexture); |
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6380
diff
changeset
|
221 |
fpsTexture:= nil; |
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6380
diff
changeset
|
222 |
FreeTexture(timeTexture); |
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6380
diff
changeset
|
223 |
timeTexture:= nil; |
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6380
diff
changeset
|
224 |
FreeTexture(missionTex); |
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6380
diff
changeset
|
225 |
missionTex:= nil; |
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6380
diff
changeset
|
226 |
end; |
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6380
diff
changeset
|
227 |
|
956 | 228 |
procedure ShowAmmoMenu; |
161 | 229 |
const MENUSPEED = 15; |
3434 | 230 |
const BORDERSIZE = 2; |
231 |
var x, y, i, t, g: LongInt; |
|
232 |
Slot, Pos, STurns: LongInt; |
|
2855
7e6adeb57427
Show the ammo menu of the last local non-bot team when not local turn. needs testing
nemo
parents:
2851
diff
changeset
|
233 |
Ammo: PHHAmmo; |
161 | 234 |
begin |
6276
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
235 |
if (TurnTimeLeft = 0) or (not CurrentTeam^.ExtDriven and (((CurAmmoGear = nil) or |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
236 |
((Ammoz[CurAmmoGear^.AmmoType].Ammo.Propz and ammoprop_AltAttack) = 0)) and hideAmmoMenu)) then |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
237 |
bShowAmmoMenu:= false; |
3395
095273ad0e08
adding a somewhat working autoration for ipad (uStore.pas and uWorld.pas got mixed in the last two commits)
koda
parents:
3390
diff
changeset
|
238 |
|
6276
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
239 |
if bShowAmmoMenu then |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
240 |
// show ammo menu |
3434 | 241 |
begin |
6276
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
242 |
FollowGear:= nil; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
243 |
if AMxShift = AMWidth then prevPoint.X:= 0; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
244 |
if (cReducedQuality and rqSlowMenu) <> 0 then AMxShift:= 0 |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
245 |
else |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
246 |
if AMxShift > MENUSPEED then dec(AMxShift, MENUSPEED) |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
247 |
else AMxShift:= 0; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
248 |
end |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
249 |
else |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
250 |
// hide ammo menu |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
251 |
begin |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
252 |
if AMxShift = 0 then |
3434 | 253 |
begin |
6276
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
254 |
CursorPoint.X:= cScreenWidth shr 1; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
255 |
CursorPoint.Y:= cScreenHeight shr 1; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
256 |
prevPoint:= CursorPoint; |
3434 | 257 |
end; |
6276
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
258 |
if (cReducedQuality and rqSlowMenu) <> 0 then AMxShift:= AMWidth+2 |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
259 |
else |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
260 |
if AMxShift < (AMWidth - MENUSPEED) then inc(AMxShift, MENUSPEED) |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
261 |
else AMxShift:= AMWidth; |
3434 | 262 |
end; |
3697 | 263 |
|
6276
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
264 |
// give the assigned ammo to hedgehog |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
265 |
Ammo:= nil; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
266 |
if (CurrentTeam <> nil) and (CurrentHedgehog <> nil) and |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
267 |
(not CurrentTeam^.ExtDriven) and (CurrentHedgehog^.BotLevel = 0) then |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
268 |
Ammo:= CurrentHedgehog^.Ammo |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
269 |
else if (LocalAmmo <> -1) then |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
270 |
Ammo:= GetAmmoByNum(LocalAmmo); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
271 |
Pos:= -1; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
272 |
if Ammo = nil then |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
273 |
begin |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
274 |
bShowAmmoMenu:= false; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
275 |
exit |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
276 |
end; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
277 |
SlotsNum:= 0; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
278 |
x:= (cScreenWidth shr 1) - AMWidth + AMxShift; |
3434 | 279 |
|
6276
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
280 |
{$IFDEF IPHONEOS} |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
281 |
Slot:= cMaxSlotIndex; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
282 |
x:= x - cOffsetY; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
283 |
y:= AMyOffset; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
284 |
dec(y, BORDERSIZE); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
285 |
DrawSprite(sprAMCorners, x - BORDERSIZE, y, 0); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
286 |
for i:= 0 to cMaxSlotAmmoIndex do |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
287 |
DrawSprite(sprAMBorderHorizontal, x + i * AMSlotSize, y, 0); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
288 |
DrawSprite(sprAMCorners, x + AMWidth - AMxOffset, y, 1); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
289 |
inc(y, BORDERSIZE); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
290 |
|
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
291 |
for i:= 0 to cMaxSlotIndex do |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
292 |
if ((i = 0) and (Ammo^[i, 1].Count > 0)) or ((i <> 0) and (Ammo^[i, 0].Count > 0)) then |
3434 | 293 |
begin |
6276
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
294 |
if (cScreenHeight - CursorPoint.Y >= y) and (cScreenHeight - CursorPoint.Y <= y + AMSlotSize) then Slot:= i; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
295 |
inc(SlotsNum); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
296 |
DrawSprite(sprAMBorderVertical, x - BORDERSIZE, y, 0); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
297 |
t:= 0; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
298 |
g:= 0; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
299 |
while (t <= cMaxSlotAmmoIndex) and (Ammo^[i, t].Count > 0) do |
3434 | 300 |
begin |
6276
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
301 |
DrawSprite(sprAMSlot, x + g * AMSlotSize, y, 1); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
302 |
if (Ammo^[i, t].AmmoType <> amNothing) then |
3434 | 303 |
begin |
6276
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
304 |
STurns:= Ammoz[Ammo^[i, t].AmmoType].SkipTurns - CurrentTeam^.Clan^.TurnNumber; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
305 |
|
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
306 |
if STurns >= 0 then |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
307 |
begin |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
308 |
DrawSprite(sprAMAmmosBW, x + g * AMSlotSize, y + 1, LongInt(Ammo^[i, t].AmmoType)-1); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
309 |
if STurns < 100 then DrawSprite(sprTurnsLeft, x + (g + 1) * AMSlotSize - 16, y + AMSlotSize - 16, STurns); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
310 |
end |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
311 |
else |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
312 |
DrawSprite(sprAMAmmos, x + g * AMSlotSize, y + 1, LongInt(Ammo^[i, t].AmmoType)-1); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
313 |
if (Slot = i) and (CursorPoint.X >= x + g * AMSlotSize) and |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
314 |
(CursorPoint.X <= x + (g + 1) * AMSlotSize) then |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
315 |
begin |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
316 |
if (STurns < 0) then DrawSprite(sprAMSlot, x + g * AMSlotSize, y, 0); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
317 |
Pos:= t; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
318 |
end; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
319 |
inc(g) |
3434 | 320 |
end; |
6276
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
321 |
inc(t) |
3434 | 322 |
end; |
6276
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
323 |
for g:= g to cMaxSlotAmmoIndex do |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
324 |
DrawSprite(sprAMSlot, x + g * AMSlotSize, y, 1); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
325 |
DrawSprite(sprAMBorderVertical, x + AMWidth - AMxOffset, y, 1); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
326 |
inc(y, AMSlotSize); |
3434 | 327 |
end; |
6276
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
328 |
|
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
329 |
DrawSprite(sprAMCorners, x - BORDERSIZE, y, 2); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
330 |
for i:= 0 to cMaxSlotAmmoIndex do |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
331 |
DrawSprite(sprAMBorderHorizontal, x + i * AMSlotSize, y, 1); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
332 |
DrawSprite(sprAMCorners, x + AMWidth - AMxOffset, y, 3); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
333 |
{$ELSE} |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
334 |
Slot:= 0; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
335 |
y:= cScreenHeight - AMyOffset; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
336 |
DrawSprite(sprAMCorners, x - BORDERSIZE, y, 2); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
337 |
for i:= 0 to cMaxSlotAmmoIndex + 1 do |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
338 |
DrawSprite(sprAMBorderHorizontal, x + i * AMSlotSize, y, 1); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
339 |
DrawSprite(sprAMCorners, x + AMWidth - AMxOffset, y, 3); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
340 |
dec(y, AMSlotSize); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
341 |
DrawSprite(sprAMBorderVertical, x - BORDERSIZE, y, 0); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
342 |
for i:= 0 to cMaxSlotAmmoIndex do |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
343 |
DrawSprite(sprAMSlot, x + i * AMSlotSize, y, 2); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
344 |
DrawSprite(sprAMSlot, x + (cMaxSlotAmmoIndex + 1) * AMSlotSize, y, 1); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
345 |
DrawSprite(sprAMBorderVertical, x + AMWidth - AMxOffset, y, 1); |
3697 | 346 |
|
6276
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
347 |
for i:= cMaxSlotIndex downto 0 do |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
348 |
if ((i = 0) and (Ammo^[i, 1].Count > 0)) or ((i <> 0) and (Ammo^[i, 0].Count > 0)) then |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
349 |
begin |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
350 |
if (cScreenHeight - CursorPoint.Y >= y - AMSlotSize) and (cScreenHeight - CursorPoint.Y <= y) then Slot:= i; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
351 |
dec(y, AMSlotSize); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
352 |
inc(SlotsNum); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
353 |
DrawSprite(sprAMBorderVertical, x - BORDERSIZE, y, 0); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
354 |
DrawSprite(sprAMSlot, x, y, 1); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
355 |
DrawSprite(sprAMSlotKeys, x, y + 1, i); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
356 |
t:= 0; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
357 |
g:= 1; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
358 |
while (t <= cMaxSlotAmmoIndex) and (Ammo^[i, t].Count > 0) do |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
359 |
begin |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
360 |
DrawSprite(sprAMSlot, x + g * AMSlotSize, y, 1); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
361 |
if (Ammo^[i, t].AmmoType <> amNothing) then |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
362 |
begin |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
363 |
STurns:= Ammoz[Ammo^[i, t].AmmoType].SkipTurns - CurrentTeam^.Clan^.TurnNumber; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
364 |
|
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
365 |
if STurns >= 0 then |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
366 |
begin |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
367 |
DrawSprite(sprAMAmmosBW, x + g * AMSlotSize, y + 1, LongInt(Ammo^[i, t].AmmoType)-1); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
368 |
if STurns < 100 then DrawSprite(sprTurnsLeft, x + (g + 1) * AMSlotSize - 16, y + AMSlotSize - 16, STurns); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
369 |
end else |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
370 |
DrawSprite(sprAMAmmos, x + g * AMSlotSize, y + 1, LongInt(Ammo^[i, t].AmmoType)-1); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
371 |
if (Slot = i) and (CursorPoint.X >= x + g * AMSlotSize) and |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
372 |
(CursorPoint.X <= x + (g + 1) * AMSlotSize) then |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
373 |
begin |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
374 |
if (STurns < 0) then DrawSprite(sprAMSlot, x + g * AMSlotSize, y, 0); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
375 |
Pos:= t; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
376 |
end; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
377 |
inc(g) |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
378 |
end; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
379 |
inc(t) |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
380 |
end; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
381 |
for g:= g to cMaxSlotAmmoIndex + 1 do |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
382 |
DrawSprite(sprAMSlot, x + g * AMSlotSize, y, 1); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
383 |
DrawSprite(sprAMBorderVertical, x + AMWidth - AMxOffset, y, 1); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
384 |
end; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
385 |
|
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
386 |
dec(y, BORDERSIZE); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
387 |
DrawSprite(sprAMCorners, x - BORDERSIZE, y, 0); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
388 |
for i:= 0 to cMaxSlotAmmoIndex + 1 do |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
389 |
DrawSprite(sprAMBorderHorizontal, x + i * AMSlotSize, y, 0); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
390 |
DrawSprite(sprAMCorners, x + AMWidth - AMxOffset, y, 1); |
3395
095273ad0e08
adding a somewhat working autoration for ipad (uStore.pas and uWorld.pas got mixed in the last two commits)
koda
parents:
3390
diff
changeset
|
391 |
{$ENDIF} |
095273ad0e08
adding a somewhat working autoration for ipad (uStore.pas and uWorld.pas got mixed in the last two commits)
koda
parents:
3390
diff
changeset
|
392 |
|
6276
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
393 |
if (Pos >= 0) then |
3967 | 394 |
begin |
6276
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
395 |
if (Ammo^[Slot, Pos].Count > 0) and (Ammo^[Slot, Pos].AmmoType <> amNothing) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
396 |
begin |
6276
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
397 |
if (amSel <> Ammo^[Slot, Pos].AmmoType) or (WeaponTooltipTex = nil) then |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
398 |
begin |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
399 |
amSel:= Ammo^[Slot, Pos].AmmoType; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
400 |
RenderWeaponTooltip(amSel) |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
401 |
end; |
3697 | 402 |
|
3629
86212d2b116a
redo spinning wheel, redo fix for detail selection, redo ammo quantity and name in ammomenu
koda
parents:
3611
diff
changeset
|
403 |
{$IFDEF IPHONEOS} |
6276
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
404 |
DrawTexture(cScreenWidth div 2 - (AMWidth - 10) + AMxShift, AMyOffset - 25, Ammoz[Ammo^[Slot, Pos].AmmoType].NameTex); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
405 |
if Ammo^[Slot, Pos].Count < AMMO_INFINITE then |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
406 |
DrawTexture(cScreenWidth div 2 - (AMWidth - 10) + 163, AMyOffset - 25, CountTexz[Ammo^[Slot, Pos].Count]); |
3629
86212d2b116a
redo spinning wheel, redo fix for detail selection, redo ammo quantity and name in ammomenu
koda
parents:
3611
diff
changeset
|
407 |
{$ELSE} |
6276
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
408 |
DrawTexture(cScreenWidth div 2 - (AMWidth - 10) + AMxShift, cScreenHeight - AMyOffset - 25, Ammoz[Ammo^[Slot, Pos].AmmoType].NameTex); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
409 |
if Ammo^[Slot, Pos].Count < AMMO_INFINITE then |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
410 |
DrawTexture(cScreenWidth div 2 + AMxOffset - 45, cScreenHeight - AMyOffset - 25, CountTexz[Ammo^[Slot, Pos].Count]); |
3629
86212d2b116a
redo spinning wheel, redo fix for detail selection, redo ammo quantity and name in ammomenu
koda
parents:
3611
diff
changeset
|
411 |
{$ENDIF} |
1529
3bc916b419cd
Don't hide ammo menu when user clicks on not yet available weapon
unc0rr
parents:
1439
diff
changeset
|
412 |
|
6276
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
413 |
if bSelected and (Ammoz[Ammo^[Slot, Pos].AmmoType].SkipTurns - CurrentTeam^.Clan^.TurnNumber < 0) then |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
414 |
begin |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
415 |
bShowAmmoMenu:= false; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
416 |
SetWeapon(Ammo^[Slot, Pos].AmmoType); |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
417 |
bSelected:= false; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
418 |
FreeWeaponTooltip; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
419 |
exit |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
420 |
end; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
421 |
end |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
422 |
end |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
423 |
else |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
424 |
FreeWeaponTooltip; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
425 |
|
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
426 |
if (WeaponTooltipTex <> nil) and (AMxShift = 0) then |
3395
095273ad0e08
adding a somewhat working autoration for ipad (uStore.pas and uWorld.pas got mixed in the last two commits)
koda
parents:
3390
diff
changeset
|
427 |
{$IFDEF IPHONEOS} |
6276
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
428 |
ShowWeaponTooltip(-WeaponTooltipTex^.w div 2, 100); |
3395
095273ad0e08
adding a somewhat working autoration for ipad (uStore.pas and uWorld.pas got mixed in the last two commits)
koda
parents:
3390
diff
changeset
|
429 |
{$ELSE} |
6276
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
430 |
ShowWeaponTooltip(x - WeaponTooltipTex^.w - 3, Min(y + 1, cScreenHeight - WeaponTooltipTex^.h - 40)); |
3395
095273ad0e08
adding a somewhat working autoration for ipad (uStore.pas and uWorld.pas got mixed in the last two commits)
koda
parents:
3390
diff
changeset
|
431 |
{$ENDIF} |
961
a9a349b2b3fa
Use turnsleft sprites to indicate turns left to activate ammo
unc0rr
parents:
956
diff
changeset
|
432 |
|
6276
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
433 |
bSelected:= false; |
1e2f8da1860a
while formatting the ammomenu code i found out that it's simpler to move than i thought, and fixed a small glitch when animation was disabled
koda
parents:
6250
diff
changeset
|
434 |
if AMxShift = 0 then DrawSprite(sprArrow, CursorPoint.X, cScreenHeight - CursorPoint.Y, (RealTicks shr 6) mod 8) |
4 | 435 |
end; |
436 |
||
3104 | 437 |
procedure DrawWater(Alpha: byte; OffsetY: LongInt); |
1915 | 438 |
var VertexBuffer: array [0..3] of TVertex2f; |
439 |
r: TSDL_Rect; |
|
2161
0c8634241fa4
Some work on zooming. Hedgewars are now unplayable.
unc0rr
parents:
2152
diff
changeset
|
440 |
lw, lh: GLfloat; |
1915 | 441 |
begin |
4748 | 442 |
if SuddenDeathDmg then |
443 |
begin |
|
444 |
SDWaterColorArray[0].a := Alpha; |
|
445 |
SDWaterColorArray[1].a := Alpha; |
|
446 |
SDWaterColorArray[2].a := Alpha; |
|
447 |
SDWaterColorArray[3].a := Alpha |
|
448 |
end |
|
449 |
else |
|
450 |
begin |
|
451 |
WaterColorArray[0].a := Alpha; |
|
452 |
WaterColorArray[1].a := Alpha; |
|
453 |
WaterColorArray[2].a := Alpha; |
|
454 |
WaterColorArray[3].a := Alpha |
|
455 |
end; |
|
2269
00f5704f5f39
add extra semi-opaque layer of water to discolour objects in the water.
nemo
parents:
2268
diff
changeset
|
456 |
|
3463 | 457 |
lw:= cScreenWidth / cScaleFactor; |
458 |
lh:= trunc(cScreenHeight / cScaleFactor) + cScreenHeight div 2 + 16; |
|
3697 | 459 |
|
3405 | 460 |
// Water |
461 |
r.y:= OffsetY + WorldDy + cWaterLine; |
|
3463 | 462 |
if WorldDy < trunc(cScreenHeight / cScaleFactor) + cScreenHeight div 2 - cWaterLine then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
463 |
begin |
3405 | 464 |
if r.y < 0 then |
465 |
r.y:= 0; |
|
1915 | 466 |
|
3405 | 467 |
glDisable(GL_TEXTURE_2D); |
468 |
VertexBuffer[0].X:= -lw; |
|
469 |
VertexBuffer[0].Y:= r.y; |
|
470 |
VertexBuffer[1].X:= lw; |
|
471 |
VertexBuffer[1].Y:= r.y; |
|
472 |
VertexBuffer[2].X:= lw; |
|
473 |
VertexBuffer[2].Y:= lh; |
|
474 |
VertexBuffer[3].X:= -lw; |
|
475 |
VertexBuffer[3].Y:= lh; |
|
1915 | 476 |
|
3641 | 477 |
glDisableClientState(GL_TEXTURE_COORD_ARRAY); |
478 |
glEnableClientState(GL_COLOR_ARRAY); |
|
4748 | 479 |
if SuddenDeathDmg then |
480 |
glColorPointer(4, GL_UNSIGNED_BYTE, 0, @SDWaterColorArray[0]) |
|
481 |
else |
|
482 |
glColorPointer(4, GL_UNSIGNED_BYTE, 0, @WaterColorArray[0]); |
|
1915 | 483 |
|
3405 | 484 |
glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]); |
2171
8208946331ba
Smaxx refactor of LoadImage to use flags, iphone changes by koda (mostly use of rgba instead of rgb)
nemo
parents:
2162
diff
changeset
|
485 |
|
3405 | 486 |
glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer)); |
1915 | 487 |
|
3405 | 488 |
glDisableClientState(GL_COLOR_ARRAY); |
3641 | 489 |
glEnableClientState(GL_TEXTURE_COORD_ARRAY); |
3407 | 490 |
glColor4ub($FF, $FF, $FF, $FF); // must not be Tint() as color array seems to stay active and color reset is required |
3405 | 491 |
glEnable(GL_TEXTURE_2D); |
492 |
end; |
|
1915 | 493 |
end; |
494 |
||
3376 | 495 |
procedure DrawWaves(Dir, dX, dY: LongInt; tnt: Byte); |
2292
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset
|
496 |
var VertexBuffer, TextureBuffer: array [0..3] of TVertex2f; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
497 |
lw, waves, shift: GLfloat; |
4748 | 498 |
sprite: TSprite; |
2288 | 499 |
begin |
4748 | 500 |
if SuddenDeathDmg then |
501 |
sprite:= sprSDWater |
|
502 |
else |
|
503 |
sprite:= sprWater; |
|
504 |
||
505 |
cWaveWidth:= SpritesData[sprite].Width; |
|
506 |
||
3463 | 507 |
lw:= cScreenWidth / cScaleFactor; |
2292
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset
|
508 |
waves:= lw * 2 / cWaveWidth; |
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset
|
509 |
|
4748 | 510 |
if SuddenDeathDmg then |
511 |
Tint(LongInt(tnt) * SDWaterColorArray[2].r div 255 + 255 - tnt, |
|
512 |
LongInt(tnt) * SDWaterColorArray[2].g div 255 + 255 - tnt, |
|
513 |
LongInt(tnt) * SDWaterColorArray[2].b div 255 + 255 - tnt, |
|
514 |
255 |
|
515 |
) |
|
516 |
else |
|
517 |
Tint(LongInt(tnt) * WaterColorArray[2].r div 255 + 255 - tnt, |
|
518 |
LongInt(tnt) * WaterColorArray[2].g div 255 + 255 - tnt, |
|
519 |
LongInt(tnt) * WaterColorArray[2].b div 255 + 255 - tnt, |
|
520 |
255 |
|
521 |
); |
|
3089 | 522 |
|
4748 | 523 |
glBindTexture(GL_TEXTURE_2D, SpritesData[sprite].Texture^.id); |
2292
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset
|
524 |
|
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset
|
525 |
VertexBuffer[0].X:= -lw; |
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset
|
526 |
VertexBuffer[0].Y:= cWaterLine + WorldDy + dY; |
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset
|
527 |
VertexBuffer[1].X:= lw; |
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset
|
528 |
VertexBuffer[1].Y:= VertexBuffer[0].Y; |
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset
|
529 |
VertexBuffer[2].X:= lw; |
4748 | 530 |
VertexBuffer[2].Y:= VertexBuffer[0].Y + SpritesData[sprite].Height; |
2292
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset
|
531 |
VertexBuffer[3].X:= -lw; |
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset
|
532 |
VertexBuffer[3].Y:= VertexBuffer[2].Y; |
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset
|
533 |
|
2374 | 534 |
shift:= - lw / cWaveWidth; |
2495 | 535 |
TextureBuffer[0].X:= shift + (( - WorldDx + LongInt(RealTicks shr 6) * Dir + dX) mod cWaveWidth) / (cWaveWidth - 1); |
2292
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset
|
536 |
TextureBuffer[0].Y:= 0; |
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset
|
537 |
TextureBuffer[1].X:= TextureBuffer[0].X + waves; |
2447
08d623a494e6
Smaxx's updated german translation + texture gap fixes + updated room list
koda
parents:
2434
diff
changeset
|
538 |
TextureBuffer[1].Y:= TextureBuffer[0].Y; |
08d623a494e6
Smaxx's updated german translation + texture gap fixes + updated room list
koda
parents:
2434
diff
changeset
|
539 |
TextureBuffer[2].X:= TextureBuffer[1].X; |
4748 | 540 |
TextureBuffer[2].Y:= SpritesData[sprite].Texture^.ry; |
2292
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset
|
541 |
TextureBuffer[3].X:= TextureBuffer[0].X; |
2447
08d623a494e6
Smaxx's updated german translation + texture gap fixes + updated room list
koda
parents:
2434
diff
changeset
|
542 |
TextureBuffer[3].Y:= TextureBuffer[2].Y; |
2292
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset
|
543 |
|
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset
|
544 |
|
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset
|
545 |
glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]); |
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset
|
546 |
glTexCoordPointer(2, GL_FLOAT, 0, @TextureBuffer[0]); |
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset
|
547 |
glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer)); |
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset
|
548 |
|
3390 | 549 |
Tint($FF, $FF, $FF, $FF); |
2292
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset
|
550 |
|
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset
|
551 |
{for i:= -1 to cWaterSprCount do |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
552 |
DrawSprite(sprWater, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
553 |
i * cWaveWidth + ((WorldDx + (RealTicks shr 6) * Dir + dX) mod cWaveWidth) - (cScreenWidth div 2), |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
554 |
cWaterLine + WorldDy + dY, |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
555 |
0)} |
2288 | 556 |
end; |
557 |
||
3089 | 558 |
procedure DrawRepeated(spr, sprL, sprR: TSprite; Shift, OffsetY: LongInt); |
3537
8f5b3108f29c
New approach to the low-res problem. Basically, we already have a 1024 minimum, and the tallest maps are restricting themselves to 2048 maximum. All backgrounds are scaled down 50%, then scaled up on draw. Saves memory, and backgrounds are already deliberately fuzzed for depth of field anyway.
nemo
parents:
3523
diff
changeset
|
559 |
var i, w, h, lw, lh, rw, rh, sw: LongInt; |
2426 | 560 |
begin |
3405 | 561 |
sw:= round(cScreenWidth / cScaleFactor); |
6135
2172330ad52a
Use SkyL if SkyR is not included. Saves a bit of texture memory and removes some redundant files.
nemo
parents:
6131
diff
changeset
|
562 |
if (SpritesData[sprL].Texture = nil) and (SpritesData[spr].Texture <> nil) then |
5285
af4dc03dd60d
Make sky, horizon, flakes and clouds optional, replace repeated strips of skyL/skyR with 2x2 transparent PNGs instead of larger images of variable dimensions, remove a number of empty unused images
nemo
parents:
5191
diff
changeset
|
563 |
begin |
3537
8f5b3108f29c
New approach to the low-res problem. Basically, we already have a 1024 minimum, and the tallest maps are restricting themselves to 2048 maximum. All backgrounds are scaled down 50%, then scaled up on draw. Saves memory, and backgrounds are already deliberately fuzzed for depth of field anyway.
nemo
parents:
3523
diff
changeset
|
564 |
w:= SpritesData[spr].Width * SpritesData[spr].Texture^.Scale; |
8f5b3108f29c
New approach to the low-res problem. Basically, we already have a 1024 minimum, and the tallest maps are restricting themselves to 2048 maximum. All backgrounds are scaled down 50%, then scaled up on draw. Saves memory, and backgrounds are already deliberately fuzzed for depth of field anyway.
nemo
parents:
3523
diff
changeset
|
565 |
h:= SpritesData[spr].Height * SpritesData[spr].Texture^.Scale; |
3405 | 566 |
i:= Shift mod w; |
567 |
if i > 0 then dec(i, w); |
|
568 |
dec(i, w * (sw div w + 1)); |
|
569 |
repeat |
|
3537
8f5b3108f29c
New approach to the low-res problem. Basically, we already have a 1024 minimum, and the tallest maps are restricting themselves to 2048 maximum. All backgrounds are scaled down 50%, then scaled up on draw. Saves memory, and backgrounds are already deliberately fuzzed for depth of field anyway.
nemo
parents:
3523
diff
changeset
|
570 |
DrawTexture(i, WorldDy + LAND_HEIGHT + OffsetY - h, SpritesData[spr].Texture, SpritesData[spr].Texture^.Scale); |
3405 | 571 |
inc(i, w) |
572 |
until i > sw |
|
5285
af4dc03dd60d
Make sky, horizon, flakes and clouds optional, replace repeated strips of skyL/skyR with 2x2 transparent PNGs instead of larger images of variable dimensions, remove a number of empty unused images
nemo
parents:
5191
diff
changeset
|
573 |
end |
af4dc03dd60d
Make sky, horizon, flakes and clouds optional, replace repeated strips of skyL/skyR with 2x2 transparent PNGs instead of larger images of variable dimensions, remove a number of empty unused images
nemo
parents:
5191
diff
changeset
|
574 |
else if SpritesData[spr].Texture <> nil then |
af4dc03dd60d
Make sky, horizon, flakes and clouds optional, replace repeated strips of skyL/skyR with 2x2 transparent PNGs instead of larger images of variable dimensions, remove a number of empty unused images
nemo
parents:
5191
diff
changeset
|
575 |
begin |
3537
8f5b3108f29c
New approach to the low-res problem. Basically, we already have a 1024 minimum, and the tallest maps are restricting themselves to 2048 maximum. All backgrounds are scaled down 50%, then scaled up on draw. Saves memory, and backgrounds are already deliberately fuzzed for depth of field anyway.
nemo
parents:
3523
diff
changeset
|
576 |
w:= SpritesData[spr].Width * SpritesData[spr].Texture^.Scale; |
8f5b3108f29c
New approach to the low-res problem. Basically, we already have a 1024 minimum, and the tallest maps are restricting themselves to 2048 maximum. All backgrounds are scaled down 50%, then scaled up on draw. Saves memory, and backgrounds are already deliberately fuzzed for depth of field anyway.
nemo
parents:
3523
diff
changeset
|
577 |
h:= SpritesData[spr].Height * SpritesData[spr].Texture^.Scale; |
8f5b3108f29c
New approach to the low-res problem. Basically, we already have a 1024 minimum, and the tallest maps are restricting themselves to 2048 maximum. All backgrounds are scaled down 50%, then scaled up on draw. Saves memory, and backgrounds are already deliberately fuzzed for depth of field anyway.
nemo
parents:
3523
diff
changeset
|
578 |
lw:= SpritesData[sprL].Width * SpritesData[spr].Texture^.Scale; |
8f5b3108f29c
New approach to the low-res problem. Basically, we already have a 1024 minimum, and the tallest maps are restricting themselves to 2048 maximum. All backgrounds are scaled down 50%, then scaled up on draw. Saves memory, and backgrounds are already deliberately fuzzed for depth of field anyway.
nemo
parents:
3523
diff
changeset
|
579 |
lh:= SpritesData[sprL].Height * SpritesData[spr].Texture^.Scale; |
6135
2172330ad52a
Use SkyL if SkyR is not included. Saves a bit of texture memory and removes some redundant files.
nemo
parents:
6131
diff
changeset
|
580 |
if SpritesData[sprR].Texture <> nil then |
2172330ad52a
Use SkyL if SkyR is not included. Saves a bit of texture memory and removes some redundant files.
nemo
parents:
6131
diff
changeset
|
581 |
begin |
2172330ad52a
Use SkyL if SkyR is not included. Saves a bit of texture memory and removes some redundant files.
nemo
parents:
6131
diff
changeset
|
582 |
rw:= SpritesData[sprR].Width * SpritesData[spr].Texture^.Scale; |
2172330ad52a
Use SkyL if SkyR is not included. Saves a bit of texture memory and removes some redundant files.
nemo
parents:
6131
diff
changeset
|
583 |
rh:= SpritesData[sprR].Height * SpritesData[spr].Texture^.Scale |
2172330ad52a
Use SkyL if SkyR is not included. Saves a bit of texture memory and removes some redundant files.
nemo
parents:
6131
diff
changeset
|
584 |
end; |
3405 | 585 |
dec(Shift, w div 2); |
3537
8f5b3108f29c
New approach to the low-res problem. Basically, we already have a 1024 minimum, and the tallest maps are restricting themselves to 2048 maximum. All backgrounds are scaled down 50%, then scaled up on draw. Saves memory, and backgrounds are already deliberately fuzzed for depth of field anyway.
nemo
parents:
3523
diff
changeset
|
586 |
DrawTexture(Shift, WorldDy + LAND_HEIGHT + OffsetY - h, SpritesData[spr].Texture, SpritesData[spr].Texture^.Scale); |
3697 | 587 |
|
3537
8f5b3108f29c
New approach to the low-res problem. Basically, we already have a 1024 minimum, and the tallest maps are restricting themselves to 2048 maximum. All backgrounds are scaled down 50%, then scaled up on draw. Saves memory, and backgrounds are already deliberately fuzzed for depth of field anyway.
nemo
parents:
3523
diff
changeset
|
588 |
i:= Shift - lw; |
8f5b3108f29c
New approach to the low-res problem. Basically, we already have a 1024 minimum, and the tallest maps are restricting themselves to 2048 maximum. All backgrounds are scaled down 50%, then scaled up on draw. Saves memory, and backgrounds are already deliberately fuzzed for depth of field anyway.
nemo
parents:
3523
diff
changeset
|
589 |
while i >= -sw - lw do |
5285
af4dc03dd60d
Make sky, horizon, flakes and clouds optional, replace repeated strips of skyL/skyR with 2x2 transparent PNGs instead of larger images of variable dimensions, remove a number of empty unused images
nemo
parents:
5191
diff
changeset
|
590 |
begin |
3537
8f5b3108f29c
New approach to the low-res problem. Basically, we already have a 1024 minimum, and the tallest maps are restricting themselves to 2048 maximum. All backgrounds are scaled down 50%, then scaled up on draw. Saves memory, and backgrounds are already deliberately fuzzed for depth of field anyway.
nemo
parents:
3523
diff
changeset
|
591 |
DrawTexture(i, WorldDy + LAND_HEIGHT + OffsetY - lh, SpritesData[sprL].Texture, SpritesData[sprL].Texture^.Scale); |
8f5b3108f29c
New approach to the low-res problem. Basically, we already have a 1024 minimum, and the tallest maps are restricting themselves to 2048 maximum. All backgrounds are scaled down 50%, then scaled up on draw. Saves memory, and backgrounds are already deliberately fuzzed for depth of field anyway.
nemo
parents:
3523
diff
changeset
|
592 |
dec(i, lw); |
5285
af4dc03dd60d
Make sky, horizon, flakes and clouds optional, replace repeated strips of skyL/skyR with 2x2 transparent PNGs instead of larger images of variable dimensions, remove a number of empty unused images
nemo
parents:
5191
diff
changeset
|
593 |
end; |
3697 | 594 |
|
3405 | 595 |
i:= Shift + w; |
6135
2172330ad52a
Use SkyL if SkyR is not included. Saves a bit of texture memory and removes some redundant files.
nemo
parents:
6131
diff
changeset
|
596 |
if SpritesData[sprR].Texture <> nil then |
2172330ad52a
Use SkyL if SkyR is not included. Saves a bit of texture memory and removes some redundant files.
nemo
parents:
6131
diff
changeset
|
597 |
while i <= sw do |
2172330ad52a
Use SkyL if SkyR is not included. Saves a bit of texture memory and removes some redundant files.
nemo
parents:
6131
diff
changeset
|
598 |
begin |
2172330ad52a
Use SkyL if SkyR is not included. Saves a bit of texture memory and removes some redundant files.
nemo
parents:
6131
diff
changeset
|
599 |
DrawTexture(i, WorldDy + LAND_HEIGHT + OffsetY - rh, SpritesData[sprR].Texture, SpritesData[sprR].Texture^.Scale); |
2172330ad52a
Use SkyL if SkyR is not included. Saves a bit of texture memory and removes some redundant files.
nemo
parents:
6131
diff
changeset
|
600 |
inc(i, rw) |
2172330ad52a
Use SkyL if SkyR is not included. Saves a bit of texture memory and removes some redundant files.
nemo
parents:
6131
diff
changeset
|
601 |
end |
2172330ad52a
Use SkyL if SkyR is not included. Saves a bit of texture memory and removes some redundant files.
nemo
parents:
6131
diff
changeset
|
602 |
else |
2172330ad52a
Use SkyL if SkyR is not included. Saves a bit of texture memory and removes some redundant files.
nemo
parents:
6131
diff
changeset
|
603 |
while i <= sw do |
2172330ad52a
Use SkyL if SkyR is not included. Saves a bit of texture memory and removes some redundant files.
nemo
parents:
6131
diff
changeset
|
604 |
begin |
2172330ad52a
Use SkyL if SkyR is not included. Saves a bit of texture memory and removes some redundant files.
nemo
parents:
6131
diff
changeset
|
605 |
DrawTexture(i, WorldDy + LAND_HEIGHT + OffsetY - lh, SpritesData[sprL].Texture, SpritesData[sprL].Texture^.Scale); |
2172330ad52a
Use SkyL if SkyR is not included. Saves a bit of texture memory and removes some redundant files.
nemo
parents:
6131
diff
changeset
|
606 |
inc(i, lw) |
2172330ad52a
Use SkyL if SkyR is not included. Saves a bit of texture memory and removes some redundant files.
nemo
parents:
6131
diff
changeset
|
607 |
end |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
608 |
end |
2426 | 609 |
end; |
610 |
||
611 |
||
956 | 612 |
procedure DrawWorld(Lag: LongInt); |
4 | 613 |
begin |
3523 | 614 |
if not isPaused then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
615 |
begin |
3523 | 616 |
if ZoomValue < zoom then |
3444 | 617 |
begin |
3523 | 618 |
zoom:= zoom - 0.002 * Lag; |
3697 | 619 |
if ZoomValue > zoom then |
3523 | 620 |
zoom:= ZoomValue |
3697 | 621 |
end |
3774 | 622 |
else |
3523 | 623 |
if ZoomValue > zoom then |
3444 | 624 |
begin |
3523 | 625 |
zoom:= zoom + 0.002 * Lag; |
626 |
if ZoomValue < zoom then |
|
627 |
zoom:= ZoomValue |
|
3611 | 628 |
end |
3444 | 629 |
end |
3611 | 630 |
else |
631 |
ZoomValue:= zoom; |
|
2376 | 632 |
|
3611 | 633 |
// Sky |
634 |
glClear(GL_COLOR_BUFFER_BIT); |
|
635 |
//glPushMatrix; |
|
636 |
//glScalef(1.0, 1.0, 1.0); |
|
756 | 637 |
|
3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset
|
638 |
if not isPaused then |
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset
|
639 |
MoveCamera; |
162 | 640 |
|
3696 | 641 |
if cStereoMode = smNone then |
642 |
begin |
|
3692 | 643 |
glClear(GL_COLOR_BUFFER_BIT); |
644 |
DrawWorldStereo(Lag, rmDefault) |
|
3696 | 645 |
end |
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4345
diff
changeset
|
646 |
{$IFNDEF S3D_DISABLED} |
3696 | 647 |
else if (cStereoMode = smAFR) then |
648 |
begin |
|
649 |
AFRToggle:= not AFRToggle; |
|
650 |
glClear(GL_COLOR_BUFFER_BIT); |
|
651 |
if AFRToggle then |
|
652 |
DrawWorldStereo(Lag, rmLeftEye) |
|
653 |
else |
|
654 |
DrawWorldStereo(Lag, rmRightEye) |
|
655 |
end |
|
656 |
else if (cStereoMode = smHorizontal) or (cStereoMode = smVertical) then |
|
657 |
begin |
|
3692 | 658 |
// create left fb |
659 |
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, framel); |
|
660 |
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); |
|
661 |
DrawWorldStereo(Lag, rmLeftEye); |
|
662 |
||
663 |
// create right fb |
|
664 |
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, framer); |
|
665 |
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); |
|
666 |
DrawWorldStereo(0, rmRightEye); |
|
667 |
||
668 |
// detatch drawing from fbs |
|
669 |
glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); |
|
670 |
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); |
|
671 |
SetScale(cDefaultZoomLevel); |
|
672 |
||
673 |
// draw left frame |
|
674 |
glBindTexture(GL_TEXTURE_2D, texl); |
|
675 |
glBegin(GL_QUADS); |
|
3696 | 676 |
if cStereoMode = smHorizontal then |
677 |
begin |
|
678 |
glTexCoord2f(0.0, 0.0); |
|
679 |
glVertex2d(cScreenWidth / -2, cScreenHeight); |
|
680 |
glTexCoord2f(1.0, 0.0); |
|
681 |
glVertex2d(0, cScreenHeight); |
|
682 |
glTexCoord2f(1.0, 1.0); |
|
683 |
glVertex2d(0, 0); |
|
684 |
glTexCoord2f(0.0, 1.0); |
|
685 |
glVertex2d(cScreenWidth / -2, 0); |
|
686 |
end |
|
687 |
else |
|
688 |
begin |
|
689 |
glTexCoord2f(0.0, 0.0); |
|
690 |
glVertex2d(cScreenWidth / -2, cScreenHeight / 2); |
|
691 |
glTexCoord2f(1.0, 0.0); |
|
692 |
glVertex2d(cScreenWidth / 2, cScreenHeight / 2); |
|
693 |
glTexCoord2f(1.0, 1.0); |
|
694 |
glVertex2d(cScreenWidth / 2, 0); |
|
695 |
glTexCoord2f(0.0, 1.0); |
|
696 |
glVertex2d(cScreenWidth / -2, 0); |
|
697 |
end; |
|
3692 | 698 |
glEnd(); |
699 |
||
700 |
// draw right frame |
|
701 |
glBindTexture(GL_TEXTURE_2D, texr); |
|
702 |
glBegin(GL_QUADS); |
|
3696 | 703 |
if cStereoMode = smHorizontal then |
704 |
begin |
|
705 |
glTexCoord2f(0.0, 0.0); |
|
706 |
glVertex2d(0, cScreenHeight); |
|
707 |
glTexCoord2f(1.0, 0.0); |
|
708 |
glVertex2d(cScreenWidth / 2, cScreenHeight); |
|
709 |
glTexCoord2f(1.0, 1.0); |
|
710 |
glVertex2d(cScreenWidth / 2, 0); |
|
711 |
glTexCoord2f(0.0, 1.0); |
|
712 |
glVertex2d(0, 0); |
|
713 |
end |
|
714 |
else |
|
715 |
begin |
|
716 |
glTexCoord2f(0.0, 0.0); |
|
717 |
glVertex2d(cScreenWidth / -2, cScreenHeight); |
|
718 |
glTexCoord2f(1.0, 0.0); |
|
719 |
glVertex2d(cScreenWidth / 2, cScreenHeight); |
|
720 |
glTexCoord2f(1.0, 1.0); |
|
721 |
glVertex2d(cScreenWidth / 2, cScreenHeight / 2); |
|
722 |
glTexCoord2f(0.0, 1.0); |
|
723 |
glVertex2d(cScreenWidth / -2, cScreenHeight / 2); |
|
724 |
end; |
|
3692 | 725 |
glEnd(); |
726 |
SetScale(zoom); |
|
3696 | 727 |
end |
728 |
else |
|
729 |
begin |
|
730 |
// clear scene |
|
731 |
glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); |
|
732 |
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); |
|
733 |
// draw left eye in red channel only |
|
734 |
if cStereoMode = smGreenRed then |
|
735 |
glColorMask(GL_FALSE, GL_TRUE, GL_FALSE, GL_TRUE) |
|
736 |
else if cStereoMode = smBlueRed then |
|
737 |
glColorMask(GL_FALSE, GL_FALSE, GL_TRUE, GL_TRUE) |
|
738 |
else if cStereoMode = smCyanRed then |
|
739 |
glColorMask(GL_FALSE, GL_TRUE, GL_TRUE, GL_TRUE) |
|
740 |
else |
|
741 |
glColorMask(GL_TRUE, GL_FALSE, GL_FALSE, GL_TRUE); |
|
742 |
DrawWorldStereo(Lag, rmLeftEye); |
|
743 |
// draw right eye in selected channel(s) only |
|
744 |
if cStereoMode = smRedGreen then |
|
745 |
glColorMask(GL_FALSE, GL_TRUE, GL_FALSE, GL_TRUE) |
|
746 |
else if cStereoMode = smRedBlue then |
|
747 |
glColorMask(GL_FALSE, GL_FALSE, GL_TRUE, GL_TRUE) |
|
748 |
else if cStereoMode = smRedCyan then |
|
749 |
glColorMask(GL_FALSE, GL_TRUE, GL_TRUE, GL_TRUE) |
|
750 |
else |
|
751 |
glColorMask(GL_TRUE, GL_FALSE, GL_FALSE, GL_TRUE); |
|
752 |
DrawWorldStereo(Lag, rmRightEye); |
|
753 |
end |
|
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4345
diff
changeset
|
754 |
{$ENDIF} |
3692 | 755 |
end; |
756 |
||
757 |
procedure ChangeDepth(rm: TRenderMode; d: GLfloat); |
|
758 |
begin |
|
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4345
diff
changeset
|
759 |
{$IFDEF S3D_DISABLED} |
4850 | 760 |
rm:= rm; d:= d; // avoid hint |
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4345
diff
changeset
|
761 |
exit; |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4345
diff
changeset
|
762 |
{$ELSE} |
3696 | 763 |
d:= d / 5; |
3692 | 764 |
if rm = rmDefault then exit |
3696 | 765 |
else if rm = rmLeftEye then d:= -d; |
3692 | 766 |
stereoDepth:= stereoDepth + d; |
767 |
glMatrixMode(GL_PROJECTION); |
|
768 |
glTranslatef(d, 0, 0); |
|
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4345
diff
changeset
|
769 |
glMatrixMode(GL_MODELVIEW); |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4345
diff
changeset
|
770 |
{$ENDIF} |
3692 | 771 |
end; |
772 |
||
773 |
procedure ResetDepth(rm: TRenderMode); |
|
774 |
begin |
|
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4345
diff
changeset
|
775 |
{$IFDEF S3D_DISABLED} |
4850 | 776 |
rm:= rm; // avoid hint |
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4345
diff
changeset
|
777 |
exit; |
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4345
diff
changeset
|
778 |
{$ELSE} |
3692 | 779 |
if rm = rmDefault then exit; |
780 |
glMatrixMode(GL_PROJECTION); |
|
781 |
glTranslatef(-stereoDepth, 0, 0); |
|
782 |
glMatrixMode(GL_MODELVIEW); |
|
783 |
stereoDepth:= 0; |
|
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4345
diff
changeset
|
784 |
{$ENDIF} |
3692 | 785 |
end; |
786 |
||
787 |
procedure DrawWorldStereo(Lag: LongInt; RM: TRenderMode); |
|
788 |
var i, t: LongInt; |
|
789 |
r: TSDL_Rect; |
|
790 |
tdx, tdy: Double; |
|
791 |
s: string[15]; |
|
792 |
highlight: Boolean; |
|
5380
6ba1e40a360c
Based on some user complaints on forum, try to reduce impact of teams on small displays.
nemo
parents:
5372
diff
changeset
|
793 |
smallScreenOffset, offsetX, offsetY, screenBottom: LongInt; |
3692 | 794 |
VertexBuffer: array [0..3] of TVertex2f; |
795 |
begin |
|
3611 | 796 |
if (cReducedQuality and rqNoBackground) = 0 then |
1812 | 797 |
begin |
3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset
|
798 |
// Offsets relative to camera - spare them to wimpier cpus, no bg or flakes for them anyway |
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset
|
799 |
ScreenBottom:= (WorldDy - trunc(cScreenHeight/cScaleFactor) - (cScreenHeight div 2) + cWaterLine); |
4374 | 800 |
offsetY:= 10 * Min(0, -145 - ScreenBottom); |
3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset
|
801 |
SkyOffset:= offsetY div 35 + cWaveHeight; |
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset
|
802 |
HorizontOffset:= SkyOffset; |
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset
|
803 |
if ScreenBottom > SkyOffset then |
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset
|
804 |
HorizontOffset:= HorizontOffset + ((ScreenBottom-SkyOffset) div 20); |
3265
5fe62296fdea
- Parallax effect for horizont when water is out of sight
palewolf
parents:
3249
diff
changeset
|
805 |
|
3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset
|
806 |
// background |
3688 | 807 |
ChangeDepth(RM, cStereo_Sky); |
4835
a6924450e694
added rq-sky to themes so it can set sky color for low quality. also added tint of sky on sudden death. underwater theme is an example of this
Henek
parents:
4810
diff
changeset
|
808 |
if SuddenDeathDmg then Tint(SDTint, SDTint, SDTint, $FF); |
3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset
|
809 |
DrawRepeated(sprSky, sprSkyL, sprSkyR, (WorldDx + LAND_WIDTH div 2) * 3 div 8, SkyOffset); |
3688 | 810 |
ChangeDepth(RM, -cStereo_Horizon); |
3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset
|
811 |
DrawRepeated(sprHorizont, sprHorizontL, sprHorizontR, (WorldDx + LAND_WIDTH div 2) * 3 div 5, HorizontOffset); |
4835
a6924450e694
added rq-sky to themes so it can set sky color for low quality. also added tint of sky on sudden death. underwater theme is an example of this
Henek
parents:
4810
diff
changeset
|
812 |
if SuddenDeathDmg then Tint($FF, $FF, $FF, $FF); |
3611 | 813 |
end; |
4 | 814 |
|
3611 | 815 |
DrawVisualGears(0); |
6302
db8bdbb34e03
Spread flakes out over 5 layers now (far back, mid distance, just behind land, just in front of lands and hog, near distance). Spread clouds out over 3 layers (far back, mid distance, just behind land). Add a flatten clouds option, use
nemo
parents:
6296
diff
changeset
|
816 |
ChangeDepth(RM, -cStereo_MidDistance); |
db8bdbb34e03
Spread flakes out over 5 layers now (far back, mid distance, just behind land, just in front of lands and hog, near distance). Spread clouds out over 3 layers (far back, mid distance, just behind land). Add a flatten clouds option, use
nemo
parents:
6296
diff
changeset
|
817 |
DrawVisualGears(4); |
3697 | 818 |
|
3611 | 819 |
if (cReducedQuality and rq2DWater) = 0 then |
820 |
begin |
|
3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset
|
821 |
// Waves |
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset
|
822 |
DrawWater(255, SkyOffset); |
4816
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
823 |
ChangeDepth(RM, -cStereo_Water_distant); |
3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset
|
824 |
DrawWaves( 1, 0 - WorldDx div 32, - cWaveHeight + offsetY div 35, 64); |
4816
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
825 |
ChangeDepth(RM, -cStereo_Water_distant); |
3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset
|
826 |
DrawWaves( -1, 25 + WorldDx div 25, - cWaveHeight + offsetY div 38, 48); |
4816
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
827 |
ChangeDepth(RM, -cStereo_Water_distant); |
3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset
|
828 |
DrawWaves( 1, 75 - WorldDx div 19, - cWaveHeight + offsetY div 45, 32); |
4816
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
829 |
ChangeDepth(RM, -cStereo_Water_distant); |
3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset
|
830 |
DrawWaves(-1, 100 + WorldDx div 14, - cWaveHeight + offsetY div 70, 24); |
3265
5fe62296fdea
- Parallax effect for horizont when water is out of sight
palewolf
parents:
3249
diff
changeset
|
831 |
end |
3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset
|
832 |
else |
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset
|
833 |
DrawWaves(-1, 100, - (cWaveHeight + (cWaveHeight shr 1)), 0); |
4 | 834 |
|
4816
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
835 |
changeDepth(RM, cStereo_Land); |
6302
db8bdbb34e03
Spread flakes out over 5 layers now (far back, mid distance, just behind land, just in front of lands and hog, near distance). Spread clouds out over 3 layers (far back, mid distance, just behind land). Add a flatten clouds option, use
nemo
parents:
6296
diff
changeset
|
836 |
DrawVisualGears(5); |
3611 | 837 |
DrawLand(WorldDx, WorldDy); |
1911 | 838 |
|
3611 | 839 |
DrawWater(255, 0); |
4 | 840 |
|
1660 | 841 |
// Attack bar |
5862 | 842 |
if CurrentTeam <> nil then |
3611 | 843 |
case AttackBar of |
1660 | 844 |
(* 1: begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
845 |
r:= StuffPoz[sPowerBar]; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
846 |
{$WARNINGS OFF} |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
847 |
r.w:= (CurrentHedgehog^.Gear^.Power * 256) div cPowerDivisor; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
848 |
{$WARNINGS ON} |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
849 |
DrawSpriteFromRect(r, cScreenWidth - 272, cScreenHeight - 48, 16, 0, Surface); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
850 |
end;*) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
851 |
2: with CurrentHedgehog^ do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
852 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
853 |
tdx:= hwSign(Gear^.dX) * Sin(Gear^.Angle * Pi / cMaxAngle); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
854 |
tdy:= - Cos(Gear^.Angle * Pi / cMaxAngle); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
855 |
for i:= (Gear^.Power * 24) div cPowerDivisor downto 0 do |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
856 |
DrawSprite(sprPower, |
4159
64e677349124
REmove stupid int64 conversions, provide real fixes to compiler hints
unc0rr
parents:
4132
diff
changeset
|
857 |
hwRound(Gear^.X) + GetLaunchX(CurAmmoType, hwSign(Gear^.dX), Gear^.Angle) + LongInt(round(WorldDx + tdx * (24 + i * 2))) - 16, |
64e677349124
REmove stupid int64 conversions, provide real fixes to compiler hints
unc0rr
parents:
4132
diff
changeset
|
858 |
hwRound(Gear^.Y) + GetLaunchY(CurAmmoType, Gear^.Angle) + LongInt(round(WorldDy + tdy * (24 + i * 2))) - 16, |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
859 |
i) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
860 |
end |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
861 |
end; |
1660 | 862 |
|
3611 | 863 |
DrawVisualGears(1); |
864 |
DrawGears; |
|
6302
db8bdbb34e03
Spread flakes out over 5 layers now (far back, mid distance, just behind land, just in front of lands and hog, near distance). Spread clouds out over 3 layers (far back, mid distance, just behind land). Add a flatten clouds option, use
nemo
parents:
6296
diff
changeset
|
865 |
DrawVisualGears(6); |
4 | 866 |
|
4792
68f9b331014a
sudden death changes: only change visual bit on health decrease and support for water transparancy change and clouds number change
Henek
parents:
4748
diff
changeset
|
867 |
if SuddenDeathDmg then |
68f9b331014a
sudden death changes: only change visual bit on health decrease and support for water transparancy change and clouds number change
Henek
parents:
4748
diff
changeset
|
868 |
DrawWater(cSDWaterOpacity, 0) |
68f9b331014a
sudden death changes: only change visual bit on health decrease and support for water transparancy change and clouds number change
Henek
parents:
4748
diff
changeset
|
869 |
else |
68f9b331014a
sudden death changes: only change visual bit on health decrease and support for water transparancy change and clouds number change
Henek
parents:
4748
diff
changeset
|
870 |
DrawWater(cWaterOpacity, 0); |
2269
00f5704f5f39
add extra semi-opaque layer of water to discolour objects in the water.
nemo
parents:
2268
diff
changeset
|
871 |
|
3611 | 872 |
// Waves |
4816
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
873 |
ChangeDepth(RM, cStereo_Water_near); |
3611 | 874 |
DrawWaves( 1, 25 - WorldDx div 9, - cWaveHeight, 12); |
3265
5fe62296fdea
- Parallax effect for horizont when water is out of sight
palewolf
parents:
3249
diff
changeset
|
875 |
|
3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset
|
876 |
if (cReducedQuality and rq2DWater) = 0 then |
3265
5fe62296fdea
- Parallax effect for horizont when water is out of sight
palewolf
parents:
3249
diff
changeset
|
877 |
begin |
3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset
|
878 |
//DrawWater(cWaterOpacity, - offsetY div 40); |
4816
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
879 |
ChangeDepth(RM, cStereo_Water_near); |
3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset
|
880 |
DrawWaves(-1, 50 + WorldDx div 6, - cWaveHeight - offsetY div 40, 8); |
4792
68f9b331014a
sudden death changes: only change visual bit on health decrease and support for water transparancy change and clouds number change
Henek
parents:
4748
diff
changeset
|
881 |
if SuddenDeathDmg then |
68f9b331014a
sudden death changes: only change visual bit on health decrease and support for water transparancy change and clouds number change
Henek
parents:
4748
diff
changeset
|
882 |
DrawWater(cSDWaterOpacity, - offsetY div 20) |
68f9b331014a
sudden death changes: only change visual bit on health decrease and support for water transparancy change and clouds number change
Henek
parents:
4748
diff
changeset
|
883 |
else |
68f9b331014a
sudden death changes: only change visual bit on health decrease and support for water transparancy change and clouds number change
Henek
parents:
4748
diff
changeset
|
884 |
DrawWater(cWaterOpacity, - offsetY div 20); |
4816
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
885 |
ChangeDepth(RM, cStereo_Water_near); |
3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset
|
886 |
DrawWaves( 1, 75 - WorldDx div 4, - cWaveHeight - offsetY div 20, 2); |
4792
68f9b331014a
sudden death changes: only change visual bit on health decrease and support for water transparancy change and clouds number change
Henek
parents:
4748
diff
changeset
|
887 |
if SuddenDeathDmg then |
68f9b331014a
sudden death changes: only change visual bit on health decrease and support for water transparancy change and clouds number change
Henek
parents:
4748
diff
changeset
|
888 |
DrawWater(cSDWaterOpacity, - offsetY div 10) |
68f9b331014a
sudden death changes: only change visual bit on health decrease and support for water transparancy change and clouds number change
Henek
parents:
4748
diff
changeset
|
889 |
else |
68f9b331014a
sudden death changes: only change visual bit on health decrease and support for water transparancy change and clouds number change
Henek
parents:
4748
diff
changeset
|
890 |
DrawWater(cWaterOpacity, - offsetY div 10); |
4816
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
891 |
ChangeDepth(RM, cStereo_Water_near); |
3594
aeca3d8f1b29
turn cReducedQuality into a LongInt and provide a series of quality flags (and best of all, this is still compatible with current frontend)
koda
parents:
3582
diff
changeset
|
892 |
DrawWaves( -1, 25 + WorldDx div 3, - cWaveHeight - offsetY div 10, 0); |
3265
5fe62296fdea
- Parallax effect for horizont when water is out of sight
palewolf
parents:
3249
diff
changeset
|
893 |
end |
3611 | 894 |
else |
895 |
DrawWaves(-1, 50, - (cWaveHeight shr 1), 0); |
|
2161
0c8634241fa4
Some work on zooming. Hedgewars are now unplayable.
unc0rr
parents:
2152
diff
changeset
|
896 |
|
4816
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
897 |
// everything after this ChangeDepth will be drawn outside the screen |
4818
202eef454354
rename "frame alternate" to "wiggle" as it's more appropriate
koda
parents:
4816
diff
changeset
|
898 |
// note: negative parallax gears should last very little for a smooth stereo effect |
202eef454354
rename "frame alternate" to "wiggle" as it's more appropriate
koda
parents:
4816
diff
changeset
|
899 |
ChangeDepth(RM, cStereo_Outside); |
4816
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
900 |
DrawVisualGears(2); |
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
901 |
|
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
902 |
// everything after this ResetDepth will be drawn at screen level (depth = 0) |
4818
202eef454354
rename "frame alternate" to "wiggle" as it's more appropriate
koda
parents:
4816
diff
changeset
|
903 |
// note: everything that needs to be readable should be on this level |
4816
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
904 |
ResetDepth(RM); |
4818
202eef454354
rename "frame alternate" to "wiggle" as it's more appropriate
koda
parents:
4816
diff
changeset
|
905 |
DrawVisualGears(3); |
2161
0c8634241fa4
Some work on zooming. Hedgewars are now unplayable.
unc0rr
parents:
2152
diff
changeset
|
906 |
|
2288 | 907 |
{$WARNINGS OFF} |
2161
0c8634241fa4
Some work on zooming. Hedgewars are now unplayable.
unc0rr
parents:
2152
diff
changeset
|
908 |
// Target |
3104 | 909 |
if (TargetPoint.X <> NoPointX) and (CurrentTeam <> nil) and (CurrentHedgehog <> nil) then |
910 |
begin |
|
911 |
with PHedgehog(CurrentHedgehog)^ do |
|
912 |
begin |
|
5372
7283bc768228
Change bee pos sprite, make aiming napalm a little easier, adjust napalm flames to be more centred on the target
nemo
parents:
5302
diff
changeset
|
913 |
if CurAmmoType = amBee then |
3110 | 914 |
DrawRotatedF(sprTargetBee, TargetPoint.X + WorldDx, TargetPoint.Y + WorldDy, 0, 0, (RealTicks shr 3) mod 360) |
915 |
else |
|
5372
7283bc768228
Change bee pos sprite, make aiming napalm a little easier, adjust napalm flames to be more centred on the target
nemo
parents:
5302
diff
changeset
|
916 |
DrawRotatedF(sprTargetP, TargetPoint.X + WorldDx, TargetPoint.Y + WorldDy, 0, 0, (RealTicks shr 3) mod 360) |
7283bc768228
Change bee pos sprite, make aiming napalm a little easier, adjust napalm flames to be more centred on the target
nemo
parents:
5302
diff
changeset
|
917 |
end |
3104 | 918 |
end; |
4 | 919 |
{$WARNINGS ON} |
2161
0c8634241fa4
Some work on zooming. Hedgewars are now unplayable.
unc0rr
parents:
2152
diff
changeset
|
920 |
|
3523 | 921 |
// this scale is used to keep the various widgets at the same dimension at all zoom levels |
922 |
SetScale(cDefaultZoomLevel); |
|
2724 | 923 |
|
924 |
// Turn time |
|
5326 | 925 |
{$IFDEF MOBILE} |
3025 | 926 |
offsetX:= cScreenHeight - 13; |
2803
1f446fc5c8ec
allow to compile engine as library with HWLIBRARY symbol
koda
parents:
2786
diff
changeset
|
927 |
{$ELSE} |
3025 | 928 |
offsetX:= 48; |
2803
1f446fc5c8ec
allow to compile engine as library with HWLIBRARY symbol
koda
parents:
2786
diff
changeset
|
929 |
{$ENDIF} |
3463 | 930 |
offsetY:= cOffsetY; |
3890
e4b7b30232fd
Extend time limit to 9999, remove ready timer if time is over 999 and stop drawing time if it is over 999 (draws wrong over 999 anyway) - this has the effect of allowing an "unlimited" time appearance if turns are over a quarter hour or so. This can be used to add an unlimited time scheme or button to ipad
nemo
parents:
3836
diff
changeset
|
931 |
if ((TurnTimeLeft <> 0) and (TurnTimeLeft < 1000000)) or (ReadyTimeLeft <> 0) then |
3774 | 932 |
begin |
933 |
if ReadyTimeLeft <> 0 then |
|
934 |
i:= Succ(Pred(ReadyTimeLeft) div 1000) |
|
935 |
else |
|
936 |
i:= Succ(Pred(TurnTimeLeft) div 1000); |
|
937 |
||
4 | 938 |
if i>99 then t:= 112 |
939 |
else if i>9 then t:= 96 |
|
940 |
else t:= 80; |
|
3463 | 941 |
DrawSprite(sprFrame, -(cScreenWidth shr 1) + t + offsetY, cScreenHeight - offsetX, 1); |
4 | 942 |
while i > 0 do |
943 |
begin |
|
944 |
dec(t, 32); |
|
3463 | 945 |
DrawSprite(sprBigDigit, -(cScreenWidth shr 1) + t + offsetY, cScreenHeight - offsetX, i mod 10); |
4 | 946 |
i:= i div 10 |
947 |
end; |
|
3463 | 948 |
DrawSprite(sprFrame, -(cScreenWidth shr 1) + t - 4 + offsetY, cScreenHeight - offsetX, 0); |
4 | 949 |
end; |
79 | 950 |
|
4 | 951 |
// Captions |
4393 | 952 |
DrawCaptions; |
4 | 953 |
|
5941
db4751cb4f53
make the fire button appear only on android for now, I'll make it depend on a variable later on
Xeli
parents:
5936
diff
changeset
|
954 |
{$IFDEF ANDROID} |
5828
667fb58d7f18
Changed firebutton, parameters in uTouch might need to be tweaked some more
Xeli
parents:
5824
diff
changeset
|
955 |
// Draw buttons Related to the Touch interface |
667fb58d7f18
Changed firebutton, parameters in uTouch might need to be tweaked some more
Xeli
parents:
5824
diff
changeset
|
956 |
DrawTexture(Round(-cScreenWidth*0.5 + cScreenHeight*0.02),Round((cScreenHeight*0.98)-(spritesData[sprFireButton].Height*0.4) ),spritesData[sprFireButton].Texture, 0.4); |
5941
db4751cb4f53
make the fire button appear only on android for now, I'll make it depend on a variable later on
Xeli
parents:
5936
diff
changeset
|
957 |
{$ENDIF} |
47 | 958 |
// Teams Healths |
6011
519f8a58c021
Fix a bunch of warnings (also improves speed a bit in 32 bit code)
unC0Rr
parents:
5862
diff
changeset
|
959 |
if TeamsCount * 20 > Longword(cScreenHeight) div 7 then // take up less screen on small displays |
5380
6ba1e40a360c
Based on some user complaints on forum, try to reduce impact of teams on small displays.
nemo
parents:
5372
diff
changeset
|
960 |
begin |
6ba1e40a360c
Based on some user complaints on forum, try to reduce impact of teams on small displays.
nemo
parents:
5372
diff
changeset
|
961 |
SetScale(1.5); |
6ba1e40a360c
Based on some user complaints on forum, try to reduce impact of teams on small displays.
nemo
parents:
5372
diff
changeset
|
962 |
smallScreenOffset:= cScreenHeight div 6; |
6011
519f8a58c021
Fix a bunch of warnings (also improves speed a bit in 32 bit code)
unC0Rr
parents:
5862
diff
changeset
|
963 |
if TeamsCount * 20 > Longword(cScreenHeight) div 5 then Tint($FF,$FF,$FF,$80); |
5380
6ba1e40a360c
Based on some user complaints on forum, try to reduce impact of teams on small displays.
nemo
parents:
5372
diff
changeset
|
964 |
end |
6ba1e40a360c
Based on some user complaints on forum, try to reduce impact of teams on small displays.
nemo
parents:
5372
diff
changeset
|
965 |
else smallScreenOffset:= 0; |
547 | 966 |
for t:= 0 to Pred(TeamsCount) do |
967 |
with TeamsArray[t]^ do |
|
47 | 968 |
begin |
2839 | 969 |
highlight:= bShowFinger and (CurrentTeam = TeamsArray[t]) and ((RealTicks mod 1000) < 500); |
3697 | 970 |
|
2747 | 971 |
if highlight then |
4810 | 972 |
Tint(Clan^.Color shl 8 or $FF); |
2839 | 973 |
|
974 |
// draw name |
|
5380
6ba1e40a360c
Based on some user complaints on forum, try to reduce impact of teams on small displays.
nemo
parents:
5372
diff
changeset
|
975 |
DrawTexture(-NameTagTex^.w - 16, cScreenHeight + DrawHealthY + smallScreenOffset, NameTagTex); |
3697 | 976 |
|
2839 | 977 |
// draw flag |
5380
6ba1e40a360c
Based on some user complaints on forum, try to reduce impact of teams on small displays.
nemo
parents:
5372
diff
changeset
|
978 |
DrawTexture(-14, cScreenHeight + DrawHealthY + smallScreenOffset, FlagTex); |
3697 | 979 |
|
2839 | 980 |
// draw health bar |
690 | 981 |
r.x:= 0; |
982 |
r.y:= 0; |
|
547 | 983 |
r.w:= 2 + TeamHealthBarWidth; |
764
7513452b1d51
Now game looks almost like it did before switching to OpenGL
unc0rr
parents:
762
diff
changeset
|
984 |
r.h:= HealthTex^.h; |
5380
6ba1e40a360c
Based on some user complaints on forum, try to reduce impact of teams on small displays.
nemo
parents:
5372
diff
changeset
|
985 |
DrawFromRect(14, cScreenHeight + DrawHealthY + smallScreenOffset, @r, HealthTex); |
690 | 986 |
|
4816
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
987 |
// draw health bars right border |
83 | 988 |
inc(r.x, cTeamHealthWidth + 2); |
989 |
r.w:= 3; |
|
5380
6ba1e40a360c
Based on some user complaints on forum, try to reduce impact of teams on small displays.
nemo
parents:
5372
diff
changeset
|
990 |
DrawFromRect(TeamHealthBarWidth + 16, cScreenHeight + DrawHealthY + smallScreenOffset, @r, HealthTex); |
3770 | 991 |
|
992 |
// draw ai kill counter for gfAISurvival |
|
993 |
if (GameFlags and gfAISurvival) <> 0 then begin |
|
5380
6ba1e40a360c
Based on some user complaints on forum, try to reduce impact of teams on small displays.
nemo
parents:
5372
diff
changeset
|
994 |
DrawTexture(TeamHealthBarWidth + 22, cScreenHeight + DrawHealthY + smallScreenOffset, |
3773 | 995 |
AIKillsTex); |
3770 | 996 |
end; |
997 |
||
2839 | 998 |
// if highlighted, draw flag and other contents again to keep their colors |
999 |
// this approach should be faster than drawing all borders one by one tinted or not |
|
1000 |
if highlight then |
|
1001 |
begin |
|
6011
519f8a58c021
Fix a bunch of warnings (also improves speed a bit in 32 bit code)
unC0Rr
parents:
5862
diff
changeset
|
1002 |
if TeamsCount * 20 > Longword(cScreenHeight) div 5 then Tint($FF,$FF,$FF,$80) |
5380
6ba1e40a360c
Based on some user complaints on forum, try to reduce impact of teams on small displays.
nemo
parents:
5372
diff
changeset
|
1003 |
else Tint($FF, $FF, $FF, $FF); |
690 | 1004 |
|
2839 | 1005 |
// draw name |
2747 | 1006 |
r.x:= 2; |
1007 |
r.y:= 2; |
|
2839 | 1008 |
r.w:= NameTagTex^.w - 4; |
1009 |
r.h:= NameTagTex^.h - 4; |
|
5380
6ba1e40a360c
Based on some user complaints on forum, try to reduce impact of teams on small displays.
nemo
parents:
5372
diff
changeset
|
1010 |
DrawFromRect(-NameTagTex^.w - 14, cScreenHeight + DrawHealthY + smallScreenOffset + 2, @r, NameTagTex); |
2839 | 1011 |
// draw flag |
2747 | 1012 |
r.w:= 22; |
1013 |
r.h:= 15; |
|
5380
6ba1e40a360c
Based on some user complaints on forum, try to reduce impact of teams on small displays.
nemo
parents:
5372
diff
changeset
|
1014 |
DrawFromRect(-12, cScreenHeight + DrawHealthY + smallScreenOffset + 2, @r, FlagTex); |
2839 | 1015 |
// draw health bar |
1016 |
r.w:= TeamHealthBarWidth + 1; |
|
1017 |
r.h:= HealthTex^.h - 4; |
|
5380
6ba1e40a360c
Based on some user complaints on forum, try to reduce impact of teams on small displays.
nemo
parents:
5372
diff
changeset
|
1018 |
DrawFromRect(16, cScreenHeight + DrawHealthY + smallScreenOffset + 2, @r, HealthTex); |
2747 | 1019 |
end; |
47 | 1020 |
end; |
5380
6ba1e40a360c
Based on some user complaints on forum, try to reduce impact of teams on small displays.
nemo
parents:
5372
diff
changeset
|
1021 |
if smallScreenOffset <> 0 then |
6ba1e40a360c
Based on some user complaints on forum, try to reduce impact of teams on small displays.
nemo
parents:
5372
diff
changeset
|
1022 |
begin |
5485 | 1023 |
SetScale(cDefaultZoomLevel); |
6011
519f8a58c021
Fix a bunch of warnings (also improves speed a bit in 32 bit code)
unC0Rr
parents:
5862
diff
changeset
|
1024 |
if TeamsCount * 20 > Longword(cScreenHeight) div 5 then Tint($FF,$FF,$FF,$FF); |
5380
6ba1e40a360c
Based on some user complaints on forum, try to reduce impact of teams on small displays.
nemo
parents:
5372
diff
changeset
|
1025 |
end; |
47 | 1026 |
|
5 | 1027 |
// Lag alert |
2567 | 1028 |
if isInLag then DrawSprite(sprLag, 32 - (cScreenWidth shr 1), 32, (RealTicks shr 7) mod 12); |
4 | 1029 |
|
5 | 1030 |
// Wind bar |
5326 | 1031 |
{$IFDEF MOBILE} |
3405 | 1032 |
offsetX:= cScreenHeight - 13; |
1033 |
offsetY:= (cScreenWidth shr 1) + 74; |
|
2567 | 1034 |
{$ELSE} |
3405 | 1035 |
offsetX:= 30; |
1036 |
offsetY:= 180; |
|
2567 | 1037 |
{$ENDIF} |
3405 | 1038 |
DrawSprite(sprWindBar, (cScreenWidth shr 1) - offsetY, cScreenHeight - offsetX, 0); |
1039 |
if WindBarWidth > 0 then |
|
1040 |
begin |
|
1041 |
{$WARNINGS OFF} |
|
1042 |
r.x:= 8 - (RealTicks shr 6) mod 8; |
|
1043 |
{$WARNINGS ON} |
|
1044 |
r.y:= 0; |
|
1045 |
r.w:= WindBarWidth; |
|
1046 |
r.h:= 13; |
|
1047 |
DrawSpriteFromRect(sprWindR, r, (cScreenWidth shr 1) - offsetY + 77, cScreenHeight - offsetX + 2, 13, 0); |
|
1048 |
end |
|
1049 |
else |
|
1050 |
if WindBarWidth < 0 then |
|
1051 |
begin |
|
1052 |
{$WARNINGS OFF} |
|
3407 | 1053 |
r.x:= (Longword(WindBarWidth) + RealTicks shr 6) mod 8; |
3405 | 1054 |
{$WARNINGS ON} |
1055 |
r.y:= 0; |
|
1056 |
r.w:= - WindBarWidth; |
|
1057 |
r.h:= 13; |
|
1058 |
DrawSpriteFromRect(sprWindL, r, (cScreenWidth shr 1) - offsetY + 74 + WindBarWidth, cScreenHeight - offsetX + 2, 13, 0); |
|
1059 |
end; |
|
5 | 1060 |
|
161 | 1061 |
// AmmoMenu |
3434 | 1062 |
if (AMxShift < AMWidth) or bShowAmmoMenu then ShowAmmoMenu; |
161 | 1063 |
|
2287 | 1064 |
// Cursor |
1065 |
if isCursorVisible and bShowAmmoMenu then |
|
1066 |
DrawSprite(sprArrow, CursorPoint.X, cScreenHeight - CursorPoint.Y, (RealTicks shr 6) mod 8); |
|
942 | 1067 |
|
4816
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
1068 |
// Chat |
2287 | 1069 |
DrawChat; |
4 | 1070 |
|
4976 | 1071 |
// various captions |
2567 | 1072 |
if fastUntilLag then DrawCentered(0, (cScreenHeight shr 1), SyncTexture); |
1073 |
if isPaused then DrawCentered(0, (cScreenHeight shr 1), PauseTexture); |
|
3774 | 1074 |
if not isFirstFrame and (missionTimer <> 0) or isPaused or fastUntilLag or (GameState = gsConfirm) then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1075 |
begin |
3774 | 1076 |
if (ReadyTimeLeft = 0) and (missionTimer > 0) then dec(missionTimer, Lag); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1077 |
if missionTimer < 0 then missionTimer:= 0; // avoid subtracting below 0 |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1078 |
if missionTex <> nil then |
4374 | 1079 |
DrawCentered(0, Min((cScreenHeight shr 1) + 100, cScreenHeight - 48 - missionTex^.h), missionTex); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1080 |
end; |
2786 | 1081 |
|
2724 | 1082 |
// fps |
5326 | 1083 |
{$IFDEF MOBILE} |
3463 | 1084 |
offsetX:= 8; |
2724 | 1085 |
{$ELSE} |
3463 | 1086 |
offsetX:= 10; |
2724 | 1087 |
{$ENDIF} |
3463 | 1088 |
offsetY:= cOffsetY; |
3696 | 1089 |
if (RM = rmDefault) or (RM = rmRightEye) then |
3692 | 1090 |
begin |
1091 |
inc(Frames); |
|
2850
f6f8db825ce7
A little clock for convenience in finding things in demos
nemo
parents:
2839
diff
changeset
|
1092 |
|
3692 | 1093 |
if cShowFPS or (GameType = gmtDemo) then |
1094 |
inc(CountTicks, Lag); |
|
1095 |
if (GameType = gmtDemo) and (CountTicks >= 1000) then |
|
1096 |
begin |
|
1097 |
i:=GameTicks div 1000; |
|
1098 |
t:= i mod 60; |
|
1099 |
s:= inttostr(t); |
|
1100 |
if t < 10 then s:= '0' + s; |
|
1101 |
i:= i div 60; |
|
1102 |
t:= i mod 60; |
|
1103 |
s:= inttostr(t) + ':' + s; |
|
1104 |
if t < 10 then s:= '0' + s; |
|
1105 |
s:= inttostr(i div 60) + ':' + s; |
|
3407 | 1106 |
|
3513
f589230fa21b
now it's possible to select the scheme file in the ifrontendfix a type about loading an image (iphone file system IS case senstive)
koda
parents:
3483
diff
changeset
|
1107 |
|
3692 | 1108 |
tmpSurface:= TTF_RenderUTF8_Blended(Fontz[fnt16].Handle, Str2PChar(s), cWhiteColorChannels); |
1109 |
tmpSurface:= doSurfaceConversion(tmpSurface); |
|
6380
1ff5ad1d771b
Remove a bunch of unnecessary nil checks. FreeTexture does its own nil check.
nemo
parents:
6302
diff
changeset
|
1110 |
FreeTexture(timeTexture); |
3692 | 1111 |
timeTexture:= Surface2Tex(tmpSurface, false); |
1112 |
SDL_FreeSurface(tmpSurface) |
|
1113 |
end; |
|
2850
f6f8db825ce7
A little clock for convenience in finding things in demos
nemo
parents:
2839
diff
changeset
|
1114 |
|
3692 | 1115 |
if timeTexture <> nil then |
1116 |
DrawTexture((cScreenWidth shr 1) - 20 - timeTexture^.w - offsetY, offsetX + timeTexture^.h+5, timeTexture); |
|
2850
f6f8db825ce7
A little clock for convenience in finding things in demos
nemo
parents:
2839
diff
changeset
|
1117 |
|
3692 | 1118 |
if cShowFPS then |
1119 |
begin |
|
1120 |
if CountTicks >= 1000 then |
|
1121 |
begin |
|
1122 |
FPS:= Frames; |
|
1123 |
Frames:= 0; |
|
1124 |
CountTicks:= 0; |
|
1125 |
s:= inttostr(FPS) + ' fps'; |
|
1126 |
tmpSurface:= TTF_RenderUTF8_Blended(Fontz[fnt16].Handle, Str2PChar(s), cWhiteColorChannels); |
|
1127 |
tmpSurface:= doSurfaceConversion(tmpSurface); |
|
6380
1ff5ad1d771b
Remove a bunch of unnecessary nil checks. FreeTexture does its own nil check.
nemo
parents:
6302
diff
changeset
|
1128 |
FreeTexture(fpsTexture); |
3692 | 1129 |
fpsTexture:= Surface2Tex(tmpSurface, false); |
1130 |
SDL_FreeSurface(tmpSurface) |
|
1131 |
end; |
|
1132 |
if fpsTexture <> nil then |
|
1133 |
DrawTexture((cScreenWidth shr 1) - 60 - offsetY, offsetX, fpsTexture); |
|
1134 |
end; |
|
174 | 1135 |
|
3692 | 1136 |
if CountTicks >= 1000 then CountTicks:= 0; |
2850
f6f8db825ce7
A little clock for convenience in finding things in demos
nemo
parents:
2839
diff
changeset
|
1137 |
|
3692 | 1138 |
// lag warning (?) |
1139 |
inc(SoundTimerTicks, Lag); |
|
1140 |
end; |
|
1141 |
||
174 | 1142 |
if SoundTimerTicks >= 50 then |
1143 |
begin |
|
1144 |
SoundTimerTicks:= 0; |
|
1145 |
if cVolumeDelta <> 0 then |
|
1146 |
begin |
|
1147 |
str(ChangeVolume(cVolumeDelta), s); |
|
2619 | 1148 |
AddCaption(Format(trmsg[sidVolume], s), cWhiteColor, capgrpVolume) |
174 | 1149 |
end |
756 | 1150 |
end; |
1151 |
||
2724 | 1152 |
if GameState = gsConfirm then |
3025 | 1153 |
DrawCentered(0, (cScreenHeight shr 1), ConfirmTexture); |
2161
0c8634241fa4
Some work on zooming. Hedgewars are now unplayable.
unc0rr
parents:
2152
diff
changeset
|
1154 |
|
3107 | 1155 |
if ScreenFade <> sfNone then |
1156 |
begin |
|
1157 |
if not isFirstFrame then |
|
1158 |
case ScreenFade of |
|
1159 |
sfToBlack, sfToWhite: if ScreenFadeValue + Lag * ScreenFadeSpeed < sfMax then |
|
1160 |
inc(ScreenFadeValue, Lag * ScreenFadeSpeed) |
|
1161 |
else |
|
3123 | 1162 |
ScreenFadeValue:= sfMax; |
3107 | 1163 |
sfFromBlack, sfFromWhite: if ScreenFadeValue - Lag * ScreenFadeSpeed > 0 then |
1164 |
dec(ScreenFadeValue, Lag * ScreenFadeSpeed) |
|
1165 |
else |
|
3123 | 1166 |
ScreenFadeValue:= 0; |
3107 | 1167 |
end; |
1168 |
if ScreenFade <> sfNone then |
|
1169 |
begin |
|
1170 |
case ScreenFade of |
|
3376 | 1171 |
sfToBlack, sfFromBlack: Tint(0, 0, 0, ScreenFadeValue * 255 div 1000); |
1172 |
sfToWhite, sfFromWhite: Tint($FF, $FF, $FF, ScreenFadeValue * 255 div 1000); |
|
3107 | 1173 |
end; |
3697 | 1174 |
|
3113 | 1175 |
VertexBuffer[0].X:= -cScreenWidth; |
1176 |
VertexBuffer[0].Y:= cScreenHeight; |
|
1177 |
VertexBuffer[1].X:= -cScreenWidth; |
|
1178 |
VertexBuffer[1].Y:= 0; |
|
1179 |
VertexBuffer[2].X:= cScreenWidth; |
|
1180 |
VertexBuffer[2].Y:= 0; |
|
1181 |
VertexBuffer[3].X:= cScreenWidth; |
|
1182 |
VertexBuffer[3].Y:= cScreenHeight; |
|
3697 | 1183 |
|
3376 | 1184 |
glDisable(GL_TEXTURE_2D); |
3641 | 1185 |
|
3113 | 1186 |
glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]); |
1187 |
glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer)); |
|
3641 | 1188 |
|
3376 | 1189 |
glEnable(GL_TEXTURE_2D); |
3390 | 1190 |
Tint($FF, $FF, $FF, $FF); |
3123 | 1191 |
if not isFirstFrame and ((ScreenFadeValue = 0) or (ScreenFadeValue = sfMax)) then ScreenFade:= sfNone |
3107 | 1192 |
end |
1193 |
end; |
|
1194 |
||
3123 | 1195 |
SetScale(zoom); |
1196 |
||
1197 |
// Cursor |
|
1198 |
if isCursorVisible then |
|
1199 |
begin |
|
1200 |
if not bShowAmmoMenu then |
|
3204 | 1201 |
begin |
3123 | 1202 |
with CurrentHedgehog^ do |
3582
4debed8656d7
fix segfault on HH-gear being 0 (e.g. after drowning) in cursor/target selection mode, thanks "ivze" for the heads-up!
sheepluva
parents:
3580
diff
changeset
|
1203 |
if (Gear <> nil) and ((Gear^.State and gstHHChooseTarget) <> 0) then |
3123 | 1204 |
begin |
5675
cd10d6cba644
add for mine strike too. as cheezemonkey points out, mine bounce is height dependent.
nemo
parents:
5523
diff
changeset
|
1205 |
if (CurAmmoType = amNapalm) or (CurAmmoType = amMineStrike) then |
5372
7283bc768228
Change bee pos sprite, make aiming napalm a little easier, adjust napalm flames to be more centred on the target
nemo
parents:
5302
diff
changeset
|
1206 |
DrawLine(-3000, topY-300, 7000, topY-300, 3.0, (Team^.Clan^.Color shr 16), (Team^.Clan^.Color shr 8) and $FF, Team^.Clan^.Color and $FF, $FF); |
3836
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3811
diff
changeset
|
1207 |
i:= GetAmmoEntry(CurrentHedgehog^)^.Pos; |
833c0f32e326
Change all use of curslot/idx to CurAmmoType to try and avoid some bugs with use of last weapon.
nemo
parents:
3811
diff
changeset
|
1208 |
with Ammoz[CurAmmoType] do |
3123 | 1209 |
if PosCount > 1 then |
3204 | 1210 |
DrawSprite(PosSprite, CursorPoint.X - (SpritesData[PosSprite].Width shr 1), cScreenHeight - CursorPoint.Y - (SpritesData[PosSprite].Height shr 1),i); |
3123 | 1211 |
end; |
3204 | 1212 |
DrawSprite(sprArrow, CursorPoint.X, cScreenHeight - CursorPoint.Y, (RealTicks shr 6) mod 8) |
1213 |
end |
|
3123 | 1214 |
end; |
3107 | 1215 |
isFirstFrame:= false |
4 | 1216 |
end; |
1217 |
||
79 | 1218 |
procedure MoveCamera; |
5851
e6151aca2d7c
Focus camera on moving current hog (probably more important to player). Should make tumbler, sine gun play, attacking off rope and saucer more playable. Also fix a typo in prior offset, and compensate for zoom.
nemo
parents:
5848
diff
changeset
|
1219 |
var EdgesDist, wdy, shs,z: LongInt; |
3638
33ee433749ba
touch overlay reworked, improvements to zoom and confirmation
koda
parents:
3629
diff
changeset
|
1220 |
PrevSentPointTime: LongWord = 0; |
4 | 1221 |
begin |
5502 | 1222 |
{$IFNDEF MOBILE} |
6453
11c578d30bd3
Countless imporvements to the parser and countless help to the parser in sources.
unc0rr
parents:
6415
diff
changeset
|
1223 |
if (not (CurrentTeam^.ExtDriven and isCursorVisible and (not bShowAmmoMenu))) and cHasFocus and (GameState <> gsConfirm) then |
5191
c7000a6b397b
- Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
5149
diff
changeset
|
1224 |
uCursor.updatePosition(); |
3551 | 1225 |
{$ENDIF} |
5852 | 1226 |
z:= round(200/zoom); |
6453
11c578d30bd3
Countless imporvements to the parser and countless help to the parser in sources.
unc0rr
parents:
6415
diff
changeset
|
1227 |
if not PlacingHogs and (FollowGear <> nil) and (not isCursorVisible) and (not bShowAmmoMenu) and (not fastUntilLag) then |
5851
e6151aca2d7c
Focus camera on moving current hog (probably more important to player). Should make tumbler, sine gun play, attacking off rope and saucer more playable. Also fix a typo in prior offset, and compensate for zoom.
nemo
parents:
5848
diff
changeset
|
1228 |
if (not autoCameraOn) or ((abs(CursorPoint.X - prevPoint.X) + abs(CursorPoint.Y - prevpoint.Y)) > 4) then |
6296 | 1229 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1230 |
FollowGear:= nil; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1231 |
prevPoint:= CursorPoint; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1232 |
exit |
6296 | 1233 |
end |
3680 | 1234 |
else |
6296 | 1235 |
begin |
5852 | 1236 |
CursorPoint.X:= (prevPoint.X * 7 + hwRound(FollowGear^.X) + hwSign(FollowGear^.dX) * z + WorldDx) div 8; |
6098 | 1237 |
if isPhone() or (cScreenHeight < 600) or ((hwSign(FollowGear^.dY) * z) < 10) then |
6016
85410eef7ba4
disable the followgear vertical offset for small screen devices
koda
parents:
6011
diff
changeset
|
1238 |
CursorPoint.Y:= (prevPoint.Y * 7 + cScreenHeight - (hwRound(FollowGear^.Y) + WorldDy)) div 8 |
85410eef7ba4
disable the followgear vertical offset for small screen devices
koda
parents:
6011
diff
changeset
|
1239 |
else |
85410eef7ba4
disable the followgear vertical offset for small screen devices
koda
parents:
6011
diff
changeset
|
1240 |
CursorPoint.Y:= (prevPoint.Y * 7 + cScreenHeight - (hwRound(FollowGear^.Y) + hwSign(FollowGear^.dY) * z + WorldDy)) div 8; |
6296 | 1241 |
end; |
4 | 1242 |
|
2375 | 1243 |
wdy:= trunc(cScreenHeight / cScaleFactor) + cScreenHeight div 2 - cWaterLine - cVisibleWater; |
1244 |
if WorldDy < wdy then WorldDy:= wdy; |
|
1245 |
||
2197 | 1246 |
if ((CursorPoint.X = prevPoint.X) and (CursorPoint.Y = prevpoint.Y)) then exit; |
4 | 1247 |
|
3434 | 1248 |
if AMxShift < AMWidth then |
3680 | 1249 |
begin |
5502 | 1250 |
{$IFDEF MOBILE} |
3434 | 1251 |
if CursorPoint.X < cScreenWidth div 2 + AMxShift - AMWidth then CursorPoint.X:= cScreenWidth div 2 + AMxShift - AMWidth; |
1252 |
if CursorPoint.X > cScreenWidth div 2 + AMxShift - AMxOffset then CursorPoint.X:= cScreenWidth div 2 + AMxShift - AMxOffset; |
|
1253 |
if CursorPoint.Y < cScreenHeight - AMyOffset - SlotsNum * AMSlotSize then CursorPoint.Y:= cScreenHeight - AMyOffset - SlotsNum * AMSlotSize; |
|
1254 |
if CursorPoint.Y > cScreenHeight - AMyOffset then CursorPoint.Y:= cScreenHeight - AMyOffset; |
|
3463 | 1255 |
{$ELSE} |
3434 | 1256 |
if CursorPoint.X < cScreenWidth div 2 + AMxShift - AMWidth + AMSlotSize then CursorPoint.X:= cScreenWidth div 2 + AMxShift - AMWidth + AMSlotSize; |
1257 |
if CursorPoint.X > cScreenWidth div 2 + AMxShift - AMxOffset then CursorPoint.X:= cScreenWidth div 2 + AMxShift - AMxOffset; |
|
1258 |
if CursorPoint.Y > AMyOffset + (SlotsNum + 1) * AMSlotSize then CursorPoint.Y:= AMyOffset + (SlotsNum + 1) * AMSlotSize; |
|
1259 |
if CursorPoint.Y < AMyOffset + AMSlotSize then CursorPoint.Y:= AMyOffset + AMSlotSize; |
|
3463 | 1260 |
{$ENDIF} |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1261 |
prevPoint:= CursorPoint; |
5191
c7000a6b397b
- Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
5149
diff
changeset
|
1262 |
//if cHasFocus then SDL_WarpMouse(CursorPoint.X + cScreenWidth div 2, cScreenHeight - CursorPoint.Y); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1263 |
exit |
3680 | 1264 |
end; |
162 | 1265 |
|
4 | 1266 |
if isCursorVisible then |
3680 | 1267 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1268 |
if (not CurrentTeam^.ExtDriven) and (GameTicks >= PrevSentPointTime + cSendCursorPosTime) then |
3680 | 1269 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1270 |
SendIPCXY('P', CursorPoint.X - WorldDx, cScreenHeight - CursorPoint.Y - WorldDy); |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1271 |
PrevSentPointTime:= GameTicks |
3680 | 1272 |
end; |
1273 |
EdgesDist:= cCursorEdgesDist |
|
1274 |
end |
|
1275 |
else |
|
1276 |
EdgesDist:= cGearScrEdgesDist; |
|
1277 |
||
1278 |
// this generates the border around the screen that moves the camera when cursor is near it |
|
1279 |
if isCursorVisible or (FollowGear <> nil) then |
|
1280 |
begin |
|
1281 |
if CursorPoint.X < - cScreenWidth div 2 + EdgesDist then |
|
1282 |
begin |
|
1283 |
WorldDx:= WorldDx - CursorPoint.X - cScreenWidth div 2 + EdgesDist; |
|
1284 |
CursorPoint.X:= - cScreenWidth div 2 + EdgesDist |
|
1285 |
end |
|
1286 |
else |
|
1287 |
if CursorPoint.X > cScreenWidth div 2 - EdgesDist then |
|
1288 |
begin |
|
1289 |
WorldDx:= WorldDx - CursorPoint.X + cScreenWidth div 2 - EdgesDist; |
|
1290 |
CursorPoint.X:= cScreenWidth div 2 - EdgesDist |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1291 |
end; |
5149
9aa840fdf922
Try to allow cursor to reach water when zooming out
unc0rr
parents:
5022
diff
changeset
|
1292 |
|
5302 | 1293 |
shs:= min(cScreenHeight div 2 - trunc(cScreenHeight / cScaleFactor) + EdgesDist, cScreenHeight - EdgesDist); |
5149
9aa840fdf922
Try to allow cursor to reach water when zooming out
unc0rr
parents:
5022
diff
changeset
|
1294 |
if CursorPoint.Y < shs then |
3680 | 1295 |
begin |
5149
9aa840fdf922
Try to allow cursor to reach water when zooming out
unc0rr
parents:
5022
diff
changeset
|
1296 |
WorldDy:= WorldDy + CursorPoint.Y - shs; |
9aa840fdf922
Try to allow cursor to reach water when zooming out
unc0rr
parents:
5022
diff
changeset
|
1297 |
CursorPoint.Y:= shs; |
3680 | 1298 |
end |
1299 |
else |
|
5302 | 1300 |
if (CursorPoint.Y > cScreenHeight - EdgesDist) then |
3680 | 1301 |
begin |
1302 |
WorldDy:= WorldDy + CursorPoint.Y - cScreenHeight + EdgesDist; |
|
1303 |
CursorPoint.Y:= cScreenHeight - EdgesDist |
|
1304 |
end; |
|
1305 |
end |
|
1306 |
else |
|
1307 |
if cHasFocus then |
|
1308 |
begin |
|
1309 |
WorldDx:= WorldDx - CursorPoint.X + prevPoint.X; |
|
1310 |
WorldDy:= WorldDy + CursorPoint.Y - prevPoint.Y; |
|
1311 |
CursorPoint.X:= 0; |
|
1312 |
CursorPoint.Y:= cScreenHeight div 2; |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1313 |
end; |
351 | 1314 |
|
3680 | 1315 |
// this moves the camera according to CursorPoint X and Y |
4 | 1316 |
prevPoint:= CursorPoint; |
5191
c7000a6b397b
- Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
5149
diff
changeset
|
1317 |
//if cHasFocus then SDL_WarpMouse(CursorPoint.X + (cScreenWidth shr 1), cScreenHeight - CursorPoint.Y); |
1760 | 1318 |
if WorldDy > LAND_HEIGHT + 1024 then WorldDy:= LAND_HEIGHT + 1024; |
2375 | 1319 |
if WorldDy < wdy then WorldDy:= wdy; |
2426 | 1320 |
if WorldDx < - LAND_WIDTH - 1024 then WorldDx:= - LAND_WIDTH - 1024; |
1321 |
if WorldDx > 1024 then WorldDx:= 1024; |
|
4 | 1322 |
end; |
1323 |
||
2905 | 1324 |
procedure ShowMission(caption, subcaption, text: ansistring; icon, time : LongInt); |
2786 | 1325 |
var r: TSDL_Rect; |
1326 |
begin |
|
1327 |
r.w:= 32; |
|
1328 |
r.h:= 32; |
|
1329 |
||
1330 |
if time = 0 then time:= 5000; |
|
1331 |
missionTimer:= time; |
|
6380
1ff5ad1d771b
Remove a bunch of unnecessary nil checks. FreeTexture does its own nil check.
nemo
parents:
6302
diff
changeset
|
1332 |
FreeTexture(missionTex); |
2786 | 1333 |
|
1334 |
if icon > -1 then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1335 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1336 |
r.x:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1337 |
r.y:= icon * 32; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1338 |
missionTex:= RenderHelpWindow(caption, subcaption, text, '', 0, MissionIcons, @r) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1339 |
end |
2786 | 1340 |
else |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1341 |
begin |
4626
775f43e90383
fixed showmission so it actually displays the right icons
Henek
parents:
4482
diff
changeset
|
1342 |
r.x:= ((-icon - 1) shr 4) * 32; |
775f43e90383
fixed showmission so it actually displays the right icons
Henek
parents:
4482
diff
changeset
|
1343 |
r.y:= ((-icon - 1) mod 16) * 32; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1344 |
missionTex:= RenderHelpWindow(caption, subcaption, text, '', 0, SpritesData[sprAMAmmos].Surface, @r) |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1345 |
end; |
2786 | 1346 |
end; |
1347 |
||
1348 |
procedure HideMission; |
|
1349 |
begin |
|
3045 | 1350 |
missionTimer:= 0; |
2786 | 1351 |
end; |
1352 |
||
6011
519f8a58c021
Fix a bunch of warnings (also improves speed a bit in 32 bit code)
unC0Rr
parents:
5862
diff
changeset
|
1353 |
procedure ShakeCamera(amount: LongInt); |
3032 | 1354 |
begin |
5800
3a04c30e5ac7
NEEDS TESTING. Try reenabling camera shake based on unc0rr's comment.
nemo
parents:
5684
diff
changeset
|
1355 |
if isCursorVisible then exit; |
5855
74c621e12baa
I do believe the only thing that was *ever* wrong with camera shake was someone decided to use getRandom on something that had always been a visual effect anyway. Pretty sure WorldDx is in fact safe to modify.
nemo
parents:
5852
diff
changeset
|
1356 |
amount:= Max(1, round(amount*zoom/2)); |
74c621e12baa
I do believe the only thing that was *ever* wrong with camera shake was someone decided to use getRandom on something that had always been a visual effect anyway. Pretty sure WorldDx is in fact safe to modify.
nemo
parents:
5852
diff
changeset
|
1357 |
WorldDx:= WorldDx - amount + LongInt(random(1 + amount * 2)); |
74c621e12baa
I do believe the only thing that was *ever* wrong with camera shake was someone decided to use getRandom on something that had always been a visual effect anyway. Pretty sure WorldDx is in fact safe to modify.
nemo
parents:
5852
diff
changeset
|
1358 |
WorldDy:= WorldDy - amount + LongInt(random(1 + amount * 2)); |
74c621e12baa
I do believe the only thing that was *ever* wrong with camera shake was someone decided to use getRandom on something that had always been a visual effect anyway. Pretty sure WorldDx is in fact safe to modify.
nemo
parents:
5852
diff
changeset
|
1359 |
//CursorPoint.X:= CursorPoint.X - amount + LongInt(random(1 + amount * 2)); |
74c621e12baa
I do believe the only thing that was *ever* wrong with camera shake was someone decided to use getRandom on something that had always been a visual effect anyway. Pretty sure WorldDx is in fact safe to modify.
nemo
parents:
5852
diff
changeset
|
1360 |
//CursorPoint.Y:= CursorPoint.Y - amount + LongInt(random(1 + amount * 2)) |
3032 | 1361 |
end; |
1362 |
||
5521 | 1363 |
|
1364 |
procedure onFocusStateChanged; |
|
1365 |
begin |
|
1366 |
if (not cHasFocus) and (GameState <> gsConfirm) then |
|
5523 | 1367 |
ParseCommand('quit', true); |
5521 | 1368 |
end; |
1369 |
||
1370 |
||
3038 | 1371 |
procedure initModule; |
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2682
diff
changeset
|
1372 |
begin |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1373 |
fpsTexture:= nil; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1374 |
FollowGear:= nil; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1375 |
WindBarWidth:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1376 |
bShowAmmoMenu:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1377 |
bSelected:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1378 |
bShowFinger:= false; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1379 |
Frames:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1380 |
WorldDx:= -512; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1381 |
WorldDy:= -256; |
3697 | 1382 |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1383 |
FPS:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1384 |
CountTicks:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1385 |
SoundTimerTicks:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1386 |
prevPoint.X:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1387 |
prevPoint.Y:= 0; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
1388 |
missionTimer:= 0; |
3240 | 1389 |
missionTex:= nil; |
3463 | 1390 |
cOffsetY:= 0; |
4850 | 1391 |
stereoDepth:= 0; |
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2682
diff
changeset
|
1392 |
end; |
4 | 1393 |
|
3038 | 1394 |
procedure freeModule; |
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2713
diff
changeset
|
1395 |
begin |
4850 | 1396 |
stereoDepth:= stereoDepth; // avoid hint |
4901 | 1397 |
FreeTexture(fpsTexture); |
6380
1ff5ad1d771b
Remove a bunch of unnecessary nil checks. FreeTexture does its own nil check.
nemo
parents:
6302
diff
changeset
|
1398 |
fpsTexture:= nil; |
4901 | 1399 |
FreeTexture(timeTexture); |
6380
1ff5ad1d771b
Remove a bunch of unnecessary nil checks. FreeTexture does its own nil check.
nemo
parents:
6302
diff
changeset
|
1400 |
timeTexture:= nil; |
4901 | 1401 |
FreeTexture(missionTex); |
6380
1ff5ad1d771b
Remove a bunch of unnecessary nil checks. FreeTexture does its own nil check.
nemo
parents:
6302
diff
changeset
|
1402 |
missionTex:= nil |
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2713
diff
changeset
|
1403 |
end; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2713
diff
changeset
|
1404 |
|
4 | 1405 |
end. |