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

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

?? tltlogic.pas

?? 一般的數據庫管理系統 uses Classes, SConnectEx, TltConst, ExtCtrls, MMSystem, Types, windows, TltLogic , Sy
?? PAS
?? 第 1 頁 / 共 2 頁
字號:
unit TltLogic;
{Tlt logic layer}
interface
uses Classes, SConnectEx, TltConst, ExtCtrls, Forms, Dialogs, SysUtils, SyncObjs;
type
  TServerInfo = record
    ServerVer : String[255];
  end;

  TrltServerInterpreter = class(TDataBlockInterpreter)


    FClient : Pointer;
    FCriticalSection : TCriticalSection;

    procedure CallProc(Proc : TClientProc);
    function DoCustomAction(Action: Integer; const Data: IDataBlock): Boolean; override;
  public
    {Receiving Calls}
    procedure DoGetServerInfo(const Data: IDataBlock);
    procedure DoGetCurrentRound(const Data: IDataBlock);
    procedure DoGetTimeSetting(const Data: IDataBlock);
    procedure DoLoginPlayer(const Data: IDataBlock);
    procedure DoLogoffPlay(const Data: IDataBlock);
    procedure DoGetPlayerInfo(const Data: IDataBlock);
    procedure DoBet(const Data: IDataBlock);
    procedure DoGetScore(const Data: IDataBlock);
    procedure DoGetWheelParams(const Data: IDataBlock);
    procedure DoGetRoundInfo(const Data: IDataBlock);
    procedure DoPlayerEdit(const Data:IDataBlock);
    procedure DoGetPlayerList(const Data: IDataBlock);
    procedure DoSetRoundResult(const Data: IDataBlock);
    procedure DoGetGameParams(const Data: IDataBlock);
    procedure DoSetGameParams(const Data: IDataBlock);
    procedure DoGetRoundState(const Data: IDataBlock);
    procedure DoSetRoundState(const Data: IDataBlock);
    procedure DoGetRoundScordInfo(const Data: IDataBlock);
    procedure DoUploadPlayerList(const Data: IDataBlock);
    procedure DoGetRoundInfoLog(const Data: IDataBlock);
    procedure DoGetPlayerBetInfoLog(const Data: IDataBlock);
    procedure DoClearRoundInfoLog(const Data: IDataBlock);
    procedure DoClearPlayerBetInfoLog(const Data: IDataBlock);
    procedure DoClearPlayerList(const Data: IDataBlock);
    procedure DoCheckAdmin(const Data: IDataBlock);
    procedure DoLock(const Data: IDataBlock);
    {Sending Calls}
    function CallGetServerInfo : TServerInfo;
    function CallGetCurrentRoundNo: integer;
    {Sendto Client}
    procedure CallSetCountDown;
    procedure CallSetTimeSetting;
    procedure CallSetRound;
    procedure CallSetWheelResult;
    procedure CallSetPlayerInfo(APlayer : TObject);
    procedure CallSetWheelParams(WheelParams : TWheelParams);
    procedure CallLogout(PlayerID: String);
    procedure DoException(const Data: IDataBlock); override;
    constructor Create(SendDataBlock: ISendDataBlock;
      CheckRegValue: String); override;
    destructor Destroy; override;
  end;




implementation
uses ScktCnst, rltSvr;


{ TTltInterpreter }

function TrltServerInterpreter.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 TrltServerInterpreter.CallGetCurrentRoundNo: integer;
var
  Data: IDataBlock;
  Size : integer;
  s : integer;
begin
  FCriticalSection.Enter;
  try
    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;
  finally
    FCriticalSection.Leave;
  end;
//  Result := ReadVariant(Flags, Data);
end;


function TrltServerInterpreter.DoCustomAction(Action: Integer;
  const Data: IDataBlock): Boolean; 
