Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls, ExtCtrls, BottleDef, Spin,
CPCConfigTreeView, ColorSettingFrame, BottleChainListFrame, SakuraSeekerInstance,
- ImgList, StrListEditor, SppList, Plugins, Clipbrd, SsPlayTime, StrUtils;
+ ImgList, StrListEditor, SppList, Plugins, Clipbrd, SsPlayTime, StrUtils,
+ SpecialCharEditor;
type
TfrmSetting = class(TForm)
grpPlayTimeParams: TGroupBox;
lblPlayTimeProfile: TLabel;
cbxPlayTimeProfile: TComboBox;
- spnCostDBWhiteSpace: TSpinEdit;
- spnCostWhiteSpace: TSpinEdit;
spnCostDBChar: TSpinEdit;
spnCostWait: TSpinEdit;
spnCostSurface: TSpinEdit;
lblCostSurface: TLabel;
lblCostChar: TLabel;
lblCostDBChar: TLabel;
- lblCostWhiteSpace: TLabel;
- lblCostDBWhiteSpace: TLabel;
lblCostQuickChar: TLabel;
btnSavePlayTimeProfile: TButton;
+ lvwCostSpecials: TListView;
+ lblCostSpecials: TLabel;
+ btnPlaySpecialAdd: TButton;
+ btnPlaySpecialDelete: TButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure edtProxyPortKeyPress(Sender: TObject; var Key: Char);
procedure ctvBottleNodeChecked(Sender: TObject;
procedure cbxPlayTimeProfileChange(Sender: TObject);
procedure btnSavePlayTimeProfileClick(Sender: TObject);
procedure spnCostWaitChange(Sender: TObject);
+ procedure btnPlaySpecialAddClick(Sender: TObject);
+ procedure btnPlaySpecialDeleteClick(Sender: TObject);
+ procedure lvwCostSpecialsDblClick(Sender: TObject);
private
{ Private \90é\8c¾ }
FOldLUID: String;
FSpinUpdateFlag: boolean;
procedure LoadPlayTimeProfiles;
- procedure PlayTimeParamsToControl(Params: TSsPlayTimeParams);
- procedure ControlToPlayTimeParams(Params: TSsPlayTimeParams);
+ procedure PlayTimeParamsToSpinControl(Params: TSsPlayTimeParams);
+ procedure SpinControlToPlayTimeParams(Params: TSsPlayTimeParams);
+ procedure UpdateSpecialChars;
public
{ Public \90é\8c¾ }
procedure Execute;
cbxPlayTimeProfile.Items.Add(Pref.PlayTimeParams.ProfileName);
cbxPlayTimeProfile.ItemIndex := 0;
LoadPlayTimeProfiles;
- PlayTimeParamsToControl(Pref.PlayTimeParams);
+ PlayTimeParamsToSpinControl(Pref.PlayTimeParams);
+ UpdateSpecialChars;
//
cbxAutoStart.Checked := Pref.AutoStart;
rgpTabPosition.ItemIndex := Ord(Pref.TabPosition);
end;
//
Pref.PlayTimeParams.ProfileName := cbxPlayTimeProfile.Text;
- ControlToPlayTimeParams(Pref.PlayTimeParams);
+ SpinControlToPlayTimeParams(Pref.PlayTimeParams);
//
Pref.AutoStart := cbxAutoStart.Checked;
Pref.TabPosition := TTabPosition(rgpTabPosition.ItemIndex);
end;
end;
-procedure TfrmSetting.PlayTimeParamsToControl(Params: TSsPlayTimeParams);
+procedure TfrmSetting.PlayTimeParamsToSpinControl(Params: TSsPlayTimeParams);
begin
FSpinUpdateFlag := true;
with Params do
spnCostSurface.Value := CostSurface;
spnCostChar.Value := CostChar;
spnCostDBChar.Value := CostDBChar;
- spnCostWhiteSpace.Value := CostWhiteSpace;
- spnCostDBWhiteSpace.Value := CostDBWhiteSpace;
spnCostQuickChar.Value := CostQuickChar;
+ lvwCostSpecials.Items.Clear;
end;
FSpinUpdateFlag := false;
end;
-procedure TfrmSetting.ControlToPlayTimeParams(Params: TSsPlayTimeParams);
+procedure TfrmSetting.SpinControlToPlayTimeParams(Params: TSsPlayTimeParams);
begin
with Params do
begin
CostSurface := spnCostSurface.Value;
CostChar := spnCostChar.Value;
CostDBChar := spnCostDBChar.Value;
- CostWhiteSpace := spnCostWhiteSpace.Value;
- CostDBWhiteSpace := spnCostDBWhiteSpace.Value;
CostQuickChar := spnCostQuickChar.Value;
end;
end;
Path := ExtractFilePath(Application.ExeName) + 'playtime\';
Strs.LoadFromFile(Path + ProName + '.txt');
Params := StringToComponent(Strs.Text) as TSsPlayTimeParams;
- PlayTimeParamsToControl(Params);
+ try
+ PlayTimeParamsToSpinControl(Params);
+ Pref.PlayTimeParams.Assign(Params);
+ UpdateSpecialChars;
+ finally
+ Params.Free;
+ end;
finally
Strs.Free;
end;
var
ProfileName, Path, FileName: String;
Strs: TStringList;
- TmpParams: TSsPlayTimeParams;
begin
ProfileName := cbxPlayTimeProfile.Text;
if InputQuery('\83v\83\8d\83t\83@\83C\83\8b\96¼', '\95Û\91¶\82·\82é\83v\83\8d\83t\83@\83C\83\8b\96¼', ProfileName) then
Exit;
Strs := TStringList.Create;
try
- TmpParams := TSsPlayTimeParams.Create(nil);
- try
- ControlToPlayTimeParams(TmpParams);
- TmpParams.ProfileName := ProfileName;
- Strs.Text := ComponentToString(TmpParams);
- Strs.SaveToFile(FileName);
- finally
- TmpParams.Free;
- end;
+ SpinControlToPlayTimeParams(Pref.PlayTimeParams);
+ Pref.PlayTimeParams.ProfileName := ProfileName;
+ Strs.Text := ComponentToString(Pref.PlayTimeParams);
+ Strs.SaveToFile(FileName);
finally
Strs.Free;
end;
end;
end;
+procedure TfrmSetting.btnPlaySpecialAddClick(Sender: TObject);
+var
+ Item: TListItem;
+ SPChar: TSsPlayTimeSpecialChar;
+begin
+ Application.CreateForm(TfrmSpecialCharEditor, frmSpecialCharEditor);
+ try
+ with frmSpecialCharEditor do
+ begin
+ SpecialChar := '';
+ Cost := 50;
+ if Execute then
+ begin
+ SPChar := Pref.PlayTimeParams.SpecialChars.Add as TSsPlayTimeSpecialChar;
+ SPChar.Char := SpecialChar;
+ SPChar.Wait := Cost;
+ Item := lvwCostSpecials.Items.Add;
+ Item.Caption := SPChar.DisplayChar;
+ Item.SubItems.Add(IntToStr(Cost));
+ spnCostWaitChange(Self);
+ end;
+ end;
+ finally
+ frmSpecialCharEditor.Release;
+ end;
+end;
+
+procedure TfrmSetting.btnPlaySpecialDeleteClick(Sender: TObject);
+begin
+ with lvwCostSpecials do
+ if Selected <> nil then
+ begin
+ Pref.PlayTimeParams.SpecialChars.Delete(Selected.Index);
+ Selected.Delete;
+ spnCostWaitChange(Self);
+ end;
+end;
+
+procedure TfrmSetting.lvwCostSpecialsDblClick(Sender: TObject);
+var
+ Item: TListItem;
+ SPChar: TSsPlayTimeSpecialChar;
+begin
+ with lvwCostSpecials do
+ begin
+ Item := Selected;
+ if Item <> nil then
+ begin
+ Application.CreateForm(TfrmSpecialCharEditor, frmSpecialCharEditor);
+ try
+ with frmSpecialCharEditor do
+ begin
+ SPChar := Pref.PlayTimeParams.SpecialChars.Items[Item.Index] as TSsPlayTimeSpecialChar;
+ SpecialChar := SPChar.Char;
+ Cost := SPChar.Wait;
+ if Execute then
+ begin
+ SPChar.Char := SpecialChar;
+ SPChar.Wait := Cost;
+ Item.Caption := SPChar.DisplayChar;
+ Item.SubItems[0] := IntToStr(Cost);
+ spnCostWaitChange(Self);
+ end;
+ end;
+ finally
+ frmSpecialCharEditor.Release;
+ end;
+ end;
+ end;
+end;
+
+procedure TfrmSetting.UpdateSpecialChars;
+var
+ i: integer;
+ Item: TListItem;
+ SPChar: TSsPlayTimeSpecialChar;
+begin
+ with lvwCostSpecials do
+ begin
+ Items.Clear;
+ for i := 0 to Pref.PlayTimeParams.SpecialChars.Count-1 do
+ begin
+ SPChar := Pref.PlayTimeParams.SpecialChars.Items[i] as TSsPlayTimeSpecialChar;
+ Item := Items.Add;
+ Item.Caption := SPChar.DisplayChar;
+ Item.SubItems.Add(IntToStr(SPChar.Wait));
+ end;
+ end;
+end;
+
end.