close Warning: Can't synchronize with repository "(default)" (No changeset 184 in the repository). Look in the Trac log for more information.

source: trunk/UGameSocket.pas

Last change on this file was 179, checked in by chronos, 6 years ago
  • Added: A preparation for gameplay over network.
File size: 2.3 KB
Line 
1unit UGameSocket;
2
3{$mode delphi}
4
5interface
6
7uses
8 Classes, SysUtils, UTCP;
9
10type
11
12 { TGameSocket }
13
14 TGameSocket = class
15 procedure Send(Index: Integer; DataOut, DataIn: Pointer); virtual;
16 end;
17
18 { TGameSocketNetworkServer }
19
20 TGameSocketNetworkServer = class(TGameSocket)
21 private
22 procedure ClientConnect(Sender: TObject);
23 public
24 TCPServer: TTCPServer;
25 constructor Create;
26 destructor Destroy; override;
27 procedure Send(Index: Integer; DataOut, DataIn: Pointer); override;
28 end;
29
30 { TGameSocketNetworkClient }
31
32 TGameSocketNetworkClient = class(TGameSocket)
33 TCPClient: TTCPClient;
34 procedure Send(Index: Integer; DataOut, DataIn: Pointer); override;
35 constructor Create;
36 destructor Destroy; override;
37 end;
38
39 { TGameSocketDirect }
40
41 TGameSocketDirect = class(TGameSocket)
42 Remote: TGameSocketDirect;
43 procedure Send(Index: Integer; DataOut, DataIn: Pointer); override;
44 end;
45
46implementation
47
48{ TGameSocketNetworkClient }
49
50procedure TGameSocketNetworkClient.Send(Index: Integer; DataOut, DataIn: Pointer
51 );
52begin
53 TCPClient.Socket.Write(DataOut^, MemSize(DataOut));
54end;
55
56constructor TGameSocketNetworkClient.Create;
57begin
58 TCPClient := TTCPClient.Create;
59end;
60
61destructor TGameSocketNetworkClient.Destroy;
62begin
63 TCPClient.Free;
64 inherited Destroy;
65end;
66
67{ TGameSocketDirect }
68
69procedure TGameSocketDirect.Send(Index: Integer; DataOut, DataIn: Pointer);
70begin
71 inherited Send(Index, DataOut, DataIn);
72end;
73
74{ TGameSocket }
75
76procedure TGameSocket.Send(Index: Integer; DataOut, DataIn: Pointer);
77begin
78end;
79
80{ TGameSocketNetworkServer }
81
82procedure TGameSocketNetworkServer.ClientConnect(Sender: TObject);
83var
84 Text: string;
85begin
86 //Text := 'Welcome' + LineEnding;
87 //TTCPClientThread(Sender).Socket.Write(Text[1], Length(Text));
88end;
89
90constructor TGameSocketNetworkServer.Create;
91begin
92 TCPServer := TTCPServer.Create;
93 TCPServer.OnClientConnect := ClientConnect;
94end;
95
96destructor TGameSocketNetworkServer.Destroy;
97begin
98 TCPServer.Free;
99 inherited Destroy;
100end;
101
102procedure TGameSocketNetworkServer.Send(Index: Integer; DataOut, DataIn: Pointer
103 );
104var
105 I: Integer;
106begin
107 for I := 0 to TCPServer.ThreadPool.Items.Count - 1 do
108 //(TCPServer.ThreadPool.Items[I]).Send(Index, DataOut, DataIn);
109end;
110
111end.
112
Note: See TracBrowser for help on using the repository browser.