begin
  FCriticalSection.Enter;
  try
    case (Action and asMask) of
      asGetServerInfo: DoGetServerInfo(Data);
      asGetCurrentRound : DoGetCurrentRound(Data);
      asTimeSetting : DoGetTimeSetting(Data);
      asLoginPlayer : DoLoginPlayer(Data);
      asLogoffPlayer : DoLogoffPlay(Data);
      asPlayerInfo : DoGetPlayerInfo(Data);
      asBet : DoBet(Data);
      asGetRoundScord : DoGetScore(Data);
      asWheelParams : DoGetWheelParams(Data);
      asGetRoundInfo : DoGetRoundInfo(Data);
      asPlayerEdit : DoPlayerEdit(Data);
      asPlayerList : DoGetPlayerList(Data);
      asSetRoundResult : DoSetRoundResult(Data);
      asGetGameParams : DoGetGameParams(Data);
      asSetGameParams : DoSetGameParams(Data);
      asGetRoundState : DoGetRoundState(Data);
      asSetRoundState : DoSetRoundState(Data);
      asUploadPlayerList : DoUploadPlayerList(Data);
      asGetRoundLog : DoGetRoundInfoLog(Data);
      asGetPlayerBetLog : DoGetPlayerBetInfoLog(Data);
      asClearPlayerList : DoClearPlayerList(Data);
      asClearPlayerBetLog : DoClearPlayerBetInfoLog(Data);
      asClearGameLog : DoClearRoundInfoLog(Data);
      asCheckAdmin : DoCheckAdmin(Data);
      asLockServer : DoLock(Data);
      1 :;
    else
      Result := false;
    end;
  finally
    FCriticalSection.Leave;
  end;
end;

procedure TrltServerInterpreter.DoGetServerInfo(const Data: IDataBlock);
var
  ServerInfo : TServerInfo;
  VarSize : integer;
begin
  Data.Clear;
  try
    ServerInfo.ServerVer :='1.0';
  finally
  end;
  VarSize := sizeof(ServerInfo);
  Data.Write(VarSize, sizeof(integer));
  Data.Write(ServerInfo, VarSize);
  Data.Signature := ResultSig or asGetServers;
  FSendDataBlock.Send(Data, False);
end;

procedure TrltServerInterpreter.DoGetCurrentRound(const Data: IDataBlock);
var
  Size : integer;
begin
  Data.Clear;
  Size := SizeOf(TRound);
  Data.Write(Size, SizeOf(Size));
  Data.Write(rltManager.Round,Size);
  Data.Signature := ResultSig or asGetCurrentRound;
  FSendDataBlock.Send(Data, False);
end;


procedure TrltServerInterpreter.CallSetCountDown;
var
  Data: IDataBlock;
  Size : integer;
  s : integer;
begin
  FCriticalSection.Enter;
  try
    Data := TDataBlock.Create as IDataBlock;
    WriteVariant(rltManager.CountDown, Data);
    Data.Signature := CallSig or asSetCountDown;

    Data := FSendDataBlock.Send(Data, false);
  finally
    FCriticalSection.Leave;
  end;
end;

procedure TrltServerInterpreter.CallProc(Proc: TClientProc);
begin
  if Assigned(Proc) then
  begin
    Proc;
  end;

end;

procedure TrltServerInterpreter.CallSetTimeSetting;
var
  Data: IDataBlock;
  Size : integer;
  s : integer;
begin
  FCriticalSection.Enter;
  try
    Data := TDataBlock.Create as IDataBlock;
    Size := Sizeof(rltManager.TimeSetting);
    Data.Write(Size, Sizeof(Size));
    Data.Write(rltManager.TimeSetting, Size);
    Data.Signature := CallSig or asTimeSetting;
    Data := FSendDataBlock.Send(Data, false);
  finally
    FCriticalSection.Leave;
  end;
end;

procedure TrltServerInterpreter.CallSetRound;
var
  Data: IDataBlock;
  Size : integer;
  s : integer;
begin
  FCriticalSection.Enter;
  try
    Data := TDataBlock.Create as IDataBlock;
    Size := Sizeof(rltManager.Round);
    Data.Write(Size, Sizeof(Size));
    Data.Write(rltManager.Round, Size);
    Data.Signature := CallSig or asSetRound;
    Data := FSendDataBlock.Send(Data, false);
  finally
    FCriticalSection.Leave;  
  end;
end;

procedure TrltServerInterpreter.DoGetTimeSetting(const Data: IDataBlock);
var
  Size : integer;
  s : integer;
