hedgewars/uVisualGearsHandlers.pas
author S.D.
Tue, 27 Sep 2022 14:59:03 +0300
changeset 15878 fc3cb23fd26f
parent 15773 da1bb21e6fbf
child 15900 128ace913837
permissions -rw-r--r--
Allow to see rooms of incompatible versions in the lobby For the new clients the room version is shown in a separate column. There is also a hack for previous versions clients: the room vesion specifier is prepended to the room names for rooms of incompatible versions, and the server shows 'incompatible version' error if the client tries to join them.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
     1
(*
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
     2
 * Hedgewars, a free turn based strategy game
11046
47a8c19ecb60 more copyright fixes
sheepluva
parents: 10859
diff changeset
     3
 * Copyright (c) 2004-2015 Andrey Korotaev <unC0Rr@gmail.com>
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
     4
 *
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
     8
 *
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    12
 * GNU General Public License for more details.
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    13
 *
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    14
 * You should have received a copy of the GNU General Public License
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    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: 10015
diff changeset
    16
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    17
 *)
5121
2d34ec60992c added some comments in order to confuse the GSoC students as much as possible ;D
sheepluva
parents: 4976
diff changeset
    18
2d34ec60992c added some comments in order to confuse the GSoC students as much as possible ;D
sheepluva
parents: 4976
diff changeset
    19
(*
2d34ec60992c added some comments in order to confuse the GSoC students as much as possible ;D
sheepluva
parents: 4976
diff changeset
    20
 * This file contains the step handlers for visual gears.
2d34ec60992c added some comments in order to confuse the GSoC students as much as possible ;D
sheepluva
parents: 4976
diff changeset
    21
 *
2d34ec60992c added some comments in order to confuse the GSoC students as much as possible ;D
sheepluva
parents: 4976
diff changeset
    22
 * Since the effects of visual gears do not affect the course of the game,
2d34ec60992c added some comments in order to confuse the GSoC students as much as possible ;D
sheepluva
parents: 4976
diff changeset
    23
 * no "synchronization" between players is required.
2d34ec60992c added some comments in order to confuse the GSoC students as much as possible ;D
sheepluva
parents: 4976
diff changeset
    24
 * => The usage of safe functions or data types (e.g. GetRandom() or hwFloat)
2d34ec60992c added some comments in order to confuse the GSoC students as much as possible ;D
sheepluva
parents: 4976
diff changeset
    25
 * is usually not necessary and therefore undesirable.
2d34ec60992c added some comments in order to confuse the GSoC students as much as possible ;D
sheepluva
parents: 4976
diff changeset
    26
 *)
10015
4feced261c68 partial merge of the webgl branch
koda
parents: 9998 9960
diff changeset
    27
4feced261c68 partial merge of the webgl branch
koda
parents: 9998 9960
diff changeset
    28
{$INCLUDE "options.inc"}
4feced261c68 partial merge of the webgl branch
koda
parents: 9998 9960
diff changeset
    29
9283
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    30
unit uVisualGearsHandlers;
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    31
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    32
interface
10193
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
    33
uses uTypes, uGears;
9283
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    34
9960
fac73b8a52d3 Fix doStepHandlers confusion
unc0rr
parents: 9950
diff changeset
    35
var doStepVGHandlers: array[TVisualGearType] of TVGearStepProcedure;
9283
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    36
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    37
procedure doStepFlake(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    38
procedure doStepBeeTrace(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    39
procedure doStepCloud(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    40
procedure doStepExpl(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    41
procedure doStepNote(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    42
procedure doStepLineTrail(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    43
procedure doStepEgg(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    44
procedure doStepFire(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    45
procedure doStepShell(Gear: PVisualGear; Steps: Longword);
15773
da1bb21e6fbf Teach vgtSmallDamageTag to use dX, dY and screen coords (Frame<>0)
Wuzzy <Wuzzy2@mail.ru>
parents: 15772
diff changeset
    46
procedure doStepSmallDamageTag(Gear: PVisualGear; Steps: Longword);
9283
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    47
procedure doStepBubble(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    48
procedure doStepSteam(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    49
procedure doStepAmmo(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    50
procedure doStepSmoke(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    51
procedure doStepDust(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    52
procedure doStepSplash(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    53
procedure doStepDroplet(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    54
procedure doStepSmokeRing(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    55
procedure doStepFeather(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    56
procedure doStepTeamHealthSorterWork(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    57
procedure doStepTeamHealthSorter(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    58
procedure doStepSpeechBubbleWork(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    59
procedure doStepSpeechBubble(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    60
procedure doStepHealthTagWork(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    61
procedure doStepHealthTagWorkUnderWater(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    62
procedure doStepHealthTag(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    63
procedure doStepSmokeTrace(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    64
procedure doStepExplosionWork(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    65
procedure doStepExplosion(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    66
procedure doStepBigExplosionWork(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    67
procedure doStepBigExplosion(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    68
procedure doStepChunk(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    69
procedure doStepBulletHit(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    70
procedure doStepCircle(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    71
procedure doStepSmoothWindBar(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    72
procedure doStepStraightShot(Gear: PVisualGear; Steps: Longword);
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    73
9720
453a1c29b7e4 Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents: 9656
diff changeset
    74
function isSorterActive: boolean; inline;
9283
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    75
procedure initModule;
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    76
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
    77
implementation
11822
4600dcb9db4f - Use IntToStr() in preference to Str()
unc0rr
parents: 11739
diff changeset
    78
uses uCollisions, uVariables, Math, uConsts, uVisualGearsList, uFloat, uSound, uRenderUtils, uWorld, uUtils;
5121
2d34ec60992c added some comments in order to confuse the GSoC students as much as possible ;D
sheepluva
parents: 4976
diff changeset
    79
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    80
procedure doStepFlake(Gear: PVisualGear; Steps: Longword);
4379
6cd6b77df8b8 No need for Extended data type just to draw some visual gears. It's a shame we have Math unit dependency
unC0Rr
parents: 4365
diff changeset
    81
var sign: real;
15586
19c85b010144 Add fade-in effect when flake appears at top
Wuzzy <Wuzzy2@mail.ru>
parents: 15585
diff changeset
    82
    moved, rising, outside, fallingFadeIn: boolean;
15583
e1078c72ad60 Fade out rising flakes at the top
Wuzzy <Wuzzy2@mail.ru>
parents: 15239
diff changeset
    83
    vfc, vft, diff: LongWord;
12312
83131d0e747b clean up flake falling/rising code. this should fix issue #157
sheepluva
parents: 11868
diff changeset
    84
    spawnMargin: LongInt;
83131d0e747b clean up flake falling/rising code. this should fix issue #157
sheepluva
parents: 11868
diff changeset
    85
const
83131d0e747b clean up flake falling/rising code. this should fix issue #157
sheepluva
parents: 11868
diff changeset
    86
    randMargin = 50;
15586
19c85b010144 Add fade-in effect when flake appears at top
Wuzzy <Wuzzy2@mail.ru>
parents: 15585
diff changeset
    87
    maxFallSpeedForFadeIn = 750;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    88
begin
11739
eee922f69d1b fix issue 8: Static skull and bones flakes near the water in Sudden Death in themes without flakes
sheepluva
parents: 11046
diff changeset
    89
if SuddenDeathDmg then
eee922f69d1b fix issue 8: Static skull and bones flakes near the water in Sudden Death in themes without flakes
sheepluva
parents: 11046
diff changeset
    90
    begin
eee922f69d1b fix issue 8: Static skull and bones flakes near the water in Sudden Death in themes without flakes
sheepluva
parents: 11046
diff changeset
    91
    if (vobSDCount = 0) then exit;
eee922f69d1b fix issue 8: Static skull and bones flakes near the water in Sudden Death in themes without flakes
sheepluva
parents: 11046
diff changeset
    92
    end
eee922f69d1b fix issue 8: Static skull and bones flakes near the water in Sudden Death in themes without flakes
sheepluva
parents: 11046
diff changeset
    93
else
eee922f69d1b fix issue 8: Static skull and bones flakes near the water in Sudden Death in themes without flakes
sheepluva
parents: 11046
diff changeset
    94
    if (vobCount = 0) then exit;
3611
ed00aa2b339e interpret parameters before initializing everything
koda
parents: 3597
diff changeset
    95
3593
ae50f63e4fa9 Remove hwFloat from VisualGears - they don't need the precision for syncing purposes, and it saves a whole lot of operations.
nemo
parents: 3592
diff changeset
    96
sign:= 1;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    97
with Gear^ do
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    98
    begin
10625
125e120165aa flake FrameTicks value of 0 now indicades that the frame should not be changed
sheepluva
parents: 10624
diff changeset
    99
125e120165aa flake FrameTicks value of 0 now indicades that the frame should not be changed
sheepluva
parents: 10624
diff changeset
   100
    X:= X + (cWindSpeedf * 400 + dX + tdX) * Steps * Gear^.Scale;
125e120165aa flake FrameTicks value of 0 now indicades that the frame should not be changed
sheepluva
parents: 10624
diff changeset
   101
125e120165aa flake FrameTicks value of 0 now indicades that the frame should not be changed
sheepluva
parents: 10624
diff changeset
   102
    if SuddenDeathDmg then
125e120165aa flake FrameTicks value of 0 now indicades that the frame should not be changed
sheepluva
parents: 10624
diff changeset
   103
        begin
125e120165aa flake FrameTicks value of 0 now indicades that the frame should not be changed
sheepluva
parents: 10624
diff changeset
   104
        Y:= Y + (dY + tdY + cGravityf * vobSDFallSpeed) * Steps * Gear^.Scale;
125e120165aa flake FrameTicks value of 0 now indicades that the frame should not be changed
sheepluva
parents: 10624
diff changeset
   105
        vfc:= vobSDFramesCount;
125e120165aa flake FrameTicks value of 0 now indicades that the frame should not be changed
sheepluva
parents: 10624
diff changeset
   106
        vft:= vobSDFrameTicks;
15586
19c85b010144 Add fade-in effect when flake appears at top
Wuzzy <Wuzzy2@mail.ru>
parents: 15585
diff changeset
   107
        fallingFadeIn := vobSDFallSpeed <= maxFallSpeedForFadeIn;
10625
125e120165aa flake FrameTicks value of 0 now indicades that the frame should not be changed
sheepluva
parents: 10624
diff changeset
   108
        end
125e120165aa flake FrameTicks value of 0 now indicades that the frame should not be changed
sheepluva
parents: 10624
diff changeset
   109
    else
125e120165aa flake FrameTicks value of 0 now indicades that the frame should not be changed
sheepluva
parents: 10624
diff changeset
   110
        begin
125e120165aa flake FrameTicks value of 0 now indicades that the frame should not be changed
sheepluva
parents: 10624
diff changeset
   111
        Y:= Y + (dY + tdY + cGravityf * vobFallSpeed) * Steps * Gear^.Scale;
125e120165aa flake FrameTicks value of 0 now indicades that the frame should not be changed
sheepluva
parents: 10624
diff changeset
   112
        vfc:= vobFramesCount;
125e120165aa flake FrameTicks value of 0 now indicades that the frame should not be changed
sheepluva
parents: 10624
diff changeset
   113
        vft:= vobFrameTicks;
15586
19c85b010144 Add fade-in effect when flake appears at top
Wuzzy <Wuzzy2@mail.ru>
parents: 15585
diff changeset
   114
        fallingFadeIn := vobFallSpeed <= maxFallSpeedForFadeIn;
10625
125e120165aa flake FrameTicks value of 0 now indicades that the frame should not be changed
sheepluva
parents: 10624
diff changeset
   115
        end;
125e120165aa flake FrameTicks value of 0 now indicades that the frame should not be changed
sheepluva
parents: 10624
diff changeset
   116
125e120165aa flake FrameTicks value of 0 now indicades that the frame should not be changed
sheepluva
parents: 10624
diff changeset
   117
    if vft > 0 then
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   118
        begin
10623
81f1cf934827 Skip frame increments if FrameTicks is over 1000 seconds per frame, probably indicating static at that point.
nemo
parents: 10526
diff changeset
   119
        inc(FrameTicks, Steps);
10625
125e120165aa flake FrameTicks value of 0 now indicades that the frame should not be changed
sheepluva
parents: 10624
diff changeset
   120
        if FrameTicks > vft then
10623
81f1cf934827 Skip frame increments if FrameTicks is over 1000 seconds per frame, probably indicating static at that point.
nemo
parents: 10526
diff changeset
   121
            begin
10625
125e120165aa flake FrameTicks value of 0 now indicades that the frame should not be changed
sheepluva
parents: 10624
diff changeset
   122
            dec(FrameTicks, vft);
10623
81f1cf934827 Skip frame increments if FrameTicks is over 1000 seconds per frame, probably indicating static at that point.
nemo
parents: 10526
diff changeset
   123
            inc(Frame);
10625
125e120165aa flake FrameTicks value of 0 now indicades that the frame should not be changed
sheepluva
parents: 10624
diff changeset
   124
            if Frame = vfc then
10623
81f1cf934827 Skip frame increments if FrameTicks is over 1000 seconds per frame, probably indicating static at that point.
nemo
parents: 10526
diff changeset
   125
                Frame:= 0
81f1cf934827 Skip frame increments if FrameTicks is over 1000 seconds per frame, probably indicating static at that point.
nemo
parents: 10526
diff changeset
   126
            end;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   127
        end;
10625
125e120165aa flake FrameTicks value of 0 now indicades that the frame should not be changed
sheepluva
parents: 10624
diff changeset
   128
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   129
    Angle:= Angle + dAngle * Steps;
4152
07008cb354f9 Prevent vgtFlake's rotation angle to grow too high in its absolute value
unc0rr
parents: 4034
diff changeset
   130
    if Angle > 360 then
07008cb354f9 Prevent vgtFlake's rotation angle to grow too high in its absolute value
unc0rr
parents: 4034
diff changeset
   131
        Angle:= Angle - 360
07008cb354f9 Prevent vgtFlake's rotation angle to grow too high in its absolute value
unc0rr
parents: 4034
diff changeset
   132
    else
07008cb354f9 Prevent vgtFlake's rotation angle to grow too high in its absolute value
unc0rr
parents: 4034
diff changeset
   133
        if Angle < - 360 then
07008cb354f9 Prevent vgtFlake's rotation angle to grow too high in its absolute value
unc0rr
parents: 4034
diff changeset
   134
            Angle:= Angle + 360;
8330
aaefa587e277 update branch with default
koda
parents: 8026 8204
diff changeset
   135
aaefa587e277 update branch with default
koda
parents: 8026 8204
diff changeset
   136
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   137
    if (round(X) >= cLeftScreenBorder)
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   138
    and (round(X) <= cRightScreenBorder)
10731
bc359abe0484 tweaks to try and make flakes better behaved in negative gravity. branch safe.
nemo
parents: 10625
diff changeset
   139
    and (round(Y) - 250 <= LAND_HEIGHT)
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   140
    and (Timer > 0) and (Timer-Steps > 0) then
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   141
        begin
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   142
        if tdX > 0 then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   143
            sign := 1
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   144
        else
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   145
            sign:= -1;
3593
ae50f63e4fa9 Remove hwFloat from VisualGears - they don't need the precision for syncing purposes, and it saves a whole lot of operations.
nemo
parents: 3592
diff changeset
   146
        tdX:= tdX - 0.005*Steps*sign;
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   147
        if ((sign < 0) and (tdX > 0)) or ((sign > 0) and (tdX < 0)) then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   148
            tdX:= 0;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   149
        if tdX > 0 then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   150
            sign := 1
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   151
        else
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   152
            sign:= -1;
3593
ae50f63e4fa9 Remove hwFloat from VisualGears - they don't need the precision for syncing purposes, and it saves a whole lot of operations.
nemo
parents: 3592
diff changeset
   153
        tdY:= tdY - 0.005*Steps*sign;
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   154
        if ((sign < 0) and (tdY > 0)) or ((sign > 0) and (tdY < 0)) then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   155
            tdY:= 0;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   156
        dec(Timer, Steps)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   157
        end
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   158
    else
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   159
        begin
7375
16ae2e1c9005 Tell AI to avoid edges, especially ones over water (this does not include checking whether a knock could drown yet). Also make flakes pick a new random dx/dy on respawn to further reduce patterns. Also disable a couple of weapons for the particularly dumb AI levels, and disable switching for the dumbest.
nemo
parents: 7206
diff changeset
   160
        moved:= false;
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   161
        if round(X) < cLeftScreenBorder then
7375
16ae2e1c9005 Tell AI to avoid edges, especially ones over water (this does not include checking whether a knock could drown yet). Also make flakes pick a new random dx/dy on respawn to further reduce patterns. Also disable a couple of weapons for the particularly dumb AI levels, and disable switching for the dumbest.
nemo
parents: 7206
diff changeset
   162
            begin
16ae2e1c9005 Tell AI to avoid edges, especially ones over water (this does not include checking whether a knock could drown yet). Also make flakes pick a new random dx/dy on respawn to further reduce patterns. Also disable a couple of weapons for the particularly dumb AI levels, and disable switching for the dumbest.
nemo
parents: 7206
diff changeset
   163
            X:= X + cScreenSpace;
16ae2e1c9005 Tell AI to avoid edges, especially ones over water (this does not include checking whether a knock could drown yet). Also make flakes pick a new random dx/dy on respawn to further reduce patterns. Also disable a couple of weapons for the particularly dumb AI levels, and disable switching for the dumbest.
nemo
parents: 7206
diff changeset
   164
            moved:= true
16ae2e1c9005 Tell AI to avoid edges, especially ones over water (this does not include checking whether a knock could drown yet). Also make flakes pick a new random dx/dy on respawn to further reduce patterns. Also disable a couple of weapons for the particularly dumb AI levels, and disable switching for the dumbest.
nemo
parents: 7206
diff changeset
   165
            end
10731
bc359abe0484 tweaks to try and make flakes better behaved in negative gravity. branch safe.
nemo
parents: 10625
diff changeset
   166
        else if round(X) > cRightScreenBorder then
bc359abe0484 tweaks to try and make flakes better behaved in negative gravity. branch safe.
nemo
parents: 10625
diff changeset
   167
            begin
bc359abe0484 tweaks to try and make flakes better behaved in negative gravity. branch safe.
nemo
parents: 10625
diff changeset
   168
            X:= X - cScreenSpace;
bc359abe0484 tweaks to try and make flakes better behaved in negative gravity. branch safe.
nemo
parents: 10625
diff changeset
   169
            moved:= true
bc359abe0484 tweaks to try and make flakes better behaved in negative gravity. branch safe.
nemo
parents: 10625
diff changeset
   170
            end;
11868
60c8bb8bc1d7 rising flakes will no longer fly forever [reviewed, cleaned up and committed by sheepluva]
KoBeWi <kobewi4e@gmail.com>
parents: 11822
diff changeset
   171
12312
83131d0e747b clean up flake falling/rising code. this should fix issue #157
sheepluva
parents: 11868
diff changeset
   172
        // it's possible for flakes to move upwards
83131d0e747b clean up flake falling/rising code. this should fix issue #157
sheepluva
parents: 11868
diff changeset
   173
        if SuddenDeathDmg then
83131d0e747b clean up flake falling/rising code. this should fix issue #157
sheepluva
parents: 11868
diff changeset
   174
            rising:= (cGravityf * vobSDFallSpeed) < 0
83131d0e747b clean up flake falling/rising code. this should fix issue #157
sheepluva
parents: 11868
diff changeset
   175
        else
83131d0e747b clean up flake falling/rising code. this should fix issue #157
sheepluva
parents: 11868
diff changeset
   176
            rising:= (cGravityf * vobFallSpeed) < 0;
83131d0e747b clean up flake falling/rising code. this should fix issue #157
sheepluva
parents: 11868
diff changeset
   177
83131d0e747b clean up flake falling/rising code. this should fix issue #157
sheepluva
parents: 11868
diff changeset
   178
        if gear^.layer = 2 then
83131d0e747b clean up flake falling/rising code. this should fix issue #157
sheepluva
parents: 11868
diff changeset
   179
            spawnMargin:= 400
83131d0e747b clean up flake falling/rising code. this should fix issue #157
sheepluva
parents: 11868
diff changeset
   180
        else
83131d0e747b clean up flake falling/rising code. this should fix issue #157
sheepluva
parents: 11868
diff changeset
   181
            spawnMargin:= 200;
83131d0e747b clean up flake falling/rising code. this should fix issue #157
sheepluva
parents: 11868
diff changeset
   182
83131d0e747b clean up flake falling/rising code. this should fix issue #157
sheepluva
parents: 11868
diff changeset
   183
        // flake fell far below map?
83131d0e747b clean up flake falling/rising code. this should fix issue #157
sheepluva
parents: 11868
diff changeset
   184
        outside:= (not rising) and (round(Y) - spawnMargin + randMargin > LAND_HEIGHT);
83131d0e747b clean up flake falling/rising code. this should fix issue #157
sheepluva
parents: 11868
diff changeset
   185
        // if not, did it rise far above map?
15585
f8c1492601fe Flakes: Only spawn them inside valid area
Wuzzy <Wuzzy2@mail.ru>
parents: 15583
diff changeset
   186
        outside:= outside or (rising and (round(Y) < LAND_HEIGHT - (cCloudOffset - 110)));
12312
83131d0e747b clean up flake falling/rising code. this should fix issue #157
sheepluva
parents: 11868
diff changeset
   187
83131d0e747b clean up flake falling/rising code. this should fix issue #157
sheepluva
parents: 11868
diff changeset
   188
        // if flake left acceptable vertical area, respawn it opposite side
83131d0e747b clean up flake falling/rising code. this should fix issue #157
sheepluva
parents: 11868
diff changeset
   189
        if outside then
7206
ce46b56ae9f5 Double sniper rifle damage (AI seems unaware of second shot, when playing). Spread out flakes along X when looping and add a little Y variation. This avoids noticeable patterns. Especially on the rarer close layer or dense flakes like rain (for Y)
nemo
parents: 6913
diff changeset
   190
            begin
12312
83131d0e747b clean up flake falling/rising code. this should fix issue #157
sheepluva
parents: 11868
diff changeset
   191
            if rising then
15586
19c85b010144 Add fade-in effect when flake appears at top
Wuzzy <Wuzzy2@mail.ru>
parents: 15585
diff changeset
   192
                // rising flake
15583
e1078c72ad60 Fade out rising flakes at the top
Wuzzy <Wuzzy2@mail.ru>
parents: 15239
diff changeset
   193
                begin
e1078c72ad60 Fade out rising flakes at the top
Wuzzy <Wuzzy2@mail.ru>
parents: 15239
diff changeset
   194
                if State = 0 then
e1078c72ad60 Fade out rising flakes at the top
Wuzzy <Wuzzy2@mail.ru>
parents: 15239
diff changeset
   195
                    begin
e1078c72ad60 Fade out rising flakes at the top
Wuzzy <Wuzzy2@mail.ru>
parents: 15239
diff changeset
   196
                    // fade out rising flake
15585
f8c1492601fe Flakes: Only spawn them inside valid area
Wuzzy <Wuzzy2@mail.ru>
parents: 15583
diff changeset
   197
                    diff:= (LAND_HEIGHT - (cCloudOffset - 110)) - round(Y);
15583
e1078c72ad60 Fade out rising flakes at the top
Wuzzy <Wuzzy2@mail.ru>
parents: 15239
diff changeset
   198
                    diff:= Min(diff*2, $FF);
e1078c72ad60 Fade out rising flakes at the top
Wuzzy <Wuzzy2@mail.ru>
parents: 15239
diff changeset
   199
                    if diff >= $FF then
e1078c72ad60 Fade out rising flakes at the top
Wuzzy <Wuzzy2@mail.ru>
parents: 15239
diff changeset
   200
                        begin
15586
19c85b010144 Add fade-in effect when flake appears at top
Wuzzy <Wuzzy2@mail.ru>
parents: 15585
diff changeset
   201
                        // end of fade-out
15583
e1078c72ad60 Fade out rising flakes at the top
Wuzzy <Wuzzy2@mail.ru>
parents: 15239
diff changeset
   202
                        diff:= $FF;
e1078c72ad60 Fade out rising flakes at the top
Wuzzy <Wuzzy2@mail.ru>
parents: 15239
diff changeset
   203
                        State:= 1;
e1078c72ad60 Fade out rising flakes at the top
Wuzzy <Wuzzy2@mail.ru>
parents: 15239
diff changeset
   204
                        end;
e1078c72ad60 Fade out rising flakes at the top
Wuzzy <Wuzzy2@mail.ru>
parents: 15239
diff changeset
   205
                    Tint:= (Tint and $FFFFFF00) or ($FF - diff);
e1078c72ad60 Fade out rising flakes at the top
Wuzzy <Wuzzy2@mail.ru>
parents: 15239
diff changeset
   206
                    end
e1078c72ad60 Fade out rising flakes at the top
Wuzzy <Wuzzy2@mail.ru>
parents: 15239
diff changeset
   207
                else
e1078c72ad60 Fade out rising flakes at the top
Wuzzy <Wuzzy2@mail.ru>
parents: 15239
diff changeset
   208
                    begin
15586
19c85b010144 Add fade-in effect when flake appears at top
Wuzzy <Wuzzy2@mail.ru>
parents: 15585
diff changeset
   209
                    // reset and move back to bottom
15583
e1078c72ad60 Fade out rising flakes at the top
Wuzzy <Wuzzy2@mail.ru>
parents: 15239
diff changeset
   210
                    Y:= LAND_HEIGHT + spawnMargin + random(50);
e1078c72ad60 Fade out rising flakes at the top
Wuzzy <Wuzzy2@mail.ru>
parents: 15239
diff changeset
   211
                    moved:= true;
e1078c72ad60 Fade out rising flakes at the top
Wuzzy <Wuzzy2@mail.ru>
parents: 15239
diff changeset
   212
                    State:= 0;
e1078c72ad60 Fade out rising flakes at the top
Wuzzy <Wuzzy2@mail.ru>
parents: 15239
diff changeset
   213
                    Tint:= Tint or $FF;
e1078c72ad60 Fade out rising flakes at the top
Wuzzy <Wuzzy2@mail.ru>
parents: 15239
diff changeset
   214
                    end;
e1078c72ad60 Fade out rising flakes at the top
Wuzzy <Wuzzy2@mail.ru>
parents: 15239
diff changeset
   215
                end
10731
bc359abe0484 tweaks to try and make flakes better behaved in negative gravity. branch safe.
nemo
parents: 10625
diff changeset
   216
            else
15586
19c85b010144 Add fade-in effect when flake appears at top
Wuzzy <Wuzzy2@mail.ru>
parents: 15585
diff changeset
   217
                // falling flake
15583
e1078c72ad60 Fade out rising flakes at the top
Wuzzy <Wuzzy2@mail.ru>
parents: 15239
diff changeset
   218
                begin
15586
19c85b010144 Add fade-in effect when flake appears at top
Wuzzy <Wuzzy2@mail.ru>
parents: 15585
diff changeset
   219
                // move back to top
12312
83131d0e747b clean up flake falling/rising code. this should fix issue #157
sheepluva
parents: 11868
diff changeset
   220
                Y:= Y - (1024 + spawnMargin + random(50));
15583
e1078c72ad60 Fade out rising flakes at the top
Wuzzy <Wuzzy2@mail.ru>
parents: 15239
diff changeset
   221
                moved:= true;
15586
19c85b010144 Add fade-in effect when flake appears at top
Wuzzy <Wuzzy2@mail.ru>
parents: 15585
diff changeset
   222
                // activate fade-in if not falling too fast
19c85b010144 Add fade-in effect when flake appears at top
Wuzzy <Wuzzy2@mail.ru>
parents: 15585
diff changeset
   223
                if fallingFadeIn then
19c85b010144 Add fade-in effect when flake appears at top
Wuzzy <Wuzzy2@mail.ru>
parents: 15585
diff changeset
   224
                    begin
19c85b010144 Add fade-in effect when flake appears at top
Wuzzy <Wuzzy2@mail.ru>
parents: 15585
diff changeset
   225
                    State:= $FF;
19c85b010144 Add fade-in effect when flake appears at top
Wuzzy <Wuzzy2@mail.ru>
parents: 15585
diff changeset
   226
                    Tint:= (Tint and $FFFFFF00) or ($FF - State);
19c85b010144 Add fade-in effect when flake appears at top
Wuzzy <Wuzzy2@mail.ru>
parents: 15585
diff changeset
   227
                    end;
15583
e1078c72ad60 Fade out rising flakes at the top
Wuzzy <Wuzzy2@mail.ru>
parents: 15239
diff changeset
   228
                end;
e1078c72ad60 Fade out rising flakes at the top
Wuzzy <Wuzzy2@mail.ru>
parents: 15239
diff changeset
   229
            if moved then
e1078c72ad60 Fade out rising flakes at the top
Wuzzy <Wuzzy2@mail.ru>
parents: 15239
diff changeset
   230
                X:= cLeftScreenBorder + random(cScreenSpace);
15586
19c85b010144 Add fade-in effect when flake appears at top
Wuzzy <Wuzzy2@mail.ru>
parents: 15585
diff changeset
   231
            end
19c85b010144 Add fade-in effect when flake appears at top
Wuzzy <Wuzzy2@mail.ru>
parents: 15585
diff changeset
   232
        else if (not rising) and (State > 0) then
19c85b010144 Add fade-in effect when flake appears at top
Wuzzy <Wuzzy2@mail.ru>
parents: 15585
diff changeset
   233
            begin
19c85b010144 Add fade-in effect when flake appears at top
Wuzzy <Wuzzy2@mail.ru>
parents: 15585
diff changeset
   234
            // quickly fade in falling flake after appearing at top
19c85b010144 Add fade-in effect when flake appears at top
Wuzzy <Wuzzy2@mail.ru>
parents: 15585
diff changeset
   235
            if State > 16 then
19c85b010144 Add fade-in effect when flake appears at top
Wuzzy <Wuzzy2@mail.ru>
parents: 15585
diff changeset
   236
                Dec(State, 16)
19c85b010144 Add fade-in effect when flake appears at top
Wuzzy <Wuzzy2@mail.ru>
parents: 15585
diff changeset
   237
            else
19c85b010144 Add fade-in effect when flake appears at top
Wuzzy <Wuzzy2@mail.ru>
parents: 15585
diff changeset
   238
                State:= 0;
19c85b010144 Add fade-in effect when flake appears at top
Wuzzy <Wuzzy2@mail.ru>
parents: 15585
diff changeset
   239
            Tint:= (Tint and $FFFFFF00) or ($FF - State);
7375
16ae2e1c9005 Tell AI to avoid edges, especially ones over water (this does not include checking whether a knock could drown yet). Also make flakes pick a new random dx/dy on respawn to further reduce patterns. Also disable a couple of weapons for the particularly dumb AI levels, and disable switching for the dumbest.
nemo
parents: 7206
diff changeset
   240
            end;
12312
83131d0e747b clean up flake falling/rising code. this should fix issue #157
sheepluva
parents: 11868
diff changeset
   241
7375
16ae2e1c9005 Tell AI to avoid edges, especially ones over water (this does not include checking whether a knock could drown yet). Also make flakes pick a new random dx/dy on respawn to further reduce patterns. Also disable a couple of weapons for the particularly dumb AI levels, and disable switching for the dumbest.
nemo
parents: 7206
diff changeset
   242
        if moved then
16ae2e1c9005 Tell AI to avoid edges, especially ones over water (this does not include checking whether a knock could drown yet). Also make flakes pick a new random dx/dy on respawn to further reduce patterns. Also disable a couple of weapons for the particularly dumb AI levels, and disable switching for the dumbest.
nemo
parents: 7206
diff changeset
   243
            begin
16ae2e1c9005 Tell AI to avoid edges, especially ones over water (this does not include checking whether a knock could drown yet). Also make flakes pick a new random dx/dy on respawn to further reduce patterns. Also disable a couple of weapons for the particularly dumb AI levels, and disable switching for the dumbest.
nemo
parents: 7206
diff changeset
   244
            Angle:= random(360);
16ae2e1c9005 Tell AI to avoid edges, especially ones over water (this does not include checking whether a knock could drown yet). Also make flakes pick a new random dx/dy on respawn to further reduce patterns. Also disable a couple of weapons for the particularly dumb AI levels, and disable switching for the dumbest.
nemo
parents: 7206
diff changeset
   245
            dx:= 0.0000038654705 * random(10000);
16ae2e1c9005 Tell AI to avoid edges, especially ones over water (this does not include checking whether a knock could drown yet). Also make flakes pick a new random dx/dy on respawn to further reduce patterns. Also disable a couple of weapons for the particularly dumb AI levels, and disable switching for the dumbest.
nemo
parents: 7206
diff changeset
   246
            dy:= 0.000003506096 * random(7000);
16ae2e1c9005 Tell AI to avoid edges, especially ones over water (this does not include checking whether a knock could drown yet). Also make flakes pick a new random dx/dy on respawn to further reduce patterns. Also disable a couple of weapons for the particularly dumb AI levels, and disable switching for the dumbest.
nemo
parents: 7206
diff changeset
   247
            if random(2) = 0 then dx := -dx
7206
ce46b56ae9f5 Double sniper rifle damage (AI seems unaware of second shot, when playing). Spread out flakes along X when looping and add a little Y variation. This avoids noticeable patterns. Especially on the rarer close layer or dense flakes like rain (for Y)
nemo
parents: 6913
diff changeset
   248
            end;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   249
        Timer:= 0;
3593
ae50f63e4fa9 Remove hwFloat from VisualGears - they don't need the precision for syncing purposes, and it saves a whole lot of operations.
nemo
parents: 3592
diff changeset
   250
        tdX:= 0;
ae50f63e4fa9 Remove hwFloat from VisualGears - they don't need the precision for syncing purposes, and it saves a whole lot of operations.
nemo
parents: 3592
diff changeset
   251
        tdY:= 0
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   252
        end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   253
    end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   254
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   255
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   256
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   257
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   258
procedure doStepBeeTrace(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   259
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   260
if Gear^.FrameTicks > Steps then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   261
    dec(Gear^.FrameTicks, Steps)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   262
else
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   263
    DeleteVisualGear(Gear);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   264
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   265
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   266
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   267
procedure doStepCloud(Gear: PVisualGear; Steps: Longword);
3592
0bcad5c38c9e clouds: up-and-down-bouncing now without evil loop
sheepluva
parents: 3590
diff changeset
   268
var s: Longword;
4379
6cd6b77df8b8 No need for Extended data type just to draw some visual gears. It's a shame we have Math unit dependency
unC0Rr
parents: 4365
diff changeset
   269
    t: real;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   270
begin
6553
91365db8b82c Slow down flakes/clouds that are farther away. Also unbreak NTPX w/ SDL 1.2
nemo
parents: 6302
diff changeset
   271
Gear^.X:= Gear^.X + (cWindSpeedf * 750 * Gear^.dX * Gear^.Scale) * Steps;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   272
3592
0bcad5c38c9e clouds: up-and-down-bouncing now without evil loop
sheepluva
parents: 3590
diff changeset
   273
// up-and-down-bounce magic
3593
ae50f63e4fa9 Remove hwFloat from VisualGears - they don't need the precision for syncing purposes, and it saves a whole lot of operations.
nemo
parents: 3592
diff changeset
   274
s := (GameTicks + Gear^.Timer) mod 4096;
6553
91365db8b82c Slow down flakes/clouds that are farther away. Also unbreak NTPX w/ SDL 1.2
nemo
parents: 6302
diff changeset
   275
t := 8 * Gear^.Scale * hwFloat2Float(AngleSin(s mod 2048));
3597
978c30ef50fc visual gears: fixing nemo's c-style assignment/multiplications
sheepluva
parents: 3593
diff changeset
   276
if (s < 2048) then t := -t;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   277
15585
f8c1492601fe Flakes: Only spawn them inside valid area
Wuzzy <Wuzzy2@mail.ru>
parents: 15583
diff changeset
   278
Gear^.Y := LAND_HEIGHT - cCloudOffset + LongInt(Gear^.Timer mod 8) + t;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   279
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   280
if round(Gear^.X) < cLeftScreenBorder then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   281
    Gear^.X:= Gear^.X + cScreenSpace
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   282
else
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   283
    if round(Gear^.X) > cRightScreenBorder then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   284
        Gear^.X:= Gear^.X - cScreenSpace
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   285
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   286
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   287
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   288
procedure doStepExpl(Gear: PVisualGear; Steps: Longword);
7808
cc1805cd9138 Make explosion look depend less on fps
unc0rr
parents: 7644
diff changeset
   289
var s: LongInt;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   290
begin
7808
cc1805cd9138 Make explosion look depend less on fps
unc0rr
parents: 7644
diff changeset
   291
s:= min(Steps, cExplFrameTicks);
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   292
7808
cc1805cd9138 Make explosion look depend less on fps
unc0rr
parents: 7644
diff changeset
   293
Gear^.X:= Gear^.X + Gear^.dX * s;
cc1805cd9138 Make explosion look depend less on fps
unc0rr
parents: 7644
diff changeset
   294
Gear^.Y:= Gear^.Y + Gear^.dY * s;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   295
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   296
if Gear^.FrameTicks <= Steps then
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   297
    if Gear^.Frame = 0 then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   298
        DeleteVisualGear(Gear)
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   299
    else
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   300
        begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   301
        dec(Gear^.Frame);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   302
        Gear^.FrameTicks:= cExplFrameTicks
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   303
        end
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   304
    else dec(Gear^.FrameTicks, Steps)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   305
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   306
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   307
////////////////////////////////////////////////////////////////////////////////
3704
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   308
procedure doStepNote(Gear: PVisualGear; Steps: Longword);
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   309
begin
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   310
Gear^.X:= Gear^.X + Gear^.dX * Steps;
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   311
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   312
Gear^.Y:= Gear^.Y + Gear^.dY * Steps;
3706
a79784328c03 Engine:
smaxx
parents: 3704
diff changeset
   313
Gear^.dY:= Gear^.dY + cGravityf * Steps / 2;
3704
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   314
3706
a79784328c03 Engine:
smaxx
parents: 3704
diff changeset
   315
Gear^.Angle:= Gear^.Angle + (Gear^.Frame + 1) * Steps / 10;
a79784328c03 Engine:
smaxx
parents: 3704
diff changeset
   316
while Gear^.Angle > cMaxAngle do
a79784328c03 Engine:
smaxx
parents: 3704
diff changeset
   317
    Gear^.Angle:= Gear^.Angle - cMaxAngle;
3704
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   318
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   319
if Gear^.FrameTicks <= Steps then
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   320
    DeleteVisualGear(Gear)
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   321
else
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   322
    dec(Gear^.FrameTicks, Steps)
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   323
end;
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   324
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   325
////////////////////////////////////////////////////////////////////////////////
4279
b697a26ed538 Light trails for bullets
Palewolf
parents: 4172
diff changeset
   326
procedure doStepLineTrail(Gear: PVisualGear; Steps: Longword);
b697a26ed538 Light trails for bullets
Palewolf
parents: 4172
diff changeset
   327
begin
8026
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7808
diff changeset
   328
{$IFNDEF PAS2C}
4279
b697a26ed538 Light trails for bullets
Palewolf
parents: 4172
diff changeset
   329
Steps := Steps;
8026
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7808
diff changeset
   330
{$ENDIF}
4279
b697a26ed538 Light trails for bullets
Palewolf
parents: 4172
diff changeset
   331
if Gear^.Timer <= Steps then
b697a26ed538 Light trails for bullets
Palewolf
parents: 4172
diff changeset
   332
    DeleteVisualGear(Gear)
b697a26ed538 Light trails for bullets
Palewolf
parents: 4172
diff changeset
   333
else
b697a26ed538 Light trails for bullets
Palewolf
parents: 4172
diff changeset
   334
    dec(Gear^.Timer, Steps)
b697a26ed538 Light trails for bullets
Palewolf
parents: 4172
diff changeset
   335
end;
b697a26ed538 Light trails for bullets
Palewolf
parents: 4172
diff changeset
   336
b697a26ed538 Light trails for bullets
Palewolf
parents: 4172
diff changeset
   337
////////////////////////////////////////////////////////////////////////////////
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   338
procedure doStepEgg(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   339
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   340
Gear^.X:= Gear^.X + Gear^.dX * Steps;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   341
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   342
Gear^.Y:= Gear^.Y + Gear^.dY * Steps;
3593
ae50f63e4fa9 Remove hwFloat from VisualGears - they don't need the precision for syncing purposes, and it saves a whole lot of operations.
nemo
parents: 3592
diff changeset
   343
Gear^.dY:= Gear^.dY + cGravityf * Steps;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   344
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   345
Gear^.Angle:= round(Gear^.Angle + Steps) mod cMaxAngle;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   346
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   347
if Gear^.FrameTicks <= Steps then
6128
nemo
parents: 5874
diff changeset
   348
    begin
nemo
parents: 5874
diff changeset
   349
    DeleteVisualGear(Gear);
nemo
parents: 5874
diff changeset
   350
    exit
nemo
parents: 5874
diff changeset
   351
    end
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   352
else
5874
5cd329cf2460 nemo's molotov burst effect; with a slight color modification added
sheepluva
parents: 5855
diff changeset
   353
    dec(Gear^.FrameTicks, Steps);
5cd329cf2460 nemo's molotov burst effect; with a slight color modification added
sheepluva
parents: 5855
diff changeset
   354
5cd329cf2460 nemo's molotov burst effect; with a slight color modification added
sheepluva
parents: 5855
diff changeset
   355
if Gear^.FrameTicks < $FF then
5cd329cf2460 nemo's molotov burst effect; with a slight color modification added
sheepluva
parents: 5855
diff changeset
   356
   Gear^.Tint:= (Gear^.Tint and $FFFFFF00) or Gear^.FrameTicks
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   357
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   358
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   359
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   360
procedure doStepFire(Gear: PVisualGear; Steps: Longword);
3751
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   361
var vgt: PVisualGear;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   362
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   363
Gear^.X:= Gear^.X + Gear^.dX * Steps;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   364
14572
34e810295d08 Remove a bunch of dead out-commented code
Wuzzy <Wuzzy2@mail.ru>
parents: 14543
diff changeset
   365
Gear^.Y:= Gear^.Y + Gear^.dY * Steps;
3751
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   366
if (Gear^.State and gstTmpFlag) = 0 then
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   367
    begin
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   368
    Gear^.dY:= Gear^.dY + cGravityf * Steps;
3764
eb91c02f2d84 Engine:
smaxx
parents: 3751
diff changeset
   369
    if ((GameTicks mod 200) < Steps + 1) then
3751
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   370
        begin
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   371
        vgt:= AddVisualGear(round(Gear^.X), round(Gear^.Y), vgtFire);
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   372
        if vgt <> nil then
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   373
            begin
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   374
            vgt^.dx:= 0;
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   375
            vgt^.dy:= 0;
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   376
            vgt^.State:= gstTmpFlag;
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   377
            end;
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   378
        end
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   379
    end
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   380
else
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   381
    inc(Steps, Steps);
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   382
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   383
if Gear^.FrameTicks <= Steps then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   384
       DeleteVisualGear(Gear)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   385
else
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   386
    dec(Gear^.FrameTicks, Steps)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   387
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   388
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   389
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   390
procedure doStepShell(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   391
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   392
Gear^.X:= Gear^.X + Gear^.dX * Steps;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   393
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   394
Gear^.Y:= Gear^.Y + Gear^.dY * Steps;
3593
ae50f63e4fa9 Remove hwFloat from VisualGears - they don't need the precision for syncing purposes, and it saves a whole lot of operations.
nemo
parents: 3592
diff changeset
   395
Gear^.dY:= Gear^.dY + cGravityf * Steps;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   396
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   397
Gear^.Angle:= round(Gear^.Angle + Steps) mod cMaxAngle;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   398
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   399
if Gear^.FrameTicks <= Steps then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   400
    DeleteVisualGear(Gear)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   401
else
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   402
    dec(Gear^.FrameTicks, Steps)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   403
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   404
15773
da1bb21e6fbf Teach vgtSmallDamageTag to use dX, dY and screen coords (Frame<>0)
Wuzzy <Wuzzy2@mail.ru>
parents: 15772
diff changeset
   405
procedure doStepSmallDamageTag(Gear: PVisualGear; Steps: Longword);
15772
95db10dcad71 Fix crash when spawning vgtSmallDamageTag in Lua
Wuzzy <Wuzzy2@mail.ru>
parents: 15586
diff changeset
   406
var s: shortstring;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   407
begin
15772
95db10dcad71 Fix crash when spawning vgtSmallDamageTag in Lua
Wuzzy <Wuzzy2@mail.ru>
parents: 15586
diff changeset
   408
if Gear^.Tex = nil then
95db10dcad71 Fix crash when spawning vgtSmallDamageTag in Lua
Wuzzy <Wuzzy2@mail.ru>
parents: 15586
diff changeset
   409
    begin
95db10dcad71 Fix crash when spawning vgtSmallDamageTag in Lua
Wuzzy <Wuzzy2@mail.ru>
parents: 15586
diff changeset
   410
    s:= IntToStr(Gear^.State);
95db10dcad71 Fix crash when spawning vgtSmallDamageTag in Lua
Wuzzy <Wuzzy2@mail.ru>
parents: 15586
diff changeset
   411
    Gear^.Tex:= RenderStringTex(ansistring(s), cWhiteColor, fntSmall);
95db10dcad71 Fix crash when spawning vgtSmallDamageTag in Lua
Wuzzy <Wuzzy2@mail.ru>
parents: 15586
diff changeset
   412
    end;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   413
15773
da1bb21e6fbf Teach vgtSmallDamageTag to use dX, dY and screen coords (Frame<>0)
Wuzzy <Wuzzy2@mail.ru>
parents: 15772
diff changeset
   414
Gear^.X:= Gear^.X + Gear^.dX * Steps;
da1bb21e6fbf Teach vgtSmallDamageTag to use dX, dY and screen coords (Frame<>0)
Wuzzy <Wuzzy2@mail.ru>
parents: 15772
diff changeset
   415
Gear^.Y:= Gear^.Y + Gear^.dY * Steps;
da1bb21e6fbf Teach vgtSmallDamageTag to use dX, dY and screen coords (Frame<>0)
Wuzzy <Wuzzy2@mail.ru>
parents: 15772
diff changeset
   416
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   417
if Gear^.FrameTicks <= Steps then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   418
    DeleteVisualGear(Gear)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   419
else
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   420
    dec(Gear^.FrameTicks, Steps)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   421
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   422
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   423
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   424
procedure doStepBubble(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   425
begin
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   426
Gear^.X:= Gear^.X + Gear^.dX * Steps;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   427
Gear^.Y:= Gear^.Y + Gear^.dY * Steps;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   428
Gear^.Y:= Gear^.Y - cDrownSpeedf * Steps;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   429
Gear^.dX := Gear^.dX / (1.001 * Steps);
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   430
Gear^.dY := Gear^.dY / (1.001 * Steps);
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   431
10355
334b5f513703 fix pas2c build
sheepluva
parents: 10354
diff changeset
   432
if (Gear^.FrameTicks <= Steps) or (not CheckCoordInWater(round(Gear^.X), round(Gear^.Y))) then
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   433
    DeleteVisualGear(Gear)
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   434
else
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   435
    dec(Gear^.FrameTicks, Steps)
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   436
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   437
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   438
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   439
procedure doStepSteam(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   440
begin
10354
56bd029245fc WIP: weSea tweaks, functional and visual
sheepluva
parents: 10299
diff changeset
   441
if ((cWindSpeedf > 0) and ( leftX > Gear^.X))
56bd029245fc WIP: weSea tweaks, functional and visual
sheepluva
parents: 10299
diff changeset
   442
or ((cWindSpeedf < 0) and (rightX < Gear^.X)) then
56bd029245fc WIP: weSea tweaks, functional and visual
sheepluva
parents: 10299
diff changeset
   443
    Gear^.X:= Gear^.X + (cWindSpeedf * 100 + Gear^.dX) * Steps;
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   444
Gear^.Y:= Gear^.Y - cDrownSpeedf * Steps;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   445
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   446
if Gear^.FrameTicks <= Steps then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   447
    if Gear^.Frame = 0 then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   448
        DeleteVisualGear(Gear)
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   449
    else
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   450
        begin
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   451
        if Random(2) = 0 then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   452
            dec(Gear^.Frame);
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   453
        Gear^.FrameTicks:= cExplFrameTicks
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   454
        end
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   455
else dec(Gear^.FrameTicks, Steps)
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   456
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   457
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   458
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   459
procedure doStepAmmo(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   460
begin
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   461
Gear^.Y:= Gear^.Y - cDrownSpeedf * Steps;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   462
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   463
Gear^.scale:= Gear^.scale + 0.0025 * Steps;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   464
Gear^.alpha:= Gear^.alpha - 0.0015 * Steps;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   465
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   466
if Gear^.alpha < 0 then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   467
    DeleteVisualGear(Gear)
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   468
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   469
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   470
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   471
procedure doStepSmoke(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   472
begin
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   473
Gear^.X:= Gear^.X + (cWindSpeedf + Gear^.dX) * Steps;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   474
Gear^.Y:= Gear^.Y - (cDrownSpeedf + Gear^.dY) * Steps;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   475
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   476
Gear^.dX := Gear^.dX + (cWindSpeedf * 0.3 * Steps);
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   477
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   478
if Gear^.FrameTicks <= Steps then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   479
    if Gear^.Frame = 0 then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   480
        DeleteVisualGear(Gear)
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   481
    else
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   482
        begin
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   483
        if Random(2) = 0 then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   484
            dec(Gear^.Frame);
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   485
        Gear^.FrameTicks:= cExplFrameTicks
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   486
        end
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   487
    else dec(Gear^.FrameTicks, Steps)
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   488
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   489
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   490
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   491
procedure doStepDust(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   492
begin
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   493
Gear^.X:= Gear^.X + (cWindSpeedf + (cWindSpeedf * 0.03 * Steps) + Gear^.dX) * Steps;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   494
Gear^.Y:= Gear^.Y - (Gear^.dY) * Steps;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   495
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   496
Gear^.dX := Gear^.dX - (Gear^.dX * 0.005 * Steps);
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   497
Gear^.dY := Gear^.dY - (cDrownSpeedf * 0.001 * Steps);
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   498
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   499
if Gear^.FrameTicks <= Steps then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   500
    if Gear^.Frame = 0 then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   501
            DeleteVisualGear(Gear)
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   502
    else
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   503
        begin
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   504
        dec(Gear^.Frame);
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   505
        Gear^.FrameTicks:= cExplFrameTicks
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   506
        end
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   507
    else dec(Gear^.FrameTicks, Steps)
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   508
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   509
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   510
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   511
procedure doStepSplash(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   512
begin
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   513
if Gear^.FrameTicks <= Steps then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   514
    DeleteVisualGear(Gear)
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   515
else
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   516
    dec(Gear^.FrameTicks, Steps);
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   517
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   518
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   519
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   520
procedure doStepDroplet(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   521
begin
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   522
Gear^.X:= Gear^.X + Gear^.dX * Steps;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   523
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   524
Gear^.Y:= Gear^.Y + Gear^.dY * Steps;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   525
Gear^.dY:= Gear^.dY + cGravityf * Steps;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   526
15238
df5890e5a12a Delete vgtDroplet and vgtChunk when hitting the ocean world edge
Wuzzy <Wuzzy2@mail.ru>
parents: 14657
diff changeset
   527
if CheckCoordInWater(round(Gear^.X), round(Gear^.Y)) then
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   528
    begin
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   529
    DeleteVisualGear(Gear);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   530
    PlaySound(TSound(ord(sndDroplet1) + Random(3)));
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   531
    end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   532
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   533
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   534
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   535
procedure doStepSmokeRing(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   536
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   537
inc(Gear^.Timer, Steps);
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   538
if Gear^.Timer >= Gear^.FrameTicks then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   539
    DeleteVisualGear(Gear)
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   540
else
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   541
    begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   542
    Gear^.scale := 1.25 * (-power(2, -10 * Int(Gear^.Timer)/Gear^.FrameTicks) + 1) + 0.4;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   543
    Gear^.alpha := 1 - power(Gear^.Timer / 350, 4);
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   544
    if Gear^.alpha < 0 then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   545
        Gear^.alpha:= 0;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   546
    end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   547
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   548
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   549
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   550
procedure doStepFeather(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   551
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   552
Gear^.X:= Gear^.X + Gear^.dX * Steps;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   553
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   554
Gear^.Y:= Gear^.Y + Gear^.dY * Steps;
3593
ae50f63e4fa9 Remove hwFloat from VisualGears - they don't need the precision for syncing purposes, and it saves a whole lot of operations.
nemo
parents: 3592
diff changeset
   555
Gear^.dY:= Gear^.dY + cGravityf * Steps;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   556
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   557
Gear^.Angle:= round(Gear^.Angle + Steps) mod cMaxAngle;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   558
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   559
if Gear^.FrameTicks <= Steps then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   560
    DeleteVisualGear(Gear)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   561
else
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   562
    dec(Gear^.FrameTicks, Steps)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   563
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   564
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   565
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   566
const cSorterWorkTime = 640;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   567
var thexchar: array[0..cMaxTeams] of
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   568
            record
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   569
            dy, ny, dw: LongInt;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   570
            team: PTeam;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   571
            SortFactor: QWord;
9720
453a1c29b7e4 Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents: 9656
diff changeset
   572
            hdw: array[0..cMaxHHIndex] of LongInt;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   573
            end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   574
    currsorter: PVisualGear = nil;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   575
9720
453a1c29b7e4 Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents: 9656
diff changeset
   576
function isSorterActive: boolean; inline;
453a1c29b7e4 Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents: 9656
diff changeset
   577
begin
453a1c29b7e4 Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents: 9656
diff changeset
   578
    isSorterActive:= currsorter <> nil
453a1c29b7e4 Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents: 9656
diff changeset
   579
end;
453a1c29b7e4 Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents: 9656
diff changeset
   580
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   581
procedure doStepTeamHealthSorterWork(Gear: PVisualGear; Steps: Longword);
9720
453a1c29b7e4 Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents: 9656
diff changeset
   582
var i, t, h: LongInt;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   583
begin
10858
bd281e854e02 Don't do anything if sorter was replaced, even for one tick only. Hopefully fixes issue #907, but not confirmed, though very highly plausible.
unc0rr
parents: 10731
diff changeset
   584
if currsorter = Gear then
bd281e854e02 Don't do anything if sorter was replaced, even for one tick only. Hopefully fixes issue #907, but not confirmed, though very highly plausible.
unc0rr
parents: 10731
diff changeset
   585
  for t:= 1 to min(Steps, Gear^.Timer) do
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   586
    begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   587
    dec(Gear^.Timer);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   588
    if (Gear^.Timer and 15) = 0 then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   589
        for i:= 0 to Pred(TeamsCount) do
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   590
            with thexchar[i] do
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   591
                begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   592
                {$WARNINGS OFF}
7644
ed7fecd0f5fd hide health bars of dead teams
unc0rr
parents: 7375
diff changeset
   593
                team^.DrawHealthY:= ny + dy * LongInt(Gear^.Timer) div cSorterWorkTime;
9720
453a1c29b7e4 Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents: 9656
diff changeset
   594
                team^.TeamHealthBarHealth:= team^.TeamHealth + dw * LongInt(Gear^.Timer) div cSorterWorkTime;
453a1c29b7e4 Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents: 9656
diff changeset
   595
453a1c29b7e4 Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents: 9656
diff changeset
   596
                for h:= 0 to cMaxHHIndex do
453a1c29b7e4 Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents: 9656
diff changeset
   597
                    if (team^.Hedgehogs[h].Gear <> nil) then
453a1c29b7e4 Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents: 9656
diff changeset
   598
                        team^.Hedgehogs[h].HealthBarHealth:= team^.Hedgehogs[h].Gear^.Health + hdw[h] * LongInt(Gear^.Timer) div cSorterWorkTime
453a1c29b7e4 Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents: 9656
diff changeset
   599
                    else
453a1c29b7e4 Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents: 9656
diff changeset
   600
                        team^.Hedgehogs[h].HealthBarHealth:= hdw[h] * LongInt(Gear^.Timer) div cSorterWorkTime;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   601
                {$WARNINGS ON}
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   602
                end;
7644
ed7fecd0f5fd hide health bars of dead teams
unc0rr
parents: 7375
diff changeset
   603
    end;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   604
7644
ed7fecd0f5fd hide health bars of dead teams
unc0rr
parents: 7375
diff changeset
   605
if (Gear^.Timer = 0) or (currsorter <> Gear) then
ed7fecd0f5fd hide health bars of dead teams
unc0rr
parents: 7375
diff changeset
   606
    begin
ed7fecd0f5fd hide health bars of dead teams
unc0rr
parents: 7375
diff changeset
   607
    if currsorter = Gear then
ed7fecd0f5fd hide health bars of dead teams
unc0rr
parents: 7375
diff changeset
   608
        currsorter:= nil;
ed7fecd0f5fd hide health bars of dead teams
unc0rr
parents: 7375
diff changeset
   609
    DeleteVisualGear(Gear);
ed7fecd0f5fd hide health bars of dead teams
unc0rr
parents: 7375
diff changeset
   610
    exit
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   611
    end
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   612
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   613
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   614
procedure doStepTeamHealthSorter(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   615
var i: Longword;
13140
e330feceb662 Hide team bar if all hedgehogs in it are hidden or dead
Wuzzy <Wuzzy2@mail.ru>
parents: 12312
diff changeset
   616
    b, noHogs: boolean;
9720
453a1c29b7e4 Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents: 9656
diff changeset
   617
    t, h: LongInt;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   618
begin
8026
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7808
diff changeset
   619
{$IFNDEF PAS2C}
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   620
Steps:= Steps; // avoid compiler hint
8026
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7808
diff changeset
   621
{$ENDIF}
7644
ed7fecd0f5fd hide health bars of dead teams
unc0rr
parents: 7375
diff changeset
   622
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   623
for t:= 0 to Pred(TeamsCount) do
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   624
    with thexchar[t] do
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   625
        begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   626
        team:= TeamsArray[t];
7644
ed7fecd0f5fd hide health bars of dead teams
unc0rr
parents: 7375
diff changeset
   627
        dy:= team^.DrawHealthY;
9720
453a1c29b7e4 Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents: 9656
diff changeset
   628
        dw:= team^.TeamHealthBarHealth - team^.TeamHealth;
7644
ed7fecd0f5fd hide health bars of dead teams
unc0rr
parents: 7375
diff changeset
   629
        if team^.TeamHealth > 0 then
ed7fecd0f5fd hide health bars of dead teams
unc0rr
parents: 7375
diff changeset
   630
            begin
ed7fecd0f5fd hide health bars of dead teams
unc0rr
parents: 7375
diff changeset
   631
            SortFactor:= team^.Clan^.ClanHealth;
ed7fecd0f5fd hide health bars of dead teams
unc0rr
parents: 7375
diff changeset
   632
            SortFactor:= (SortFactor shl  3) + team^.Clan^.ClanIndex;
ed7fecd0f5fd hide health bars of dead teams
unc0rr
parents: 7375
diff changeset
   633
            SortFactor:= (SortFactor shl 30) + team^.TeamHealth;
ed7fecd0f5fd hide health bars of dead teams
unc0rr
parents: 7375
diff changeset
   634
            end
ed7fecd0f5fd hide health bars of dead teams
unc0rr
parents: 7375
diff changeset
   635
        else
ed7fecd0f5fd hide health bars of dead teams
unc0rr
parents: 7375
diff changeset
   636
            SortFactor:= 0;
9720
453a1c29b7e4 Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents: 9656
diff changeset
   637
453a1c29b7e4 Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents: 9656
diff changeset
   638
        for h:= 0 to cMaxHHIndex do
453a1c29b7e4 Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents: 9656
diff changeset
   639
            if (team^.Hedgehogs[h].Gear <> nil) then
453a1c29b7e4 Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents: 9656
diff changeset
   640
                hdw[h]:= team^.Hedgehogs[h].HealthBarHealth - team^.Hedgehogs[h].Gear^.Health
453a1c29b7e4 Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents: 9656
diff changeset
   641
            else
453a1c29b7e4 Animate hedgehogs healths inside team health bar. Proper animation for the case when max team health grows is lost though.
unc0rr
parents: 9656
diff changeset
   642
                hdw[h]:= team^.Hedgehogs[h].HealthBarHealth;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   643
        end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   644
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   645
if TeamsCount > 1 then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   646
    repeat
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   647
    b:= true;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   648
    for t:= 0 to TeamsCount - 2 do
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   649
        if (thexchar[t].SortFactor > thexchar[Succ(t)].SortFactor) then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   650
            begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   651
            thexchar[cMaxTeams]:= thexchar[t];
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   652
            thexchar[t]:= thexchar[Succ(t)];
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   653
            thexchar[Succ(t)]:= thexchar[cMaxTeams];
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   654
            b:= false
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   655
            end
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   656
    until b;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   657
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   658
t:= - 4;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   659
for i:= 0 to Pred(TeamsCount) do
7644
ed7fecd0f5fd hide health bars of dead teams
unc0rr
parents: 7375
diff changeset
   660
        with thexchar[i] do
13140
e330feceb662 Hide team bar if all hedgehogs in it are hidden or dead
Wuzzy <Wuzzy2@mail.ru>
parents: 12312
diff changeset
   661
          begin
e330feceb662 Hide team bar if all hedgehogs in it are hidden or dead
Wuzzy <Wuzzy2@mail.ru>
parents: 12312
diff changeset
   662
          noHogs:= true;
e330feceb662 Hide team bar if all hedgehogs in it are hidden or dead
Wuzzy <Wuzzy2@mail.ru>
parents: 12312
diff changeset
   663
          for h:= 0 to cMaxHHIndex do
e330feceb662 Hide team bar if all hedgehogs in it are hidden or dead
Wuzzy <Wuzzy2@mail.ru>
parents: 12312
diff changeset
   664
              // Check if all hogs are hidden
e330feceb662 Hide team bar if all hedgehogs in it are hidden or dead
Wuzzy <Wuzzy2@mail.ru>
parents: 12312
diff changeset
   665
              if team^.Hedgehogs[h].Gear <> nil then
e330feceb662 Hide team bar if all hedgehogs in it are hidden or dead
Wuzzy <Wuzzy2@mail.ru>
parents: 12312
diff changeset
   666
                  noHogs:= false;
e330feceb662 Hide team bar if all hedgehogs in it are hidden or dead
Wuzzy <Wuzzy2@mail.ru>
parents: 12312
diff changeset
   667
          // Skip team bar if all hogs are dead or hidden
e330feceb662 Hide team bar if all hedgehogs in it are hidden or dead
Wuzzy <Wuzzy2@mail.ru>
parents: 12312
diff changeset
   668
          if (team^.TeamHealth > 0) and (noHogs = false) then
7644
ed7fecd0f5fd hide health bars of dead teams
unc0rr
parents: 7375
diff changeset
   669
            begin
9656
18422d205080 - More HealthTex to clan structure
unc0rr
parents: 9283
diff changeset
   670
            dec(t, team^.Clan^.HealthTex^.h + 2);
7644
ed7fecd0f5fd hide health bars of dead teams
unc0rr
parents: 7375
diff changeset
   671
            ny:= t;
ed7fecd0f5fd hide health bars of dead teams
unc0rr
parents: 7375
diff changeset
   672
            dy:= dy - ny
ed7fecd0f5fd hide health bars of dead teams
unc0rr
parents: 7375
diff changeset
   673
            end;
13140
e330feceb662 Hide team bar if all hedgehogs in it are hidden or dead
Wuzzy <Wuzzy2@mail.ru>
parents: 12312
diff changeset
   674
          end;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   675
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   676
Gear^.Timer:= cSorterWorkTime;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   677
Gear^.doStep:= @doStepTeamHealthSorterWork;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   678
currsorter:= Gear;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   679
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   680
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   681
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   682
procedure doStepSpeechBubbleWork(Gear: PVisualGear; Steps: Longword);
10193
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   683
var realgear: PGear;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   684
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   685
if Gear^.Timer > Steps then dec(Gear^.Timer, Steps) else Gear^.Timer:= 0;
10193
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   686
realgear:= nil;
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   687
if Gear^.Frame <> 0 then  // use a non-hedgehog gear - a lua trick that hopefully won't be overused
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   688
    begin
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   689
    realgear:= GearByUID(Gear^.Frame);
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   690
    if realgear <> nil then
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   691
        begin
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   692
        Gear^.X:= hwFloat2Float(realgear^.X) + (Gear^.Tex^.w div 2  - Gear^.Tag);
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   693
        Gear^.Y:= hwFloat2Float(realgear^.Y) - (realgear^.Radius + Gear^.Tex^.h);
13235
9f5023a5f9e1 Fix speech bubble briefly rendering at (0,0) after spawning
Wuzzy <Wuzzy2@mail.ru>
parents: 13140
diff changeset
   694
        Gear^.Angle:= 1; // Mark speech bubble as ready for rendering
10193
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   695
        end
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   696
    end
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   697
else if Gear^.Hedgehog^.Gear <> nil then
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   698
    begin
9763
be63ead5085e use a variable that allows negative values instead.
nemo
parents: 9762
diff changeset
   699
    Gear^.X:= hwFloat2Float(Gear^.Hedgehog^.Gear^.X) + (Gear^.Tex^.w div 2  - Gear^.Tag);
10193
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   700
    Gear^.Y:= hwFloat2Float(Gear^.Hedgehog^.Gear^.Y) - (cHHRadius + Gear^.Tex^.h);
13235
9f5023a5f9e1 Fix speech bubble briefly rendering at (0,0) after spawning
Wuzzy <Wuzzy2@mail.ru>
parents: 13140
diff changeset
   701
    Gear^.Angle:= 1; // Mark speech bubble as ready for rendering
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   702
    end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   703
10193
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   704
if (Gear^.Timer = 0) or ((realgear = nil) and (Gear^.Frame <> 0))  then
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   705
    begin
10193
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   706
    if (Gear^.Hedgehog <> nil) and (Gear^.Hedgehog^.SpeechGear = Gear) then
4365
4f2b1a152979 Remove ugly PHedgehog(Gear^.Hedgehog) cast
unc0rr
parents: 4327
diff changeset
   707
        Gear^.Hedgehog^.SpeechGear:= nil;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   708
    DeleteVisualGear(Gear)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   709
    end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   710
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   711
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   712
procedure doStepSpeechBubble(Gear: PVisualGear; Steps: Longword);
10193
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   713
var realgear: PGear;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   714
begin
8026
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7808
diff changeset
   715
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7808
diff changeset
   716
{$IFNDEF PAS2C}
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   717
Steps:= Steps; // avoid compiler hint
8026
4a4f21070479 merge xymeng's gsoc engine with a few updates (and further checks on symbol definitions)
koda
parents: 7808
diff changeset
   718
{$ENDIF}
10193
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   719
if Gear^.Frame <> 0 then
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   720
    realgear:= GearByUID(Gear^.FrameTicks)
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   721
else
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   722
    begin
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   723
    with Gear^.Hedgehog^ do
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   724
        if SpeechGear <> nil then
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   725
            SpeechGear^.Timer:= 0;
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   726
    realgear:= Gear^.Hedgehog^.Gear;
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   727
    Gear^.Hedgehog^.SpeechGear:= Gear;
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   728
    end;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   729
10193
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   730
if realgear <> nil then
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   731
    case Gear^.FrameTicks of
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   732
        1: Gear^.Tag:= SpritesData[sprSpeechTail].Width-37+realgear^.Radius;
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   733
        2: Gear^.Tag:= SpritesData[sprThoughtTail].Width-29+realgear^.Radius;
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   734
        3: Gear^.Tag:= SpritesData[sprShoutTail].Width-19+realgear^.Radius;
d7cd5b43588f By request. Allow lua to make random things "talk". I'm not sure if this is a good idea, buuuut.
nemo
parents: 10124
diff changeset
   735
        end;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   736
5186
a05c14510c8a fix some more warnings
koda
parents: 5179
diff changeset
   737
Gear^.Timer:= max(LongInt(Length(Gear^.Text)) * 150, 3000);
10124
aabd1b75d5a3 Even more explicit type conversions and other stuff to help pas2c use ansistrings
unc0rr
parents: 10108
diff changeset
   738
Gear^.Tex:= RenderSpeechBubbleTex(ansistring(Gear^.Text), Gear^.FrameTicks, fnt16);
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   739
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   740
Gear^.doStep:= @doStepSpeechBubbleWork;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   741
4379
6cd6b77df8b8 No need for Extended data type just to draw some visual gears. It's a shame we have Math unit dependency
unC0Rr
parents: 4365
diff changeset
   742
Gear^.Y:= Gear^.Y - Gear^.Tex^.h
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   743
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   744
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   745
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   746
procedure doStepHealthTagWork(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   747
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   748
if Steps > Gear^.Timer then
3459
c552aa44108d hey sheepluva, how about just this? lets you have an anonymous one too.
nemo
parents: 3443
diff changeset
   749
    DeleteVisualGear(Gear)
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   750
else
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   751
    begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   752
    dec(Gear^.Timer, Steps);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   753
    Gear^.Y:= Gear^.Y + Gear^.dY * Steps;
5581
cc43f382ed9a Check for dX too
nemo
parents: 5580
diff changeset
   754
    Gear^.X:= Gear^.X + Gear^.dX * Steps
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   755
    end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   756
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   757
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   758
procedure doStepHealthTagWorkUnderWater(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   759
begin
4161
1f19dcdabe19 Remove more int64 casts
unc0rr
parents: 4152
diff changeset
   760
if round(Gear^.Y) - 10 < cWaterLine then
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   761
    DeleteVisualGear(Gear)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   762
else
14657
b390479f24c1 vgtHealthTag now supports setting FrameTicks <> 0 to disable automatic water handling
Wuzzy <Wuzzy2@mail.ru>
parents: 14572
diff changeset
   763
    begin
b390479f24c1 vgtHealthTag now supports setting FrameTicks <> 0 to disable automatic water handling
Wuzzy <Wuzzy2@mail.ru>
parents: 14572
diff changeset
   764
    Gear^.X:= Gear^.X + Gear^.dX * Steps;
b390479f24c1 vgtHealthTag now supports setting FrameTicks <> 0 to disable automatic water handling
Wuzzy <Wuzzy2@mail.ru>
parents: 14572
diff changeset
   765
    Gear^.Y:= Gear^.Y + Gear^.dY * Steps;
b390479f24c1 vgtHealthTag now supports setting FrameTicks <> 0 to disable automatic water handling
Wuzzy <Wuzzy2@mail.ru>
parents: 14572
diff changeset
   766
    end;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   767
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   768
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   769
procedure doStepHealthTag(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   770
var s: shortstring;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   771
begin
11822
4600dcb9db4f - Use IntToStr() in preference to Str()
unc0rr
parents: 11739
diff changeset
   772
s:= IntToStr(Gear^.State);
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   773
3459
c552aa44108d hey sheepluva, how about just this? lets you have an anonymous one too.
nemo
parents: 3443
diff changeset
   774
if Gear^.Hedgehog <> nil then
10124
aabd1b75d5a3 Even more explicit type conversions and other stuff to help pas2c use ansistrings
unc0rr
parents: 10108
diff changeset
   775
    Gear^.Tex:= RenderStringTex(ansistring(s), Gear^.Hedgehog^.Team^.Clan^.Color, fnt16)
3459
c552aa44108d hey sheepluva, how about just this? lets you have an anonymous one too.
nemo
parents: 3443
diff changeset
   776
else
10124
aabd1b75d5a3 Even more explicit type conversions and other stuff to help pas2c use ansistrings
unc0rr
parents: 10108
diff changeset
   777
    Gear^.Tex:= RenderStringTex(ansistring(s), cWhiteColor, fnt16);
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   778
5578
nemo
parents: 5576
diff changeset
   779
Gear^.doStep:= @doStepHealthTagWork;
5576
bf30c60786a5 Move HealthTag dY init into AddGear
nemo
parents: 5563
diff changeset
   780
14657
b390479f24c1 vgtHealthTag now supports setting FrameTicks <> 0 to disable automatic water handling
Wuzzy <Wuzzy2@mail.ru>
parents: 14572
diff changeset
   781
if (round(Gear^.Y) > cWaterLine) and (Gear^.Frame = 0) and (Gear^.FrameTicks = 0) then
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   782
    Gear^.doStep:= @doStepHealthTagWorkUnderWater;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   783
4379
6cd6b77df8b8 No need for Extended data type just to draw some visual gears. It's a shame we have Math unit dependency
unC0Rr
parents: 4365
diff changeset
   784
Gear^.Y:= Gear^.Y - Gear^.Tex^.h;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   785
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   786
if Steps > 1 then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   787
    Gear^.doStep(Gear, Steps-1);
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   788
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   789
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   790
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   791
procedure doStepSmokeTrace(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   792
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   793
inc(Gear^.Timer, Steps );
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   794
if Gear^.Timer > 64 then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   795
    begin
3995
360332f8785f SmokeTrace: animation got aborted before last animation frame was displayed
sheepluva
parents: 3994
diff changeset
   796
    if Gear^.State = 0 then
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   797
        begin
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   798
        DeleteVisualGear(Gear);
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   799
        exit;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   800
        end;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   801
    dec(Gear^.State, Gear^.Timer div 65);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   802
    Gear^.Timer:= Gear^.Timer mod 65;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   803
    end;
3593
ae50f63e4fa9 Remove hwFloat from VisualGears - they don't need the precision for syncing purposes, and it saves a whole lot of operations.
nemo
parents: 3592
diff changeset
   804
Gear^.dX:= Gear^.dX + cWindSpeedf * Steps;
3587
eca835df4106 Optimise vgtSmokeTrace/vgtEvilTrace handler
nemo
parents: 3466
diff changeset
   805
Gear^.X:= Gear^.X + Gear^.dX;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   806
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   807
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   808
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   809
procedure doStepExplosionWork(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   810
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   811
inc(Gear^.Timer, Steps);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   812
if Gear^.Timer > 75 then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   813
    begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   814
    inc(Gear^.State, Gear^.Timer div 76);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   815
    Gear^.Timer:= Gear^.Timer mod 76;
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   816
    if Gear^.State > 5 then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   817
        DeleteVisualGear(Gear);
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   818
    end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   819
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   820
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   821
procedure doStepExplosion(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   822
var i: LongWord;
4473
b6487d2c15ad try this mikade
nemo
parents: 4452
diff changeset
   823
    gX,gY: LongInt;
b6487d2c15ad try this mikade
nemo
parents: 4452
diff changeset
   824
    vg: PVisualGear;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   825
begin
3593
ae50f63e4fa9 Remove hwFloat from VisualGears - they don't need the precision for syncing purposes, and it saves a whole lot of operations.
nemo
parents: 3592
diff changeset
   826
gX:= round(Gear^.X);
ae50f63e4fa9 Remove hwFloat from VisualGears - they don't need the precision for syncing purposes, and it saves a whole lot of operations.
nemo
parents: 3592
diff changeset
   827
gY:= round(Gear^.Y);
8330
aaefa587e277 update branch with default
koda
parents: 8026 8204
diff changeset
   828
for i:= 0 to 31 do
4473
b6487d2c15ad try this mikade
nemo
parents: 4452
diff changeset
   829
    begin
b6487d2c15ad try this mikade
nemo
parents: 4452
diff changeset
   830
    vg:= AddVisualGear(gX, gY, vgtFire);
8330
aaefa587e277 update branch with default
koda
parents: 8026 8204
diff changeset
   831
    if vg <> nil then
4475
54e78c40970b rendering optimisations. remove the recursive flames in explosions (might need more due to the gravity change in the new flames) but more usefully, eliminate a number of redundant Tint calls
nemo
parents: 4473
diff changeset
   832
        begin
54e78c40970b rendering optimisations. remove the recursive flames in explosions (might need more due to the gravity change in the new flames) but more usefully, eliminate a number of redundant Tint calls
nemo
parents: 4473
diff changeset
   833
        vg^.State:= gstTmpFlag;
54e78c40970b rendering optimisations. remove the recursive flames in explosions (might need more due to the gravity change in the new flames) but more usefully, eliminate a number of redundant Tint calls
nemo
parents: 4473
diff changeset
   834
        inc(vg^.FrameTicks, vg^.FrameTicks)
54e78c40970b rendering optimisations. remove the recursive flames in explosions (might need more due to the gravity change in the new flames) but more usefully, eliminate a number of redundant Tint calls
nemo
parents: 4473
diff changeset
   835
        end
4473
b6487d2c15ad try this mikade
nemo
parents: 4452
diff changeset
   836
    end;
3590
66e1bc1ea3a9 explosions: cache rounded X,Y values
sheepluva
parents: 3587
diff changeset
   837
for i:= 0 to  8 do AddVisualGear(gX, gY, vgtExplPart);
66e1bc1ea3a9 explosions: cache rounded X,Y values
sheepluva
parents: 3587
diff changeset
   838
for i:= 0 to  8 do AddVisualGear(gX, gY, vgtExplPart2);
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   839
Gear^.doStep:= @doStepExplosionWork;
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   840
if Steps > 1 then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   841
    Gear^.doStep(Gear, Steps-1);
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   842
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   843
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   844
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   845
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   846
procedure doStepBigExplosionWork(Gear: PVisualGear; Steps: Longword);
5855
74c621e12baa I do believe the only thing that was *ever* wrong with camera shake was someone decided to use getRandom on something that had always been a visual effect anyway. Pretty sure WorldDx is in fact safe to modify.
nemo
parents: 5840
diff changeset
   847
var maxMovement: LongInt;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   848
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   849
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   850
inc(Gear^.Timer, Steps);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   851
if (Gear^.Timer and 5) = 0 then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   852
    begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   853
    maxMovement := max(1, 13 - ((Gear^.Timer * 15) div 250));
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   854
    ShakeCamera(maxMovement);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   855
    end;
5804
98192121dc69 Since shakes are still proving unsafe until camera is reworked, try a mild flash instead
nemo
parents: 5803
diff changeset
   856
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   857
if Gear^.Timer > 250 then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   858
    DeleteVisualGear(Gear);
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   859
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   860
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   861
procedure doStepBigExplosion(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   862
var i: LongWord;
4473
b6487d2c15ad try this mikade
nemo
parents: 4452
diff changeset
   863
    gX,gY: LongInt;
b6487d2c15ad try this mikade
nemo
parents: 4452
diff changeset
   864
    vg: PVisualGear;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   865
begin
5855
74c621e12baa I do believe the only thing that was *ever* wrong with camera shake was someone decided to use getRandom on something that had always been a visual effect anyway. Pretty sure WorldDx is in fact safe to modify.
nemo
parents: 5840
diff changeset
   866
//ScreenFade:= sfFromWhite;
74c621e12baa I do believe the only thing that was *ever* wrong with camera shake was someone decided to use getRandom on something that had always been a visual effect anyway. Pretty sure WorldDx is in fact safe to modify.
nemo
parents: 5840
diff changeset
   867
//ScreenFadeValue:= round(60 * zoom * zoom);
74c621e12baa I do believe the only thing that was *ever* wrong with camera shake was someone decided to use getRandom on something that had always been a visual effect anyway. Pretty sure WorldDx is in fact safe to modify.
nemo
parents: 5840
diff changeset
   868
//ScreenFadeSpeed:= 5;
3593
ae50f63e4fa9 Remove hwFloat from VisualGears - they don't need the precision for syncing purposes, and it saves a whole lot of operations.
nemo
parents: 3592
diff changeset
   869
gX:= round(Gear^.X);
ae50f63e4fa9 Remove hwFloat from VisualGears - they don't need the precision for syncing purposes, and it saves a whole lot of operations.
nemo
parents: 3592
diff changeset
   870
gY:= round(Gear^.Y);
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   871
AddVisualGear(gX, gY, vgtSmokeRing);
8330
aaefa587e277 update branch with default
koda
parents: 8026 8204
diff changeset
   872
for i:= 0 to 46 do
4473
b6487d2c15ad try this mikade
nemo
parents: 4452
diff changeset
   873
    begin
b6487d2c15ad try this mikade
nemo
parents: 4452
diff changeset
   874
    vg:= AddVisualGear(gX, gY, vgtFire);
8330
aaefa587e277 update branch with default
koda
parents: 8026 8204
diff changeset
   875
    if vg <> nil then
4475
54e78c40970b rendering optimisations. remove the recursive flames in explosions (might need more due to the gravity change in the new flames) but more usefully, eliminate a number of redundant Tint calls
nemo
parents: 4473
diff changeset
   876
        begin
54e78c40970b rendering optimisations. remove the recursive flames in explosions (might need more due to the gravity change in the new flames) but more usefully, eliminate a number of redundant Tint calls
nemo
parents: 4473
diff changeset
   877
        vg^.State:= gstTmpFlag;
54e78c40970b rendering optimisations. remove the recursive flames in explosions (might need more due to the gravity change in the new flames) but more usefully, eliminate a number of redundant Tint calls
nemo
parents: 4473
diff changeset
   878
        inc(vg^.FrameTicks, vg^.FrameTicks)
54e78c40970b rendering optimisations. remove the recursive flames in explosions (might need more due to the gravity change in the new flames) but more usefully, eliminate a number of redundant Tint calls
nemo
parents: 4473
diff changeset
   879
        end
4473
b6487d2c15ad try this mikade
nemo
parents: 4452
diff changeset
   880
    end;
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   881
for i:= 0 to 15 do
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   882
    AddVisualGear(gX, gY, vgtExplPart);
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   883
for i:= 0 to 15 do
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   884
    AddVisualGear(gX, gY, vgtExplPart2);
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   885
Gear^.doStep:= @doStepBigExplosionWork;
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   886
if Steps > 1 then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   887
    Gear^.doStep(Gear, Steps-1);
8446
c18ba8726f5a Fix sources so pas2c written in haskell could render them again
unc0rr
parents: 8330
diff changeset
   888
c18ba8726f5a Fix sources so pas2c written in haskell could render them again
unc0rr
parents: 8330
diff changeset
   889
{$IFNDEF PAS2C}
8204
9a6030d96273 GCI2012: Convert uMobile into a Callback Record
Rowan D
parents: 7808
diff changeset
   890
with mobileRecord do
9a6030d96273 GCI2012: Convert uMobile into a Callback Record
Rowan D
parents: 7808
diff changeset
   891
    if (performRumble <> nil) and (not fastUntilLag) then
9a6030d96273 GCI2012: Convert uMobile into a Callback Record
Rowan D
parents: 7808
diff changeset
   892
        performRumble(kSystemSoundID_Vibrate);
8446
c18ba8726f5a Fix sources so pas2c written in haskell could render them again
unc0rr
parents: 8330
diff changeset
   893
{$ENDIF}
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   894
end;
3689
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   895
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   896
procedure doStepChunk(Gear: PVisualGear; Steps: Longword);
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   897
begin
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   898
Gear^.X:= Gear^.X + Gear^.dX * Steps;
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   899
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   900
Gear^.Y:= Gear^.Y + Gear^.dY * Steps;
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   901
Gear^.dY:= Gear^.dY + cGravityf * Steps;
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   902
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   903
Gear^.Angle:= round(Gear^.Angle + Steps) mod cMaxAngle;
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   904
15239
de53425ebc39 Fix vgtChunk being never deleted if rqPlainSplash is set
Wuzzy <Wuzzy2@mail.ru>
parents: 15238
diff changeset
   905
if CheckCoordInWater(round(Gear^.X), round(Gear^.Y)) then
3689
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   906
    begin
15239
de53425ebc39 Fix vgtChunk being never deleted if rqPlainSplash is set
Wuzzy <Wuzzy2@mail.ru>
parents: 15238
diff changeset
   907
    if ((cReducedQuality and rqPlainSplash) = 0) then
de53425ebc39 Fix vgtChunk being never deleted if rqPlainSplash is set
Wuzzy <Wuzzy2@mail.ru>
parents: 15238
diff changeset
   908
        AddVisualGear(round(Gear^.X), round(Gear^.Y), vgtDroplet);
3689
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   909
    DeleteVisualGear(Gear);
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   910
    end
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   911
end;
4327
224efdd648e1 Small animation on bullet impact
Palewolf
parents: 4279
diff changeset
   912
224efdd648e1 Small animation on bullet impact
Palewolf
parents: 4279
diff changeset
   913
////////////////////////////////////////////////////////////////////////////////
224efdd648e1 Small animation on bullet impact
Palewolf
parents: 4279
diff changeset
   914
procedure doStepBulletHit(Gear: PVisualGear; Steps: Longword);
224efdd648e1 Small animation on bullet impact
Palewolf
parents: 4279
diff changeset
   915
begin
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   916
if Gear^.FrameTicks <= Steps then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   917
    DeleteVisualGear(Gear)
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   918
else
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   919
    dec(Gear^.FrameTicks, Steps);
4327
224efdd648e1 Small animation on bullet impact
Palewolf
parents: 4279
diff changeset
   920
end;
4420
6be946bcd17a Add a visual gear for drawing circles. Intent is to allow specifying areas on map for lua scripts (such as to indicate a location to go to). Could also be used to, say, circle a hog in CTF. Also add a "Critical" flag for visual gears so a gear flagges as such will always be created.
nemo
parents: 4379
diff changeset
   921
6be946bcd17a Add a visual gear for drawing circles. Intent is to allow specifying areas on map for lua scripts (such as to indicate a location to go to). Could also be used to, say, circle a hog in CTF. Also add a "Critical" flag for visual gears so a gear flagges as such will always be created.
nemo
parents: 4379
diff changeset
   922
////////////////////////////////////////////////////////////////////////////////
6be946bcd17a Add a visual gear for drawing circles. Intent is to allow specifying areas on map for lua scripts (such as to indicate a location to go to). Could also be used to, say, circle a hog in CTF. Also add a "Critical" flag for visual gears so a gear flagges as such will always be created.
nemo
parents: 4379
diff changeset
   923
procedure doStepCircle(Gear: PVisualGear; Steps: Longword);
4452
258945553b18 make Tint(longword) use RGBA
nemo
parents: 4421
diff changeset
   924
var tmp: LongInt;
4421
58c6918acde4 corrected steps
nemo
parents: 4420
diff changeset
   925
    i: LongWord;
4420
6be946bcd17a Add a visual gear for drawing circles. Intent is to allow specifying areas on map for lua scripts (such as to indicate a location to go to). Could also be used to, say, circle a hog in CTF. Also add a "Critical" flag for visual gears so a gear flagges as such will always be created.
nemo
parents: 4379
diff changeset
   926
begin
6be946bcd17a Add a visual gear for drawing circles. Intent is to allow specifying areas on map for lua scripts (such as to indicate a location to go to). Could also be used to, say, circle a hog in CTF. Also add a "Critical" flag for visual gears so a gear flagges as such will always be created.
nemo
parents: 4379
diff changeset
   927
with Gear^ do
6be946bcd17a Add a visual gear for drawing circles. Intent is to allow specifying areas on map for lua scripts (such as to indicate a location to go to). Could also be used to, say, circle a hog in CTF. Also add a "Critical" flag for visual gears so a gear flagges as such will always be created.
nemo
parents: 4379
diff changeset
   928
    if Frame <> 0 then
4421
58c6918acde4 corrected steps
nemo
parents: 4420
diff changeset
   929
        for i:= 1 to Steps do
4420
6be946bcd17a Add a visual gear for drawing circles. Intent is to allow specifying areas on map for lua scripts (such as to indicate a location to go to). Could also be used to, say, circle a hog in CTF. Also add a "Critical" flag for visual gears so a gear flagges as such will always be created.
nemo
parents: 4379
diff changeset
   930
            begin
4421
58c6918acde4 corrected steps
nemo
parents: 4420
diff changeset
   931
            inc(FrameTicks);
58c6918acde4 corrected steps
nemo
parents: 4420
diff changeset
   932
            if (FrameTicks mod Frame) = 0 then
58c6918acde4 corrected steps
nemo
parents: 4420
diff changeset
   933
                begin
58c6918acde4 corrected steps
nemo
parents: 4420
diff changeset
   934
                tmp:= Gear^.Tint and $FF;
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   935
                if tdY >= 0 then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   936
                    inc(tmp)
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   937
                else
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   938
                    dec(tmp);
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   939
                if tmp < round(dX) then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   940
                    tdY:= 1;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   941
                if tmp > round(dY) then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   942
                    tdY:= -1;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   943
                if tmp > 255 then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   944
                    tmp := 255;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   945
                if tmp < 0 then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6553
diff changeset
   946
                    tmp := 0;
5179
8d64dcb566ea Fix "Mixing signed expressions and longwords gives a 64bit result" warnings
unc0rr
parents: 5151
diff changeset
   947
                Gear^.Tint:= (Gear^.Tint and $FFFFFF00) or Longword(tmp)
4421
58c6918acde4 corrected steps
nemo
parents: 4420
diff changeset
   948
                end
4420
6be946bcd17a Add a visual gear for drawing circles. Intent is to allow specifying areas on map for lua scripts (such as to indicate a location to go to). Could also be used to, say, circle a hog in CTF. Also add a "Critical" flag for visual gears so a gear flagges as such will always be created.
nemo
parents: 4379
diff changeset
   949
            end
6be946bcd17a Add a visual gear for drawing circles. Intent is to allow specifying areas on map for lua scripts (such as to indicate a location to go to). Could also be used to, say, circle a hog in CTF. Also add a "Critical" flag for visual gears so a gear flagges as such will always be created.
nemo
parents: 4379
diff changeset
   950
end;
5357
ec36f3d53f3c Tiny optimization: convert smooth wind indicator change gear into visual gear
unc0rr
parents: 5236
diff changeset
   951
ec36f3d53f3c Tiny optimization: convert smooth wind indicator change gear into visual gear
unc0rr
parents: 5236
diff changeset
   952
////////////////////////////////////////////////////////////////////////////////
10859
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   953
var
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   954
    currwindbar: PVisualGear = nil;
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   955
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   956
procedure doStepSmoothWindBarWork(Gear: PVisualGear; Steps: Longword);
14543
78363dbfd5dc Prevent wind bar from overflowing with high wind values
Wuzzy <Wuzzy2@mail.ru>
parents: 13235
diff changeset
   957
const maxWindBarWidth = 73;
10859
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   958
begin
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   959
    if currwindbar = Gear then
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   960
    begin
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   961
    inc(Gear^.Timer, Steps);
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   962
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   963
    while Gear^.Timer >= 10 do
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   964
        begin
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   965
        dec(Gear^.Timer, 10);
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   966
        if WindBarWidth < Gear^.Tag then
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   967
            inc(WindBarWidth)
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   968
        else if WindBarWidth > Gear^.Tag then
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   969
            dec(WindBarWidth);
14543
78363dbfd5dc Prevent wind bar from overflowing with high wind values
Wuzzy <Wuzzy2@mail.ru>
parents: 13235
diff changeset
   970
        // Prevent wind bar from overflowing
78363dbfd5dc Prevent wind bar from overflowing with high wind values
Wuzzy <Wuzzy2@mail.ru>
parents: 13235
diff changeset
   971
        if WindBarWidth > maxWindBarWidth then
78363dbfd5dc Prevent wind bar from overflowing with high wind values
Wuzzy <Wuzzy2@mail.ru>
parents: 13235
diff changeset
   972
            WindBarWidth:= maxWindBarWidth;
78363dbfd5dc Prevent wind bar from overflowing with high wind values
Wuzzy <Wuzzy2@mail.ru>
parents: 13235
diff changeset
   973
        if WindBarWidth < - maxWindBarWidth then
78363dbfd5dc Prevent wind bar from overflowing with high wind values
Wuzzy <Wuzzy2@mail.ru>
parents: 13235
diff changeset
   974
            WindBarWidth:= - maxWindBarWidth;
10859
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   975
        end;
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   976
    if cWindspeedf > Gear^.dAngle then
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   977
        begin
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   978
        cWindspeedf := cWindspeedf - Gear^.Angle*Steps;
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   979
        if cWindspeedf < Gear^.dAngle then cWindspeedf:= Gear^.dAngle;
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   980
        end
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   981
    else if cWindspeedf < Gear^.dAngle then
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   982
        begin
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   983
        cWindspeedf := cWindspeedf + Gear^.Angle*Steps;
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   984
        if cWindspeedf > Gear^.dAngle then cWindspeedf:= Gear^.dAngle;
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   985
        end;
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   986
    end;
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   987
14543
78363dbfd5dc Prevent wind bar from overflowing with high wind values
Wuzzy <Wuzzy2@mail.ru>
parents: 13235
diff changeset
   988
    if (((WindBarWidth = Gear^.Tag) or (Abs(WindBarWidth) >= maxWindBarWidth)) and (cWindspeedf = Gear^.dAngle)) or (currwindbar <> Gear) then
10859
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   989
    begin
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   990
        if currwindbar = Gear then currwindbar:= nil;
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   991
        DeleteVisualGear(Gear)
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   992
    end
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   993
end;
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   994
5357
ec36f3d53f3c Tiny optimization: convert smooth wind indicator change gear into visual gear
unc0rr
parents: 5236
diff changeset
   995
procedure doStepSmoothWindBar(Gear: PVisualGear; Steps: Longword);
ec36f3d53f3c Tiny optimization: convert smooth wind indicator change gear into visual gear
unc0rr
parents: 5236
diff changeset
   996
begin
10859
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   997
    currwindbar:= Gear;
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   998
    Gear^.doStep:= @doStepSmoothWindBarWork;
d7e3abe3d5c2 Only allow one instance of vgtSmoothWindbar also
unc0rr
parents: 10858
diff changeset
   999
    doStepSmoothWindBarWork(Gear, Steps)
5357
ec36f3d53f3c Tiny optimization: convert smooth wind indicator change gear into visual gear
unc0rr
parents: 5236
diff changeset
  1000
end;
5562
8056d82b4d23 Seduction animation. New visual gear type.
nemo
parents: 5491
diff changeset
  1001
////////////////////////////////////////////////////////////////////////////////
8056d82b4d23 Seduction animation. New visual gear type.
nemo
parents: 5491
diff changeset
  1002
procedure doStepStraightShot(Gear: PVisualGear; Steps: Longword);
8056d82b4d23 Seduction animation. New visual gear type.
nemo
parents: 5491
diff changeset
  1003
begin
8056d82b4d23 Seduction animation. New visual gear type.
nemo
parents: 5491
diff changeset
  1004
Gear^.X:= Gear^.X + Gear^.dX * Steps;
8056d82b4d23 Seduction animation. New visual gear type.
nemo
parents: 5491
diff changeset
  1005
Gear^.Y:= Gear^.Y - Gear^.dY * Steps;
5357
ec36f3d53f3c Tiny optimization: convert smooth wind indicator change gear into visual gear
unc0rr
parents: 5236
diff changeset
  1006
10526
b43d175d1577 Avoid promoting violence to hedgehogs. At least once a year.
nemo
parents: 10355
diff changeset
  1007
Gear^.dY:= Gear^.dY + Gear^.tdY * Steps;
b43d175d1577 Avoid promoting violence to hedgehogs. At least once a year.
nemo
parents: 10355
diff changeset
  1008
Gear^.dX:= Gear^.dX + Gear^.tdX * Steps;
b43d175d1577 Avoid promoting violence to hedgehogs. At least once a year.
nemo
parents: 10355
diff changeset
  1009
5562
8056d82b4d23 Seduction animation. New visual gear type.
nemo
parents: 5491
diff changeset
  1010
if Gear^.FrameTicks <= Steps then
8056d82b4d23 Seduction animation. New visual gear type.
nemo
parents: 5491
diff changeset
  1011
    DeleteVisualGear(Gear)
8056d82b4d23 Seduction animation. New visual gear type.
nemo
parents: 5491
diff changeset
  1012
else
8056d82b4d23 Seduction animation. New visual gear type.
nemo
parents: 5491
diff changeset
  1013
    begin
8056d82b4d23 Seduction animation. New visual gear type.
nemo
parents: 5491
diff changeset
  1014
    dec(Gear^.FrameTicks, Steps);
8330
aaefa587e277 update branch with default
koda
parents: 8026 8204
diff changeset
  1015
    if (Gear^.FrameTicks < 501) and (Gear^.FrameTicks mod 5 = 0) then
5562
8056d82b4d23 Seduction animation. New visual gear type.
nemo
parents: 5491
diff changeset
  1016
        Gear^.Tint:= (Gear^.Tint and $FFFFFF00) or (((Gear^.Tint and $000000FF) * Gear^.FrameTicks) div 500)
8056d82b4d23 Seduction animation. New visual gear type.
nemo
parents: 5491
diff changeset
  1017
    end
8056d82b4d23 Seduction animation. New visual gear type.
nemo
parents: 5491
diff changeset
  1018
end;
8056d82b4d23 Seduction animation. New visual gear type.
nemo
parents: 5491
diff changeset
  1019
10251
a3b42e81803c collision indicator on failed girder placement (especially useful with rubberband I guess). still needs some tweaks but I am going to bed now :P
sheepluva
parents: 10193
diff changeset
  1020
////////////////////////////////////////////////////////////////////////////////
a3b42e81803c collision indicator on failed girder placement (especially useful with rubberband I guess). still needs some tweaks but I am going to bed now :P
sheepluva
parents: 10193
diff changeset
  1021
procedure doStepNoPlaceWarn(Gear: PVisualGear; Steps: Longword);
a3b42e81803c collision indicator on failed girder placement (especially useful with rubberband I guess). still needs some tweaks but I am going to bed now :P
sheepluva
parents: 10193
diff changeset
  1022
begin
a3b42e81803c collision indicator on failed girder placement (especially useful with rubberband I guess). still needs some tweaks but I am going to bed now :P
sheepluva
parents: 10193
diff changeset
  1023
a3b42e81803c collision indicator on failed girder placement (especially useful with rubberband I guess). still needs some tweaks but I am going to bed now :P
sheepluva
parents: 10193
diff changeset
  1024
if Gear^.FrameTicks <= Steps then
a3b42e81803c collision indicator on failed girder placement (especially useful with rubberband I guess). still needs some tweaks but I am going to bed now :P
sheepluva
parents: 10193
diff changeset
  1025
    DeleteVisualGear(Gear)
a3b42e81803c collision indicator on failed girder placement (especially useful with rubberband I guess). still needs some tweaks but I am going to bed now :P
sheepluva
parents: 10193
diff changeset
  1026
else
a3b42e81803c collision indicator on failed girder placement (especially useful with rubberband I guess). still needs some tweaks but I am going to bed now :P
sheepluva
parents: 10193
diff changeset
  1027
    begin
a3b42e81803c collision indicator on failed girder placement (especially useful with rubberband I guess). still needs some tweaks but I am going to bed now :P
sheepluva
parents: 10193
diff changeset
  1028
    // age
a3b42e81803c collision indicator on failed girder placement (especially useful with rubberband I guess). still needs some tweaks but I am going to bed now :P
sheepluva
parents: 10193
diff changeset
  1029
    dec(Gear^.FrameTicks, Steps);
a3b42e81803c collision indicator on failed girder placement (especially useful with rubberband I guess). still needs some tweaks but I am going to bed now :P
sheepluva
parents: 10193
diff changeset
  1030
    // toggle between orange and red every few ticks
10298
7d5d93f9a515 make using the teleporter a bit less challenging
sheepluva
parents: 10251
diff changeset
  1031
    if (Gear^.FrameTicks div 256) mod 2 = 0 then
10251
a3b42e81803c collision indicator on failed girder placement (especially useful with rubberband I guess). still needs some tweaks but I am going to bed now :P
sheepluva
parents: 10193
diff changeset
  1032
        Gear^.Tint:= $FF400000
a3b42e81803c collision indicator on failed girder placement (especially useful with rubberband I guess). still needs some tweaks but I am going to bed now :P
sheepluva
parents: 10193
diff changeset
  1033
    else
a3b42e81803c collision indicator on failed girder placement (especially useful with rubberband I guess). still needs some tweaks but I am going to bed now :P
sheepluva
parents: 10193
diff changeset
  1034
        Gear^.Tint:= $FF000000;
a3b42e81803c collision indicator on failed girder placement (especially useful with rubberband I guess). still needs some tweaks but I am going to bed now :P
sheepluva
parents: 10193
diff changeset
  1035
    // fade out alpha
10299
45e3e901b3b9 grmlgrmlpas2cgrmlgrml
sheepluva
parents: 10298
diff changeset
  1036
    Gear^.Tint:= (Gear^.Tint and (not $FF)) or (255 * Gear^.FrameTicks div 3000);
10251
a3b42e81803c collision indicator on failed girder placement (especially useful with rubberband I guess). still needs some tweaks but I am going to bed now :P
sheepluva
parents: 10193
diff changeset
  1037
    end
a3b42e81803c collision indicator on failed girder placement (especially useful with rubberband I guess). still needs some tweaks but I am going to bed now :P
sheepluva
parents: 10193
diff changeset
  1038
end;
9283
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1039
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1040
const handlers: array[TVisualGearType] of TVGearStepProcedure =
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1041
        (
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1042
            @doStepFlake,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1043
            @doStepCloud,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1044
            @doStepExpl,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1045
            @doStepExpl,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1046
            @doStepFire,
15773
da1bb21e6fbf Teach vgtSmallDamageTag to use dX, dY and screen coords (Frame<>0)
Wuzzy <Wuzzy2@mail.ru>
parents: 15772
diff changeset
  1047
            @doStepSmallDamageTag,
9283
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1048
            @doStepTeamHealthSorter,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1049
            @doStepSpeechBubble,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1050
            @doStepBubble,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1051
            @doStepSteam,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1052
            @doStepAmmo,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1053
            @doStepSmoke,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1054
            @doStepSmoke,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1055
            @doStepShell,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1056
            @doStepDust,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1057
            @doStepSplash,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1058
            @doStepDroplet,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1059
            @doStepSmokeRing,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1060
            @doStepBeeTrace,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1061
            @doStepEgg,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1062
            @doStepFeather,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1063
            @doStepHealthTag,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1064
            @doStepSmokeTrace,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1065
            @doStepSmokeTrace,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1066
            @doStepExplosion,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1067
            @doStepBigExplosion,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1068
            @doStepChunk,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1069
            @doStepNote,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1070
            @doStepLineTrail,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1071
            @doStepBulletHit,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1072
            @doStepCircle,
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1073
            @doStepSmoothWindBar,
10251
a3b42e81803c collision indicator on failed girder placement (especially useful with rubberband I guess). still needs some tweaks but I am going to bed now :P
sheepluva
parents: 10193
diff changeset
  1074
            @doStepStraightShot,
a3b42e81803c collision indicator on failed girder placement (especially useful with rubberband I guess). still needs some tweaks but I am going to bed now :P
sheepluva
parents: 10193
diff changeset
  1075
            @doStepNoPlaceWarn
9283
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1076
        );
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1077
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1078
procedure initModule;
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1079
begin
9960
fac73b8a52d3 Fix doStepHandlers confusion
unc0rr
parents: 9950
diff changeset
  1080
    doStepVGHandlers:= handlers
9283
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1081
end;
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1082
76e68c136a11 Refactoring: VGSHandlers.inc -> uVisualGearsHandlers.pas
unc0rr
parents: 9080
diff changeset
  1083
end.