Skip to content
This repository has been archived by the owner on Dec 2, 2024. It is now read-only.

Adds creation of flags and nodes via double-click and Drag&Drop #427

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
134 changes: 130 additions & 4 deletions Utils/Campaign builder/Unit1.dfm
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,12 @@ object Form1: TForm1
Width = 154
Height = 2
end
object Bevel3: TBevel
Left = 8
Top = 496
Width = 154
Height = 2
end
object tvList: TTreeView
Left = 8
Top = 128
Expand Down Expand Up @@ -131,8 +137,6 @@ object Form1: TForm1
item
Width = 200
end>
ExplicitTop = 447
ExplicitWidth = 689
end
object ScrollBox1: TScrollBox
Left = 168
Expand All @@ -141,14 +145,14 @@ object Form1: TForm1
Height = 777
Anchors = [akLeft, akTop, akRight, akBottom]
TabOrder = 7
ExplicitWidth = 513
ExplicitHeight = 426
object Image1: TImage
Left = 0
Top = 0
Width = 1024
Height = 768
Stretch = True
OnDragDrop = Image1DragDrop
OnDragOver = Image1DragOver
end
object imgBlackFlag: TImage
Left = 0
Expand Down Expand Up @@ -386,6 +390,128 @@ object Form1: TForm1
TabOrder = 10
OnClick = cbShowNodeNumbersClick
end
object GroupBox1: TGroupBox
Left = 8
Top = 512
Width = 154
Height = 77
Hint = 'Double click to quick-add'#13#10'Drag&Drop to add to mouse position.'
Caption = 'New chart objects'
ParentShowHint = False
ShowHint = True
TabOrder = 11
object imgNewFlag: TImage
Left = 18
Top = 26
Width = 23
Height = 29
Hint = 'New Flag'
AutoSize = True
ParentShowHint = False
Picture.Data = {
07544269746D61705E080000424D5E0800000000000036000000280000001700
00001D0000000100180000000000280800000000000000000000000000000000
00002BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B35566D
372B2C35566D2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF
2B2BFF2B2BFF2B0000002BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2B
FF2B2BFF2B37393D355757372B2C15234535566D2BFF2B2BFF2B2BFF2B2BFF2B
2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B0000002BFF2B2BFF2B2BFF2B2BFF2B2BFF
2B2BFF2B2BFF2B2BFF2B2BFF2B37393D344C3B0012090C0E1E0C0E1E35566D2B
FF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B0000002BFF2B2BFF2B
2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B35566D0C0E1E3557570C0E1E0C0E
1E0C0E1E0C0E1E0C0E1E15234535566D2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B00
00002BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B1523450C0E1E372B2C
3864570012090C0E1E0C0E1E0C0E1E0C0E1E0C0E1E0C0E1E0C0E1E35566D2BFF
2B2BFF2B2BFF2B0000002BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B35
566D0C0E1E37393D3557570012090C0E1E0C0E1E0C0E1E0C0E1E0C0E1E0C0E1E
0C0E1E15234535566D2BFF2B2BFF2B0000002BFF2B2BFF2B2BFF2B2BFF2B2BFF
2B2BFF2B2BFF2B2BFF2B152345372B2C1F616D0012090C0E1E0C0E1E0C0E1E0C
0E1E0C0E1E0C0E1E0C0E1E15234515234535566D2BFF2B0000002BFF2B2BFF2B
2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B35566D372B2C1F616D0012090C0E
1E0C0E1E0C0E1E0C0E1E0C0E1E0C0E1E0C0E1E0C0E1E15234515234535566D00
00002BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B372B2C
344C3B00120935566D35566D35566D35566D35566D35566D35566D35566D3556
6D35566D35566D0000002BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2B
FF2B2BFF2B0012090012090012092BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B
2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B0000002BFF2B2BFF2B2BFF2B2BFF2B2BFF
2B2BFF2B355757001209001209001209001209001209372B2C3557572BFF2B2B
FF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B0000002BFF2B2BFF2B
2BFF2B2BFF2B355757001209372B2C002B7B002B7B002B7B002B7B002B7B002B
7B372B2C0012090012093557572BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B00
00002BFF2B2BFF2B2BFF2B355757372B2C002B7B002B7B002B7B002B7B002B7B
002B7B002B7B002B7B002B7B002B7B002B7B372B2C3557572BFF2B2BFF2B2BFF
2B2BFF2B2BFF2B0000002BFF2B2BFF2B2BFF2B001209002B7B00338B002B7B00
276B002B7B00338B002B7B002B7B00276B002B7B002B7B002B7B002B7B001209
2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B0000002BFF2B2BFF2B2BFF2B0012090033
8B00338B00276B002B7B00338B00338B002B7B00276B00276B00338B002B7B00
2B7B002B7B0012092BFF2B2BFF2B2BFF2B2BFF2B2BFF2B0000002BFF2B2BFF2B
35575737393D00338B00338B00276B00338B00338B002B7B00276B00276B002B
7B002B7B00338B002B7B002B7B0012092BFF2B2BFF2B2BFF2B2BFF2B2BFF2B00
00002BFF2B2BFF2B372B2C002B7B002B7B00338B002B7B00338B002B7B002B7B
002B7B002B7B002B7B002B7B00338B00338B002B7B37393D3557572BFF2B2BFF
2B2BFF2B2BFF2B0000002BFF2B2BFF2B00120900379B002B7B002B7B002B7B00
338B00276B002B7B00338B00379B00338B00338B002B7B00338B002B7B002B7B
0012092BFF2B2BFF2B2BFF2B2BFF2B0000002BFF2B2BFF2B00120900379B0033
8B002B7B002B7B002B7B00276B002B7B002B7B00338B003FAF003FAF00338B00
2B7B00338B002B7B0012092BFF2B2BFF2B2BFF2B2BFF2B0000002BFF2B2BFF2B
00120900379B00338B002B7B002B7B00276B00276B002B7B002B7B002B7B0033
8B00379B003FAF00379B002B7B002B7B372B2C2BFF2B2BFF2B2BFF2B2BFF2B00
00002BFF2B2BFF2B00120900338B00338B002B7B00276B00276B002B7B002B7B
00338B00379B00338B002B7B00379B003FAF00338B002B7B372B2C2BFF2B2BFF
2B2BFF2B2BFF2B0000002BFF2B2BFF2B00120900379B00338B00276B00276B00
276B0D2F430D2F430D2F430D2F43002B7B00379B00338B00379B003FAF00338B
372B2C2BFF2B2BFF2B2BFF2B2BFF2B0000002BFF2B2BFF2B372B2C00379B002B
7B00276B0D2F430D2F432BFF2B2BFF2B2BFF2B2BFF2B2BFF2B0D2F430D2F4300
2B7B00379B00379B372B2C2BFF2B2BFF2B2BFF2B2BFF2B000000355757001209
001209002B7B0D2F431C56540012092BFF2B2BFF2B37393D37393D0012092BFF
2B2BFF2B1C56540012090D2F4300338B0012090012093557572BFF2B2BFF2B00
0000001209344C3B001209001209001209001209001209001209001209001209
001209001209001209001209001209001209001209001209001209344C3B0012
092BFF2B2BFF2B0000000012093557571F616D1F616D3274781F616D1F616D32
74783274781F616D3557573A4E603274781F616D3A4E603274781F616D3A4E60
3557573557570012092BFF2B2BFF2B0000003557570012090012090012090012
0900120900120900120900120900120900120900120900120900120900120900
12090012090012090012090012093557572BFF2B2BFF2B0000002BFF2B2BFF2B
2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B0012091F616D37393D0012092BFF
2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B00
00002BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B355757001209
0012093557572BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF2B2BFF
2B2BFF2B2BFF2B000000}
ShowHint = True
Transparent = True
OnDblClick = NewObjectImgDblClick
OnMouseDown = NewObjectImgMouseDown
end
object imgNewNode: TImage
Left = 59
Top = 37
Width = 11
Height = 11
Hint = 'New Node'
AutoSize = True
ParentShowHint = False
Picture.Data = {
07544269746D6170C2010000424DC20100000000000036000000280000000B00
00000B00000001001800000000008C0100000000000000000000000000000000
00002BFF2B2BFF2B2BFF2B042042042042042042042042191E352BFF2B2BFF2B
2BFF2B0000002BFF2B2BFF2B191E35003FAF003FAF003FAF003FAF002B7B191E
352BFF2B2BFF2B0000002BFF2B191E35002B7B00379B00379B00338B00379B00
3FAF002B7B191E352BFF2B000000191E35002B7B003FAF00338B00338B00338B
00338B00379B003FAF002B7B191E35000000042042003FAF00379B002B7B0027
6B002B7B002B7B00338B00379B003FAF042042000000042042003FAF00338B00
2B7B002B7B00276B002B7B00338B00338B003FAF042042000000042042003FAF
00379B002B7B002B7B002B7B00276B00338B00379B003FAF0420420000000420
42003FAF003FAF00379B002B7B002B7B00338B00379B00379B003FAF04204200
00002BFF2B191E35002B7B003FAF00379B00338B00379B003FAF002B7B191E35
2BFF2B0000002BFF2B2BFF2B191E35003FAF003FAF003FAF003FAF002B7B191E
352BFF2B2BFF2B0000002BFF2B2BFF2B2BFF2B04204204204204204204204219
1E352BFF2B2BFF2B2BFF2B000000}
ShowHint = True
Transparent = True
OnDblClick = NewObjectImgDblClick
OnMouseDown = NewObjectImgMouseDown
end
end
object dlgOpenPicture: TOpenDialog
Filter = 'Supported images (*.png)|*.png'
Options = [ofHideReadOnly, ofPathMustExist, ofFileMustExist, ofNoNetworkButton, ofEnableSizing]
Expand Down
89 changes: 88 additions & 1 deletion Utils/Campaign builder/Unit1.pas
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,10 @@ TForm1 = class(TForm)
shpBriefing: TShape;
Bevel2: TBevel;
cbShowNodeNumbers: TCheckBox;
Bevel3: TBevel;
GroupBox1: TGroupBox;
imgNewFlag: TImage;
imgNewNode: TImage;
procedure btnLoadPictureClick(Sender: TObject);
procedure btnLoadCMPClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
Expand All @@ -46,6 +50,12 @@ TForm1 = class(TForm)

procedure edtShortNameKeyPress(Sender: TObject; var Key: Char);
procedure cbShowNodeNumbersClick(Sender: TObject);
procedure NewObjectImgDblClick(Sender: TObject);
procedure Image1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure Image1DragDrop(Sender, Source: TObject; X, Y: Integer);
procedure NewObjectImgMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
fExePath: string;
fCampaignsPath: string;
Expand Down Expand Up @@ -127,7 +137,7 @@ procedure TForm1.FormCreate(Sender: TObject);
fSprites := TKMSpritePackEdit.Create(rxCustom, nil);

seMapCountChange(nil); //Initialise it to 1 map

if FileExists(ParamStr(1)) then
LoadCmp(ParamStr(1));
end;
Expand Down Expand Up @@ -204,6 +214,83 @@ procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState)
end;


procedure TForm1.Image1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
curItem: Integer;
begin
if fUpdating then Exit;

if Source = imgNewFlag then
begin
curItem := seMapCount.Value;
seMapCount.Value := curItem + 1;
C.MapCount := EnsureRange(seMapCount.Value, 1, MAX_CAMP_MAPS);

C.Maps[C.MapCount - 1].Flag.X := EnsureRange(X - Image1.Left, 0, 1024 - imgNewFlag.Width);
C.Maps[C.MapCount - 1].Flag.Y := EnsureRange(Y - Image1.Top, 0, 768 - imgNewFlag.Height);

fSelectedMap := C.MapCount - 1; //Always select last, just added MapFlag
end else if (fSelectedMap <> -1) and (Source = imgNewNode) then
begin
curItem := seNodeCount.Value;
seNodeCount.Value := curItem + 1;
C.Maps[fSelectedMap].NodeCount := EnsureRange(seNodeCount.Value, 0, MAX_CAMP_NODES);

C.Maps[fSelectedMap].Nodes[curItem].X := (X - Image1.Left);
C.Maps[fSelectedMap].Nodes[curItem].Y := (Y - Image1.Top);

fSelectedNode := C.Maps[fSelectedMap].NodeCount - 1; //Always select last, just added Node
end;

UpdateList;
UpdateFlagCount;
UpdateNodeCount;
RefreshFlags;
end;


procedure TForm1.Image1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept := (Source = imgNewFlag) or
((fSelectedMap <> -1) and (Source = imgNewNode));
end;


procedure TForm1.NewObjectImgMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
TImage(Sender).BeginDrag(False, 5);
end;


procedure TForm1.NewObjectImgDblClick(Sender: TObject);
begin
if fUpdating then Exit;

if Sender = imgNewFlag then
begin
seMapCount.Value := seMapCount.Value + 1;
C.MapCount := EnsureRange(seMapCount.Value, 1, MAX_CAMP_MAPS);

if fSelectedMap > C.MapCount - 1 then
fSelectedMap := -1;
end else if (fSelectedMap <> -1) and (Sender = imgNewNode) then
begin
seNodeCount.Value := seNodeCount.Value + 1;
C.Maps[fSelectedMap].NodeCount := EnsureRange(seNodeCount.Value, 0, MAX_CAMP_NODES);

if fSelectedNode > C.Maps[fSelectedMap].NodeCount - 1 then
fSelectedNode := -1;
end;

UpdateList;
UpdateFlagCount;
UpdateNodeCount;
RefreshFlags;
end;


procedure TForm1.FlagDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if Button = mbLeft then
Expand Down