begin
  Size := Sizeof(rltManager.TimeSetting);
  Data.Write(Size, Sizeof(Size));
  Data.Write(rltManager.TimeSetting, Size);
  Data.Signature := ResultSig or asTimeSetting;
  FSendDataBlock.Send(Data, false);
end;

procedure TrltServerInterpreter.DoException(const Data: IDataBlock);
begin
//  inherited;
  //do nothing;

end;

procedure TrltServerInterpreter.DoLoginPlayer(const Data: IDataBlock);
var
  Size : integer;
  s : integer;
  PlayerID : String;
  Password : String;
  VarFlag : TVarFlags;
  ResultValue : Boolean;
begin
  PlayerID := ReadVariant(VarFlag, Data);
  Password := ReadVariant(VarFlag, Data);
  ResultValue := rltManager.LoginPlayer(PlayerID, password, TTltClient(FClient));
  Data.Clear;
  WriteVariant(ResultValue, Data);
  Data.Signature := ResultSig or asLoginPlayer;
  FSendDataBlock.Send(Data, false);
end;

procedure TrltServerInterpreter.DoLogoffPlay(const Data: IDataBlock);
var
  Size : integer;
  s : integer;
  PlayerID : String;
  Password : String;
  VarFlag : TVarFlags;
  ResultValue : Boolean;
begin
  PlayerID := ReadVariant(VarFlag, Data);
  rltManager.LogoffPlayer(PlayerID);
  Data.Clear;
  WriteVariant(true, Data);
  Data.Signature := ResultSig or asLogOffPlayer;
  FSendDataBlock.Send(Data, false);
end;

constructor TrltServerInterpreter.Create(SendDataBlock: ISendDataBlock;
  CheckRegValue: String);
begin
  inherited;
  FClient := Pointer(TTltClient.Create(rltManager));
  TTltClient(FClient).Interpreter := Self;
  FCriticalSection := TCriticalSection.Create;
end;

procedure TrltServerInterpreter.DoGetPlayerInfo(const Data: IDataBlock);
var
  Size : integer;
  s : integer;
  Player : TPlayer;
  PlayerID : String;
  VarFlag : TVarFlags;
  PlayerInfo : TPlayerInfo;
begin
  PlayerID := ReadVariant(VarFlag, Data);
  Data.Clear;
  Player := rltManager.GetPlayerByID(PlayerID);
  if Player <> nil then PlayerInfo := Player.GetPlayerInfo
  else
  begin
    PlayerInfo.ID := PlayerID;
    PlayerInfo.money := 0;
    PlayerInfo.State := psLoginError;
  end;
  Size := sizeof(PlayerInfo);
  Data.Write(Size, Sizeof(Size));
  Data.Write(PlayerInfo, size);
  Data.Signature := ResultSig or asPlayerInfo;
  FSendDataBlock.Send(Data, false);

end;

destructor TrltServerInterpreter.Destroy;
begin
  TTltClient(FClient).Free;
  FCriticalSection.Free;  
  inherited;
end;

procedure TrltServerInterpreter.DoBet(const Data: IDataBlock);
var
  Size : integer;
  s : integer;
  Player : TPlayer;
  PlayerID : String;
  VarFlag : TVarFlags;
  Result : boolean;
  RBet, BBet, GBet:longint;
begin
  PlayerID := ReadVariant(VarFlag, Data);
  RBet := ReadVariant(VarFlag, Data);
  BBet := ReadVariant(VarFlag, Data);
  GBet := ReadVariant(VarFlag, Data);
  Data.Clear;
  Result := false;
  Player := rltManager.GetPlayerByID(PlayerID);
  if Player <> nil then
  begin
    Result := true;
    if (RBet + BBet + GBet)>Player.Money then
    begin
      Result := false;
      with Player do
      begin
        RBet := Player.Bet[btRed];
        BBet := Player.Bet[btBlack];
        GBet := Player.Bet[btGreen];
      end;

    end
    else
    begin
      with Player do
      begin
        Player.Bet[btRed] := RBet;
        Player.Bet[btBlack] := BBet;
        Player.Bet[btGreen]:= GBet;
      end;
    end;
  end
  else
  begin
    Result := false;
  end;
  WriteVariant(PlayerID, Data);
  WriteVariant(Result, Data);
  WriteVariant(RBet, Data);
  WriteVariant(BBet, Data);
  WriteVariant(GBet, Data);
  Data.Signature := ResultSig or asBet;
  FSendDataBlock.Send(Data, false);
