⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.pas

📁 一款RPG游戏的引擎可以自己制作一款RPG游戏的引擎可以自己制作
💻 PAS
📖 第 1 页 / 共 2 页
字号:
var f : TFileStream;
    IniFile : TIniFile;
begin
  if (ActiveChild <> nil) and (Activechild.IsoMap<>NIL) then
  begin
    if (Activechild.IsoMap.ImageCount=0) then
    begin
      ShowIsoHint(1);       // no image list
//      ShowMessage('This file has no Image list. Load Image First');
      Exit;
    end;
    IniFile := GetIniFile;
    openDialog.filename := IniFile.ReadString('Defaults','MapPath',OpenDialog.filename);
    IniFile.Free;
    if (OpenDialog.Execute) then
    begin
//    LoadTiles(opendxg.filename,Sender);
      IniFile := GetInifile;
      IniFile.WriteString('Defaults','MapPath',OpenDialog.filename);
      IniFile.Free; // we will be probably storing other stuff eventually but this will start us off

      f := TFileStream.Create(Opendialog.FileName,fmOpenRead);
      try
        Activechild.IsoMap.LoadMapFromStream(f);
        Activechild.IsoMap.DrawIsoMap;
        FileSaveAs1.Enabled := true;
      finally
        f.free;
      end
    end;
  end;
end;

procedure TMainForm.Images1Click(Sender: TObject);
begin
  if (ActiveChild = nil) or (Activechild.IsoMap = nil) then
  begin
    Images1.Checked := False;
    Images1.Enabled := False;
  end
  else
    Images1.Checked := not Images1.Checked;
  if (Images1.Checked) then Images.Show
    else Images.Hide;
end;

procedure TMainForm.FileSaveItemClick(Sender: TObject);
var IniFile : TInifile;
begin
    if (ActiveChild <> nil) and (Activechild.IsoMap<>nil) then
    begin
      if (ActiveChild.Named) then
      begin
        SaveDialog1.FileName := ActiveChild.Caption;
        Activechild.IsoMap.SaveToFile(SaveDialog1.filename);
        IniFile := GetInifile;
        try
           IniFile.WriteString('Defaults','Project',saveDialog1.filename);
        finally
          inifile.Free;
        end;
      end
      else
        FileSaveAsItemClick(sender);
    end;
end;

procedure TMainForm.FileSaveAsItemClick(Sender: TObject);
var s : string;
begin
  if (ActiveChild = nil) or (Activechild.IsoMap= nil) then exit;
  if (Activechild.IsoMap.Ext = '.DXM') then
    SaveDialog1.Filter := 'DirectX Isomap files|*.DXM';
  if (Activechild.IsoMap.Ext = '.GLM') then
    SaveDialog1.Filter := 'OpenGL Isomap Files|*.GLM';

  SaveDialog1.FileName := ActiveChild.Caption;
  if (Pos( Activechild.IsoMap.Ext,SaveDialog1.FileName)=0) then
    SaveDialog1.FileName := SaveDialog1.FileName + Activechild.IsoMap.Ext;
  if (SaveDialog1.Execute) then
  begin
    SaveDialog1.FileName := ChangeFileExt(SaveDialog1.FileName,Activechild.IsoMap.Ext);
    ActiveChild.MapName := ExtractFileName(SaveDialog1.filename);
    Activechild.IsoMap.SaveToFile(SaveDialog1.filename);
    ReviseHistory(SaveDialog1.FileName);
    ActiveChild.Named := True;
    s := ChangeFileExt(SaveDialog1.FileName,'');
    ActiveChild.Caption := s;
  end;
end;

procedure TMainForm.GridOnOffClick(Sender: TObject);
begin
  Activechild.IsoMap.FIsoMap.ShowGrid := GridOnOff.Down;
end;

procedure TMainForm.FormDestroy(Sender: TObject);
var IniFile : TInifile;
begin
  Inifile := GetInifile;
  SaveFormPosition(Self,inifile);
  inifile.Free;
end;

procedure TMainForm.FormShow(Sender: TObject);
var Inifile : TIniFile;
  s : string;
  i : Integer;
begin
  if (not Loaded) then
  begin
    Loaded := true;
    if (ParamCount > 1) then
    begin
        for i := 1 to ParamCount do
        begin
          s:= ParamStr(i);
          CreateMDIChild(s);
        end;
      Exit;
    end;

    IniFile := GetInifile;
    try
      LoadformPosition(Self,IniFile);
      LoadProjectOnStartup1.Checked := IniFile.ReadBool('Defaults','Load Last Project',LoadProjectOnStartup1.Checked);
      BlockUndoRedo1.Checked := IniFile.ReadBool('Defaults','Block UnDo Redo',BlockUndoRedo1.Checked);

      if not LoadProjectOnStartup1.Checked then exit;
      if IniFile.ReadString('Defaults','LastLoaded','') = 'ImagePath' then
      begin
      FileNew1Execute(Sender);
      s := IniFile.ReadString('Defaults','ImagePath','');
      if (s<>'') then
        Loadtiles(s);
      end
      else
      begin                             
        s := IniFile.ReadString('Defaults','Project','');
        if (s<>'') then
          CreateMDIChild(s);
      end;
    finally
      IniFile.Free;
    end;
  end;
end;

procedure TMainForm.SetCoord(const Value: string);
begin
  StatusBar.Panels[1].Text := value;
end;

procedure TMainForm.SetModified(const Value: Boolean);
begin
  if (Value) then
    StatusBar.Panels[0].Text := 'Modified'
  else
    StatusBar.Panels[0].Text := '        '

end;

procedure TMainForm.SetTilesLoaded(const Value: Boolean);
begin
  OverView1.Enabled := Value;
  Images1.Enabled := Value;
  layers1.enabled := value;
  if (not Overview1.Checked) then OverView1Click(self);
  if (not Images1.checked) then Images1Click(self);
  if (not Layers1.Checked) then Layers1click(self);
end;

procedure TMainForm.ToolButton16Click(Sender: TObject);
begin
  if (ActiveChild <> nil) and (Activechild.IsoMap<>nil) then
    FActiveChild.SelectAll; // doing it this way allows undo
//    Activechild.IsoMap.FIsoMap.AddAllState([tsSelected]);
end;

procedure TMainForm.SetOverViewOK(const Value: Boolean);
begin
   OverView1.Enabled := (MDIChildCount>0);
   Images1.Enabled := (MDIChildCount>0);
   Layers1.Enabled := (MDIChildCount>0);
end;

procedure TMainForm.SetActiveChild(const Value: TMDIChild);
begin
  if (Value<>nil) and (Value.IsoMap.ImageCount>0) then
  begin
    FActiveChild := Value;
    if (FActivechild.IsoMap.ImageCount<>0) then
    begin
      SetTilesLoaded(True);
      FileSaveItem.Enabled := FActiveChild.Named;
      FileSaveAsItem.Enabled := True;
    end;
  end
  else
  begin
    FActiveChild := nil;
    SetTilesLoaded(False);
    FileSaveItem.Enabled := False;
    FileSaveAsItem.Enabled := False;
  end;
end;

procedure TMainForm.Layers1Click(Sender: TObject);
begin
  if (ActiveChild = nil) or (Activechild.IsoMap = nil) then
  begin
    layers1.Checked := False;
    layers1.Enabled := False;
  end
  else
    layers1.Checked := not layers1.Checked;
  if (layers1.Checked) then Layers.Show
    else Layers.Hide;

end;

procedure TMainForm.ToolButton15Click(Sender: TObject);
begin
  if (ActiveChild <> nil) and (Activechild.IsoMap<>nil) then
    FActiveChild.UnSelectAll;
//    Activechild.IsoMap.FIsoMap.SubAllState([tsSelected]);
end;

procedure TMainForm.Diagnostics1Click(Sender: TObject);
begin
  if (ActiveChild = nil) or (Activechild.IsoMap = nil) then
  begin
    diagnostics1.Checked := False;
    diagnostics1.Enabled := False;
  end
  else
    diagnostics1.Checked := not diagnostics1.Checked;
  if (diagnostics1.Checked) then diagnostics.Show
  else diagnostics.Hide;
end;

procedure TMainForm.LoadProjectOnStartup1Click(Sender: TObject);
var IniFile : tinifile;
begin
  LoadProjectOnStartup1.Checked := not LoadProjectOnStartup1.Checked;
    IniFile := GetIniFile;
    IniFile.WriteBool('Defaults','Load Last Project',LoadProjectOnStartup1.Checked);
    IniFile.Free;

end;

procedure TMainForm.BlockUndoRedo1Click(Sender: TObject);
var IniFile : tinifile;
begin
  BlockUndoRedo1.Checked := not BlockUndoRedo1.Checked;
    IniFile := GetIniFile;
    IniFile.WriteBool('Defaults','Block UnDo Redo',BlockUndoRedo1.Checked);
    IniFile.Free;

