source: tags/1.0.0/Forms/UFormMain.pas

Last change on this file was 20, checked in by chronos, 5 years ago
  • Added: Player can undo last move.
  • Modified: Optimized code of TGame.CanMove method.
File size: 2.1 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 MenuItemNew: TMenuItem;
20 MenuItemExit: TMenuItem;
21 MenuItemHelp: TMenuItem;
22 MenuItemAbout: TMenuItem;
23 MenuItemGame: TMenuItem;
24 TimerDraw: TTimer;
25 procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
26 procedure FormCreate(Sender: TObject);
27 procedure FormDestroy(Sender: TObject);
28 procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
29 procedure FormPaint(Sender: TObject);
30 procedure FormShow(Sender: TObject);
31 procedure TimerDrawTimer(Sender: TObject);
32 private
33 RedrawPending: Boolean;
34 public
35 procedure Redraw;
36 end;
37
38var
39 FormMain: TFormMain;
40
41implementation
42
43{$R *.lfm}
44
45uses
46 UCore;
47
48{ TFormMain }
49
50procedure TFormMain.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);
51begin
52 if Core.Game.Running and not Core.Game.Moving then begin
53 case Key of
54 37: Core.Game.MoveAll(drLeft);
55 38: Core.Game.MoveAll(drUp);
56 39: Core.Game.MoveAll(drRight);
57 40: Core.Game.MoveAll(drDown);
58 end;
59 end;
60end;
61
62procedure TFormMain.FormPaint(Sender: TObject);
63begin
64 Core.Game.Render(Canvas, Point(Width, Height - MainMenu1.Height));
65end;
66
67procedure TFormMain.FormClose(Sender: TObject; var CloseAction: TCloseAction);
68begin
69 Core.PersistentForm1.Save(Self);
70end;
71
72procedure TFormMain.FormCreate(Sender: TObject);
73begin
74end;
75
76procedure TFormMain.FormDestroy(Sender: TObject);
77begin
78end;
79
80procedure TFormMain.FormShow(Sender: TObject);
81begin
82 Core.PersistentForm1.RegistryContext := Core.ApplicationInfo1.GetRegistryContext;
83 Core.PersistentForm1.Load(Self);
84 if not Core.Game.Running then
85 Core.Game.New;
86end;
87
88procedure TFormMain.TimerDrawTimer(Sender: TObject);
89begin
90 if RedrawPending then begin
91 RedrawPending := False;
92 Repaint;
93 end;
94end;
95
96procedure TFormMain.Redraw;
97begin
98 RedrawPending := True;
99end;
100
101end.
102
Note: See TracBrowser for help on using the repository browser.