hedgewars/uAIActions.pas
author Stepan777 <stepik-777@mail.ru>
Fri, 08 Jun 2012 02:52:35 +0400
changeset 7198 5debd5fe526e
parent 7132 baf3351646f4
child 7197 5a9775b97c7e
permissions -rw-r--r--
1. Add IFDEFs for video recording 2. Options for video recording were hardcoded in engine, now they are hardcoded in frontend and passed to engine thru command line (later it will be possible to change them in frontend)
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
71
5f56c6979496 - Changed falling damage scoring
unc0rr
parents: 70
diff changeset
     1
(*
1066
1f1b3686a2b0 Update copyright headers a bit
unc0rr
parents: 883
diff changeset
     2
 * Hedgewars, a free turn based strategy game
6700
e04da46ee43c the most important commit of the year
koda
parents: 6580
diff changeset
     3
 * Copyright (c) 2004-2012 Andrey Korotaev <unC0Rr@gmail.com>
71
5f56c6979496 - Changed falling damage scoring
unc0rr
parents: 70
diff changeset
     4
 *
183
57c2ef19f719 Relicense to GPL
unc0rr
parents: 165
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
57c2ef19f719 Relicense to GPL
unc0rr
parents: 165
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
57c2ef19f719 Relicense to GPL
unc0rr
parents: 165
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
71
5f56c6979496 - Changed falling damage scoring
unc0rr
parents: 70
diff changeset
     8
 *
183
57c2ef19f719 Relicense to GPL
unc0rr
parents: 165
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
57c2ef19f719 Relicense to GPL
unc0rr
parents: 165
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
57c2ef19f719 Relicense to GPL
unc0rr
parents: 165
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
57c2ef19f719 Relicense to GPL
unc0rr
parents: 165
diff changeset
    12
 * GNU General Public License for more details.
71
5f56c6979496 - Changed falling damage scoring
unc0rr
parents: 70
diff changeset
    13
 *
183
57c2ef19f719 Relicense to GPL
unc0rr
parents: 165
diff changeset
    14
 * You should have received a copy of the GNU General Public License
57c2ef19f719 Relicense to GPL
unc0rr
parents: 165
diff changeset
    15
 * along with this program; if not, write to the Free Software
57c2ef19f719 Relicense to GPL
unc0rr
parents: 165
diff changeset
    16
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
71
5f56c6979496 - Changed falling damage scoring
unc0rr
parents: 70
diff changeset
    17
 *)
5f56c6979496 - Changed falling damage scoring
unc0rr
parents: 70
diff changeset
    18
2630
079ef82eac75 revamped file access and debug display
koda
parents: 2599
diff changeset
    19
{$INCLUDE "options.inc"}
079ef82eac75 revamped file access and debug display
koda
parents: 2599
diff changeset
    20
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    21
unit uAIActions;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    22
interface
4357
a1fcfc341a52 Introduce unit uTypes in order to remove some cyclic unit dependencies
unC0Rr
parents: 3407
diff changeset
    23
uses uFloat, uTypes;
2630
079ef82eac75 revamped file access and debug display
koda
parents: 2599
diff changeset
    24
3165
3ec07a7d8456 just some very sane stuff for the iphone port (plus some macro on pascal files)
koda
parents: 2630
diff changeset
    25
const MAXACTIONS     = 96;
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    26
    aia_none       = 0;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    27
    aia_Left       = 1;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    28
    aia_Right      = 2;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    29
    aia_Timer      = 3;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    30
    aia_attack     = 4;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    31
    aia_Up         = 5;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    32
    aia_Down       = 6;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    33
    aia_Switch     = 7;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    34
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    35
    aia_Weapon     = $8000;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    36
    aia_WaitXL     = $8001;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    37
    aia_WaitXR     = $8002;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    38
    aia_LookLeft   = $8003;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    39
    aia_LookRight  = $8004;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    40
    aia_AwareExpl  = $8005;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    41
    aia_HJump      = $8006;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    42
    aia_LJump      = $8007;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    43
    aia_Skip       = $8008;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    44
    aia_Wait       = $8009;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    45
    aia_Put        = $800A;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    46
    
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    47
    aim_push       = $8000;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    48
    aim_release    = $8001;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    49
    ai_specmask    = $8000;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    50
