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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? pmain.pas

?? 商業(yè)性對(duì)戰(zhàn)平臺(tái),功能強(qiáng)大,能進(jìn)行多方對(duì)戰(zhàn)!!有部分是用匯編寫的.
?? PAS
?? 第 1 頁 / 共 2 頁
字號(hào):
  Lbuff: RSTC_GiveBeginPlayerIdx;
begin
  Lbuff.Index := Iidx;
  for I := 0 to FPlayerArr.Count - 1 do begin // Iterate
    FMain.SendHead(PRplayer(FPlayerArr.Items[i]).Contenting, Cmid_STC_GiveBeginPlayerIdx);
    PRplayer(FPlayerArr.Items[i]).Contenting.Connection.WriteBuffer(Lbuff, Sizeof(Lbuff));
  end; // for
end;

procedure TTab.PlayerCards(IBuff: RSTC_PlayerSendCards);
var
  I: Integer;
begin
  PRplayer(FPlayerArr[IBuff.PlayerIdx]).TotMoney:=PRplayer(FPlayerArr[IBuff.PlayerIdx]).TotMoney-IBuff.Scores;
  for I := 0 to FPlayerArr.Count - 1 do begin // Iterate
    FMain.SendHead(PRplayer(FPlayerArr.Items[i]).Contenting, Cmid_STC_UserSendCards);
    PRplayer(FPlayerArr.Items[i]).Contenting.Connection.WriteBuffer(IBuff, Sizeof(IBuff));
  end; // for
end;

procedure TTab.PlayerPass(Ibuff: RSTC_PlayerPass);
var
  I: Integer;
begin
  for I := 0 to FPlayerArr.Count - 1 do begin // Iterate
    FMain.SendHead(PRplayer(FPlayerArr.Items[i]).Contenting, Cmid_STC_UserPass);
    PRplayer(FPlayerArr.Items[i]).Contenting.Connection.WriteBuffer(IBuff, Sizeof(IBuff));
  end; // for
end;

procedure TTab.PlayerChat(Ibuff: RCTS_Chat);
var
  I: Integer;
begin
  for I := 0 to FPlayerArr.Count - 1 do begin // Iterate
    FMain.SendHead(PRplayer(FPlayerArr.Items[i]).Contenting, Cmid_CTS_Chat);
    PRplayer(FPlayerArr.Items[i]).Contenting.Connection.WriteBuffer(IBuff, Sizeof(IBuff));
  end; // for
end;



procedure TTab.PlayerWin(Ibuff: RCTS_UseWin);
var
  I: Integer;
begin
  for I := 0 to  FPlayerArr.Count-1 do    // Iterate
    PRplayer(FPlayerArr[i]).ReadGame:=False;
  prPlayer(FPlayerArr.Items[Ibuff.PlayIdx]).TotMoney:=
    prPlayer(FPlayerArr.Items[Ibuff.PlayIdx]).TotMoney+Ibuff.AddScore;
end;

{ TFMain }

function TFMain.CanLoginIn(ILogin: RCTS_login): Boolean;
begin
  Result := True;
end;

procedure TFMain.GameServerConnect(AThread: TIdPeerThread);
var
  I: Integer;
  LTep: PRPlayer;
  LEntry: Pointer;
begin
  if AppState <> CappstateNormal then AThread.Connection.Disconnect;
  AddShow('客戶端試圖登錄...');
  Athread.Connection.ReadBuffer(GbuffHead, sizeof(GBuffHead));
  if GBuffHead.Cmid = Cmid_CTS_Login then
    Athread.Connection.ReadBuffer(Gbufflogin, Sizeof(GBuffLogin));
  if CanLoginIn(GBuffLogin) then begin
    AddShow('通過驗(yàn)證');
      //產(chǎn)生player的記錄
    New(ltep);
    LTep^.Name := GBuffLogin.Acc;
    LTep^.Contenting := AThread;
    LTep^.TotMoney := 100;
    AThread.Data := Pointer(ltep);
    WaitePlayerLIst.Add(AThread.Data);
    AddShow('生成管理對(duì)象');
      //給用戶發(fā)送現(xiàn)有桌子列表
    AddShow('向客戶端發(fā)送空閑桌子情況');
    LEntry := GetWaiteTabArrEntry(LBuffCount);
    GiveUserTabList(AThread, LEntry, LBuffCount * sizeof(RWaiteTab));
    OnlinesUserCount:=OnlinesUserCount+1;
    if WaitePlayerLIst.Count>0 then      
      For I := 0 To WaitePlayerLIst.Count - 1 Do     // Iterate
        GetOnlineUsersCount(PrPlayer(waitePlayerList.Items[i]).Contenting);
  end
  else begin
    AddShow('沒有通過應(yīng)證 斷開連接');
    Athread.Connection.Disconnect;
  end;
