Mercurial > wow > turok
diff Turok/readme.txt @ 6:a9b8b0866ece
clear out log jam
author | Nenue |
---|---|
date | Sun, 21 Feb 2016 08:32:53 -0500 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Turok/readme.txt Sun Feb 21 08:32:53 2016 -0500 @@ -0,0 +1,42 @@ +Turok: Dinosaur HUD + +Hardcode of various WeakAura configurations. This is created as a personal learning challenge, so it may or may not be faster than the actual jumble of WeakAuras because that addon is written very well. + +Project Goals: + + - Focus bar with dynamic coloring and prediction lines based on talent effects + - Unit cast bars that are thematically linked with everything else + - Dynamically arranged tracking icons and sliders cooldown/aura information + - Quality-of-life alerts for Lone Wolf and Aspect of the Pack + +Coding Conventions: + + Although AceAddon modules are used, the addon is not truly modular. + The structure provides simple control over the internal loading sequence. + So if needed, "module" enables can be scattered over several post-load frames to make in-combat /reload less hazardous. + + SavedVars data is arranged in a non-propagating hierarchical metatable. + Accessing a deeply-nested member will traverse its parents until one of them contains data. + The only exception to this is on lazy read expressions, such as: + + > if (childtable.unsetvar) then + + This will always yield a false, whether or not a value is assigned in its parents. + To check for hierarchical flag variables, you can compare the index against nil, like so: + + > if (childtable.unsetvar ~= nil) then + + The operation will trigger __index and a value from the hierarchy will be presented. + Any positive flag state will be copied down when direct assignment is used. + To get a useful flag state, you need to run the first logical expression within a ternary idiom: + + > childflag = (childtable.unsetvar) and true or nil -- pulls the true flag value + > parentflag = childtable.unsetvar -- pulls any non-nil value + + Another thing to note is hierarchical values are not assigned downstream. + If an empty child value is indexed, it will always traverse up the tree. + As a result, values consulted frequently will be computationally taxing. + These should be copied into a local variable and read from that instead. + Then, when an event that might change the value is detected, the local variable is updated instead. + From a performance standpoint, the effects are net-positive, since assignments potentially cover dozens of keys. + The memory footprint also isn't much different, while the assignment operations are carried out in spaced intervals. \ No newline at end of file