forked from roninpawn/splitRP
-
Notifications
You must be signed in to change notification settings - Fork 0
/
To Do.txt
176 lines (170 loc) · 10.9 KB
/
To Do.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
~~~TO DO~~~
-Easter eggs. (Random "Speedrunning!" messages.) (Tiny RP logo spawns in random location. - Links to donate page?)
~~~BUGS~~~
-testActive() uses == for game's window title. 'in' would cover more possibilities, but also cause problems?
-Patterns used twice will store last "enabled" state in toggleable list.
-Closed settings-window sliver can appear on-top of load-file dialogue.
-'Pause when inactive' is dependent on 'lock_to_window.' Can it be independent?
~~~HELD~~~
-Error screen, inverse background color. Raises to top on error states. Implicitly blocks buttons and stuff.
-Split by world.
-Export adjusted resolution patterns.
-Alternate application skin.
-Better pattern rescaling algorithm. (Scaling down = math.ceil, scalping up = math.floor)
-When pattern is 'active,' move pattern on-screen if not. (if scrollbar)
~~~DONE~~~
--Try w/out monochrome conversion. (from greyscale)
:No change in CPU utilization. Additional issues arose. Kept monochrome operation.
--Built-in OCR?
:Used Tesseract to train built-in OCR at 7-pixel resolution with self-correcting confidence system.
--Re-sort glyphs on import from highest confidence to lowest confidence.
:Done.
--Looser level complete recognition for every-frame detection.
:Switched to edge-detection, using mean of area around pattern's pixels.
--Detect exit level complete screen
:Detection is now frame perfect. While() loop added to prevent release until exit.
--Tally and sum times w/ redundancy
:Done.
--GUI
:Barebone GUI now functioning.
--Implement Live timer.
:Working. Needs OOP/concise representation.
--Better pattern testing. (Level 4:5 breaks edge detection.)
:Implemented edge + plane detection.
--Detect run begin
: Now detecting level select and pause menu/reset screen. Arm:Ready:GO!
--Detect end-game state
: Detecting "Clustertruck" pop-in at start of credits roll.
--Scaled Level Complete detection?
: Added one test for large state, one test for small. No buffer needed. (fingers-crossed)
--OOP-ify this thang.
: Done-zo.
--Output to Livesplit?
-Track PBs/Golds/etc?
: Outputting to livesplit. Let it handle that crap.
--Pause timer on Paused Game
: Added detection patterns.
--Account for Mouse in Timer Area? (Confirm MSS does NOT capture mouse.)
: MSS does not appear to capture the mouse.
--Global Key Inputs to trigger on/off/reset/etc
: Integrated reset key. No need for other key bindings.
--Disarm if pre-level_select screen.
: Done. States go Standby > Armed > Ready > Running. Resets to Armed. Also taught Main Menu for exit from pause.
--If last split, reset internal timer.
: Querying livesplit for runstate. Also using this to prevent internal timer start if splits not banked.
--Delete known false-positive splits? And add paused-time back to game-time?
: No. Require detection to be frame-for-frame perfect.
--End-game detection -- pick a frame that's more detectable?
: No. Detection is frame-perfect now. Reconsider if app fails to run at or above 60fps on other systems.
--Resolution support / screenspace detection / multi-screen setups.
: Basic pattern scaling and screen translation integrated. Different ratios will require new patterns.
--Optimize OCR
--Test resize responsiveness.
: OCR has been deprecated as part of this project.
--Alternate pattern testing for obscured "Level" text.
: Let them eat cake. If alternate patterns are required/desired, feel free.
--If Livesplit Server does not respond...
: Basic try: except loop implemented. Continuous connection attempts each 3 seconds.
--Load patterns from a config file.
: Simple import of config.py and patterns.py -- will want refinement.
--Tally Deaths
--Pause timer on Death option.
: Um, yeah. No. Maybe next release.
--Option to pause/disable if "Clustertruck" is not the active window.
: Created lock_to_window option. When active, leaving the window also pauses timing.
Also gave sub-option of autp-pausing gametime when outside of window.
--Toggleable auto-clicker, run-pausing, lock-to-game, pause on death, [?]...
: Auto clicker, lock-to-game added. Pause on death is not integrated.
Run-pausing is implemented (and disable-able) via actions of detection patterns.
--Installer package with windows executable AND configuration files.
: Patterns and settings are now loaded from external .cfg files.
--Screenshots dump of detected false frames.
: Integrated seperate dumps for false negatives and false positives at run-time.
--Better Clustertruck patterns (still)
: Integrated origin-edge. Centers detections to minimize impact of scaling.
--Window geometry should be saved for reopen in the same position.
: Basic write-back to settings.cfg implemented for window position.
--Livesplit connection needs to be able to close.
: Check for closing request added to reconnect loop.
--Auto-clicker sometimes misses. (Moving mouse.)
: Now fires three times in a row to be sure.
--Error trapping for file loading.
: Super-basic load-time testing added to display errorbox if files not found, then exit().
--Startup confusion. Drops into the running state, then reset causes lockup.
: Resolved itself, I guess? Seemed linked to single-file compiling, or at least made-worse-by.
--Appropriate (timerless?) GUI.
: Built.
--Disable pausing and final splits from GUI settings. (disabled/enabled, grouping)
: Visually implemented. Finish it.
--AND-able patterns?
: No. Just write a pattern that includes all requirements.
--Load configs/patterns from GUI.
: Created file_access object to sit between GUI and screen monitor code.
--Apply/save? changes to settings on insert of settings tab.
--Save settings on close?
: Toggles apply instantly, text-entry applied on insertion. Save on user-initiated exit.
--Disable 'reset to defaults' button on settings insert.
: Disabled on instantiate, then on every settings-insert.
--Pattern adjusments need to be processed on re-insert. (from originals/file values)
: Added pattern translation function call to load_patterns().
--Resolution validation should not allow negative numbers or zeroes.
: Donezo. Also, prevented leading and trailing white space on int().
--Status updates should report running on drop-through.
: Done did that thing.
--Reset Key settings option should do something on mouseover.
: Bg = different color on mouseover now.
--User configuration of false-split period? (in settings.cfg only?)
: Added to settings.cfg and accessing from file() object.
--Visual indicator / clear highlights on Reset.
: Clearing highlights on reset. Added 'None' value option to highlight_patterns() function.
--No-pattern-file needs handled.
: It's handled.
--Reset key held == recursion depth error.
: Created mainloop to call each state function when appropriate instead of nesting calls within calls.
--Non-compatible pattern-file loaded needs handled.
: It works, and I'm not quite sure why after loading a valid file, then an invalid one, it ceases function.
--Settings configs need empty/incomplete-handled.
: Populates with default values when empty or just a minus sign.
--Reset_key changes need to actually be stored, handled, and hotkeys detected at run-time.
: Hotkey stored as dictionary. Can't believe this functionality isn't just IN the keyboard library.
--Pattern list entries need to be uniquely identifiable if 2 share a title. (Attach run-state to pattern name)
: Added 19 spaces to each pattern title followed by state suffix. Sue me, it works.
--Change status updates to fit available GUI space.
: Done it.
--Pattern list should include a "running" visualization.
: Top pattern entry added manually and highlighted between runtime detections.
--'Power button' to pause/disable auto-splitter. (GUI pauses run status. Run-state is maintained.)
: Implemented "power" button at bottom to disable active state of speedrunning object. (Change graphics still?)
--Run-state, Pattern detected LED indicator
: Indicates in-game window state, run-state by color, and pattern detection by blinking.
--Checkboxes need to actually enable/disable active patterns and states need saved to pattern file.
: Done, but with a bug. Multiple uses of same pattern for different run-states means 'enabled' value is shared.
So on next load, all instances of that pattern will load the same, regardless of user's selection.
--Livesplit connection attempts must be non-blocking.
--Livesplit comms should fail safe, report a lost connection, and attempt to re-connect.
: Livesplit methods updated to these specs. (Report lost connection = patterns unload.)
--Change to livesplit_host in settings needs to reconnect on insert / be error trapped for invalid host.
: Tests host on first connect attempt. If fail, cease attempts.
--Livesplit LED working.
: Integrated directly within the livesplit client class.
--Display pattern-matches LIVE.
: After each state test, pattern is updated to last detection if detection is different than last, last detection.
--Bug hunt for weird states.
: Done to my satisfaction. Let the users eat cake.
--LEDs lose desired active state if Settings/Power button toggled.
: Active state and livesplit-connected state now change image to disabled-image, and store last-enabled state,
instead of actually enabling and disabling the LED.
--Ready/armed state LED flashes ~2.15 times instead of 3.
: Now testing last_detected and last_state. Last_detected does not affect blinking if blinking in progress.
Last_state overrides current blinking pattern by disabling LED and setting counter to -1. (+1 per to < 6)
--Is 'lock to window' even worth having?
: YES! Allows recorded-run timing when off, and provides best user-interaction behavior when on.
--Make .1 second debug test time configurable
: Configurable in settings.cfg file. No in-app settings option.
--Graphic re-re-redesign of power button?
: It's fucking perfect now! (Thanks Greg)
--Needs fancy 'SplitRP' logo for alt-tab menu and taskbar mouseover.
--Needs application icon.
: Yep, and yep.
--Special thanks pop-up on random mini-RP logo.
: Not random positioned, but even neater if I do say so muhself.