end;

procedure TFMain.GameServerExecute(AThread: TIdPeerThread);
var
  LHead: RHead;
  Ltep: pointer;
begin
  if AppState <> CappstateNormal then Exit;
  with AThread do begin
    Connection.ReadBuffer(LHead, SizeOf(LHead));
    case LHead.Cmid of //
      CMid_CTS_JoinTab: JoinTab(AThread); //加入桌子
      CMID_CTS_LeaveTab: LeaveTab(AThread);
      CMid_CTS_DisConn: begin
          SendHead(AThread, CMid_CTS_DisConn);
          AThread.Terminate;
        end;
      CMID_CTS_CreateTab: CreateTab(AThread);
      Cmid_CTS_ReadyGame: ReadyGame(AThread);
      Cmid_STC_GiveWaiteTabList: begin
          Ltep := GetWaiteTabArrEntry(LBuffCount);
          GiveUserTabList(AThread, Ltep, LBuffCount * sizeof(RWaiteTab))
        end;
      Cmid_STC_UserSendCards: PlayerSendCard(AThread);
      Cmid_STC_UserPass: PlayerPass(AThread);
      Cmid_CTS_Chat: PlayerChat(AThread);
      Cmid_CTS_GetOnlinesUser:GetOnlineUsersCount(AThread);
      Cmid_CTS_Userwin:PlayerWinMoney(AThread);
    end; // case
  end; // with
end;


procedure TFMain.JoinTab(Athread: TIdPeerThread);
var
  LBuff: RCTS_JoinTab;
  LTep: TTab;
begin
  with Athread do begin
    Connection.ReadBuffer(LBuff, SIZEOf(LBuff));
    LTep := GameManage.GetTab(LBuff.TabID);
    if LTep.PlayerCount + 1 <= LTep.MaxCount then begin
      LTep.InPlayer(Prplayer(Athread.Data));
      AddShow('用戶' + Prplayer(Athread.Data).Name + '加入了' + inttostr(LBuff.TabID) + '號(hào)桌子');
    end;
  end; // with
end;

procedure TFMain.LeaveTab(athread: TIdPeerThread);
var
  Lbuff: RCTS_LeaveTab;
begin
  with Athread do begin
    Connection.ReadBuffer(LBuff, SIZEOf(LBuff));
    AddShow(Format('用戶%s在離開了桌子%d',
      [Prplayer(Athread.Data).Name, Lbuff.TabID]));
    GameManage.GetTab(LBuff.TabID).LeavePlayer(Lbuff.PlayerID);
    FMain.SendHead(athread, CMID_CTS_LeaveTab); //告訴用戶他已經(jīng)成功離開了
  end; // with
end;

procedure TFMain.FormCreate(Sender: TObject);
begin
  GameManage := TGameTabMana.Create;
  WaitePlayerLIst := TList.Create;
  AppState := CappstateNormal;
end;

procedure TFMain.FormDestroy(Sender: TObject);
begin
  GameServer.Free;
  WaitePlayerLIst.Free;
  GameManage.Free;
end;

procedure TFMain.GiveCards(aThread: TIdPeerThread; TENtryPointer: Pointer; IRandomsArrSize: Integer; ICount: Byte);
var
  Lbuff: RSTC_GiveCards;
begin
  FMain.SendHead(aThread, Cmid_STC_GiveCards);
  Lbuff.CardsSize := IRandomsArrSize;
  Lbuff.Count := ICount;
  aThread.Connection.WriteBuffer(lbuff, SIZEOF(Lbuff));
  aThread.Connection.WriteBuffer(tenTryPointer^, Lbuff.CardsSize);
end;

procedure TFMain.CreateTab(athread: TIdPeerThread);
var
  Lbuff: RCTS_CreateTab;
  LResp: RCTS_CreateTab_RESP;
begin
  with athread do begin
    athread.Connection.ReadBuffer(Lbuff, Sizeof(Lbuff));
    LResp.tabid := GameManage.NewTab(Lbuff.TabName, Lbuff.TabKind);
    AddShow('創(chuàng)建名為' + Lbuff.TabName + '的桌子');
    GameManage.GetTab(LResp.tabid).InPlayer(PRplayer(athread.Data));
    SendHead(athread, CMID_CTS_CreateTab);
    Connection.WriteBuffer(lresp, sizeof(LResp));
  end; // with
