author | Wuzzy <Wuzzy2@mail.ru> |
Tue, 07 Jul 2020 00:11:20 +0200 | |
changeset 15696 | 50dc9d0191d1 |
parent 15695 | eeab5b90c082 |
child 15737 | 6832dab555ae |
permissions | -rw-r--r-- |
4 | 1 |
(* |
1066 | 2 |
* Hedgewars, a free turn based strategy game |
11046 | 3 |
* Copyright (c) 2004-2015 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 |
|
10108
c68cf030eded
update FSF address. note: two sdl include files (by Sam Lantinga) still have the old FSF address in their copyright - but I ain't gonna touch their copyright headers
sheepluva
parents:
10080
diff
changeset
|
16 |
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
4 | 17 |
*) |
18 |
||
2630 | 19 |
{$INCLUDE "options.inc"} |
20 |
||
4 | 21 |
unit uWorld; |
22 |
interface |
|
6622 | 23 |
uses SDLh, uGears, uConsts, uFloat, uRandom, uTypes, uRenderUtils; |
3697 | 24 |
|
3038 | 25 |
procedure initModule; |
26 |
procedure freeModule; |
|
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2713
diff
changeset
|
27 |
|
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2713
diff
changeset
|
28 |
procedure InitWorld; |
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
|
29 |
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
|
30 |
|
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2713
diff
changeset
|
31 |
procedure DrawWorld(Lag: LongInt); |
3692 | 32 |
procedure DrawWorldStereo(Lag: LongInt; RM: TRenderMode); |
2905 | 33 |
procedure ShowMission(caption, subcaption, text: ansistring; icon, time : LongInt); |
13461
854caa3c9212
Lua API: Add parameter forceDisplay to ShowMission to prevent manual hiding
Wuzzy <Wuzzy2@mail.ru>
parents:
13459
diff
changeset
|
34 |
procedure ShowMission(caption, subcaption, text: ansistring; icon, time : LongInt; forceDisplay : boolean); |
2786 | 35 |
procedure HideMission; |
13370
e202d58236b1
Lua API: Add 5th parameter showExtra to SetAmmoTexts to hide extra text
Wuzzy <Wuzzy2@mail.ru>
parents:
13174
diff
changeset
|
36 |
procedure SetAmmoTexts(ammoType: TAmmoType; name: ansistring; caption: ansistring; description: ansistring; autoLabels: boolean); |
6011
519f8a58c021
Fix a bunch of warnings (also improves speed a bit in 32 bit code)
unC0Rr
parents:
5862
diff
changeset
|
37 |
procedure ShakeCamera(amount: LongInt); |
5682
06d5f561f772
some camera adjustments (should also fix cam flickering on lowerst res)
sheepluva
parents:
5675
diff
changeset
|
38 |
procedure InitCameraBorders; |
6682 | 39 |
procedure InitTouchInterface; |
7023 | 40 |
procedure SetUtilityWidgetState(ammoType: TAmmoType); |
6688 | 41 |
procedure animateWidget(widget: POnScreenWidget; fade, showWidget: boolean); |
3638
33ee433749ba
touch overlay reworked, improvements to zoom and confirmation
koda
parents:
3629
diff
changeset
|
42 |
procedure MoveCamera; |
5521 | 43 |
procedure onFocusStateChanged; |
10392 | 44 |
procedure updateCursorVisibility; |
14541 | 45 |
procedure updateTouchWidgets(ammoType: TAmmoType); |
4 | 46 |
|
47 |
implementation |
|
4359 | 48 |
uses |
7721 | 49 |
uStore |
50 |
, uMisc |
|
51 |
, uIO |
|
52 |
, uLocale |
|
53 |
, uSound |
|
54 |
, uAmmos |
|
55 |
, uVisualGears |
|
56 |
, uChat |
|
57 |
, uLandTexture |
|
58 |
, uVariables |
|
59 |
, uUtils |
|
60 |
, uTextures |
|
61 |
, uRender |
|
62 |
, uCaptions |
|
63 |
, uCursor |
|
64 |
, uCommands |
|
9720
453a1c29b7e4
Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents:
9693
diff
changeset
|
65 |
, uTeams |
11940
156f1866b8bd
Make SetAmmoTexts update ammo menu weapon name, too
Wuzzy <almikes@aol.com>
parents:
11939
diff
changeset
|
66 |
, uDebug |
14411
71359339a493
Ammo menu: Show number instead F1, etc. if slot keys differ from default or in Touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14409
diff
changeset
|
67 |
, uInputHandler |
9720
453a1c29b7e4
Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents:
9693
diff
changeset
|
68 |
{$IFDEF USE_VIDEO_RECORDING} |
7721 | 69 |
, uVideoRec |
9720
453a1c29b7e4
Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents:
9693
diff
changeset
|
70 |
{$ENDIF} |
4359 | 71 |
; |
4 | 72 |
|
10331 | 73 |
var AMShiftTargetX, AMShiftTargetY, AMShiftX, AMShiftY, SlotsNum: LongInt; |
6796
3e89dbdc7db9
You can now change AMAnimType to enable the animation through the x/y axis and alpha for example
Xeli
parents:
6795
diff
changeset
|
74 |
AMAnimStartTime, AMState : LongInt; |
3e89dbdc7db9
You can now change AMAnimType to enable the animation through the x/y axis and alpha for example
Xeli
parents:
6795
diff
changeset
|
75 |
AMAnimState: Single; |
2699
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2682
diff
changeset
|
76 |
tmpSurface: PSDL_Surface; |
249adefa9c1c
replace initialization/finalization statements with custom init functions
koda
parents:
2682
diff
changeset
|
77 |
fpsTexture: PTexture; |
2850
f6f8db825ce7
A little clock for convenience in finding things in demos
nemo
parents:
2839
diff
changeset
|
78 |
timeTexture: PTexture; |
2716
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2713
diff
changeset
|
79 |
FPS: Longword; |
b9ca1bfca24f
complete the replacement of init/free wrappers for every unit
koda
parents:
2713
diff
changeset
|
80 |
CountTicks: Longword; |
15149 | 81 |
prevPoint: TPoint; |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
82 |
amSel: TAmmoType = amNothing; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
83 |
missionTex: PTexture; |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
84 |
missionTimer: LongInt; |
7027 | 85 |
isFirstFrame: boolean; |
7028 | 86 |
AMAnimType: LongInt; |
7180 | 87 |
recTexture: PTexture; |
8145
6408c0ba4ba1
Move global variables to units that use them
Joe Doyle (Ginto8) <ginto8@gmail.com>
parents:
8138
diff
changeset
|
88 |
AmmoMenuTex : PTexture; |
6408c0ba4ba1
Move global variables to units that use them
Joe Doyle (Ginto8) <ginto8@gmail.com>
parents:
8138
diff
changeset
|
89 |
HorizontOffset: LongInt; |
6408c0ba4ba1
Move global variables to units that use them
Joe Doyle (Ginto8) <ginto8@gmail.com>
parents:
8138
diff
changeset
|
90 |
cOffsetY: LongInt; |
9557 | 91 |
WorldEnd, WorldFade : array[0..3] of HwColor4f; |
3692 | 92 |
|
4816
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
93 |
const cStereo_Sky = 0.0500; |
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
94 |
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
|
95 |
cStereo_MidDistance = 0.0175; |
4816
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
96 |
cStereo_Water_distant = 0.0125; |
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
97 |
cStereo_Land = 0.0075; |
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
98 |
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
|
99 |
cStereo_Outside = -0.0400; |
4 | 100 |
|
8145
6408c0ba4ba1
Move global variables to units that use them
Joe Doyle (Ginto8) <ginto8@gmail.com>
parents:
8138
diff
changeset
|
101 |
AMAnimDuration = 200; |
6408c0ba4ba1
Move global variables to units that use them
Joe Doyle (Ginto8) <ginto8@gmail.com>
parents:
8138
diff
changeset
|
102 |
AMHidden = 0;//AMState values |
6408c0ba4ba1
Move global variables to units that use them
Joe Doyle (Ginto8) <ginto8@gmail.com>
parents:
8138
diff
changeset
|
103 |
AMShowingUp = 1; |
6408c0ba4ba1
Move global variables to units that use them
Joe Doyle (Ginto8) <ginto8@gmail.com>
parents:
8138
diff
changeset
|
104 |
AMShowing = 2; |
6408c0ba4ba1
Move global variables to units that use them
Joe Doyle (Ginto8) <ginto8@gmail.com>
parents:
8138
diff
changeset
|
105 |
AMHiding = 3; |
6408c0ba4ba1
Move global variables to units that use them
Joe Doyle (Ginto8) <ginto8@gmail.com>
parents:
8138
diff
changeset
|
106 |
|
6408c0ba4ba1
Move global variables to units that use them
Joe Doyle (Ginto8) <ginto8@gmail.com>
parents:
8138
diff
changeset
|
107 |
AMTypeMaskX = $00000001; |
6408c0ba4ba1
Move global variables to units that use them
Joe Doyle (Ginto8) <ginto8@gmail.com>
parents:
8138
diff
changeset
|
108 |
AMTypeMaskY = $00000002; |
6408c0ba4ba1
Move global variables to units that use them
Joe Doyle (Ginto8) <ginto8@gmail.com>
parents:
8138
diff
changeset
|
109 |
AMTypeMaskAlpha = $00000004; |
6408c0ba4ba1
Move global variables to units that use them
Joe Doyle (Ginto8) <ginto8@gmail.com>
parents:
8138
diff
changeset
|
110 |
|
6408c0ba4ba1
Move global variables to units that use them
Joe Doyle (Ginto8) <ginto8@gmail.com>
parents:
8138
diff
changeset
|
111 |
{$IFDEF MOBILE} |
6408c0ba4ba1
Move global variables to units that use them
Joe Doyle (Ginto8) <ginto8@gmail.com>
parents:
8138
diff
changeset
|
112 |
AMSlotSize = 48; |
6408c0ba4ba1
Move global variables to units that use them
Joe Doyle (Ginto8) <ginto8@gmail.com>
parents:
8138
diff
changeset
|
113 |
{$ELSE} |
6408c0ba4ba1
Move global variables to units that use them
Joe Doyle (Ginto8) <ginto8@gmail.com>
parents:
8138
diff
changeset
|
114 |
AMSlotSize = 32; |
6408c0ba4ba1
Move global variables to units that use them
Joe Doyle (Ginto8) <ginto8@gmail.com>
parents:
8138
diff
changeset
|
115 |
{$ENDIF} |
6408c0ba4ba1
Move global variables to units that use them
Joe Doyle (Ginto8) <ginto8@gmail.com>
parents:
8138
diff
changeset
|
116 |
AMSlotPadding = (AMSlotSize - 32) shr 1; |
6408c0ba4ba1
Move global variables to units that use them
Joe Doyle (Ginto8) <ginto8@gmail.com>
parents:
8138
diff
changeset
|
117 |
|
15046
0730c68fdf97
Backed out changeset 76003912e31d (whoops)
Wuzzy <Wuzzy2@mail.ru>
parents:
15044
diff
changeset
|
118 |
{$IFDEF USE_LANDSCAPE_AMMOMENU} |
0730c68fdf97
Backed out changeset 76003912e31d (whoops)
Wuzzy <Wuzzy2@mail.ru>
parents:
15044
diff
changeset
|
119 |
amNumOffsetX = 0; |
0730c68fdf97
Backed out changeset 76003912e31d (whoops)
Wuzzy <Wuzzy2@mail.ru>
parents:
15044
diff
changeset
|
120 |
{$IFDEF USE_AM_NUMCOLUMN} |
0730c68fdf97
Backed out changeset 76003912e31d (whoops)
Wuzzy <Wuzzy2@mail.ru>
parents:
15044
diff
changeset
|
121 |
amNumOffsetY = AMSlotSize; |
0730c68fdf97
Backed out changeset 76003912e31d (whoops)
Wuzzy <Wuzzy2@mail.ru>
parents:
15044
diff
changeset
|
122 |
{$ELSE} |
0730c68fdf97
Backed out changeset 76003912e31d (whoops)
Wuzzy <Wuzzy2@mail.ru>
parents:
15044
diff
changeset
|
123 |
amNumOffsetY = 0; |
0730c68fdf97
Backed out changeset 76003912e31d (whoops)
Wuzzy <Wuzzy2@mail.ru>
parents:
15044
diff
changeset
|
124 |
{$ENDIF} |
0730c68fdf97
Backed out changeset 76003912e31d (whoops)
Wuzzy <Wuzzy2@mail.ru>
parents:
15044
diff
changeset
|
125 |
{$ELSE} |
0730c68fdf97
Backed out changeset 76003912e31d (whoops)
Wuzzy <Wuzzy2@mail.ru>
parents:
15044
diff
changeset
|
126 |
amNumOffsetY = 0; |
0730c68fdf97
Backed out changeset 76003912e31d (whoops)
Wuzzy <Wuzzy2@mail.ru>
parents:
15044
diff
changeset
|
127 |
{$IFDEF USE_AM_NUMCOLUMN} |
0730c68fdf97
Backed out changeset 76003912e31d (whoops)
Wuzzy <Wuzzy2@mail.ru>
parents:
15044
diff
changeset
|
128 |
amNumOffsetX = AMSlotSize; |
0730c68fdf97
Backed out changeset 76003912e31d (whoops)
Wuzzy <Wuzzy2@mail.ru>
parents:
15044
diff
changeset
|
129 |
{$ELSE} |
0730c68fdf97
Backed out changeset 76003912e31d (whoops)
Wuzzy <Wuzzy2@mail.ru>
parents:
15044
diff
changeset
|
130 |
amNumOffsetX = 0; |
0730c68fdf97
Backed out changeset 76003912e31d (whoops)
Wuzzy <Wuzzy2@mail.ru>
parents:
15044
diff
changeset
|
131 |
{$ENDIF} |
0730c68fdf97
Backed out changeset 76003912e31d (whoops)
Wuzzy <Wuzzy2@mail.ru>
parents:
15044
diff
changeset
|
132 |
{$ENDIF} |
0730c68fdf97
Backed out changeset 76003912e31d (whoops)
Wuzzy <Wuzzy2@mail.ru>
parents:
15044
diff
changeset
|
133 |
|
8145
6408c0ba4ba1
Move global variables to units that use them
Joe Doyle (Ginto8) <ginto8@gmail.com>
parents:
8138
diff
changeset
|
134 |
cSendCursorPosTime = 50; |
6408c0ba4ba1
Move global variables to units that use them
Joe Doyle (Ginto8) <ginto8@gmail.com>
parents:
8138
diff
changeset
|
135 |
cCursorEdgesDist = 100; |
6408c0ba4ba1
Move global variables to units that use them
Joe Doyle (Ginto8) <ginto8@gmail.com>
parents:
8138
diff
changeset
|
136 |
|
6492 | 137 |
// helper functions to create the goal/game mode string |
138 |
function AddGoal(s: ansistring; gf: longword; si: TGoalStrId; i: LongInt): ansistring; |
|
139 |
var t: ansistring; |
|
140 |
begin |
|
141 |
if (GameFlags and gf) <> 0 then |
|
142 |
begin |
|
143 |
t:= inttostr(i); |
|
7069 | 144 |
s:= s + FormatA(trgoal[si], t) + '|' |
6492 | 145 |
end; |
146 |
AddGoal:= s; |
|
147 |
end; |
|
148 |
||
149 |
function AddGoal(s: ansistring; gf: longword; si: TGoalStrId): ansistring; |
|
150 |
begin |
|
151 |
if (GameFlags and gf) <> 0 then |
|
152 |
s:= s + trgoal[si] + '|'; |
|
153 |
AddGoal:= s; |
|
154 |
end; |
|
155 |
||
4 | 156 |
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
|
157 |
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
|
158 |
cp: PClan; |
2863 | 159 |
g: ansistring; |
4 | 160 |
begin |
3764 | 161 |
missionTimer:= 0; |
2786 | 162 |
|
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
|
163 |
if (GameFlags and gfRandomOrder) <> 0 then // shuffle them up a bit |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
164 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
165 |
for i:= 0 to ClansCount * 4 do |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
166 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
167 |
t:= GetRandom(ClansCount); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
168 |
if t <> 0 then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
169 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
170 |
cp:= ClansArray[0]; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
171 |
ClansArray[0]:= ClansArray[t]; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
172 |
ClansArray[t]:= cp; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
173 |
ClansArray[t]^.ClanIndex:= t; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
174 |
ClansArray[0]^.ClanIndex:= 0; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
175 |
end; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
176 |
end; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
177 |
CurrentTeam:= ClansArray[0]^.Teams[0]; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
178 |
end; |
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
|
179 |
|
14766
cbdfc5b1d5b8
Don't show hog health in gfInvulnerable mode
Wuzzy <Wuzzy2@mail.ru>
parents:
14744
diff
changeset
|
180 |
if (GameFlags and gfInvulnerable) <> 0 then |
cbdfc5b1d5b8
Don't show hog health in gfInvulnerable mode
Wuzzy <Wuzzy2@mail.ru>
parents:
14744
diff
changeset
|
181 |
cTagsMask:= cTagsMask and (not htHealth); |
cbdfc5b1d5b8
Don't show hog health in gfInvulnerable mode
Wuzzy <Wuzzy2@mail.ru>
parents:
14744
diff
changeset
|
182 |
|
2908 | 183 |
// if special game flags/settings are changed, add them to the game mode notice window and then show it |
2863 | 184 |
g:= ''; // no text/things to note yet |
2908 | 185 |
|
4883
7cddc9201a1d
added dummy for tardis and ugly icons for tardis and structure
Henek
parents:
4850
diff
changeset
|
186 |
// add custom goals from lua script if there are any |
12787
a6f51ac9a3f2
Fix bad LuaGoals comparison for pas2c builds
Wuzzy <Wuzzy2@mail.ru>
parents:
12719
diff
changeset
|
187 |
if LuaGoals <> ansistring('') then |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
188 |
g:= LuaGoals + '|'; |
4883
7cddc9201a1d
added dummy for tardis and ugly icons for tardis and structure
Henek
parents:
4850
diff
changeset
|
189 |
|
12072
10aad1cafc10
Game mode messages: New messages for PlaceHog+King; All messages get a colon to get highlighted; Reorder messages more logically
Wuzzy <almikes@aol.com>
parents:
11940
diff
changeset
|
190 |
// check different game flags |
2958 | 191 |
g:= AddGoal(g, gfKing, gidKing); // king? |
12072
10aad1cafc10
Game mode messages: New messages for PlaceHog+King; All messages get a colon to get highlighted; Reorder messages more logically
Wuzzy <almikes@aol.com>
parents:
11940
diff
changeset
|
192 |
if ((GameFlags and gfKing) <> 0) and ((GameFlags and gfPlaceHog) = 0) then |
10aad1cafc10
Game mode messages: New messages for PlaceHog+King; All messages get a colon to get highlighted; Reorder messages more logically
Wuzzy <almikes@aol.com>
parents:
11940
diff
changeset
|
193 |
g:= AddGoal(g, gfAny, gidPlaceKing); |
15070
57f7d89067ef
Use crown icon in mission panel for King Mode
Wuzzy <Wuzzy2@mail.ru>
parents:
15052
diff
changeset
|
194 |
g:= AddGoal(g, gfPlaceHog, gidPlaceHog); // placement? |
5022
d2a2f6c9b236
some final work and buggfix for Tag Team, it is now playable
Henek
parents:
4976
diff
changeset
|
195 |
g:= AddGoal(g, gfTagTeam, gidTagTeam); // tag team mode? |
12072
10aad1cafc10
Game mode messages: New messages for PlaceHog+King; All messages get a colon to get highlighted; Reorder messages more logically
Wuzzy <almikes@aol.com>
parents:
11940
diff
changeset
|
196 |
g:= AddGoal(g, gfSharedAmmo, gidSharedAmmo); // shared ammo? |
10aad1cafc10
Game mode messages: New messages for PlaceHog+King; All messages get a colon to get highlighted; Reorder messages more logically
Wuzzy <almikes@aol.com>
parents:
11940
diff
changeset
|
197 |
g:= AddGoal(g, gfPerHogAmmo, gidPerHogAmmo); |
12257
b46b4ec17f8c
Add back "more wind" modifier into mission panel. Fixes regression in 10aad1cafc10
Wuzzy <almikes@aol.com>
parents:
12210
diff
changeset
|
198 |
g:= AddGoal(g, gfMoreWind, gidMoreWind); |
2958 | 199 |
g:= AddGoal(g, gfLowGravity, gidLowGravity); // low gravity? |
12072
10aad1cafc10
Game mode messages: New messages for PlaceHog+King; All messages get a colon to get highlighted; Reorder messages more logically
Wuzzy <almikes@aol.com>
parents:
11940
diff
changeset
|
200 |
g:= AddGoal(g, gfSolidLand, gidSolidLand); // solid land? |
2958 | 201 |
g:= AddGoal(g, gfArtillery, gidArtillery); // artillery? |
4132 | 202 |
g:= AddGoal(g, gfInfAttack, gidInfAttack); |
203 |
g:= AddGoal(g, gfResetWeps, gidResetWeps); |
|
12072
10aad1cafc10
Game mode messages: New messages for PlaceHog+King; All messages get a colon to get highlighted; Reorder messages more logically
Wuzzy <almikes@aol.com>
parents:
11940
diff
changeset
|
204 |
g:= AddGoal(g, gfResetHealth, gidResetHealth); |
10aad1cafc10
Game mode messages: New messages for PlaceHog+King; All messages get a colon to get highlighted; Reorder messages more logically
Wuzzy <almikes@aol.com>
parents:
11940
diff
changeset
|
205 |
g:= AddGoal(g, gfKarma, gidKarma); // karma? |
10aad1cafc10
Game mode messages: New messages for PlaceHog+King; All messages get a colon to get highlighted; Reorder messages more logically
Wuzzy <almikes@aol.com>
parents:
11940
diff
changeset
|
206 |
g:= AddGoal(g, gfVampiric, gidVampiric); // vampirism? |
10aad1cafc10
Game mode messages: New messages for PlaceHog+King; All messages get a colon to get highlighted; Reorder messages more logically
Wuzzy <almikes@aol.com>
parents:
11940
diff
changeset
|
207 |
g:= AddGoal(g, gfInvulnerable, gidInvulnerable); // invulnerability? |
10aad1cafc10
Game mode messages: New messages for PlaceHog+King; All messages get a colon to get highlighted; Reorder messages more logically
Wuzzy <almikes@aol.com>
parents:
11940
diff
changeset
|
208 |
g:= AddGoal(g, gfAISurvival, gidAISurvival); |
2958 | 209 |
|
2908 | 210 |
// modified damage modificator? |
211 |
if cDamagePercent <> 100 then |
|
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
212 |
g:= AddGoal(g, gfAny, gidDamageModifier, cDamagePercent); |
2908 | 213 |
|
3107 | 214 |
// fade in |
215 |
ScreenFade:= sfFromBlack; |
|
216 |
ScreenFadeValue:= sfMax; |
|
217 |
ScreenFadeSpeed:= 1; |
|
218 |
||
2908 | 219 |
// modified mine timers? |
4482 | 220 |
if cMinesTime <> 3000 then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
221 |
begin |
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
222 |
if cMinesTime = 0 then |
4003
ca0600ab38bf
disable gfMines and update variable names (landadds -> minesnum, cLandAdditions -> cLandMines)
koda
parents:
3976
diff
changeset
|
223 |
g:= AddGoal(g, gfAny, gidNoMineTimer) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
224 |
else if cMinesTime < 0 then |
4003
ca0600ab38bf
disable gfMines and update variable names (landadds -> minesnum, cLandAdditions -> cLandMines)
koda
parents:
3976
diff
changeset
|
225 |
g:= AddGoal(g, gfAny, gidRandomMineTimer) |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
226 |
else |
4482 | 227 |
g:= AddGoal(g, gfAny, gidMineTimer, cMinesTime div 1000); |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
228 |
end; |
2908 | 229 |
|
2863 | 230 |
// if the string has been set, show it for (default timeframe) seconds |
10120 | 231 |
if length(g) > 0 then |
15070
57f7d89067ef
Use crown icon in mission panel for King Mode
Wuzzy <Wuzzy2@mail.ru>
parents:
15052
diff
changeset
|
232 |
// choose icon |
57f7d89067ef
Use crown icon in mission panel for King Mode
Wuzzy <Wuzzy2@mail.ru>
parents:
15052
diff
changeset
|
233 |
if ((GameFlags and gfKing) <> 0) then |
57f7d89067ef
Use crown icon in mission panel for King Mode
Wuzzy <Wuzzy2@mail.ru>
parents:
15052
diff
changeset
|
234 |
// crown icon for King Mode |
57f7d89067ef
Use crown icon in mission panel for King Mode
Wuzzy <Wuzzy2@mail.ru>
parents:
15052
diff
changeset
|
235 |
ShowMission(trgoal[gidCaption], trgoal[gidSubCaption], g, 0, 0) |
57f7d89067ef
Use crown icon in mission panel for King Mode
Wuzzy <Wuzzy2@mail.ru>
parents:
15052
diff
changeset
|
236 |
else |
57f7d89067ef
Use crown icon in mission panel for King Mode
Wuzzy <Wuzzy2@mail.ru>
parents:
15052
diff
changeset
|
237 |
// target icon for anything else |
57f7d89067ef
Use crown icon in mission panel for King Mode
Wuzzy <Wuzzy2@mail.ru>
parents:
15052
diff
changeset
|
238 |
ShowMission(trgoal[gidCaption], trgoal[gidSubCaption], g, 1, 0); |
2863 | 239 |
|
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
|
240 |
cWaveHeight:= 32; |
2292
87af4ad0ec98
New waves rendering procedure based on using texture coodrinates > 1.0
unc0rr
parents:
2290
diff
changeset
|
241 |
|
5682
06d5f561f772
some camera adjustments (should also fix cam flickering on lowerst res)
sheepluva
parents:
5675
diff
changeset
|
242 |
InitCameraBorders(); |
5191
c7000a6b397b
- Implement a thin wrapper over real cursor, which eliminates need in SDL_WarpMouse outside game window
unc0rr
parents:
5149
diff
changeset
|
243 |
uCursor.init(); |
2197 | 244 |
prevPoint.X:= 0; |
74 | 245 |
prevPoint.Y:= cScreenHeight div 2; |
15149 | 246 |
WorldDx:= -(LongInt(leftX + (playWidth div 2))); |
6609 | 247 |
WorldDy:= -(LAND_HEIGHT - (playHeight div 2)) + (cScreenHeight div 2); |
248 |
||
249 |
//aligns it to the bottom of the screen, minus the border |
|
250 |
SkyOffset:= 0; |
|
251 |
HorizontOffset:= 0; |
|
252 |
||
6682 | 253 |
InitTouchInterface(); |
6796
3e89dbdc7db9
You can now change AMAnimType to enable the animation through the x/y axis and alpha for example
Xeli
parents:
6795
diff
changeset
|
254 |
AMAnimType:= AMTypeMaskX or AMTypeMaskAlpha; |
6682 | 255 |
end; |
256 |
||
257 |
procedure InitCameraBorders; |
|
258 |
begin |
|
259 |
cGearScrEdgesDist:= min(2 * cScreenHeight div 5, 2 * cScreenWidth div 5); |
|
260 |
end; |
|
261 |
||
262 |
procedure InitTouchInterface; |
|
263 |
begin |
|
6676
21cf35a570a7
add keywords for landscape ammomenu and touch interface
koda
parents:
6652
diff
changeset
|
264 |
{$IFDEF USE_TOUCH_INTERFACE} |
7167
0b3b306f129a
Android: added a callback to java to determine dpi/dip how much we should scale the ui
Xeli
parents:
7086
diff
changeset
|
265 |
|
6637
b4a3310f2974
show buttons on the screen, similar to the iOS overlay
Xeli
parents:
6631
diff
changeset
|
266 |
//positioning of the buttons |
9377 | 267 |
buttonScale:= 1 / cDefaultZoomLevel; |
6683
75a1d84ac606
small refactoring to touch screen buttons, use a record to store values, added 'offset' fields to adjust active button area
koda
parents:
6682
diff
changeset
|
268 |
|
6714
f2f93017132c
moved the firebutton, added the AMWidget button and removed the forwardjump widget(it's longpress on backjump now)
Xeli
parents:
6710
diff
changeset
|
269 |
|
f2f93017132c
moved the firebutton, added the AMWidget button and removed the forwardjump widget(it's longpress on backjump now)
Xeli
parents:
6710
diff
changeset
|
270 |
with JumpWidget do |
6695
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
271 |
begin |
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
272 |
show:= true; |
6714
f2f93017132c
moved the firebutton, added the AMWidget button and removed the forwardjump widget(it's longpress on backjump now)
Xeli
parents:
6710
diff
changeset
|
273 |
sprite:= sprJumpWidget; |
6695
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
274 |
frame.w:= Round(spritesData[sprite].Texture^.w * buttonScale); |
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
275 |
frame.h:= Round(spritesData[sprite].Texture^.h * buttonScale); |
6714
f2f93017132c
moved the firebutton, added the AMWidget button and removed the forwardjump widget(it's longpress on backjump now)
Xeli
parents:
6710
diff
changeset
|
276 |
frame.x:= (cScreenWidth shr 1) - Round(frame.w * 1.2); |
f2f93017132c
moved the firebutton, added the AMWidget button and removed the forwardjump widget(it's longpress on backjump now)
Xeli
parents:
6710
diff
changeset
|
277 |
frame.y:= cScreenHeight - frame.h * 2; |
6710
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
278 |
active.x:= frame.x; |
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
279 |
active.y:= frame.y; |
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
280 |
active.w:= frame.w; |
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
281 |
active.h:= frame.h; |
6695
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
282 |
end; |
6637
b4a3310f2974
show buttons on the screen, similar to the iOS overlay
Xeli
parents:
6631
diff
changeset
|
283 |
|
6714
f2f93017132c
moved the firebutton, added the AMWidget button and removed the forwardjump widget(it's longpress on backjump now)
Xeli
parents:
6710
diff
changeset
|
284 |
with AMWidget do |
6695
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
285 |
begin |
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
286 |
show:= true; |
6714
f2f93017132c
moved the firebutton, added the AMWidget button and removed the forwardjump widget(it's longpress on backjump now)
Xeli
parents:
6710
diff
changeset
|
287 |
sprite:= sprAMWidget; |
6695
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
288 |
frame.w:= Round(spritesData[sprite].Texture^.w * buttonScale); |
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
289 |
frame.h:= Round(spritesData[sprite].Texture^.h * buttonScale); |
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
290 |
frame.x:= (cScreenWidth shr 1) - frame.w * 2; |
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
291 |
frame.y:= cScreenHeight - Round(frame.h * 1.2); |
6710
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
292 |
active.x:= frame.x; |
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
293 |
active.y:= frame.y; |
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
294 |
active.w:= frame.w; |
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
295 |
active.h:= frame.h; |
6695
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
296 |
end; |
6637
b4a3310f2974
show buttons on the screen, similar to the iOS overlay
Xeli
parents:
6631
diff
changeset
|
297 |
|
6688 | 298 |
with arrowLeft do |
299 |
begin |
|
300 |
show:= true; |
|
301 |
sprite:= sprArrowLeft; |
|
6695
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
302 |
frame.w:= Round(spritesData[sprite].Texture^.w * buttonScale); |
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
303 |
frame.h:= Round(spritesData[sprite].Texture^.h * buttonScale); |
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
304 |
frame.x:= -(cScreenWidth shr 1) + Round(frame.w * 0.25); |
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
305 |
frame.y:= cScreenHeight - Round(frame.h * 1.5); |
6710
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
306 |
active.x:= frame.x; |
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
307 |
active.y:= frame.y; |
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
308 |
active.w:= frame.w; |
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
309 |
active.h:= frame.h; |
6688 | 310 |
end; |
6695
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
311 |
|
6688 | 312 |
with arrowRight do |
313 |
begin |
|
314 |
show:= true; |
|
315 |
sprite:= sprArrowRight; |
|
6695
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
316 |
frame.w:= Round(spritesData[sprite].Texture^.w * buttonScale); |
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
317 |
frame.h:= Round(spritesData[sprite].Texture^.h * buttonScale); |
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
318 |
frame.x:= -(cScreenWidth shr 1) + Round(frame.w * 1.5); |
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
319 |
frame.y:= cScreenHeight - Round(frame.h * 1.5); |
6710
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
320 |
active.x:= frame.x; |
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
321 |
active.y:= frame.y; |
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
322 |
active.w:= frame.w; |
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
323 |
active.h:= frame.h; |
6688 | 324 |
end; |
6637
b4a3310f2974
show buttons on the screen, similar to the iOS overlay
Xeli
parents:
6631
diff
changeset
|
325 |
|
6714
f2f93017132c
moved the firebutton, added the AMWidget button and removed the forwardjump widget(it's longpress on backjump now)
Xeli
parents:
6710
diff
changeset
|
326 |
with firebutton do |
f2f93017132c
moved the firebutton, added the AMWidget button and removed the forwardjump widget(it's longpress on backjump now)
Xeli
parents:
6710
diff
changeset
|
327 |
begin |
f2f93017132c
moved the firebutton, added the AMWidget button and removed the forwardjump widget(it's longpress on backjump now)
Xeli
parents:
6710
diff
changeset
|
328 |
show:= true; |
f2f93017132c
moved the firebutton, added the AMWidget button and removed the forwardjump widget(it's longpress on backjump now)
Xeli
parents:
6710
diff
changeset
|
329 |
sprite:= sprFireButton; |
f2f93017132c
moved the firebutton, added the AMWidget button and removed the forwardjump widget(it's longpress on backjump now)
Xeli
parents:
6710
diff
changeset
|
330 |
frame.w:= Round(spritesData[sprite].Texture^.w * buttonScale); |
f2f93017132c
moved the firebutton, added the AMWidget button and removed the forwardjump widget(it's longpress on backjump now)
Xeli
parents:
6710
diff
changeset
|
331 |
frame.h:= Round(spritesData[sprite].Texture^.h * buttonScale); |
f2f93017132c
moved the firebutton, added the AMWidget button and removed the forwardjump widget(it's longpress on backjump now)
Xeli
parents:
6710
diff
changeset
|
332 |
frame.x:= arrowRight.frame.x + arrowRight.frame.w; |
f2f93017132c
moved the firebutton, added the AMWidget button and removed the forwardjump widget(it's longpress on backjump now)
Xeli
parents:
6710
diff
changeset
|
333 |
frame.y:= arrowRight.frame.y + (arrowRight.frame.w shr 1) - (frame.w shr 1); |
f2f93017132c
moved the firebutton, added the AMWidget button and removed the forwardjump widget(it's longpress on backjump now)
Xeli
parents:
6710
diff
changeset
|
334 |
active.x:= frame.x; |
f2f93017132c
moved the firebutton, added the AMWidget button and removed the forwardjump widget(it's longpress on backjump now)
Xeli
parents:
6710
diff
changeset
|
335 |
active.y:= frame.y; |
f2f93017132c
moved the firebutton, added the AMWidget button and removed the forwardjump widget(it's longpress on backjump now)
Xeli
parents:
6710
diff
changeset
|
336 |
active.w:= frame.w; |
f2f93017132c
moved the firebutton, added the AMWidget button and removed the forwardjump widget(it's longpress on backjump now)
Xeli
parents:
6710
diff
changeset
|
337 |
active.h:= frame.h; |
f2f93017132c
moved the firebutton, added the AMWidget button and removed the forwardjump widget(it's longpress on backjump now)
Xeli
parents:
6710
diff
changeset
|
338 |
end; |
f2f93017132c
moved the firebutton, added the AMWidget button and removed the forwardjump widget(it's longpress on backjump now)
Xeli
parents:
6710
diff
changeset
|
339 |
|
6688 | 340 |
with arrowUp do |
341 |
begin |
|
342 |
show:= false; |
|
343 |
sprite:= sprArrowUp; |
|
6695
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
344 |
frame.w:= Round(spritesData[sprite].Texture^.w * buttonScale); |
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
345 |
frame.h:= Round(spritesData[sprite].Texture^.h * buttonScale); |
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
346 |
frame.x:= (cScreenWidth shr 1) - frame.w * 2; |
6798 | 347 |
frame.y:= jumpWidget.frame.y - Round(frame.h * 1.25); |
6710
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
348 |
active.x:= frame.x; |
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
349 |
active.y:= frame.y; |
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
350 |
active.w:= frame.w; |
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
351 |
active.h:= frame.h; |
6688 | 352 |
with moveAnim do |
353 |
begin |
|
6695
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
354 |
target.x:= frame.x; |
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
355 |
target.y:= frame.y; |
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
356 |
source.x:= frame.x - Round(frame.w * 0.75); |
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
357 |
source.y:= frame.y; |
6688 | 358 |
end; |
359 |
end; |
|
6637
b4a3310f2974
show buttons on the screen, similar to the iOS overlay
Xeli
parents:
6631
diff
changeset
|
360 |
|
6688 | 361 |
with arrowDown do |
362 |
begin |
|
363 |
show:= false; |
|
364 |
sprite:= sprArrowDown; |
|
6695
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
365 |
frame.w:= Round(spritesData[sprite].Texture^.w * buttonScale); |
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
366 |
frame.h:= Round(spritesData[sprite].Texture^.h * buttonScale); |
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
367 |
frame.x:= (cScreenWidth shr 1) - frame.w * 2; |
6798 | 368 |
frame.y:= jumpWidget.frame.y - Round(frame.h * 1.25); |
6710
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
369 |
active.x:= frame.x; |
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
370 |
active.y:= frame.y; |
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
371 |
active.w:= frame.w; |
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
372 |
active.h:= frame.h; |
6688 | 373 |
with moveAnim do |
374 |
begin |
|
6695
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
375 |
target.x:= frame.x; |
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
376 |
target.y:= frame.y; |
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
377 |
source.x:= frame.x + Round(frame.w * 0.75); |
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
378 |
source.y:= frame.y; |
6688 | 379 |
end; |
380 |
end; |
|
6685
ef706fccfb0a
moved other widgets under the USE_TOUCH_INTERFACE, added pause button (at least, graphically...)
koda
parents:
6683
diff
changeset
|
381 |
|
6695
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
382 |
with pauseButton do |
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
383 |
begin |
14303 | 384 |
show:= true; |
6695
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
385 |
sprite:= sprPauseButton; |
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
386 |
frame.w:= Round(spritesData[sprPauseButton].Texture^.w * buttonScale); |
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
387 |
frame.h:= Round(spritesData[sprPauseButton].Texture^.h * buttonScale); |
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
388 |
frame.x:= cScreenWidth div 2 - frame.w; |
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
389 |
frame.y:= 0; |
6710
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
390 |
active.x:= frame.x; |
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
391 |
active.y:= frame.y; |
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
392 |
active.w:= frame.w; |
42504695122d
fixed the active region on widgets when they are animated, added active.x:= in uWorld too
Xeli
parents:
6706
diff
changeset
|
393 |
active.h:= frame.h; |
6695
32de8965c62c
refactored a few types involved in the touch interface and corrected a few invisible mistakes
koda
parents:
6692
diff
changeset
|
394 |
end; |
6685
ef706fccfb0a
moved other widgets under the USE_TOUCH_INTERFACE, added pause button (at least, graphically...)
koda
parents:
6683
diff
changeset
|
395 |
|
6806
cdfb6c7099e5
first part of the utilitywidget (grenade timer/swap hogs) code
Xeli
parents:
6802
diff
changeset
|
396 |
with utilityWidget do |
cdfb6c7099e5
first part of the utilitywidget (grenade timer/swap hogs) code
Xeli
parents:
6802
diff
changeset
|
397 |
begin |
cdfb6c7099e5
first part of the utilitywidget (grenade timer/swap hogs) code
Xeli
parents:
6802
diff
changeset
|
398 |
show:= false; |
cdfb6c7099e5
first part of the utilitywidget (grenade timer/swap hogs) code
Xeli
parents:
6802
diff
changeset
|
399 |
sprite:= sprTimerButton; |
cdfb6c7099e5
first part of the utilitywidget (grenade timer/swap hogs) code
Xeli
parents:
6802
diff
changeset
|
400 |
frame.w:= Round(spritesData[sprite].Texture^.w * buttonScale); |
cdfb6c7099e5
first part of the utilitywidget (grenade timer/swap hogs) code
Xeli
parents:
6802
diff
changeset
|
401 |
frame.h:= Round(spritesData[sprite].Texture^.h * buttonScale); |
cdfb6c7099e5
first part of the utilitywidget (grenade timer/swap hogs) code
Xeli
parents:
6802
diff
changeset
|
402 |
frame.x:= arrowLeft.frame.x; |
cdfb6c7099e5
first part of the utilitywidget (grenade timer/swap hogs) code
Xeli
parents:
6802
diff
changeset
|
403 |
frame.y:= arrowLeft.frame.y - Round(frame.h * 1.25); |
cdfb6c7099e5
first part of the utilitywidget (grenade timer/swap hogs) code
Xeli
parents:
6802
diff
changeset
|
404 |
active.x:= frame.x; |
cdfb6c7099e5
first part of the utilitywidget (grenade timer/swap hogs) code
Xeli
parents:
6802
diff
changeset
|
405 |
active.y:= frame.y; |
cdfb6c7099e5
first part of the utilitywidget (grenade timer/swap hogs) code
Xeli
parents:
6802
diff
changeset
|
406 |
active.w:= frame.w; |
cdfb6c7099e5
first part of the utilitywidget (grenade timer/swap hogs) code
Xeli
parents:
6802
diff
changeset
|
407 |
active.h:= frame.h; |
cdfb6c7099e5
first part of the utilitywidget (grenade timer/swap hogs) code
Xeli
parents:
6802
diff
changeset
|
408 |
with moveAnim do |
cdfb6c7099e5
first part of the utilitywidget (grenade timer/swap hogs) code
Xeli
parents:
6802
diff
changeset
|
409 |
begin |
cdfb6c7099e5
first part of the utilitywidget (grenade timer/swap hogs) code
Xeli
parents:
6802
diff
changeset
|
410 |
target.x:= frame.x; |
cdfb6c7099e5
first part of the utilitywidget (grenade timer/swap hogs) code
Xeli
parents:
6802
diff
changeset
|
411 |
target.y:= frame.y; |
cdfb6c7099e5
first part of the utilitywidget (grenade timer/swap hogs) code
Xeli
parents:
6802
diff
changeset
|
412 |
source.x:= frame.x; |
cdfb6c7099e5
first part of the utilitywidget (grenade timer/swap hogs) code
Xeli
parents:
6802
diff
changeset
|
413 |
source.y:= frame.y; |
cdfb6c7099e5
first part of the utilitywidget (grenade timer/swap hogs) code
Xeli
parents:
6802
diff
changeset
|
414 |
end; |
cdfb6c7099e5
first part of the utilitywidget (grenade timer/swap hogs) code
Xeli
parents:
6802
diff
changeset
|
415 |
end; |
14538
1dab5d92aca7
Add button to set bounciness in touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
416 |
|
1dab5d92aca7
Add button to set bounciness in touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
417 |
with utilityWidget2 do |
1dab5d92aca7
Add button to set bounciness in touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
418 |
begin |
1dab5d92aca7
Add button to set bounciness in touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
419 |
show:= false; |
1dab5d92aca7
Add button to set bounciness in touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
420 |
sprite:= sprBounceButton; |
1dab5d92aca7
Add button to set bounciness in touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
421 |
frame.w:= Round(spritesData[sprite].Texture^.w * buttonScale); |
1dab5d92aca7
Add button to set bounciness in touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
422 |
frame.h:= Round(spritesData[sprite].Texture^.h * buttonScale); |
1dab5d92aca7
Add button to set bounciness in touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
423 |
frame.x:= utilityWidget.frame.x + Round(frame.w * 1.25); |
1dab5d92aca7
Add button to set bounciness in touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
424 |
frame.y:= arrowLeft.frame.y - Round(frame.h * 1.25); |
1dab5d92aca7
Add button to set bounciness in touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
425 |
active.x:= frame.x; |
1dab5d92aca7
Add button to set bounciness in touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
426 |
active.y:= frame.y; |
1dab5d92aca7
Add button to set bounciness in touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
427 |
active.w:= frame.w; |
1dab5d92aca7
Add button to set bounciness in touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
428 |
active.h:= frame.h; |
1dab5d92aca7
Add button to set bounciness in touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
429 |
with moveAnim do |
1dab5d92aca7
Add button to set bounciness in touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
430 |
begin |
1dab5d92aca7
Add button to set bounciness in touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
431 |
target.x:= frame.x; |
1dab5d92aca7
Add button to set bounciness in touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
432 |
target.y:= frame.y; |
1dab5d92aca7
Add button to set bounciness in touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
433 |
source.x:= frame.x; |
1dab5d92aca7
Add button to set bounciness in touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
434 |
source.y:= frame.y; |
1dab5d92aca7
Add button to set bounciness in touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
435 |
end; |
1dab5d92aca7
Add button to set bounciness in touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
436 |
end; |
1dab5d92aca7
Add button to set bounciness in touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14419
diff
changeset
|
437 |
|
6637
b4a3310f2974
show buttons on the screen, similar to the iOS overlay
Xeli
parents:
6631
diff
changeset
|
438 |
{$ENDIF} |
161 | 439 |
end; |
440 |
||
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
|
441 |
// 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
|
442 |
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
|
443 |
begin |
10634
35d059bd0932
Use FreeAndNil across the board. Even if we are immediately assigning after, probably avoids accidental mistakes. Also free neglected owner tex on shutdown, and delete hog gears using the normal deletion procedure if for any reason they still exist (EndGame call?).
nemo
parents:
10628
diff
changeset
|
444 |
FreeAndNilTexture(fpsTexture); |
35d059bd0932
Use FreeAndNil across the board. Even if we are immediately assigning after, probably avoids accidental mistakes. Also free neglected owner tex on shutdown, and delete hog gears using the normal deletion procedure if for any reason they still exist (EndGame call?).
nemo
parents:
10628
diff
changeset
|
445 |
FreeAndNilTexture(timeTexture); |
35d059bd0932
Use FreeAndNil across the board. Even if we are immediately assigning after, probably avoids accidental mistakes. Also free neglected owner tex on shutdown, and delete hog gears using the normal deletion procedure if for any reason they still exist (EndGame call?).
nemo
parents:
10628
diff
changeset
|
446 |
FreeAndNilTexture(missionTex); |
35d059bd0932
Use FreeAndNil across the board. Even if we are immediately assigning after, probably avoids accidental mistakes. Also free neglected owner tex on shutdown, and delete hog gears using the normal deletion procedure if for any reason they still exist (EndGame call?).
nemo
parents:
10628
diff
changeset
|
447 |
FreeAndNilTexture(recTexture); |
35d059bd0932
Use FreeAndNil across the board. Even if we are immediately assigning after, probably avoids accidental mistakes. Also free neglected owner tex on shutdown, and delete hog gears using the normal deletion procedure if for any reason they still exist (EndGame call?).
nemo
parents:
10628
diff
changeset
|
448 |
FreeAndNilTexture(AmmoMenuTex); |
9983 | 449 |
AmmoMenuInvalidated:= true; |
6394
f0a9042e7387
yay, finally osx (and likely windows) fullscreen switch works like on linux! ALL textures had to be destroyed and recreated only after the new window got created. In other news, the new window must be cleaned with glClear to skip a first frame of garbage and AddProgress is only called the first time.
koda
parents:
6380
diff
changeset
|
450 |
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
|
451 |
|
6622 | 452 |
function GetAmmoMenuTexture(Ammo: PHHAmmo): PTexture; |
3434 | 453 |
const BORDERSIZE = 2; |
6622 | 454 |
var x, y, i, t, SlotsNumY, SlotsNumX, AMFrame: LongInt; |
455 |
STurns: LongInt; |
|
456 |
amSurface: PSDL_Surface; |
|
457 |
AMRect: TSDL_Rect; |
|
14411
71359339a493
Ammo menu: Show number instead F1, etc. if slot keys differ from default or in Touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14409
diff
changeset
|
458 |
{$IFDEF USE_AM_NUMCOLUMN} |
71359339a493
Ammo menu: Show number instead F1, etc. if slot keys differ from default or in Touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14409
diff
changeset
|
459 |
tmpsurf: PSDL_Surface; |
71359339a493
Ammo menu: Show number instead F1, etc. if slot keys differ from default or in Touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14409
diff
changeset
|
460 |
usesDefaultSlotKeys: boolean; |
71359339a493
Ammo menu: Show number instead F1, etc. if slot keys differ from default or in Touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14409
diff
changeset
|
461 |
{$ENDIF} |
161 | 462 |
begin |
10141 | 463 |
if cOnlyStats then exit(nil); |
10139 | 464 |
|
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
|
465 |
SlotsNum:= 0; |
6606
fb6163ff4ebf
changed the ammomenu to be landscape for MOBILE, also tweaked the positions a bit, needs testing on iOS
Xeli
parents:
6603
diff
changeset
|
466 |
for i:= 0 to cMaxSlotIndex do |
12719
637b1987570e
Fix first ammo row being invisible when there's only one weapon in the first row
Wuzzy <almikes@aol.com>
parents:
12708
diff
changeset
|
467 |
if (i <> cHiddenSlotIndex) and (Ammo^[i, 0].Count > 0) then |
6606
fb6163ff4ebf
changed the ammomenu to be landscape for MOBILE, also tweaked the positions a bit, needs testing on iOS
Xeli
parents:
6603
diff
changeset
|
468 |
inc(SlotsNum); |
6676
21cf35a570a7
add keywords for landscape ammomenu and touch interface
koda
parents:
6652
diff
changeset
|
469 |
{$IFDEF USE_LANDSCAPE_AMMOMENU} |
6622 | 470 |
SlotsNumX:= SlotsNum; |
471 |
SlotsNumY:= cMaxSlotAmmoIndex + 2; |
|
6899 | 472 |
{$IFDEF USE_AM_NUMCOLUMN} |
473 |
inc(SlotsNumY); |
|
474 |
{$ENDIF} |
|
6622 | 475 |
{$ELSE} |
476 |
SlotsNumX:= cMaxSlotAmmoIndex + 1; |
|
477 |
SlotsNumY:= SlotsNum + 1; |
|
6899 | 478 |
{$IFDEF USE_AM_NUMCOLUMN} |
479 |
inc(SlotsNumX); |
|
480 |
{$ENDIF} |
|
6622 | 481 |
{$ENDIF} |
6606
fb6163ff4ebf
changed the ammomenu to be landscape for MOBILE, also tweaked the positions a bit, needs testing on iOS
Xeli
parents:
6603
diff
changeset
|
482 |
|
6899 | 483 |
|
6631 | 484 |
AmmoRect.w:= (BORDERSIZE*2) + (SlotsNumX * AMSlotSize) + (SlotsNumX-1); |
485 |
AmmoRect.h:= (BORDERSIZE*2) + (SlotsNumY * AMSlotSize) + (SlotsNumY-1); |
|
486 |
amSurface := SDL_CreateRGBSurface(SDL_SWSURFACE, AmmoRect.w, AmmoRect.h, 32, RMask, GMask, BMask, AMask); |
|
8330 | 487 |
|
6622 | 488 |
AMRect.x:= BORDERSIZE; |
489 |
AMRect.y:= BORDERSIZE; |
|
6631 | 490 |
AMRect.w:= AmmoRect.w - (BORDERSIZE*2); |
491 |
AMRect.h:= AmmoRect.h - (BORDERSIZE*2); |
|
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
|
492 |
|
6622 | 493 |
SDL_FillRect(amSurface, @AMRect, SDL_MapRGB(amSurface^.format, 0,0,0)); |
8330 | 494 |
|
6650
56a0b7bf6c15
fixed the blackpixel in the ammomenu, x,y in GetAmmoMenuTexture now initialized correctly
Xeli
parents:
6648
diff
changeset
|
495 |
x:= AMRect.x; |
56a0b7bf6c15
fixed the blackpixel in the ammomenu, x,y in GetAmmoMenuTexture now initialized correctly
Xeli
parents:
6648
diff
changeset
|
496 |
y:= AMRect.y; |
14411
71359339a493
Ammo menu: Show number instead F1, etc. if slot keys differ from default or in Touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14409
diff
changeset
|
497 |
{$IFDEF USE_AM_NUMCOLUMN} |
71359339a493
Ammo menu: Show number instead F1, etc. if slot keys differ from default or in Touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14409
diff
changeset
|
498 |
usesDefaultSlotKeys:= CheckDefaultSlotKeys; |
71359339a493
Ammo menu: Show number instead F1, etc. if slot keys differ from default or in Touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14409
diff
changeset
|
499 |
{$ENDIF USE_AM_NUMCOLUMN} |
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
|
500 |
for i:= 0 to cMaxSlotIndex do |
12719
637b1987570e
Fix first ammo row being invisible when there's only one weapon in the first row
Wuzzy <almikes@aol.com>
parents:
12708
diff
changeset
|
501 |
if (i <> cHiddenSlotIndex) and (Ammo^[i, 0].Count > 0) then |
3434 | 502 |
begin |
6676
21cf35a570a7
add keywords for landscape ammomenu and touch interface
koda
parents:
6652
diff
changeset
|
503 |
{$IFDEF USE_LANDSCAPE_AMMOMENU} |
6650
56a0b7bf6c15
fixed the blackpixel in the ammomenu, x,y in GetAmmoMenuTexture now initialized correctly
Xeli
parents:
6648
diff
changeset
|
504 |
y:= AMRect.y; |
6622 | 505 |
{$ELSE} |
6650
56a0b7bf6c15
fixed the blackpixel in the ammomenu, x,y in GetAmmoMenuTexture now initialized correctly
Xeli
parents:
6648
diff
changeset
|
506 |
x:= AMRect.x; |
6622 | 507 |
{$ENDIF} |
6899 | 508 |
{$IFDEF USE_AM_NUMCOLUMN} |
14411
71359339a493
Ammo menu: Show number instead F1, etc. if slot keys differ from default or in Touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14409
diff
changeset
|
509 |
// Ammo slot number column |
71359339a493
Ammo menu: Show number instead F1, etc. if slot keys differ from default or in Touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14409
diff
changeset
|
510 |
if usesDefaultSlotKeys then |
71359339a493
Ammo menu: Show number instead F1, etc. if slot keys differ from default or in Touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14409
diff
changeset
|
511 |
// F1, F2, F3, F4, ... |
71359339a493
Ammo menu: Show number instead F1, etc. if slot keys differ from default or in Touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14409
diff
changeset
|
512 |
tmpsurf:= TTF_RenderUTF8_Blended(Fontz[fnt16].Handle, Str2PChar('F'+IntToStr(i+1)), cWhiteColorChannels) |
71359339a493
Ammo menu: Show number instead F1, etc. if slot keys differ from default or in Touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14409
diff
changeset
|
513 |
else |
71359339a493
Ammo menu: Show number instead F1, etc. if slot keys differ from default or in Touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14409
diff
changeset
|
514 |
// 1, 2, 3, 4, ... |
71359339a493
Ammo menu: Show number instead F1, etc. if slot keys differ from default or in Touch interface
Wuzzy <Wuzzy2@mail.ru>
parents:
14409
diff
changeset
|
515 |
tmpsurf:= TTF_RenderUTF8_Blended(Fontz[fnt16].Handle, Str2PChar(IntToStr(i+1)), cWhiteColorChannels); |
6899 | 516 |
copyToXY(tmpsurf, amSurface, |
517 |
x + AMSlotPadding + (AMSlotSize shr 1) - (tmpsurf^.w shr 1), |
|
518 |
y + AMSlotPadding + (AMSlotSize shr 1) - (tmpsurf^.h shr 1)); |
|
519 |
||
520 |
SDL_FreeSurface(tmpsurf); |
|
521 |
{$IFDEF USE_LANDSCAPE_AMMOMENU} |
|
522 |
y:= AMRect.y + AMSlotSize + 1; |
|
523 |
{$ELSE} |
|
524 |
x:= AMRect.x + AMSlotSize + 1; |
|
525 |
{$ENDIF} |
|
526 |
{$ENDIF} |
|
527 |
||
528 |
||
6606
fb6163ff4ebf
changed the ammomenu to be landscape for MOBILE, also tweaked the positions a bit, needs testing on iOS
Xeli
parents:
6603
diff
changeset
|
529 |
for t:=0 to cMaxSlotAmmoIndex do |
3434 | 530 |
begin |
6622 | 531 |
if (Ammo^[i, t].Count > 0) and (Ammo^[i, t].AmmoType <> amNothing) then |
3434 | 532 |
begin |
6622 | 533 |
STurns:= Ammoz[Ammo^[i, t].AmmoType].SkipTurns - CurrentTeam^.Clan^.TurnNumber; |
534 |
AMFrame:= LongInt(Ammo^[i,t].AmmoType) - 1; |
|
535 |
if STurns >= 0 then //weapon not usable yet, draw grayed out with turns remaining |
|
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
|
536 |
begin |
8330 | 537 |
DrawSpriteFrame2Surf(sprAMAmmosBW, amSurface, x + AMSlotPadding, |
6650
56a0b7bf6c15
fixed the blackpixel in the ammomenu, x,y in GetAmmoMenuTexture now initialized correctly
Xeli
parents:
6648
diff
changeset
|
538 |
y + AMSlotPadding, AMFrame); |
6622 | 539 |
if STurns < 100 then |
8330 | 540 |
DrawSpriteFrame2Surf(sprTurnsLeft, amSurface, |
541 |
x + AMSlotSize-16, |
|
7013 | 542 |
y + AMSlotSize + 1 - 16, STurns); |
6622 | 543 |
end |
544 |
else //draw colored version |
|
545 |
begin |
|
8330 | 546 |
DrawSpriteFrame2Surf(sprAMAmmos, amSurface, x + AMSlotPadding, |
6899 | 547 |
y + AMSlotPadding, AMFrame); |
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
|
548 |
end; |
6676
21cf35a570a7
add keywords for landscape ammomenu and touch interface
koda
parents:
6652
diff
changeset
|
549 |
{$IFDEF USE_LANDSCAPE_AMMOMENU} |
8330 | 550 |
inc(y, AMSlotSize + 1); //the plus one is for the border |
6622 | 551 |
{$ELSE} |
8330 | 552 |
inc(x, AMSlotSize + 1); |
6622 | 553 |
{$ENDIF} |
8330 | 554 |
end; |
555 |
end; |
|
6676
21cf35a570a7
add keywords for landscape ammomenu and touch interface
koda
parents:
6652
diff
changeset
|
556 |
{$IFDEF USE_LANDSCAPE_AMMOMENU} |
6622 | 557 |
inc(x, AMSlotSize + 1); |
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
|
558 |
{$ELSE} |
6622 | 559 |
inc(y, AMSlotSize + 1); |
560 |
{$ENDIF} |
|
561 |
end; |
|
562 |
||
563 |
for i:= 1 to SlotsNumX -1 do |
|
8330 | 564 |
DrawLine2Surf(amSurface, i * (AMSlotSize+1)+1, BORDERSIZE, i * (AMSlotSize+1)+1, AMRect.h + BORDERSIZE - AMSlotSize - 2,160,160,160); |
6622 | 565 |
for i:= 1 to SlotsNumY -1 do |
6652 | 566 |
DrawLine2Surf(amSurface, BORDERSIZE, i * (AMSlotSize+1)+1, AMRect.w + BORDERSIZE, i * (AMSlotSize+1)+1,160,160,160); |
6622 | 567 |
|
568 |
//draw outer border |
|
7013 | 569 |
DrawSpriteFrame2Surf(sprAMCorners, amSurface, 0 , 0 , 0); |
570 |
DrawSpriteFrame2Surf(sprAMCorners, amSurface, AMRect.w + BORDERSIZE, AMRect.y , 1); |
|
571 |
DrawSpriteFrame2Surf(sprAMCorners, amSurface, AMRect.x , AMRect.h + BORDERSIZE, 2); |
|
572 |
DrawSpriteFrame2Surf(sprAMCorners, amSurface, AMRect.w + BORDERSIZE, AMRect.h + BORDERSIZE, 3); |
|
6622 | 573 |
|
574 |
for i:=0 to BORDERSIZE-1 do |
|
575 |
begin |
|
576 |
DrawLine2Surf(amSurface, BORDERSIZE, i, AMRect.w + BORDERSIZE, i,160,160,160);//top |
|
577 |
DrawLine2Surf(amSurface, BORDERSIZE, AMRect.h+BORDERSIZE+i, AMRect.w + BORDERSIZE, AMRect.h+BORDERSIZE+i,160,160,160);//bottom |
|
578 |
DrawLine2Surf(amSurface, i, BORDERSIZE, i, AMRect.h + BORDERSIZE,160,160,160);//left |
|
579 |
DrawLine2Surf(amSurface, AMRect.w+BORDERSIZE+i, BORDERSIZE, AMRect.w + BORDERSIZE+i, AMRect.h + BORDERSIZE, 160,160,160);//right |
|
580 |
end; |
|
581 |
||
582 |
GetAmmoMenuTexture:= Surface2Tex(amSurface, false); |
|
583 |
if amSurface <> nil then SDL_FreeSurface(amSurface); |
|
584 |
end; |
|
585 |
||
586 |
procedure ShowAmmoMenu; |
|
587 |
const BORDERSIZE = 2; |
|
588 |
var Slot, Pos: LongInt; |
|
589 |
Ammo: PHHAmmo; |
|
6648
025473a2c420
prevent the cursor from being shown on the mobile version, and close the menu on tap when the tap is not on the ammo menu
Xeli
parents:
6647
diff
changeset
|
590 |
c,i,g,t,STurns: LongInt; |
6622 | 591 |
begin |
7946
a99a79bbd857
Simplify ammo menu conditions so it shows up in more states. Should fix issue #465. The part w/ sliding in uworld is main #465 problem.
nemo
parents:
7858
diff
changeset
|
592 |
if TurnTimeLeft = 0 then bShowAmmoMenu:= false; |
6622 | 593 |
|
594 |
// give the assigned ammo to hedgehog |
|
595 |
Ammo:= nil; |
|
596 |
if (CurrentTeam <> nil) and (CurrentHedgehog <> nil) |
|
597 |
and (not CurrentTeam^.ExtDriven) and (CurrentHedgehog^.BotLevel = 0) then |
|
6918 | 598 |
Ammo:= CurrentHedgehog^.Ammo |
6622 | 599 |
else if (LocalAmmo <> -1) then |
6918 | 600 |
Ammo:= GetAmmoByNum(LocalAmmo); |
6622 | 601 |
Pos:= -1; |
602 |
if Ammo = nil then |
|
6918 | 603 |
begin |
604 |
bShowAmmoMenu:= false; |
|
605 |
AMState:= AMHidden; |
|
606 |
exit |
|
607 |
end; |
|
6622 | 608 |
|
8330 | 609 |
//Init the menu |
610 |
if(AmmoMenuInvalidated) then |
|
6622 | 611 |
begin |
612 |
AmmoMenuInvalidated:= false; |
|
10634
35d059bd0932
Use FreeAndNil across the board. Even if we are immediately assigning after, probably avoids accidental mistakes. Also free neglected owner tex on shutdown, and delete hog gears using the normal deletion procedure if for any reason they still exist (EndGame call?).
nemo
parents:
10628
diff
changeset
|
613 |
FreeAndNilTexture(AmmoMenuTex); |
6622 | 614 |
AmmoMenuTex:= GetAmmoMenuTexture(Ammo); |
3697 | 615 |
|
6676
21cf35a570a7
add keywords for landscape ammomenu and touch interface
koda
parents:
6652
diff
changeset
|
616 |
{$IFDEF USE_LANDSCAPE_AMMOMENU} |
6622 | 617 |
if isPhone() then |
618 |
begin |
|
619 |
AmmoRect.x:= -(AmmoRect.w shr 1); |
|
620 |
AmmoRect.y:= (cScreenHeight shr 1) - (AmmoRect.h shr 1); |
|
621 |
end |
|
622 |
else |
|
623 |
begin |
|
624 |
AmmoRect.x:= -(AmmoRect.w shr 1); |
|
625 |
AmmoRect.y:= cScreenHeight - (AmmoRect.h + AMSlotSize); |
|
626 |
end; |
|
627 |
{$ELSE} |
|
628 |
AmmoRect.x:= (cScreenWidth shr 1) - AmmoRect.w - AMSlotSize; |
|
629 |
AmmoRect.y:= cScreenHeight - (AmmoRect.h + AMSlotSize); |
|
630 |
{$ENDIF} |
|
7946
a99a79bbd857
Simplify ammo menu conditions so it shows up in more states. Should fix issue #465. The part w/ sliding in uworld is main #465 problem.
nemo
parents:
7858
diff
changeset
|
631 |
if AMState <> AMShowing then |
a99a79bbd857
Simplify ammo menu conditions so it shows up in more states. Should fix issue #465. The part w/ sliding in uworld is main #465 problem.
nemo
parents:
7858
diff
changeset
|
632 |
begin |
a99a79bbd857
Simplify ammo menu conditions so it shows up in more states. Should fix issue #465. The part w/ sliding in uworld is main #465 problem.
nemo
parents:
7858
diff
changeset
|
633 |
AMShiftTargetX:= (cScreenWidth shr 1) - AmmoRect.x; |
a99a79bbd857
Simplify ammo menu conditions so it shows up in more states. Should fix issue #465. The part w/ sliding in uworld is main #465 problem.
nemo
parents:
7858
diff
changeset
|
634 |
AMShiftTargetY:= cScreenHeight - AmmoRect.y; |
6802 | 635 |
|
7946
a99a79bbd857
Simplify ammo menu conditions so it shows up in more states. Should fix issue #465. The part w/ sliding in uworld is main #465 problem.
nemo
parents:
7858
diff
changeset
|
636 |
if (AMAnimType and AMTypeMaskX) <> 0 then AMShiftTargetX:= (cScreenWidth shr 1) - AmmoRect.x |
a99a79bbd857
Simplify ammo menu conditions so it shows up in more states. Should fix issue #465. The part w/ sliding in uworld is main #465 problem.
nemo
parents:
7858
diff
changeset
|
637 |
else AMShiftTargetX:= 0; |
a99a79bbd857
Simplify ammo menu conditions so it shows up in more states. Should fix issue #465. The part w/ sliding in uworld is main #465 problem.
nemo
parents:
7858
diff
changeset
|
638 |
if (AMAnimType and AMTypeMaskY) <> 0 then AMShiftTargetY:= cScreenHeight - AmmoRect.y |
a99a79bbd857
Simplify ammo menu conditions so it shows up in more states. Should fix issue #465. The part w/ sliding in uworld is main #465 problem.
nemo
parents:
7858
diff
changeset
|
639 |
else AMShiftTargetY:= 0; |
6802 | 640 |
|
7946
a99a79bbd857
Simplify ammo menu conditions so it shows up in more states. Should fix issue #465. The part w/ sliding in uworld is main #465 problem.
nemo
parents:
7858
diff
changeset
|
641 |
AMShiftX:= AMShiftTargetX; |
a99a79bbd857
Simplify ammo menu conditions so it shows up in more states. Should fix issue #465. The part w/ sliding in uworld is main #465 problem.
nemo
parents:
7858
diff
changeset
|
642 |
AMShiftY:= AMShiftTargetY |
a99a79bbd857
Simplify ammo menu conditions so it shows up in more states. Should fix issue #465. The part w/ sliding in uworld is main #465 problem.
nemo
parents:
7858
diff
changeset
|
643 |
end |
6622 | 644 |
end; |
645 |
||
6795
e4831e13e04a
make ammomenu's speed dependent on RealTicks rather than frames
Xeli
parents:
6794
diff
changeset
|
646 |
AMAnimState:= (RealTicks - AMAnimStartTime) / AMAnimDuration; |
6802 | 647 |
|
648 |
if AMState = AMShowing then |
|
649 |
begin |
|
650 |
FollowGear:=nil; |
|
651 |
end; |
|
652 |
||
6795
e4831e13e04a
make ammomenu's speed dependent on RealTicks rather than frames
Xeli
parents:
6794
diff
changeset
|
653 |
if AMState = AMShowingUp then // show ammo menu |
6622 | 654 |
begin |
14409
85008b73e118
Skip ammo menu open animation if playing with TurnTime <= 10s
Wuzzy <Wuzzy2@mail.ru>
parents:
14397
diff
changeset
|
655 |
// No "appear" animation in low quality or playing with very short turn time. |
85008b73e118
Skip ammo menu open animation if playing with TurnTime <= 10s
Wuzzy <Wuzzy2@mail.ru>
parents:
14397
diff
changeset
|
656 |
if ((cReducedQuality and rqSlowMenu) <> 0) or (cHedgehogTurnTime <= 10000) then |
6622 | 657 |
begin |
658 |
AMShiftX:= 0; |
|
659 |
AMShiftY:= 0; |
|
15046
0730c68fdf97
Backed out changeset 76003912e31d (whoops)
Wuzzy <Wuzzy2@mail.ru>
parents:
15044
diff
changeset
|
660 |
CursorPoint.X:= AmmoRect.x + AmmoRect.w - 3; |
0730c68fdf97
Backed out changeset 76003912e31d (whoops)
Wuzzy <Wuzzy2@mail.ru>
parents:
15044
diff
changeset
|
661 |
CursorPoint.Y:= cScreenHeight - AmmoRect.y - amNumOffsetY - 1; |
6795
e4831e13e04a
make ammomenu's speed dependent on RealTicks rather than frames
Xeli
parents:
6794
diff
changeset
|
662 |
AMState:= AMShowing; |
6622 | 663 |
end |
14409
85008b73e118
Skip ammo menu open animation if playing with TurnTime <= 10s
Wuzzy <Wuzzy2@mail.ru>
parents:
14397
diff
changeset
|
664 |
// "Appear" animation |
6622 | 665 |
else |
6795
e4831e13e04a
make ammomenu's speed dependent on RealTicks rather than frames
Xeli
parents:
6794
diff
changeset
|
666 |
if AMAnimState < 1 then |
e4831e13e04a
make ammomenu's speed dependent on RealTicks rather than frames
Xeli
parents:
6794
diff
changeset
|
667 |
begin |
e4831e13e04a
make ammomenu's speed dependent on RealTicks rather than frames
Xeli
parents:
6794
diff
changeset
|
668 |
AMShiftX:= Round(AMShiftTargetX * (1 - AMAnimState)); |
e4831e13e04a
make ammomenu's speed dependent on RealTicks rather than frames
Xeli
parents:
6794
diff
changeset
|
669 |
AMShiftY:= Round(AMShiftTargetY * (1 - AMAnimState)); |
8330 | 670 |
if (AMAnimType and AMTypeMaskAlpha) <> 0 then |
6796
3e89dbdc7db9
You can now change AMAnimType to enable the animation through the x/y axis and alpha for example
Xeli
parents:
6795
diff
changeset
|
671 |
Tint($FF, $ff, $ff, Round($ff * AMAnimState)); |
6795
e4831e13e04a
make ammomenu's speed dependent on RealTicks rather than frames
Xeli
parents:
6794
diff
changeset
|
672 |
end |
e4831e13e04a
make ammomenu's speed dependent on RealTicks rather than frames
Xeli
parents:
6794
diff
changeset
|
673 |
else |
6622 | 674 |
begin |
6795
e4831e13e04a
make ammomenu's speed dependent on RealTicks rather than frames
Xeli
parents:
6794
diff
changeset
|
675 |
AMShiftX:= 0; |
e4831e13e04a
make ammomenu's speed dependent on RealTicks rather than frames
Xeli
parents:
6794
diff
changeset
|
676 |
AMShiftY:= 0; |
15046
0730c68fdf97
Backed out changeset 76003912e31d (whoops)
Wuzzy <Wuzzy2@mail.ru>
parents:
15044
diff
changeset
|
677 |
CursorPoint.X:= AmmoRect.x + AmmoRect.w - 3; |
0730c68fdf97
Backed out changeset 76003912e31d (whoops)
Wuzzy <Wuzzy2@mail.ru>
parents:
15044
diff
changeset
|
678 |
CursorPoint.Y:= cScreenHeight - AmmoRect.y - amNumOffsetY - 1; |
6795
e4831e13e04a
make ammomenu's speed dependent on RealTicks rather than frames
Xeli
parents:
6794
diff
changeset
|
679 |
AMState:= AMShowing; |
e4831e13e04a
make ammomenu's speed dependent on RealTicks rather than frames
Xeli
parents:
6794
diff
changeset
|
680 |
end; |
e4831e13e04a
make ammomenu's speed dependent on RealTicks rather than frames
Xeli
parents:
6794
diff
changeset
|
681 |
end; |
e4831e13e04a
make ammomenu's speed dependent on RealTicks rather than frames
Xeli
parents:
6794
diff
changeset
|
682 |
if AMState = AMHiding then // hide ammo menu |
6622 | 683 |
begin |
14409
85008b73e118
Skip ammo menu open animation if playing with TurnTime <= 10s
Wuzzy <Wuzzy2@mail.ru>
parents:
14397
diff
changeset
|
684 |
// No "disappear" animation (see above) |
85008b73e118
Skip ammo menu open animation if playing with TurnTime <= 10s
Wuzzy <Wuzzy2@mail.ru>
parents:
14397
diff
changeset
|
685 |
if ((cReducedQuality and rqSlowMenu) <> 0) or (cHedgehogTurnTime <= 10000) then |
6622 | 686 |
begin |
687 |
AMShiftX:= AMShiftTargetX; |
|
688 |
AMShiftY:= AMShiftTargetY; |
|
15046
0730c68fdf97
Backed out changeset 76003912e31d (whoops)
Wuzzy <Wuzzy2@mail.ru>
parents:
15044
diff
changeset
|
689 |
prevPoint:= CursorPoint; |
6795
e4831e13e04a
make ammomenu's speed dependent on RealTicks rather than frames
Xeli
parents:
6794
diff
changeset
|
690 |
AMState:= AMHidden; |
6622 | 691 |
end |
14409
85008b73e118
Skip ammo menu open animation if playing with TurnTime <= 10s
Wuzzy <Wuzzy2@mail.ru>
parents:
14397
diff
changeset
|
692 |
// "Disappear" animation |
6622 | 693 |
else |
6795
e4831e13e04a
make ammomenu's speed dependent on RealTicks rather than frames
Xeli
parents:
6794
diff
changeset
|
694 |
if AMAnimState < 1 then |
e4831e13e04a
make ammomenu's speed dependent on RealTicks rather than frames
Xeli
parents:
6794
diff
changeset
|
695 |
begin |
e4831e13e04a
make ammomenu's speed dependent on RealTicks rather than frames
Xeli
parents:
6794
diff
changeset
|
696 |
AMShiftX:= Round(AMShiftTargetX * AMAnimState); |
e4831e13e04a
make ammomenu's speed dependent on RealTicks rather than frames
Xeli
parents:
6794
diff
changeset
|
697 |
AMShiftY:= Round(AMShiftTargetY * AMAnimState); |
8330 | 698 |
if (AMAnimType and AMTypeMaskAlpha) <> 0 then |
6796
3e89dbdc7db9
You can now change AMAnimType to enable the animation through the x/y axis and alpha for example
Xeli
parents:
6795
diff
changeset
|
699 |
Tint($FF, $ff, $ff, Round($ff * (1-AMAnimState))); |
6795
e4831e13e04a
make ammomenu's speed dependent on RealTicks rather than frames
Xeli
parents:
6794
diff
changeset
|
700 |
end |
8330 | 701 |
else |
6622 | 702 |
begin |
6795
e4831e13e04a
make ammomenu's speed dependent on RealTicks rather than frames
Xeli
parents:
6794
diff
changeset
|
703 |
AMShiftX:= AMShiftTargetX; |
e4831e13e04a
make ammomenu's speed dependent on RealTicks rather than frames
Xeli
parents:
6794
diff
changeset
|
704 |
AMShiftY:= AMShiftTargetY; |
e4831e13e04a
make ammomenu's speed dependent on RealTicks rather than frames
Xeli
parents:
6794
diff
changeset
|
705 |
prevPoint:= CursorPoint; |
e4831e13e04a
make ammomenu's speed dependent on RealTicks rather than frames
Xeli
parents:
6794
diff
changeset
|
706 |
AMState:= AMHidden; |
e4831e13e04a
make ammomenu's speed dependent on RealTicks rather than frames
Xeli
parents:
6794
diff
changeset
|
707 |
end; |
6622 | 708 |
end; |
8330 | 709 |
|
6795
e4831e13e04a
make ammomenu's speed dependent on RealTicks rather than frames
Xeli
parents:
6794
diff
changeset
|
710 |
DrawTexture(AmmoRect.x + AMShiftX, AmmoRect.y + AMShiftY, AmmoMenuTex); |
6796
3e89dbdc7db9
You can now change AMAnimType to enable the animation through the x/y axis and alpha for example
Xeli
parents:
6795
diff
changeset
|
711 |
|
8330 | 712 |
if ((AMState = AMHiding) or (AMState = AMShowingUp)) and ((AMAnimType and AMTypeMaskAlpha) <> 0 )then |
10032
db65298717da
This adds idle hog tinting. Active hog tinting still needed.
nemo
parents:
10009
diff
changeset
|
713 |
untint; |
6622 | 714 |
|
6796
3e89dbdc7db9
You can now change AMAnimType to enable the animation through the x/y axis and alpha for example
Xeli
parents:
6795
diff
changeset
|
715 |
Pos:= -1; |
3e89dbdc7db9
You can now change AMAnimType to enable the animation through the x/y axis and alpha for example
Xeli
parents:
6795
diff
changeset
|
716 |
Slot:= -1; |
6899 | 717 |
{$IFDEF USE_LANDSCAPE_AMMOMENU} |
6796
3e89dbdc7db9
You can now change AMAnimType to enable the animation through the x/y axis and alpha for example
Xeli
parents:
6795
diff
changeset
|
718 |
c:= -1; |
6622 | 719 |
for i:= 0 to cMaxSlotIndex do |
12719
637b1987570e
Fix first ammo row being invisible when there's only one weapon in the first row
Wuzzy <almikes@aol.com>
parents:
12708
diff
changeset
|
720 |
if (i <> cHiddenSlotIndex) and (Ammo^[i, 0].Count > 0) then |
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
|
721 |
begin |
6631 | 722 |
inc(c); |
6918 | 723 |
{$IFDEF USE_AM_NUMCOLUMN} |
6899 | 724 |
g:= 1; |
6918 | 725 |
{$ELSE} |
6622 | 726 |
g:= 0; |
6918 | 727 |
{$ENDIF} |
6622 | 728 |
for t:=0 to cMaxSlotAmmoIndex do |
729 |
if (Ammo^[i, t].Count > 0) and (Ammo^[i, t].AmmoType <> amNothing) then |
|
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
|
730 |
begin |
6622 | 731 |
if (CursorPoint.Y <= (cScreenHeight - AmmoRect.y) - ( g * (AMSlotSize+1))) and |
7841
43e68ac28d79
apply unC0Rr's fix for 435 to landscape and non numbered ammomenu
Xeli
parents:
7840
diff
changeset
|
732 |
(CursorPoint.Y > (cScreenHeight - AmmoRect.y) - ((g+1) * (AMSlotSize+1))) and |
8330 | 733 |
(CursorPoint.X > AmmoRect.x + ( c * (AMSlotSize+1))) and |
6631 | 734 |
(CursorPoint.X <= AmmoRect.x + ((c+1) * (AMSlotSize+1))) then |
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
|
735 |
begin |
6622 | 736 |
Slot:= i; |
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
|
737 |
Pos:= t; |
6622 | 738 |
STurns:= Ammoz[Ammo^[i, t].AmmoType].SkipTurns - CurrentTeam^.Clan^.TurnNumber; |
739 |
if (STurns < 0) and (AMShiftX = 0) and (AMShiftY = 0) then |
|
8330 | 740 |
DrawSprite(sprAMSlot, |
741 |
AmmoRect.x + BORDERSIZE + (c * (AMSlotSize+1)) + AMSlotPadding, |
|
6622 | 742 |
AmmoRect.y + BORDERSIZE + (g * (AMSlotSize+1)) + AMSlotPadding -1, 0); |
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
|
743 |
end; |
6622 | 744 |
inc(g); |
745 |
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
|
746 |
end; |
6622 | 747 |
{$ELSE} |
6918 | 748 |
c:= -1; |
6622 | 749 |
for i:= 0 to cMaxSlotIndex do |
12719
637b1987570e
Fix first ammo row being invisible when there's only one weapon in the first row
Wuzzy <almikes@aol.com>
parents:
12708
diff
changeset
|
750 |
if (i <> cHiddenSlotIndex) and (Ammo^[i, 0].Count > 0) then |
6622 | 751 |
begin |
6631 | 752 |
inc(c); |
6918 | 753 |
{$IFDEF USE_AM_NUMCOLUMN} |
6899 | 754 |
g:= 1; |
6918 | 755 |
{$ELSE} |
6622 | 756 |
g:= 0; |
6918 | 757 |
{$ENDIF} |
6622 | 758 |
for t:=0 to cMaxSlotAmmoIndex do |
759 |
if (Ammo^[i, t].Count > 0) and (Ammo^[i, t].AmmoType <> amNothing) then |
|
760 |
begin |
|
6631 | 761 |
if (CursorPoint.Y <= (cScreenHeight - AmmoRect.y) - ( c * (AMSlotSize+1))) and |
7840
7d86dbcd6325
Fix issue 435, and also unreported bug when 2 or even 4 entries could have selection at the same time in weapons menu.
unc0rr
parents:
7721
diff
changeset
|
762 |
(CursorPoint.Y > (cScreenHeight - AmmoRect.y) - ((c+1) * (AMSlotSize+1))) and |
8330 | 763 |
(CursorPoint.X > AmmoRect.x + ( g * (AMSlotSize+1))) and |
6622 | 764 |
(CursorPoint.X <= AmmoRect.x + ((g+1) * (AMSlotSize+1))) then |
765 |
begin |
|
766 |
Slot:= i; |
|
767 |
Pos:= t; |
|
768 |
STurns:= Ammoz[Ammo^[i, t].AmmoType].SkipTurns - CurrentTeam^.Clan^.TurnNumber; |
|
769 |
if (STurns < 0) and (AMShiftX = 0) and (AMShiftY = 0) then |
|
8330 | 770 |
DrawSprite(sprAMSlot, |
771 |
AmmoRect.x + BORDERSIZE + (g * (AMSlotSize+1)) + AMSlotPadding, |
|
6631 | 772 |
AmmoRect.y + BORDERSIZE + (c * (AMSlotSize+1)) + AMSlotPadding -1, 0); |
6622 | 773 |
end; |
774 |
inc(g); |
|
775 |
end; |
|
776 |
end; |
|
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
|
777 |
{$ENDIF} |
12708
5ef6780b1c05
Move amNothing from F1 slot to new special hidden weapon slot. Move amDuck to F1
Wuzzy <almikes@aol.com>
parents:
12697
diff
changeset
|
778 |
if (Pos >= 0) and (Pos <= cMaxSlotAmmoIndex) and (Slot >= 0) and (Slot <= cMaxSlotIndex) and (Slot <> cHiddenSlotIndex) then |
3967 | 779 |
begin |
6622 | 780 |
if (AMShiftX = 0) and (AMShiftY = 0) then |
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
|
781 |
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
|
782 |
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
|
783 |
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
|
784 |
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
|
785 |
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
|
786 |
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
|
787 |
end; |
3697 | 788 |
|
6622 | 789 |
DrawTexture(AmmoRect.x + (AMSlotSize shr 1), |
790 |
AmmoRect.y + AmmoRect.h - BORDERSIZE - (AMSlotSize shr 1) - (Ammoz[Ammo^[Slot, Pos].AmmoType].NameTex^.h shr 1), |
|
6608 | 791 |
Ammoz[Ammo^[Slot, Pos].AmmoType].NameTex); |
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
|
792 |
if Ammo^[Slot, Pos].Count < AMMO_INFINITE then |
6622 | 793 |
DrawTexture(AmmoRect.x + AmmoRect.w - 20 - (CountTexz[Ammo^[Slot, Pos].Count]^.w), |
13638
039ec6dd304b
Fix slightly misplaced ammo count in ammo menu if count > 9
Wuzzy <Wuzzy2@mail.ru>
parents:
13637
diff
changeset
|
794 |
AmmoRect.y + AmmoRect.h - BORDERSIZE - (AMslotSize shr 1) - (CountTexz[Ammo^[Slot, Pos].Count]^.h shr 1), |
6608 | 795 |
CountTexz[Ammo^[Slot, Pos].Count]); |
1529
3bc916b419cd
Don't hide ammo menu when user clicks on not yet available weapon
unc0rr
parents:
1439
diff
changeset
|
796 |
|
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
|
797 |
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
|
798 |
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
|
799 |
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
|
800 |
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
|
801 |
bSelected:= false; |
10634
35d059bd0932
Use FreeAndNil across the board. Even if we are immediately assigning after, probably avoids accidental mistakes. Also free neglected owner tex on shutdown, and delete hog gears using the normal deletion procedure if for any reason they still exist (EndGame call?).
nemo
parents:
10628
diff
changeset
|
802 |
FreeAndNilTexture(WeaponTooltipTex); |
14541 | 803 |
updateTouchWidgets(Ammo^[Slot, Pos].AmmoType); |
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
|
804 |
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
|
805 |
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
|
806 |
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
|
807 |
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
|
808 |
else |
10634
35d059bd0932
Use FreeAndNil across the board. Even if we are immediately assigning after, probably avoids accidental mistakes. Also free neglected owner tex on shutdown, and delete hog gears using the normal deletion procedure if for any reason they still exist (EndGame call?).
nemo
parents:
10628
diff
changeset
|
809 |
FreeAndNilTexture(WeaponTooltipTex); |
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
|
810 |
|
6622 | 811 |
if (WeaponTooltipTex <> nil) and (AMShiftX = 0) and (AMShiftY = 0) then |
6676
21cf35a570a7
add keywords for landscape ammomenu and touch interface
koda
parents:
6652
diff
changeset
|
812 |
{$IFDEF USE_LANDSCAPE_AMMOMENU} |
8099
a7f02b902b6f
throw in some 'nots' trying to restore pas2c functionality
koda
parents:
8026
diff
changeset
|
813 |
if (not isPhone()) then |
6622 | 814 |
ShowWeaponTooltip(-WeaponTooltipTex^.w div 2, AmmoRect.y - WeaponTooltipTex^.h - AMSlotSize); |
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
|
815 |
{$ELSE} |
6622 | 816 |
ShowWeaponTooltip(AmmoRect.x - WeaponTooltipTex^.w - 3, Min(AmmoRect.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
|
817 |
{$ENDIF} |
961
a9a349b2b3fa
Use turnsleft sprites to indicate turns left to activate ammo
unc0rr
parents:
956
diff
changeset
|
818 |
|
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
|
819 |
bSelected:= false; |
6899 | 820 |
{$IFNDEF USE_TOUCH_INTERFACE} |
6648
025473a2c420
prevent the cursor from being shown on the mobile version, and close the menu on tap when the tap is not on the ammo menu
Xeli
parents:
6647
diff
changeset
|
821 |
if (AMShiftX = 0) and (AMShiftY = 0) then |
6622 | 822 |
DrawSprite(sprArrow, CursorPoint.X, cScreenHeight - CursorPoint.Y, (RealTicks shr 6) mod 8); |
6648
025473a2c420
prevent the cursor from being shown on the mobile version, and close the menu on tap when the tap is not on the ammo menu
Xeli
parents:
6647
diff
changeset
|
823 |
{$ENDIF} |
4 | 824 |
end; |
825 |
||
3089 | 826 |
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
|
827 |
var i, w, h, lw, lh, rw, rh, sw: LongInt; |
2426 | 828 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
829 |
sw:= round(cScreenWidth / cScaleFactor); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
830 |
if (SpritesData[sprL].Texture = nil) and (SpritesData[spr].Texture <> nil) then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
831 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
832 |
w:= SpritesData[spr].Width * SpritesData[spr].Texture^.Scale; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
833 |
h:= SpritesData[spr].Height * SpritesData[spr].Texture^.Scale; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
834 |
i:= Shift mod w; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
835 |
if i > 0 then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
836 |
dec(i, w); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
837 |
dec(i, w * (sw div w + 1)); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
838 |
repeat |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
839 |
DrawTexture(i, WorldDy + LAND_HEIGHT + OffsetY - h, SpritesData[spr].Texture, SpritesData[spr].Texture^.Scale); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
840 |
inc(i, w) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
841 |
until i > sw |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
842 |
end |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
843 |
else if SpritesData[spr].Texture <> nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
844 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
845 |
w:= SpritesData[spr].Width * SpritesData[spr].Texture^.Scale; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
846 |
h:= SpritesData[spr].Height * SpritesData[spr].Texture^.Scale; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
847 |
lw:= SpritesData[sprL].Width * SpritesData[spr].Texture^.Scale; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
848 |
lh:= SpritesData[sprL].Height * SpritesData[spr].Texture^.Scale; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
849 |
if SpritesData[sprR].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
|
850 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
851 |
rw:= SpritesData[sprR].Width * SpritesData[spr].Texture^.Scale; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
852 |
rh:= SpritesData[sprR].Height * SpritesData[spr].Texture^.Scale |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
853 |
end; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
854 |
dec(Shift, w div 2); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
855 |
DrawTexture(Shift, WorldDy + LAND_HEIGHT + OffsetY - h, SpritesData[spr].Texture, SpritesData[spr].Texture^.Scale); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
856 |
|
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
857 |
i:= Shift - lw; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
858 |
while i >= -sw - lw do |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
859 |
begin |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
860 |
DrawTexture(i, WorldDy + LAND_HEIGHT + OffsetY - lh, SpritesData[sprL].Texture, SpritesData[sprL].Texture^.Scale); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
861 |
dec(i, lw); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
862 |
end; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
863 |
|
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
864 |
i:= Shift + w; |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
865 |
if SpritesData[sprR].Texture <> nil then |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
866 |
while i <= sw do |
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
|
867 |
begin |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
868 |
DrawTexture(i, WorldDy + LAND_HEIGHT + OffsetY - rh, SpritesData[sprR].Texture, SpritesData[sprR].Texture^.Scale); |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
869 |
inc(i, rw) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
870 |
end |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
871 |
else |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
872 |
while i <= sw 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
|
873 |
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
|
874 |
DrawTexture(i, WorldDy + LAND_HEIGHT + OffsetY - lh, SpritesData[sprL].Texture, SpritesData[sprL].Texture^.Scale); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
875 |
inc(i, lw) |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
876 |
end |
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
877 |
end |
2426 | 878 |
end; |
879 |
||
15650
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
880 |
// Force camera to stay within a certain area |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
881 |
procedure CameraBounds; |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
882 |
var lowBound: LongInt; |
15593
f0ac916a0608
Fix camera zooming out too far in pause mode (bug 773)
Wuzzy <Wuzzy2@mail.ru>
parents:
15459
diff
changeset
|
883 |
begin |
15650
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
884 |
if (not hasBorder) then |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
885 |
begin |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
886 |
if WorldDy > (-(cScreenHeight / cScaleFactor) + cScreenHeight div 2 - TopY + cCamLimitY) then |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
887 |
WorldDy:= (-trunc(cScreenHeight / cScaleFactor) + cScreenHeight div 2 - TopY + cCamLimitY); |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
888 |
if (RightX - LeftX + cCamLimitX * 2) div 2 < cScreenWidth / cScaleFactor then |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
889 |
WorldDx:= -((LeftX + RightX) div 2) |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
890 |
else |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
891 |
begin |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
892 |
if WorldDx < -LAND_WIDTH - cCamLimitX + (cScreenWidth / cScaleFactor) then |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
893 |
WorldDx:= -LAND_WIDTH - cCamLimitX + trunc(cScreenWidth / cScaleFactor); |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
894 |
if WorldDx > cCamLimitX - (cScreenWidth / cScaleFactor) then |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
895 |
WorldDx:= cCamLimitX - trunc(cScreenWidth / cScaleFactor); |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
896 |
end; |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
897 |
end |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
898 |
else |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
899 |
begin |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
900 |
if WorldDy > (-(cScreenHeight / cScaleFactor) + cScreenHeight div 2 - TopY + cCamLimitBorderY) then |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
901 |
WorldDy:= (-trunc(cScreenHeight / cScaleFactor) + cScreenHeight div 2 - TopY + cCamLimitBorderY); |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
902 |
if (RightX - LeftX + cCamLimitBorderX * 2) div 2 < cScreenWidth / cScaleFactor then |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
903 |
WorldDx:= -((LeftX + RightX) div 2) |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
904 |
else |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
905 |
begin |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
906 |
if WorldDx > -LeftX + cCamLimitBorderX - (cScreenWidth / cScaleFactor) then |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
907 |
WorldDx:= -LeftX + cCamLimitBorderX - trunc(cScreenWidth / cScaleFactor); |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
908 |
if WorldDx < -RightX - cCamLimitBorderX + (cScreenWidth / cScaleFactor) then |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
909 |
WorldDx:= -RightX - cCamLimitBorderX + trunc(cScreenWidth / cScaleFactor); |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
910 |
end; |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
911 |
end; |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
912 |
|
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
913 |
lowBound:= trunc(cScreenHeight / cScaleFactor) + cScreenHeight div 2 - cWaterLine - (cVisibleWater + trunc(CinematicBarH / (cScaleFactor / 2.0))); |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
914 |
if WorldDy < lowBound then |
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
915 |
WorldDy:= lowBound; |
15593
f0ac916a0608
Fix camera zooming out too far in pause mode (bug 773)
Wuzzy <Wuzzy2@mail.ru>
parents:
15459
diff
changeset
|
916 |
end; |
2426 | 917 |
|
956 | 918 |
procedure DrawWorld(Lag: LongInt); |
4 | 919 |
begin |
6734
9709d15dabfa
Revert most of 033e4a8a9c74 and 9d501dc22f71 (see bug #362)
nemo
parents:
6714
diff
changeset
|
920 |
if ZoomValue < zoom then |
2948
3f21a9dc93d0
Replace tabs with spaces using 'expand -t 4' command
unc0rr
parents:
2931
diff
changeset
|
921 |
begin |
6734
9709d15dabfa
Revert most of 033e4a8a9c74 and 9d501dc22f71 (see bug #362)
nemo
parents:
6714
diff
changeset
|
922 |
zoom:= zoom - 0.002 * Lag; |
9709d15dabfa
Revert most of 033e4a8a9c74 and 9d501dc22f71 (see bug #362)
nemo
parents:
6714
diff
changeset
|
923 |
if ZoomValue > zoom then |
9709d15dabfa
Revert most of 033e4a8a9c74 and 9d501dc22f71 (see bug #362)
nemo
parents:
6714
diff
changeset
|
924 |
zoom:= ZoomValue |
9709d15dabfa
Revert most of 033e4a8a9c74 and 9d501dc22f71 (see bug #362)
nemo
parents:
6714
diff
changeset
|
925 |
end |
9709d15dabfa
Revert most of 033e4a8a9c74 and 9d501dc22f71 (see bug #362)
nemo
parents:
6714
diff
changeset
|
926 |
else |
9709d15dabfa
Revert most of 033e4a8a9c74 and 9d501dc22f71 (see bug #362)
nemo
parents:
6714
diff
changeset
|
927 |
if ZoomValue > zoom then |
3444 | 928 |
begin |
6734
9709d15dabfa
Revert most of 033e4a8a9c74 and 9d501dc22f71 (see bug #362)
nemo
parents:
6714
diff
changeset
|
929 |
zoom:= zoom + 0.002 * Lag; |
9709d15dabfa
Revert most of 033e4a8a9c74 and 9d501dc22f71 (see bug #362)
nemo
parents:
6714
diff
changeset
|
930 |
if ZoomValue < zoom then |
9709d15dabfa
Revert most of 033e4a8a9c74 and 9d501dc22f71 (see bug #362)
nemo
parents:
6714
diff
changeset
|
931 |
zoom:= ZoomValue |
3444 | 932 |
end |
3611 | 933 |
else |
934 |
ZoomValue:= zoom; |
|
2376 | 935 |
|
9670
1954f692e8c6
Quick and simple implementation of afk mode (toggled by /pause)
unc0rr
parents:
9666
diff
changeset
|
936 |
if (not isPaused) and (not isAFK) and (GameType <> gmtRecord) then |
15593
f0ac916a0608
Fix camera zooming out too far in pause mode (bug 773)
Wuzzy <Wuzzy2@mail.ru>
parents:
15459
diff
changeset
|
937 |
MoveCamera |
f0ac916a0608
Fix camera zooming out too far in pause mode (bug 773)
Wuzzy <Wuzzy2@mail.ru>
parents:
15459
diff
changeset
|
938 |
else if (isPaused) then |
15650
85d2afe34116
Enforce camera limits regardless of zoom level
Wuzzy <Wuzzy2@mail.ru>
parents:
15593
diff
changeset
|
939 |
CameraBounds; |
162 | 940 |
|
3696 | 941 |
if cStereoMode = smNone then |
942 |
begin |
|
10869 | 943 |
RenderClear(); |
3692 | 944 |
DrawWorldStereo(Lag, rmDefault) |
8138
cfb228baa598
Invert S3D_DISABLED to more consistent USE_S3D_RENDERING
Chris Wong <lambda.fairy@gmail.com>
parents:
7946
diff
changeset
|
945 |
{$IFDEF USE_S3D_RENDERING} |
3696 | 946 |
end |
947 |
else |
|
948 |
begin |
|
10869 | 949 |
// draw frame for left eye |
950 |
RenderClear(rmLeftEye); |
|
3696 | 951 |
DrawWorldStereo(Lag, rmLeftEye); |
3692 | 952 |
|
10869 | 953 |
// draw frame for right eye |
954 |
RenderClear(rmRightEye); |
|
3692 | 955 |
DrawWorldStereo(0, rmRightEye); |
4347
0ddb100fea61
add a S3D_DISABLED symbol to disable/enable stereo rendering at compilation time
koda
parents:
4345
diff
changeset
|
956 |
{$ENDIF} |
10869 | 957 |
end; |
3692 | 958 |
|
10869 | 959 |
FinishRender(); |
3692 | 960 |
end; |
961 |
||
10494 | 962 |
procedure RenderWorldEdge; |
9654 | 963 |
var |
10360
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
964 |
tmp, w: LongInt; |
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
965 |
rect: TSDL_Rect; |
3692 | 966 |
begin |
10318 | 967 |
if (WorldEdge <> weNone) and (WorldEdge <> weSea) then |
9654 | 968 |
begin |
969 |
(* I think for a bounded world, will fill the left and right areas with black or something. Also will probably want various border effects/animations based on border type. Prob also, say, trigger a border animation timer on an impact. *) |
|
970 |
||
10360
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
971 |
rect.y:= ViewTopY; |
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
972 |
rect.h:= ViewHeight; |
14282
6015b74eea55
overall, using LongInt for leftX/rightX results in fewer casts, since most comparisons are against ints.
nemo
parents:
14281
diff
changeset
|
973 |
tmp:= leftX + WorldDx; |
10360
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
974 |
w:= tmp - ViewLeftX; |
3692 | 975 |
|
10360
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
976 |
if w > 0 then |
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
977 |
begin |
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
978 |
rect.w:= w; |
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
979 |
rect.x:= ViewLeftX; |
10627 | 980 |
DrawRect(rect, $10, $10, $10, $80, true); |
10360
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
981 |
if WorldEdge = weBounce then |
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
982 |
DrawLineOnScreen(tmp - 1, ViewTopY, tmp - 1, ViewBottomY, 2, $54, $54, $FF, $FF); |
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
983 |
end; |
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
984 |
|
14282
6015b74eea55
overall, using LongInt for leftX/rightX results in fewer casts, since most comparisons are against ints.
nemo
parents:
14281
diff
changeset
|
985 |
tmp:= rightX + WorldDx; |
10360
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
986 |
w:= ViewRightX - tmp; |
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
987 |
|
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
988 |
if w > 0 then |
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
989 |
begin |
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
990 |
rect.w:= w; |
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
991 |
rect.x:= tmp; |
10627 | 992 |
DrawRect(rect, $10, $10, $10, $80, true); |
10360
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
993 |
if WorldEdge = weBounce then |
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
994 |
DrawLineOnScreen(tmp - 1, ViewTopY, tmp - 1, ViewBottomY, 2, $54, $54, $FF, $FF); |
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
995 |
end; |
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
996 |
|
9654 | 997 |
end; |
998 |
end; |
|
999 |
||
1000 |
||
1001 |
procedure RenderTeamsHealth; |
|
13174
061d55939e47
Use visible team count instead of total team count to determine rendered team bar height
Wuzzy <Wuzzy2@mail.ru>
parents:
13156
diff
changeset
|
1002 |
var t, i, h, v, smallScreenOffset, TeamHealthBarWidth : LongInt; |
9654 | 1003 |
r: TSDL_Rect; |
1004 |
highlight: boolean; |
|
13140
e330feceb662
Hide team bar if all hedgehogs in it are hidden or dead
Wuzzy <Wuzzy2@mail.ru>
parents:
13018
diff
changeset
|
1005 |
hasVisibleHog: boolean; |
9656 | 1006 |
htex: PTexture; |
9654 | 1007 |
begin |
13174
061d55939e47
Use visible team count instead of total team count to determine rendered team bar height
Wuzzy <Wuzzy2@mail.ru>
parents:
13156
diff
changeset
|
1008 |
if VisibleTeamsCount * 20 > Longword(cScreenHeight) div 7 then // take up less screen on small displays |
9654 | 1009 |
begin |
1010 |
SetScale(1.5); |
|
1011 |
smallScreenOffset:= cScreenHeight div 6; |
|
13174
061d55939e47
Use visible team count instead of total team count to determine rendered team bar height
Wuzzy <Wuzzy2@mail.ru>
parents:
13156
diff
changeset
|
1012 |
if VisibleTeamsCount * 100 > Longword(cScreenHeight) then |
9654 | 1013 |
Tint($FF,$FF,$FF,$80); |
1014 |
end |
|
1015 |
else smallScreenOffset:= 0; |
|
13174
061d55939e47
Use visible team count instead of total team count to determine rendered team bar height
Wuzzy <Wuzzy2@mail.ru>
parents:
13156
diff
changeset
|
1016 |
v:= 0; // for updating VisibleTeamsCount |
9654 | 1017 |
for t:= 0 to Pred(TeamsCount) do |
1018 |
with TeamsArray[t]^ do |
|
13140
e330feceb662
Hide team bar if all hedgehogs in it are hidden or dead
Wuzzy <Wuzzy2@mail.ru>
parents:
13018
diff
changeset
|
1019 |
begin |
e330feceb662
Hide team bar if all hedgehogs in it are hidden or dead
Wuzzy <Wuzzy2@mail.ru>
parents:
13018
diff
changeset
|
1020 |
hasVisibleHog:= false; |
e330feceb662
Hide team bar if all hedgehogs in it are hidden or dead
Wuzzy <Wuzzy2@mail.ru>
parents:
13018
diff
changeset
|
1021 |
for i:= 0 to cMaxHHIndex do |
e330feceb662
Hide team bar if all hedgehogs in it are hidden or dead
Wuzzy <Wuzzy2@mail.ru>
parents:
13018
diff
changeset
|
1022 |
if (Hedgehogs[i].Gear <> nil) then |
e330feceb662
Hide team bar if all hedgehogs in it are hidden or dead
Wuzzy <Wuzzy2@mail.ru>
parents:
13018
diff
changeset
|
1023 |
hasVisibleHog:= true; |
e330feceb662
Hide team bar if all hedgehogs in it are hidden or dead
Wuzzy <Wuzzy2@mail.ru>
parents:
13018
diff
changeset
|
1024 |
if (TeamHealth > 0) and hasVisibleHog then |
9654 | 1025 |
begin |
13174
061d55939e47
Use visible team count instead of total team count to determine rendered team bar height
Wuzzy <Wuzzy2@mail.ru>
parents:
13156
diff
changeset
|
1026 |
// count visible teams |
061d55939e47
Use visible team count instead of total team count to determine rendered team bar height
Wuzzy <Wuzzy2@mail.ru>
parents:
13156
diff
changeset
|
1027 |
inc(v); |
9654 | 1028 |
highlight:= bShowFinger and (CurrentTeam = TeamsArray[t]) and ((RealTicks mod 1000) < 500); |
1029 |
||
1030 |
if highlight then |
|
9656 | 1031 |
begin |
9654 | 1032 |
Tint(Clan^.Color shl 8 or $FF); |
9656 | 1033 |
htex:= GenericHealthTexture |
1034 |
end |
|
1035 |
else |
|
1036 |
htex:= Clan^.HealthTex; |
|
9654 | 1037 |
|
9791
446e4919b738
Display team owner in teams widget (addresses issue 174)
unc0rr
parents:
9755
diff
changeset
|
1038 |
// draw owner |
446e4919b738
Display team owner in teams widget (addresses issue 174)
unc0rr
parents:
9755
diff
changeset
|
1039 |
if OwnerTex <> nil then |
446e4919b738
Display team owner in teams widget (addresses issue 174)
unc0rr
parents:
9755
diff
changeset
|
1040 |
DrawTexture(-OwnerTex^.w - NameTagTex^.w - 18, cScreenHeight + DrawHealthY + smallScreenOffset, OwnerTex); |
446e4919b738
Display team owner in teams widget (addresses issue 174)
unc0rr
parents:
9755
diff
changeset
|
1041 |
|
446e4919b738
Display team owner in teams widget (addresses issue 174)
unc0rr
parents:
9755
diff
changeset
|
1042 |
// draw name |
9654 | 1043 |
DrawTexture(-NameTagTex^.w - 16, cScreenHeight + DrawHealthY + smallScreenOffset, NameTagTex); |
1044 |
||
1045 |
// draw flag |
|
1046 |
DrawTexture(-14, cScreenHeight + DrawHealthY + smallScreenOffset, FlagTex); |
|
1047 |
||
9720
453a1c29b7e4
Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents:
9693
diff
changeset
|
1048 |
TeamHealthBarWidth:= cTeamHealthWidth * TeamHealthBarHealth div MaxTeamHealth; |
453a1c29b7e4
Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents:
9693
diff
changeset
|
1049 |
|
14736
8563cc40fc1e
Invert colors if clan color is very dark
Wuzzy <Wuzzy2@mail.ru>
parents:
14569
diff
changeset
|
1050 |
// draw team health bar |
9654 | 1051 |
r.x:= 0; |
1052 |
r.y:= 0; |
|
1053 |
r.w:= 2 + TeamHealthBarWidth; |
|
14741
37a781d28e43
Fix team bar height depending on NameTex
Wuzzy <Wuzzy2@mail.ru>
parents:
14739
diff
changeset
|
1054 |
r.h:= htex^.h; |
9656 | 1055 |
DrawTextureFromRect(14, cScreenHeight + DrawHealthY + smallScreenOffset, @r, htex); |
9654 | 1056 |
|
14736
8563cc40fc1e
Invert colors if clan color is very dark
Wuzzy <Wuzzy2@mail.ru>
parents:
14569
diff
changeset
|
1057 |
// draw health bar's right border |
9654 | 1058 |
inc(r.x, cTeamHealthWidth + 2); |
1059 |
r.w:= 3; |
|
9656 | 1060 |
DrawTextureFromRect(TeamHealthBarWidth + 15, cScreenHeight + DrawHealthY + smallScreenOffset, @r, htex); |
9654 | 1061 |
|
14736
8563cc40fc1e
Invert colors if clan color is very dark
Wuzzy <Wuzzy2@mail.ru>
parents:
14569
diff
changeset
|
1062 |
// draw hedgehog health separators in team health bar |
9720
453a1c29b7e4
Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents:
9693
diff
changeset
|
1063 |
h:= 0; |
9654 | 1064 |
if not hasGone then |
1065 |
for i:= 0 to cMaxHHIndex do |
|
9720
453a1c29b7e4
Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents:
9693
diff
changeset
|
1066 |
begin |
453a1c29b7e4
Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents:
9693
diff
changeset
|
1067 |
inc(h, Hedgehogs[i].HealthBarHealth); |
10015 | 1068 |
if (h < TeamHealthBarHealth) and (Hedgehogs[i].HealthBarHealth > 0) then |
14736
8563cc40fc1e
Invert colors if clan color is very dark
Wuzzy <Wuzzy2@mail.ru>
parents:
14569
diff
changeset
|
1069 |
if (IsTooDarkToRead(Clan^.Color)) then |
8563cc40fc1e
Invert colors if clan color is very dark
Wuzzy <Wuzzy2@mail.ru>
parents:
14569
diff
changeset
|
1070 |
DrawTexture(15 + h * TeamHealthBarWidth div TeamHealthBarHealth, cScreenHeight + DrawHealthY + smallScreenOffset + 1, SpritesData[sprSlider].Texture) |
8563cc40fc1e
Invert colors if clan color is very dark
Wuzzy <Wuzzy2@mail.ru>
parents:
14569
diff
changeset
|
1071 |
else |
8563cc40fc1e
Invert colors if clan color is very dark
Wuzzy <Wuzzy2@mail.ru>
parents:
14569
diff
changeset
|
1072 |
DrawTexture(15 + h * TeamHealthBarWidth div TeamHealthBarHealth, cScreenHeight + DrawHealthY + smallScreenOffset + 1, SpritesData[sprSliderInverted].Texture); |
9720
453a1c29b7e4
Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents:
9693
diff
changeset
|
1073 |
end; |
9654 | 1074 |
|
13018
0248cf0da834
Add SetTeamLabel to Lua API, can set arbitrary string as team label
Wuzzy <Wuzzy2@mail.ru>
parents:
12831
diff
changeset
|
1075 |
// draw Lua value, if set |
0248cf0da834
Add SetTeamLabel to Lua API, can set arbitrary string as team label
Wuzzy <Wuzzy2@mail.ru>
parents:
12831
diff
changeset
|
1076 |
if (hasLuaTeamValue) then |
0248cf0da834
Add SetTeamLabel to Lua API, can set arbitrary string as team label
Wuzzy <Wuzzy2@mail.ru>
parents:
12831
diff
changeset
|
1077 |
DrawTexture(TeamHealthBarWidth + 22, cScreenHeight + DrawHealthY + smallScreenOffset, LuaTeamValueTex) |
0248cf0da834
Add SetTeamLabel to Lua API, can set arbitrary string as team label
Wuzzy <Wuzzy2@mail.ru>
parents:
12831
diff
changeset
|
1078 |
// otherwise, draw AI kill counter for gfAISurvival |
0248cf0da834
Add SetTeamLabel to Lua API, can set arbitrary string as team label
Wuzzy <Wuzzy2@mail.ru>
parents:
12831
diff
changeset
|
1079 |
else if (GameFlags and gfAISurvival) <> 0 then |
9654 | 1080 |
DrawTexture(TeamHealthBarWidth + 22, cScreenHeight + DrawHealthY + smallScreenOffset, AIKillsTex); |
1081 |
||
1082 |
// if highlighted, draw flag and other contents again to keep their colors |
|
1083 |
// this approach should be faster than drawing all borders one by one tinted or not |
|
1084 |
if highlight then |
|
1085 |
begin |
|
13174
061d55939e47
Use visible team count instead of total team count to determine rendered team bar height
Wuzzy <Wuzzy2@mail.ru>
parents:
13156
diff
changeset
|
1086 |
if VisibleTeamsCount * 100 > Longword(cScreenHeight) then |
9654 | 1087 |
Tint($FF,$FF,$FF,$80) |
9666
8dcb25112d96
- Bring back white dot in the center of crosshair. Crosshair is blurred now!
unc0rr
parents:
9656
diff
changeset
|
1088 |
else untint; |
9654 | 1089 |
|
1090 |
// draw name |
|
1091 |
r.x:= 2; |
|
1092 |
r.y:= 2; |
|
1093 |
r.w:= NameTagTex^.w - 4; |
|
1094 |
r.h:= NameTagTex^.h - 4; |
|
1095 |
DrawTextureFromRect(-NameTagTex^.w - 14, cScreenHeight + DrawHealthY + smallScreenOffset + 2, @r, NameTagTex); |
|
10147 | 1096 |
|
1097 |
if OwnerTex <> nil then |
|
1098 |
begin |
|
1099 |
r.w:= OwnerTex^.w - 4; |
|
1100 |
r.h:= OwnerTex^.h - 4; |
|
1101 |
DrawTextureFromRect(-OwnerTex^.w - NameTagTex^.w - 16, cScreenHeight + DrawHealthY + smallScreenOffset + 2, @r, OwnerTex) |
|
1102 |
end; |
|
1103 |
||
13018
0248cf0da834
Add SetTeamLabel to Lua API, can set arbitrary string as team label
Wuzzy <Wuzzy2@mail.ru>
parents:
12831
diff
changeset
|
1104 |
if (hasLuaTeamValue) then |
0248cf0da834
Add SetTeamLabel to Lua API, can set arbitrary string as team label
Wuzzy <Wuzzy2@mail.ru>
parents:
12831
diff
changeset
|
1105 |
begin |
0248cf0da834
Add SetTeamLabel to Lua API, can set arbitrary string as team label
Wuzzy <Wuzzy2@mail.ru>
parents:
12831
diff
changeset
|
1106 |
r.w:= LuaTeamValueTex^.w - 4; |
0248cf0da834
Add SetTeamLabel to Lua API, can set arbitrary string as team label
Wuzzy <Wuzzy2@mail.ru>
parents:
12831
diff
changeset
|
1107 |
r.h:= LuaTeamValueTex^.h - 4; |
0248cf0da834
Add SetTeamLabel to Lua API, can set arbitrary string as team label
Wuzzy <Wuzzy2@mail.ru>
parents:
12831
diff
changeset
|
1108 |
DrawTextureFromRect(TeamHealthBarWidth + 24, cScreenHeight + DrawHealthY + smallScreenOffset + 2, @r, LuaTeamValueTex); |
0248cf0da834
Add SetTeamLabel to Lua API, can set arbitrary string as team label
Wuzzy <Wuzzy2@mail.ru>
parents:
12831
diff
changeset
|
1109 |
end |
0248cf0da834
Add SetTeamLabel to Lua API, can set arbitrary string as team label
Wuzzy <Wuzzy2@mail.ru>
parents:
12831
diff
changeset
|
1110 |
else if (GameFlags and gfAISurvival) <> 0 then |
10147 | 1111 |
begin |
1112 |
r.w:= AIKillsTex^.w - 4; |
|
1113 |
r.h:= AIKillsTex^.h - 4; |
|
1114 |
DrawTextureFromRect(TeamHealthBarWidth + 24, cScreenHeight + DrawHealthY + smallScreenOffset + 2, @r, AIKillsTex); |
|
1115 |
end; |
|
1116 |
||
9654 | 1117 |
// draw flag |
1118 |
r.w:= 22; |
|
1119 |
r.h:= 15; |
|
1120 |
DrawTextureFromRect(-12, cScreenHeight + DrawHealthY + smallScreenOffset + 2, @r, FlagTex); |
|
10317 | 1121 |
end |
1122 |
// draw an arrow next to active team |
|
1123 |
else if (CurrentTeam = TeamsArray[t]) and (TurnTimeLeft > 0) then |
|
1124 |
begin |
|
1125 |
h:= -NameTagTex^.w - 24; |
|
1126 |
if OwnerTex <> nil then |
|
1127 |
h:= h - OwnerTex^.w - 4; |
|
14736
8563cc40fc1e
Invert colors if clan color is very dark
Wuzzy <Wuzzy2@mail.ru>
parents:
14569
diff
changeset
|
1128 |
if (IsTooDarkToRead(TeamsArray[t]^.Clan^.Color)) then |
8563cc40fc1e
Invert colors if clan color is very dark
Wuzzy <Wuzzy2@mail.ru>
parents:
14569
diff
changeset
|
1129 |
DrawSpriteRotatedF(sprFingerBackInv, h, cScreenHeight + DrawHealthY + smallScreenOffset + 2 + SpritesData[sprFingerBackInv].Width div 4, 0, 1, -90) |
8563cc40fc1e
Invert colors if clan color is very dark
Wuzzy <Wuzzy2@mail.ru>
parents:
14569
diff
changeset
|
1130 |
else |
8563cc40fc1e
Invert colors if clan color is very dark
Wuzzy <Wuzzy2@mail.ru>
parents:
14569
diff
changeset
|
1131 |
DrawSpriteRotatedF(sprFingerBack, h, cScreenHeight + DrawHealthY + smallScreenOffset + 2 + SpritesData[sprFingerBack].Width div 4, 0, 1, -90); |
14395
f39d34d78028
Colorize switching arrows, pointing arrow and target cross in clan color
Wuzzy <Wuzzy2@mail.ru>
parents:
14303
diff
changeset
|
1132 |
Tint(TeamsArray[t]^.Clan^.Color shl 8 or $FF); |
10317 | 1133 |
DrawSpriteRotatedF(sprFinger, h, cScreenHeight + DrawHealthY + smallScreenOffset + 2 + SpritesData[sprFinger].Width div 4, 0, 1, -90); |
14395
f39d34d78028
Colorize switching arrows, pointing arrow and target cross in clan color
Wuzzy <Wuzzy2@mail.ru>
parents:
14303
diff
changeset
|
1134 |
untint; |
9654 | 1135 |
end; |
1136 |
end; |
|
13140
e330feceb662
Hide team bar if all hedgehogs in it are hidden or dead
Wuzzy <Wuzzy2@mail.ru>
parents:
13018
diff
changeset
|
1137 |
end; |
9654 | 1138 |
if smallScreenOffset <> 0 then |
1139 |
begin |
|
1140 |
SetScale(cDefaultZoomLevel); |
|
13174
061d55939e47
Use visible team count instead of total team count to determine rendered team bar height
Wuzzy <Wuzzy2@mail.ru>
parents:
13156
diff
changeset
|
1141 |
if VisibleTeamsCount * 20 > Longword(cScreenHeight) div 5 then |
10032
db65298717da
This adds idle hog tinting. Active hog tinting still needed.
nemo
parents:
10009
diff
changeset
|
1142 |
untint; |
9654 | 1143 |
end; |
13174
061d55939e47
Use visible team count instead of total team count to determine rendered team bar height
Wuzzy <Wuzzy2@mail.ru>
parents:
13156
diff
changeset
|
1144 |
VisibleTeamsCount:= v; |
9654 | 1145 |
end; |
1146 |
||
13637
28e4a9db4690
Fix attack bar render bugs: Invisible beyond world edge; rendered over GUI (e.g. mission panel)
Wuzzy <Wuzzy2@mail.ru>
parents:
13636
diff
changeset
|
1147 |
procedure RenderAttackBar(); |
28e4a9db4690
Fix attack bar render bugs: Invisible beyond world edge; rendered over GUI (e.g. mission panel)
Wuzzy <Wuzzy2@mail.ru>
parents:
13636
diff
changeset
|
1148 |
var i: LongInt; |
28e4a9db4690
Fix attack bar render bugs: Invisible beyond world edge; rendered over GUI (e.g. mission panel)
Wuzzy <Wuzzy2@mail.ru>
parents:
13636
diff
changeset
|
1149 |
tdx, tdy: Double; |
28e4a9db4690
Fix attack bar render bugs: Invisible beyond world edge; rendered over GUI (e.g. mission panel)
Wuzzy <Wuzzy2@mail.ru>
parents:
13636
diff
changeset
|
1150 |
begin |
28e4a9db4690
Fix attack bar render bugs: Invisible beyond world edge; rendered over GUI (e.g. mission panel)
Wuzzy <Wuzzy2@mail.ru>
parents:
13636
diff
changeset
|
1151 |
if CurrentTeam <> nil then |
28e4a9db4690
Fix attack bar render bugs: Invisible beyond world edge; rendered over GUI (e.g. mission panel)
Wuzzy <Wuzzy2@mail.ru>
parents:
13636
diff
changeset
|
1152 |
case AttackBar of |
28e4a9db4690
Fix attack bar render bugs: Invisible beyond world edge; rendered over GUI (e.g. mission panel)
Wuzzy <Wuzzy2@mail.ru>
parents:
13636
diff
changeset
|
1153 |
2: with CurrentHedgehog^ do |
28e4a9db4690
Fix attack bar render bugs: Invisible beyond world edge; rendered over GUI (e.g. mission panel)
Wuzzy <Wuzzy2@mail.ru>
parents:
13636
diff
changeset
|
1154 |
begin |
28e4a9db4690
Fix attack bar render bugs: Invisible beyond world edge; rendered over GUI (e.g. mission panel)
Wuzzy <Wuzzy2@mail.ru>
parents:
13636
diff
changeset
|
1155 |
tdx:= hwSign(Gear^.dX) * Sin(Gear^.Angle * Pi / cMaxAngle); |
28e4a9db4690
Fix attack bar render bugs: Invisible beyond world edge; rendered over GUI (e.g. mission panel)
Wuzzy <Wuzzy2@mail.ru>
parents:
13636
diff
changeset
|
1156 |
tdy:= - Cos(Gear^.Angle * Pi / cMaxAngle); |
28e4a9db4690
Fix attack bar render bugs: Invisible beyond world edge; rendered over GUI (e.g. mission panel)
Wuzzy <Wuzzy2@mail.ru>
parents:
13636
diff
changeset
|
1157 |
for i:= (Gear^.Power * 24) div cPowerDivisor downto 0 do |
28e4a9db4690
Fix attack bar render bugs: Invisible beyond world edge; rendered over GUI (e.g. mission panel)
Wuzzy <Wuzzy2@mail.ru>
parents:
13636
diff
changeset
|
1158 |
DrawSprite(sprPower, |
28e4a9db4690
Fix attack bar render bugs: Invisible beyond world edge; rendered over GUI (e.g. mission panel)
Wuzzy <Wuzzy2@mail.ru>
parents:
13636
diff
changeset
|
1159 |
hwRound(Gear^.X) + GetLaunchX(CurAmmoType, hwSign(Gear^.dX), Gear^.Angle) + LongInt(round(WorldDx + tdx * (24 + i * 2))) - 16, |
28e4a9db4690
Fix attack bar render bugs: Invisible beyond world edge; rendered over GUI (e.g. mission panel)
Wuzzy <Wuzzy2@mail.ru>
parents:
13636
diff
changeset
|
1160 |
hwRound(Gear^.Y) + GetLaunchY(CurAmmoType, Gear^.Angle) + LongInt(round(WorldDy + tdy * (24 + i * 2))) - 16, |
28e4a9db4690
Fix attack bar render bugs: Invisible beyond world edge; rendered over GUI (e.g. mission panel)
Wuzzy <Wuzzy2@mail.ru>
parents:
13636
diff
changeset
|
1161 |
i) |
28e4a9db4690
Fix attack bar render bugs: Invisible beyond world edge; rendered over GUI (e.g. mission panel)
Wuzzy <Wuzzy2@mail.ru>
parents:
13636
diff
changeset
|
1162 |
end; |
28e4a9db4690
Fix attack bar render bugs: Invisible beyond world edge; rendered over GUI (e.g. mission panel)
Wuzzy <Wuzzy2@mail.ru>
parents:
13636
diff
changeset
|
1163 |
end; |
28e4a9db4690
Fix attack bar render bugs: Invisible beyond world edge; rendered over GUI (e.g. mission panel)
Wuzzy <Wuzzy2@mail.ru>
parents:
13636
diff
changeset
|
1164 |
end; |
9654 | 1165 |
|
10360
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
1166 |
var preShiftWorldDx: LongInt; |
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
1167 |
|
10507
ed5df9cd251f
I'm such a dirty boi... cleaning up my own mess a little
sheepluva
parents:
10494
diff
changeset
|
1168 |
procedure ShiftWorld(Dir: LongInt); inline; |
3692 | 1169 |
begin |
10360
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
1170 |
preShiftWorldDx:= WorldDx; |
11090
874e477700d5
- Fix for "uWorld.s:4736:8: error: base register is 64-bit, but index register is not leal (%rax,%edx),%eax"
antonc27 <antonc27@mail.ru>
parents:
11000
diff
changeset
|
1171 |
WorldDx:= WorldDx + LongInt(Dir * LongInt(playWidth)); |
10360
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
1172 |
|
3692 | 1173 |
end; |
10360
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
1174 |
|
10507
ed5df9cd251f
I'm such a dirty boi... cleaning up my own mess a little
sheepluva
parents:
10494
diff
changeset
|
1175 |
procedure UnshiftWorld(); inline; |
10360
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
1176 |
begin |
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
1177 |
WorldDx:= preShiftWorldDx; |
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
1178 |
end; |
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
1179 |
|
3692 | 1180 |
procedure DrawWorldStereo(Lag: LongInt; RM: TRenderMode); |
9654 | 1181 |
var i, t: LongInt; |
11912
d3a852554aa7
Turn timer digits green when it's still the ready timer
Wuzzy <almikes@aol.com>
parents:
11895
diff
changeset
|
1182 |
spr: TSprite; |
3692 | 1183 |
r: TSDL_Rect; |
7016 | 1184 |
s: shortstring; |
9654 | 1185 |
offsetX, offsetY, screenBottom: LongInt; |
15209
fe79f62ef158
Fix hog tags of current hog not rendered in gray area of wrap world edge if finger is shown
Wuzzy <Wuzzy2@mail.ru>
parents:
15206
diff
changeset
|
1186 |
replicateToLeft, replicateToRight, isNotHiddenByCinematic: boolean; |
12697
c71e330d5094
Add missing variable in uWorld.pas in videorec builds
Wuzzy <almikes@aol.com>
parents:
12694
diff
changeset
|
1187 |
{$IFDEF USE_VIDEO_RECORDING} |
c71e330d5094
Add missing variable in uWorld.pas in videorec builds
Wuzzy <almikes@aol.com>
parents:
12694
diff
changeset
|
1188 |
a: Byte; |
c71e330d5094
Add missing variable in uWorld.pas in videorec builds
Wuzzy <almikes@aol.com>
parents:
12694
diff
changeset
|
1189 |
{$ENDIF} |
3692 | 1190 |
begin |
10507
ed5df9cd251f
I'm such a dirty boi... cleaning up my own mess a little
sheepluva
parents:
10494
diff
changeset
|
1191 |
if WorldEdge <> weWrap then |
10360
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
1192 |
begin |
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
1193 |
replicateToLeft := false; |
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
1194 |
replicateToRight:= false; |
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
1195 |
end |
10358 | 1196 |
else |
10360
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
1197 |
begin |
14282
6015b74eea55
overall, using LongInt for leftX/rightX results in fewer casts, since most comparisons are against ints.
nemo
parents:
14281
diff
changeset
|
1198 |
replicateToLeft := (leftX + WorldDx > ViewLeftX); |
6015b74eea55
overall, using LongInt for leftX/rightX results in fewer casts, since most comparisons are against ints.
nemo
parents:
14281
diff
changeset
|
1199 |
replicateToRight:= (rightX + WorldDx < ViewRightX); |
10360
c243b6a8ad9a
some adjustments and support for mirrored world rendering. disabled atm though, I think it is more confusing than helping
sheepluva
parents:
10359
diff
changeset
|
1200 |
end; |
10358 | 1201 |
|
10318 | 1202 |
ScreenBottom:= (WorldDy - trunc(cScreenHeight/cScaleFactor) - (cScreenHeight div 2) + cWaterLine); |
1203 |
||
1204 |
// note: offsetY is negative! |
|
10319 | 1205 |
offsetY:= 10 * Min(0, -145 - ScreenBottom); // TODO limit this in the other direction too |
10318 | 1206 |
|
14003
58e54e737279
Tweak commenting in uWorld render routine
Wuzzy <Wuzzy2@mail.ru>
parents:
13962
diff
changeset
|
1207 |
// Sky and horizont |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
1208 |
if (cReducedQuality and rqNoBackground) = 0 then |
1812 | 1209 |
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
|
1210 |
// 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
|
1211 |
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
|
1212 |
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
|
1213 |
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
|
1214 |
HorizontOffset:= HorizontOffset + ((ScreenBottom-SkyOffset) div 20); |
3265
5fe62296fdea
- Parallax effect for horizont when water is out of sight
palewolf
parents:
3249
diff
changeset
|
1215 |
|
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
|
1216 |
// background |
3688 | 1217 |
ChangeDepth(RM, cStereo_Sky); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
1218 |
if SuddenDeathDmg then |
12097
ebe87b6ed182
add alpha for sd-tint, since CopherNeue thinks the textures might need fading
nemo
parents:
12072
diff
changeset
|
1219 |
Tint(SDTint.r, SDTint.g, SDTint.b, SDTint.a); |
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
|
1220 |
DrawRepeated(sprSky, sprSkyL, sprSkyR, (WorldDx + LAND_WIDTH div 2) * 3 div 8, SkyOffset); |
3688 | 1221 |
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
|
1222 |
DrawRepeated(sprHorizont, sprHorizontL, sprHorizontR, (WorldDx + LAND_WIDTH div 2) * 3 div 5, HorizontOffset); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
1223 |
if SuddenDeathDmg then |
9666
8dcb25112d96
- Bring back white dot in the center of crosshair. Crosshair is blurred now!
unc0rr
parents:
9656
diff
changeset
|
1224 |
untint; |
3611 | 1225 |
end; |
4 | 1226 |
|
13633
35d93b1e7fef
Fix foreground flakes (layer 2+6) disappearing when moving camera in world wrap world
Wuzzy <Wuzzy2@mail.ru>
parents:
13622
diff
changeset
|
1227 |
DrawVisualGears(0, false); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
1228 |
ChangeDepth(RM, -cStereo_MidDistance); |
13633
35d93b1e7fef
Fix foreground flakes (layer 2+6) disappearing when moving camera in world wrap world
Wuzzy <Wuzzy2@mail.ru>
parents:
13622
diff
changeset
|
1229 |
DrawVisualGears(4, false); |
3697 | 1230 |
|
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
1231 |
if (cReducedQuality and rq2DWater) = 0 then |
3611 | 1232 |
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
|
1233 |
// Waves |
10318 | 1234 |
DrawWater(255, SkyOffset, 0); |
4816
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
1235 |
ChangeDepth(RM, -cStereo_Water_distant); |
10318 | 1236 |
DrawWaves( 1, 0 - WorldDx div 32, offsetY div 35, -49, 64); |
4816
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
1237 |
ChangeDepth(RM, -cStereo_Water_distant); |
10318 | 1238 |
DrawWaves( -1, 25 + WorldDx div 25, offsetY div 38, -37, 48); |
4816
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
1239 |
ChangeDepth(RM, -cStereo_Water_distant); |
10318 | 1240 |
DrawWaves( 1, 75 - WorldDx div 19, offsetY div 45, -23, 32); |
4816
c2575faeac3d
use a different depth for different layers (land, water, explosions)
koda
parents:
4812
diff
changeset
|
1241 |
ChangeDepth(RM, -cStereo_Water_distant); |
10318 | 1242 |
DrawWaves(-1, 100 + WorldDx div 14, offsetY div 70, -7, 24); |
3265
5fe62296fdea
- Parallax effect for horizont when water is out of sight
palewolf
parents:
3249
diff
changeset
|
1243 |
end |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
1244 |
else |
10318 | 1245 |
DrawWaves(-1, 100, - cWaveHeight div 2, - cWaveHeight div 2, 0); |
4 | 1246 |
|
10533 | 1247 |
ChangeDepth(RM, cStereo_Land); |
13633
35d93b1e7fef
Fix foreground flakes (layer 2+6) disappearing when moving camera in world wrap world
Wuzzy <Wuzzy2@mail.ru>
parents:
13622
diff
changeset
|
1248 |
DrawVisualGears(5, false); |
10533 | 1249 |
DrawLand(WorldDx, WorldDy); |
4 | 1250 |
|
10533 | 1251 |
if replicateToLeft then |
1252 |
begin |
|
1253 |
ShiftWorld(-1); |
|
3611 | 1254 |
DrawLand(WorldDx, WorldDy); |
10533 | 1255 |
UnshiftWorld(); |
1256 |
end; |
|
1911 | 1257 |
|
10533 | 1258 |
if replicateToRight then |
1259 |
begin |
|
1260 |
ShiftWorld(1); |
|
1261 |
DrawLand(WorldDx, WorldDy); |
|
1262 |
UnshiftWorld(); |
|
1263 |
end; |
|
4 | 1264 |
|
10533 | 1265 |
DrawWater(255, 0, 0); |
4 | 1266 |
|
10358 | 1267 |
if replicateToLeft then |
10263
6ef900411158
here a personal experimental mockup of how I imagine wrapping world edges should look like. bouncing one could be similar just with mirrored stuff. please test and share opinion. note: you might wanna disable auto-cam
sheepluva
parents:
10251
diff
changeset
|
1268 |
begin |
10507
ed5df9cd251f
I'm such a dirty boi... cleaning up my own mess a little
sheepluva
parents:
10494
diff
changeset
|
1269 |
ShiftWorld(-1); |
13633
35d93b1e7fef
Fix foreground flakes (layer 2+6) disappearing when moving camera in world wrap world
Wuzzy <Wuzzy2@mail.ru>
parents:
13622
diff
changeset
|
1270 |
DrawVisualGears(1, true); |
10263
6ef900411158
here a personal experimental mockup of how I imagine wrapping world edges should look like. bouncing one could be similar just with mirrored stuff. please test and share opinion. note: you might wanna disable auto-cam
sheepluva
parents:
10251
diff
changeset
|
1271 |
DrawGears(); |
13633
35d93b1e7fef
Fix foreground flakes (layer 2+6) disappearing when moving camera in world wrap world
Wuzzy <Wuzzy2@mail.ru>
parents:
13622
diff
changeset
|
1272 |
DrawVisualGears(6, true); |
10507
ed5df9cd251f
I'm such a dirty boi... cleaning up my own mess a little
sheepluva
parents:
10494
diff
changeset
|
1273 |
UnshiftWorld(); |
10358 | 1274 |
end; |
1275 |
||
1276 |
if replicateToRight then |
|
1277 |
begin |
|
10507
ed5df9cd251f
I'm such a dirty boi... cleaning up my own mess a little
sheepluva
parents:
10494
diff
changeset
|
1278 |
ShiftWorld(1); |
13633
35d93b1e7fef
Fix foreground flakes (layer 2+6) disappearing when moving camera in world wrap world
Wuzzy <Wuzzy2@mail.ru>
parents:
13622
diff
changeset
|
1279 |
DrawVisualGears(1, true); |
10263
6ef900411158
here a personal experimental mockup of how I imagine wrapping world edges should look like. bouncing one could be similar just with mirrored stuff. please test and share opinion. note: you might wanna disable auto-cam
sheepluva
parents:
10251
diff
changeset
|
1280 |
DrawGears(); |
13633
35d93b1e7fef
Fix foreground flakes (layer 2+6) disappearing when moving camera in world wrap world
Wuzzy <Wuzzy2@mail.ru>
parents:
13622
diff
changeset
|
1281 |
DrawVisualGears(6, true); |
10507
ed5df9cd251f
I'm such a dirty boi... cleaning up my own mess a little
sheepluva
parents:
10494
diff
changeset
|
1282 |
UnshiftWorld(); |
10263
6ef900411158
here a personal experimental mockup of how I imagine wrapping world edges should look like. bouncing one could be similar just with mirrored stuff. please test and share opinion. note: you might wanna disable auto-cam
sheepluva
parents:
10251
diff
changeset
|
1283 |
end; |
6ef900411158
here a personal experimental mockup of how I imagine wrapping world edges should look like. bouncing one could be similar just with mirrored stuff. please test and share opinion. note: you might wanna disable auto-cam
sheepluva
parents:
10251
diff
changeset
|
1284 |
|
13633
35d93b1e7fef
Fix foreground flakes (layer 2+6) disappearing when moving camera in world wrap world
Wuzzy <Wuzzy2@mail.ru>
parents:
13622
diff
changeset
|
1285 |
DrawVisualGears(1, false); |
6580
6155187bf599
A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents:
6492
diff
changeset
|
1286 |
DrawGears; |
13633
35d93b1e7fef
Fix foreground flakes (layer 2+6) disappearing when moving camera in world wrap world
Wuzzy <Wuzzy2@mail.ru>
parents:
13622
diff
changeset
|
1287 |
DrawVisualGears(6, false); |
4 |