Changeset 18 for trunk/UFormNew.pas


Ignore:
Timestamp:
Feb 26, 2014, 9:45:23 PM (11 years ago)
Author:
chronos
Message:
  • Add: Player start units setting.
  • Add: Allow add and remove players in new game dialog.
  • Fixed: Do not allow move from to same cell.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/UFormNew.pas

    r15 r18  
    2424    SpinEditMapSizeX: TSpinEdit;
    2525    SpinEditMapSizeY: TSpinEdit;
     26    procedure ButtonPlayerAddClick(Sender: TObject);
     27    procedure ButtonPlayerRemoveClick(Sender: TObject);
     28    procedure FormCreate(Sender: TObject);
     29    procedure FormDestroy(Sender: TObject);
     30    procedure FormShow(Sender: TObject);
     31    procedure ListView1Data(Sender: TObject; Item: TListItem);
     32    procedure ListView1SelectItem(Sender: TObject; Item: TListItem;
     33      Selected: Boolean);
    2634  private
    27     { private declarations }
     35    Players: TPlayers;
    2836  public
     37    procedure ReloadView;
    2938    procedure Load(Game: TGame);
    3039    procedure Save(Game: TGame);
     
    4049{ TFormNew }
    4150
     51procedure TFormNew.ListView1Data(Sender: TObject; Item: TListItem);
     52begin
     53  if (Item.Index >= 0) and (Item.Index < Players.Count) then
     54  with TPlayer(Players[Item.Index]) do begin
     55    Item.Caption := Name;
     56    Item.Data := Players[Item.Index];
     57    Item.SubItems.Add(PlayerModeText[Mode]);
     58    Item.SubItems.Add(IntToStr(Color));
     59    Item.SubItems.Add(IntToStr(StartUnits));
     60  end;
     61end;
     62
     63procedure TFormNew.ListView1SelectItem(Sender: TObject; Item: TListItem;
     64  Selected: Boolean);
     65begin
     66  ReloadView;
     67end;
     68
     69procedure TFormNew.ReloadView;
     70begin
     71  ListView1.Items.Count := Players.Count;
     72  ListView1.Refresh;
     73  ButtonPlayerRemove.Enabled := Assigned(ListView1.Selected);
     74end;
     75
     76procedure TFormNew.FormShow(Sender: TObject);
     77begin
     78  ReloadView;
     79end;
     80
     81procedure TFormNew.FormCreate(Sender: TObject);
     82begin
     83  Players := TPlayers.Create;
     84end;
     85
     86procedure TFormNew.ButtonPlayerRemoveClick(Sender: TObject);
     87begin
     88  if Assigned(ListView1.Selected) then
     89    Players.Remove(ListView1.Selected.Data);
     90  ReloadView;
     91end;
     92
     93procedure TFormNew.ButtonPlayerAddClick(Sender: TObject);
     94var
     95  NewPlayer: TPlayer;
     96begin
     97  NewPlayer := TPlayer.Create;
     98  NewPlayer.Name := 'Player x';
     99  NewPlayer.Color := clYellow;
     100  Players.Add(NewPlayer);
     101  ReloadView;
     102end;
     103
     104procedure TFormNew.FormDestroy(Sender: TObject);
     105begin
     106  Players.Free;
     107end;
     108
    42109procedure TFormNew.Load(Game: TGame);
    43110var
     
    46113begin
    47114  CheckBoxVoid.Checked := Game.VoidEnabled;
    48   ListView1.Items.Clear;
    49   for I := 0 to Game.Players.Count - 1 do
    50   with TPlayer(Game.Players[I]) do begin
    51     NewItem := ListView1.Items.Add;
    52     NewItem.Caption := Name;
    53     NewItem.SubItems.Add(PlayerModeText[Mode]);
     115  for I := 0 to Players.Count - 1 do
     116    TPlayer(Players[I]).Free;
     117  Players.Count := Game.Players.Count;
     118  for I := 0 to Game.Players.Count - 1 do begin
     119    Players[I] := TPlayer.Create;
     120    TPlayer(Players[I]).Assign(TPlayer(Game.Players[I]));
    54121  end;
    55122  SpinEditMapSizeX.Value := Game.Map.Size.X;
Note: See TracChangeset for help on using the changeset viewer.