end;

procedure TFMain.GiveUserTabList(athread: TIdPeerThread;
  TENtryPointer: Pointer; ISize: Integer);
var
  Lbuff: RSTC_GiveWaiteTabList;
begin
  SendHead(athread, Cmid_STC_GiveWaiteTabList);
  Lbuff.ListSize := ISize;
  aThread.Connection.WriteBuffer(lbuff, SIZEOF(Lbuff));
  aThread.Connection.WriteBuffer(tenTryPointer^, ISize);
end;

function TFMain.GetWaiteTabArrEntry(var Icount: Cardinal): Pointer;
var
  I: Integer;
begin
  if GameManage.FGameTabArr.Count = 0 then begin Result := nil; Exit; end;
  icount := 0;
  for I := 0 to GameManage.FGameTabArr.Count - 1 do begin // Iterate
    if not tTab(GameManage.FGameTabArr.Items[i]).gameing then begin
      inc(icount);
      SetLength(Lbuff, icount);
      Lbuff[icount - 1].TabID := tTab(GameManage.FGameTabArr.Items[i]).id;
      Lbuff[icount - 1].TabKind := tTab(GameManage.FGameTabArr.Items[i]).GameKind;
      Lbuff[icount - 1].TabName := tTab(GameManage.FGameTabArr.Items[i]).TabName;
      Lbuff[icount - 1].TabPlayerCount := tTab(GameManage.FGameTabArr.Items[i]).PlayerCount;
      Lbuff[icount - 1].TabMaxCount := tTab(GameManage.FGameTabArr.Items[i]).MaxCount;
    end;
  end; // for
  Result := Pointer(Lbuff);
end;

procedure TFMain.SendHead(AThread: TIdPeerThread; Iheadcmid: Smallint);
begin
  if not Assigned(AThread) then exit;
  GBuffHead.Cmid := Iheadcmid;
  AThread.Connection.WriteBuffer(GbuffHead, sizeof(GBuffHead));
end;

procedure TFMain.TabChanged(athread: TIdPeerThread; Ikind: sTabChange;
  Iparam: Cardinal; IWaiteTab: PRWaiteTab);
var
  Lbuff: RSTC_TabChange;
begin
  SendHead(athread, Cmid_STC_TabChange);
  Lbuff.Kind := Ikind;
  Lbuff.Param := Iparam;
  if Assigned(IWaiteTab) then
    Lbuff.WaiteTab := IwaiteTab^;
  athread.Connection.WriteBuffer(Lbuff, Sizeof(Lbuff));
end;

procedure TFMain.AddShow(IStr: string);
begin
  if Memo1.Lines.Add(datetimetostr(now) + ' :' + IStr) > 500 then
    Memo1.Clear;
end;

procedure TFMain.TabChanged(Ikind: sTabChange; Iparam: Cardinal; IWaiteTab: PRWaiteTab);
var
  I: Integer;
  Lbuff: RSTC_TabChange;
begin
  for I := 0 to WaitePlayerLIst.Count - 1 do begin // Iterate
    SendHead(PRPlayer(WaitePlayerLIst.Items[I]).Contenting, Cmid_STC_TabChange);
    Lbuff.Kind := Ikind;
    Lbuff.Param := Iparam;
    if Assigned(IWaiteTab) then
      Lbuff.WaiteTab := IwaiteTab^;
    PRPlayer(WaitePlayerLIst.Items[I]).Contenting.Connection.WriteBuffer(Lbuff, Sizeof(Lbuff));
  end; // for
end;

procedure TFMain.ReadyGame(Athread: TIdPeerThread);
var
  Lbuff: RCTS_ReadyGame;
begin
  Athread.Connection.ReadBuffer(Lbuff, Sizeof(Lbuff));
  GameManage.GetTab(Lbuff.TabID).ReadyGame(Lbuff.PlayerINDEX, Lbuff.STate);
  AddShow(Format('用戶%s在桌子%d上將狀態(tài)設(shè)置為%s', [Prplayer(Athread.Data).Name,
    Lbuff.TabID, inttostr(Ord(Lbuff.STate))]));
end;

procedure TFMain.GameServerListenException(AThread: TIdListenerThread;
  AException: Exception);
begin
  AddShow(AException.Message);
end;

procedure TFMain.DisConn(Athread: TIdPeerThread);
var
  I: Integer;
