亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? managerinterpreter.pas

?? 一般的數據庫管理系統 uses Classes, SConnectEx, TltConst, ExtCtrls, MMSystem, Types, windows, TltLogic , Sy
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
unit ManagerInterpreter;
interface
uses Classes, SConnectEx, TltConst, ExtCtrls, SysUtils, Forms, Dialogs, Windows;
type
  TrltManagerInterpreter = class(TDataBlockInterpreter)
    function DoCustomAction(Action: Integer; const Data: IDataBlock): Boolean; override;
  private
    function CallGetRoundScord: TRoundScord;
    function CallGetCurrentRoundNo: integer;
    function CallGetRoundCountDown: integer;
    function GetRoundScord: TRoundScord;
  protected
    procedure DoException(const Data: IDataBlock); override;
  public
    {Receiving Calls}
    //do game round
    procedure DoSetCountDown(const Data: IDataBlock);
    //do player manage
    procedure DoLoginPlayer(const Data: IDataBlock) ;
    procedure DoLogoffPlayer(const Data: IDataBlock);
    procedure DoResetRound(const Data: IDataBlock);
    procedure DoSetRound(const Data: IDataBlock);
    procedure DoTimeSetting(const Data: IDataBlock);

    procedure DoWheelParams(const Data: IDataBlock);
    procedure DoLoginManager(const Data: IDataBlock);

    {Sending Calls}
    //get info
    function CallGetServerInfo : TServerInfo;
    function CallGetCurrentRound : TRound;
    function CallGetTimeSetting :TTimeSetting;
    function CallLoginPlayer(PlayerID, Password : String): boolean;
    function CallLogoffPlayer(PlayerID : String): boolean;
    function CallGetPlayerInfo(PlayerID : String) : TPlayerInfo;
    function CallGetScore(RoundNo, WheelNo: integer) : TRoundScord;
    function CallGetWheelParams : TWheelParams ;
    function CallGetRoundInfo():TRoundInfo;
    function CallPlayerEdit(APlayerEditInfo : TPlayerEditInfo):TPlayerEditInfo ;
    function CallGetPlayerList(APlayerList : TPlayerList): TPlayerList;
    function CallSetRoundResult(AColorIndex : integer):boolean;

    function CallGetGameParams(var AGameParams : TGameParams) : boolean;
    function CallSetGameParams(AGameParams : TGameParams) : boolean;
    function CallGetRoundState: TRoundState;
    function CallSetRoundState(ARoundState : TRoundState): boolean;
    function CallSetPlayerList(const APlayerList : TPlayerList): boolean;
    function CallGetRoundInfoLog(var AArrayofRoundInfo : TArrayofRoundInfo) : integer;
    function CallGetPlayerBetLog(var AArrayofPlayerBetLog : TArrayofPlayerBetInfo) : integer;

    function CallClearRoundInfoLog:boolean;
    function CallClearPlayerBetInfoLog:boolean;
    function CallClearPlayerList : boolean;
    function CallCheckAdmin(Tag : integer; AdminStr: String) : boolean;
    function CallSetLock(Lock : boolean):boolean;


  end;

  TrltSocketConnection = class(TSocketConnection)
  private
    FInterpreter : TrltManagerInterpreter;
  protected

    function GetInterpreter: TCustomDataBlockInterpreter; override;
    procedure DoError(E: Exception); override;
  published
    property Interpreter;


  end;

implementation
uses ScktCnst, Round, main;


{ TTltInterpreter }

function TrltManagerInterpreter.CallGetServerInfo: TServerInfo;
var
  Data: IDataBlock;
  Size : integer;
  s : TServerInfo;
begin
  Data := TDataBlock.Create as IDataBlock;
  Data.Signature := CallSig or asGetServerInfo;
  Data := FSendDataBlock.Send(Data, True);
  Data.Read(size, sizeof(size));
  Data.Read(s,Size);
  Result := s;
//  Result := ReadVariant(Flags, Data);
end;

function TrltManagerInterpreter.CallGetCurrentRoundNo: integer;
var
  Data: IDataBlock;
  Size : integer;
  s : integer;
begin
  Data := TDataBlock.Create as IDataBlock;
  Data.Signature := CallSig or asGetCurrentRound;
  Data := FSendDataBlock.Send(Data, True);
  Data.Read(size, sizeof(size));
  Data.Read(s,Size);
  Result := s;
//  Result := ReadVariant(Flags, Data);
end;


