버그 수정 및 업데이트

Hisop·2023년 5월 23일
0

WOW Addon Dev

목록 보기
9/9
post-thumbnail

커스포지에 애드온을 등록한 후 며칠이 지났다. 내가 사용하면서 발견한 버그들이나 불편한 점들을 개선하고 수정하여 업데이트하기도 했고, 사용자가 제보한 버그도 있었다.
10.1.0부터 시작하여 현재는 10.1.5 까지 업로드한 상태.


10.1.1

  • 테스트코드 삭제 및 메세지 수정

10.1.0 버전은 승인단계에서 제출했던 파일로 정식 등록됨과 동시에 10.1.1을 업로드했다. 검토하며 미처 지우지 못한 테스트코드를 삭제하고 출력되는 메세지를 좀 더 자연스럽게 변경하는 등 작고 사소한 부분들을 수정했다.

10.1.2

  • window 크기 변경

    패널들은 window의 크기를 고정시켜 놓았는데 새 시즌은 네임드의 숫자가 늘어남에 따라 공간이 모자랄수도 있겠다는 생각이 들었다 공간이 모자르다면 내가 의도한 배치와 다르게 자동정렬될 수 있다. 조금 더 여유있게 패널의 크기를 조정하였다.

  • LootHistory nilguard 추가

    loothis에 데이터가 추가될 때 자동으로 패널을 업데이트하는 코드에 nilguard를 추가했다. 패널을 한번도 불러오지 않았을 경우 container는 nil값을 들고있어 여기에 접근하는 과정에서 오류가 발생했기 때문이다.

10.1.3

  • 아이템만 건네주었을 때 다음 PLAYER_GOLD 이벤트가 거래내역에 기록되는 문제 해결

    내 코드는 거래가 완료된 후 플레이어의 골드가 변경되어 PLAYER_GOLD 이벤트가 발생하면 거래 기록에 데이터를 추가하도록 설계했다.
    '거래가 완료된 후 골드 이벤트가 발생하지 않았을 때' 를 고려하지 않은 코드였다. 따라서 아이템만 상대에게 건네주었을 때 문제가 발생했다.
    '거래 완료'의 상태를 가지고 대기하고있다가 다음 골드 이벤트가 발생하면 거래완료와 골드 이벤트를 묶어서 기록해버리는 버그였다.

    아이템과 골드가 한번에 오가는 거래는 거래 완료에 골드 이벤트가 바로 따라온다는 점을 이용해 거래가 완료되면 짧은 타이머를 활성화시켰다.
    타이머 시간 내에 골드 이벤트가 따라온다면 아이템과 골드가 오간 거래, 타이머 시간 내에 골드 이벤트가 따라오지 않았다면 아이템만 주고받은 거래로 분류하여 기록하도록 변경했다.

  • mainpanel을 닫고 열때 자연스럽게 동작하도록 변경 (항상 통계 탭 우선)

    메인 패널에서 거래 내역을 띄운 상태로 창을 닫고 열 때 발생한 문제로 탭은 거래내역을 가리키고 있으나 화면은 통계창을 띄우고 있는 문제였다.

    창이 닫힌 동안 데이터가 변경되었다면 해당 데이터를 업데이트해주기 위해 Show()와 함께 통계창 업데이터를 호출한 부분이 원인이었다.
    재시작시 탭을 통계창으로 변경하는 코드를 추가 해 항상 통계창을 가리킬 수 있게 변경했다.

  • trade_container에 nil guard를 추가

    10.1.2 에서 놓치고 반영하지 못한 부분으로 nil인 변수에 접근하지 못하도록 nilguard를 추가했다.

  • Ace3.0 프레임워크를 최신 파일로 업데이트

    시즌이 변경되고 Ace3.0의 업데이트 현황을 주의깊게 살펴보지 않았다. 큰 변경점은 없었지만 최신 파일로 업데이트해주었다.

10.1.4

  • 일부 환경에서 애드온의 GUI가 동작하지 않는 문제 해결

    일부 사용자가 자신의 환경에선 애드온의 패널들이 정상적으로 열리지 않는다는 상황을 전했다. lua오류코드엔 gui를 호출해 반환받은 값이 nil이었다는 기록이 남았다.
    다른 사용자나 내 환경에선 발생하지 않았으며 위 오류코드로 미루어 볼 때 '특정 조건에서 ace3.0의 gui툴이 제대로 로드되지 않는다' 는 문제로 정리되었다.

    위 문제를 해결하며 내 테스트환경이 잘못되었다는 것을 깨달았다.
    여태 ace3.0 프레임워크를 사용하는 다른 애드온의 사용을 허용시킨 상태에서 내 애드온을 테스트했던 것.
    내 애드온은 기반이 되는 프레임워크를 제대로 불러온 적이 없고 다른 애드온이 로드해놓은 프레임워크 위에서 동작되었던 것이다. 와우 플레이어들이라면 대부분 사용하는, 흔히들 말하는 '국민 애드온' 덕에 동작되고 있었던 것.
    특정 조건은 ace3.0을 사용하는 다른 애드온이 설치되지 않은 환경이었다.

    로드되지 않은 정확한 원인은 애드온에서 header파일을 담당하는 toc파일에서 ace-gui의 추가 기능에 해당하는 부분을 먼저 로드하고 있었던 것으로, 로드하는 순서를 바로잡아 정상적으로 프레임워크를 불러올 수 있도록 변경했다.

  • 슬래쉬 커멘드 동작하도록 변경

    채팅창에 "/HAH"를 입력하는 방식으로 mainPanel을 불러올 수 있게 수정하였다.

  • 테스트 코드 삭제

    oldRaid에서 동작하는 DropEvent코드를 삭제하였다. 사실상 테스트용으로 사용했던 코드로 더이상 필요 없다고 판단했다.

10.1.5

  • Reload(Refrash) 버튼 ↻ -> RL로 변경

일부 폰트 및 기본 폰트에서 reload 버튼인 ↻가 제대로 표시되지 않는 현상이 발생.
사용 빈도가 낮은 버튼임으로 삭제를 고려했으나 일단은 남겨두기로 했다. RL로 변경

  • esc로 창 닫을수 있게 변경

다른 애드온들은 창을 닫을때 흔히 ESC를 사용하나 내 애드온은 해당 기능이 추가되지 않은 상태. 실제로 사용할 때 X버튼을 클릭하는 행위가 귀찮다고 느꼈기에 추가해주었다.

_G["HAH_Main"] = MainPanel.frame
tinsert(UISpecialFrames, "HAH_Main")

_G["HAH_Remote"] = RemotePanel.frame
tinsert(UISpecialFrames, "HAH_Remote")

위 코드 추가. 클라이언트의 전역변수를 관리하는 _G에 각각 Main과 Remote key로 해당 Frame을 등록해주었고, UISpecialFrames에 해당 변수를 전달


버전별로 위와 같은 수정을 거치며 업데이트를 진행했다.
https://www.curseforge.com/wow/addons/hisop-auction-helper/files

profile
42seoul - C, C++ / YagomAcademy - Swift

0개의 댓글