64
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
    51
type TAction = record
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    52
        Action: Longword;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    53
        X, Y, Param: LongInt;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    54
        Time: Longword;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    55
        end;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    56
        
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    57
    TActions = record
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    58
        Count, Pos: Longword;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    59
        actions: array[0..Pred(MAXACTIONS)] of TAction;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    60
        Score: LongInt;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    61
        isWalkingToABetterPlace: boolean;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
    62
        end;
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    63
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 369
diff changeset
    64
procedure AddAction(var Actions: TActions; Action: Longword; Param: LongInt; TimeDelta: Longword; X, Y: LongInt);
64
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
    65
procedure ProcessAction(var Actions: TActions; Me: PGear);
369
2aed85310727 AI compiles, but doesn't work
unc0rr
parents: 351
diff changeset
    66
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    67
implementation
6535
51a7e71ad317 It seems there's no need to copy gear's msg. Fixes bots getting stuck after hog switch.
unc0rr
parents: 6474
diff changeset
    68
uses uAIMisc, uAI, uAmmos, uVariables, uCommands, uUtils, uDebug, uIO{$IFDEF TRACEAIACTIONS}, uConsole{$ENDIF};
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    69
7028
0f60591f3a16 old typed const moved to their proper unit
koda
parents: 6982
diff changeset
    70
var PrevX: LongInt = 0;
0f60591f3a16 old typed const moved to their proper unit
koda
parents: 6982
diff changeset
    71
    timedelta: Longword = 0;
0f60591f3a16 old typed const moved to their proper unit
koda
parents: 6982
diff changeset
    72
6393
701eb3f3556a Make AI use switcher when:
unc0rr
parents: 5419
diff changeset
    73
const ActionIdToStr: array[0..7] of string[16] = (
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    74
{aia_none}           '',
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    75
{aia_Left}           'left',
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    76
{aia_Right}          'right',
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    77
{aia_Timer}          'timer',
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    78
{aia_attack}         'attack',
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    79
{aia_Up}             'up',
6393
701eb3f3556a Make AI use switcher when:
unc0rr
parents: 5419
diff changeset
    80
{aia_Down}           'down',
701eb3f3556a Make AI use switcher when:
unc0rr
parents: 5419
diff changeset
    81
{aia_Switch}         'switch'
64
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
    82
                     );
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
    83
80
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    84
{$IFDEF TRACEAIACTIONS}
195
edae828322a0 Fixed compilation with freepascal version prior to 1.9.6
unc0rr
parents: 194
diff changeset
    85
const SpecActionIdToStr: array[$8000..$8009] of string[16] = (
80
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    86
{aia_Weapon}             'aia_Weapon',
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    87
{aia_WaitX}              'aia_WaitX',
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    88
{aia_WaitY}              'aia_WaitY',
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    89
{aia_LookLeft}           'aia_LookLeft',
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    90
{aia_LookRight}          'aia_LookRight',
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    91
{aia_AwareExpl}          'aia_AwareExpl',
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    92
{aia_HJump}              'aia_HJump',
144
e6084b0c9316 - Fix 'new team' regression
unc0rr
parents: 143
diff changeset
    93
{aia_LJump}              'aia_LJump',
193
56885ea29202 Fix bots regressions
unc0rr
parents: 183
diff changeset
    94
{aia_Skip}               'aia_Skip',
56885ea29202 Fix bots regressions
unc0rr
parents: 183
diff changeset
    95
{aia_Wait}               'aia_Wait'
80
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    96
);
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    97
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    98
procedure DumpAction(Action: TAction; Me: PGear);
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
    99
begin
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
   100
