-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO.txt
445 lines (241 loc) · 8.66 KB
/
TODO.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
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
arc tool
segment tool
change radius of stroke, drawing a tree, trunk is bigger than branches
if intersection is within VERTEX RADIUS of event, then go with intersection
other wise, project from event to existing road
minimize PNG resources for building, shipping
minimize code, libraries for building and shipping
obfuscate code
refactor into capsloc, deadlock, gridlock
for other games:
scratch-off
menu
interactive, drag car
in Stroke:
get[straight edge from vertex] working
get[drag start on vertex] working
how to handle multiple vertices?
get [start stroke on 2 vertices, start stroke on 3 or more vertices] working
get [end stroke on 2 vertices, end stroke on 3 or more vertices] working
get [move stroke through 2 vertices, move stroke through 3 or more vertices] working
handle simultaneous events in general?
clean up Stroke any more for modularization and refactoring?
FOR ALPHA 2:
rush hour clone
applet working
screen for selecting saved games, demos, etc.
store 100x100 preview inside of .dls for easy previewing in file browsers
generate .dls files for demos
unrolling turf animation for adding road
SOON:
handle exiting for panels and tools
when world is created, make sure tool is drawn, don't wait for a move
re-add BufferStrategy
add repaint logic, only repaint needed areas
profile cpu time
test track screen
tweak road friction, car speed, car friction, etc
monitor car speed
undo/redo
user actions
for CarProximityEvents:
broadcast from moving car to other cars.
If one car is moving, and one car is not moving, there should be a broadcast from moving -> not moving
This way, if no cars are moving, there is no check for CarProximityEvents
fix strokes
already filter out capsule events when there is a higher-precedent vertex to handle
but this is not completely correct
sometimes the capsule and vertex that have close events are not overlapping
when there is something like [ENTERVERTEX, ENTERROADCAPSULE, EXITVERTEX, EXITROADCAPSULE, ...
then test whether the vertex and capsule are overlapping
if they are not overlapping, then they are just close together and the capsule should not be ignored (this leads to overlapping roads BAD!)
add countdowns/monitors:
which car will be coming next from which source?
what is the capacity of the entire world?
what is the flow of each source/sink?
add flow meter to sinks
CarProximityEvent with crashed cars
deadlocks with crashes cars
enforce prohibition of roads and mergers beyond the world sides
enforce prohibition of roads on mergers
enforce only 1 road to fixtures
interesting problem:
currently, the car proximity test works by testing distances of the first car's GP to the second car's GP, based on the first car's path
so, if the second car is not somewhere on the first car's path, no proximity is detected
if world sinks are connected, so that some car can just pass through them on its way, then it may be in the middle of a sink when
another car is reaching it's path's end in that sink. And there are no stop signs.
The first car may be past the VertexPosition, and so it is nowhere on the second car's path
but the second car hasn't been sinked yet, so there is a crash
work on outlining:
for white edge of roads
water
fog of ware
snapping to width
snapping to height
resizing window
remember user actions, useful for undo, redo
debugging:
reversing from a crash
slowing down / speeding up simulation
LONGTERM:
rework the deadend detection, precompute it, combine code with cycle detection?
quad tree implementation
switch to using floats
switch to opengl
or at least add it
cleanup user input
DONE:
solver
joint track -> path code, deal with interections
make sweep events for Roads, not Road capsules
<kind of a break>
tools:
list total number of lines of code
list all imports
move canvas, controlpanel and methods to various screens
fix overlapping grass
done with Alpha 1
building
add real physics
add skids
animated grass
clear grass when adding roads and vertices
clear grass when skidding
profile painting problems
scripting:
saving to files
reading from files
lines and curves for roads
spline/curve editor
quadrant editor
fix seams in quadrant map for world and editor
add cubic curve cursor
for knobs (circle, quad, cubic):
gridify
objectify grid
zooming in makes grid change
keep grid squares about 64 pixels
48 - 80 pixels
only on grid within active quadrants
with grid on, switching to other cursors snaps to grid
and vice versa
add quad curve cursor
add circular road cursor
straightedge cursor:
allow starting in roads
draw capsules
remove Road-capsule code, use CapsuleSequence code
fix stopsigns in loops
draw a loop
stand-alone loop
self-intersecting stroke
decimate VIEW
profile FourByFourGrid init
delete merger connected to roads:
vertices stay behind
fix b2d box drawing showing that braked cars are moving
seems to be jbox2d problem
do not spawn if close to a crashed car
draw jbox2d aabb tree
actually remember both VertexArrivalEvents and CarProximityEvents
profile precomputeHitTestData when there are a lot of overlaps
separate out new precomputeHitTestData (which is currently buggy) from old
compare differences in hitMap
bring back real physics
need friction for crashes
fix problem with doing 2 straight edge cursors
the merging messes up
fix intersection problem with straight edge cursors
good car id painting while debugging
log driving events for easier deadlock debugging
car report
pausing
fix deadlock detection to get head-on collisions working
get proper cycle detection in to get 2+-cycles
fixture cursor:
switch directions
merger:
switch directions
figure out fixing VIEW.canvasToWorld when preview has been dragged
assert canvasGrassImage and canvasGraphImage are never bigger than canvas
fix viewport problems
cursor size independent of zoom
cursor leaving/entering canvas
zooming keeps canvasCenter constant
move out all of the PIXELS_PER_METER usage and draw shapes in world coords
no uses of AffineTransform
fix arrow directions
map on preview
better brake lights
add Quadrant class
fix issues with loops in roads
enforce prohibition of cars beyonds world sides
fixture cursor working with quadrants
add Quadrant
just 2x2 to start
call carProximityTest for each path, not each car
snap to grid for inserting intersections and sources/sinks
insert world sources/sinks
cursor with outline connecting source and sink along edge of quadrant
insert stand-alone intersections
1-way directional arrows for roads
hit key to change direction of arrows
hover over where signs and arrows would be, hit key to add them
fix being too close to stop signs (think I've done this)
handle 2 events:
accelerating through intersection, and close to another car
radius for cars to see car in front on same road and brake
funky behavior with goalPoints and car proximity
car ids
skeleton in vertices
with ideal physics, need to update goalPoint intelligently
when at stopsign, gaolPoint is not being updated and it ending up directly under center of car, which leads to crazy behavior
ideal physics
crashes
find a fire gif and start animating sprites
fix adding 2 roads to a vertex and making it extend past world aabb
does not refresh world aabb
fix all seen problems with local input!
animated grass
test if Merger is hitting anything else before adding
skidding if completely off road
intersecting methods
containment methods
add shapes to capsules, vertices, cars, mergers, signs
add SAT code
find uses of halfPlane
reexamine all bestHitTest implementations
WorldSource.active()
Car.computeDynamicProperties()
add Circle and Quad classes
skids
line segments of when a car goes off-road
work on getting a separate layer to draw skids on, don't want individual line segment accumulating forever
remove sweepCircleCap
fix car goal point
overallPos is correct, but goalPoint is not correct inside of mergers
fix vertex distance problem
wiring up a merger backwards doesn't work
fix automatic merging of merger vertices
add 2 roads to a merger vertex
outline for regular cursor
skeleton for roads and mergers
add arrow images for sources and sinks
ON HOLD FOR NOW:
draw a buffer around the preview, draw the aabb not the world rect
option to switch between real and ideal physics
radius for cars to see a crash and reroute
drive straight from one border to another without going through vertex center
status of cursor
how many vertices, capsules, etc. currently hitting?
diagnostics
work on .graph package
move classes
make Graph a pure graph class
move Road, Merger, Sink, Source, etc. to .model
road shape desription
lines and circular arcs
adding capsules
stop using area, areax
constructive area geometry for edges
lower precision on stroke world points