OSDN Git Service

PlayTimeParams editor changed
authornaru <bottle@mikage.to>
Wed, 27 Aug 2003 13:17:32 +0000 (13:17 +0000)
committernaru <bottle@mikage.to>
Wed, 27 Aug 2003 13:17:32 +0000 (13:17 +0000)
bottleclient/SettingForm.dfm
bottleclient/SettingForm.pas

index 50bd147..b82f726 100755 (executable)
@@ -464,8 +464,8 @@ object frmSetting: TfrmSetting
       object grpPlayTimeParams: TGroupBox
         Left = 8
         Top = 48
-        Width = 249
-        Height = 201
+        Width = 417
+        Height = 225
         Caption = #35443#32048'('#12511#12522#31186')'
         TabOrder = 0
         object lblCostWait: TLabel
@@ -474,6 +474,7 @@ object frmSetting: TfrmSetting
           Width = 40
           Height = 12
           Caption = '\w1'#12479#12464
+          FocusControl = spnCostWait
         end
         object lblCostSurface: TLabel
           Left = 16
@@ -481,126 +482,138 @@ object frmSetting: TfrmSetting
           Width = 97
           Height = 12
           Caption = #12469#12540#12501#12451#12473#20999#12426#26367#12360
+          FocusControl = spnCostSurface
         end
         object lblCostChar: TLabel
-          Left = 16
-          Top = 80
+          Left = 240
+          Top = 32
           Width = 78
           Height = 12
           Caption = #21322#35282#25991#23383'1'#25991#23383
+          FocusControl = spnCostChar
         end
         object lblCostDBChar: TLabel
-          Left = 16
-          Top = 104
+          Left = 240
+          Top = 56
           Width = 78
           Height = 12
           Caption = #20840#35282#25991#23383'1'#25991#23383
-        end
-        object lblCostWhiteSpace: TLabel
-          Left = 16
-          Top = 128
-          Width = 99
-          Height = 12
-          Caption = #21322#35282#12473#12506#12540#12473'1'#25991#23383
-        end
-        object lblCostDBWhiteSpace: TLabel
-          Left = 16
-          Top = 152
-          Width = 99
-          Height = 12
-          Caption = #20840#35282#12473#12506#12540#12473'1'#25991#23383
+          FocusControl = spnCostDBChar
         end
         object lblCostQuickChar: TLabel
           Left = 16
-          Top = 176
+          Top = 80
           Width = 119
           Height = 12
           Caption = #12463#12452#12483#12463#12475#12463#12471#12519#12531'1'#25991#23383
+          FocusControl = spnCostQuickChar
         end
-        object spnCostDBWhiteSpace: TSpinEdit
-          Left = 144
-          Top = 146
-          Width = 89
-          Height = 21
-          Hint = #20840#35282#12473#12506#12540#12473'1'#25991#23383#12398#34920#31034#12395#12363#12363#12427#26178#38291
-          MaxValue = 1000
-          MinValue = 0
-          TabOrder = 0
-          Value = 0
-          OnChange = spnCostWaitChange
-        end
-        object spnCostWhiteSpace: TSpinEdit
-          Left = 144
-          Top = 122
-          Width = 89
-          Height = 21
-          Hint = #21322#35282#12473#12506#12540#12473'1'#25991#23383#12398#34920#31034#12395#12363#12363#12427#26178#38291
-          MaxValue = 1000
-          MinValue = 0
-          TabOrder = 1
-          Value = 0
-          OnChange = spnCostWaitChange
+        object lblCostSpecials: TLabel
+          Left = 16
+          Top = 112
+          Width = 133
+          Height = 12
+          Caption = #29305#27530#12394#26178#38291#12434#25345#12388#25991#23383'(&P):'
         end
         object spnCostDBChar: TSpinEdit
-          Left = 144
-          Top = 98
-          Width = 89
+          Left = 328
+          Top = 50
+          Width = 81
           Height = 21
           Hint = #12473#12506#12540#12473#12434#38500#12367#20840#35282#25991#23383'1'#25991#23383#12398#34920#31034#12395#12363#12363#12427#26178#38291
           MaxValue = 1000
           MinValue = 0
-          TabOrder = 2
+          TabOrder = 0
           Value = 0
           OnChange = spnCostWaitChange
         end
         object spnCostWait: TSpinEdit
-          Left = 144
+          Left = 328
           Top = 26
-          Width = 89
+          Width = 81
           Height = 21
           Hint = '\w1'#12479#12464'1'#20491#20998#12398#24453#12385#26178#38291#12290'\w9'#12394#12425#12371#12398'9'#20493
           MaxValue = 1000
           MinValue = 0
-          TabOrder = 3
+          TabOrder = 1
           Value = 0
           OnChange = spnCostWaitChange
         end
         object spnCostSurface: TSpinEdit
           Left = 144
           Top = 50
-          Width = 89
+          Width = 81
           Height = 21
           Hint = '1'#22238#12398#12469#12540#12501#12451#12473#20999#26367#12360#12395#12363#12363#12427#26178#38291
           MaxValue = 1000
           MinValue = 0
