For the most part, everything will work how RailPro did, but some new features include:- Full realtime vector rendering (if cairo is up to the job)- A proper train scheduler that can adjust schedules depending on how the player keeps up

I've resurrected this project and have made some small amount of progress with the game, now rewritten in C. So far the meagre feature list is:- a train moves around a circle of track- you can click on the head of the train to start/stop it- you can zoom in and out of the map with the scrollwheel- you can speed up/slow down game time with ctrl+scrollwheel

2015-02-21- Click on any part of the train to start/stop it- Trains rendered to match underlying track- Multiple trains supported- Trains turn red when crashed and cannot be restarted- Interactive points (turnouts)- Tiles with two pieces of track are rendered, but trains can only run over the primary piece of track

2015-04-01- Trains can run over any track on tile with multiple pieces of track- Trains derail if points are set incorrectly and cannot be restarted (coloured yellow)- Tiles with a single piece of track are now loaded from a map file

2015-04-28- Track is rendered as curves- Main auto and sub signals are rendered (but you can't change their aspect and trains are unaware of them)- Tiles, trains and game timer are all loaded from the maps/64x64test file- Pressing 'S' saves all track tiles to build/main/saved_map- Pressing 'L' loads the map of the same name

2015-05-05- Main manual signals are rendered- Signals, points (including three-way/diamond points) and game timer are loaded and saved

2015-05-12- Trains are saved to and loaded from map files- Derailed trains are removed after 10 seconds- Derailed train removal may not work correctly between save and load because the implementation is incomplete (the game doesn't store or parse train UUIDs)- The game runs in windowed mode to permit execution under gdb

2015-05-17- !RailPro map files can be converted to semaphore maps using the railpro2semaphore utility (see attached screenshot)- Pan around the map with arrow keys- Curved points highlighted with a cyan line- Train names displayed above trains- Derailed trains are saved and loaded correctly- Map file can be specified on the command line- New command line option, "--fullscreen"

2015-05-23- Moving trains continue to move across save/load- Right-click on train to reverse its direction- Trains pause at buffer stops before reversing

2015-07-10- Signal aspect changes on left/right click- Trains stop at red signals and restart when switched back to green/amber- Trains that pass signals cause them to turn redThere will be a lot more signalling logic to follow, and I suspect there will be a lot of corner cases to address. Some thoughts are documented at https://github.com/hertzsprung/semaphore/wiki/Signals

2015-07-19- Trains spawn next to entry tiles (highlighted in blue) and despawn at exit tiles (highlighted in red)

2015-08-02- Mocked up schedule panel UI (see attached)

2015-08-31- Revenue now displayed in top left corner and loaded/saved- Trains earn 200 (lose 300) when exiting the correct (incorrect) portal. Currently, since there is no train scheduler, exiting a portal always loses 300.

2015-09-05- Trains change speed at amber/green signals- Trains can be given an exit destination in the game file (see screenshot where train "EXB" is about to earn 200)- Arbitrary textual labels can be defined (to identify portals and stations etc)

2015-09-12- Much of the signalling logic is implemented. I've broadly followed RailPro's signalling logic but behaviour is not identical and I've made minor improvements: (a) if a signal had been set manually, its aspect will not automatically change until another train passes through, (b) previous signals do not revert to their previous aspect until the entire length of the train has cleared the signal. See the attached animation.

2015-11-01- Render stations, maintenance sidings and goods depots, which can be of any orientation

2015-12-30- Reimplemented signalling logic to fix bugs where a train spans multiple signals at once.There is still lots more to do before signalling is working: serialisation also needs reimplementing, and trains need to obey automatic aspect changes.