source: trunk/Forms/UFormPlayersStats.pas@ 236

Last change on this file since 236 was 231, checked in by chronos, 7 years ago
  • Modified: UGame unit was split to UPlayer, UMap and UClientGUI units to have better logical separation of game classes.
  • Modified: Drawing methods moved from TMap and TPlayerMap to TClientGUI. Generic TClient class and TComputer classes don't need have any drawing support.
File size: 3.4 KB
Line 
1unit UFormPlayersStats;
2
3{$mode delphi}
4
5interface
6
7uses
8 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,
9 Menus, ActnList, UGame, UListViewSort;
10
11type
12
13 { TFormPlayersStats }
14
15 TFormPlayersStats = class(TForm)
16 ASpectate: TAction;
17 ActionList1: TActionList;
18 ListView1: TListView;
19 ListViewSort1: TListViewSort;
20 MenuItem1: TMenuItem;
21 PopupMenu1: TPopupMenu;
22 procedure ASpectateExecute(Sender: TObject);
23 procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
24 procedure FormShow(Sender: TObject);
25 procedure ListView1Data(Sender: TObject; Item: TListItem);
26 function ListViewSort1CompareItem(Item1, Item2: TObject): Integer;
27 procedure ListViewSort1Filter(ListViewSort: TListViewSort);
28 private
29
30 public
31 procedure ReloadList;
32 end;
33
34var
35 FormPlayersStats: TFormPlayersStats;
36
37
38implementation
39
40uses
41 UCore, UPlayer;
42
43{$R *.lfm}
44
45{ TFormPlayersStats }
46
47procedure TFormPlayersStats.ListView1Data(Sender: TObject; Item: TListItem);
48begin
49 with Core.Game do
50 if Item.Index < ListViewSort1.List.Count then
51 with TPlayer(ListViewSort1.List[Item.Index]) do begin
52 Item.Caption := Name;
53 Item.Data := ListViewSort1.List[Item.Index];
54 Item.SubItems.Add(PlayerModeText[Mode]);
55 Item.SubItems.Add(IntToStr(TotalCells));
56 Item.SubItems.Add(IntToStr(TotalDiscovered));
57 Item.SubItems.Add(IntToStr(TotalCities));
58 Item.SubItems.Add(IntToStr(TotalUnits));
59 Item.SubItems.Add(IntToStr(TotalWinObjectiveCells));
60 end;
61end;
62
63function TFormPlayersStats.ListViewSort1CompareItem(Item1, Item2: TObject
64 ): Integer;
65begin
66 Result := 0;
67 if Assigned(Item1) and Assigned(Item2) and (ListViewSort1.Order <> soNone) then begin
68 with ListViewSort1 do
69 case Column of
70 0: Result := CompareString(TPlayer(Item1).Name, TPlayer(Item2).Name);
71 1: Result := CompareString(PlayerModeText[TPlayer(Item1).Mode], PlayerModeText[TPlayer(Item2).Mode]);
72 2: Result := CompareInteger(TPlayer(Item1).TotalCells, TPlayer(Item2).TotalCells);
73 3: Result := CompareInteger(TPlayer(Item1).TotalDiscovered, TPlayer(Item2).TotalDiscovered);
74 4: Result := CompareInteger(TPlayer(Item1).TotalCities, TPlayer(Item2).TotalCities);
75 5: Result := CompareInteger(TPlayer(Item1).TotalUnits, TPlayer(Item2).TotalUnits);
76 6: Result := CompareInteger(TPlayer(Item1).TotalWinObjectiveCells, TPlayer(Item2).TotalWinObjectiveCells);
77 end;
78 if ListViewSort1.Order = soDown then Result := -Result;
79 end else Result := 0;
80end;
81
82procedure TFormPlayersStats.ListViewSort1Filter(ListViewSort: TListViewSort);
83var
84 I: Integer;
85begin
86 ListViewSort1.List.Clear;
87 for I := 0 to Core.Game.Players.Count - 1 do begin
88 ListViewSort1.List.Add(Core.Game.Players[I]);
89 end;
90end;
91
92procedure TFormPlayersStats.FormShow(Sender: TObject);
93begin
94 Core.PersistentForm.Load(Self);
95 Core.CoolTranslator1.TranslateComponentRecursive(Self);
96 ReloadList;
97end;
98
99procedure TFormPlayersStats.FormClose(Sender: TObject;
100 var CloseAction: TCloseAction);
101begin
102 Core.PersistentForm.Save(Self);
103end;
104
105procedure TFormPlayersStats.ASpectateExecute(Sender: TObject);
106begin
107 if Assigned(ListView1.Selected) then
108 Core.Spectate(TPlayer(ListView1.Selected.Data));
109end;
110
111procedure TFormPlayersStats.ReloadList;
112begin
113 ListViewSort1.Refresh;
114end;
115
116end.
117
Note: See TracBrowser for help on using the repository browser.