function TrltManagerInterpreter.DoCustomAction(Action: Integer;
  const Data: IDataBlock): Boolean; 
begin
  inherited DoCustomAction(Action, Data);
  case (Action and asMask) of
    //client
    asSetCountDown : DoSetCountDown(Data);
    asSetRound : DoSetRound(Data);
    asTimeSetting : DoTimeSetting(Data);
    asWheelParams : DoWheelParams(Data);
    asPlayerList:{ShowMessage('error 66')};
    1:;

  else
    Result := false;
  end;
end;





procedure TrltManagerInterpreter.DoSetCountDown(const Data: IDataBlock);
var
  VarSize : integer;
  VarFlag : TVarFlags;
begin
//  rlt.Round.CountDown := ReadVariant(VarFlag, Data);
end;

{ TrltSocketConnetion }

procedure TrltSocketConnection.DoError(E: Exception);
begin
  MessageBox(0, '連接服務器失敗!', '', MB_OK);

end;

function TrltSocketConnection.GetInterpreter: TCustomDataBlockInterpreter;
begin
  if not Assigned(FInterpreter) then
  FInterpreter := TrltManagerInterpreter.Create(Self, SSockets);
  Result := FInterpreter;

end;


procedure TrltManagerInterpreter.DoLoginPlayer(const Data: IDataBlock);
var
  IsLogined : boolean;
  VarFlag : TVarFlags;
  VarSize : integer;
begin
  //check is logined
  IsLogined := ReadVariant(VarFlag, Data);
  //active player
  //
end;

procedure TrltManagerInterpreter.DoLogoffPlayer(const Data: IDataBlock);
begin

end;

procedure TrltManagerInterpreter.DoResetRound(const Data: IDataBlock);
begin

end;

procedure TrltManagerInterpreter.DoSetRound(const Data: IDataBlock);
var
  VarSize : integer;
  VarFlag : TVarFlags;
  Round : TRound;
begin
{  Data.Read(VarSize, sizeof(VarSize));
  Data.Read(Round, VarSize);
  rlt.SetRound(Round);}
//  rlt.Round := ReadVariant(VarFlag, Data);
end;

function TrltManagerInterpreter.GetRoundScord: TRoundScord;
begin

end;


function TrltManagerInterpreter.CallGetRoundCountDown: integer;
begin

end;

function TrltManagerInterpreter.CallGetRoundScord: TRoundScord;
begin

end;

function TrltManagerInterpreter.CallGetRoundState: TRoundState;
var
  Data: IDataBlock;
  VarSize : integer;
  VarFlag : TVarFlags;
begin
  Data := TDataBlock.Create as IDataBlock;
  Data.Signature := CallSig or asGetRoundState;
  Data := FSendDataBlock.Send(Data, True);
  Data.Read(VarSize, sizeof(VarSize));
  Data.Read(Result, VarSize);
end;

function TrltManagerInterpreter.CallGetCurrentRound: TRound;
var
  Data: IDataBlock;
  VarSize : integer;
  VarFlag : TVarFlags;
begin
  Data := TDataBlock.Create as IDataBlock;
  Data.Signature := CallSig or asGetCurrentRound;
  Data := FSendDataBlock.Send(Data, True);
  Data.Read(VarSize, sizeof(VarSize));
  Data.Read(Result, VarSize);
end;

procedure TrltManagerInterpreter.DoTimeSetting(const Data: IDataBlock);
var
  VarSize : integer;
  VarFlag : TVarFlags;
  S : TTimeSetting;
begin
  Data.Read(VarSize, sizeof(VarSize));
  Data.Read(s, VarSize);
  TimeSetting := S;  
end;

function TrltManagerInterpreter.CallGetTimeSetting: TTimeSetting;
var
  Data: IDataBlock;
  Size : integer;
  s : TTimeSetting;
begin
  Data := TDataBlock.Create as IDataBlock;
  Data.Signature := CallSig or asTimeSetting;
  Data := FSendDataBlock.Send(Data, True);
  Data.Read(size, sizeof(size));
  Data.Read(s,Size);
  Result := s;

end;

function TrltManagerInterpreter.CallLoginPlayer(PlayerID, Password : String): boolean;
var
  Data: IDataBlock;
  Size : integer;
  s : boolean;
  Flays : TVarFlags;