-          TabOrder = 4
+          TabOrder = 2
           Value = 0
           OnChange = spnCostWaitChange
         end
         object spnCostChar: TSpinEdit
           Left = 144
-          Top = 74
-          Width = 89
+          Top = 26
+          Width = 81
           Height = 21
           Hint = #12473#12506#12540#12473#12434#38500#12367#21322#35282#25991#23383'1'#25991#23383#12398#34920#31034#12395#12363#12363#12427#26178#38291
           MaxValue = 1000
           MinValue = 0
-          TabOrder = 5
+          TabOrder = 3
           Value = 0
           OnChange = spnCostWaitChange
         end
         object spnCostQuickChar: TSpinEdit
           Left = 144
-          Top = 170
-          Width = 89
+          Top = 74
+          Width = 81
           Height = 21
           Hint = #12463#12452#12483#12463#12475#12463#12471#12519#12531#20013#12398'1'#25991#23383#34920#31034#12395#12363#12363#12427#26178#38291
           MaxValue = 1000
           MinValue = 0
-          TabOrder = 6
+          TabOrder = 4
           Value = 0
           OnChange = spnCostWaitChange
         end
+        object lvwCostSpecials: TListView
+          Left = 16
+          Top = 128
+          Width = 161
+          Height = 89
+          Columns = <
+            item
+              Caption = #25991#23383
+              Width = 60
+            end
+            item
+              Alignment = taRightJustify
+              Caption = #26178#38291
+              Width = 60
+            end>
+          ReadOnly = True
+          RowSelect = True
+          TabOrder = 5
+          ViewStyle = vsReport
+          OnDblClick = lvwCostSpecialsDblClick
+        end
+        object btnPlaySpecialAdd: TButton
+          Left = 184
+          Top = 160
+          Width = 75
+          Height = 25
+          Caption = #36861#21152'(&A)'
+          TabOrder = 6
+          OnClick = btnPlaySpecialAddClick
+        end
+        object btnPlaySpecialDelete: TButton
+          Left = 184
+          Top = 192
+          Width = 75
+          Height = 25
+          Caption = #21066#38500'(&D)'
+          TabOrder = 7
+          OnClick = btnPlaySpecialDeleteClick
+        end
       end
       object cbxPlayTimeProfile: TComboBox
         Left = 176
index 8d07111..0c8dad0 100755 (executable)
@@ -11,7 +11,8 @@ uses
   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)
@@ -83,8 +84,6 @@ type
     grpPlayTimeParams: TGroupBox;
     lblPlayTimeProfile: TLabel;
     cbxPlayTimeProfile: TComboBox;
-    spnCostDBWhiteSpace: TSpinEdit;
-    spnCostWhiteSpace: TSpinEdit;
     spnCostDBChar: TSpinEdit;
     spnCostWait: TSpinEdit;
     spnCostSurface: TSpinEdit;
@@ -94,10 +93,12 @@ type
     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;
@@ -118,13 +119,17 @@ type
     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;
@@ -175,7 +180,8 @@ begin
   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);
@@ -265,7 +271,7 @@ begin
   end;
   //
   Pref.PlayTimeParams.ProfileName := cbxPlayTimeProfile.Text;
-  ControlToPlayTimeParams(Pref.PlayTimeParams);
+  SpinControlToPlayTimeParams(Pref.PlayTimeParams);
   //
   Pref.AutoStart := cbxAutoStart.Checked;
   Pref.TabPosition := TTabPosition(rgpTabPosition.ItemIndex);
@@ -464,7 +470,7 @@ begin
   end;
 end;
 
-procedure TfrmSetting.PlayTimeParamsToControl(Params: TSsPlayTimeParams);
+procedure TfrmSetting.PlayTimeParamsToSpinControl(Params: TSsPlayTimeParams);
 begin
   FSpinUpdateFlag := true;
   with Params do
@@ -473,14 +479,13 @@ begin
     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
@@ -488,8 +493,6 @@ begin
     CostSurface      := spnCostSurface.Value;
     CostChar         := spnCostChar.Value;
     CostDBChar       := spnCostDBChar.Value;
-    CostWhiteSpace   := spnCostWhiteSpace.Value;
-    CostDBWhiteSpace := spnCostDBWhiteSpace.Value;
     CostQuickChar    := spnCostQuickChar.Value;
   end;
 end;
@@ -527,7 +530,9 @@ begin
       Strs.LoadFromFile(Path + ProName + '.txt');
       Params := StringToComponent(Strs.Text) as TSsPlayTimeParams;
       try
-        PlayTimeParamsToControl(Params);
+        PlayTimeParamsToSpinControl(Params);
+        Pref.PlayTimeParams.Assign(Params);
+        UpdateSpecialChars;
       finally
         Params.Free;
       end;
@@ -549,7 +554,6 @@ procedure TfrmSetting.btnSavePlayTimeProfileClick(Sender: TObject);
 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
@@ -563,15 +567,10 @@ begin
           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;
@@ -610,4 +609,94 @@ begin
   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.