1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
|
{***********************************************************
Project: C-evo External Map Generator
Copyright: 1999-2023 P Blackman
License: GPLv3+
Load & Save Template files
***********************************************************}
procedure TFrmInterface.BtnLoadTemplateClick;
var MyFilename : string;
IniFile: TIniFile;
begin
OpenDialog2.InitialDir := GetAppConfigDir(False) + 'Templates';
if OpenDialog2.Execute then
begin
MyFilename := OpenDialog2.filename;
IniFile := TINIFile.Create(myfilename);
// Must load RadioGroup Indexes before the associated SpinEdit Values
// Changing a Radio Group updates the SpinEdit
RG_LandMass.ItemIndex := IniFile.ReadInteger('LAND', 'RG_LandMass', 3);
RG_Resource.ItemIndex := IniFile.ReadInteger('LAND', 'RG_Resources',0);
RG_Mountains.ItemIndex := IniFile.ReadInteger('LAND', 'RG_Mountains',2);
RG_Size.ItemIndex := IniFile.ReadInteger('LAND', 'RG_Size', 3);
RG_Age.ItemIndex := IniFile.ReadInteger('LAND', 'RG_Age', 1);
SE_OceanLevel.Value := IniFile.ReadInteger('LAND', 'SE_LandMass', 44);
SE_Resource.Value := IniFile.ReadInteger('LAND', 'SE_Resources',-1);
SE_MountainLevel.Value := IniFile.ReadInteger('LAND', 'SE_Mountains',10);
SpinWave.Value := IniFile.ReadInteger('LAND', 'SE_Size', 22);
SpinDim.Value := IniFile.ReadInteger('LAND', 'SE_Age', 3);
RG_RainPoles.ItemIndex := IniFile.ReadInteger('RAIN', 'RG_RainPoles',2);
RG_RainEqu.ItemIndex := IniFile.ReadInteger('RAIN', 'RG_RainEquat',1);
RG_Rivers.ItemIndex := IniFile.ReadInteger('RAIN', 'RG_River' ,1);
SE_PolesRain.Value := IniFile.ReadInteger('RAIN', 'SE_RainPoles',60);
SE_RainEqu.Value := IniFile.ReadInteger('RAIN', 'SE_RainEquat',45);
SpinWaveRain.Value := IniFile.ReadInteger('RAIN', 'SE_RainLen', 10);
SpinGainRain.Value := IniFile.ReadInteger('RAIN', 'SE_RainGain', 60);
SpinWater.Value := IniFile.ReadInteger('RAIN', 'SE_Water', 40) div 15;
RG_TempEqu.ItemIndex := IniFile.ReadInteger('TEMP', 'RG_TempEquat',1);
RG_TempPoles.ItemIndex := IniFile.ReadInteger('TEMP', 'RG_TempPoles',3);
SE_PolesTemp.Value := IniFile.ReadInteger('TEMP', 'SE_TempPoles',30);
SE_EquTemp.Value := IniFile.ReadInteger('TEMP', 'SE_TempEquat',70);
SpinWaveTemp.Value := IniFile.ReadInteger('TEMP', 'SE_TempLen', 12);
SpinGainTemp.Value := IniFile.ReadInteger('TEMP', 'SE_TempGain', 40);
IniFile.Destroy;
end;
end;
procedure TFrmInterface.SaveTemplate (MyFilePath : String);
var IniFile: TIniFile;
begin
IniFile := TINIFile.Create(MyFilePath);
IniFile.WriteInteger('LAND', 'RG_LandMass', RG_LandMass.ItemIndex);
IniFile.WriteInteger('LAND', 'RG_Resources',RG_Resource.ItemIndex);
IniFile.WriteInteger('LAND', 'RG_Mountains',RG_Mountains.ItemIndex);
IniFile.WriteInteger('LAND', 'RG_Size', RG_Size.ItemIndex);
IniFile.WriteInteger('LAND', 'RG_Age', RG_Age.ItemIndex);
IniFile.WriteInteger('LAND', 'SE_Resources',SE_Resource.Value);
IniFile.WriteInteger('LAND', 'SE_LandMass', SE_OceanLevel.Value);
IniFile.WriteInteger('LAND', 'SE_Mountains',SE_MountainLevel.Value);
IniFile.WriteInteger('LAND', 'SE_Size', SpinWave.Value);
IniFile.WriteInteger('LAND', 'SE_Age', SpinDim.Value);
IniFile.WriteInteger('RAIN', 'RG_RainPoles',RG_RainPoles.ItemIndex);
IniFile.WriteInteger('RAIN', 'RG_RainEquat',RG_RainEqu.ItemIndex);
IniFile.WriteInteger('RAIN', 'RG_River', RG_Rivers.ItemIndex);
IniFile.WriteInteger('RAIN', 'SE_RainPoles',SE_PolesRain.Value);
IniFile.WriteInteger('RAIN', 'SE_RainEquat',SE_RainEqu.Value);
IniFile.WriteInteger('RAIN', 'SE_RainLen', SpinWaveRain.Value);
IniFile.WriteInteger('RAIN', 'SE_RainGain', SpinGainRain.Value);
IniFile.WriteInteger('RAIN', 'SE_Water', SpinWater.Value * 15);
IniFile.WriteInteger('TEMP', 'RG_TempPoles',RG_TempPoles.ItemIndex);
IniFile.WriteInteger('TEMP', 'RG_TempEquat',RG_TempEqu.ItemIndex);
IniFile.WriteInteger('TEMP', 'SE_TempPoles',SE_PolesTemp.Value);
IniFile.WriteInteger('TEMP', 'SE_TempEquat',SE_EquTemp.Value);
IniFile.WriteInteger('TEMP', 'SE_TempLen', SpinWaveTemp.Value);
IniFile.WriteInteger('TEMP', 'SE_TempGain', SpinGainTemp.Value);
IniFile.Destroy;
end;
procedure TFrmInterface.BtnSaveTemplateClick;
begin
SaveDialog2.InitialDir := GetAppConfigDir(False) + 'Templates';
if SaveDialog2.Execute then
SaveTemplate (SaveDialog2.filename);
end;
procedure TFrmInterface.CopyTemplates;
var DestDir, SrcDir: String;
Src, Dst: TSearchRec;
begin
Dst := default (TSearchRec);
{$IFDEF WINDOWS}
SrcDir := 'Templates';
{$ELSE}
SrcDir := '/usr/share/cevomapgen/Templates';
{$ENDIF}
DestDir := GetAppConfigDir(False) + 'Templates';
if not DirectoryExists(DestDir) then
ForceDirectories(DestDir);
if FindFirst(SrcDir + DirectorySeparator + '*.INI', $21, Src) = 0 then
repeat
if (FindFirst(DestDir + DirectorySeparator + Src.Name, $21, Dst) <> 0) or (Dst.Time < Src.Time) then
CopyFile ( SrcDir + DirectorySeparator + Src.Name, DestDir + DirectorySeparator + Src.Name, false);
FindClose(Dst);
until FindNext(Src) <> 0;
FindClose(Src);
end;
|