-
Notifications
You must be signed in to change notification settings - Fork 8
[WIP] Feature/add ns timeline #13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: Beta
Are you sure you want to change the base?
Conversation
|
My initial idea wasn't that you select one of the saved reminders to display those but instead it takes the ones that have already been processed and thus verified to actually show to you in the upcoming pull. But I guess both options could exist at the same time. Because right now this requires the user to actually have those reminders imported into the addon which would normally only be true for the raidleader. I think that by default it should only show your own Reminders and it should probably also display when each boss ability happens as well to get a better idea of the encounter flow (can get data for that from viserio). Scrollwheel is currently scrolling sideways, which felt awkward when importing a bigger reminder string I had but if it's only showing your own reminders that's probably better this way so not sure if it should be changed. I do think there is value to showing ALL reminders as well though, but it shouldn't be the default |
|
OK, that sounds good, thats why i was eager to get a little prototype going asp, so we can have a discussion on the actual timeline. I also have the raw boss ability timers from warband.io - i check if i can implement them easyly, but then we need to somehow make the phase starts movable, since they are often depending on boss HP % or so. |
|
Something like that? Unbenanntes.Video.Mit.Clipchamp.erstellt.4.mp4 |
Be aware that you will need to use my boss data, not yours. But yes, the phase line needs to be adjustable, i think just having it be freely adjustable however you want is fine. we dont need a min/max on the addon, although i do have it on website. And maybe the export of the CDs should include phase pushtimers, and then the timeline will default to that unless you move it? Only the two birds, and likely the last bosses have variable phases. //Viserio |
In the end we all want the same: Dont know if our data will really differ (since they are from the same game 😅) but you can also give me the timers and I'll add them from your data source. |
|
"Dont know if our data will really differ..." Its not as simple as just looking at boss cast. So if you explain what data you need, and in what format, i can give that. i'm thinking you need: You just show me a format you want it in, and i'll convert to that and give you an example boss |
I have now a format like this: local _, NSI = ... -- Internal namespace
--------------------------------------------------------------------------------
-- VAELGOR & EZZORAK (3178)
-- Dual-boss fight, Shadowmark phase at ~2:13
--------------------------------------------------------------------------------
NSI.BossTimelines[3178] = {
duration = 280,
phases = {
[1] = {name = "Phase 1: Dual Bosses", start = 0, color = {0.23, 0.51, 0.96}},
[2] = {name = "Phase 2: Shadowmark", start = 133, color = {0.94, 0.27, 0.27}},
},
abilities = {
-- Phase 1 - Dragon (Vaelgor)
{name = "Vaelwing", spellID = 1265131, category = "movement", phase = 1, times = {6, 31, 83, 107}, duration = 3.0, important = false},
{name = "Tail Lash", spellID = 1264467, category = "tank", phase = 1, times = {9, 34, 59, 90}, duration = 2.0, important = true},
{name = "Dread Breath", spellID = 1244221, category = "damage", phase = 1, times = {12, 56, 101}, duration = 4.0, important = true},
{name = "Nullbeam", spellID = 1262623, category = "tank", phase = 1, times = {18, 75}, duration = 3.0, important = true},
{name = "Nullzone", spellID = 1244672, category = "movement", phase = 1, times = {22, 79}, duration = 30.0, important = false},
-- Phase 1 - Hound (Ezzorak)
{name = "Void Howl", spellID = 1244917, category = "damage", phase = 1, times = {28, 73, 119}, duration = 3.0, important = true},
{name = "Rakfang", spellID = 1245645, category = "tank", phase = 1, times = {37, 62, 87, 112}, duration = 2.0, important = true},
{name = "Gloom", spellID = 1245391, category = "damage", phase = 1, times = {41, 91}, duration = 3.0, important = true},
{name = "Gloomfield", spellID = 1245420, category = "movement", phase = 1, times = {45, 95}, duration = 20.0, important = false},
-- Phase 2
{name = "Shadowmark", spellID = 1270497, category = "soak", phase = 2, times = {0, 6, 12, 18, 24, 30, 36, 42}, duration = 5.0, important = true},
{name = "Vaelwing", spellID = 1265131, category = "movement", phase = 2, times = {46, 71, 96}, duration = 3.0, important = false},
{name = "Nullbeam", spellID = 1262623, category = "tank", phase = 2, times = {7, 50}, duration = 3.0, important = true},
{name = "Nullzone", spellID = 1244672, category = "movement", phase = 2, times = {11, 54}, duration = 30.0, important = false},
{name = "Dread Breath", spellID = 1244221, category = "damage", phase = 2, times = {15, 21, 61}, duration = 4.0, important = true},
{name = "Void Howl", spellID = 1244917, category = "damage", phase = 2, times = {3, 78}, duration = 3.0, important = true},
{name = "Impale", spellID = 1265152, category = "tank", phase = 2, times = {32, 57, 85}, duration = 2.0, important = true},
{name = "Rakfang", spellID = 1245645, category = "tank", phase = 2, times = {52, 80}, duration = 2.0, important = true},
{name = "Gloom", spellID = 1245391, category = "damage", phase = 2, times = {56}, duration = 3.0, important = true},
{name = "Gloomfield", spellID = 1245420, category = "movement", phase = 2, times = {60}, duration = 20.0, important = false},
},
}I created a class for every boss but you can also just give me the bosses in the format you got and I'll extract the data I need for the addon via scripts. |
|
i should make the script myself so i can update the data for Reloe during the raid tier. I can look at it after raid (in an hour or so) |
|
@SweeD Made an example here, I guess you cna just test with this, or your own example there, then when done i can push the rest of the timers. Oh, and i added a Difficulty flag |
|
Oh, and guess one thing to note is that some of them like the last 2 rows of abilities. Same name + id, but different type. |
29c7435 to
8f2f1bc
Compare
|
@Reloe @Rgornitzka i pushed my latest changes with some changes for the format changes from your example data |
|
Played around with it and compiled some notes.
These two i don't know if its worth dipping into the endless hole of trying to make it good UI/UX, or if its better to stick to a simple design.
I had removed the "important" tag in the data i gave earlier, but i see the point of it in this view where you might want to filter for important (as a default setting) to conserve vertical space. Should i add that to the boss data? Overall, lovely! Will be a lot nicer than reading the mrt note. |
|
My Reminders / All Reminders should already be the correct wording imo. |
|
You probably wanna add smth at the end of the NSI:ProcessReminder() function to update the timeline display. Right now the timeline doesn't update when user selects/deselects some of the options regarding what will actually show to them. And that function is basically run on every settings change so should be consistent to get the timeline updated |
Addressed
Not addressed (yet?)
Open questions
|
- add category keyword parsing for compound categories (e.g. "raid damage, debuffs") - expand category colors for new keywords (tankbuster, group soak, etc.) - add difficulty field support with display in window title - add Belo'ren (3182) example timeline data
- remove phase name and color fields (now optional) - remove important field from abilities - use integer durations instead of floats - remove duplicate Belo'ren data from BossTimelines.lua
- change default phase marker color from grey to red for visibility - filter out boss abilities that occur after the next phase starts - allows dragging phase markers to dynamically hide ended phase abilities
- add Timeline tab to main NSUI panel next to Encounter Alerts - support nested difficulty structure (Mythic/Heroic/Normal) for boss timelines - add GetBossTimeline() with auto-detection and fallback chain - add embedded timeline refresh functions for the new tab - update all boss timeline files to new difficulty format - fix timeline positioning and layout in embedded view
2fd28cd to
7240321
Compare
Can you give me more context / example? |
|
https://i.imgur.com/urAa3OM.png - Phase seems to not work correctly, on Chimaerus at least. It's stacking 3 of these on top of each other (I have them assigned around the same time for phases 1, 2, 3)
If timeline is in the main window as it is now, this would become irrelevant. Previoulsy the display was not getting updated when it should've been (because the user could be making changes in the main window while the timeline is open) but now the display is forced by swapping tabs. Difficulty is just added on the first line, so for example: I currently do not store this anywhere, I just name it based on this. So for the import example the reminder would end up being named "Chimaerus the Undreamt God - mythic" - think viserio already said he will be using the shortened bossnames though. Zooming in can sometimes be a bit awkward because it reorientates itself whenever you zoom in so if you zoom in on the left side of the screen and scroll 4-5 times, you don't actually end up at the time that you started zooming in on. It might be better if the timeline was just a button to access it somewhere else instead of being it's own tab. Same can be said about other things in the addon though tbh. Tabs are kinda getting bloated at this point and this adds a 3rd row |
@Reloe can you give me the import string you used - makes it more easy for my to reproduce.
I'll add support for it then. What are the strings? mythic/heroic/normal ?
How do we want the default behaviour here? Zooms in on the middle or zooms in on the mouse position?
So are we going to take it out the main window again or let it in there for now? If we take it out, where do we put the button and dont we wanna keep |
I imagine the string will be Mythic/Heroic/Normal on the next update, but would have to ask viserio I think you want it to zoom in on the mouse position but the "relative" position has to stay the same. So basically if I choose a time to zoom in on, the position of that time should stay the same so the mouse does not need to be moved between multiple zoom-events. I don't really mind whether it is in the main-window or not. /ns timeline can be kept either way. There's advantages to both. |
For that reason, a popover with an adjustable window size, might be better?
|
|
The goal of seeing your spells assignment position, in relation to boss spells and combat timer, becomes impossible because of a few issues right now
I can add an "important" tag to the spells and we can have that as a default toggle on, to condense the list of spells in the boss timeline as well. I dont want to overkill it on the logic for the timeline, but i think these might all be necessary. |
|
Following things got changed:
Not implemented | ToDos:
Open things:
@Rgornitzka i cant find any review/pr or anything above. Maybe it was gone when i changed the Timeline format to also support difficulty? Please check the latest boss data to see how the difficulty should be used. Can you please change your data format and recreate review or PR into my feature branch?
@Rgornitzka that might be nice, i could then add a dropdown to only show important casts or so. (see above in todos) |



I used the DetailsFramework and implemented a prototype version of a timeline.
You would open it with ´/ns timeline´, has the current loaded remidners active and a dropdown to select another imported reminder set.
@Reloe what do you think about the approach?
What would be needed for a first version?