source: tags/1.1.0/Forms/UFormMain.pas

Last change on this file was 40, checked in by chronos, 5 years ago
  • Fixed: Hide AI menu item in Release mode.
File size: 2.8 KB
Line 
1unit UFormMain;
2
3{$mode delphi}{$H+}
4
5interface
6
7uses
8 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, Menus,
9 ActnList, ExtCtrls, StdCtrls, UGame, UPersistentForm, UApplicationInfo;
10
11type
12
13 { TFormMain }
14
15 TFormMain = class(TForm)
16 MainMenu1: TMainMenu;
17 MenuItem1: TMenuItem;
18 MenuItem2: TMenuItem;
19 MenuItem3: TMenuItem;
20 MenuItem4: TMenuItem;
21 MenuItemMovesHistory: TMenuItem;
22 MenuItemTools: TMenuItem;
23 MenuItemNew: TMenuItem;
24 MenuItemExit: TMenuItem;
25 MenuItemHelp: TMenuItem;
26 MenuItemAbout: TMenuItem;
27 MenuItemGame: TMenuItem;
28 TimerDraw: TTimer;
29 procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
30 procedure FormCreate(Sender: TObject);
31 procedure FormDestroy(Sender: TObject);
32 procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
33 procedure FormPaint(Sender: TObject);
34 procedure FormShow(Sender: TObject);
35 procedure TimerDrawTimer(Sender: TObject);
36 private
37 RedrawPending: Boolean;
38 public
39 procedure Redraw;
40 procedure UpdateInterface;
41 end;
42
43var
44 FormMain: TFormMain;
45
46implementation
47
48{$R *.lfm}
49
50uses
51 UCore;
52
53{ TFormMain }
54
55procedure TFormMain.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
56begin
57 if Core.Game.Running and not Core.Game.Moving then begin
58 case Key of
59 37: Core.Game.MoveAllAndUpdate(drLeft, True);
60 38: Core.Game.MoveAllAndUpdate(drUp, True);
61 39: Core.Game.MoveAllAndUpdate(drRight, True);
62 40: Core.Game.MoveAllAndUpdate(drDown, True);
63 end;
64 end;
65end;
66
67procedure TFormMain.FormPaint(Sender: TObject);
68begin
69 Core.Game.Render(Canvas, Point(Width, Height - MainMenu1.Height));
70end;
71
72procedure TFormMain.FormClose(Sender: TObject; var CloseAction: TCloseAction);
73begin
74 Core.PersistentForm1.Save(Self);
75end;
76
77procedure TFormMain.FormCreate(Sender: TObject);
78begin
79end;
80
81procedure TFormMain.FormDestroy(Sender: TObject);
82begin
83end;
84
85procedure TFormMain.FormShow(Sender: TObject);
86begin
87 Core.PersistentForm1.RegistryContext := Core.ApplicationInfo1.GetRegistryContext;
88 Core.PersistentForm1.Load(Self);
89 UpdateInterface;
90 if Core.Game.Board.GetEmptyTilesCount > Core.Game.Board.Size.X * Core.Game.Board.Size.Y -
91 InitialTileCount then
92 Core.Game.New;
93end;
94
95procedure TFormMain.TimerDrawTimer(Sender: TObject);
96begin
97 if RedrawPending then begin
98 RedrawPending := False;
99 Repaint;
100 end;
101end;
102
103procedure TFormMain.Redraw;
104begin
105 RedrawPending := True;
106end;
107
108procedure TFormMain.UpdateInterface;
109var
110 I: Integer;
111 ToolsVisible: Boolean;
112begin
113 MenuItemMovesHistory.Visible := Core.Game.RecordHistory;
114 ToolsVisible := False;
115 for I := 0 to MenuItemTools.Count - 1 do
116 if MenuItemTools.Items[I].Visible then begin
117 ToolsVisible := True;
118 Break;
119 end;
120 MenuItemTools.Visible := ToolsVisible;
121end;
122
123end.
124
Note: See TracBrowser for help on using the repository browser.