////////////////////////////////////////////////////////////////////////////////
// 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 GameOptionsUnit;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls,
  Dialogs, StdCtrls, TntStdCtrls, ExtCtrls, ComCtrls,
  ModalForm;

type
  TGameOptionsForm = class(TModalForm)
    OkButton: TTntButton;
    CancelButton: TTntButton;
    TimeControlGroupBox: TTntGroupBox;
    EqualTimeCheckBox: TTntCheckBox;
    YouGroupBox: TTntGroupBox;
    YouMinLabel: TTntLabel;
    YouIncLabel: TTntLabel;
    YouMinEdit: TEdit;
    YouIncEdit: TEdit;
    YouUnlimitedCheckBox: TTntCheckBox;
    OpponentGroupBox: TTntGroupBox;
    OpponentMinLabel: TTntLabel;
    OpponentIncLabel: TTntLabel;
    OpponentIncEdit: TEdit;
    OpponentMinEdit: TEdit;
    OpponentUnlimitedCheckBox: TTntCheckBox;
    Panel1: TPanel;
    AutoFlagCheckBox: TTntCheckBox;
    TakeBackCheckBox: TTntCheckBox;
    TrainingModeGroupBox: TTntGroupBox;
    TrainingEnabledCheckBox: TTntCheckBox;
    ExtBaseComboBox: TTntComboBox;
    UsrBaseCheckBox: TTntCheckBox;
    ExtBaseLabel: TTntLabel;
    GamePauseCheckBox: TTntCheckBox;
    YouMinUpDown: TUpDown;
    YouIncUpDown: TUpDown;
    OpponentMinUpDown: TUpDown;
    OpponentIncUpDown: TUpDown;
    GameAdjournCheckBox: TTntCheckBox;
    procedure YouEditChange(Sender: TObject);
    procedure OpponentEditChange(Sender: TObject);
    procedure EqualTimeCheckBoxClick(Sender: TObject);
    procedure UnlimitedCheckBoxClick(Sender: TObject);
    procedure TrainingEnabledCheckBoxClick(Sender: TObject);
    procedure ExtBaseComboBoxChange(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    procedure FLocalize;
  protected
    function GetModalID: TModalFormID; override;
  end;

implementation

{$R *.dfm}

uses
  LocalizerUnit;

procedure TGameOptionsForm.YouEditChange(Sender: TObject);
begin
  YouMinEdit.Text := IntToStr(YouMinUpDown.Position);
  YouIncEdit.Text := IntToStr(YouIncUpDown.Position);
  if EqualTimeCheckBox.Checked then
    begin
      OpponentMinEdit.Text := YouMinEdit.Text;
      OpponentIncEdit.Text := YouIncEdit.Text;
    end;
end;


procedure TGameOptionsForm.OpponentEditChange(Sender: TObject);
begin
  OpponentMinEdit.Text := IntToStr(OpponentMinUpDown.Position);
  OpponentIncEdit.Text := IntToStr(OpponentIncUpDown.Position);
  if EqualTimeCheckBox.Checked then
    begin
      YouMinEdit.Text := OpponentMinEdit.Text;
      YouIncEdit.Text := OpponentIncEdit.Text;
    end;
end;


procedure TGameOptionsForm.EqualTimeCheckBoxClick(Sender: TObject);
begin
  if EqualTimeCheckBox.Checked then
    begin
      OpponentMinEdit.Text := YouMinEdit.Text;
      OpponentIncEdit.Text := YouIncEdit.Text;
      OpponentUnlimitedCheckBox.Checked := YouUnlimitedCheckBox.Checked;
    end;
end;


procedure TGameOptionsForm.UnlimitedCheckBoxClick(Sender: TObject);
begin
  if EqualTimeCheckBox.Checked then
    begin
      YouUnlimitedCheckBox.Checked := TCheckBox(Sender).Checked;
      OpponentUnlimitedCheckBox.Checked := TCheckBox(Sender).Checked;
    end;

  YouMinEdit.Enabled := (not YouUnlimitedCheckBox.Checked);
  YouMinUpDown.Enabled := (not YouUnlimitedCheckBox.Checked);
  YouIncEdit.Enabled := (not YouUnlimitedCheckBox.Checked);
  YouIncUpDown.Enabled := (not YouUnlimitedCheckBox.Checked);

  OpponentMinEdit.Enabled := (not OpponentUnlimitedCheckBox.Checked);
  OpponentMinUpDown.Enabled := (not OpponentUnlimitedCheckBox.Checked);
  OpponentIncEdit.Enabled := (not OpponentUnlimitedCheckBox.Checked);
  OpponentIncUpDown.Enabled := (not OpponentUnlimitedCheckBox.Checked);
end;


procedure TGameOptionsForm.TrainingEnabledCheckBoxClick(Sender: TObject);
begin
  ExtBaseComboBox.Enabled := TrainingEnabledCheckBox.Checked;
  UsrBaseCheckBox.Enabled := TrainingEnabledCheckBox.Checked and (ExtBaseComboBox.ItemIndex <> 0);
  TakeBackCheckBox.Enabled := not TrainingEnabledCheckBox.Checked;
end;


procedure TGameOptionsForm.ExtBaseComboBoxChange(Sender: TObject);
begin
  UsrBaseCheckBox.Enabled := (ExtBaseComboBox.ItemIndex <> 0);
  if ExtBaseComboBox.ItemIndex = 0 then
    UsrBaseCheckBox.Checked := TRUE;
end;


procedure TGameOptionsForm.FormShow(Sender: TObject);
begin
  ExtBaseComboBoxChange(Sender);
end;


function TGameOptionsForm.GetModalID: TModalFormID;
begin
  Result := mfGameOptions;
end;


procedure TGameOptionsForm.FormCreate(Sender: TObject);
begin
  FLocalize;
end;


procedure TGameOptionsForm.FLocalize;
begin
  with TLocalizer.Instance do
  begin
    Caption := GetLabel(24);

    TimeControlGroupBox.Caption := GetLabel(25);
    EqualTimeCheckBox.Caption := GetLabel(26);
    YouGroupBox.Caption := GetLabel(27);
    OpponentGroupBox.Caption := GetLabel(28);
    YouUnlimitedCheckBox.Caption := GetLabel(29);
    OpponentUnlimitedCheckBox.Caption := GetLabel(29);
    YouMinLabel.Caption := GetLabel(30);
    OpponentMinLabel.Caption := GetLabel(30);
    YouIncLabel.Caption := GetLabel(31);
    OpponentIncLabel.Caption := GetLabel(31);

    TrainingModeGroupBox.Caption := GetLabel(32);
    TrainingEnabledCheckBox.Caption := GetLabel(33);
    ExtBaseLabel.Caption := GetLabel(34);
    UsrBaseCheckBox.Caption := GetLabel(35);

    GamePauseCheckBox.Caption := GetLabel(36);
    GameAdjournCheckBox.Caption := GetLabel(37);
    TakeBackCheckBox.Caption := GetLabel(38);
    AutoFlagCheckBox.Caption := GetLabel(39);

    OkButton.Caption := GetLabel(11);
    CancelButton.Caption := GetLabel(12);
  end;
end;


end.