begin
  Data := TDataBlock.Create as IDataBlock;
  Data.Signature := CallSig or asLoginPlayer;
  WriteVariant(PlayerID, Data);
  WriteVariant(Password, Data);
  Data := FSendDataBlock.Send(Data, True);
  Result :=  ReadVariant(Flays, Data);
end;

function TrltManagerInterpreter.CallGetPlayerInfo(
  PlayerID: String): TPlayerInfo;
var
  Data: IDataBlock;
  Size : integer;
  s : boolean;
  Flays : TVarFlags;
begin
  Data := TDataBlock.Create as IDataBlock;
  Data.Signature := CallSig or asPlayerInfo;
  WriteVariant(PlayerID, Data);
  Data := FSendDataBlock.Send(Data, True);
  Data.Read(Size, sizeof(Size));
  Data.Read(Result, Size);
end;



function TrltManagerInterpreter.CallLogoffPlayer(PlayerID : String): boolean;
var
  Data: IDataBlock;
  Size : integer;
  s : boolean;
  Flays : TVarFlags;
begin
  Data := TDataBlock.Create as IDataBlock;
  Data.Signature := CallSig or asLogoffPlayer;
  WriteVariant(PlayerID, Data);
  Data := FSendDataBlock.Send(Data, True);
  Result :=  ReadVariant(Flays, Data);
end;


