vrtc / chorus (public) (License: CC0) (since 2023-08-12) (hash sha1)
World of Warcraft add-on stub. The overall goal is to create a specialized raid frame.
Date (UTC) User Event
2025-02-12 19:53 vrtc Reference refs/heads/develop updated from d0a3f26c22df0484f0d681aaae7f707ce963a843 to f6423c6113559ed00f07a79584e6ef24f78e81d7
2025-02-11 06:43 vrtc Reference refs/heads/develop updated from b4701b9c13fbdea44089eae83444e4a24a878a03 to d0a3f26c22df0484f0d681aaae7f707ce963a843
2025-02-11 06:43 vrtc Annotated tag refs/tags/0.13.0 created (290dae518af1292d39bf05a098f7d5f67e9ebab0)
2025-02-11 06:43 vrtc Reference refs/heads/master updated from 2bab0ef29f306ee60f66a00020ef063ebe1a9f93 to d0a3f26c22df0484f0d681aaae7f707ce963a843
2025-02-11 06:31 vrtc Reference refs/heads/develop updated from 91fad9b3decb82a8e289ca38b06a15c25dce19b0 to b4701b9c13fbdea44089eae83444e4a24a878a03
2025-02-10 20:25 vrtc Reference refs/heads/develop updated from 1dd2e348bd15aa642c36057c2f92484755a4cb57 to 91fad9b3decb82a8e289ca38b06a15c25dce19b0
2025-02-09 23:15 vrtc Reference refs/heads/develop updated from f34c334ca838ca8c26106f89fa7e088bf74af36b to 1dd2e348bd15aa642c36057c2f92484755a4cb57
2025-02-09 23:04 vrtc Reference refs/heads/develop updated from 3d9a3ac39962ca2e39f7a330abe74a229b822e4e to f34c334ca838ca8c26106f89fa7e088bf74af36b
2025-02-09 01:04 vrtc Reference refs/heads/develop updated from fc0a3ac65c9a4682025639d416083bbfc690023f to 3d9a3ac39962ca2e39f7a330abe74a229b822e4e
2025-02-05 11:41 vrtc Reference refs/heads/develop updated from b11c7f4419d8afdf3c2221b13b52ddb159f022d9 to fc0a3ac65c9a4682025639d416083bbfc690023f
2025-02-04 06:16 vrtc Reference refs/heads/develop updated from eba1730d3b334f8900397d3189ad77a6d66cbb5d to b11c7f4419d8afdf3c2221b13b52ddb159f022d9
2025-02-03 03:12 vrtc Reference refs/heads/develop updated from bfbf2801905362c915f3dbf1e50f7c68b5ac6bdc to eba1730d3b334f8900397d3189ad77a6d66cbb5d
2025-02-02 00:10 vrtc Reference refs/heads/develop updated from 390fb24c1b2a19e378694adfa6efc7c93bdf1a55 to bfbf2801905362c915f3dbf1e50f7c68b5ac6bdc
2025-01-29 16:46 vrtc Reference refs/heads/master updated from 7858beed60732f3548ff55124b50f2cbb84ecb38 to 2bab0ef29f306ee60f66a00020ef063ebe1a9f93
2025-01-29 16:45 vrtc Reference refs/heads/develop updated from 9dcf5e6ef1cd5a254fa00bcbd1ede9235dc59cd0 to 390fb24c1b2a19e378694adfa6efc7c93bdf1a55
2025-01-29 16:45 vrtc Annotated tag refs/tags/0.12.0 created (31174df80c03cabfce917b6b5bd19e27c88c5f59)
2025-01-29 09:39 vrtc Reference refs/heads/develop updated from e6afb8d72b74ddbf1f0ac88bd8ee8d62a61a85a5 to 9dcf5e6ef1cd5a254fa00bcbd1ede9235dc59cd0
2025-01-28 05:14 vrtc Reference refs/heads/develop updated from 95249f24afd423899b14b5aa70440d2900da49d0 to e6afb8d72b74ddbf1f0ac88bd8ee8d62a61a85a5

README.adoc:
= Chorus
Vladyslav Bondarenko <vladyslavbond@protonmail.com>
0.10.0 (testing), 2024-01-28

Chorus is a graphical user interface extension for a popular video game World
of Warcraft. It adds a custom raid frame. This is a work in progress.

Features:

* approximate distance to every raid member in yards;
* sort debuffs by relevance;
* generalize raid and party frames;

Supported game version is legacy 3.3.5a (or interface 30300).

The motivation is to create a robust minimalistic raid frame. It must work
out-of-the-box and require no configuration by the user. It must be comparable
in it's features with modern native raid frame that was shipped with the game
since Cataclysm expansion (interface 40000).

This add-on will never feature key binding customization. This feature is
specifically excluded to be the subject of a different add-on.

== Install

The project is installed like any other World of Warcraft add-on. Exit the
game. Unpack the archive that contains the project's sources into
`${DESTDIR}/Interface/AddOns/` directory, where `${DESTDIR}` is the path to the
game installation directory. In the end it must look something like this.

----
${DESTDIR}/Interface/AddOns/chorus/chorus.toc
${DESTDIR}/Interface/AddOns/chorus/doc/
${DESTDIR}/Interface/AddOns/chorus/etc/
${DESTDIR}/Interface/AddOns/chorus/Makefile
${DESTDIR}/Interface/AddOns/chorus/README.adoc
${DESTDIR}/Interface/AddOns/chorus/share/
${DESTDIR}/Interface/AddOns/chorus/src/
${DESTDIR}/Interface/AddOns/chorus/target/
${DESTDIR}/Interface/AddOns/chorus/test/
----

Experienced users may install the add-on with `git`.

----
git clone --branch master -o upstream https://rocketgit.com/user/vrtc/chorus "${DESTDIR}/Interface/AddOns/chorus/"
----

== Development

=== Build dependencies

The project does not require any building steps to work. It can be freely
distributed as sources only. However, the project was developed using certain
tools that may still be applicable.

Build dependencies:

* `make` (build instrumentation);
* `git` (versioning, packaging, distribution);
* `luacheck` (static analysis for Lua);
* `xmllint` (XML validator);
* `ldoc` (generate technical documentation from Lua sources);

==== Build dependencies for Debian 12

Install build dependencies for Debian 12.

----
apt-get install libxml2-utils lua-check lua-ldoc make git
----

==== Build dependencies for Windows

Insalling for Windows is much more tricky. The first step is to install
LuaRocks, then use LuaRocks to install LuaCheck and LDoc. xmllint can be
replaced with any XML parser that understands *.xsd.

=== Build package

Navigate to the source directory.

The source directory is where the distribution archive was unpacked to, where
the repository was cloned to, or where the add-on was already installed to.

The build is done with `make` utility. All example commands assume it's
installed.

Minimal effort was made to make the `Makefile` adhere to `GNUmakefile`
conventions.

Validate Lua snippets for sanity. Requires `luacheck`. The configuration is
loaded from `etc/luacheckrc.lua`.

----
make check-lua
----

Validate Blizzard UI XML snippets for sanity. Requires `xmllint`. The schema is
loaded from `etc/FrameXML/UI.xsd`. The schema descriptor was exported from
the game client, version 3.3.5a.

----
make check-xml
----

Do both.

----
make check
----

Package a `*.zip` archive for redistribution. Requires `git`. More importantly,
it requires the project's source repository to be cloned. Therefore, it will
not work if the project's was obtained from a distribution archive.

----
make dist
----
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/vrtc/chorus

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/vrtc/chorus

Clone this repository using git:
git clone git://git.rocketgit.com/user/vrtc/chorus

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main