Skip to content
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

Marker/Trail Attributes Support Status in Jokolay #18

Open
16 of 42 tasks
coderedart opened this issue Jan 2, 2022 · 0 comments
Open
16 of 42 tasks

Marker/Trail Attributes Support Status in Jokolay #18

coderedart opened this issue Jan 2, 2022 · 0 comments
Labels
documentation Improvements or additions to documentation enhancement New feature or request
Milestone

Comments

@coderedart
Copy link
Owner

coderedart commented Jan 2, 2022

references to marker/trail attribute definitions.
https://blishhud.com/docs/markers/attributes/achievement
http://www.gw2taco.com/2016/01/how-to-create-your-own-marker-pack.html

This Issue will serve us in four ways:

  1. tracks the implementation status of the Marker and Trail Attributes.
  2. This will also serve as a discussion thread for "types" of attributes. eg: instead of having a xpos, ypos, and zpos, we can just say pos = [f32; 3]. we an use such typed improvements to make json format simpler and the structs themselves much eaiser and safer to deal with.
  3. display the direct relation between json and xml marker formats, especially what guarantees we can provide when we convert a json to xml pack or viceversa. and any information loss in the process of doing so.
  4. document all the attributes and "why" they exist. in what ways they are supposed to be used. and why we support them instead of alternatives.
  5. document why we refuse to support certain attributes.

For an attribute to be supported, we must consider its impact in 3 areas:

  1. how will it affect the json/xml pack storage formats. how unambiguous will it be compared to other ways of doing the same thing. how easily is it reproducible between xml <-> json conversions.
  2. how will it impact the compexity at runtime. how much of a performance impact will it be. this includes cpu/gpu/ram and disk writes usages.
  3. for the future overlay developers, will this make it easier for them or harder? because things can only get so complex before devs of overlays (including jokolay), just give up and move on with their life. we are talking about making a stupid mod for a very casual barely alive MMO. for our own sake and future maintainers, lets try to go for simplicity and avoid weird corner cases.

First, we will focus on Markers. these attributes are being worked on at the moment.

  • (xpos: f32, ypos: f32, zpos: f32) - position of the marker in world space. required
  • mapId: u32 - the map id in which the marker exists. required
  • type: string - format "cat1.cat2.cat3" when we want the marker to inherit attributes from cat3 which is a child and inherits from cat2, which is a child of and inherits from cat1. attributes only get inherited if they don't exist already. categories are necessary so that we can only show markers from categories which are enabled in the menu. required.
  • iconFile: path - image used as texture for this marker. only png files supported for now. optional.
  • iconSize: f32 - default size/scale of the icon. atm, doesn't have units like meters or inches. default 1.0. optional
  • alpha: f32 - how opaque you want the object to be by default. between 0.0 (fully transparent) to 1.0 (no transparency. default). optional.
  • fadeNear: i32 - in inches (ingame unit). at this distance from player the marker starts to fade out. negative numbers means it never disappears. default is -1. optional.
  • fadeFar: u32 - in inches (ingame unit). at this distance from player, the marker completely fades out. negative number means marker won't disappear at any distance. default is -1. optional.
  • minSize: u32 - pixels. marker icon, if visible, must be atleast minSize pixels in size. optional.
  • maxSize: u32 - pixels. marker icon, if visible can't be bigger than this. optional.
  • color: string in format "#rrggbbaa". just use a online color picker and they will give you the hex codes of a color. color tint of marker. optional
  • mapDisplaySize: u32 - size on minimap/map. optional
  • mapFadeOutScaleLevel: u32 - at what zoom level will marker start fading out. optional
  • achievementId: u32 - id of achivement in gw2 api. needs apikey. hides the marker if achivement already done. optional
  • achievementBit: u32 - bits representing partial completion of achivement in api. optional
  • resetLength: u32 - for beheavior 4, this tells how long marker should not appear after F. for behavior 5, it represents how long the map cycle is. optional
  • autoTrigger: bool - tells us if going near marker triggers it. quirk: the triggers need more explanation if its going within a range or pressing F etc..optional
  • hasCountDown: bool - whether we should display countdown timer when we trigger it. optional
  • triggerRange: f32 - distance at which the marker is triggered by the player. need to check if inches or meters. optional
  • toggleCategory: bool - marker should appear in mini map. optional
  • infoRange: f32 - distance at which info should be displayed. optional
  • info: string - show info when within info range
  • copy: string - copy this string to clipboard when triggered
  • copy-message: string - show this message when copy is triggered.
  • schedule: string - cron expression that tells us times when marker should appear
  • schedule-duration: f32 - number of minutes that the appeared marker from cron expression should stay alive before going back to hiding.
  • tip-name: string - heading of the tooltip to be displayed when cursor is above this marker.
  • tip-description: string - contents of the tooltip above.
  • mapVisibility: bool - marker should appear in main map.optional
  • miniMapVisibility: bool - marker should appear in mini map. optional
  • inGameVisibility: bool - marker should appear in game. optional
  • guid: Uuid - used as a unique id for this specific marker. to refer to/store in activation data etc.. optional.
  • behavior - integer. it describes the way the marker will behave when a player presses 'F' over it. The following values are valid for this parameter:
    [ ] 0. the default value. Marker is always visible.
    [ ] 1. 'Reappear on map change' - this is not implemented yet, it will be useful for markers that need to reappear if the player changes the map instance.
    [ ] 2. 'Reappear on daily reset' - these markers disappear if the player presses 'F' over them, and reappear at the daily reset. These were used for the orphan markers during wintersday.
    [ ] 3. 'Only visible before activation' - these markers disappear forever once the player pressed 'F' over them. Useful for collection style markers like golden lost badges, etc.
    [ ] 4. 'Reappear after timer' - This behavior makes the marker reappear after a fix amount of time given in 'resetLength'.
    [ ] 5. 'Reappear on map reset' - not implemented yet. This will make the marker reappear when the map cycles. In this case 'resetLength' will define the map cycle length in seconds, and 'resetOffset' will define when the first map cycle of the day begins after the daily reset, in seconds.
    [ ] 6. 'Once per instance' - these markers disappear when triggered but reappear if you go into another instance of the map
    [ ] 7. 'Once daily per character' - these markers disappear when triggered, but reappear with the daily reset, and can be triggered separately for every character

Trail attributes are mostly same.

  • type: string - reference to the category just like marker. required
  • guid: Uuid - a unique id. required
  • trailData: path - file that contains actual trail data which represents the route. without this, trail has no meaning. required
  • texture: path - similar to iconFile ofmarker. optional
  • animSpeed: f32 - i have no idea what this is. optional
  • trailScale: f32- width of the trail. need to find out what units to use for this. optional
  • color: u32? - need to check. but similar to marker's color.
  • fadeNear: i32 - similar to marker.
  • fadeFar: i32 - similar to marker

Attributes that will not be supported.

  1. bounce (height, duration, delay).
  2. canFade
  3. Cull
  4. InvertBehavior
  5. HeightOffset
  6. GUID
  7. MapType
  8. show/hide
  9. rotate (x, y, z)
@coderedart coderedart added this to the Alpha 0.3 milestone Sep 13, 2023
@coderedart coderedart moved this to Todo in Jokolay Sep 13, 2023
@coderedart coderedart moved this from Todo to In Progress in Jokolay Sep 14, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation enhancement New feature or request
Projects
Status: In Progress
Development

No branches or pull requests

1 participant