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

📄 overview.pas

📁 一款RPG游戏的引擎可以自己制作一款RPG游戏的引擎可以自己制作
💻 PAS
字号:
unit overview;
{****************************************************************************
     The contents of this file are subject to the Mozilla Public License
     Version 1.1 (the "License"); you may not use this file except in
     compliance with the License. You may obtain a copy of the License at
     http://www.mozilla.org/MPL/

     Software distributed under the License is distributed on an "AS IS"
     basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
     License for the specific language governing rights and limitations
     under the License.

     The Original Code is IsoEditMdi.

     The Initial Developer of the Original Code is Crystal Software (Canada) Inc.
     and Chris Bruner. Portions created by Chris Bruner are Copyright
     (C) Crystal Software (Canada) Inc.  All Rights Reserved.

     Contributor(s): Chris Bruner of Crystal Software (Canada) Inc.
     (sign your name here)
******************************************************************************}

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls,dxisoengine,inifiles, ComCtrls, ToolWin,util, DIB;

type
  T_OverView = class(TForm)
    OverView: TPanel;
    ScrollBox1: TScrollBox;
    Image1: TDXPaintBox;
    ToolBar1: TToolBar;
    Zoom: TToolButton;
    ToolButton1: TToolButton;
    procedure OverViewMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormCreate(Sender: TObject);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormDestroy(Sender: TObject);
    procedure ZoomClick(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
    procedure FormHide(Sender: TObject);
    procedure UnZoomClick(Sender: TObject);
  private
    { Private declarations }
    MouseDown : Boolean;
  public
    { Public declarations }
    Cursor : TPoint;
    ZoomAmount : Integer;
    procedure Paint; override;
  end;

var
  _OverView: T_OverView;

implementation

uses Main;

{$R *.DFM}

procedure T_OverView.OverViewMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  Cursor.x := X;
  Cursor.y := Y;
end;

procedure T_OverView.Paint;
var l,w,h,x,y : integer;
  c : TColor;
  s : string;
  Isomap : TDXIsoMap;
procedure DrawSquare(t,l,zoom : integer);
var x,y : Integer;
begin
  for x := t to t + zoom do
    for y := l to l + zoom do
      Image1.Canvas.Pixels[x,y] := c;
end;
begin
  if MainForm.ActiveChild = nil then Exit;
  Image1.Canvas.Lock;
  try
  l := 0;  { DONE : Add Layer support (currently only 1 layer) }
  s := 'Overview - ' + MainForm.ActiveChild.Caption;
  Isomap := MainForm.ActiveChild.IsoMap;
  if (s<> Caption) then
  begin
    Image1.Canvas.Rectangle(0,0,Width,Height);
    Caption := s;
  end;
  for x := 0 to IsoMap.MapWidth-1 do
    for y := 0 to IsoMap.MapHeight-1 do
    begin
      c := IsoMap.ImageColor[IsoMap.Cell[x,y].ImageIndexes[l].ImageIndex];
      DrawSquare(x*ZoomAmount,y*ZoomAmount,ZoomAmount);
//      Image1.Canvas.Pixels[2*x*ZoomAmount,y*ZoomAmount] := c;
//      Image1.Canvas.Pixels[1+2*x*ZoomAmount,y*ZoomAmount] := c;
    end;
  if (isomap.cellwidth=0) or (isomap.cellheight=0) then Exit;
//  w := Isomap.Width div Isomap.CellWidth;
//  h := Isomap.Height div Isomap.CellHeight;
  w := (2*MainForm.ActiveChild.Width div Isomap.CellWidth) * zoomAmount;
  h := (2*MainForm.ActiveChild.Height div Isomap.CellHeight) * ZoomAmount;
  x := Isomap.xoffset div Isomap.CellWidth;
  y := Isomap.yoffset div Isomap.CellHeight;
  Image1.Canvas.Pen.Color := clblue;
  Image1.Canvas.MoveTo(x,y);
  Image1.Canvas.LineTo(x + w, y);
  Image1.Canvas.LineTo(x + w, y + h);
  Image1.Canvas.LineTo(x,y +h);
  Image1.Canvas.LineTo(x,y);
  finally
    Image1.Canvas.Unlock;
  end;
end;

procedure T_OverView.FormCreate(Sender: TObject);
var Inifile : TInifile;
begin
  IniFile := GetInifile;
  Top := 7;
  Left := 480;
  Width := 253;
  Height := 263;
  LoadFormPosition(Self,inifile);
  ZoomAmount := IniFile.readinteger('Overview','ZoomAmount',1);
  IniFile.Free; // we will be probably storing other stuff eventually but this will start us off
end;

procedure T_OverView.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  MouseDown := true;
end;

procedure T_OverView.Image1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
  if (MainForm.ActiveChild = nil) then Exit;
  if (Mousedown) then
  begin
    if (X>MainForm.ActiveChild.IsoMap.Left) and
       (X < (MainForm.Activechild.IsoMap.Left + MainForm.Activechild.IsoMap.Width)) and
       (y>MainForm.Activechild.IsoMap.top) and
       (Y < (MainForm.Activechild.IsoMap.top + MainForm.Activechild.IsoMap.height)) then
    begin
      MainForm.Activechild.IsoMap.XOffset := X * MainForm.Activechild.IsoMap.CellWidth;
      MainForm.Activechild.IsoMap.YOffset := Y * MainForm.Activechild.IsoMap.CellHeight;
      MainForm.Activechild.IsoMap.DrawIsoMap;
      MainForm.ActiveChild.Invalidate;
    end;
  end;
end;

procedure T_OverView.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  MouseDown := false;
end;

procedure T_OverView.FormDestroy(Sender: TObject);
var Inifile : TInifile;
begin
  IniFile := GetInifile;
  SaveFormPosition(Self,Inifile);
  IniFile.WriteInteger('Overview','ZoomAmount',ZoomAmount);
  IniFile.Free; // we will be probably storing other stuff eventually but this will start us off
end;

procedure T_OverView.ZoomClick(Sender: TObject);
begin
  Inc(ZoomAmount)
end;

procedure T_OverView.ToolButton1Click(Sender: TObject);
begin
  Dec(ZoomAmount);
end;

procedure T_OverView.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caMinimize;
end;

procedure T_OverView.FormShow(Sender: TObject);
begin
    mainform.OverView1.Checked := True;
end;

procedure T_OverView.FormHide(Sender: TObject);
begin
    mainform.OverView1.Checked := false;
end;

procedure T_OverView.UnZoomClick(Sender: TObject);
begin
  dec(zoomamount);
end;

end.

⌨️ 快捷键说明

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