begin
  OnlinesUserCount:=OnlinesUserCount-1;
  AddShow('用戶' + Prplayer(Athread.Data).Name + '退出連接了');
  i := WaitePlayerLIst.IndexOf(Athread.Data);
  if i > -1 then
    WaitePlayerLIst.Delete(i)
  else begin
    GameManage.GetTab(Prplayer(Athread.Data).Index).LeavePlayer(Prplayer(Athread.Data).ID, True);
  end;
  For I := 0 To WaitePlayerLIst.Count - 1 Do   // Iterate
  GetOnlineUsersCount(pRplayer(WaitePlayerLIst.Items[i]).Contenting);
  Dispose(Pointer(AThread.Data));
end;

procedure TFMain.GameServerDisconnect(AThread: TIdPeerThread);
begin
  DisConn(AThread);
end;

procedure TFMain.GameServerException(AThread: TIdPeerThread;
  AException: Exception);
begin
  if AThread.Connection.Connected then AThread.Connection.Disconnect;
end;

procedure TFMain.PlayerPass(Athread: TIdPeerThread);
var
  Lbuff: RSTC_PlayerPass;
begin
  Athread.Connection.ReadBuffer(Lbuff, sizeof(Lbuff));
  GameManage.GetTab(Lbuff.TabID).PlayerPass(Lbuff);
end;

procedure TFMain.PlayerSendCard(Athread: TIdPeerThread);
var
  Lbuff: RSTC_PlayerSendCards;
begin
  Athread.Connection.ReadBuffer(Lbuff, sizeof(Lbuff));
  GameManage.GetTab(Lbuff.TabID).PlayerCards(Lbuff);
end;

procedure TFMain.PlayerChat(Athread: TIdPeerThread);
var
  Lbuff: RCTS_Chat;
begin
  Athread.Connection.ReadBuffer(Lbuff, Sizeof(Lbuff));
  GameManage.GetTab(Lbuff.TabID).PlayerChat(Lbuff);
end;

procedure TFMain.GetOnlineUsersCount(Athread: TIdPeerThread);
Var
  Lbuff:RCTS_GetOnlinesUser;
begin
  Lbuff.Count:=OnlinesUserCount;
  SendHead(Athread,Cmid_CTS_GetOnlinesUser);
  Athread.Connection.WriteBuffer(Lbuff,Sizeof(Lbuff));
end;

procedure TFMain.PlayerWinMoney(Athread: TIdPeerThread);
var
  LBuff:RCTS_UseWin;
begin
  Athread.Connection.ReadBuffer(LBuff,Sizeof(LBuff));
  GameManage.GetTab(LBuff.TabId).PlayerWin(LBuff);
end;