{procedure TrltManagerInterpreter.DoPlayerInfo(const Data: IDataBlock);
var
  PlayInfo : TPlayerInfo;
  Size : integer;
  I : integer;
begin
  Data.Read(Size, sizeof(Size));
  Data.Read(PlayInfo, Size);
  APlayer := nil;
  for i := low(Player) to High(Player) do
  begin
    if PlayInfo.ID = Player[i].UserID then
    begin
      APlayer := Player[I];
      if APlayer <> nil then
      with PlayInfo do
      begin
        APlayer.money := money;
        APlayer.RBet := Bet[btRed];
        APlayer.GBet := Bet[btBlack];
        APlayer.BBet := Bet[btGreen];
        APlayer.State := State;
        APlayer.Modified := false;
      end;
    end;
  end;
end;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美极品xxx| 91小宝寻花一区二区三区| 国产精品伦理在线| 中文字幕欧美一| 欧美aaa在线| 欧美色倩网站大全免费| 欧美经典一区二区| 国模娜娜一区二区三区| 欧美午夜精品一区二区蜜桃 | 国产精品资源在线| 欧美视频一区二区三区四区| 国产亚洲欧美激情| 日本怡春院一区二区| 色综合久久综合网97色综合 | 亚洲午夜激情网站| 国产成人久久精品77777最新版本| 91精品国产综合久久香蕉的特点| 亚洲男人的天堂在线aⅴ视频| 丁香桃色午夜亚洲一区二区三区| 欧美成人a在线| 久久99国产精品尤物| 777a∨成人精品桃花网| 日韩精品每日更新| 欧美精品 日韩| 亚洲午夜精品一区二区三区他趣| 色香色香欲天天天影视综合网| 亚洲丝袜自拍清纯另类| 成人高清视频免费观看| 国产精品美女www爽爽爽| 国产精品自在在线| 久久久久成人黄色影片| 国产呦精品一区二区三区网站| 日韩欧美一区中文| 韩国视频一区二区| 久久一日本道色综合| 国产乱人伦偷精品视频免下载| 精品成人a区在线观看| 国产精品一区不卡| 国产精品美女久久久久av爽李琼| 99久久精品国产观看| 亚洲视频一区二区在线观看| 在线亚洲人成电影网站色www| 亚洲一区欧美一区| 6080午夜不卡| 精品一区二区免费| 国产精品每日更新在线播放网址| 色伊人久久综合中文字幕| 亚洲综合成人在线视频| 91精品国产乱码久久蜜臀| 韩国视频一区二区| 亚洲天堂av老司机| 91精品国产综合久久久久久久| 久久国产精品一区二区| 国产精品美女一区二区在线观看| 日本电影欧美片| 日本欧洲一区二区| 国产日韩高清在线| 日本丰满少妇一区二区三区| 看电视剧不卡顿的网站| 国产视频一区二区三区在线观看| 色婷婷综合久久| 老司机精品视频一区二区三区| 国产欧美视频在线观看| 欧美三级一区二区| 国产激情一区二区三区四区| 亚洲精品高清在线| 精品少妇一区二区| 色综合久久综合网97色综合| 久久超碰97人人做人人爱| 国产精品久久福利| 这里只有精品免费| 色狠狠一区二区| 精品午夜一区二区三区在线观看 | 天涯成人国产亚洲精品一区av| 精品国产成人在线影院 | 不卡一区二区中文字幕| 亚洲一区二区三区激情| ww久久中文字幕| 欧美无人高清视频在线观看| 国产福利91精品一区二区三区| 亚洲影院理伦片| 日本一区二区成人| 日韩精品一区二区三区视频| 色视频欧美一区二区三区| 久久99精品久久久久久| 亚洲一区二区三区小说| 欧美国产精品专区| 欧美一卡2卡3卡4卡| 色哟哟欧美精品| 成人国产在线观看| 国产成人精品一区二区三区四区| 奇米777欧美一区二区| 亚洲在线观看免费| 亚洲欧美综合另类在线卡通| 欧美精品一区二区在线播放| 欧美体内she精高潮| 不卡的av在线播放| 国产成人亚洲综合色影视| 蜜臀av在线播放一区二区三区 | 国产精品色哟哟网站| 欧美成人女星排名| 91精品国产免费| 欧美亚洲动漫精品| 欧美在线不卡视频| 色欧美乱欧美15图片| 不卡欧美aaaaa| 99久久综合精品| 99久久99久久综合| 91香蕉视频在线| 91免费视频大全| 色香蕉成人二区免费| 91黄色免费版| 欧美婷婷六月丁香综合色| 欧美肥妇bbw| 欧美精品三级在线观看| 欧美日韩二区三区| 在线综合视频播放| 日韩精品在线网站| 久久综合国产精品| 国产亚洲精久久久久久| 欧美韩国一区二区| 亚洲色图19p| 亚洲一二三四久久| 五月天婷婷综合| 美女一区二区三区在线观看| 久草这里只有精品视频| 国产精品18久久久久久vr| 高清日韩电视剧大全免费| 成人免费毛片片v| 色94色欧美sute亚洲线路一久 | 国产日韩欧美精品一区| 国产精品视频免费| 亚洲精品国产精品乱码不99| 婷婷成人激情在线网| 久久97超碰国产精品超碰| 成人精品电影在线观看| 色狠狠一区二区| 日韩欧美一二三四区| 国产精品毛片久久久久久久| 亚洲高清免费一级二级三级| 国产一区二区在线视频| 色综合久久精品| 欧美不卡123| 国产精品不卡在线| 日日骚欧美日韩| 高清视频一区二区| 欧美日韩午夜在线视频| 久久久亚洲精华液精华液精华液| 亚洲欧洲日产国产综合网| 一卡二卡欧美日韩| 激情小说亚洲一区| 色一情一乱一乱一91av| 欧美mv和日韩mv国产网站| 亚洲美女少妇撒尿| 精品影视av免费| 色综合天天视频在线观看 | 精品国产电影一区二区| 亚洲欧美国产高清| 久草中文综合在线| 欧美日韩视频在线观看一区二区三区| 欧美大黄免费观看| 亚洲国产中文字幕在线视频综合 | 免费欧美高清视频| 91视频一区二区三区| 日韩精品在线看片z| 亚洲综合免费观看高清完整版| 国产成人鲁色资源国产91色综| 91精品国产综合久久婷婷香蕉| 国产精品久久久久久久久免费丝袜| 日韩av电影免费观看高清完整版 | 日韩影院在线观看| 91女人视频在线观看| 久久女同精品一区二区| 日产精品久久久久久久性色| 99re热这里只有精品免费视频| 久久先锋影音av| 激情文学综合网| 欧美一区午夜精品| 视频一区二区三区入口| 在线观看免费一区| 国产精品超碰97尤物18| 丁香一区二区三区| 国产清纯白嫩初高生在线观看91 | 中文字幕一区二区不卡| 国产精品夜夜嗨| 亚洲精品一区二区三区香蕉| 日韩电影免费一区| 欧美日韩成人综合天天影院| 亚洲婷婷综合久久一本伊一区| 成人aaaa免费全部观看| 国产日产欧美一区二区视频| 国产精品99久| 国产亚洲美州欧州综合国| 久久99精品久久久久久动态图| 日韩精品中文字幕在线一区| 蜜臀av性久久久久av蜜臀妖精| 欧美一级片免费看| 日韩高清在线电影| 日韩欧美一区二区免费| 奇米精品一区二区三区四区|