176 if AMxShift = 0 then DrawSprite(sprArrow, CursorPoint.X, CursorPoint.Y, (RealTicks shr 6) mod 8) |
176 if AMxShift = 0 then DrawSprite(sprArrow, CursorPoint.X, CursorPoint.Y, (RealTicks shr 6) mod 8) |
177 end; |
177 end; |
178 |
178 |
179 procedure MoveCamera; forward; |
179 procedure MoveCamera; forward; |
180 |
180 |
|
181 procedure DrawWater; |
|
182 var VertexBuffer: array [0..3] of TVertex2f; |
|
183 r: TSDL_Rect; |
|
184 begin |
|
185 // Water |
|
186 r.y:= WorldDy + cWaterLine + 32; |
|
187 if r.y < cScreenHeight then |
|
188 begin |
|
189 if r.y < 0 then r.y:= 0; |
|
190 |
|
191 glDisable(GL_TEXTURE_2D); |
|
192 VertexBuffer[0].X:= 0; |
|
193 VertexBuffer[0].Y:= r.y; |
|
194 VertexBuffer[1].X:= cScreenWidth; |
|
195 VertexBuffer[1].Y:= r.y; |
|
196 VertexBuffer[2].X:= cScreenWidth; |
|
197 VertexBuffer[2].Y:= cScreenHeight; |
|
198 VertexBuffer[3].X:= 0; |
|
199 VertexBuffer[3].Y:= cScreenHeight; |
|
200 |
|
201 glEnableClientState (GL_COLOR_ARRAY); |
|
202 glColorPointer(3, GL_UNSIGNED_BYTE, 0, @WaterColorArray[0]); |
|
203 |
|
204 glEnableClientState(GL_VERTEX_ARRAY); |
|
205 glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]); |
|
206 |
|
207 glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer)); |
|
208 |
|
209 glEnableClientState(GL_COLOR_ARRAY); |
|
210 glDisableClientState(GL_COLOR_ARRAY); |
|
211 |
|
212 glColor4f(1, 1, 1, 1); // disable coloring |
|
213 glEnable(GL_TEXTURE_2D) |
|
214 end |
|
215 end; |
|
216 |
181 procedure DrawWorld(Lag: LongInt); |
217 procedure DrawWorld(Lag: LongInt); |
182 var i, t: LongInt; |
218 var i, t: LongInt; |
183 r: TSDL_Rect; |
219 r: TSDL_Rect; |
184 tdx, tdy: Double; |
220 tdx, tdy: Double; |
185 grp: TCapGroup; |
221 grp: TCapGroup; |
186 s: string[15]; |
222 s: string[15]; |
187 VertexBuffer: array [0..3] of TVertex2f; |
|
188 |
223 |
189 procedure DrawRepeated(spr: TSprite; Shift: LongInt); |
224 procedure DrawRepeated(spr: TSprite; Shift: LongInt); |
190 var i, w: LongInt; |
225 var i, w: LongInt; |
191 begin |
226 begin |
192 w:= SpritesData[spr].Width; |
227 w:= SpritesData[spr].Width; |
223 {$WARNINGS ON} |
258 {$WARNINGS ON} |
224 end; |
259 end; |
225 |
260 |
226 |
261 |
227 DrawLand(WorldDx, WorldDy); |
262 DrawLand(WorldDx, WorldDy); |
228 // Water |
263 |
229 r.y:= WorldDy + cWaterLine + 32; |
264 DrawWater; |
230 if r.y < cScreenHeight then |
|
231 begin |
|
232 if r.y < 0 then r.y:= 0; |
|
233 |
|
234 glDisable(GL_TEXTURE_2D); |
|
235 VertexBuffer[0].X:= 0; |
|
236 VertexBuffer[0].Y:= r.y; |
|
237 VertexBuffer[1].X:= cScreenWidth; |
|
238 VertexBuffer[1].Y:= r.y; |
|
239 VertexBuffer[2].X:= cScreenWidth; |
|
240 VertexBuffer[2].Y:= cScreenHeight; |
|
241 VertexBuffer[3].X:= 0; |
|
242 VertexBuffer[3].Y:= cScreenHeight; |
|
243 |
|
244 glEnableClientState (GL_COLOR_ARRAY); |
|
245 glColorPointer(3, GL_UNSIGNED_BYTE, 0, @WaterColorArray[0]); |
|
246 |
|
247 glEnableClientState(GL_VERTEX_ARRAY); |
|
248 glVertexPointer(2, GL_FLOAT, 0, @VertexBuffer[0]); |
|
249 |
|
250 glDrawArrays(GL_TRIANGLE_FAN, 0, Length(VertexBuffer)); |
|
251 |
|
252 glEnableClientState(GL_COLOR_ARRAY); |
|
253 glDisableClientState(GL_COLOR_ARRAY); |
|
254 |
|
255 glColor4f(1, 1, 1, 1); // disable coloring |
|
256 glEnable(GL_TEXTURE_2D) |
|
257 end; |
|
258 |
265 |
259 // Attack bar |
266 // Attack bar |
260 if CurrentTeam <> nil then |
267 if CurrentTeam <> nil then |
261 case AttackBar of |
268 case AttackBar of |
262 (* 1: begin |
269 (* 1: begin |