Subversion Repositories spacemission

Rev

Rev 79 | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. unit GamCheat;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   StdCtrls, ExtCtrls, ShellAPI{$IF CompilerVersion >= 23.0}, System.UITypes{$IFEND};
  8.  
  9. type
  10.   TCheatForm = class(TForm)                                                                    
  11.     Label1: TLabel;
  12.     CheatEdit: TEdit;
  13.     OKBtn: TButton;
  14.     AbbBtn: TButton;
  15.     GroupBox1: TGroupBox;
  16.     CheatBox: TListBox;
  17.     Label2: TLabel;
  18.     Label3: TLabel;
  19.     procedure AbbBtnClick(Sender: TObject);
  20.     procedure OKBtnClick(Sender: TObject);
  21.     procedure FormShow(Sender: TObject);
  22.     procedure FormHide(Sender: TObject);
  23.     procedure CheatEditKeyPress(Sender: TObject; var Key: Char);
  24.     procedure Label2Click(Sender: TObject);
  25.     procedure Label3Click(Sender: TObject);
  26.   public
  27.     procedure SearchCheats;
  28.   end;
  29.  
  30. var
  31.   CheatForm: TCheatForm;
  32.  
  33. implementation
  34.  
  35. uses
  36.   GamMain, Global;
  37.  
  38. {$R *.DFM}
  39.  
  40. procedure TCheatForm.AbbBtnClick(Sender: TObject);
  41. begin
  42.   close;
  43. end;
  44.  
  45. procedure TCheatForm.SearchCheats;
  46. begin
  47.   Cheatbox.Items.Clear;
  48.   if ctInfiniteLives in mainform.FCheats then Cheatbox.Items.Append(Cheat1Text);
  49. end;
  50.  
  51. procedure TCheatForm.OKBtnClick(Sender: TObject);
  52. resourcestring
  53.   SCheatUnlocked = 'Dieser Cheat wurde freigeschaltet!';
  54.   SCheckAlreadyUnlocked = 'Dieser Cheat wurde bereits freigeschaltet!';
  55.   SNoCheat = 'Dies ist kein offizieller Cheat!';
  56. var
  57.   temp: string;
  58.   i, j: integer;
  59. begin
  60.   temp := '';
  61.   j := 0;
  62.  
  63.   if CheatEdit.text = '' then
  64.   begin
  65.     Close;
  66.     Exit;
  67.   end;
  68.  
  69.   for i := 1 to length(CheatEdit.text) do
  70.   begin
  71.     inc(j);
  72.     temp := temp + chr(byte(copy(CheatEdit.text, i, 1)[1]) xor j);
  73.   end;
  74.   {$REGION 'Check and unlock Cheat 1 (Infinite lives)'}
  75.   if lowercase(temp) = lowercase(Cheat1) then
  76.   begin
  77.     if ctInfiniteLives in mainform.FCheats then
  78.       showmessage(SCheckAlreadyUnlocked)
  79.     else
  80.     begin
  81.       showmessage(SCheatUnlocked);
  82.       Include(mainform.FCheats, ctInfiniteLives);
  83.       SearchCheats;
  84.     end;
  85.     close;
  86.   end
  87.   {$ENDREGION}
  88.   else
  89.   begin
  90.     showmessage(SNoCheat);
  91.     CheatEdit.text := '';
  92.     CheatEdit.setfocus;
  93.   end;
  94. end;
  95.  
  96. procedure TCheatForm.FormShow(Sender: TObject);
  97. begin
  98.   mainform.dxtimer.enabled := false;
  99.   SearchCheats;
  100.   CheatEdit.text := '';
  101.   CheatEdit.setfocus;
  102. end;
  103.  
  104. procedure TCheatForm.FormHide(Sender: TObject);
  105. begin
  106.   if not mainform.gamepause.checked then mainform.dxtimer.enabled := true;
  107. end;
  108.  
  109. procedure TCheatForm.CheatEditKeyPress(Sender: TObject; var Key: Char);
  110. begin
  111.   if key = #13 then
  112.   begin
  113.     // key := #0;
  114.     OKBtn.click;
  115.   end;
  116. end;
  117.  
  118. procedure TCheatForm.Label2Click(Sender: TObject);
  119. resourcestring
  120.   SDisableCheat = 'Diesen Cheat wirklich deaktivieren?';
  121.   SCheatDisabled = 'Dieser Cheat wurde deaktiviert!';
  122. begin
  123.   {$REGION 'Disable Cheat 1 (Infinite lives)'}
  124.   if not CheatBox.items.IndexOf(Cheat1Text) = -1 then
  125.   begin
  126.     if CheatBox.Selected[CheatBox.items.IndexOf(Cheat1Text)] then
  127.     begin
  128.       if MessageDlg(SDisableCheat, mtConfirmation, mbYesNoCancel, 0) = mrYes then
  129.       begin
  130.         Exclude(mainform.FCheats, ctInfiniteLives);
  131.         showmessage(SCheatDisabled);
  132.         SearchCheats;
  133.       end;
  134.     end;
  135.   end;
  136.   {$ENDREGION}
  137. end;
  138.  
  139. procedure TCheatForm.Label3Click(Sender: TObject);
  140. begin
  141.   shellexecute(handle, 'open', pchar('mailto:daniel-marschall@viathinksoft.de?subject=Cheats für SpaceMission '+ProgramVersion), '', '', 1); // do not localize
  142. end;
  143.  
  144. end.
  145.  
  146.