1 | unit UFormPlayersStats;
|
---|
2 |
|
---|
3 | {$mode delphi}
|
---|
4 |
|
---|
5 | interface
|
---|
6 |
|
---|
7 | uses
|
---|
8 | Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,
|
---|
9 | Menus, ActnList, UGame, UListViewSort;
|
---|
10 |
|
---|
11 | type
|
---|
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 |
|
---|
34 | var
|
---|
35 | FormPlayersStats: TFormPlayersStats;
|
---|
36 |
|
---|
37 |
|
---|
38 | implementation
|
---|
39 |
|
---|
40 | uses
|
---|
41 | UCore, UPlayer;
|
---|
42 |
|
---|
43 | {$R *.lfm}
|
---|
44 |
|
---|
45 | { TFormPlayersStats }
|
---|
46 |
|
---|
47 | procedure TFormPlayersStats.ListView1Data(Sender: TObject; Item: TListItem);
|
---|
48 | begin
|
---|
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;
|
---|
61 | end;
|
---|
62 |
|
---|
63 | function TFormPlayersStats.ListViewSort1CompareItem(Item1, Item2: TObject
|
---|
64 | ): Integer;
|
---|
65 | begin
|
---|
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;
|
---|
80 | end;
|
---|
81 |
|
---|
82 | procedure TFormPlayersStats.ListViewSort1Filter(ListViewSort: TListViewSort);
|
---|
83 | var
|
---|
84 | I: Integer;
|
---|
85 | begin
|
---|
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;
|
---|
90 | end;
|
---|
91 |
|
---|
92 | procedure TFormPlayersStats.FormShow(Sender: TObject);
|
---|
93 | begin
|
---|
94 | Core.PersistentForm.Load(Self);
|
---|
95 | Core.CoolTranslator1.TranslateComponentRecursive(Self);
|
---|
96 | ReloadList;
|
---|
97 | end;
|
---|
98 |
|
---|
99 | procedure TFormPlayersStats.FormClose(Sender: TObject;
|
---|
100 | var CloseAction: TCloseAction);
|
---|
101 | begin
|
---|
102 | Core.PersistentForm.Save(Self);
|
---|
103 | end;
|
---|
104 |
|
---|
105 | procedure TFormPlayersStats.ASpectateExecute(Sender: TObject);
|
---|
106 | begin
|
---|
107 | if Assigned(ListView1.Selected) then
|
---|
108 | Core.Spectate(TPlayer(ListView1.Selected.Data));
|
---|
109 | end;
|
---|
110 |
|
---|
111 | procedure TFormPlayersStats.ReloadList;
|
---|
112 | begin
|
---|
113 | ListViewSort1.Refresh;
|
---|
114 | end;
|
---|
115 |
|
---|
116 | end.
|
---|
117 |
|
---|