One feature that would be really helpful would be the ability to sort enemy lists - especially by enemy level, but sometimes also by attributes ("strong," "angry," "shielded," etc.) or possibly type (not currently useful, but perhaps in the future if/when the various enemy types become better differentiated). This is the sort of QOL feature that would be really helpful when, for example, I'm in a region with enemies at level k through k+3, but I'm only strong enough to be able to (regularly) kill enemies up to level k+1. To be honest, having to constantly search through the (currently unordered) list to find enemies at the appropriate level gets old fast.
From a framework perspective, I imagine that sorting enemy lists is pretty trivial. But what's the best way to enable this at the UI end? After thinking about it for a bit, I've come up with an idea that I think presents a good opportunity to provide access to this feature, while at the same time enhancing the aesthetic of being in the "Visual Studio" environment.
It mimics VS' autocomplete functionality to provide an opportunity to the player to apply a method to the list to sort it by their desired attribute. Here's an example/walkthrough.
(Note I mocked up these screenshots in a very quick-and-dirty manner by hacking around in my browser's DOM explorer in real-time; so it's only intended to be a rough conceptual example; the actual final visuals would obviously end up looking different; ideally with better fidelity to the Visual Studio popups, for example.)
So. Say I'm in an area with the following unordered enemy list:
![](https://user-images.githubusercontent.com/2687681/90948714-c08ebe00-e3fe-11ea-8486-ede0d34579c3.png)
If I want to sort it, I can click on the identifier name (enemies = [
) which, when I hover over it, becomes highlighted to indicate it can be interacted with:
![](https://user-images.githubusercontent.com/2687681/90949051-1153e600-e402-11ea-9f44-55167a3c3137.png)
Clicking on the identifier takes me down to the bottom of the list, appends a dereferencing marker (e.g.: a dot) and an autocomplete list of methods that one can call on the list. For example, I've been talking so far about sorting it, but since rescanning the list is functionality that already exists, one could conceivably add it as a method here as well:
![](https://user-images.githubusercontent.com/2687681/90949087-7f001200-e402-11ea-8f36-32e81d802cc1.png)
Clicking on the sort()
entry in the autocomplete list fills in that method name, and if there are parameters (which, for example, the sort()
method might have, but the rescan()
method might not), adds an ellipsis in the parameter space, which again becomes underlined on mouse hover, to indicate it can be interacted with:
![](https://user-images.githubusercontent.com/2687681/90949116-d7cfaa80-e402-11ea-9f39-249da19cdbf7.png)
Clicking the parameter list ellipsis again opens an autocomplete list containing the valid parameters for that method:
![](https://user-images.githubusercontent.com/2687681/90949134-064d8580-e403-11ea-9f76-1a4de48987c7.png)
The player clicks on the desired parameter, which gets filled into the code. The sort()
method now has a valid and complete signature, so its name changes colour to indicate it is callable (and of course becomes underlined on mouse hover):
![](https://user-images.githubusercontent.com/2687681/90949155-43b21300-e403-11ea-9a89-6f489d105982.png)
The player clicks on the method to execute it, and voilà! The list is sorted:
![](https://user-images.githubusercontent.com/2687681/90949164-5a586a00-e403-11ea-89dd-6cd8841c2264.png)