hedgewars/uFLNet.pas
author unc0rr
Wed, 13 May 2015 23:21:40 +0300
branchqmlfrontend
changeset 10929 8ebf01f75d9f
parent 10900 6a805e822074
child 10931 384765cd0caf
permissions -rw-r--r--
Mockup of protocol parser
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10896
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
     1
unit uFLNet;
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
     2
interface
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
     3
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
     4
procedure connectOfficialServer;
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
     5
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
     6
procedure initModule;
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
     7
procedure freeModule;
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
     8
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
     9
implementation
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
    10
uses SDLh;
10929
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    11
type TCmdType = (cmd_ASKPASSWORD, cmd_BANLIST, cmd_BYE, cmd_CHAT, cmd_CLIENT_FLAGS, cmd_CONNECTED, cmd_EM, cmd_HH_NUM, cmd_INFO, cmd_JOINED, cmd_JOINING, cmd_KICKED, cmd_LEFT, cmd_LOBBY_JOINED, cmd_LOBBY_LEFT, cmd_NICK, cmd_NOTICE, cmd_PING, cmd_PROTO, cmd_ROOMS, cmd_ROUND_FINISHED, cmd_RUN_GAME, cmd_SERVER_AUTH, cmd_SERVER_MESSAGE, cmd_SERVER_VARS, cmd_TEAM_ACCEPTED, cmd_TEAM_COLOR, cmd_WARNING, cmd___UNKNOWN__);
10896
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
    12
10929
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    13
type
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    14
    TNetState = (netDisconnected, netLoggedIn);
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    15
    TParserState = record
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    16
                       cmd: TCmdType;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    17
                       l: LongInt;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    18
                       netState: TNetState;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    19
                   end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    20
    PHandler = procedure;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    21
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    22
var state: TParserState;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    23
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    24
// generated stuff here
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    25
const letters: array[0..235] of char = ('A', 'S', 'K', 'P', 'A', 'S', 'S', 'W', 'O', 'R', 'D', #10, #0, 'B', 'A', 'N', 'L', 'I', 'S', 'T', #10, #0, 'Y', 'E', #10, #0, 'C', 'H', 'A', 'T', #10, #0, 'L', 'I', 'E', 'N', 'T', '_', 'F', 'L', 'A', 'G', 'S', #10, #0, 'O', 'N', 'N', 'E', 'C', 'T', 'E', 'D', #10, #0, 'E', 'M', #10, #0, 'H', 'H', '_', 'N', 'U', 'M', #10, #0, 'I', 'N', 'F', 'O', #10, #0, 'J', 'O', 'I', 'N', 'E', 'D', #10, #0, 'I', 'N', 'G', #10, #0, 'K', 'I', 'C', 'K', 'E', 'D', #10, #0, 'L', 'E', 'F', 'T', #10, #0, 'O', 'B', 'B', 'Y', ':', 'J', 'O', 'I', 'N', 'E', 'D', #10, #0, 'L', 'E', 'F', 'T', #10, #0, 'N', 'I', 'C', 'K', #10, #0, 'O', 'T', 'I', 'C', 'E', #10, #0, 'P', 'I', 'N', 'G', #10, #0, 'R', 'O', 'T', 'O', #10, #0, 'R', 'O', 'O', 'M', 'S', #10, #0, 'U', 'N', 'D', '_', 'F', 'I', 'N', 'I', 'S', 'H', 'E', 'D', #10, #0, 'U', 'N', '_', 'G', 'A', 'M', 'E', #10, #0, 'S', 'E', 'R', 'V', 'E', 'R', '_', 'A', 'U', 'T', 'H', #10, #0, 'M', 'E', 'S', 'S', 'A', 'G', 'E', #10, #0, 'V', 'A', 'R', 'S', #10, #0, 'T', 'E', 'A', 'M', '_', 'A', 'C', 'C', 'E', 'P', 'T', 'E', 'D', #10, #0, 'C', 'O', 'L', 'O', 'R', #10, #0, 'W', 'A', 'R', 'N', 'I', 'N', 'G', #10, #0, '$', #10, #0);
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    26
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    27
const commands: array[0..235] of integer = (13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -38, 13, 8, 0, 0, 0, 0, 0, 0, -37, 0, 0, 0, -36, 29, 5, 0, 0, 0, -35, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34, 0, 0, 0, 0, 0, 0, 0, 0, 0, -33, 4, 0, 0, -32, 8, 0, 0, 0, 0, 0, 0, -31, 6, 0, 0, 0, 0, -30, 13, 0, 0, 0, 4, 0, 0, -29, 0, 0, 0, 0, -28, 8, 0, 0, 0, 0, 0, 0, -27, 25, 5, 0, 0, 0, -26, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, -24, 13, 5, 0, 0, 0, -23, 0, 0, 0, 0, 0, 0, -22, 12, 5, 0, 0, 0, -21, 0, 0, 0, 0, 0, -20, 30, 20, 5, 0, 0, 0, -19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -18, 0, 0, 0, 0, 0, 0, 0, 0, -17, 28, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, -16, 9, 0, 0, 0, 0, 0, 0, 0, -15, 0, 0, 0, 0, 0, -14, 22, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, -13, 0, 0, 0, 0, 0, 0, -12, 9, 0, 0, 0, 0, 0, 0, 0, -11, 0, 0, -10);
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    28
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    29
procedure handler_ASKPASSWORD;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    30
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    31
    state.cmd:= cmd_ASKPASSWORD;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    32
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    33
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    34
procedure handler_BANLIST;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    35
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    36
    state.cmd:= cmd_BANLIST;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    37
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    38
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    39
procedure handler_BYE;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    40
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    41
    state.cmd:= cmd_BYE;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    42
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    43
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    44
procedure handler_CHAT;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    45
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    46
    state.cmd:= cmd_CHAT;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    47
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    48
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    49
procedure handler_CLIENT_FLAGS;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    50
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    51
    state.cmd:= cmd_CLIENT_FLAGS;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    52
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    53
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    54
procedure handler_CONNECTED;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    55
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    56
    state.cmd:= cmd_CONNECTED;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    57
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    58
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    59
procedure handler_EM;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    60
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    61
    state.cmd:= cmd_EM;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    62
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    63
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    64
procedure handler_HH_NUM;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    65
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    66
    state.cmd:= cmd_HH_NUM;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    67
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    68
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    69
procedure handler_INFO;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    70
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    71
    state.cmd:= cmd_INFO;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    72
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    73
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    74
procedure handler_JOINED;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    75
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    76
    state.cmd:= cmd_JOINED;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    77
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    78
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    79
procedure handler_JOINING;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    80
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    81
    state.cmd:= cmd_JOINING;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    82
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    83
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    84
procedure handler_KICKED;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    85
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    86
    state.cmd:= cmd_KICKED;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    87
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    88
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    89
procedure handler_LEFT;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    90
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    91
    state.cmd:= cmd_LEFT;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    92
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    93
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    94
procedure handler_LOBBY_JOINED;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    95
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    96
    state.cmd:= cmd_LOBBY_JOINED;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    97
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    98
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
    99
procedure handler_LOBBY_LEFT;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   100
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   101
    state.cmd:= cmd_LOBBY_LEFT;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   102
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   103
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   104
procedure handler_NICK;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   105
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   106
    state.cmd:= cmd_NICK;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   107
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   108
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   109
procedure handler_NOTICE;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   110
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   111
    state.cmd:= cmd_NOTICE;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   112
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   113
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   114
procedure handler_PING;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   115
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   116
    state.cmd:= cmd_PING;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   117
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   118
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   119
procedure handler_PROTO;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   120
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   121
    state.cmd:= cmd_PROTO;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   122
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   123
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   124
procedure handler_ROOMS;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   125
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   126
    state.cmd:= cmd_ROOMS;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   127
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   128
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   129
procedure handler_ROUND_FINISHED;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   130
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   131
    state.cmd:= cmd_ROUND_FINISHED;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   132
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   133
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   134
procedure handler_RUN_GAME;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   135
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   136
    state.cmd:= cmd_RUN_GAME;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   137
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   138
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   139
procedure handler_SERVER_AUTH;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   140
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   141
    state.cmd:= cmd_SERVER_AUTH;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   142
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   143
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   144
procedure handler_SERVER_MESSAGE;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   145
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   146
    state.cmd:= cmd_SERVER_MESSAGE;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   147
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   148
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   149
procedure handler_SERVER_VARS;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   150
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   151
    state.cmd:= cmd_SERVER_VARS;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   152
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   153
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   154
procedure handler_TEAM_ACCEPTED;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   155
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   156
    state.cmd:= cmd_TEAM_ACCEPTED;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   157
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   158
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   159
procedure handler_TEAM_COLOR;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   160
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   161
    state.cmd:= cmd_TEAM_COLOR;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   162
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   163
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   164
procedure handler_WARNING;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   165
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   166
    state.cmd:= cmd_WARNING;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   167
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   168
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   169
procedure handler___UNKNOWN__;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   170
begin
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   171
    state.cmd:= cmd___UNKNOWN__;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   172
end;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   173
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   174
const handlers: array[0..28] of PHandler = (@handler___UNKNOWN__, @handler_WARNING, @handler_TEAM_COLOR, @handler_TEAM_ACCEPTED, @handler_SERVER_VARS, @handler_SERVER_MESSAGE, @handler_SERVER_AUTH, @handler_RUN_GAME, @handler_ROUND_FINISHED, @handler_ROOMS, @handler_PROTO, @handler_PING, @handler_NOTICE, @handler_NICK, @handler_LOBBY_LEFT, @handler_LOBBY_JOINED, @handler_LEFT, @handler_KICKED, @handler_JOINING, @handler_JOINED, @handler_INFO, @handler_HH_NUM, @handler_EM, @handler_CONNECTED, @handler_CLIENT_FLAGS, @handler_CHAT, @handler_BYE, @handler_BANLIST, @handler_ASKPASSWORD);
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   175
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   176
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   177
// end of generated stuff
10896
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
   178
var sock: PTCPSocket;
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
   179
    fds: PSDLNet_SocketSet;
10900
6a805e822074 Some hedgewars coding a week keeps doctor away
unc0rr
parents: 10898
diff changeset
   180
    netReaderThread: PSDL_Thread;
6a805e822074 Some hedgewars coding a week keeps doctor away
unc0rr
parents: 10898
diff changeset
   181
    sockbuf: shortstring;
6a805e822074 Some hedgewars coding a week keeps doctor away
unc0rr
parents: 10898
diff changeset
   182
    sockbufpos: byte;
6a805e822074 Some hedgewars coding a week keeps doctor away
unc0rr
parents: 10898
diff changeset
   183
6a805e822074 Some hedgewars coding a week keeps doctor away
unc0rr
parents: 10898
diff changeset
   184
function getNextChar: char;
6a805e822074 Some hedgewars coding a week keeps doctor away
unc0rr
parents: 10898
diff changeset
   185
var r: byte;
6a805e822074 Some hedgewars coding a week keeps doctor away
unc0rr
parents: 10898
diff changeset
   186
begin
6a805e822074 Some hedgewars coding a week keeps doctor away
unc0rr
parents: 10898
diff changeset
   187
    if sockbufpos < byte(sockbuf[0]) then
6a805e822074 Some hedgewars coding a week keeps doctor away
unc0rr
parents: 10898
diff changeset
   188
    begin
6a805e822074 Some hedgewars coding a week keeps doctor away
unc0rr
parents: 10898
diff changeset
   189
        inc(sockbufpos);
6a805e822074 Some hedgewars coding a week keeps doctor away
unc0rr
parents: 10898
diff changeset
   190
        getNextChar:= sockbuf[sockbufpos];
6a805e822074 Some hedgewars coding a week keeps doctor away
unc0rr
parents: 10898
diff changeset
   191
    end else
6a805e822074 Some hedgewars coding a week keeps doctor away
unc0rr
parents: 10898
diff changeset
   192
    begin
6a805e822074 Some hedgewars coding a week keeps doctor away
unc0rr
parents: 10898
diff changeset
   193
        r:= SDLNet_TCP_Recv(sock, @sockbuf[1], 255);
6a805e822074 Some hedgewars coding a week keeps doctor away
unc0rr
parents: 10898
diff changeset
   194
        if r > 0 then
6a805e822074 Some hedgewars coding a week keeps doctor away
unc0rr
parents: 10898
diff changeset
   195
        begin
6a805e822074 Some hedgewars coding a week keeps doctor away
unc0rr
parents: 10898
diff changeset
   196
            sockbufpos:= 1;
10929
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   197
            sockbuf[0]:= char(r);
10900
6a805e822074 Some hedgewars coding a week keeps doctor away
unc0rr
parents: 10898
diff changeset
   198
            getNextChar:= sockbuf[1];
6a805e822074 Some hedgewars coding a week keeps doctor away
unc0rr
parents: 10898
diff changeset
   199
        end else
6a805e822074 Some hedgewars coding a week keeps doctor away
unc0rr
parents: 10898
diff changeset
   200
        begin
6a805e822074 Some hedgewars coding a week keeps doctor away
unc0rr
parents: 10898
diff changeset
   201
            sockbufpos:= 0;
6a805e822074 Some hedgewars coding a week keeps doctor away
unc0rr
parents: 10898
diff changeset
   202
            sockbuf[0]:= #0;
6a805e822074 Some hedgewars coding a week keeps doctor away
unc0rr
parents: 10898
diff changeset
   203
            getNextChar:= #0
10929
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   204
        end
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   205
    end
10900
6a805e822074 Some hedgewars coding a week keeps doctor away
unc0rr
parents: 10898
diff changeset
   206
end;
10898
f373838129c2 Some futher work on flib net client part
unc0rr
parents: 10896
diff changeset
   207
f373838129c2 Some futher work on flib net client part
unc0rr
parents: 10896
diff changeset
   208
function netReader(data: pointer): LongInt; cdecl; export;
10929
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   209
var c: char;
10898
f373838129c2 Some futher work on flib net client part
unc0rr
parents: 10896
diff changeset
   210
begin
10929
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   211
repeat
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   212
    c:= getNextChar;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   213
    if c = #0 then
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   214
        state.netState:= netDisconnected;
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   215
    if c = letters[state.l] then
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   216
        if commands[state.l] < 0 then
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   217
            handlers[-10 - commands[state.l]]()
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   218
        else
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   219
            inc(state.l)
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   220
    else
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   221
        if commands[state.l] = 0 then
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   222
            // unknown cmd
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   223
        else
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   224
            repeat
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   225
                inc(state.l, commands[state.l])
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   226
            until (letters[state.l] = c) or (commands[state.l] = 0)
8ebf01f75d9f Mockup of protocol parser
unc0rr
parents: 10900
diff changeset
   227
until state.netState = netDisconnected
10898
f373838129c2 Some futher work on flib net client part
unc0rr
parents: 10896
diff changeset
   228
end;
10896
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
   229
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
   230
procedure connectOfficialServer;
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
   231
var ipaddr: TIPAddress;
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
   232
begin
10898
f373838129c2 Some futher work on flib net client part
unc0rr
parents: 10896
diff changeset
   233
    if sock <> nil then
10896
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
   234
        exit;
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
   235
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
   236
    if SDLNet_ResolveHost(ipaddr, PChar('netserver.hedgewars.org'), 46631) = 0 then
10898
f373838129c2 Some futher work on flib net client part
unc0rr
parents: 10896
diff changeset
   237
        sock:= SDLNet_TCP_Open(ipaddr);
f373838129c2 Some futher work on flib net client part
unc0rr
parents: 10896
diff changeset
   238
10900
6a805e822074 Some hedgewars coding a week keeps doctor away
unc0rr
parents: 10898
diff changeset
   239
    sockbufpos:= 0;
6a805e822074 Some hedgewars coding a week keeps doctor away
unc0rr
parents: 10898
diff changeset
   240
    sockbuf:= '';
6a805e822074 Some hedgewars coding a week keeps doctor away
unc0rr
parents: 10898
diff changeset
   241
    netReaderThread:= SDL_CreateThread(@netReader{$IFDEF SDL2}, 'netReader'{$ENDIF}, nil);
10896
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
   242
end;
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
   243
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
   244
procedure initModule;
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
   245
begin
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
   246
    sock:= nil;
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
   247
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
   248
    SDLNet_Init;
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
   249
    fds:= SDLNet_AllocSocketSet(1);
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
   250
end;
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
   251
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
   252
procedure freeModule;
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
   253
begin
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
   254
end;
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
   255
5a74923120d5 Start network support: only setting up a connection for now
unc0rr
parents:
diff changeset
   256
end.