newecformunit.pas 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  1. unit newecformunit;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, ExtCtrls,
  6. Buttons, StdCtrls, database;
  7. const
  8. EC_SELECTION_CANCELLED = 0;
  9. type
  10. { TNewECForm }
  11. TNewECForm = class(TForm)
  12. ActorGroupBox: TGroupBox;
  13. AudioAndVideoGroupBox: TGroupBox;
  14. BreakLoopBitBtn: TBitBtn;
  15. TintPictureBitBtn: TBitBtn;
  16. ShowPictureBitBtn: TBitBtn;
  17. MovePictureBitBtn: TBitBtn;
  18. ErasePictureBitBtn: TBitBtn;
  19. RotatePictureBitBtn: TBitBtn;
  20. PictureAndWeatherGroupBox: TGroupBox;
  21. SetWeatherEffectBitBtn: TBitBtn;
  22. TintScreenBitBtn: TBitBtn;
  23. CallCommonEventBitBtn: TBitBtn;
  24. ShakeScreenBitBtn: TBitBtn;
  25. ChangeArmoursBitBtn: TBitBtn;
  26. ChangeClassBitBtn: TBitBtn;
  27. ChangeEquipmentBitBtn: TBitBtn;
  28. PlayMovieBitBtn: TBitBtn;
  29. ChangeExpBitBtn: TBitBtn;
  30. FadeoutBgSoundsBitBtn: TBitBtn;
  31. ChangeGoldBitBtn: TBitBtn;
  32. WaitBitBtn: TBitBtn;
  33. ChangeHpBitBtn: TBitBtn;
  34. PlayBgMusicBitBtn: TBitBtn;
  35. ChangeItemsBitBtn: TBitBtn;
  36. ChangeLevelBitBtn: TBitBtn;
  37. PlayMusicEffectBitBtn: TBitBtn;
  38. ChangeMpBitBtn: TBitBtn;
  39. FadeoutBgMusicBitBtn: TBitBtn;
  40. ChangeNameBitBtn: TBitBtn;
  41. ChangeNicknameBitBtn: TBitBtn;
  42. ChangeParamBitBtn: TBitBtn;
  43. PlaySoundEffectBitBtn: TBitBtn;
  44. ChangePartyMembersBitBtn: TBitBtn;
  45. ChangeProfileBitBtn: TBitBtn;
  46. ChangeSkillBitBtn: TBitBtn;
  47. StopSoundEffectsBitBtn: TBitBtn;
  48. ChangeStateBitBtn: TBitBtn;
  49. RestoreSavedMusicBitBtn: TBitBtn;
  50. ChangeTpBitBtn: TBitBtn;
  51. SaveBgMusicBitBtn: TBitBtn;
  52. ChangeWeaponsBitBtn: TBitBtn;
  53. CommentBitBtn: TBitBtn;
  54. ConditionalBranchBitBtn: TBitBtn;
  55. FadeoutScreenBitBtn: TBitBtn;
  56. ControlTimerBitBtn: TBitBtn;
  57. ShowAnimationBitBtn: TBitBtn;
  58. EcPage1Panel: TPanel;
  59. EcPage2Panel: TPanel;
  60. EcPage2ScrollBox: TScrollBox;
  61. EndEventProcessingBitBtn: TBitBtn;
  62. FlashScreenBitBtn: TBitBtn;
  63. FlowControlGroupBox: TGroupBox;
  64. FlowControlGroupBox1: TGroupBox;
  65. FullRecoveryBitBtn: TBitBtn;
  66. PlayBgSoundBitBtn: TBitBtn;
  67. GameDataGroupBox: TGroupBox;
  68. GameDataGroupBox1: TGroupBox;
  69. GotoBitBtn: TBitBtn;
  70. InputNumberBitBtn: TBitBtn;
  71. SetEventLocationBitBtn: TBitBtn;
  72. LabelBitBtn: TBitBtn;
  73. LoopBitBtn: TBitBtn;
  74. FadeinScreenBitBtn: TBitBtn;
  75. MessageGroupBox: TGroupBox;
  76. MovementGroupBox: TGroupBox;
  77. Page1Col1Panel: TPanel;
  78. Page2Col1Panel: TPanel;
  79. Page1Col2Panel: TPanel;
  80. Page1Col2Panel1: TPanel;
  81. PartyGroupBox: TGroupBox;
  82. EcPage1ScrollBox: TScrollBox;
  83. WaitGroupBox: TGroupBox;
  84. ScrollTextBitBtn: TBitBtn;
  85. SetMovementRouteBitBtn: TBitBtn;
  86. SelectItemBitBtn: TBitBtn;
  87. ScrollMapBitBtn: TBitBtn;
  88. GetOnOffVehicleBitBtn: TBitBtn;
  89. SetSelfSwitchBitBtn: TBitBtn;
  90. GatherFollowersBitBtn: TBitBtn;
  91. SetSwitchesBitBtn: TBitBtn;
  92. ChangePlayerVisibilityBitBtn: TBitBtn;
  93. SetVariablesBitBtn: TBitBtn;
  94. ChangeFollowerVisibilityBitBtn: TBitBtn;
  95. ShowBalloonIconBitBtn: TBitBtn;
  96. EraseCurrentEventIconBitBtn: TBitBtn;
  97. ShowChoiceBitBtn: TBitBtn;
  98. CancelBitBtn: TBitBtn;
  99. ECPageControl: TPageControl;
  100. ECPage1TabSheet: TTabSheet;
  101. ECPage2TabSheet: TTabSheet;
  102. ECPage3TabSheet: TTabSheet;
  103. CancelPanel: TPanel;
  104. SetVehicleLocationBitBtn: TBitBtn;
  105. ShowMessageBitBtn: TBitBtn;
  106. TransferPlayerBitBtn: TBitBtn;
  107. procedure CommandBitBtnClick(Sender: TObject);
  108. procedure ECPageControlChange(Sender: TObject);
  109. procedure FormCreate(Sender: TObject);
  110. procedure FormResize(Sender: TObject);
  111. private
  112. procedure UpdateCaptions;
  113. procedure UpdateChangeGoldName;
  114. procedure UpdateChangePointsName(Button: TBitBtn; FormatString, DefaultPoints: String; PointType: Integer);
  115. procedure ResizeButtons;
  116. public
  117. SelectedCode: Integer;
  118. Db: TDatabase;
  119. procedure SetDatabase(ADb: TDatabase);
  120. function ShowSelection: Integer;
  121. function ShowModal: Integer; override;
  122. end;
  123. var
  124. NewECForm: TNewECForm;
  125. resourcestring
  126. rsChangeGoldEc = 'Change %s (currency)...';
  127. rsChangeHpEc = 'Change %s (hit points)...';
  128. rsChangeMpEc = 'Change %s (magic points)...';
  129. rsChangeTpEc = 'Change %s (technique points)...';
  130. rsHp = 'HP';
  131. rsMp = 'MP';
  132. rsTp = 'TP';
  133. implementation
  134. {$R *.lfm}
  135. uses
  136. constants;
  137. { TNewECForm }
  138. procedure TNewECForm.CommandBitBtnClick(Sender: TObject);
  139. begin
  140. SelectedCode := (Sender as TComponent).Tag;
  141. ModalResult := mrOK
  142. end;
  143. procedure TNewECForm.ECPageControlChange(Sender: TObject);
  144. begin
  145. end;
  146. procedure TNewECForm.FormCreate(Sender: TObject);
  147. begin
  148. UpdateCaptions;
  149. end;
  150. procedure TNewECForm.FormResize(Sender: TObject);
  151. begin
  152. ResizeButtons
  153. end;
  154. procedure TNewECForm.UpdateCaptions;
  155. begin
  156. UpdateChangeGoldName;
  157. UpdateChangePointsName(ChangeHpBitBtn, rsChangeHpEc, rsHp, 1);
  158. UpdateChangePointsName(ChangeMpBitBtn, rsChangeMpEc, rsMp, 2);
  159. UpdateChangePointsName(ChangeTpBitBtn, rsChangeTpEc, rsTp, 3);
  160. end;
  161. procedure TNewECForm.UpdateChangeGoldName;
  162. var
  163. Currency: String = '';
  164. begin
  165. if Db <> nil then
  166. Currency := Db.System.Strings['currencyUnit'];
  167. if Trim(Currency) = '' then
  168. Currency := rsCurrency;
  169. ChangeGoldBitBtn.Caption := rsChangeGoldEc.Format([Currency]);
  170. end;
  171. procedure TNewECForm.UpdateChangePointsName(Button: TBitBtn;
  172. FormatString, DefaultPoints: String; PointType: Integer);
  173. var
  174. PointNameIndex: Integer;
  175. PointName: String;
  176. begin
  177. PointNameIndex := PointType * 2;
  178. if Db <> nil then
  179. PointName := Db.System.Objects['terms'].Arrays['basic'].Strings[PointNameIndex];
  180. if Trim(PointName) = '' then
  181. PointName := DefaultPoints;
  182. Button.Caption := FormatString.Format([PointName]);
  183. end;
  184. procedure TNewECForm.ResizeButtons;
  185. procedure ResizeSingleColumn(Column: TPanel; ScrollBox: TScrollBox);
  186. var
  187. NewWidth: Integer;
  188. I: Integer;
  189. GroupBox: TComponent;
  190. begin
  191. NewWidth := (ScrollBox.Width - Scale96ToForm(8) - ScrollBox.HorzScrollBar.Size) div 2;
  192. Column.Width := NewWidth;
  193. for I := 0 to Column.ComponentCount -1 do begin
  194. GroupBox := Column.Components[I];
  195. if GroupBox is TGroupBox then
  196. (GroupBox as TGroupBox).Width := NewWidth;
  197. end;
  198. end;
  199. begin
  200. ResizeSingleColumn(Page1Col1Panel, EcPage1ScrollBox);
  201. ResizeSingleColumn(Page1Col2Panel, EcPage1ScrollBox);
  202. end;
  203. procedure TNewECForm.SetDatabase(ADb: TDatabase);
  204. begin
  205. Db := ADb;
  206. UpdateCaptions
  207. end;
  208. function TNewECForm.ShowSelection: Integer;
  209. begin
  210. ShowModal;
  211. if ModalResult = mrOK then
  212. ShowSelection := SelectedCode
  213. else
  214. ShowSelection := EC_SELECTION_CANCELLED;
  215. end;
  216. function TNewECForm.ShowModal: Integer;
  217. begin
  218. ResizeButtons;
  219. ShowModal := inherited ShowModal;
  220. end;
  221. end.