hedgewars/VGSHandlers.inc
author nemo
Sun, 10 Oct 2010 20:16:17 -0400
changeset 3951 c9a63db3e603
parent 3909 4ba25a3d15af
child 3976 abaf741a4e21
permissions -rw-r--r--
Correct another bug in slot switching, adjust width of theme list, really truly fix reset of weps (I hope) should also fix infinite teleport bug in place hogs mode. Slow update of health to 5s for inf attack mode.
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
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
     3
 * Copyright (c) 2004-2010 Andrey Korotaev <unC0Rr@gmail.com>
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
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    17
 *)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    18
procedure doStepFlake(Gear: PVisualGear; Steps: Longword);
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
    19
var sign: float;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    20
begin
3641
98319a621dc8 save the gl client state to get a nice 80% fps boost
koda
parents: 3611
diff changeset
    21
if vobCount = 0 then exit;
3611
ed00aa2b339e interpret parameters before initializing everything
koda
parents: 3597
diff changeset
    22
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
    23
sign:= 1;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    24
with Gear^ do
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    25
    begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    26
    inc(FrameTicks, Steps);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    27
    if FrameTicks > vobFrameTicks then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    28
        begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    29
        dec(FrameTicks, vobFrameTicks);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    30
        inc(Frame);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    31
        if Frame = vobFramesCount then Frame:= 0
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    32
        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
    33
    X:= X + (cWindSpeedf * 200 + dX + tdX) * Steps;
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
    34
    Y:= Y + (dY + tdY + cGravityf * vobFallSpeed) * Steps;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    35
    Angle:= Angle + dAngle * Steps;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    36
  
3764
eb91c02f2d84 Engine:
smaxx
parents: 3751
diff changeset
    37
    if (round(X) >= cLeftScreenBorder) and
eb91c02f2d84 Engine:
smaxx
parents: 3751
diff changeset
    38
       (round(X) <= cRightScreenBorder) and
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
    39
       (round(Y) <= (LAND_HEIGHT + 75)) and 
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    40
       (Timer > 0) and (Timer-Steps > 0) then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    41
        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
    42
        if tdX > 0 then sign := 1
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
    43
        else sign:= -1;
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
    44
        tdX:= tdX - 0.005*Steps*sign;
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
    45
        if ((sign < 0) and (tdX > 0)) or ((sign > 0) and (tdX < 0)) then 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
    46
        if tdX > 0 then sign := 1
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
    47
        else sign:= -1;
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
    48
        tdY:= tdY - 0.005*Steps*sign;
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
    49
        if ((sign < 0) and (tdY > 0)) or ((sign > 0) and (tdY < 0)) then tdY:= 0;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    50
        dec(Timer, Steps)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    51
        end
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    52
    else
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    53
        begin
3764
eb91c02f2d84 Engine:
smaxx
parents: 3751
diff changeset
    54
        if round(X) < cLeftScreenBorder then X:= X + cScreenSpace else