end;

procedure TrltServerInterpreter.CallSetWheelResult;
var
  Data: IDataBlock;
  Size : integer;
  s : integer;
begin
  FCriticalSection.Enter;
  try
    Data := TDataBlock.Create as IDataBlock;
    WriteVariant(rltManager.WheelResult, Data);
    Data.Signature := CallSig or asWheelResult;
    Data := FSendDataBlock.Send(Data, false);
  finally
    FCriticalSection.Leave;
  end;
end;

procedure TrltServerInterpreter.CallSetPlayerInfo(APlayer: TObject);
var
  Data: IDataBlock;
  Size : integer;
  s : integer;
  PlayerID : String;
  VarFlag : TVarFlags;
  PlayerInfo : TPlayerInfo;
begin
  FCriticalSection.Enter;
  try
    Data := TDataBlock.Create as IDataBlock;
    with TPlayer(APlayer) do
    begin
      PlayerInfo := GetPlayerInfo;
      Size := sizeof(PlayerInfo);
      Data.Write(Size, Sizeof(Size));
      Data.Write(PlayerInfo, size);
      Data.Signature := CallSig or asPlayerInfo;
      Data := FSendDataBlock.Send(Data, false);
    end;
  finally
    FCriticalSection.Leave;
  end;
end;

procedure TrltServerInterpreter.DoGetScore(const Data: IDataBlock);
var
  Size : integer;
  s : integer;
  PlayerID : String;
  VarFlag : TVarFlags;
  RoundNo, WheelNo : integer;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美色电影| 99亚偷拍自图区亚洲| 91精品蜜臀在线一区尤物| 午夜久久久影院| 欧美一区二区三区在线电影| 美腿丝袜亚洲三区| 久久久综合激的五月天| 成人激情小说网站| 一区二区三区小说| 欧美一级片免费看| 狠狠色丁香九九婷婷综合五月| 国产色综合一区| 91丨九色丨国产丨porny| 亚洲美腿欧美偷拍| 日韩免费成人网| 国产69精品久久久久毛片| 亚洲精品少妇30p| 91精品午夜视频| 豆国产96在线|亚洲| 亚洲国产精品久久艾草纯爱| 日韩欧美国产一二三区| eeuss鲁片一区二区三区在线看| 亚洲综合视频在线观看| ww亚洲ww在线观看国产| 日本伦理一区二区| 国产综合成人久久大片91| 亚洲日本青草视频在线怡红院| 欧美日本一区二区三区| 高清国产一区二区| 日韩高清不卡在线| 亚洲天堂福利av| 亚洲精品在线一区二区| 色综合久久久久网| 国产美女主播视频一区| 亚洲午夜久久久| 国产欧美1区2区3区| 欧美日精品一区视频| 国产精品亚洲午夜一区二区三区 | 尤物视频一区二区| 亚洲精品一区二区精华| 欧亚洲嫩模精品一区三区| 国产精品一二三四| 日日夜夜免费精品| 亚洲激情在线播放| 国产拍揄自揄精品视频麻豆| 日韩一区二区三区精品视频| 色综合天天综合网天天狠天天| 精品一区二区三区免费视频| 亚洲综合偷拍欧美一区色| 国产欧美va欧美不卡在线| 日韩视频123| 欧美日韩一级二级| 91丝袜美腿高跟国产极品老师 | 日本韩国精品在线| 国产精品一区在线观看你懂的| 午夜精品久久久久影视| 亚洲欧美综合色| 亚洲国产成人自拍| 久久久久久夜精品精品免费| 欧美一区二区三区色| 欧美精品视频www在线观看| 欧洲人成人精品| 91色综合久久久久婷婷| 成人理论电影网| 国产精品白丝jk黑袜喷水| 久久精品国产77777蜜臀| 日韩电影免费在线看| 亚洲午夜国产一区99re久久| 亚洲欧美日韩久久精品| 亚洲三级在线观看| 亚洲精品综合在线| 一区二区三区欧美视频| 一级日本不卡的影视| 亚洲精品美腿丝袜| 一区二区三区四区蜜桃| 亚洲青青青在线视频| 亚洲男人的天堂av| 亚洲一二三级电影| 亚欧色一区w666天堂| 午夜伦理一区二区| 蜜臀91精品一区二区三区| 久久综合综合久久综合| 国产专区综合网| 成人一区二区三区视频在线观看 | 亚洲欧美色图小说| 一区二区三区四区激情| 亚洲午夜免费视频| 日韩精品亚洲一区| 韩国一区二区视频| 成人午夜碰碰视频| 色一情一乱一乱一91av| 欧美性大战xxxxx久久久| 亚洲免费观看在线观看| 亚洲国产人成综合网站| 青青草91视频| 国产成人在线免费| 91在线视频观看| 91超碰这里只有精品国产| 欧美一个色资源| 国产喷白浆一区二区三区| 日韩美女啊v在线免费观看| 亚瑟在线精品视频| 国产在线一区观看| 色菇凉天天综合网| 日韩免费观看高清完整版在线观看| 久久日一线二线三线suv| 日韩码欧中文字| 日韩av在线免费观看不卡| 国产福利一区在线| 欧美在线观看视频在线| 久久亚区不卡日本| 亚洲精品国产成人久久av盗摄| 天堂久久一区二区三区| 国模一区二区三区白浆| 色婷婷久久久久swag精品| 91麻豆精品久久久久蜜臀| 国产精品网站在线播放| 亚洲国产美女搞黄色| 韩国精品一区二区| 在线免费亚洲电影| 国产欧美精品一区二区三区四区 | 免费不卡在线观看| 97久久精品人人做人人爽| 7777精品伊人久久久大香线蕉的| 久久久精品黄色| 亚洲va韩国va欧美va| 成人av高清在线| 日韩色视频在线观看| 国产精品传媒在线| 欧美影院午夜播放| 久久午夜羞羞影院免费观看| 亚洲国产成人91porn| 成人性色生活片免费看爆迷你毛片| 在线成人av影院| |精品福利一区二区三区| 激情成人综合网| 欧美剧在线免费观看网站| 一区二区中文视频| 国产黄色精品网站| 欧美va日韩va| 日本女优在线视频一区二区| 日本久久一区二区| 中文字幕欧美日韩一区| 国内精品国产三级国产a久久| 欧美电影影音先锋| 一区二区日韩电影| 91猫先生在线| 亚洲欧洲成人av每日更新| 国产黄人亚洲片| 337p粉嫩大胆噜噜噜噜噜91av| 日韩中文字幕1| 欧美亚一区二区| 亚洲精品视频自拍| 色婷婷久久99综合精品jk白丝| 中文字幕制服丝袜一区二区三区| 国产精品一区专区| 精品成人一区二区三区四区| 欧美aa在线视频| 欧美一区二区三区在线| 日本欧美大码aⅴ在线播放| 制服丝袜中文字幕一区| 亚洲成人av电影| 88在线观看91蜜桃国自产| 亚洲午夜三级在线| 欧美日韩高清在线播放| 午夜久久久久久久久久一区二区| 精品婷婷伊人一区三区三| 亚洲国产毛片aaaaa无费看| 欧美日韩你懂的| 日韩电影在线一区二区三区| 91精品免费在线观看| 久久99久久精品欧美| 精品福利av导航| 粉嫩13p一区二区三区| 一区在线观看免费| 91国偷自产一区二区三区成为亚洲经典| 亚洲欧美偷拍另类a∨色屁股| 色猫猫国产区一区二在线视频| 亚洲影视在线播放| 制服丝袜一区二区三区| 久久国产人妖系列| 国产欧美一区二区精品仙草咪 | 日韩 欧美一区二区三区| 日韩视频不卡中文| 高清shemale亚洲人妖| 亚洲视频一区在线观看| 欧美另类高清zo欧美| 伦理电影国产精品| 亚洲国产成人自拍| 欧美性极品少妇| 久久福利资源站| 国产精品久久久久久久久免费相片 | 日韩一卡二卡三卡国产欧美| 久久精品国产99久久6| 国产色综合一区| 欧洲亚洲国产日韩| 国产中文字幕精品| 亚洲女同女同女同女同女同69| 欧美丰满少妇xxxxx高潮对白| 国产一区在线不卡|