end.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区免费| 99天天综合性| 日本怡春院一区二区| 久久久久久久久久久电影| 裸体健美xxxx欧美裸体表演| 亚洲欧美一区二区三区极速播放| 国产传媒久久文化传媒| 麻豆国产欧美日韩综合精品二区 | 亚洲自拍偷拍网站| 国产欧美日本一区视频| 国产精品小仙女| 一区二区三区蜜桃网| 国产精品丝袜黑色高跟| 久久综合色鬼综合色| 69堂亚洲精品首页| 欧美麻豆精品久久久久久| 91久久精品一区二区三| 91视频国产观看| 91色综合久久久久婷婷| 播五月开心婷婷综合| caoporn国产精品| 成人黄色电影在线| 成人精品高清在线| 97se亚洲国产综合自在线不卡| 懂色av中文字幕一区二区三区| 国产福利一区在线| 不卡一区二区中文字幕| aaa欧美日韩| 91国产丝袜在线播放| 在线免费精品视频| 欧美日韩高清影院| 日韩欧美色综合网站| 欧美tk—视频vk| 久久精品免费在线观看| 国产精品私人影院| 综合久久给合久久狠狠狠97色| 中文字幕制服丝袜一区二区三区| 中文字幕av一区二区三区免费看| 色综合婷婷久久| 视频一区视频二区中文字幕| 亚洲国产综合91精品麻豆| 2024国产精品视频| 国产视频亚洲色图| 亚洲欧美激情小说另类| 亚洲国产日日夜夜| 免费成人av在线| 激情小说欧美图片| 成人深夜福利app| 色狠狠色狠狠综合| 91精品国产综合久久蜜臀| 精品国产乱码久久久久久久| 国产欧美日韩综合| 亚洲激情男女视频| 另类小说图片综合网| 国产91丝袜在线观看| 日本久久电影网| 欧美一区二区三区色| 久久久久久久久久久电影| 国产精品麻豆久久久| 五月开心婷婷久久| 国产一区美女在线| 91免费观看在线| 欧美一区二区三区的| 亚洲欧洲日本在线| 亚洲综合区在线| 麻豆极品一区二区三区| 成人av电影在线网| 欧美精品一卡两卡| 国产日韩欧美制服另类| 亚洲一区二区三区四区不卡| 国产一区二区三区在线观看免费| 99久久精品免费看国产| 5月丁香婷婷综合| 亚洲日本中文字幕区| 久久福利视频一区二区| 欧美影院一区二区| 精品福利在线导航| 亚洲精品视频在线观看免费| 麻豆精品国产传媒mv男同| 成人综合激情网| 3atv一区二区三区| 亚洲视频一区在线| 国产一区二区三区久久悠悠色av | 国产喂奶挤奶一区二区三区| 亚洲精品中文字幕在线观看| 久久99精品久久久久久| 欧美日韩一区二区三区在线 | 欧美国产精品一区二区| 午夜视频在线观看一区| 99久久久免费精品国产一区二区| 777午夜精品视频在线播放| 国产精品伦理一区二区| 麻豆国产精品一区二区三区 | 国产真实乱偷精品视频免| 欧美综合在线视频| 国产欧美一二三区| 久久国产精品99久久人人澡| 91精品91久久久中77777| 欧美一区二区三区免费视频| 一区二区三区丝袜| 成人激情免费电影网址| 久久久不卡网国产精品一区| 日韩不卡手机在线v区| 欧美性受xxxx黑人xyx性爽| 欧美韩国一区二区| 激情av综合网| 欧美成人性福生活免费看| 亚洲妇女屁股眼交7| 一本久久精品一区二区| 亚洲国产精品传媒在线观看| 国产精品综合一区二区三区| 欧美一级在线视频| 日韩极品在线观看| 欧美丰满少妇xxxxx高潮对白| 亚洲精品免费在线播放| 99在线精品观看| 亚洲色图视频网| 成人国产视频在线观看| 国产视频不卡一区| 成人18视频在线播放| 国产精品久久久久久久久搜平片| 精品亚洲国产成人av制服丝袜| 91精品国产麻豆| 奇米影视一区二区三区| 日韩一区二区三区在线视频| 日韩欧美国产综合| 裸体一区二区三区| 精品国产乱码久久久久久图片| 精东粉嫩av免费一区二区三区| 日韩欧美国产小视频| 久草在线在线精品观看| 精品国产污网站| 国产一区二区三区免费| 久久久精品2019中文字幕之3| 国产精品亚洲人在线观看| 久久久精品一品道一区| 成人免费看的视频| 综合自拍亚洲综合图不卡区| 色婷婷综合在线| 亚洲丶国产丶欧美一区二区三区| 欧美乱熟臀69xxxxxx| 美女mm1313爽爽久久久蜜臀| 精品国产精品网麻豆系列| 国产成人免费视| 综合色中文字幕| 欧美丝袜第三区| 男人的天堂亚洲一区| 欧美电影精品一区二区| 国产精品一区三区| 最新日韩av在线| 欧美日韩一区二区欧美激情| 欧美a一区二区| 久久久不卡网国产精品二区| 99久久婷婷国产综合精品电影| 亚洲精品伦理在线| 51午夜精品国产| 日韩国产欧美三级| 337p日本欧洲亚洲大胆精品| www.欧美日韩国产在线| 午夜久久久影院| 国产日韩欧美制服另类| 91黄色免费版| 成人av影视在线观看| 日韩av在线发布| 一区二区三区欧美日| 国产色产综合产在线视频| 欧美日韩精品欧美日韩精品| www.在线成人| 国产九色精品成人porny| 婷婷成人综合网| 亚洲视频电影在线| 国产免费久久精品| 日韩一级黄色大片| 欧美视频一区二| 99久久夜色精品国产网站| 国产一区二区网址| 日本vs亚洲vs韩国一区三区二区| 中文字幕亚洲一区二区va在线| 亚洲精品一区二区三区香蕉| 欧美日韩一区二区不卡| 91女神在线视频| 成人av电影在线播放| 国产一区二区按摩在线观看| 日韩av中文在线观看| 亚洲国产中文字幕在线视频综合 | 国产自产视频一区二区三区| 五月天丁香久久| 一区二区三区免费网站| 亚洲男人的天堂av| 国产精品久久二区二区| 国产欧美一区二区精品忘忧草| 精品毛片乱码1区2区3区| 777亚洲妇女| 91精品国产综合久久久久久| 欧美视频一区在线观看| 欧美午夜寂寞影院| 欧亚洲嫩模精品一区三区| 99re这里都是精品| 99久久99久久精品免费观看| 本田岬高潮一区二区三区|