eb91c02f2d84 Engine:
smaxx
parents: 3751
diff changeset
    55
        if round(X) > cRightScreenBorder then X:= X - cScreenSpace;
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
    56
        // if round(Y) < (LAND_HEIGHT - 1024 - 75) then Y:= Y + float(25); // For if flag is set for flakes rising upwards?
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
    57
        if round(Y) > (LAND_HEIGHT + 75) then Y:= Y - float(1024 + 150); // TODO - configure in theme (jellies for example could use limited range)
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    58
        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
    59
        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
    60
        tdY:= 0
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    61
        end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    62
    end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    63
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    64
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    65
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    66
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    67
procedure doStepBeeTrace(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    68
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    69
if Gear^.FrameTicks > Steps then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    70
    dec(Gear^.FrameTicks, Steps)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    71
else
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    72
    DeleteVisualGear(Gear);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    73
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    74
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    75
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    76
procedure doStepCloud(Gear: PVisualGear; Steps: Longword);
3592
0bcad5c38c9e clouds: up-and-down-bouncing now without evil loop
sheepluva
parents: 3590
diff changeset
    77
var s: Longword;
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
    78
    t: float;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    79
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
    80
Gear^.X:= Gear^.X + (cWindSpeedf * 200 + Gear^.dX) * Steps;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    81
3592
0bcad5c38c9e clouds: up-and-down-bouncing now without evil loop
sheepluva
parents: 3590
diff changeset
    82
// 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
    83
s := (GameTicks + Gear^.Timer) mod 4096;
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
    84
t := 8 * AngleSin(s mod 2048).QWordValue / 4294967296;
3597
978c30ef50fc visual gears: fixing nemo's c-style assignment/multiplications
sheepluva
parents: 3593
diff changeset
    85
if (s < 2048) then t := -t;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    86
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
    87
Gear^.Y := LAND_HEIGHT-1184 + Gear^.Timer mod 8 + t;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    88
3764
eb91c02f2d84 Engine:
smaxx
parents: 3751
diff changeset
    89
if round(Gear^.X) < cLeftScreenBorder then Gear^.X:= Gear^.X + cScreenSpace else
eb91c02f2d84 Engine:
smaxx
parents: 3751
diff changeset
    90
if round(Gear^.X) > cRightScreenBorder then Gear^.X:= Gear^.X - cScreenSpace
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    91
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    92
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    93
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    94
procedure doStepExpl(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    95
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    96
Gear^.X:= Gear^.X + Gear^.dX * Steps;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    97
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
    98
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
    99
//Gear^.dY:= Gear^.dY + cGravityf;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   100
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   101
if Gear^.FrameTicks <= Steps then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   102
    if Gear^.Frame = 0 then DeleteVisualGear(Gear)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   103
    else
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   104
        begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   105
        dec(Gear^.Frame);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   106
        Gear^.FrameTicks:= cExplFrameTicks
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   107
        end
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   108
    else dec(Gear^.FrameTicks, Steps)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   109
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   110
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   111
////////////////////////////////////////////////////////////////////////////////
3704
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   112
procedure doStepNote(Gear: PVisualGear; Steps: Longword);
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   113
begin
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   114
Gear^.X:= Gear^.X + Gear^.dX * Steps;
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   115
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   116
Gear^.Y:= Gear^.Y + Gear^.dY * Steps;
3706
a79784328c03 Engine:
smaxx
parents: 3704
diff changeset
   117
Gear^.dY:= Gear^.dY + cGravityf * Steps / 2;
3704
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   118
3706
a79784328c03 Engine:
smaxx
parents: 3704
diff changeset
   119
Gear^.Angle:= Gear^.Angle + (Gear^.Frame + 1) * Steps / 10;
a79784328c03 Engine:
smaxx
parents: 3704
diff changeset
   120
while Gear^.Angle > cMaxAngle do
a79784328c03 Engine:
smaxx
parents: 3704
diff changeset
   121
    Gear^.Angle:= Gear^.Angle - cMaxAngle;
3704
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   122
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   123
if Gear^.FrameTicks <= Steps then
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   124
    DeleteVisualGear(Gear)
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   125
else
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   126
    dec(Gear^.FrameTicks, Steps)
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   127
end;
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   128
ed2b9c7fb260 Engine:
smaxx
parents: 3699
diff changeset
   129
////////////////////////////////////////////////////////////////////////////////
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   130
procedure doStepEgg(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   131
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   132
Gear^.X:= Gear^.X + Gear^.dX * Steps;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   133
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   134
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
   135
Gear^.dY:= Gear^.dY + cGravityf * Steps;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   136
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   137
Gear^.Angle:= round(Gear^.Angle + Steps) mod cMaxAngle;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   138
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   139
if Gear^.FrameTicks <= Steps then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   140
    DeleteVisualGear(Gear)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   141
else
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   142
    dec(Gear^.FrameTicks, Steps)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   143
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   144
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   145
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   146
procedure doStepFire(Gear: PVisualGear; Steps: Longword);
3751
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   147
var vgt: PVisualGear;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   148
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   149
Gear^.X:= Gear^.X + Gear^.dX * Steps;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   150
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
   151
Gear^.Y:= Gear^.Y + Gear^.dY * Steps;// + cGravityf * (Steps * Steps);
3751
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   152
if (Gear^.State and gstTmpFlag) = 0 then
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   153
    begin
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   154
    Gear^.dY:= Gear^.dY + cGravityf * Steps;
3764
eb91c02f2d84 Engine:
smaxx
parents: 3751
diff changeset
   155
    if ((GameTicks mod 200) < Steps + 1) then
3751
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   156
        begin
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   157
        vgt:= AddVisualGear(round(Gear^.X), round(Gear^.Y), vgtFire);
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   158
        if vgt <> nil then
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   159
            begin
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   160
            vgt^.dx:= 0;
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   161
            vgt^.dy:= 0;
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   162
            vgt^.State:= gstTmpFlag;
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   163
            end;
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   164
        end
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   165
    end
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   166
else
a70c61c076ae Engine:
smaxx
parents: 3706
diff changeset
   167
    inc(Steps, Steps);
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   168
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   169
if Gear^.FrameTicks <= Steps then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   170
       DeleteVisualGear(Gear)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   171
else
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   172
    dec(Gear^.FrameTicks, Steps)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   173
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   174
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   175
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   176
procedure doStepShell(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   177
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   178
Gear^.X:= Gear^.X + Gear^.dX * Steps;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   179
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   180
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
   181
Gear^.dY:= Gear^.dY + cGravityf * Steps;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   182
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   183
Gear^.Angle:= round(Gear^.Angle + Steps) mod cMaxAngle;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   184
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   185
if Gear^.FrameTicks <= Steps then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   186
    DeleteVisualGear(Gear)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   187
else
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   188
    dec(Gear^.FrameTicks, Steps)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   189
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   190
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   191
procedure doStepSmallDamage(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   192
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
   193
Gear^.Y:= Gear^.Y - 0.02 * Steps;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   194
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   195
if Gear^.FrameTicks <= Steps then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   196
    DeleteVisualGear(Gear)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   197
else
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   198
    dec(Gear^.FrameTicks, Steps)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   199
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   200
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   201
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   202
procedure doStepBubble(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   203
begin
3909
4ba25a3d15af remove windspeed from bubbles, remove initial dY from bubbles, apply dY/dX to bubbles, correct offsets on flying saucer flame graphics, add bubbles when flying saucer thrusts underwater, make flying saucer sink more slowly underwater
nemo
parents: 3764
diff changeset
   204
    Gear^.X:= Gear^.X + Gear^.dX * Steps;
4ba25a3d15af remove windspeed from bubbles, remove initial dY from bubbles, apply dY/dX to bubbles, correct offsets on flying saucer flame graphics, add bubbles when flying saucer thrusts underwater, make flying saucer sink more slowly underwater
nemo
parents: 3764
diff changeset
   205
    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
   206
    Gear^.Y:= Gear^.Y - cDrownSpeedf * Steps;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   207
3909
4ba25a3d15af remove windspeed from bubbles, remove initial dY from bubbles, apply dY/dX to bubbles, correct offsets on flying saucer flame graphics, add bubbles when flying saucer thrusts underwater, make flying saucer sink more slowly underwater
nemo
parents: 3764
diff changeset
   208
    Gear^.dX /= (1.001 * Steps);
4ba25a3d15af remove windspeed from bubbles, remove initial dY from bubbles, apply dY/dX to bubbles, correct offsets on flying saucer flame graphics, add bubbles when flying saucer thrusts underwater, make flying saucer sink more slowly underwater
nemo
parents: 3764
diff changeset
   209
    Gear^.dY /= (1.001 * Steps);
4ba25a3d15af remove windspeed from bubbles, remove initial dY from bubbles, apply dY/dX to bubbles, correct offsets on flying saucer flame graphics, add bubbles when flying saucer thrusts underwater, make flying saucer sink more slowly underwater
nemo
parents: 3764
diff changeset
   210
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
   211
    if (Gear^.FrameTicks <= Steps) or (round(Gear^.Y) < cWaterLine) then
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   212
        DeleteVisualGear(Gear)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   213
    else
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   214
        dec(Gear^.FrameTicks, Steps)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   215
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   216
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   217
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   218
procedure doStepHealth(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   219
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   220
Gear^.X:= Gear^.X + Gear^.dX * Steps;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   221
Gear^.Y:= Gear^.Y - Gear^.dY * Steps;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   222
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   223
if Gear^.FrameTicks <= Steps then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   224
    DeleteVisualGear(Gear)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   225
else
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   226
    dec(Gear^.FrameTicks, Steps);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   227
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   228
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   229
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   230
procedure doStepSteam(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   231
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
   232
    Gear^.X:= Gear^.X + (cWindSpeedf * 100 + Gear^.dX) * Steps;
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
   233
    Gear^.Y:= Gear^.Y - cDrownSpeedf * Steps;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   234
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   235
    if Gear^.FrameTicks <= Steps then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   236
        if Gear^.Frame = 0 then DeleteVisualGear(Gear)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   237
        else
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   238
            begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   239
            if Random(2) = 0 then dec(Gear^.Frame);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   240
            Gear^.FrameTicks:= cExplFrameTicks
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   241
            end
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   242
        else dec(Gear^.FrameTicks, Steps)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   243
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   244
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   245
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   246
procedure doStepAmmo(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   247
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
   248
    Gear^.Y:= Gear^.Y - cDrownSpeedf * Steps;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   249
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   250
    Gear^.scale:= Gear^.scale + 0.0025 * Steps;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   251
    Gear^.alpha:= Gear^.alpha - 0.0015 * Steps;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   252
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   253
    if Gear^.alpha < 0 then DeleteVisualGear(Gear)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   254
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   255
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   256
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   257
procedure doStepSmoke(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   258
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
   259
    Gear^.X:= Gear^.X + (cWindSpeedf + Gear^.dX) * Steps;
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
   260
    Gear^.Y:= Gear^.Y - (cDrownSpeedf + Gear^.dY) * Steps;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   261
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
   262
    Gear^.dX := Gear^.dX + (cWindSpeedf * 0.3 * Steps);
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
   263
    //Gear^.dY := Gear^.dY - (cDrownSpeedf * 0.995);
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   264
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   265
    if Gear^.FrameTicks <= Steps then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   266
        if Gear^.Frame = 0 then DeleteVisualGear(Gear)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   267
        else
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   268
            begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   269
            if Random(2) = 0 then dec(Gear^.Frame);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   270
            Gear^.FrameTicks:= cExplFrameTicks
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   271
            end
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   272
        else dec(Gear^.FrameTicks, Steps)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   273
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   274
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   275
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   276
procedure doStepDust(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   277
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
   278
    Gear^.X:= Gear^.X + (cWindSpeedf + (cWindSpeedf * 0.03 * Steps) + Gear^.dX) * Steps;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   279
    Gear^.Y:= Gear^.Y - (Gear^.dY) * Steps;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   280
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
   281
    Gear^.dX := Gear^.dX - (Gear^.dX * 0.005 * Steps);
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
   282
    Gear^.dY := Gear^.dY - (cDrownSpeedf * 0.001 * Steps);
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   283
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   284
    if Gear^.FrameTicks <= Steps then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   285
        if Gear^.Frame = 0 then DeleteVisualGear(Gear)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   286
        else
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   287
            begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   288
            dec(Gear^.Frame);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   289
            Gear^.FrameTicks:= cExplFrameTicks
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   290
            end
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   291
        else dec(Gear^.FrameTicks, Steps)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   292
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   293
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   294
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   295
procedure doStepSplash(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   296
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   297
  if Gear^.FrameTicks <= Steps then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   298
      DeleteVisualGear(Gear)
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
      dec(Gear^.FrameTicks, Steps);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   301
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   302
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   303
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   304
procedure doStepDroplet(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   305
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   306
  Gear^.X:= Gear^.X + Gear^.dX * Steps;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   307
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   308
  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
   309
  Gear^.dY:= Gear^.dY + cGravityf * Steps;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   310
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
   311
  if round(Gear^.Y) > cWaterLine then begin
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   312
    DeleteVisualGear(Gear);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   313
    PlaySound(TSound(ord(sndDroplet1) + Random(3)));
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   314
    end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   315
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   316
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   317
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   318
procedure doStepSmokeRing(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   319
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   320
inc(Gear^.Timer, Steps);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   321
if Gear^.Timer >= Gear^.FrameTicks then DeleteVisualGear(Gear)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   322
else
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   323
    begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   324
    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
   325
    Gear^.alpha := 1 - power(Gear^.Timer / 350, 4);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   326
    if Gear^.alpha < 0 then Gear^.alpha:= 0;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   327
    end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   328
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   329
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   330
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   331
procedure doStepFeather(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   332
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   333
Gear^.X:= Gear^.X + Gear^.dX * Steps;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   334
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   335
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
   336
Gear^.dY:= Gear^.dY + cGravityf * Steps;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   337
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   338
Gear^.Angle:= round(Gear^.Angle + Steps) mod cMaxAngle;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   339
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   340
if Gear^.FrameTicks <= Steps then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   341
    DeleteVisualGear(Gear)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   342
else
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   343
    dec(Gear^.FrameTicks, Steps)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   344
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   345
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   346
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   347
const cSorterWorkTime = 640;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   348
var thexchar: array[0..cMaxTeams] of
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   349
            record
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   350
            dy, ny, dw: LongInt;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   351
            team: PTeam;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   352
            SortFactor: QWord;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   353
            end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   354
    currsorter: PVisualGear = nil;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   355
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   356
procedure doStepTeamHealthSorterWork(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   357
var i, t: LongInt;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   358
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   359
for t:= 1 to Steps do
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   360
    begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   361
    dec(Gear^.Timer);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   362
    if (Gear^.Timer and 15) = 0 then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   363
        for i:= 0 to Pred(TeamsCount) do
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   364
            with thexchar[i] do
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   365
                begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   366
                {$WARNINGS OFF}
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   367
                team^.DrawHealthY:= ny + dy * LongInt(Gear^.Timer) div 640;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   368
                team^.TeamHealthBarWidth:= team^.NewTeamHealthBarWidth + dw * LongInt(Gear^.Timer) div cSorterWorkTime;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   369
                {$WARNINGS ON}
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   370
                end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   371
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   372
    if (Gear^.Timer = 0) or (currsorter <> Gear) then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   373
        begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   374
        if currsorter = Gear then currsorter:= nil;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   375
        DeleteVisualGear(Gear);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   376
        exit
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   377
        end
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   378
    end
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   379
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   380
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   381
procedure doStepTeamHealthSorter(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   382
var i: Longword;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   383
    b: boolean;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   384
    t: LongInt;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   385
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   386
Steps:= Steps; // avoid compiler hint
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   387
for t:= 0 to Pred(TeamsCount) do
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   388
    with thexchar[t] do
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   389
        begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   390
        dy:= TeamsArray[t]^.DrawHealthY;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   391
        dw:= TeamsArray[t]^.TeamHealthBarWidth - TeamsArray[t]^.NewTeamHealthBarWidth;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   392
        team:= TeamsArray[t];
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   393
        SortFactor:= TeamsArray[t]^.Clan^.ClanHealth;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   394
        SortFactor:= (SortFactor shl  3) + TeamsArray[t]^.Clan^.ClanIndex;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   395
        SortFactor:= (SortFactor shl 30) + TeamsArray[t]^.TeamHealth;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   396
        end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   397
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   398
if TeamsCount > 1 then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   399
    repeat
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   400
    b:= true;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   401
    for t:= 0 to TeamsCount - 2 do
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   402
        if (thexchar[t].SortFactor > thexchar[Succ(t)].SortFactor) then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   403
            begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   404
            thexchar[cMaxTeams]:= thexchar[t];
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   405
            thexchar[t]:= thexchar[Succ(t)];
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   406
            thexchar[Succ(t)]:= thexchar[cMaxTeams];
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   407
            b:= false
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   408
            end
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   409
    until b;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   410
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   411
t:= - 4;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   412
for i:= 0 to Pred(TeamsCount) do
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   413
    with thexchar[i] do
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   414
        begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   415
        dec(t, team^.HealthTex^.h + 2);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   416
        ny:= t;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   417
        dy:= dy - ny
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   418
        end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   419
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   420
Gear^.Timer:= cSorterWorkTime;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   421
Gear^.doStep:= @doStepTeamHealthSorterWork;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   422
currsorter:= Gear;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   423
//doStepTeamHealthSorterWork(Gear, Steps)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   424
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   425
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   426
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   427
procedure doStepSpeechBubbleWork(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   428
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   429
if Gear^.Timer > Steps then dec(Gear^.Timer, Steps) else Gear^.Timer:= 0;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   430
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   431
if (PHedgehog(Gear^.Hedgehog)^.Gear <> nil) then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   432
    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
   433
    Gear^.X:= PHedgehog(Gear^.Hedgehog)^.Gear^.X.QWordValue/4294967296 + (Gear^.Tex^.w div 2  - Gear^.FrameTicks);
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
   434
    Gear^.Y:= PHedgehog(Gear^.Hedgehog)^.Gear^.Y.QWordValue/4294967296 - (16 + Gear^.Tex^.h);
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   435
    end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   436
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   437
if Gear^.Timer = 0 then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   438
    begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   439
    if PHedgehog(Gear^.Hedgehog)^.SpeechGear = Gear then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   440
        PHedgehog(Gear^.Hedgehog)^.SpeechGear:= nil;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   441
    DeleteVisualGear(Gear)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   442
    end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   443
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   444
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   445
procedure doStepSpeechBubble(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   446
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   447
Steps:= Steps; // avoid compiler hint
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   448
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   449
with PHedgehog(Gear^.Hedgehog)^ do
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   450
    if SpeechGear <> nil then SpeechGear^.Timer:= 0;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   451
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   452
PHedgehog(Gear^.Hedgehog)^.SpeechGear:= Gear;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   453
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   454
Gear^.Timer:= max(Length(Gear^.Text) * 150, 3000);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   455
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   456
Gear^.Tex:= RenderSpeechBubbleTex(Gear^.Text, Gear^.FrameTicks, fnt16);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   457
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   458
case Gear^.FrameTicks of
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   459
    1: Gear^.FrameTicks:= SpritesData[sprSpeechTail].Width-28;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   460
    2: Gear^.FrameTicks:= SpritesData[sprThoughtTail].Width-20;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   461
    3: Gear^.FrameTicks:= SpritesData[sprShoutTail].Width-10;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   462
    end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   463
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   464
Gear^.doStep:= @doStepSpeechBubbleWork;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   465
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
   466
Gear^.Y:= Gear^.Y - float(Gear^.Tex^.h)
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   467
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   468
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   469
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   470
procedure doStepHealthTagWork(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   471
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   472
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
   473
    DeleteVisualGear(Gear)
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   474
else
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   475
    begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   476
    dec(Gear^.Timer, Steps);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   477
    Gear^.Y:= Gear^.Y + Gear^.dY * Steps;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   478
    end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   479
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   480
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   481
procedure doStepHealthTagWorkUnderWater(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   482
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
   483
if round(Gear^.Y) < cWaterLine + 10 then
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   484
    DeleteVisualGear(Gear)
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   485
else
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
   486
    Gear^.Y:= Gear^.Y - 0.08 * Steps;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   487
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
procedure doStepHealthTag(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   491
var s: shortstring;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   492
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   493
s:= '';
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   494
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
   495
Gear^.dY:= -0.08;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   496
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   497
str(Gear^.State, s);
3459
c552aa44108d hey sheepluva, how about just this? lets you have an anonymous one too.
nemo
parents: 3443
diff changeset
   498
if Gear^.Hedgehog <> nil then
c552aa44108d hey sheepluva, how about just this? lets you have an anonymous one too.
nemo
parents: 3443
diff changeset
   499
    Gear^.Tex:= RenderStringTex(s, PHedgehog(Gear^.Hedgehog)^.Team^.Clan^.Color, fnt16)
c552aa44108d hey sheepluva, how about just this? lets you have an anonymous one too.
nemo
parents: 3443
diff changeset
   500
else
c552aa44108d hey sheepluva, how about just this? lets you have an anonymous one too.
nemo
parents: 3443
diff changeset
   501
    Gear^.Tex:= RenderStringTex(s, cWhiteColor, fnt16);
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   502
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
   503
if round(Gear^.Y) < cWaterLine then
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   504
    Gear^.doStep:= @doStepHealthTagWork
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   505
else
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   506
    Gear^.doStep:= @doStepHealthTagWorkUnderWater;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   507
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
   508
Gear^.Y:= Gear^.Y - float(Gear^.Tex^.h);
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   509
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   510
if Steps > 1 then Gear^.doStep(Gear, Steps-1);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   511
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   512
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   513
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   514
procedure doStepSmokeTrace(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   515
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   516
inc(Gear^.Timer, Steps );
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   517
if Gear^.Timer > 64 then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   518
    begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   519
    dec(Gear^.State, Gear^.Timer div 65);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   520
    Gear^.Timer:= Gear^.Timer mod 65;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   521
    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
   522
Gear^.dX:= Gear^.dX + cWindSpeedf * Steps;
3587
eca835df4106 Optimise vgtSmokeTrace/vgtEvilTrace handler
nemo
parents: 3466
diff changeset
   523
Gear^.X:= Gear^.X + Gear^.dX;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   524
if Gear^.State = 0 then DeleteVisualGear(Gear);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   525
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   526
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   527
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   528
procedure doStepExplosionWork(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   529
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   530
inc(Gear^.Timer, Steps);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   531
if Gear^.Timer > 75 then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   532
    begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   533
    inc(Gear^.State, Gear^.Timer div 76);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   534
    Gear^.Timer:= Gear^.Timer mod 76;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   535
    if Gear^.State > 5 then DeleteVisualGear(Gear);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   536
    end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   537
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   538
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   539
procedure doStepExplosion(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   540
var i: LongWord;
3590
66e1bc1ea3a9 explosions: cache rounded X,Y values
sheepluva
parents: 3587
diff changeset
   541
gX,gY: LongInt;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   542
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
   543
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
   544
gY:= round(Gear^.Y);
3590
66e1bc1ea3a9 explosions: cache rounded X,Y values
sheepluva
parents: 3587
diff changeset
   545
for i:= 0 to 31 do AddVisualGear(gX, gY, vgtFire);
66e1bc1ea3a9 explosions: cache rounded X,Y values
sheepluva
parents: 3587
diff changeset
   546
for i:= 0 to  8 do AddVisualGear(gX, gY, vgtExplPart);
66e1bc1ea3a9 explosions: cache rounded X,Y values
sheepluva
parents: 3587
diff changeset
   547
for i:= 0 to  8 do AddVisualGear(gX, gY, vgtExplPart2);
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   548
Gear^.doStep:= @doStepExplosionWork;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   549
if Steps > 1 then Gear^.doStep(Gear, Steps-1);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   550
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   551
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   552
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   553
////////////////////////////////////////////////////////////////////////////////
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   554
procedure doStepBigExplosionWork(Gear: PVisualGear; Steps: Longword);
3587
eca835df4106 Optimise vgtSmokeTrace/vgtEvilTrace handler
nemo
parents: 3466
diff changeset
   555
//var maxMovement: LongInt;
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   556
begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   557
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   558
inc(Gear^.Timer, Steps);
3466
78d9fa9a700e Comment out the desyncing block, with a suggestion for possible fix
nemo
parents: 3459
diff changeset
   559
(*
78d9fa9a700e Comment out the desyncing block, with a suggestion for possible fix
nemo
parents: 3459
diff changeset
   560
FIXME - This block desyncs due to the way WorldDx is important for various things network related.
78d9fa9a700e Comment out the desyncing block, with a suggestion for possible fix
nemo
parents: 3459
diff changeset
   561
One possible solution is, instead of using WorldDx, to use straight gl/SDL calls to jitter the screen a bit.
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   562
if (Gear^.Timer and 5) = 0 then
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   563
    begin
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   564
    maxMovement := max(1, 13 - ((Gear^.Timer * 15) div 250));
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   565
    ShakeCamera(maxMovement);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   566
    end;
3466
78d9fa9a700e Comment out the desyncing block, with a suggestion for possible fix
nemo
parents: 3459
diff changeset
   567
*)
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   568
if Gear^.Timer > 250 then DeleteVisualGear(Gear);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   569
end;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   570
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   571
procedure doStepBigExplosion(Gear: PVisualGear; Steps: Longword);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   572
var i: LongWord;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   573
gX,gY: LongInt;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   574
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
   575
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
   576
gY:= round(Gear^.Y);
3441
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   577
AddVisualGear(gX, gY, vgtSmokeRing);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   578
for i:= 0 to 46 do AddVisualGear(gX, gY, vgtFire);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   579
for i:= 0 to 15 do AddVisualGear(gX, gY, vgtExplPart);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   580
for i:= 0 to 15 do AddVisualGear(gX, gY, vgtExplPart2);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   581
Gear^.doStep:= @doStepBigExplosionWork;
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   582
if Steps > 1 then Gear^.doStep(Gear, Steps-1);
f31225f99a06 some file that tried to escape...
sheepluva
parents:
diff changeset
   583
end;
3689
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   584
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   585
procedure doStepChunk(Gear: PVisualGear; Steps: Longword);
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   586
begin
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   587
Gear^.X:= Gear^.X + Gear^.dX * Steps;
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   588
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   589
Gear^.Y:= Gear^.Y + Gear^.dY * Steps;
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   590
Gear^.dY:= Gear^.dY + cGravityf * Steps;
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   591
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   592
Gear^.Angle:= round(Gear^.Angle + Steps) mod cMaxAngle;
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   593
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   594
if round(Gear^.Y) > cWaterLine then
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   595
    begin
3699
e5e2cbc90891 Let's try this instead.
nemo
parents: 3689
diff changeset
   596
    AddVisualGear(round(Gear^.X), round(Gear^.Y), vgtDroplet);
3689
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   597
    DeleteVisualGear(Gear);
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   598
    end
e2be39ee19f0 Engine:
smaxx
parents: 3641
diff changeset
   599
end;