AsherGlick / Burrito

An overlay tool for Guild Wars 2 that works on linux
GNU General Public License v2.0
79 stars 18 forks source link

Categories with no POIs and map splits #346

Open klingbolt opened 2 weeks ago

klingbolt commented 2 weeks ago

Description

It has been observed that categories which do not contain any POI (Point of Interest) children are not written when the files are split by Map ID. This data then is lost when the split files are recombined.

Current Behavior

When xml_converter is splitting by map_id, the program is iterating over every POI and writing it to a dictionary "map_id : category_name: [POI]. Then it iterates over that dictionary by map_id.

User Stories

I believe there are at least 3 cases where a category may not have any POI's.

  1. The Category is newly formed
  2. The last POI was just deleted from a Category
  3. The Category is only being used for display

As an example for number 3. The pack "TehsTrails", uses categories to show the credits for the pack creator and those who assisted him as well as contact info. This is all shown using the attribute DisplayName so the info can be shown in the category selector.

Potential Solutions

I've brainstormed a few possible solutions and some complications that arise

  1. Write all categories to a Map_ID of 0 This would solve the data preservation problem but would those categories would not be visible on any map
  2. We save all categories but don't only save the POI children for each Map ID This would solve data preservation and show across all maps but would increase the file size on all maps and potentially slow down the program. This would also then show categories that are map specific, potentially cluttering the UI.
  3. We do a check for categories that haven't been written to any Map_ID and specially include them in each file. This could cause the converter to run slower as there is another search it has to do.
  4. We add a flag indicating that a category should be considered global until there is a POI added to it. This could have unintended categories added. For instance if there is a category with no POI but all of its children do, should it be included or excluded. This might also be useful making a marker pack as categories that are only for organization would persist globally.

I hope to get some other opinions on this and hear other possible solutions.

AsherGlick commented 2 weeks ago

A 4th reason why a category would not have any markers in it is if there are no markers in that category on that map when using map split.

Does this happen for non map-split markers too?

1) This only works for map-split 2) I dont like this idea because it creates a lot of duplicate data in each map file, and then the burrito ui is in charge of pruning that so we are in the same spot as before but with more written data 3) This does not seem like a good idea either, the logic for map split would be "only include this category if it has any markers in it that are on this map unless it does not have any markers in it". 4) How would this be any different from 3 from a speedup standpoint (as 3 was called out for being slow). Additionally this would add complexity to the converter if it were being automatically managed as the converter would need to know when to strip these, which is just option 3 with extra work.

I think that there is also a user story for "I made a marker category on one map, which has markers in it, but now I am on a different map and want to use that category".

I also think that using category / displayname for credits is a bit hacky and not desirable in guildpoint. We might want to just think of a better solution for that problem specifically, which then makes the other usecases intended or ephemeral .