if (Action.Action and ai_specmask) = 0 then
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   101
    WriteLnToConsole('AI action: '+ActionIdToStr[Action.Action])
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   102
else
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   103
    begin
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   104
    WriteLnToConsole('AI action: '+SpecActionIdToStr[Action.Action]);
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   105
    if (Action.Action = aia_WaitXL) or (Action.Action = aia_WaitXR) then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   106
        WriteLnToConsole('AI action Wait X = '+IntToStr(Action.Param)+', current X = '+IntToStr(hwRound(Me^.X)))
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   107
        
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   108
    else if (Action.Action = aia_AwareExpl) then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   109
        WriteLnToConsole('Aware X = ' + IntToStr(Action.X) + ', Y = ' + IntToStr(Action.Y));
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   110
    end
80
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
   111
end;
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
   112
{$ENDIF}
3c3dc6a148ca - Fixed bug with hedgehog under water using rope
unc0rr
parents: 75
diff changeset
   113
371
731ad6d27bd1 integer -> LongInt
unc0rr
parents: 369
diff changeset
   114
procedure AddAction(var Actions: TActions; Action: Longword; Param: LongInt; TimeDelta: Longword; X, Y: LongInt);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   115
begin
64
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
   116
with Actions do
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   117
    begin
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   118
    actions[Count].Action:= Action;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   119
    actions[Count].Param:= Param;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   120
    actions[Count].X:= X;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   121
    actions[Count].Y:= Y;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   122
    if Count > 0 then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   123
        actions[Count].Time:= TimeDelta
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   124
    else
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   125
        actions[Count].Time:= GameTicks + TimeDelta;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   126
    inc(Count);
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   127
    TryDo(Count < MAXACTIONS, 'AI: actions overflow', true);
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   128
    end
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   129
end;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   130
6474
42e9773eedfd - Improve renderer a bit, disallow nested functions
unc0rr
parents: 6395
diff changeset
   131
procedure CheckHang(Me: PGear);
42e9773eedfd - Improve renderer a bit, disallow nested functions
unc0rr
parents: 6395
diff changeset
   132
begin
42e9773eedfd - Improve renderer a bit, disallow nested functions
unc0rr
parents: 6395
diff changeset
   133
if hwRound(Me^.X) <> PrevX then
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   134
    begin
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   135
    PrevX:= hwRound(Me^.X);
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   136
    timedelta:= 0
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   137
    end else
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   138
        begin
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   139
        inc(timedelta);
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   140
        if timedelta > 1700 then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   141
            begin
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   142
            timedelta:= 0;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   143
            FreeActionsList
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   144
            end
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   145
        end
6474
42e9773eedfd - Improve renderer a bit, disallow nested functions
unc0rr
parents: 6395
diff changeset
   146
end;
42e9773eedfd - Improve renderer a bit, disallow nested functions
unc0rr
parents: 6395
diff changeset
   147
64
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
   148
procedure ProcessAction(var Actions: TActions; Me: PGear);
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   149
var s: shortstring;
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   150
begin
194
88652abdce9a Fixed weird bots behavior
unc0rr
parents: 193
diff changeset
   151
repeat
64
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
   152
if Actions.Pos >= Actions.Count then exit;
9df467527ae5 - Start AI rewrite
unc0rr
parents: 17
diff changeset
   153
with Actions.actions[Actions.Pos] do
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   154
    begin
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   155
    if Time > GameTicks then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   156
        exit;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   157
    {$IFDEF TRACEAIACTIONS}
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   158
    DumpAction(Actions.actions[Actions.Pos], Me);
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   159
    {$ENDIF}
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   160
    if (Action and ai_specmask) <> 0 then
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   161
        case Action of
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   162
            aia_Weapon: 
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   163
            SetWeapon(TAmmoType(Param));
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   164
            
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   165
            aia_WaitXL: 
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   166
            if hwRound(Me^.X) = Param then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   167
                begin
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   168
                Action:= aia_LookLeft;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   169
                Time:= GameTicks;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   170
                exit
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   171
                end
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   172
                else if hwRound(Me^.X) < Param then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   173
                    begin
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   174
                    //OutError('AI: WaitXL assert (' + IntToStr(hwRound(Me^.X)) + ' < ' + IntToStr(Param) + ')', false);
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   175
                    FreeActionsList;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   176
                    exit
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   177
                    end
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   178
                else
