Advertisement
MaksNew

Untitled

May 16th, 2021
532
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 4.24 KB | None | 0 0
  1. Unit MainGameMenu;
  2.  
  3. Interface
  4.  
  5. Uses
  6.   Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  7.   Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.Imaging.GIFImg, Generics.Collections, MMSystem,
  8.   Vcl.StdCtrls;
  9.  
  10. Type
  11.   TMainMenu = class(TForm)
  12.     BackGif: TImage;
  13.     ProjectName: TLabel;
  14.     Play: TButton;
  15.     About: TButton;
  16.     Store: TButton;
  17.     ExitButton: TButton;
  18.     SongsTimer: TTimer;
  19.     Procedure FormShow(Sender: TObject);
  20.     Procedure FormCreate(Sender: TObject);
  21.     Procedure PlayClick(Sender: TObject);
  22.     Procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  23.     Procedure ExitButtonClick(Sender: TObject);
  24.     Procedure AboutClick(Sender: TObject);
  25.     Procedure StoreClick(Sender: TObject);
  26.     Procedure SongsTimerTimer(Sender: TObject);
  27.     Procedure FormClose(Sender: TObject; var Action: TCloseAction);
  28.   Private
  29.     { Private declarations }
  30.   Public
  31.     { Public declarations }
  32.   End;
  33.  
  34. Var
  35.   MainMenu: TMainMenu;
  36.   Songs: TList<String>;
  37.  
  38. Implementation
  39. Uses Game, GameShop, Loading;
  40. {$R *.dfm}
  41.  
  42. Procedure SetCurrentSkins();
  43. Begin
  44.     GameForm.Car.Picture := Cars[CurrentCar].Skin.Picture;
  45.     GameForm.Road.Picture := Roads[CurrentRoad].Skin.Picture;
  46.     GameForm.BufRoad.Picture := Roads[CurrentRoad].Skin.Picture;
  47. End;
  48.  
  49. Procedure TMainMenu.PlayClick(Sender: TObject);
  50. Begin
  51.     StoreForm.Close;
  52.     MainMenu.Visible := False;
  53.     SongsTimer.Enabled := False;
  54.     CloseMenu := True;
  55.     GameForm.Show;
  56.     GameForm.TryAgainButton.Click;
  57.     GameForm.MainTimer.Enabled := True;
  58.     GameForm.IncOncSpeedTimer.Enabled := True;
  59.     sndPlaySound('Sound\FASTER.wav',SND_ASYNC or SND_LOOP);
  60.     SetCurrentSkins;
  61. End;
  62.  
  63. Procedure TMainMenu.SongsTimerTimer(Sender: TObject);
  64. Begin
  65.     PlaySound(PChar(Songs[Random(Songs.Count)]), 0, SND_ASYNC);
  66. End;
  67.  
  68. Procedure TMainMenu.StoreClick(Sender: TObject);
  69. Begin
  70.     StoreForm.Show;
  71.     StoreForm.UnitSpinEdit.Value := 0;
  72. End;
  73.  
  74. Procedure TMainMenu.AboutClick(Sender: TObject);
  75. Begin
  76.     StoreForm.Close;
  77.     MessageDlg('Управление:'
  78.     +#13#10+'Чтобы поехать вверх, нажмите UpArrow.'
  79.     +#13#10+'Чтобы поехать вниз, нажмите DownArrow.'
  80.     +#13#10+'Чтобы поехать вправо, нажмите RightArrow.'
  81.     +#13#10+'Чтобы поехать влево, нажмите LeftArrow .'
  82.     +#13#10+'Чтобы поставить игру на паузу  нажмите клавишу Esc.'
  83.     +#13#10+'Чтобы возобновить игровой процесс, нажмите клавишу Enter.'
  84.     +#13#10+'В разделе "Магазин" Вы можете выбрать машинку и карту, на которой будете ехать.'
  85.     +#13#10+#13#10+'Разработал: Михальцов Максим гр.051007 в рамках курсового проекта.', mtInformation, [mbOK], 0);
  86. End;
  87.  
  88. Procedure TMainMenu.ExitButtonClick(Sender: TObject);
  89. Begin
  90.     MainMenu.Close;
  91. End;
  92.  
  93. Procedure TMainMenu.FormClose(Sender: TObject; var Action: TCloseAction);
  94. Begin
  95.     SaveProgressData();
  96.     SaveCurrentSkinsData();
  97.     SaveStoreData('cars_storedata.bin', Cars);
  98.     SaveStoreData('roads_storedata.bin', Roads);
  99. End;
  100.  
  101. Procedure TMainMenu.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
  102. Var
  103.     Choise: Integer;
  104. Begin
  105.     If MainMenu.Visible then
  106.     Begin
  107.         Choise := Messagedlg('Выйти из игры?', mtinformation,
  108.             [mbYes, mbNo], 0);
  109.         Case Choise of
  110.             mrYes: CanClose:= True;
  111.             mrNo: CanClose:= False;
  112.         End;
  113.     End;
  114. End;
  115.  
  116. Procedure TMainMenu.FormCreate(Sender: TObject);
  117. Begin
  118.  
  119.     MainMenu.DoubleBuffered := True;
  120.     try
  121.         LoadSounds();
  122.         LoadTextures();
  123.         LoadData();
  124.     except
  125.         MessageDlg('Игрвоые файлы были повреждены. Переустановите игру и попробуйте ещё раз.', mtError, [mbOK], 0);
  126.         Application.Terminate;
  127.     end;
  128. End;
  129.  
  130. Procedure TMainMenu.FormShow(Sender: TObject);
  131. Begin
  132.     (BackGif.Picture.Graphic as TGIFImage).Animate := true;
  133.     PlaySound(PChar(Songs[Random(Songs.Count)]), 0, SND_ASYNC);
  134. End;
  135.  
  136. End.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement