Architect.ahk

From DwarfFortressWiki

Jump to: navigation, search

Used to automate Designation of areas.

#EscapeChar \
; Example: Simple text editor with menu bar.

Gui, Font,, Courier new
; Create the sub-menus for the menu bar:
Menu, FileMenu, Add, &New, FileNew
Menu, FileMenu, Add, &Open, FileOpen
Menu, FileMenu, Add, &Save, FileSave
Menu, FileMenu, Add, Save &As, FileSaveAs
Menu, FileMenu, Add  ; Separator line.
Menu, FileMenu, Add, Run, FileRun
Menu, FileMenu, Add  ; Separator line.
Menu, FileMenu, Add, E&xit, FileExit
Menu, HelpMenu, Add, &About, HelpAbout

; Create the menu bar by attaching the sub-menus to it:
Menu, MyMenuBar, Add, &File, :FileMenu
Menu, MyMenuBar, Add, &Help, :HelpMenu

; Attach the menu bar to the window:
Gui, Menu, MyMenuBar

; Create the main Edit control and display the window:
Gui, +Resize  ; Make the window resizable.
Gui, Add, Checkbox, vConstruction, Construction?
Gui, Add, Edit, vDesignations W600 R19
Gui, Show,, YAMS
CurrentFileName =  ; Indicate that there is no current file.
return

FileNew:
GuiControl,, Designations  ; Clear the Edit control.
return

FileOpen:
Gui +OwnDialogs  ; Force the user to dismiss the FileSelectFile dialog before returning to the main window.
FileSelectFile, SelectedFileName, 3,, Open File, Text Documents (*.txt)
if SelectedFileName =  ; No file selected.
    return
Gosub FileRead
return

FileRead:  ; Caller has set the variable SelectedFileName for us.
FileRead, Designations, %SelectedFileName%  ; Read the file's contents into the variable.
if ErrorLevel
{
    MsgBox Could not open "%SelectedFileName%".
    return
}
GuiControl,, Designations, %Designations%  ; Put the text into the control.
CurrentFileName = %SelectedFileName%
Gui, Show,, %CurrentFileName%   ; Show file name in title bar.
return

FileSave:
if CurrentFileName =   ; No filename selected yet, so do Save-As instead.
    Goto FileSaveAs
Gosub SaveCurrentFile
return

FileSaveAs:
Gui +OwnDialogs  ; Force the user to dismiss the FileSelectFile dialog before returning to the main window.
FileSelectFile, SelectedFileName, S16,, Save File, Text Documents (*.txt)
if SelectedFileName =  ; No file selected.
    return
CurrentFileName = %SelectedFileName%
Gosub SaveCurrentFile
return

SaveCurrentFile:  ; Caller has ensured that CurrentFileName is not blank.
IfExist %CurrentFileName%
{
    FileDelete %CurrentFileName%
    if ErrorLevel
    {
        MsgBox The attempt to overwrite "%CurrentFileName%" failed.
        return
    }
}
GuiControlGet, Designations  ; Retrieve the contents of the Edit control.
FileAppend, %Designations%, %CurrentFileName%  ; Save the contents to the file.
; Upon success, Show file name in title bar (in case we were called by FileSaveAs):
Gui, Show,, %CurrentFileName%
return

HelpAbout:
Gui, 2:+owner1  ; Make the main window (Gui #1) the owner of the "about box" (Gui #2).
Gui +Disabled  ; Disable main window.
Gui, 2:Add, Text,, Text for about box.
Gui, 2:Add, Button, Default, OK
Gui, 2:Show
return

2ButtonOK:  ; This section is used by the "about box" above.
2GuiClose:
2GuiEscape:
Gui, 1:-Disabled  ; Re-enable the main window (must be done prior to the next step).
Gui Destroy  ; Destroy the about box.
return

GuiDropFiles:  ; Support drag & drop.
Loop, parse, A_GuiEvent, `n
{
    SelectedFileName = %A_LoopField%  ; Get the first file only (in case there's more than one).
    break
}
Gosub FileRead
return

GuiSize:
if ErrorLevel = 1  ; The window has been minimized.  No action needed.
    return
; Otherwise, the window has been resized or maximized. Resize the Edit control to match.
NewWidth := A_GuiWidth - 20
NewHeight := A_GuiHeight - 40
GuiControl, Move, Designations, W%NewWidth% H%NewHeight%
return

FileExit:     ; User chose "Exit" from the File menu.
GuiClose:  ; User closed the window.
ExitApp


FileRun: 
  arp := ""
	ctr :=0 
  Gui, Submit , NoHide
	if (construction) {
	  preCommand   := "{RIGHT}"
	  apresCommand := "{ENTER}{ENTER}"
		spacer :="{RIGHT}"
	} else {
	  apresCommand := "{ENTER}{ENTER}{RIGHT}"
		spacer := "x"
	}
 	IfWinExist, Dwarf Fortress ; make sure df is running 
 		WinActivate
		
 		sleep, 3000
  
	chars = 0
	StringReplace, arp, Designations, %A_Space%  , %spacer%,1	
	Stringsplit, lines, arp
	
	Loop,
	{
	  ctr := a_index
    thisLine  := lines%a_index%
		if (thisLine ="") {
			break
		}
		if (thisLine = "\r") { 
			continue
		}
			if (thisLine = "\n") {
				
				if (!Construction){
					Send, {DOWN}
					loop, %chars% {
						Send, {LEFT}
					}
				} else {
				  send, w		
					Send, {DOWN}
					loop, %chars% {
						Send, {LEFT}
					}
					send, %a_space%
				}
					chars = 0
				continue
		} else { 
		}
		
    send, %thisLine%
		sleep, 20
		send, %apresCommand%
		chars ++
	  if (construction) {
		  send, w		
			send, {RIGHT}
			send, %a_space%
		}		
		if (chars >100) {
		  break
		}
		;
		;  clear out the lines "array"
		;
		lines%a_index% := ""
	}
	return
Personal tools