Check OUTLINE.md to get an overview of everything.
see github projects (outdated)
- OSX .dmg
- Custom application icon
- Fancier GUI
- Better widgets ("real" buttons)
- Nicer icons (I'm not an artist)
- isReachable optimizations:
- do not call into Lua from updateLocationState(): prebuild cache
- invalidate only parts of _reachableCache when toggling items?
- update location state on next frame instead of immediately (start of auto-tracking)
- try to determine if location state needs update?
- show version somewhere in the app
- MemoryWatch: only run callback if all bytes of a watch have been read to avoid potential races (this has to add race-free bool to SNES::readBlock)
- auto-tracking for N64?
- pins
- notes
- background color of groups/titles
- alignment of widgets inside widgets
- Makefile: 32bit exe (static linking is currently somewhat broken)
- Show error (+reason) when loading a pack fails
- Log/console/error window as part of the UI
- Remove toolbar and put everything inside a context menu on desktop?
- Update websocketpp, update asio (or use a different websocket implementation)
- included websocketpp is patched to allow std::thread on mingw
- included asio is the latest one that works with websocketpp 0.8.1
- Item:
swap_actions: <bool>
(swaps left and right mouse button, alttpr) - Map/Locations:
- number overlay on map (X unreachable red, Y reachable white)
- Move (more) non-shared stuff from BaseItem to JsonItem
Lua_Interface::PropertyMap
to get rid of uglyLua_Index
andLua_NewIndex
- Fix UI stuff
- build with
-D_FORTIFY_SOURCE=2
,-pie
, ASLR, RELRO ? - fuzz lua and json interfaces
- custom html, to only have canvas. Use js console for stdout and stderr
- sync sdl window with html canvas (size)
- mount config dir to IndexDB
- implement SD2SNES/websocketpp for wasm
- see ap-soeclient as an example
- implement pack loading
- fix the UI tree not being stable until rendered once (could be fixed with
relayout
, should be fixed inaddChild
)
- move image loading out of widgets and just assign an abstract image that has the implementation
- some code should be moved between Widget <-> Container <-> containers
relayout
should probably be virtual, travel down and do stuff as expected unless overridden- populate hgrow/vgrow in the same step as minsize/maxsize
- see UILIB.md#Concepts
- for correct auto-sizing we will need
- allow variable size X/Y:
_growX
,_growY
- detected min size:
_minSize
- manual min size
- detected max size
- manual max size
- preferred size:
_autoSize
somewhat, but not in use for layout - actual size:
_size
- allow variable size X/Y:
- problems regarding auto-sizing as-is
- some widgets will change size during rendering
- containers do not subscribe to all signals, so changing a child does not trigger relayout
- when to
relayout
is not really decided - a uniform logic for relayout has to be found
- a lot of hacks to make the current model somewhat work (see
// FIXME:
s and// TODO:
s in source)
- Responsive UI
- Toolbar hover/pressed
- Pack-loading button-widget
- Item::ID in json? Auto-generated at the moment
- Location::ID in json? Concat of names at the moment
- Unique ID for actual drops (locations' sections' checks) so we can have the same drop on two maps (detailed and overview)
- Location/section help/info (requirements to reach it)
- enum class Ui::MouseButton in Mouse Events (instead of int and C-style enum)
- enum flags Ui::Map::LocationState with operator|
- (Evermizer:
settings_popup
) Layout:header_background
- (Evermizer) Layout: header_content: adds a button to the header