end;

procedure TMainForm.FormActivate(Sender: TObject);
var inifile : TInifile;
procedure SetMenuCaption(h : TMenuItem; i : Integer;s : string);
begin
  if s<>'' then
  begin
    h.Caption := s;
    h.Visible := True;
  end
  else
  begin
    h.Caption := '';
    h.Visible := False;
  end;
end;

begin
  inifile := getinifile;
  try
    SetMenuCaption(H01,0,IniFile.ReadString('Defaults','History0',''));
    SetMenuCaption(H11,1,IniFile.ReadString('Defaults','History1',''));
    SetMenuCaption(H21,2,IniFile.ReadString('Defaults','History2',''));
    SetMenuCaption(H31,3,IniFile.ReadString('Defaults','History3',''));
    SetMenuCaption(H41,4,IniFile.ReadString('Defaults','History4',''));
    SetMenuCaption(H51,5,IniFile.ReadString('Defaults','History5',''));
    SetMenuCaption(H61,6,IniFile.ReadString('Defaults','History6',''));
    SetMenuCaption(H71,7,IniFile.ReadString('Defaults','History7',''));
    SetMenuCaption(H81,8,IniFile.ReadString('Defaults','History8',''));
    SetMenuCaption(H91,9,inifile.ReadString('Defaults','History9',''));
    SetMenuCaption(H101,10,IniFile.ReadString('Defaults','History10',''));
  finally
    inifile.free;
  end;
end;

procedure TMainForm.ReviseHistory(NewestProject: string);
var    IniFile : TIniFile;
    i : integer;
    s : string;
begin
  IniFile := GetIniFile;
  try
    for i := 10 downto 1 do
    begin
      s := IniFile.ReadString('Defaults','History'+IntToStr(i-1),'');
      if (s=NewestProject) then
        s := '';
      IniFile.WriteString('Defaults','History'+IntToStr(i),s);
    end;
    IniFile.WriteString('Defaults','History0',NewestProject);
    IniFile.WriteString('Defaults','LastLoaded','Project');
    IniFile.WriteString('Defaults','Project',NewestProject);
  finally
    IniFile.Free;
  end;
  FormActivate(self);
end;

procedure TMainForm.HistoryClick(Sender: TObject);
var s : string;
begin
  if (Sender is TMenuItem) then
  begin
    s := TMenuItem(Sender).Caption;
    if (Pos('&',s)>0) then Delete(s,Pos('&',s),1);
    CreateMDIChild(s);
    SaveDialog1.filename := s;
    FileSaveAsItem.enabled := true;
    FileSaveItem.Enabled := true;
  end;
end;

procedure TMainForm.ToolButton19Click(Sender: TObject);
begin
  if (ActiveChild <> nil) and (Activechild.IsoMap<>nil) then
    FActiveChild.AddMetaInfo;
end;

procedure TMainForm.SetDirectXOptions(Sender: TObject);
begin
  if (Sender is TMenuItem) then
    TMenuItem(Sender).Checked := not TMenuItem(Sender).Checked;
  if ActiveChild<>nil then
  begin
    ActiveChild.IsoMap.Enabled := False;
    ActiveChild.IsoMap.Options := GetDXOptions;
    ActiveChild.IsoMap.Enabled := True;
  end;
end;

function TMainForm.GetDXOptions: TDXDrawOptions;
begin
  Result := [];
    if FullScreen1.Checked then Result := Result + [doFullScreen];
    if NoWindowChange1.Checked then Result := Result + [doNoWindowChange];
    if AllowReboot1.Checked then Result := Result + [doAllowReboot];
    if WaitVBlank1.Checked then Result := Result + [doWaitVBlank];
    if AllowPalett2561.checked then Result := Result + [doAllowPalette256];
    if SystemMemory1.checked then Result := Result + [doSystemMemory];
    if Stretch1.checked then Result := Result + [doStretch];
    if Center1.checked then Result := Result + [doCenter];
    if Flip1.checked then Result := Result + [doFlip];
    if N3d1.checked then Result := Result + [do3d];
    if DirectX7Mode1.checked then Result := Result + [doDirectX7Mode];
    if RetainedMode1.checked then Result := Result + [doRetainedMode];
    if Hardware1.checked then Result := Result + [doHardware];
    if Select1.checked then Result := Result + [doSelectDriver];
    if ZBuffer1.checked then Result := Result + [doZBuffer];
end;

end.


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -