summaryrefslogtreecommitdiff
path: root/plugins/!NotAdopted/Chess4Net/PromotionUnit.pas
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/!NotAdopted/Chess4Net/PromotionUnit.pas')
-rw-r--r--plugins/!NotAdopted/Chess4Net/PromotionUnit.pas202
1 files changed, 0 insertions, 202 deletions
diff --git a/plugins/!NotAdopted/Chess4Net/PromotionUnit.pas b/plugins/!NotAdopted/Chess4Net/PromotionUnit.pas
deleted file mode 100644
index 10ed8a9218..0000000000
--- a/plugins/!NotAdopted/Chess4Net/PromotionUnit.pas
+++ /dev/null
@@ -1,202 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-// All code below is exclusively owned by author of Chess4Net - Pavel Perminov
-// (packpaul@mail.ru, packpaul1@gmail.com).
-// Any changes, modifications, borrowing and adaptation are a subject for
-// explicit permition from the owner.
-
-unit PromotionUnit;
-
-interface
-
-uses
- Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
- Dialogs, ExtCtrls,
- // Chess4net
- ChessRulesEngine, ChessBoardHeaderUnit, BitmapResUnit;
-
-type
- TPromotionForm = class(TForm)
- PromFigImage: TImage;
- procedure FormShow(Sender: TObject);
- procedure PromFigImageMouseUp(Sender: TObject; Button: TMouseButton;
- Shift: TShiftState; X, Y: Integer);
- procedure FormKeyPress(Sender: TObject; var Key: Char);
- private
- m_iSquareSize: integer;
- m_BitmapRes: TBitmapRes;
- m_bmFigure: array[TFigure] of TBitmap;
- m_fig_color: TFigureColor;
- m_fig: TFigureName;
- procedure FLoadFigures;
- public
- function ShowPromotion(color: TFigureColor): TFigureName;
- constructor Create(AOwner: TComponent; BitmapRes: TBitmapRes); reintroduce;
- destructor Destroy; override;
- end;
-
-implementation
-
-{$R *.dfm}
-
-const
- INDENT_SIZE = 2;
-
-////////////////////////////////////////////////////////////////////////////////
-// TPromotionForm
-
-procedure TPromotionForm.FormShow(Sender: TObject);
-
- procedure NCorrectIfOutOfScreen(var iLeft, iTop: integer);
- var
- R: TRect;
- M: TMonitor;
- frmOwner: TForm;
- begin
- if (Assigned(Owner)) then
- frmOwner := (Owner as TForm)
- else
- frmOwner := nil;
- if (Assigned(frmOwner)) then
- begin
- M := Screen.MonitorFromRect(frmOwner.BoundsRect);
- R := M.WorkareaRect;
- end
- else
- R := Screen.WorkAreaRect;
-
- if ((iLeft + self.Width) > R.Right) then
- iLeft := R.Right - self.Width;
- if (iLeft < R.Left) then
- iLeft := R.Left;
- if ((iTop + self.Height) > R.Bottom) then
- iTop := R.Bottom - self.Height;
- if (iTop < R.Top) then
- iTop := R.Top;
- end;
-
-var
- k: byte;
- iLeft, iTop: integer;
-begin // TPromotionForm.FormShow
- if (m_iSquareSize <> m_BitmapRes.SquareSize) then
- FLoadFigures;
-
- // Установить окно в пределах курсора
- iLeft := Mouse.CursorPos.X - m_iSquareSize div 2;
- iTop := Mouse.CursorPos.Y - m_iSquareSize div 2;
-
- NCorrectIfOutOfScreen(iLeft, iTop);
-
- Left := iLeft;
- Top := iTop;
-
- with PromFigImage.Canvas do
- begin
- Brush.Color:= Color;
- FillRect(Rect(0,0, Width, PromFigImage.Height));
-
- Brush.Color:= clWhite;
- for k := 0 to 3 do
- FillRect(Rect((m_iSquareSize + INDENT_SIZE) * k, 0,
- (m_iSquareSize + INDENT_SIZE) * k + m_iSquareSize - 1, m_iSquareSize - 1));
-
- case m_fig_color of
- fcWhite:
- begin
- Draw(0, 0, m_bmFigure[WQ]);
- Draw(m_iSquareSize + 2, 0, m_bmFigure[WR]);
- Draw(2 * (m_iSquareSize + INDENT_SIZE), 0, m_bmFigure[WB]);
- Draw(3 * (m_iSquareSize + INDENT_SIZE), 0, m_bmFigure[WN]);
- end;
- fcBlack:
- begin
- Draw(0, 0, m_bmFigure[BQ]);
- Draw(m_iSquareSize + INDENT_SIZE, 0, m_bmFigure[BR]);
- Draw(2 * (m_iSquareSize + INDENT_SIZE), 0, m_bmFigure[BB]);
- Draw(3 * (m_iSquareSize + INDENT_SIZE), 0, m_bmFigure[BN]);
- end;
- end;
- end;
-end;
-
-
-function TPromotionForm.ShowPromotion(color: TFigureColor): TFigureName;
-begin
- m_fig := Q;
- m_fig_color := color;
-
- ShowModal;
-
- Result := m_fig;
-end;
-
-
-procedure TPromotionForm.PromFigImageMouseUp(Sender: TObject;
- Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
-begin
- case X div (m_BitmapRes.SquareSize + 1) of
- 1: m_fig := R;
- 2: m_fig := B;
- 3: m_fig := N;
- else
- m_fig := Q;
- end;
-
- Close;
-end;
-
-procedure TPromotionForm.FormKeyPress(Sender: TObject; var Key: Char);
-begin
- Key:= UpCase(Key);
- case Key of
- 'Q', '1', ' ', #13:
- m_fig:= Q;
- 'R', '2':
- m_fig:= R;
- 'B', '3':
- m_fig:= B;
- 'N', '4':
- m_fig:= N;
- else
- exit;
- end;
- Close;
-end;
-
-
-constructor TPromotionForm.Create(AOwner: TComponent; BitmapRes: TBitmapRes);
-begin
- self.FormStyle := (AOwner as TForm).FormStyle;
- inherited Create(AOwner);
- m_BitmapRes := BitmapRes;
- FLoadFigures;
-end;
-
-
-destructor TPromotionForm.Destroy;
-var
- fig: TFigure;
-begin
- for fig := Low(m_bmFigure) to High(m_bmFigure) do
- m_bmFigure[fig].Free;
- inherited;
-end;
-
-
-procedure TPromotionForm.FLoadFigures;
-var
- fig: TFigure;
-begin
- for fig := Low(m_bmFigure) to High(m_bmFigure) do
- begin
- FreeAndNil(m_bmFigure[fig]);
- m_BitmapRes.CreateFigureBitmap(fig, m_bmFigure[fig]);
- end;
- m_iSquareSize := m_BitmapRes.SquareSize;
-
- // Adjust size of the form
- PromFigImage.Width := 4 * m_iSquareSize + 3 * INDENT_SIZE;
- PromFigImage.Height := m_iSquareSize;
-end;
-
-end.