기초적인 애드온의 형태를 가지며 뭐라도 출력해보는걸 목표로 삼았다.
일단 틀부터 만들고 그 안에 들어갈 기능은 하나씩 천천히 구현하면 된다는 생각이 들었다.
기초적인 불러오기 과정은 지난 글처럼 작성했으며
Ace3 Getting Started 페이지를 참고해 애드온 객체를 만드는 과정을 진행해보았다.
일단 가이드에서 제시한 애드온 객체 생성 방법대로 생성해주었다.
HRGT = LibStub("AceAddon-3.0"):NewAddon("HRGT", "AceConsole-3.0", "AceEvent-3.0")
local GUI = LibStub("AceGUI-3.0")
NewAddon의 두번째 매개변수로는 Console과 Event를 입력했다. 해당 라이브러리에 속한 위젯을 써야할 필요가 있었다.
가이드에서 설명한 3가지 메서드들만 간단히 정리했다.
OnInitialize () - 애드온이 처음 로드될 때
OnEnable () - 애드온이 활성화될 때
OnDisable () - 애드온이 비활성화될 때
이 메서드들을 정의해 필요한 코드를 넣기만 하면 되었다.
function HRGT:OnInitialize()
self:Print("Hello World!")
end
아무튼 위 테스트 코드를 작성하고 애드온을 실행했다.
최초 실행시에 채팅창에 HelloWorld! 메세지가 정상 출력됨을 확인했다.
(self에 던졌기 때문에 HRGT : HelloWorld! 형태로 애드온을 통해 출력되었다)
GUI는 Ace3 GUI를 참고해 작성하기 시작했다.
local MainPanel = GUI:Create("Window")
MainPanel:SetWidth(500)
MainPanel:SetHeight(700)
MainPanel:SetTitle("HRGT MainPanel")
튜토리얼은 "Frame"을 선택했지만 난 Frame 하단의 부제목과 Close 버튼이 마음에 들지 않아 "Window" 타입을 선택했다.
(Ace3 설명페이지엔 다른 타입에 대한 설명은 보이지 않았다.
결국 내부 파일 하나하나 읽어보고 타입 적용시키기 + 구글링으로 맘에드는 타입을 선택)
다른 메서드들은 이름 그대로 동작해서 따로 설명이 필요 없을듯 하다.
MainPanel:SetCallback("OnClose",
function(widget)
MainPanel:Hide()
end)
MainPanel:SetLayout("Fill")
MainPanel:EnableResize(false)
SetCallBack은 특정 Event가 실행됐을 때 Function를 실행시키겠다는 선언으로 이해했다.
이미 만들어진 함수를 호출할 수도 있지만 클로저 형식으로 처리하는게 일반적이었다.
Layout은 Flow, List, Fill 3가지로 나누어진다.