7132
baf3351646f4 - Fix some AI stupidness factors
unc0rr
parents: 7028
diff changeset
   179
                    begin 
baf3351646f4 - Fix some AI stupidness factors
unc0rr
parents: 7028
diff changeset
   180
                    CheckHang(Me);
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   181
                    exit
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   182
                    end;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   183
                            
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   184
            aia_WaitXR: 
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   185
            if hwRound(Me^.X) = Param then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   186
                begin
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   187
                Action:= aia_LookRight;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   188
                Time:= GameTicks;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   189
                exit
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   190
                end
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   191
                else if hwRound(Me^.X) > Param then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   192
                    begin
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   193
                    //OutError('AI: WaitXR assert (' + IntToStr(hwRound(Me^.X)) + ' > ' + IntToStr(Param) + ')', false);
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   194
                    FreeActionsList;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   195
                    exit
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   196
                    end
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   197
                else
7132
baf3351646f4 - Fix some AI stupidness factors
unc0rr
parents: 7028
diff changeset
   198
                    begin 
baf3351646f4 - Fix some AI stupidness factors
unc0rr
parents: 7028
diff changeset
   199
                    CheckHang(Me);
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   200
                    exit
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   201
                    end;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   202
            aia_LookLeft:
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   203
            if not Me^.dX.isNegative then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   204
                begin
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   205
                ParseCommand('+left', true);
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   206
                exit
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   207
                end
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   208
            else
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   209
                ParseCommand('-left', true);
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   210
            aia_LookRight:
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   211
            if Me^.dX.isNegative then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   212
                begin
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   213
                ParseCommand('+right', true);
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   214
                exit
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   215
                end
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   216
            else ParseCommand('-right', true);
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   217
            aia_AwareExpl:
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   218
            AwareOfExplosion(X, Y, Param);
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   219
            
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   220
            aia_HJump:
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   221
            ParseCommand('hjump', true);
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   222
            
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   223
            aia_LJump:
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   224
            ParseCommand('ljump', true);
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   225
            
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   226
            aia_Skip:
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   227
            ParseCommand('skip', true);
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   228
            
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   229
            aia_Put:
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   230
            doPut(X, Y, true);
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   231
            end
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   232
        else
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   233
            begin
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   234
            s:= ActionIdToStr[Action];
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   235
            if (Param and ai_specmask) <> 0 then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   236
                case Param of
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   237
                aim_push:
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   238
                s:= '+' + s;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   239
                
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   240
                aim_release:
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   241
                s:= '-' + s;
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   242
            end
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   243
        else if Param <> 0 then
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   244
            s:= s + ' ' + IntToStr(Param);
369
2aed85310727 AI compiles, but doesn't work
unc0rr
parents: 351
diff changeset
   245
        ParseCommand(s, true)
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   246
        end
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   247
    end;
66
9643d75baf1e Many AI improvements, bots do think in separate thread
unc0rr
parents: 64
diff changeset
   248
inc(Actions.Pos);
9643d75baf1e Many AI improvements, bots do think in separate thread
unc0rr
parents: 64
diff changeset
   249
if Actions.Pos <= Actions.Count then
6580
6155187bf599 A partial reformatting of the pascal code to have consistent syntax. Things that are still inconsistent.
lovelacer
parents: 6535
diff changeset
   250
    inc(Actions.actions[Actions.Pos].Time, GameTicks);
194
88652abdce9a Fixed weird bots behavior
unc0rr
parents: 193
diff changeset
   251
until false
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   252
end;
369
2aed85310727 AI compiles, but doesn't work
unc0rr
parents: 351
diff changeset
   253
4
bcbd7adb4e4b - set svn:eol-style to native
unc0rr
parents: 1
diff changeset
   254
end.