comparison Turok/readme.txt @ 6:a9b8b0866ece

clear out log jam
author Nenue
date Sun, 21 Feb 2016 08:32:53 -0500
parents
children
comparison
equal deleted inserted replaced
5:8a9a6637f082 6:a9b8b0866ece
1 Turok: Dinosaur HUD
2
3 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.
4
5 Project Goals:
6
7 - Focus bar with dynamic coloring and prediction lines based on talent effects
8 - Unit cast bars that are thematically linked with everything else
9 - Dynamically arranged tracking icons and sliders cooldown/aura information
10 - Quality-of-life alerts for Lone Wolf and Aspect of the Pack
11
12 Coding Conventions:
13
14 Although AceAddon modules are used, the addon is not truly modular.
15 The structure provides simple control over the internal loading sequence.
16 So if needed, "module" enables can be scattered over several post-load frames to make in-combat /reload less hazardous.
17
18 SavedVars data is arranged in a non-propagating hierarchical metatable.
19 Accessing a deeply-nested member will traverse its parents until one of them contains data.
20 The only exception to this is on lazy read expressions, such as:
21
22 > if (childtable.unsetvar) then
23
24 This will always yield a false, whether or not a value is assigned in its parents.
25 To check for hierarchical flag variables, you can compare the index against nil, like so:
26
27 > if (childtable.unsetvar ~= nil) then
28
29 The operation will trigger __index and a value from the hierarchy will be presented.
30 Any positive flag state will be copied down when direct assignment is used.
31 To get a useful flag state, you need to run the first logical expression within a ternary idiom:
32
33 > childflag = (childtable.unsetvar) and true or nil -- pulls the true flag value
34 > parentflag = childtable.unsetvar -- pulls any non-nil value
35
36 Another thing to note is hierarchical values are not assigned downstream.
37 If an empty child value is indexed, it will always traverse up the tree.
38 As a result, values consulted frequently will be computationally taxing.
39 These should be copied into a local variable and read from that instead.
40 Then, when an event that might change the value is detected, the local variable is updated instead.
41 From a performance standpoint, the effects are net-positive, since assignments potentially cover dozens of keys.
42 The memory footprint also isn't much different, while the assignment operations are carried out in spaced intervals.