]>
git.tdb.fi Git - r2c2.git/log
Mikko Rasa [Fri, 11 Apr 2014 18:18:09 +0000 (21:18 +0300)]
Fix lead route generation
Lead routes are now created up to the target, but not past it. This fixes
a problem where a route diverging from the train's reserved blocks caused
the router to attempt to create a lead route with gaps.
Mikko Rasa [Fri, 11 Apr 2014 17:28:56 +0000 (20:28 +0300)]
Add a function to check if a track chain forms a loop
Mikko Rasa [Fri, 11 Apr 2014 17:24:51 +0000 (20:24 +0300)]
Populate the target variable when a timetable row is selected
Failing to do so will clear the target from the row when applying changes.
Mikko Rasa [Fri, 11 Apr 2014 17:24:30 +0000 (20:24 +0300)]
Use signal_advanced for train speed measurement and vehicle placement
It's stupid to try to reproduce the logic of checking whether this is the
correct sensor when BlockAllocator has that information already.
Mikko Rasa [Fri, 11 Apr 2014 05:27:54 +0000 (08:27 +0300)]
Put signal_advanced in BlockAllocator
It's bad practice to emit other objects' signals.
Mikko Rasa [Thu, 10 Apr 2014 23:06:18 +0000 (02:06 +0300)]
Use the endpoint closest to the pointer when placing trains
Mikko Rasa [Thu, 10 Apr 2014 22:54:47 +0000 (01:54 +0300)]
Further fix delay handling
Mikko Rasa [Thu, 10 Apr 2014 22:50:43 +0000 (01:50 +0300)]
Track trains' remaining estimate by distance, not time
This makes it easier to keep correct since delay is not included.
Mikko Rasa [Thu, 10 Apr 2014 19:49:52 +0000 (22:49 +0300)]
Don't return indeterminate paths from Route::get_path
Return the active path of the track instead.
Mikko Rasa [Thu, 10 Apr 2014 19:04:03 +0000 (22:04 +0300)]
Use path coercion in track iterators
This enforces common traversal rules in all places. It also fixes a bug
in TrackOffsetIter where moving to a turnout from an endpoint not on the
selected path would potentially cause an out-of-range iterator to be
created.
Mikko Rasa [Thu, 10 Apr 2014 19:02:39 +0000 (22:02 +0300)]
Make sure TrackOffsetIters make sense
Disallow creation of iterators that have a path not connected to the
entry endpoint, or an out of range offset.
Mikko Rasa [Thu, 10 Apr 2014 19:01:54 +0000 (22:01 +0300)]
Move path coercion to TrackType
Mikko Rasa [Wed, 9 Apr 2014 21:23:42 +0000 (00:23 +0300)]
Set speed slider range from the advertised top speed of the train
Mikko Rasa [Wed, 9 Apr 2014 21:18:10 +0000 (00:18 +0300)]
Put emergency highlights on a higher layer
Mikko Rasa [Tue, 8 Apr 2014 19:56:42 +0000 (22:56 +0300)]
Export properly formatted track statements from shoppinglist
Mikko Rasa [Tue, 8 Apr 2014 18:48:11 +0000 (21:48 +0300)]
Do not tick the clock while halted
Mikko Rasa [Tue, 8 Apr 2014 18:47:53 +0000 (21:47 +0300)]
Implement halt in the dummy driver
Mikko Rasa [Tue, 8 Apr 2014 18:47:07 +0000 (21:47 +0300)]
Display blinking red markers on blocks where emergencies have occurred
Mikko Rasa [Tue, 8 Apr 2014 18:33:40 +0000 (21:33 +0300)]
Include block in the emergency signal
Mikko Rasa [Tue, 8 Apr 2014 18:31:28 +0000 (21:31 +0300)]
Also use halt in sighandler
Mikko Rasa [Sun, 6 Apr 2014 20:28:53 +0000 (23:28 +0300)]
Don't set pure_speed and accurate_position when halted
It may happen that the train has enough momentum to roll onto the next
sensor when halt occurs. Setting accurate_position in this case is
likely to cause a sensor missed emergency when halt is lifted, as the
physical locomotive takes a moment to get up to speed again.
Mikko Rasa [Sun, 6 Apr 2014 20:28:03 +0000 (23:28 +0300)]
React to overcurrent events
Mikko Rasa [Sun, 6 Apr 2014 20:08:32 +0000 (23:08 +0300)]
Fix handling of uncertain bits in accessories
When the state of an accessory is first set, send commands for all
uncertain bits. Otherwise the accessory could remain unsynced or a
failure could go undetected.
Always clear the uncertain bit after setting an accessory, not only
when it failed.
Mikko Rasa [Sat, 5 Apr 2014 14:42:28 +0000 (17:42 +0300)]
Don't wait for queued accessories if power is off
Mikko Rasa [Fri, 4 Apr 2014 16:59:03 +0000 (19:59 +0300)]
Fix an error in calculating curved TrackPart points
Mikko Rasa [Fri, 4 Apr 2014 16:57:54 +0000 (19:57 +0300)]
Prefer is_turnout() when checking if a track is, in fact, a turnout
Mikko Rasa [Fri, 4 Apr 2014 16:43:27 +0000 (19:43 +0300)]
Create multiple routes if the planned route crosses itself
Mikko Rasa [Fri, 4 Apr 2014 16:40:10 +0000 (19:40 +0300)]
Allow queueing multiple routes for a train
Mikko Rasa [Fri, 4 Apr 2014 15:47:54 +0000 (18:47 +0300)]
Attempt to resync ArduControl if there's no response to a command
Mikko Rasa [Fri, 4 Apr 2014 15:47:13 +0000 (18:47 +0300)]
Add a timeout to ArduControl commands
Mikko Rasa [Fri, 4 Apr 2014 15:46:40 +0000 (18:46 +0300)]
Remove an unused mutex
Mikko Rasa [Wed, 2 Apr 2014 20:41:06 +0000 (23:41 +0300)]
Store the Transform in TrackPart instead of creating it on the fly
Mikko Rasa [Wed, 2 Apr 2014 20:20:21 +0000 (23:20 +0300)]
Use elevation granularity for terrain Z positions
Mikko Rasa [Wed, 2 Apr 2014 20:15:49 +0000 (23:15 +0300)]
Instead of setting the speed of all locomotives, just enable halt mode
The old code was causing an exception and segfault with ArduControl,
since locomotive IDs are not equal to their addresses.
Mikko Rasa [Wed, 2 Apr 2014 20:15:26 +0000 (23:15 +0300)]
Implement flush() for ArduControl
Mikko Rasa [Wed, 2 Apr 2014 20:14:51 +0000 (23:14 +0300)]
Lift selection wraps slightly off the ground
Mikko Rasa [Wed, 2 Apr 2014 20:12:55 +0000 (23:12 +0300)]
Improve tool status display
If a tool finishes instantly and displays a status (such as SlopeTool
or ExtendTool when they encounter an error during construction), do not
replace it with the selection tool status.
Mikko Rasa [Wed, 2 Apr 2014 19:57:22 +0000 (22:57 +0300)]
Fix some bad behavior in tools
Mikko Rasa [Wed, 2 Apr 2014 16:40:33 +0000 (19:40 +0300)]
Do not attempt to switch accessories while power is off
Any changes in accessory state are held in the queue and performed once
power is restored.
Mikko Rasa [Wed, 2 Apr 2014 16:40:11 +0000 (19:40 +0300)]
Implement halt mode to ArduControl
Mikko Rasa [Tue, 1 Apr 2014 18:35:31 +0000 (21:35 +0300)]
Use current monitoring to detect failed turnouts
The turnout solenoid takes quite a bit of current, which is easy to
detect. If there's no current spike after activating a solenoid, it
may have a broken microswitch that prevents operation.
Mikko Rasa [Tue, 1 Apr 2014 18:28:36 +0000 (21:28 +0300)]
Basic support for failed turnout detection
Mikko Rasa [Tue, 1 Apr 2014 18:25:15 +0000 (21:25 +0300)]
Add voltage and current monitoring task to ArduControl
It's not used for anything yet, bit will be soon.
Mikko Rasa [Tue, 1 Apr 2014 18:14:35 +0000 (21:14 +0300)]
Keep track of the active accessory bit index
Failing to do this may theoretically cause trouble if a multi-bit
accessory spans a k83 module boundary. Sending a deactivation command
for the first bit would only turn off the first module but not the
second.
Mikko Rasa [Mon, 31 Mar 2014 19:34:00 +0000 (22:34 +0300)]
ArduControl debugging tweaks
Mikko Rasa [Mon, 31 Mar 2014 14:27:14 +0000 (17:27 +0300)]
Add helper class for processing driver options
Mikko Rasa [Sun, 30 Mar 2014 18:14:06 +0000 (21:14 +0300)]
Add a missing initializer
Mikko Rasa [Sun, 30 Mar 2014 18:13:14 +0000 (21:13 +0300)]
Remove some unnecessary braces and an outdated comment
Mikko Rasa [Sun, 30 Mar 2014 18:11:44 +0000 (21:11 +0300)]
Pass goto target with the correct type
Mikko Rasa [Sun, 30 Mar 2014 17:22:31 +0000 (20:22 +0300)]
Add a distance metric to turn the routing into an A* search
The original straightforward implementation exploded in complexity much
sooner than I expected. The reasons are not entirely clear, but the
inability to converge states and drop those where the same position was
already reached through a faster path may have something to do with it.
Mikko Rasa [Sun, 30 Mar 2014 17:13:53 +0000 (20:13 +0300)]
Maintain a separate list of pending RoutingStates
Mikko Rasa [Sun, 30 Mar 2014 16:36:47 +0000 (19:36 +0300)]
Check that occupied_track is not null before accessing it
This could only happen if an exception is thrown from TrainRoutingState
constructor, but the resulting segfault can act as a red herring and
distract from the actual cause.
Mikko Rasa [Sun, 30 Mar 2014 13:46:53 +0000 (16:46 +0300)]
Rename is_occupied to is_occupying
This reflects the function's actual purpose better.
Mikko Rasa [Sun, 30 Mar 2014 13:43:54 +0000 (16:43 +0300)]
Make deadlock detection more robust
Deadlock cycles involving more than two trains can now be detected.
Mikko Rasa [Sun, 30 Mar 2014 13:34:03 +0000 (16:34 +0300)]
Be stricter with const qualifiers
Mikko Rasa [Sun, 30 Mar 2014 13:20:28 +0000 (16:20 +0300)]
Continue TrainRoutePlanner refactoring
This moves even more logic into the data structures, and cleans up step
management.
Mikko Rasa [Sun, 30 Mar 2014 12:35:34 +0000 (15:35 +0300)]
Start refactoring TrainRoutePlanner
OOP calls for the logic to be close to the data it uses, so let's put it
there.
Mikko Rasa [Sat, 29 Mar 2014 16:16:51 +0000 (18:16 +0200)]
Filter out non-viable routing steps before adding them to the list
Mikko Rasa [Sat, 29 Mar 2014 15:06:52 +0000 (17:06 +0200)]
Skip arrived trains when updating states in the route planner
Mikko Rasa [Sat, 29 Mar 2014 13:22:22 +0000 (15:22 +0200)]
Utilize maximum speed information in planning routes
Mikko Rasa [Sat, 29 Mar 2014 11:38:11 +0000 (13:38 +0200)]
Assign delay in TrainRoutingState copy-constructor
Mikko Rasa [Wed, 26 Mar 2014 20:44:31 +0000 (22:44 +0200)]
Support waypoints in Timetable
Mikko Rasa [Wed, 26 Mar 2014 20:36:37 +0000 (22:36 +0200)]
Generate an event for reaching each waypoint
Mikko Rasa [Wed, 26 Mar 2014 20:36:00 +0000 (22:36 +0200)]
Emit signal_route_changed when moving to the next route
Mikko Rasa [Wed, 26 Mar 2014 20:33:13 +0000 (22:33 +0200)]
Include destination pointer in the arrival signal
Mikko Rasa [Wed, 26 Mar 2014 20:32:30 +0000 (22:32 +0200)]
Drop waypoints once the train has fully covered them
Mikko Rasa [Wed, 26 Mar 2014 00:12:06 +0000 (02:12 +0200)]
Support routing through multiple waypoints
Currently the result must be valid as a single route. No crossing one's
own path or doubling back from a reversing loop.
Mikko Rasa [Tue, 25 Mar 2014 23:56:27 +0000 (01:56 +0200)]
Adjust terrain pick geometry so it's possible to pick tracks on top of it
Mikko Rasa [Tue, 25 Mar 2014 23:56:00 +0000 (01:56 +0200)]
Report the closest object when picking
Mikko Rasa [Tue, 25 Mar 2014 23:54:01 +0000 (01:54 +0200)]
Also use TrackChains as target locations in Timetable
Mikko Rasa [Tue, 25 Mar 2014 14:56:12 +0000 (16:56 +0200)]
Update zone name after loading
Mikko Rasa [Sun, 23 Mar 2014 16:48:47 +0000 (18:48 +0200)]
Use the TrackChain base class as destination in Router
There's no functional difference between Zones and blocks in this context.
Giving a Route as a destination does not really make sense and may give
unexpected results, but I see no particular reason to exclude them.
Mikko Rasa [Sun, 23 Mar 2014 15:47:44 +0000 (17:47 +0200)]
Add a missing protection specifier
Mikko Rasa [Sun, 23 Mar 2014 13:30:33 +0000 (15:30 +0200)]
Unify TrackChain names
Mikko Rasa [Sun, 23 Mar 2014 13:13:17 +0000 (15:13 +0200)]
Stuff created paths into the list so they can be cleared later
Mikko Rasa [Sat, 22 Mar 2014 08:49:09 +0000 (10:49 +0200)]
Only create a new highlight if the target actually changed
Mikko Rasa [Thu, 20 Mar 2014 22:33:59 +0000 (00:33 +0200)]
Clear destination when setting a null route
Mikko Rasa [Thu, 20 Mar 2014 22:33:13 +0000 (00:33 +0200)]
New timetable system, which works like an actual timetable
Mikko Rasa [Thu, 20 Mar 2014 22:28:50 +0000 (00:28 +0200)]
Add a maximum speed property for vehicle types
Mikko Rasa [Wed, 19 Mar 2014 20:18:37 +0000 (22:18 +0200)]
Implement a departure delay for TrainRouter
Mikko Rasa [Wed, 19 Mar 2014 20:15:57 +0000 (22:15 +0200)]
Set routes created by the planner as temporary
Mikko Rasa [Wed, 19 Mar 2014 17:00:26 +0000 (19:00 +0200)]
GL::Light no longer has a four-argument constructor
Mikko Rasa [Wed, 19 Mar 2014 16:56:01 +0000 (18:56 +0200)]
Save and load clock settings
Mikko Rasa [Wed, 19 Mar 2014 16:51:35 +0000 (18:51 +0200)]
Additional accessors for Clock
Mikko Rasa [Wed, 19 Mar 2014 16:46:42 +0000 (18:46 +0200)]
Display the current time in the main window
Mikko Rasa [Sun, 24 Nov 2013 21:54:30 +0000 (23:54 +0200)]
Render a sky in the upper hemisphere of a view's background
I'll have to do something about the lower hemisphere as well, but this
already makes train views look 46% better.
Mikko Rasa [Sun, 24 Nov 2013 21:45:33 +0000 (23:45 +0200)]
Correct direction of roof viewpoint
Mikko Rasa [Sun, 24 Nov 2013 21:43:13 +0000 (23:43 +0200)]
Pass catalogue reference to Object and Technique loaders
Mikko Rasa [Sun, 24 Nov 2013 21:40:32 +0000 (23:40 +0200)]
Layout3D::get_bounds was broken and not used anywhere, remove it
Mikko Rasa [Sat, 23 Nov 2013 15:36:22 +0000 (17:36 +0200)]
Render ties between rails on tracks
Mikko Rasa [Fri, 22 Nov 2013 19:43:36 +0000 (21:43 +0200)]
Move track appearance properties into a separate class
This will eventually enable tracks with different appearance (such as
Märklin C and K track) to coexist in the same catalogue.
Mikko Rasa [Fri, 22 Nov 2013 12:43:24 +0000 (14:43 +0200)]
Properly round negative elevations
Mikko Rasa [Fri, 22 Nov 2013 11:21:30 +0000 (13:21 +0200)]
Make BeamGate compile with older GCC versions
GCC 4.6 produces ambiguity errors despite the using directive in the class
declaration.
Mikko Rasa [Fri, 22 Nov 2013 11:09:36 +0000 (13:09 +0200)]
Add a terrain object to the catalogue layout
Mikko Rasa [Fri, 22 Nov 2013 11:09:16 +0000 (13:09 +0200)]
Produce more compact saves of terrains
Mikko Rasa [Fri, 22 Nov 2013 11:05:57 +0000 (13:05 +0200)]
Save terrain position and rotation
Mikko Rasa [Fri, 22 Nov 2013 11:05:30 +0000 (13:05 +0200)]
Improve tile axis calculation
Mikko Rasa [Fri, 22 Nov 2013 09:39:23 +0000 (11:39 +0200)]
Add property editing for terrain
Mikko Rasa [Thu, 21 Nov 2013 23:39:13 +0000 (01:39 +0200)]
Ignore beam gates and terrains in shoppinglist
Mikko Rasa [Thu, 21 Nov 2013 23:34:38 +0000 (01:34 +0200)]
Support editing multiple terrain tiles at once