Commit Graph

22 Commits

Author SHA1 Message Date
Mikolaj Wielgus a0ab7e2818 refactor(router/astar): Have separate statuses for discarded probes and skipped visits
This is mostly to improve readability. Since we don't check the values
of the continue statuses anywhere anyway, this doesn't result in any
changes to code outside of the router/astar module.
2025-05-16 17:28:10 +00:00
Mikolaj Wielgus 7dc275969c refactor(router/astar): Rename `Astar<...>` to `AstarStepper<...>`
Since it is a stepper, and we append -`Stepper` to identifiers denoting
types that are steppers.
2025-05-12 16:58:06 +02:00
Mikolaj Wielgus 9664f1a31a fix: get rid of some indeterminism by using B-trees instead of hash maps
I have replaced all instances of `HashMap<...>` with `BTreeMap<...>`,
of `HashSet<...>` with `BTreeSet<...>`, and all the uses of the `Hash`
trait with `Ord`.

I have done a few manual tests and found the behavior to be
deterministic between the GUI application launches. However, undoing an
autoroute command and then manually executing it once again continues to
produce variable results. I suppose this is because of some bug in the
code where edits are applied. Hence, the issue

https://codeberg.org/topola/topola/issues/46

is only partially resolved.
2025-01-04 01:56:00 +01:00
Mikolaj Wielgus 44c30caafe chore(licensing): add REUSE license headers to `**.{rs,md,toml}` files
I ran the following command in Fish shell:

```
reuse annotate --skip-unrecognised --copyright="Topola contributors" --license="MIT" **.{rs,md,toml}
```

The choice of year 2024 in the copyright statements is intentional.
2024-12-29 22:47:00 +01:00
Mikolaj Wielgus 23d1eaa722 refactor: make `Step::step(...)` return `ControlFlow<...>`
This is an iteration on what was suggested in
https://codeberg.org/topola/topola/pulls/79 .

This removes the need to create a new status type for steppers that
have only one intermediate state, and removes unidiomatic `TryInto<...>`
usage to determine if a stepper has finished.
2024-10-12 05:38:57 +02:00
Mikolaj Wielgus a9e42eef17 refactor: make `Step`'s error an associated type
This was suggested in https://codeberg.org/topola/topola/pulls/79.
2024-10-12 05:38:57 +02:00
Alain Emilia Anna Zscheile 5e3ccf2560 chore: cargo fmt 2024-10-01 20:50:38 +00:00
Alain Emilia Anna Zscheile f653a96eb0 chore: trivial fixes of clippy warnings 2024-10-01 20:50:38 +00:00
Mikolaj Wielgus e08a59cd74 stepper: add `Abort` trait to abort steppers 2024-10-01 19:07:40 +02:00
Mikolaj Wielgus 43b48e78e3 router: use `Step` trait for `Astar` too 2024-08-04 18:50:58 +02:00
Mikolaj Wielgus fd23be7a8a router: step on successful probes 2024-07-04 13:52:26 +02:00
Mikolaj Wielgus b6cb89c017 egui,autorouter,router: display infringement shapes (aka. "ghosts") 2024-07-03 21:00:50 +02:00
Mikolaj Wielgus 727eb37c6e router: have probing and visiting as separate states
This feels overengineered, but I need something like this for better
debuginfo.
2024-07-03 18:12:07 +02:00
Mikolaj Wielgus 27d1c9e712 router: step on every probe, not only navvertices 2024-07-02 02:36:42 +02:00
Mikolaj Wielgus 2259a75d92 egui,autorouter: restore displaying navmesh 2024-07-01 00:50:24 +02:00
Mikolaj Wielgus 0b3ebdbe3c router: make it possible for `Astar` to own its graph
We aren't using this yet however because it requires a substantial
rearrangement of `Router`'s code.
2024-06-27 15:07:58 +02:00
Mikolaj Wielgus ae2a862e0e router: store every vertex (fails tests but almost functional)
Previously, rail vertices were not stored but generated on demand from
data stored in a `Triangulation<...>`. This functionality is removed in
favor of storing every vertex in `Navmesh`'s own graph built from the
`Triangulation<...>`, which is now afterwards discarded.

Tests still fail and rails aren't added yet, but this is close enough to
completion for me to commit so that I can now go to sleep without
worrying.
2024-06-20 01:32:27 +02:00
Mikolaj Wielgus dcbc5be5f3 router,autorouter: improve error handling
Avoid unwrapping and use `Result<...>` instead as well-written code
should.
2024-05-30 19:54:14 +02:00
Mikolaj Wielgus a4503a42c6 router: improve error handling -- more error types, remove some unwraps 2024-05-29 23:49:24 +02:00
Mikolaj Wielgus 499564e6cf router: make A* a walker, i.e. make it runnable in a while loop 2024-05-27 23:50:12 +02:00
Mikolaj Wielgus 114fb747c8 router: return band index once the routing finishes 2024-05-15 01:45:36 +02:00
Mikolaj Wielgus df23ea8398 router: move top-level files to own `router` module 2024-04-14 20:25:01 +00:00