?? rltgame.pas
字號:
Player.UserID := '';
Player.money := 0;
Player.State := psNoBody;
State := ppsUnknow;
end;
end else begin
State := ppsLoginError;
InputCount := 0;
// FouceID := 2;
end;
end;
end;
ppsLoginError:
begin
inc(InputCount);
if (InputCount>1000) then begin
State := ppsNoBody;
UserName := '';
Password := '';
end;
if ClickedButton(CancelButtomRect) then begin
State := ppsLogining;
FouceID := 2;
end;
end;
ppsLoginOtherWay, ppsUnknow:
begin
inc(InputCount);
if (InputCount>300) or ClickedButton(CancelButtomRect) then begin
State := ppsNoBody;
UserName := '';
Password := '';
end;
end;
ppsActive:
begin
if ClickedButton(LogoutButtomRect) then begin //logout
TltInterpreter.CallLogoffPlayer(Player.UserID);
State := ppsNoBody;
UserName := '';
Password := '';
Player.Clear;
end;
if ClickedButton(RBox) then begin
Player.RBet := Player.RBet + ChipPanel.SelectedChipValue;
MainForm.PlaySoundBetting;
end;
if RClickedButton(RBox) then begin
Player.RBet := Player.RBet - ChipPanel.SelectedChipValue;
MainForm.PlaySoundBetting;
end;
if ClickedButton(BBox) then begin
Player.BBet := Player.BBet + ChipPanel.SelectedChipValue;
MainForm.PlaySoundBetting;
end;
if RClickedButton(BBox) then begin
Player.BBet := Player.BBet - ChipPanel.SelectedChipValue;
MainForm.PlaySoundBetting;
end;
if ClickedButton(GBox) then begin
Player.GBet := Player.GBet + ChipPanel.SelectedChipValue;
MainForm.PlaySoundBetting;
end;
if RClickedButton(GBox) then begin
Player.GBet := Player.GBet - ChipPanel.SelectedChipValue;
MainForm.PlaySoundBetting;
end;
if Player.Modified then begin
Player.Update;
end;
end;
end;
end;
{ TPlayer }
procedure TPlayer.Clear;
begin
UserID := '';
Password := '';
FRBet := 0;
FBBet := 0;
FGBet := 0;
Modified := false;
State := psNoBody;
end;
procedure TPlayer.ClearBets;
begin
FRBet := 0;
FBBet := 0;
FGBet := 0;
Modified := true;
end;
function TPlayer.GetBBet: LongInt;
begin
Result := FBBet;
end;
function TPlayer.GetGBet: LongInt;
begin
Result := FGBet;
end;
function TPlayer.GetRBet: LongInt;
begin
Result := FRBet;
end;
procedure TPlayer.SetBBet(const Value: LongInt);
begin
if FBBet <> Value then
begin
FBBet := Value;
if FBBet <0 then FBBet := 0;
Modified := true;
end;
end;
procedure TPlayer.SetGBet(const Value: LongInt);
begin
if FGBet <> Value then
begin
FGBet := Value;
if FGBet <0 then FGBet := 0;
Modified := true;
end;
end;
procedure TPlayer.SetRBet(const Value: LongInt);
begin
if FRBet <> Value then
begin
FRBet := Value;
if FRBet <0 then FRBet := 0;
Modified := true;
end;
end;
procedure TPlayer.Update;
begin
if Modified then
TltInterpreter.CallBet(Self);
Modified := false;
end;
{ TChipPanel }
constructor TChipPanel.Create;
var
I : integer;
begin
// ClientRect := Rect(0, 0, 332, 144);
ClientRect := Rect(0, 0, 301, 104);
for I := 0 to Length(ChipRect) -1 do begin
// ChipRect[I] := Rect( I * 33 + 75, 30 + 8, 33 + I * 33 + 75, 65 + 8 );
ChipRect[I] := Rect( I * 40 + 60, 30 + 8, 40 + I * 40 + 60, 65 + 8 );
end;
end;
function TChipPanel.OverButton(CursorPos: TPoint; R: TRect): boolean;
var
TmpR : TRect;
begin
TmpR := R;
OffsetRect(TmpR, BoundsRect.Left, BoundsRect.Top);
if PtInRect(TmpR, CursorPos) then
Result := true
else
Result := false;
end;
procedure TChipPanel.Draw(DestSurface, ChipPanelSurface, ItemsSurface: TDirectDrawSurface);
var
I : integer;
SR : TRect;
X, Y : integer;
begin
//draw panel;
DestSurface.Draw(BoundsRect.Left, BoundsRect.Top, ClientRect, ChipPanelSurface, true);
//draw chips
// ItemsSurface
for I := 0 to Length(ChipRect) -1 do
begin
X := 66; Y := 21;
SR := Rect(X,Y+35*I, X+33, Y + 35 + 35 *I);
if I = FSelectedChip then
begin
X:= 33;
SR := Rect(X,Y+35*I, X+33, Y + 35 + 35 *I)
end
else if OverButton(FCursorPos, ChipRect[I])then
SR := Rect(0, Y+35*I, 33, Y+ 35 + 35 *I);
DestSurface.Draw(chiprect[I].Left + BoundsRect.Left, chipRect[I].Top + BoundsRect.Top , SR, ItemsSurface, true);
end;
end;
function TChipPanel.GetSelectedChipValue: longint;
const
ChipValue : array [0..4] of longint = (50, 100, 500, 1000, 5000);
begin
Result := chipValue[FSelectedChip];
end;
procedure TChipPanel.SetSelectedChip(const Value: longint);
begin
FSelectedChip := Value;
end;
procedure TChipPanel.Update(CursorPos: TPoint; MouseState: byte;
Key: Word);
var
I : integer;
function ClickedButton(R : TRect): boolean ;
begin
if (MouseState = 1) and OverButton(CursorPos, R) then
Result := True
else
Result := False;
end;
begin
FCursorPos := CursorPos;
for I := 0 to Length(ChipRect) -1 do
begin
if ClickedButton(ChipRect[I]) then
begin
SelectedChip := I;
MainForm.PlaySoundSelChip;
end;
end;
end;
{ TTimePanel }
constructor TTimePanel.Create;
begin
Color := clWhite;
// ClientRect := Rect(0, 0, 332, 144);
ClientRect := Rect(0, 1, 301, 103);
{ RoundLabelRect := Rect(0, 5, 301, 48);
TimeLabelRect := Rect(0, 35, 301, 114);}
TimeLabelRect := Rect(0, 10, 301, 130);
end;
procedure TTimePanel.Draw(DestSurface, PanelSurface, ItemsSurface : TDirectDrawSurface);
procedure DrawRectText(R : TRect; S : String; Size : integer = 9);
var
CR : TRect;
begin
CR := R;
OffsetRect(CR, BoundsRect.Left, BoundsRect.Top);
with DestSurface.Canvas do begin
Brush.Style := bsClear;
Font.Color := Self.Color;
Font.Name := '';
Font.Charset := ANSI_CHARSET;
Font.Size := Size;
Brush.Style := bsClear;
windows.DrawText(Handle, pchar(S),Length(S),CR,DT_CENTER or DT_VCENTER);
// DrawText(CR, S);
Release;
end; //Draw Foucus;
end;
begin
//draw panel;
DestSurface.Draw(BoundsRect.Left,BoundsRect.Top,ClientRect,PanelSurface,true);
Color := clWhite;
DrawRectText(RoundLabelRect, '第'+ IntToStr(rlt.Round.No) +'局', 24);
if rlt.CountDown<=rlt.TimeSetting.BeforeWheelTimeSet-rlt.TimeSetting.BetTimeSet then
Color := TColor($4444FF);
DrawRectText(TimeLabelRect, FormatFloat('00',rlt.CountDown),60);
end;
procedure TTimePanel.Update(CursorPos: TPoint; MouseState: byte;
Key: Word);
begin
Time := rlt.CurrentRoundNo;
end;
{ THistoryPanel }
constructor THistoryPanel.Create;
begin
ClientRect := Rect(0, 0, 800-144-15, 600-20-229);
end;
procedure THistoryPanel.Draw(DestSurface, PanelSurface, ItemsSurface : TDirectDrawSurface);
var
I ,J: integer;
function GetColorIndex(Num : integer): integer;
begin
result := -1;
case Num of
1, 3,5,7,9,12,14,16,18,19,21,23,25,27,30,32,34,36:
Result := 0;
2,4,6,8,10,11,13,15,17,20,22,24,26,28,29,31,33,35:
Result := 1;
0: Result := 2;
else Result := -1;
end;
end;
procedure DrawRectText(R : TRect; S : String; Size : integer = 9);
var
CR : TRect;
begin
CR := R;
OffsetRect(CR, BoundsRect.Left, BoundsRect.Top);
with DestSurface.Canvas do
begin
Font.Charset := DEFAULT_CHARSET;
Brush.Style := bsClear;
Font.Color := clWhite;
Font.Name := 'Technic';
Font.Size := Size;
Brush.Style := bsClear;
windows.DrawText(Handle, pchar(S),Length(S), CR, DT_CENTER or DT_VCENTER);
// DrawText(CR, S);
Release;
end; //Draw Foucus;
end;
var
CBoundsRect ,R, DR : TRect;
begin
//draw panel;
CBoundsRect := BoundsRect;
DestSurface.Draw(BoundsRect.Left, BoundsRect.Top, ClientRect, PanelSurface, true);
for I := 1 to 10 do
for J := 0 to 4 do
begin
if (rlt.Round.Scord.Number[J * 10 + I]>=0) then
begin
R := Rect(
200+41*GetColorIndex(rlt.Round.Scord.Number[J * 10 + I ]),
0,
200+41*GetColorIndex(rlt.Round.Scord.Number[J * 10 + I ])+41,
33);
DR := Rect(
I * 42+ 103 - 42,
J * 34 + 81 + 3,
I * 42+ 103,
J * 34 + 81 + 34);
if (rlt.Round.Scord.Count>=J * 10 + I ) then
begin
DestSurface.Draw(I * 42+ 103 + BoundsRect.Left - 42, J * 34 + 81 + BoundsRect.Top,
R, ItemsSurface,true);
DrawRectText(DR, IntToStr(rlt.Round.Scord.Number[J * 10 + I ]), 18);
end;
end;
end;
BoundsRect := CBoundsRect;
end;
procedure THistoryPanel.Update(CursorPos: TPoint; MouseState: byte;
Key: Word);
begin
end;
initialization
rlt := TRlt.Create;
for ii := 0 to 3 do
begin
Players[ii] := TPlayer.Create;
PlayerPanel[ii] := TPlayerPanel.Create(players[ii]);
PlayerPanel[ii].ClientRect := Rect(0,0, 250, 102);
PlayerPanel[ii].BoundsRect := Rect(0,0, 250, 102);
end;
OffsetRect(PlayerPanel[0].BoundsRect, 0, 0);
OffsetRect(PlayerPanel[1].BoundsRect, 800-250, 0);
OffsetRect(PlayerPanel[2].BoundsRect, 0, 600-102);
OffsetRect(PlayerPanel[3].BoundsRect, 800-250, 600-102);
ChipPanel := TChipPanel.Create;
// ChipPanel.BoundsRect := Rect(239, 600-80, 239+322, 600);
ChipPanel.BoundsRect := Rect(249, 600-104, 249+301, 600);
TimePanel := TTimePanel.Create;
// TimePanel.BoundsRect := Rect(239, 0, 800 - 114 , 144 );
TimePanel.BoundsRect := Rect(249, 0, 249+301 , 144 );
HistoryPanel := THistoryPanel.Create;
HistoryPanel.BoundsRect := Rect(249, 144, 800 , 600 - 144 );;
finalization
for ii := 0 to 3 do begin
Players[ii].Free;
PlayerPanel[ii].Free;
end;
ChipPanel.Free;
rlt.Free;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -