GithubHelp home page GithubHelp logo

trippsc2 / opentracker Goto Github PK

View Code? Open in Web Editor NEW
35.0 4.0 8.0 20.67 MB

An open-source cross-platform tracking application for A Link to the Past Randomizer.

License: MIT License

C# 100.00%
opentracker autotracker gui tracker

opentracker's People

Contributors

dependabot[bot] avatar jimfasoline avatar trippsc2 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

opentracker's Issues

Right-click doesn't work (Linux, maybe NixOS-specific)

I have packaged OpenTracker for NixOS, but I have found that right-click doesn't work on anything. At first I thought it was because I was using a trackpad, but plugging in a mouse didn't work either.

I can't tell if this is rooted in OpenTracker, Avalonia, or just .NET in general, but I figured I'd start here. If this is the first time the issue has come up, it's probably the way I've packaged it, as NixOS needs an explicit list of dependencies to build things. That said, I'm starting from the .deb provided in the GitHub releases (version 1.5.2, specifically), so anything bundled in it should be working.

Dungeon Item Shuffle states

In current OpenTracker, the following can be selected for Dungeon Item Shuffle:

None, Map/Compass, Map/Compass/Small Key, Keysanity

I often do modes that shuffle big keys but not small ones as a 'keysanity lite', and it's possible for maps to be shuffled w/o compasses and vice versa. Could this be refactored to instead be checkboxes for each shuffled item? (Maps, Compasses, Small Keys, Big Keys).

Maybe "Shuffle Bosses" can be thrown in here at the same time so everything affecting the dungeon part of the tracker is in the same place, but that's more a cosmetic thing.

Inverted + Activated Flute logic

image
Inverted, I glitched a bit to activate my flute. Misery Mire should be reachable, so should "Aga tower" and a few more places on the mountain.

Saving to folder without rights

trying to save/save as... to a folder without having the proper write rights just closes the menu and pretends like a save was done. But no file was written.
[Windows 10]

Can't mark items you know from hints

If you know what an item is from a hint, you can't mark it in the tracker unless it's an item that you would normally be able to "see" like ledge outside of desert palace.

Autotracking status indicator on main ui

When autotracking dies for various reasons, there does not appear to be a way to tell its status on the main window. Would be nice to easily tell that something went wrong; potentially with a quick way to reconnect.

Feature request: Dropdown tracking

In entrance shuffle, since you have easy access to information about 7/8 dropdowns (uncle, sanc, LJ, forest, well, bat, fairy, ganon) early in the game, keeping track of which ones you've found so you can learn what the pyramid dropdown is by process of elimination can be extremely valuable information.

CodeTracker enables this by adding a "Dropdowns" list of icons that you can check off as you find them (see the bottom right of https://imgur.com/a/zpAgzgE ). It would be nice if OpenTracker added an option to include a similar list. (Note that this list has no logic, it's simply a row of dropdown icons you can mark off as you find them).

Cannot mark a location as checked unless it is in logic already

With hints on sometimes you know what is in a location before you can logically get there. With how it is currently set up you cannot mark off things unless logic says you have access to them. For instance, I had a hint pop up that there was cash in the mimic cave. Since I didn't have access to turtle rock yet I was unable to mark that spot as checked/collected/ignored/whatever.

Feature Request: Change layout of items list

For vertical orientations it would be nice to have the ability to have the items in 1 or 2 vertical lines instead of in the traditional layout. This would let it be even thinner and would be awesome for flexibility of twitch overlays. Being able to create an entirely custom layout of items would be amazing.

Add tooltips to map locations

Had a recent inverted seed with some rather twisted logic, where I ended up getting stuck and having to consult the spoiler log, as I had done literally everything available on my tracker. Turns out a very important item was on floating island, which in inverted is modified to not need the mirror (bridge over to mainland), but the tracker didn't show it as available.

I did not have the mirror or moon pearl at that time, but did have mitts and DM access, so the intended logic was to walk across dark Death Mountain (stairs to Aga1, head east dodging lynels), fall down and take the southeast DM portal, traverse paradox cave as a bunny, and grab the item from floating island.

OpenTracker appears to require pearl + mitts + hammer for floating island (inverted), but you don't need pearl or hammer if I'm reading things correctly:

  • dark Death Mountain access plus mitts gets you access to light east DM, which grants floating island. Plus with the SuperBunny glitch, you can get spiral cave and 5/7 chests in paradox cave (not the ones you have to bomb open).
    • Related: if you SuperBunny in Kakariko well, you can get both the items in Lost Woods. Not sure how much you care about tracking this sort of thing though...
  • dark DM access is lamp + glove, or flute + pearl + Kakariko access
Seed spoilers...

  • Both gloves in Hype Cave
  • Lamp at Digging Game
  • Mirror on floating island
  • Agahnim required for light world access via castle/pyramid portal
  • Moon Pearl in Mire Shed (requires taking the Aga1 portal, walking to desert as a bunny, and mirroring!)

Loving the tracker, especially how it's cross-platform! Wish there were an option to show location names on mouse over, so I don't accidentally click the wrong thing.

Seemingly Random Avalonia Exception

So, I just had the application crash on me, closing without trace.

No error message and as far as I can tell no error log either, unless it is somewhere I didn't find it.

So, some way to report such issues in the future would be nice.

Aga Tower Autotracking Issue

The checks for Aga Tower seem to keep getting decremented by 8 and sometimes 12 when doing checks inside Tower of Hera when race illegal autotracking is on. I've noticed Aga Tower checks going into the negatives between -6 and even -10, and I think I finally pinpointed it to anytime a check is done in Tower of Hera.

Entrance tracker logic error for purple chest

Repro steps: In OpenTracker 1.5.0, enable entrance tracking and click the entrance for hammer pegs (like you would if you found a connector that exited at hammer pegs in crosskeys). The purple chest icon appears as green immediately, even if you don't have any lift upgrades to gain access to the smith prerequisite to purple chest.

Also, it would be nice if logic was added for the smith in entrance shuffle; the icon is there (where the frog's at in the dark world) in non-entrance shuffle, but it's missing in entrance shuffle.

Autotracking in Linux (Ubuntu 20.04)

When enabling auto tracking I get an unhandled exception as soon as it connects to QUsb2snes. The whole program closes up and this gets tossed as output to the CLI when I attempt to use autotracking. It displays Connected for a split second before this happens when it connects to QUsb2snes. I have successfully used QUsb2snes for multiworld in the past (I compiled it from source instead of using the windows version in wine).

Unhandled exception. ReactiveUI.UnhandledErrorException: An object implementing IHandleObservableErrors (often a ReactiveCommand or ObservableAsPropertyHelper) has errored, thereby breaking its observable pipeline. To prevent this, ensure the pipeline does not error, or Subscribe to the ThrownExceptions property of the object in question to handle the erroneous case.
 ---> System.InvalidOperationException: StartTimer can be only called from UI thread
   at Avalonia.X11.X11PlatformThreading.StartTimer(DispatcherPriority priority, TimeSpan interval, Action tick)
   at Avalonia.Threading.DispatcherTimer.Start()
   at OpenTracker.ViewModels.AutoTrackerDialogVM.Start() in C:\Users\Jim\source\repos\trippsc2\OpenTracker\OpenTracker\ViewModels\AutoTrackerDialogVM.cs:line 232
   at OpenTracker.ViewModels.AutoTrackerDialogVM.<StartAsync>b__63_0() in C:\Users\Jim\source\repos\trippsc2\OpenTracker\OpenTracker\ViewModels\AutoTrackerDialogVM.cs:line 237
   at System.Reactive.Linq.QueryLanguage.<>c.<ToAsync>b__223_1(ValueTuple`2 state) in D:\a\1\s\Rx.NET\Source\src\System.Reactive\Linq\QueryLanguage.Async.cs:line 1403
   --- End of inner exception stack trace ---
   at ReactiveUI.RxApp.<>c__DisplayClass9_0.<.cctor>b__2() in d:\a\1\s\src\ReactiveUI\RxApp.cs:line 103
   at System.Reactive.Concurrency.Scheduler.Invoke(IScheduler scheduler, Action action) in D:\a\1\s\Rx.NET\Source\src\System.Reactive\Concurrency\Scheduler.Simple.cs:line 254
   at System.Reactive.Concurrency.Scheduler.<>c.<Schedule>b__74_0(IScheduler s, Action a) in D:\a\1\s\Rx.NET\Source\src\System.Reactive\Concurrency\Scheduler.Simple.cs:line 37
   at Avalonia.Threading.AvaloniaScheduler.Schedule[TState](TState state, TimeSpan dueTime, Func`3 action)
   at System.Reactive.Concurrency.LocalScheduler.Schedule[TState](TState state, Func`3 action) in D:\a\1\s\Rx.NET\Source\src\System.Reactive\Concurrency\LocalScheduler.cs:line 32
   at System.Reactive.Concurrency.Scheduler.Schedule(IScheduler scheduler, Action action) in D:\a\1\s\Rx.NET\Source\src\System.Reactive\Concurrency\Scheduler.Simple.cs:line 37
   at ReactiveUI.RxApp.<>c.<.cctor>b__9_1(Exception ex) in d:\a\1\s\src\ReactiveUI\RxApp.cs:line 108
   at System.Reactive.AnonymousSafeObserver`1.OnNext(T value) in D:\a\1\s\Rx.NET\Source\src\System.Reactive\AnonymousSafeObserver.cs:line 54
   at System.Reactive.ObserveOnObserverNew`1.DrainStep(ConcurrentQueue`1 q) in D:\a\1\s\Rx.NET\Source\src\System.Reactive\Internal\ScheduledObserver.cs:line 577
   at System.Reactive.ObserveOnObserverNew`1.DrainShortRunning(IScheduler recursiveScheduler) in D:\a\1\s\Rx.NET\Source\src\System.Reactive\Internal\ScheduledObserver.cs:line 509
   at System.Reactive.ObserveOnObserverNew`1.<>c.<.cctor>b__17_0(IScheduler scheduler, ObserveOnObserverNew`1 self) in D:\a\1\s\Rx.NET\Source\src\System.Reactive\Internal\ScheduledObserver.cs:line 497
   at Avalonia.Threading.AvaloniaScheduler.<>c__DisplayClass2_1`1.<Schedule>b__1()
   at Avalonia.Threading.JobRunner.RunJobs(Nullable`1 priority)
   at Avalonia.X11.X11PlatformThreading.CheckSignaled()
   at Avalonia.X11.X11PlatformThreading.RunLoop(CancellationToken cancellationToken)
   at Avalonia.Threading.Dispatcher.MainLoop(CancellationToken cancellationToken)
   at Avalonia.Controls.ApplicationLifetimes.ClassicDesktopStyleApplicationLifetime.Start(String[] args)
   at Avalonia.ClassicDesktopStyleApplicationLifetimeExtensions.StartWithClassicDesktopLifetime[T](T builder, String[] args, ShutdownMode shutdownMode)
   at OpenTracker.Program.Main(String[] args) in C:\Users\Jim\source\repos\trippsc2\OpenTracker\OpenTracker\Program.cs:line 12
Aborted (core dumped)

Linux version attempts to read/write in places it may not have access

When running this program it attempts to read/write a .theme file to the directory the program is run from. It is clear that this file is used to keep track of what theme was used last time the program is run. Having an absolute location for this file that is somewhere typically read/write accessible to regular users like $HOME/.config/OpenTracker/Themes would allows this file to consistently be written to and read from regardless of what directory the user runs the program from.

A similar issue crops up when the user attempts to add custom themes. OpenTracker can find the custom themes only when it is run from the directory it is installed in. In the case of ubuntu it installs to /usr/share/OpenTracker and when you are in that directory and run OpenTracker is can see the custom theme (though it won't be able to save that you were using that theme due to the issue above). Most of the time this will likely be run from the $HOME directory though and not /usr/share/OpenTracker. Suggested fix would be to have it read custom themes from $HOME/.config/OpenTracker/Themes since a user would have access to that directory. As it is, to add a custom theme one needs superuser access.

Tracking Dungeons

Insides of dungeons are currently not automatically tracked. I assume this is done to comply with racing rules. I'd still like to see a togglable mode where it is possible to autotrack into dungeons for more casual and cooperative play. The suggestion keeps coming up in multiworld as people ask for a tracker than can do that.

For the time being we have this: https://berserkermulti.world/tracker/5amfk7CHTu-Xdcb9BDrv3w But something more on a per-player base would be nice.

Feature Request: SMZ3 autotracking support

I use the autotracker feature when playing the Super Metroid x ALTTP combo randomizer and it works great while ALTTP is loaded. When Super Metroid is loaded, I can't see my ALTTP inventory at all. I understand that any logic changes or an SM map tracker would probably be out of this project's current scope, but being able to see my zelda inventory while in SM would be a great addition.

View menu issues (Maybe Linux specific?)

With version 1.6.1 if I go to any of the view settings that have an arrow over to more settings (orientation, etc.) if I try and move the mouse over to the sub menu the sub menu just disappears.

Reverting to 1.3.0 (the last version that I had saved locally) doesn't have this issue. I'm able to mouse over orientation and select different settings.

Feature request: Improved feedback for saving/etc.

It would be nice if Ctrl+S would show an indication that saving tracker data was successful, perhaps as a toast message.

It would also be nice if the titlebar showed the currently open file, i.e. "OpenTracker - ...\Async\77.json"

Key Drop Shuffle

Can you add support for the new key drop shuffle with multiworld please :) thanks!

Window not rendering?

Tried opening the tracker today and the window is not being rendered, though on the taskbar it shows OpenTracker running. Desktop peek shows just a white screen (as shown in attached screenshot). opentracker

This is with 1.5.1. Tried reinstalling, including different directories and drives, and tried updating .NET core with no change. Also reverted to 1.5.0 and still had the same issue.

Pinned locations are not persisted by saving.

In the current multiworld async, I'm playing a crossed entrances inverted seed that doesn't have moonpearl.

I decided I'd pin light-world entrances that had items at them -- since I couldn't open the chests as a bunny. When I returned to the save today earlier, none of the locations were pinned.

Turtle Rock and Misery Mire seem to require all medallions?

Keysanity, No Entrance Shuffle, No sequence breaks or glitches. I'm pretty new to lttpr so I'm not sure what other info I should give.

Screenshot:
image

Turtle rock shows as inaccessible despite having the quake medallion. If I check off all 3 medallions then turtle rock shows as accessible.

Misery Mire shows the same issue.

Have I filled out the tracker incorrectly?
The code seems to indicate it should require a sword and any of the medallions to show accessible though I admit I don't understand what the Requirements QuakeTR and QuakeBoth are.

Thanks!

Feature request: Insanity entrance support

OpenTracker 1.5.0 currently has entrance shuffle support that allows tracking of individual entrances, but doesn't have separate entrances for linked dropdowns+exits. In insanity entrance shuffle, since dropdowns and exits aren't linked together (dropping down kakariko well and exiting can take you to the potion shop exit, for example), it would be very useful to add separate entrance icons for the dropdowns and their associated exits. See https://imgur.com/a/y8XzBoW for an example of the CodeTracker UI demonstrating these additional entrances for insanity mode.

(This also relates to #36 "Feature request: Dropdown tracking"; since insanity entrance shuffle also adds the Skull Woods dropdowns to the general dropdown shuffle pool, it adds an additional 4 icons for these dropdowns.)

Does not run on macOS: Read-only filesystem

Tried launching the app from Finder; after accepting the "application downloaded from internet" dialog (once -- after you accept it, it never appears again), it just quits. Subsequent attempts to launch it result in it instantly quitting.

Next attempt, launching from terminal:

% ~/Downloads/OpenTracker.app/Contents/MacOS/OpenTracker
Unhandled exception. System.IO.IOException: Read-only file system
   at System.IO.FileSystem.CreateDirectory(String fullPath)
   at System.IO.Directory.CreateDirectory(String path)
   at OpenTracker.App.OnFrameworkInitializationCompleted() in /Users/jim/Documents/OpenTracker/OpenTracker/App.xaml.cs:line 37
   at Avalonia.Controls.AppBuilderBase`1.Setup()
   at Avalonia.Controls.AppBuilderBase`1.SetupWithLifetime(IApplicationLifetime lifetime)
   at Avalonia.ClassicDesktopStyleApplicationLifetimeExtensions.StartWithClassicDesktopLifetime[T](T builder, String[] args, ShutdownMode shutdownMode)
   at OpenTracker.Program.Main(String[] args) in /Users/jim/Documents/OpenTracker/OpenTracker/Program.cs:line 12
zsh: abort      ~/Downloads/OpenTracker.app/Contents/MacOS/OpenTracker

Not sure if this is related to #5, but it occurs with both 1.2 and 1.1.2. Also I of course don't have a /Users/jim on this machine. I checked the Security & Privacy preferences but didn't see any prompts under full disk access, etc.

I installed the dotnet-core runtime but that makes no difference (and I get the same traceback launching with dotnet ~/Downloads/OpenTracker.app/Contents/MacOS/OpenTracker.dll). Looks like the runtime is included in the app bundle already?

Add more useful icons for use in entrance tracking modes

CodeTracker's ER Tracker has a handful of extra icons that can be used for marking entrances. These are useful for significant non-dungeon entrances, like Paradox Cave, various connectors, and locations like the potion and bomb shops.

It would be handy if a subset of these could be added when indicating what's at an entrance in OpenTracker. I asked Codemann8 ahead of time if they would give permission to use their existing icons and the answer given was: "i won't state that i will or won't, but they would have to ask me directly", further following up that a Discord PM was probably the best method of getting in contact.

Their Discord is at https://discord.gg/Fk4wTn6, and they can be PM'd at codemann8#3303

Misery Mire logic issues

I was playing today and noticed the logic for Misery Mire seems wrong. I had all the necessary items, but it was not highlighting as a place of interest.

Version: OpenTracker 1.5.1
OS: Arch Linux
Dotnet Core version: 3.1.108

OpenTracker-1 5 1-misery-mire-logic

feature request: entrance marker icon/image size

in entrance mode, is there any way to increase the size of the images used to mark entrances? I understand some areas are very tight on space and becomes a bit of a logistical challenge, but its also very difficult to read sometimes with how tiny they are, even when maximized to full screen on a second monitor.(for me at least)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.