добавил Игры, нужно разобраться с передачей команд в игру
This commit is contained in:
@@ -74,4 +74,15 @@ object frOBS: TfrOBS
|
||||
TextSettings.Trimming = None
|
||||
OnClick = btnCreateOBSKandinskyClick
|
||||
end
|
||||
object btnCreateOBSGame: TButton
|
||||
Position.X = 412.000000000000000000
|
||||
Position.Y = 8.000000000000000000
|
||||
Size.Width = 147.000000000000000000
|
||||
Size.Height = 22.000000000000000000
|
||||
Size.PlatformDefault = False
|
||||
TabOrder = 6
|
||||
Text = #1057#1086#1079#1076#1072#1090#1100' '#1080#1075#1088#1091
|
||||
TextSettings.Trimming = None
|
||||
OnClick = btnCreateOBSGameClick
|
||||
end
|
||||
end
|
||||
|
||||
+123
-22
@@ -5,8 +5,8 @@ interface
|
||||
uses
|
||||
System.SysUtils, System.Types, System.UITypes, System.Classes, uCustomEmoties,
|
||||
System.Variants, uWebServerChat, uWebServerEvents, fColorSettings,
|
||||
fFontSettings,
|
||||
System.Generics.Collections, uWebServerKandinsky,
|
||||
fFontSettings, uCreateGame,
|
||||
System.Generics.Collections, uWebServerKandinsky, uWebServerGames,
|
||||
FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls,
|
||||
System.Rtti, FMX.Grid.Style, FMX.Grid, FMX.ScrollBox, FMX.Edit, FMX.Colors,
|
||||
FMX.ListBox, FMX.EditBox, FMX.SpinBox, FMX.Controls.Presentation, uRecords,
|
||||
@@ -37,6 +37,14 @@ type
|
||||
WebServerChat: TTTW_Events;
|
||||
end;
|
||||
|
||||
type
|
||||
TGameWebServers = record
|
||||
port: integer;
|
||||
game: string;
|
||||
WebServerGame: TGameWebServer;
|
||||
commands: tstringlist;
|
||||
end;
|
||||
|
||||
type
|
||||
TKandinskyWebServers = record
|
||||
port: integer;
|
||||
@@ -54,11 +62,13 @@ type
|
||||
StringColumn2: TStringColumn;
|
||||
btnCreateOBSNotify: TButton;
|
||||
btnCreateOBSKandinsky: TButton;
|
||||
btnCreateOBSGame: TButton;
|
||||
procedure btnDeleteeChatClick(Sender: TObject);
|
||||
procedure btnCreateOBSKandinskyClick(Sender: TObject);
|
||||
procedure btnCreateOBSChatClick(Sender: TObject);
|
||||
procedure btnCreateOBSNotifyClick(Sender: TObject);
|
||||
procedure sgWebChatsCellDblClick(const Column: TColumn; const Row: integer);
|
||||
procedure btnCreateOBSGameClick(Sender: TObject);
|
||||
private
|
||||
{ Private declarations }
|
||||
|
||||
@@ -72,6 +82,7 @@ type
|
||||
listChats: TArray<TOBSChat>;
|
||||
listNotify: TArray<TOBSNotify>;
|
||||
listKandinsky: TArray<TOBSKandinsky>;
|
||||
listGames: TArray<TOBSGames>;
|
||||
|
||||
BTTV: TBTTV;
|
||||
m7tv: t7tv;
|
||||
@@ -80,6 +91,8 @@ type
|
||||
ChatWebServers: Tlist<TChatWebServers>;
|
||||
EventWebServers: Tlist<TEventWebServers>;
|
||||
KandinskyWebServers: Tlist<TKandinskyWebServers>;
|
||||
GameWebServers: Tlist<TGameWebServers>;
|
||||
|
||||
procedure MsgToWebServer(const aRecord: TTwitchChatMessage);
|
||||
procedure toEventWebServer(aEvent: TFollowEvent); overload; // follow
|
||||
procedure toEventWebServer(aEvent: TSubEvent); overload; // sub
|
||||
@@ -101,6 +114,10 @@ type
|
||||
procedure AddKandinsky(newRecord: TOBSKandinsky);
|
||||
procedure DelKandinsky(aPort: integer);
|
||||
procedure CreateWebKandinsky(aRecord: TOBSKandinsky);
|
||||
|
||||
procedure addGame(aGame: string; aPort: integer);
|
||||
procedure delGame(aPort: integer);
|
||||
procedure CreateWebGame(aGame: string; aPort: integer);
|
||||
end;
|
||||
|
||||
implementation
|
||||
@@ -304,6 +321,18 @@ begin
|
||||
CreateWebChat(newRecord);
|
||||
end;
|
||||
|
||||
procedure TfrOBS.addGame(aGame: string; aPort: integer);
|
||||
begin
|
||||
SetLength(listGames, Length(listGames) + 1);
|
||||
listGames[High(listGames)].port := aPort;
|
||||
listGames[High(listGames)].game := aGame;
|
||||
|
||||
UpdateGridFromArray;
|
||||
|
||||
db.SaveRecordArray<TOBSGames>('listGames', listGames);
|
||||
CreateWebGame(aGame, aPort);
|
||||
end;
|
||||
|
||||
procedure TfrOBS.AddKandinsky(newRecord: TOBSKandinsky);
|
||||
begin
|
||||
SetLength(listKandinsky, Length(listKandinsky) + 1);
|
||||
@@ -337,6 +366,20 @@ begin
|
||||
fCreateChat.Show;
|
||||
end;
|
||||
|
||||
procedure TfrOBS.btnCreateOBSGameClick(Sender: TObject);
|
||||
var
|
||||
dport, i: integer;
|
||||
begin
|
||||
dport := 8080;
|
||||
for i := 0 to sgWebChats.RowCount - 1 do
|
||||
begin
|
||||
if strtoint(sgWebChats.Cells[0, i]) >= dport then
|
||||
dport := strtoint(sgWebChats.Cells[0, i]) + 1;
|
||||
end;
|
||||
fCreateGame.sbWebServerPort.Value := dport;
|
||||
fCreateGame.Show;
|
||||
end;
|
||||
|
||||
procedure TfrOBS.btnCreateOBSKandinskyClick(Sender: TObject);
|
||||
var
|
||||
dport: integer;
|
||||
@@ -383,6 +426,10 @@ begin
|
||||
begin
|
||||
DelNotify(strtoint(sgWebChats.Cells[0, sgWebChats.Row]));
|
||||
end;
|
||||
if sgWebChats.Cells[1, sgWebChats.Row] = 'Èãðà' then
|
||||
begin
|
||||
delGame(strtoint(sgWebChats.Cells[0, sgWebChats.Row]));
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrOBS.CreateWebChat(chatSettings: TOBSChat);
|
||||
@@ -527,7 +574,7 @@ begin
|
||||
EventWebServer.se.FontTitle.Color := eventsSettings.HeaderColorFont;
|
||||
EventWebServer.se.FontContext.Font := eventsSettings.MessStyleFont;
|
||||
EventWebServer.se.FontContext.Size := eventsSettings.MessSizeFont;
|
||||
EventWebServer.se.FontContext.Color :=eventsSettings.MessColorFont;
|
||||
EventWebServer.se.FontContext.Color := eventsSettings.MessColorFont;
|
||||
EventWebServer.se.BorderColor := eventsSettings.ColorBorder;
|
||||
EventWebServer.se.BorderSize := eventsSettings.SolidBorder;
|
||||
EventWebServer.se.BlockColor := eventsSettings.ColorBlock;
|
||||
@@ -540,6 +587,24 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TfrOBS.CreateWebGame(aGame: string; aPort: integer);
|
||||
var
|
||||
GameWebServer: TGameWebServers;
|
||||
commands: TArray<string>;
|
||||
Cmd: string;
|
||||
begin
|
||||
GameWebServer.port := aPort;
|
||||
GameWebServer.WebServerGame := TGameWebServer.Create
|
||||
(myConst.GeneralPath, aPort);
|
||||
GameWebServers.Add(GameWebServer);
|
||||
GameWebServers[GameWebServers.Count - 1].WebServerGame.Start;
|
||||
GameWebServers[GameWebServers.Count - 1].WebServerGame.SetGame(aGame);
|
||||
commands := GameWebServers[GameWebServers.Count - 1]
|
||||
.WebServerGame.GetControlCommands;
|
||||
for Cmd in commands do
|
||||
GameWebServers[GameWebServers.Count - 1].commands.Add(Cmd);
|
||||
end;
|
||||
|
||||
procedure TfrOBS.CreateWebKandinsky(aRecord: TOBSKandinsky);
|
||||
var
|
||||
KandinskyWebServer: TKandinskyWebServers;
|
||||
@@ -579,6 +644,31 @@ begin
|
||||
UpdateGridFromArray;
|
||||
end;
|
||||
|
||||
procedure TfrOBS.delGame(aPort: integer);
|
||||
var
|
||||
i, j: integer;
|
||||
begin
|
||||
// Èùåì â îáðàòíîì ïîðÿäêå äëÿ áåçîïàñíîãî óäàëåíèÿ
|
||||
for i := High(listGames) downto 0 do
|
||||
begin
|
||||
if listGames[i].port = aPort then
|
||||
begin
|
||||
// Ñäâèãàåì ýëåìåíòû ìàññèâà
|
||||
for j := i to High(listGames) - 1 do
|
||||
listGames[j] := listGames[j + 1];
|
||||
// Óìåíüøàåì ðàçìåð ìàññèâà
|
||||
SetLength(listGames, Length(listGames) - 1);
|
||||
// Âûõîäèì ïîñëå ïåðâîãî íàéäåííîãî ñîâïàäåíèÿ (ïðåäïîëàãàåì óíèêàëüíîñòü ïîðòîâ)
|
||||
Break;
|
||||
end;
|
||||
end;
|
||||
GameWebServers[i].WebServerGame.Stop;
|
||||
GameWebServers[i].WebServerGame.Destroy;
|
||||
GameWebServers.Delete(i);
|
||||
UpdateGridFromArray;
|
||||
db.SaveRecordArray<TOBSGames>('listGames', listGames);
|
||||
end;
|
||||
|
||||
procedure TfrOBS.DelKandinsky(aPort: integer);
|
||||
var
|
||||
i, j: integer;
|
||||
@@ -690,37 +780,38 @@ end;
|
||||
|
||||
procedure TfrOBS.EdtNotify(newRecord: TOBSNotify; oldPort: integer);
|
||||
var
|
||||
i,mi: integer; ws:TEventWebServers;
|
||||
i, mi: integer;
|
||||
ws: TEventWebServers;
|
||||
begin
|
||||
for I := 0 to EventWebServers.Count - 1 do
|
||||
if EventWebServers[i].port = oldPort then
|
||||
begin
|
||||
ws:=EventWebServers[i];
|
||||
mi:=i;
|
||||
end;
|
||||
for i := 0 to EventWebServers.Count - 1 do
|
||||
if EventWebServers[i].port = oldPort then
|
||||
begin
|
||||
ws := EventWebServers[i];
|
||||
mi := i;
|
||||
end;
|
||||
|
||||
for i := 0 to High(listNotify) do
|
||||
if listNotify[i].port = oldPort then
|
||||
begin
|
||||
listNotify[i] := newRecord;
|
||||
ws.port:=listNotify[i].port;
|
||||
ws.typeEvent:=listNotify[i].TypeEvent;
|
||||
ws.se.title:=listNotify[i].HeaderText;
|
||||
ws.se.Context:=listNotify[i].MessText;
|
||||
ws.se.Url:=listNotify[i].Picture;
|
||||
ws.se.SoundURL:=listNotify[i].Sound;
|
||||
ws.se.TimeMsg:=listNotify[i].TimeMess;
|
||||
ws.se.FontTitle.Font:=listNotify[i].HeaderStyleFont;
|
||||
ws.port := listNotify[i].port;
|
||||
ws.typeEvent := listNotify[i].typeEvent;
|
||||
ws.se.Title := listNotify[i].HeaderText;
|
||||
ws.se.Context := listNotify[i].MessText;
|
||||
ws.se.Url := listNotify[i].Picture;
|
||||
ws.se.SoundURL := listNotify[i].Sound;
|
||||
ws.se.TimeMsg := listNotify[i].TimeMess;
|
||||
ws.se.FontTitle.Font := listNotify[i].HeaderStyleFont;
|
||||
ws.se.FontTitle.Font := listNotify[i].HeaderStyleFont;
|
||||
ws.se.FontTitle.Size := listNotify[i].HeaderSizeFont;
|
||||
ws.se.FontTitle.Color := listNotify[i].HeaderColorFont;
|
||||
ws.se.FontContext.Font := listNotify[i].MessStyleFont;
|
||||
ws.se.FontContext.Size := listNotify[i].MessSizeFont;
|
||||
ws.se.FontContext.Color := listNotify[i].MessColorFont;
|
||||
ws.se.BorderColor :=listNotify[i].ColorBorder;
|
||||
ws.se.BorderColor := listNotify[i].ColorBorder;
|
||||
ws.se.BorderSize := listNotify[i].SolidBorder;
|
||||
ws.se.BlockColor := listNotify[i].ColorBlock;
|
||||
EventWebServers[mi]:=ws;
|
||||
EventWebServers[mi] := ws;
|
||||
UpdateGridFromArray;
|
||||
db.SaveRecordArray<TOBSNotify>('listNotify', listNotify);
|
||||
Break;
|
||||
@@ -800,7 +891,7 @@ begin
|
||||
ws := EventWebServers[i];
|
||||
ws.se.Title := StringReplace(ws.se.Title, '[NICK]',
|
||||
aEvent.event.user_name, [rfReplaceAll]);
|
||||
ws.se.Timestamp:=now;
|
||||
ws.se.Timestamp := now;
|
||||
ws.se.RequireInteraction := True;
|
||||
TTW_Bot.toLog('fOBS', 'toEventWebServer.BlockColor', ws.se.BlockColor, 3);
|
||||
EventWebServers[i].WebServerChat.AddMessage(ws.se);
|
||||
@@ -824,7 +915,7 @@ begin
|
||||
EventWebServers[i] := ws;
|
||||
EventWebServers[i].WebServerChat.AddMessage(EventWebServers[i].se);
|
||||
end;
|
||||
TTW_Bot.frEvents1.OnTTVEvent(aEvent.event.user_name);
|
||||
TTW_Bot.frEvents1.OnTTVEvent(aEvent.event.user_name);
|
||||
end;
|
||||
|
||||
procedure TfrOBS.toEventWebServer(aEvent: TRaidEvent);
|
||||
@@ -926,6 +1017,16 @@ begin
|
||||
inttostr(listKandinsky[i].port);
|
||||
Inc(rowIndex); // Óâåëè÷èâàåì ñ÷åò÷èê ñòðîê
|
||||
end;
|
||||
|
||||
for i := 0 to High(listGames) do
|
||||
begin
|
||||
sgWebChats.RowCount := rowIndex + 1;
|
||||
sgWebChats.Cells[0, rowIndex] := inttostr(listGames[i].port);
|
||||
sgWebChats.Cells[1, rowIndex] := 'Èãðà';
|
||||
sgWebChats.Cells[2, rowIndex] := 'http://127.0.0.1:' +
|
||||
inttostr(listGames[i].port);
|
||||
Inc(rowIndex); // Óâåëè÷èâàåì ñ÷åò÷èê ñòðîê
|
||||
end;
|
||||
finally
|
||||
sgWebChats.EndUpdate;
|
||||
end;
|
||||
|
||||
Reference in New Issue
Block a user