162 prevPoint.X:= 0; |
164 prevPoint.X:= 0; |
163 prevPoint.Y:= cScreenHeight div 2; |
165 prevPoint.Y:= cScreenHeight div 2; |
164 WorldDx:= - (LAND_WIDTH div 2) + cScreenWidth div 2; |
166 WorldDx:= - (LAND_WIDTH div 2) + cScreenWidth div 2; |
165 WorldDy:= - (LAND_HEIGHT - (playHeight div 2)) + (cScreenHeight div 2); |
167 WorldDy:= - (LAND_HEIGHT - (playHeight div 2)) + (cScreenHeight div 2); |
166 AMxShift:= 210; |
168 AMxShift:= 210; |
|
169 SkyOffset:= (10 * min(0, -145 - (WorldDy - trunc(cScreenHeight/cScaleFactor) - (cScreenHeight div 2) + cWaterLine))) div 35; |
|
170 HorizontOffset:= (10 * min(0, -145 - (WorldDy - trunc(cScreenHeight/cScaleFactor) - (cScreenHeight div 2) + cWaterLine))) div 55; |
167 end; |
171 end; |
168 |
172 |
169 procedure ShowAmmoMenu; |
173 procedure ShowAmmoMenu; |
170 const MENUSPEED = 15; |
174 const MENUSPEED = 15; |
171 var x, y, i, t, l, g: LongInt; |
175 var x, y, i, t, l, g: LongInt; |
395 w:= SpritesData[spr].Width; |
399 w:= SpritesData[spr].Width; |
396 i:= Shift mod w; |
400 i:= Shift mod w; |
397 if i > 0 then dec(i, w); |
401 if i > 0 then dec(i, w); |
398 dec(i, w * (sw div w + 1)); |
402 dec(i, w * (sw div w + 1)); |
399 repeat |
403 repeat |
400 DrawSprite(spr, i, WorldDy + LAND_HEIGHT - SpritesData[spr].Height - OffsetY, 0); |
404 DrawSprite(spr, i, WorldDy + LAND_HEIGHT + OffsetY - SpritesData[spr].Height, 0); |
401 inc(i, w) |
405 inc(i, w) |
402 until i > sw |
406 until i > sw |
403 end else |
407 end else |
404 begin |
408 begin |
405 w:= SpritesData[spr].Width; |
409 w:= SpritesData[spr].Width; |
406 dec(Shift, w div 2); |
410 dec(Shift, w div 2); |
407 DrawSprite(spr, Shift, WorldDy + LAND_HEIGHT - SpritesData[spr].Height - OffsetY, 0); |
411 DrawSprite(spr, Shift, WorldDy + LAND_HEIGHT + OffsetY - SpritesData[spr].Height, 0); |
408 |
412 |
409 sw:= round(cScreenWidth / cScaleFactor); |
413 sw:= round(cScreenWidth / cScaleFactor); |
410 |
414 |
411 i:= Shift - SpritesData[sprL].Width; |
415 i:= Shift - SpritesData[sprL].Width; |
412 while i >= -sw - SpritesData[sprL].Width do |
416 while i >= -sw - SpritesData[sprL].Width do |
413 begin |
417 begin |
414 DrawSprite(sprL, i, WorldDy + LAND_HEIGHT - SpritesData[sprL].Height - OffsetY, 0); |
418 DrawSprite(sprL, i, WorldDy + LAND_HEIGHT + OffsetY - SpritesData[sprL].Height, 0); |
415 dec(i, SpritesData[sprL].Width); |
419 dec(i, SpritesData[sprL].Width); |
416 end; |
420 end; |
417 |
421 |
418 i:= Shift + w; |
422 i:= Shift + w; |
419 while i <= sw do |
423 while i <= sw do |
420 begin |
424 begin |
421 DrawSprite(sprR, i, WorldDy + LAND_HEIGHT - SpritesData[sprR].Height - OffsetY, 0); |
425 DrawSprite(sprR, i, WorldDy + LAND_HEIGHT + OffsetY - SpritesData[sprR].Height, 0); |
422 inc(i, SpritesData[sprR].Width) |
426 inc(i, SpritesData[sprR].Width) |
423 end |
427 end |
424 end |
428 end |
425 end; |
429 end; |
426 |
430 |
445 begin |
449 begin |
446 zoom:= zoom + 0.002 * Lag; |
450 zoom:= zoom + 0.002 * Lag; |
447 if ZoomValue < zoom then zoom:= ZoomValue |
451 if ZoomValue < zoom then zoom:= ZoomValue |
448 end; |
452 end; |
449 |
453 |
450 screenBottom:= WorldDy - trunc(cScreenHeight/cScaleFactor) - (cScreenHeight div 2) + cWaterLine; |
454 offsetY:= 10 * min(0, -145 - (WorldDy - trunc(cScreenHeight/cScaleFactor) - (cScreenHeight div 2) + cWaterLine)); |
|
455 |
|
456 SkyOffset:= offsetY div 35; |
|
457 HorizontOffset:= offsetY div 55; |
451 |
458 |
452 // Sky |
459 // Sky |
453 glClear(GL_COLOR_BUFFER_BIT); |
460 glClear(GL_COLOR_BUFFER_BIT); |
454 glEnable(GL_BLEND); |
461 glEnable(GL_BLEND); |
455 glEnable(GL_TEXTURE_2D); |
462 glEnable(GL_TEXTURE_2D); |
459 if not isPaused then MoveCamera; |
466 if not isPaused then MoveCamera; |
460 |
467 |
461 if not cReducedQuality then |
468 if not cReducedQuality then |
462 begin |
469 begin |
463 // background |
470 // background |
464 DrawRepeated(sprSky, sprSkyL, sprSkyR, (WorldDx + LAND_WIDTH div 2) * 3 div 8, 0); |
471 DrawRepeated(sprSky, sprSkyL, sprSkyR, (WorldDx + LAND_WIDTH div 2) * 3 div 8, SkyOffset); |
465 DrawRepeated(sprHorizont, sprHorizontL, sprHorizontR, (WorldDx + LAND_WIDTH div 2) * 3 div 5, - cWaveHeight - screenBottom div 10); |
472 DrawRepeated(sprHorizont, sprHorizontL, sprHorizontR, (WorldDx + LAND_WIDTH div 2) * 3 div 5, HorizontOffset); |
466 |
473 |
467 DrawVisualGears(0); |
474 DrawVisualGears(0); |
468 end; |
475 end; |
469 |
476 |
470 // Waves |
477 // Waves |
471 offsetY:= 10 * min(0, -145 - screenBottom); |
478 DrawWater(255, SkyOffset); |
472 DrawWater(255, offsetY div 35); |
|
473 DrawWaves( 1, 0 - WorldDx div 32, - cWaveHeight + offsetY div 35, 0.25); |
479 DrawWaves( 1, 0 - WorldDx div 32, - cWaveHeight + offsetY div 35, 0.25); |
474 DrawWaves( -1, 25 + WorldDx div 25, - cWaveHeight + offsetY div 38, 0.19); |
480 DrawWaves( -1, 25 + WorldDx div 25, - cWaveHeight + offsetY div 38, 0.19); |
475 DrawWaves( 1, 75 - WorldDx div 19, - cWaveHeight + offsetY div 45, 0.14); |
481 DrawWaves( 1, 75 - WorldDx div 19, - cWaveHeight + offsetY div 45, 0.14); |
476 DrawWaves(-1, 100 + WorldDx div 14, - cWaveHeight + offsetY div 70, 0.09); |
482 DrawWaves(-1, 100 + WorldDx div 14, - cWaveHeight + offsetY div 70, 0.09); |
477 |
483 |