forked from AlbertBall/railway-dot-exe
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDevHistory.txt
6682 lines (4391 loc) · 451 KB
/
DevHistory.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
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
Development History
This is a very rough set of notes recorded practically from day 1 of C++ Builder development. It was compiled for my own use as a diary of events, a to-do list, and a dumping ground for any other notes that I wished to keep. I have added it to the development repository as there are things in it that need to be retained such as user requests and the full list of changes from version to version.
The structure is as follows:-
1) List of suggestions from users for future changes (some incorporated).
2) My own list of thoughts for change proposals (many incorporated)
3) List of problems & odd behaviour for which I don't yet have solutions
4) Changes made for each successive version release
5) Release & website reminders
6) Multiplayer experimentation notes
7) Historic development notes
-----------------------
1) Future change suggestions from users:
#59 & 60 Suggestions from Wilsteady via Discord, 28/10/21.
1. being able to start the timetable from a fixed point in the day, not the nominated start time in the timetable. This is different from just using the +1hr button, as what i am looking for would include all trains to automatically be positioned according to that time.
2. [timetabled events added at v2.11.0 - addresses this to some extent] having the ability if there is a delay on the network or a train will be cancelled prior to it's destination, being able to select "Start next service now" from where it's current location is. Ideal if a train is halfway down a branch line and the signaller decides to cancel it halfway, and start the return trip.
#57 & 58 From Simon Banham by email 18/07/21. Allow users to specify the distribution of mass, brake force and power when trains split, with a default of 50/50 (i.e. keep default as is).
Simplify the timetable conflict analysis file so it looks more like SimSig's analysis file with all movements in location order and warnings about potential conflicts.
#56 From Metvor_Rules via Discord 07/05/21. What if there was a rotation function for track pieces so you could just press R for example and the track/ platform would rotate by 45 or 90 degrees each button press.
This would reduce the amount of unique parts so you don’t have to go back and forth selecting different track types.
#55 From Krizar 25/04/21 via discord. The simulation has the train phoning signaller mechanic already, so I was wondering how feasible it was to add something like this:
https://en.wikipedia.org/wiki/Radio_Electronic_Token_Block#/media/File:West_Highland_Line_single_line_permssion_sign_-_Rannoch_south_01.jpg
Radio Electronic Token Block
Radio Electronic Token Block is a system of railway signalling used in the United Kingdom. It is a development of the physical token system for controlling traffic on single lines. The system is slightly similar to North American Direct Traffic Control, which unlike RETB does not have a cab display unit.
Whereby you would just click a button saying "yep sure continue"
so it would just be the equivalent of when a driver is stuck at a signal for too long and phones
You could also simulate plunger pressing by the driver by having the train halt in front of the signal, there be a couple of seconds pause, then a white light display, or if it is a "whistle then continue" no light and just a pause
Albert — Today at 14:28
I'm struggling to see how simulating this situation would be different to the standard signaller command of 'Pass red signal'. Or are you suggesting a separate alarm of some sort when a train had waited at a red signal for more than a certain time?
KR/ZAR — Today at 14:31
What I had in mind was pretty much what was already there except rather than it be treated like there is a problem (purple train etc) and there being a signal, just some other indicator that just asks for a token.
#54 Suggestion from Wilsteady via discord 09/01/21. New idea with rollingstock details - could there be a way to enter a Trains acceleration/deceleration instead of brake force? I can imagine it would be potentially a large change in how the program functions, but given many Wikipedia pages for trains give the Accel/Decel rates in m/s2 not the brake force, it means guessing the values required for the program to find one that works best for the timetable in place.
#53 Suggestion from Bill78 08/01/21 via discord. I've been thinking about Speedbutton 17. Could it be made into a "reporting point?" Buy this, I mean a person could put one or more on any route and when any train crossed it, a notice would pop up on the notification area that "such-and-such train is at Reporting Point whatever." This way, it wouldn't be controlled by anything in a timetable, but simply be there and notify when a train crosses it. Leave the "W" in the timetable so certain trains will show a Warning, but SB17 would pop a Warning every time a train crosses it.
#52 [done]. Suggestion from josco 05/01/21 via discord. No idea if this is doable but would it be possible to replicate the 'hover' menu from the trains in the actions due box? Thus when a train appears in the actions menu you could hover over the train and it would show you the train menu with timetable etc. This would be more user friendly in my view than clicking the train to then find out where it is in the map. This is not a crucial update but would be useful in my view. However if it is not doable nor a simple fix then I would leave alone!
#51 Suggestion from Wilsteady 24/12/20 via discord. Got another fun feature idea for consideration - Inbuilt native support for windows that if you double click on a .rly or .dev [or .ssn] file in Windows Explorer, it will open railway.exe with that file pre-loaded.
#50 [Done]. Suggestion from Wilsteady 21/10/20 via Discord. Don't know if this is a feature that already exists or not - It would be handy in the layout builder, to be able to Select an area, choose a particular track type, and have the system auto fill that space with that type. For example build a railway by selecting the location of each station, signal, turnout, etc, but don't add any 'straight' tracks. Then being able to select a long line, and having it pre-fill all the straight sections. Would be handy when building twin or quad track sections that don't vary other than a X-over or signal here or there.
#49. Suggestion from Dan via Discord 12/08/20. Include route availability with stock being given a specific value, and the lines having a corresponding value. The trains' value should be lower than or equal to the track's value, or it cannot run on that track. You may see it as RA then a number from 1 to 10
#48. Suggestion from Wilsteady via discord 21/07/20. Two I would love to see, is a two aspect yellow over green as a repeater signal, and a single aspect red signal.
#47. Suggestion from imortallknedlik via discord 20/07/20. Maybe do like an option to choose what colours you have on different signals, or just add some of the LU signals, like the ATO ones
#44 - #46 [Done]. Suggestions from Micke (Commuterpop), Krizar & Bjorn via discord 28 & 29/06/20. Have program able to adapt to different user file structures than having all subfolders below the executable folder. Allow user to set preferred folders for file locations, and autoload the last used file.
#43. Suggestion from The10toFarnborough via discord 27/06/20 - have timetable functions work in seconds rather than minutes.
#35 - #42. Requests from 506_Independent via discord 21/06/20.
First of all, I would like a small red halo around my selected track piece, as having no way to know what iv'e selected means I could add the wrong piece, wasting a few seconds of aluble time.
Its also a little bit silly having all your pieces in a big splat, a sorted splat, but still a splat, it would nice to have a [multilevel] drop down menu
Second of all: as you can see, there is an icon, and the name of the piece. Organising like type would be better then by direction (signals, bridges, straight, direction, splits...).
Third, I would like to be able to mix stuff together, because as you can see, the signals and direction pointers take up a lot of space, so what if I could point direction and show switches at the same time? Maybe you could make it so that you could left click on a straight with a signal button [images in original] you could click on buttons like this, but for seperate things. (maybe switches, or turns). They will automatch to the pieces, so you dont need all the different pieces, and just have a few of each type.
In a different way, think about how stations work. Apply this working to everything. Imagine the straights as base blocks, and you can click on them to add things. This would simplify the entire grid, requiring a maximum of 3 buttons for each category (two switch types for each, and a "bannana skin" connector, two curves). Of course, you may need the full menu when you are doing some complicated things, like this [image in original]
I recommend making another buttonin the top menu (where text options are) for the full menu and not "auto add".
I would also like another way of where instead of clicking in the blackness, you can start from a end. You click on the menu, for the things you want to build, a bit like scarm.
I also think a even more graphical, almost block based timetable editor would really help, allowing for scratch-like blocks, but a bit more white and boring.
#34. Suggestion from Micke (Commuterpop) 16/06/20 via discord - when a train is heavily delayed often skip stops in real life, include facility to skip stops in timetable as a signaller option
#33. Suggestion from Wilsteady, Discord 02/06/20: I've thought of an interesting concept that could be rather interesting to include. Support for recognition of train types linked with lines, i.e. Electric/Diesel or different track gauges. In practice I guess it would be something like, setting a route for a train where the track leaves electrified territory, but the type of train is designated as electric, and as such approaching that junction, depending on a different setting, could either continue through and "derail/fault" for leaving the electrified territory, or simply come to a complete stop at the preceding signal until the route is corrected.
#31 & #32 [part done]. Suggestions from Wilsteady, Discord 09/05/20: Place footbridge/underpass over existing track to avoid having to reset lengths etc; ability to add a non-station named location over a signal [Location over signal added at v2.6.0]
#29 & #30. From Dan on Discord 17/04/20: Drive-by-sight would be a neat feature for trams, and maybe a signal type to permit access to a siding or a drive-by-sight section.
#27 & #28. Suggestion from @Mark 04/02/20. Ability to tell a train to skip the next station or skip its next trip in the timetable (in cases where a train is running very delayed). That and have the ability to select a different timetable.
#26. Suggestion from Oli_k123 29/10/19. A new route chopping tool would be nice so when you use the 'blue route' you can chop between 2 signals without having to re do everything after the first signal or maybe a 'one time override'?
#19 - #25. Suggestions from Kristian Zarebski (Krizar) 06/08/19
- Catch Points: This is rather a minor thing and perhaps is not needed enough to warrant time. Many of the routes I look at have either catch points or very short lengths of line after points within a passing loop. For the simulator all this would mean is removing the constraint that you cannot have the ends of track next to a set of points with the added condition that if someone routes a train towards the track end it then "derails" (or in the loop case collides immediately with buffers).
- Signal Side [Done]: Someone oddly asked me specifically about this (I dont know why me?). They wanted to know if it was possible to switch the side that signals are positioned on tracks (For Europe etc). I took a brief look at the code and my conclusion was that you actually draw the icons through the code, is that right? They are not just image files.
- Three way junction: I am actually surprised how common these are in track layouts. This should not interfere with connecting to existing track as it would just be the "Y" junction with the added straight line.
- Bookmarks: this is of great use to large layouts (considering real signalling centres do not cover whole networks this might only apply to my outrageously large layouts!). Similar to the existing home button having extra buttons customisable within the simulation to "jump" to various positions on the map would be very useful. For the "L" train I have to keep pausing the simulation so as to move across the map. In short: multiple "home" buttons aka "location jumps".
- [already available] Clickable Notices: alternatively to the above or in addition, if a train flashes when you use the zoomed out version of the map, you can click it to quickly head to that map location?
- Signal ID: probably easier to explain with an example "1A02 held at signal OX23" accompanied by the usual flashing. Probably much easier to do than the above! Although it does still have the issue of the user not knowing the location without map knowledge.
- Unknown: I do not know if you have ever used Simsig but something came to mind. On the maps included there are radial clickable buttons. I cannot remember what they do at all, is it some automatic route setting? My knowledge of computational signalling is very low, but being able to select between preset automatic routes would be great. Although adding such a feature sounds a headache.
#18. Suggestion from Xeon email of 05/03/18. Chinese railways use several more aspects than UK railways, Xeon requests 6-aspect to allow for this
#16 & #17. Suggestions from Richard Gaede email of 22/08/14:-
[Done for two or more railway applications running at the same time] Allow cut and copied segments to be retained when a railway is cleared and a new one loaded, so that railways can be merged together
[Done with 'actions due' panel] Have a drop-down list of running trains and their status and trains about to enter the system - to give a quick form of running train identification so they aren't forgotten and advance warning of future entries.
#11 - #15. Suggestions from David Graf - email of 31/03/14
"Coventry Requirements Sig Sim for Rail Op Sim
I’ve almost finished placing together the signalling area covered by the old Coventry PSB in the West Midlands ( the period in question would be 1965 to 1984 ) using your signalling programme. It looks the part only having a peek at the available information of the real signal box several things are missing and I was wondering if they might become available in any future updates.
The Coventry panel should really have a slot to control the Coventry end of the single track to and from Leamington Spa and visa versa.
A ' SLOT ' is used to prevent a route from being set until the slot has been given and has to be received or accepted by the next signal box. Ie in this case Leamington Spa. In practice I think it was just a button in the signal box, on the panel it is usually a white dot for on and a blank dot for off with the required confirmation that the slot has been accepted. Slots are also used to cover certain sidings and refuge sidings like the one at Berkswell.
Will probably also require a repeater banner indicator. There is one between Coventry and Canley stations. i.e. a signal that simply repeats the next aspect of the signal which the driver cannot see as it is obscured by a bend in the track. I have an icon of a repeater banner which you might be able to use. I was thinking if its face is left blank then the next signal is at danger i.e. RED and if it is clear i.e. GREEN the its face becomes a white dot.
Also the adjacent signalling area Coundon Road has semaphore signals. I was wondering if you could use a semaphore signal icon to denote that it is a semaphore but have a RED dot for stop and a Green dot for clear . I am currently using a double MAS signal to simulate both the Repeater Banner and the Semaphores. They sort of cover the same function but it would be more authentic if a semaphore icon was in use.
[Done] Also the level crossings at Tile Hill and Berkswell are controlled by CCTV. I am assuming the TV screens were in Coventry Power Signal Box. If that is the case then there should be an open or raised , closed or lowered, and clear marker indicators in Coventry PSB for both level crossings. Basically switches to raise and lower the level crossing gates. I wonder if you could simulate that by using a simple dot indicator that you have to press to operate ie open and close the gates. At this time Canley Level Crossing was still manually operated so would be out of the control of Coventry PBS. They would set the route but it was up to the man at Canley SF to open the gates. In practice the Canley gates would be closed to road traffic just as the train was departing Coventry. So there is still a need for manually operated level crossings in the sim.
Background – basically I have been waiting for a signal simulator to cover the West Midlands area only all the commercial stuff is mostly based on modern practice and badly misses the period that I would like to cover. Unfortunately and now fortunately I stumbled across your programme last week by accident and found that I was able to construct the required areas myself. So yes I am interested in helping to aid in further upgrades to enable your project to move forward. Unfortunately I do not have any Borland computer knowledge but I do have some insight into how British Railways used to work and I can hopefully suggest a few things to make your signalling Sim more authentic. Well in British Rail practice.
I am currently researching a North Wales Coast route so semaphore signals would be of great help. That is if its not to much to ask."
#10. Suggestion from Jonathan Kwok (email of 11/05/13)
Have a 'Touch mode' where when activated the buttons are bigger for easier operation with touch-sensitive screens.
#7 - #9. Suggestions from Bjorn - email of 20/10/12:
1) Manual Stop Signals (blue), as in, being able to set them manually, i.e. for in stations where the whole platform can be used, or only a part of the platform. As in the Netherlands it's common tho have "Stop" signals halfway down the platform to allow two opposing trains to use it as if it were 2 seperate platforms... If you catch my drift. and by using a special stop (BLUE) signal, one can split a track... Also another idea I had was to allow a stretch of track to have signals. Those blue signals kinda function like an "end-of-track" signal... but can also be used to signal "track not in use".
2) Being able to have 1 track to have signals in both directions, to conserve space... now one can only have one signal on a track in either direction, but being able to put both signals on one stretch of track would not only save space, but also would be more realistic as signals are usually placed in pairs (up/down)...
3) [Done] The ability to automatically set a track from one point to another without having to set all the signals in between, just a starting point and an endpoint. And then that the program follows wither the preferred directions to create the best available route or that it just looks for the shortest route possible from point A to point B.
#6. Suggestion from Josh Coupe (email ~21/10/12): Useful if could advance the timetable clock and have all trains where they would most likely be at that time.
#4 & #5.Suggestion from Atilio Flegner (email 10/10/12): allow acceleration & deceleration rates as inputs as well as train power & braking force; and allow headways between trains as well as fixed starting times
#3. Suggestion from Mark Jones (email of 29/06/12): try to allow different train lengths consisting of different numbers of elements. Can indicate required length in timetable.
#2. Suggestion from Keith Hazelton (Feature Requests Forum 02/04/12): Have the ability to set random dwell times at station stops. At present, once you’ve got ‘the hang’ of a layout and got into a rhythm of route setting, everything is pretty predictable. Random dwell times (say between 30sec & 3 mins) would add an unpredictable element.
#1. Sam Wainwright email received 09/02/12: If a shunt signal is placed in the same direction as the main running signals, it is necessary to set a route through the shunt signal as well. Would it be possible to set a route from one running signal to the next with any shunt signals in the same direction in between clearing automatically?
-----------------------
2) Own thoughts:-
Expand railway file spec to include .ssn & .ttb files as well
Allow front end route cancellation by clicking element before signal for green & blue, check how to do it for red - maybe have left click for remove from front, right click for remove from back (looks complex)
Variable zoom would be useful - by changing the displayed image (prob not to replace existing zoom)
Undo facility would be useful, esp for cut & paste
[Done at v 2.3.0]. Try to trap memory capacity errors that occur when try to save large bitmaps without crashing the program. Occurred on Xeon's Shanghai Metro railway when .bmp was over 500Mb.
No: Add int Left, Top in ClearandRebuildRailway before Track->GetScreenPositionsFromTruePos(1, Left, Top, PointFlash->GetHPos(), PointFlash->GetVPos()); below if(Track->PointFlashFlag), as is resets Interface->Left & Top though not permanently influenced by the change, perhaps because the values aren't constants. Say this because Interface->Left & Top took the values set in GetScreenPositionsFromTruePos within the routine but the form didn't move, though when set to fixed values it did move (!!don't change anything until understand what's happening. Could be a compiler issue!!)
With single element routes being automatically cancelled and last element being points can set another route in other direction before train reaches it. Have to be quick and unlikely in practice, and have never heard of anything like it happening. See if anyone reports it and deal with then.
Points to emerge from operating Beaver Lake: If train cancels a route by moving in wrong direction issue a SPAD risk (like approach locking) and change log accordingly. Useful if could truncate an automatic route behind a train as well as in front [done at v2.1.0]. When cancel an automatic route that links to a non-automatic route try to either include the signal(s) with the other route (problem if first element of that route is a bridge then can't cancel it and can't set another route to link to it) or cancel adjacent non-automatic routes as well - that's probably easier. Probably more complex than it's worth? See if anyone reports it as a problem and deal with it then.
OK: Times beyond 24hrs show as hh:mm:ss in .csv formatted timetables but not in .txt version (see Sheffield). This is a feature of Excel, the times are correct in the .csv file
[Done]: Fail to save Traincontroller->ExcessLCDownMins in session files (should be in TInterface::SaveInterface), so on loading a session the excess minutes value resets to zero. If try to correct this beware that need to retain compatibility with earlier session files that don't save it. ok corrected at v2.2.0. Added floating point value as a string after ***Interface***
[Done]: Error given when try to split at a named non-station location & there is a non-track element present (i.e. effectively a nonstation [blue] concourse) - discovered by Xeon & notified 14 July 2018. (TrackUnit line about 8121 [8354 in v2.2.0 file]) Ordinary concourses are excluded but these aren't. It's because the active track 'find' function fails as there isn't one for this type of element. Keep the 'find' function but include a test if it fails where if due to one of these elements just 'continue', otherwise throw the error. OK corrected in v2.2.0
[Done]: Allow Frh & Fjo for trains after split and maybe others such as new services (Snt [done inc Fjo at v2.0.0] & Sns) No need - for Sns, Frh & Fjo can just follow the original service; for Sfs, can have the original remain or join other, if both to remain then no need to split, or if both to join others then have the split train jbo rather than Fjo.
General improvement possibilities (some also suggested by users):
Three-way points.
Automatic route setting.
Option to use & display imperial units as well as metric units.
Ability to record and replay sessions.
Signalbox mode where individual signals and points are operated directly, perhaps via a graphical lever frame, with user-defined interlocking.
Sound effects, e.g. enter a track ID & hear trains & station announcements at that location.
Random failures of signals & points.
Variable train lengths.
Restricted routes - DC 3 & 4 rail; AC; tube stock etc.
Multi-player facility over the internet.
-----------------------
3) Problems recorded but without solutions as yet:
1. Had a failure to reset signals to red when reset a red route in front of a blue route at High Wycombe (operating Chiltern Railways running right to left). The train ran past the end of the blue route so it wasn't just the display that was wrong. Couldn't repeat the fault afterwards.
2. When operating Chiltern had a train under signaller control & moving forwards, but couldn't get popup menu when right clicked - nothing happened. Saved session & reloaded, then OK.
3. If an arriving train reaches a platform with a train in front at buffers, and the arriving train is to split while facing the train at buffers (from the rear but maybe also from the front) and there is enough platform for the split, then the split doesn't occur. Occurred on Chiltern (Chiltern rear split problem; Timetable time 10.49.03; Chiltern Railways v2; Chiltern Railways v2.ssn) after manoeuvring 5F33 & 1N24 onto a vacant platform & restoring appropriate directions & timetable control. Due to lack of sophistication of split functions (see note in program: Split logic is:- at least one of 4 final train positions must overlap with one of original train positions, & final 4 positions will maximise the number at the location. Note that this function isn't sophisticated enough to account for trains already at the location in determining the 4 positions, and will give a failure message if a train obstructs any of the 4 positions. In these circumstances the other train will need to be move sufficiently away to release all 4 positions, then the train will split.) Try to improve if possible (i.e. just take account of 'available' platforms, and ensure keep trying in case other trains move off) or at least give a warning in the help & operator manuals to keep trains that are to split separated from trains already present at platforms - preferably don't have other trains at platforms at all where a train is to split.[leave for now unless reported as a problem - no-one has reported it yet]
-----------------------
4) Version change information
VERSION CHANGES AFTER v2.11.0 for v2.11.1
This is mainly a bug-fix release but includes a small change requested by Dan (Discord DanG#4669) when track linking.
Track linking change:
In earlier versions in Track Build/Modify mode when the 'Link all track together' button was clicked missing links were checked first then when all links were ok track positioning was checked (e.g. signals too close to each other or to buffers). This was found to be inconvenient because it required temporary buffers or continuations to be added to unconnected track ends before faulty positions could be found, and it's generally better to have correct positions before final linking is carried out. It was a relatively simple matter to swap these checks around, so now track positions are checked first and when all are ok missing links are checked.
Bugs:
Kevin Smith sent an error log file after a program crash and at the same reported some odd behaviour. These two issues were unconnected, so he found two bugs for the price of one - and both were quite challenging to sort out.
Odd behaviour: A train that was created at a station and due to depart after a few minutes did so with a clear route ahead, but immediately stopped again after moving just one track element. This turned out to be due to a fault that was introduced when the program permitted the same location to be listed in a service twice or more with no change of direction between them. That happens when there is a loop involved where the train loops back and retraces its steps back through the same stations, which it did in this case. The train's starting position at the station just happened to lie behind the platform stop element (used to set the stop position when trains arrive in the normal way). What happened was that the train departed, but only moved a single element before reaching the stop element, and since the station was listed again later in the service the program assumed it had missed all the intermediate stops and arrived in accordance with the later timetable entry - about 80 minutes early! It was something I overlooked when modifying the program earlier, and I'm surprised it hasn't come to light before. It was fixed by checking whether the last timetable action was a departure from the station in question, and if it was skipping the arrival procedure - i.e a train can't depart then immediately arrive at the same station.
Program crash: The error that caused this occurred when the mouse hovered over a train's position when there was no train there but the program thought there was. It was due to a coincidence - Kevin manually removed a train at exactly the same time as another train left the railway - within the same clock cycle which lasts only 50mSec. The function that handles trains leaving the railway can handle two trains exiting at continuations at exactly the same time but not one exiting and another being removed manually or joining another train. This function has now been modified so that after it handles one train leaving (for whatever reason) it returns without looking for any others. Any other that left at the same time has to await the next clock cycle before being dealt with, and if there are more than two (very unlikely) then they will be dealt with in successive clock cycles. This won't be noticeable to the user as the interval between cycles is so short.
Xeon reported a session file reloading error where a train had been unable to enter the railway because a route was set against it. This potential failure had been present for some considerable time, and was due to my failing to update the session file integrity check function after adding this warning. The function has now been updated in this release
own notes - not for website
/run callerchecker
/Remove experimental code in UpdateTrain
/need to set MaxRunningSpeed as min of the two trains for SignallerJoinedByMenuItemClick(), ok in timetabled joins.
/need to add additions for v2.11.0 to error file before clipboard additions
/need hourglass for tracklinking when click the button
/add train ID numbers with service refs so can identify when errors occur (added supplementary LogEvent in AddTrain)
/*Kevin Smith's faults notifoed 02/01/22: train stopping at Chester in error - added a check in NameInTimetableBeforeCDT - see function for explanation
/*Kevin Smith's other error - program crash when moused over a train whose ID couldn't be found - see comments in TrainController::Operate
/corrected error in time to act introduced in v2.11.0. See note before CalcDistanceToRedSignal... in RebuildOpTimeToAct... in TrainUnit.cpp
/*changed LinkTrack so track element position errors shown before missing links - requested by Dan (#4669) 19/12/21
VERSION CHANGES AFTER v2.10.0 for v2.11.0
IMPORTANT NOTE: there are two new files in the Railway folder - IndyCore260.bpl and IndySystem260.bpl. These must be copied to the folder on your computer where the new version of railway.exe resides or it won't work.
The main change in this version is the ability to skip timetabled events in order to compensate for late running. This feature is described in detail in the user manual and on-screen help in section 6.12.
Other changes:
If train is behind the performance or actions due panel when it is left-clicked in the list of actions due it is now centred on screen rather than just having mouse the arrow indicate where it is without any information. This corrects an oversight in the last release.
The minimum track element length has been reduced to 10m from 20m in response to user requests.
The default track element length (100m) and speed limit (200km/h) have now been included in the configuration file Config.txt. These can now be changed by editing that file (instructions are included in the file) and reloading it from the 'Mode' menu. Note that background colour, signal handedness and default file locations can't be changed by direct editing.
Own notes - not for website:
Not related to skipping timetable actions
/Create new branch 'Post v2.10.0 development' & use instead of 'Multiplayer experimentation' as both now combined
/If train is behind a panel when click actions due it doesn't show properly - need to centre it on screen & explain in manual/help
/Make next release 10m min distance, and may need to change some associated messages + help/manual
/Put defaults in config.txt & have way of reloading config without having to restart + include explanatory comments (shouldn't need backwards compatibility as these files not shared). These are currently in #define statements in TrackUnit.h
/say questionable cdts instead of unexpected + change help/manual accordingly
/check 7777s
/investigate X628 in Bernina (ttb Rhb...) with new IsSntLocated function
/Add LoadConfigFile to caller checker + HideTTActionsListBox & ShowTTActionsListBox
/Make next version 2.11.0 in about box & check all instances of 3.0.0 and change to 2.11.0 if not assoc with multiplayer or 'for multiplayer' if not
/Remove API files from caller checker as no callers /done for 2.11.0
/have tt modified message if change to AZ order then back again without saving anything (have TimetableChangedFlag = true just before 'catch' in AZOrderButtonClick, is that necessary? /dropped in v2.11.0
/add need for .toml file in devhistory for new projects /done for 2.11.0
Xchange all uses of '13' to component->item->height + bevelwidth * 4 or whatever required (no, leave as is since working ok - if problems arise in future then have this ability)
Timetable action skipping:
/add session data for trains in process of skipping
/add 'skipped events' to performance log and include with 'other missed events' for the score.
/try to skip at same location after depart and cdt elsewhere
/drop track & train info if behind skip panel
/Have panel above the skiplist with brief explanation + exit button (small square cross)
/Keep skiplist visible if select wrong action so can quickly select another
/disable all buttons when skiplist visible
/take account of last line being after a finish & don't rely on no newline at end of it - stop at the finish or before if >30
/only enable skiplist for trains stopped at sig or loc
/deal with departure for stopped at loc & skip to after normal depart
/add perflog message when skip actions
VERSION CHANGES AFTER v2.9.2 for v2.10.0
This version fixes a few bugs and also incorporates a number of changes.
New features:
Krizar has added new files and program modifications that allow real-time information extraction during program operation. These open up great potential for future development using external interacting programs.
Another brainchild of Krizar's is the inclusion of a new folder in the zip called 'Metadata'. Metadata is data about other data, or information about other information. The folder contains two files, one for each of the two railways that come with the download - Birminham and Liverpool. The files are of type .toml - 'Tom's obvious minimal language', which provides a format that is both human and computer-readable. Going forward it is intended to make more use of computer file reading, so users are encouraged to provide these files with any new railways that they submit to the website. More information about toml files can be found at https://toml.io/en/, and a list of country codes is provided at https://www.iso.org/obp/ui/#search/code.
The response to clicking a headcode in the 'Actions due' panel was always to move the viewpoint so the relevant train was centred on screen. This was often found to be annoying for railways that mainly fit on a single screen, as the viewpoint had to be reset again manually afterwards. Now, if the train is already visible on the current screen, the viewpoint isn't moved, the mouse position is all that is moved to hover over the train, wherever it is on the screen. If the selected train isn't visible on the current screen then the viewpoint moves as before.
A train direction analysis has now been included with the others when the 'Conflict analysis' button is clicked in the timetable editor. This looks for (a) trains that are created facing buffers (as they often are if the rear and front element IDs are entered the wrong way round); (b) potentially missing changes of direction (cdt's) - expanding on single service missing cdt check in the timetable validator by examining all linked services; and (c) potentially unnecessary cdt entries, where a cdt is entered when the train is already facing the right way.
Undesirable behaviour:
It was pointed out by Simon Banham that when a route is locked ahead of a train that is moving and positioned immediately in front of the signal that forms the start of the locked route it continues past it without a SPAD. The signal turns red as is required but it has no effect on the train. This wasn't strictly speaking a bug because the train was behaving as designed. Although the train looked as if it hadn't yet passed the red signal the program regarded it as having done so, and already occupying the first half of the signal element, the next half-element move only being shown when the train had covered the distance to the half way point. Nevertheless this reason couldn't justify what appeared to be wrong, so a modification was introduced to ensure that in these circumstances a SPAD would be triggered. This was something that I hadn't previously noticed so thanks are due to Simon for pointing it out.
Bugs:
A screenshot was sent in by Albie Vowles showing a failed train with a green (stopped at a signal) background rather than an orange background when it was standing in front of a red signal. Investigation revealed that this would happen when a train was awaiting a call-on into a station (purple background), and failed while waiting. The train kept the purple background after the failure instead of changing to orange as it should have done, and when the call-on was no longer available (the train infront having left the station) the background changed to green as it would for a non-failed train. It was corrected by disallowing a call-on for a failed train. Thanks to Albie for reporting this error.
Jason Bassett sent in an error file showing that timetable validation had failed where there was a non-station named location (blue elements) that included blue elements without track (as is quite normal) during the check for enough named elements to allow a split. This error highlighted the fact that although concourses had been taken into account non-station named locations without track hadn't. Once recognised it was relatively easy to fix by taking proper account of such elements. Thanks to Jason for sending in the file.
Sam Wainwright and later Bengt sent in error files that were generated when the Windows clipboard couldn't be accessed. When developing the clipboard functions I had trapped all (or thought I had) clipboard errors in order to prevent a program crash, but just issue a message or do nothing instead depending on circumstances. The clipboard is a resource that is shared between all applications so it can be changed outside the railway program and appear to it as if it is corrupt or inaccessible. Such cases generate a clipboard error but it isn't a fatal error, at worst it's merely an inconvenience and often not even that, so it isn't appropriate to stop the program. However Sam and Bengt found an instance where I had failed to trap one of these errors, and it was in a function that is called regularly by the system clock so the clipboard isn't necessarily even in use. Happily it was easily fixed so it shouldn't happen again. Thanks to Sam and Bengt for reporting this.
The user manual and on-screen help have been updated to reflect these changes.
other points not for website:
/added new try... catch EClipboard... block in SetLevel2TrackMode (mainly for case Pasting)
/discovered a missing '&' in line 'if((Level1Mode == TrackMode) && !SelectionValid & (ClpBrdValid != "RlyClpBrd_Cut") && (ClpBrdValid != "RlyClpBrdCopy"))' in ClockTimer2
/Added Krizar's api files etc & credit given in in AboutForm
/Preset autosigs not set if find a signal facing wrong way - mention in manual & help /done
/Add perf log file info at start & when loading a pre-start session - gives railway, tt & start time
/Give Fer exit locs in direction analysis /ok for 3.0.0 (added at end of SingleServiceOutput in TrainUnit.cpp)
/changed (a == z + 1) in conflict analysis to (a <= (z + 2)) to allow for a cdt
/Changed all operating panel key hints to lowercase as Shift is disabled in the function & change in user manual & help too
/In Case OperMode add if(!EveryPrefDir->PrefDirVector.empty()) as a condition for enabling PresetAutoSigRoutesButton(InterfaceUnit.cpp)
/added '&& !EveryPrefDir->PrefDirVector.empty() in conditions for PresetAutoSigRoutesButton->Enabled = true in SetSaveMenuAndButtons
/Add warning that a station has concourses but no platforms or Blue locs with no track - won't appear in timetable
/Arrange for images to show text on top of named locations
/Remove all 7777s and call CallerChecker
/Don't leave anything in TestFunction()
/add logs where ignore EClipboardExceptions so can see if reach those points
/Check where & why CallLogPop introduced before throw in TrackElementAt - intro on 02/06/21 at rev 3745fadb... with no explanation, just delete it.
/Check all non-error catches & ensure all pop the call log properly - ok they do.
/Remove the non-printable copyright symbol in v2.10.0 - not required anyway
/Need to add GetServiceFromVector, TrackElementPresentAtHV, InactiveTrackElementPresentAtHV & SingleServiceOutput to caller checker
/Add more explanation within the analysis file re directions
/Alter text for splits to make clear whether original service or split service & maybe give sequence at start rather than just the service ref
/Add more diagnostics to analysis error file to indicate where the error occurred
Testing direction analysis:
/- check same headcodes so have /1, /2 etc (LU Met BK, & Kings Cross same headcodes3.ttb [with KC PCR])
/- try many other tts
/- check old KC tt (with cdt errors)
/- try multiple splits (Cornwall)
/- check single service missing cdts
/Remove TestFunction for failed train test
/Try a release configuration instead of debug and see if it still needs .dlls and .bpls. It doesn't but get a very large number of warnings of the sort 'variable X is declared but never used', when they all manifestly are used! Unable to discover why so stick with debug configuration, there seems to be no detectable time penalty and the .dlls are easy enough to include.
VERSION CHANGES AFTER v2.9.1 for v2.9.2
I sincerely hope that this release cures the preferred direction problems associated with the Windows clipboard. It seemed like a good idea to include preferred directions at v2.9.0 but given the trouble they've caused now I'm not so sure.
One good thing is that one of the corrected bugs explains the error found by Daniel Gill at v2.9.0 in response to which the code was strengthened for v2.9.1, but it continued to bother me because I was unable (then) to reproduce it.
I have tested this release extensively but still feel quite apprehensive, my fingers and everything else are well crossed! Please let me know if you see any odd behaviour or send in any error reports if they are generated - thanks.
I have also to confess to another error, not a bug this time but a plain blunder on my part. I had noticed a while back that the performance log omitted exit counts - early, late and on time exits - so in an earlier release I included them, but forgot to initialise them all to zero! A schoolboy howler! I only noticed it recently but I'm sure others heve seen it too, with exit numbers listed in the hundreds of millions or even billions! These have now been corrected.
I was ready to release the new version when Simon Banham sent me an image of a railway with a locked route and signals on it all green! That was clearly not right. On investigation it was found to occur when a two segments of automatic signal routes had a segment of non-automatic signal route between them, and that route was locked. When a train in advance of the locked route passed a signal all signals behind it were reset, but the resetting function failed to take account of the locked route so signals were reset as if it didn't exist. Fortunately it was quite an easy fix, so that shouldn't happen again. Thanks are due to Simon for pointing this error out.
Other points not for website:
/remove Beta from version
/run final caller checker
clipboard probs:
/ - set all CheckCount values explicitly to 9
/ - when using 'find' in SelectTrackMap there's an 'in principle' danger that an inactive element might be found - not in practice because active elements stored first so these take all the h & v slots rather than inactive elements, but shouldn't rely on this - find a way to only store active elements in the map - ok, screened out inactives using the 5 inactive TrackTypes
/ - when LoadClipboard adds pref dirs it only explicity adds 7, missing TVPos and SpeedTag. Should add these too so that CheckCount can legitimately be set to 9. Best to use the original value for TVPos for consistency & tidiness if possible, though it will be reset when pasted and again later when the track is next linked. Don't need SpeedTag as set from the corresponding TrackElement
/ - check if Conns & ConnLinkPosses set in pref dirs when track linked, or if these stay as -1 - best if can be set properly. Yes, these are all set in RebuildPrefDirVector when the track is linked
/Simon Banham error 21/07/21: Locked route had signals reset as if not locked when a train in advance passed a signal. Corrected by adding check for locked routes in SetRearwardsSignalsReturnFalseForTrain
/ problem with GetTrackElementFromAnyTrackMap returning element with wrong properties - caused by passing Vector in by value rather than reference, when it returned Vector went out of scope and was invalid. Changed both Map & Vector to references & ok now (Map needn't be a reference but included it anyway)
/ add name of file where can't load, ask to check spelling - done for railways, timetables & sessions
/ added session file extras to error file & kept the v2.8.0 additions at the end as not wanted in a reconstructed session file
/ 5N80 has too long an actions due time in first saved KC session - OK, needed to keep MinsDelayed at 0 for passes
/ Had failed to zero the 3 exit parameters OnTimeExits, EarlyExits & LateExits when they were introduced <-- BAD ERROR
VERSION CHANGES AFTER v2.9.0 for v2.9.1
This is a bug fix release as a result of an error reported by Daniel Gill when rotating a segment of railway. I have not been able to reproduce the fault but made improvements to the rotation and associated functions that seem to have cured it. Also included are a couple of minor changes that were awaiting the next release as follows:-
The 'Comment' entries in the timetable service list have been changed to show the first 15 characters of the actual comment as this is felt to be more meaningful.
A timetable time has been added to all warning logs that are shown in red at the top of the screen.
-> = mention on website (only a few as new version will be v2.9.1)
/hundreds of TrackVector.at( and InactiveTrackVector.at rather than TrackElementAt(Caller, ... all done.
/add more brackets in ExNumber function
/use 'y' instead of 2 'x's in rotation of prefdirs (& maybe elsewhere)
Daniel Gill error: Drawn a blank here, nothing stands out as likely or even possible noting that the error occurred in the rot right function itself
/seed an access fault and see if same - gives an EEFFACE error, access violation means prog is trying to access an area of memory reserved for another program
/Access violation error in Isglassen05 error 31/07/20, due to attempt to access an empty vector address
/look at all at's for track, prefdirs, text etc
/what about cut & copy, any missing properties? No, all stored in vector AND MAP as is, but the SelectPrefDirMap isn't used
/what about the pref dir map, when is that compiled? during paste
/what about Selectvector, is there a map too or just a vector? Just a vector, no map
/->added times with warning logs (in red at top of screen) for more info
/->Changed "Comment" in timetable list box to * + actual comment truncated to list box width - so more meaningful
/added a lot more instrumentation in rotate etc. to help find any more errors that arise in these functions
/added all parameters for pref dirs when flipping etc in response to bug reported by Daniel Gill
/added entry restriction for continuations when a route is set against it
/Added headcode to warning message about 2 or more locations with same name in a service
/Possible problem. If have 2 or more services with same location name twice or more, and only show message for first, what about second & others? OK, have new panel giving all required information
/Error in location ID in conflict file for Fer entries without a name. OK, had used 'N' instead of AnsiString('N') & gave odd results
/Try to incorporate passes in conflict analysis - 2 entries in LocServiceTimesVector, 1st as arrival & atloc and 2nd as departure & atloc
/Doesn't seem to be a penalty for late exits - ok added in, needed quite a lot of changes including new session file additions
/Added message flags for location elements too long or short so only shown once
/Altered hint for length conversion panel to include 1 mile = 80 chains, 1 chain = 22 yards
/Altered code for finding timetabled location name in case train straddling two different location elements & only one in timetable
VERSION CHANGES AFTER v2.8.0 for v2.9.0
Include on web version page:
This update represents a bit of a tidy-up - adding features that should ideally have been added earlier.
The main addition is to include preferred directions (PDs) in selected railway areas for cutting, copying, rotating etc. This omission had become an odd man out since the other track attributes were included some time ago. It was left because although PD elements are derived from track elements the data they embody is stored separately from other track data, so new selection and manipulation functions were necessary to capture and manage them. These functions are now included and work with all types of selection, including use of the Windows clipboard.
Another addition is to include a check function able to find and highlight potential PD conflicts. When building PDs it is very easy to miss short segments of track, especially on one leg of a set of points, leaving them without any PD and thereby preventing automatic and PD routes being set across them. The check function is available in the 'Edit' menu in PD mode and is explained in section 4 of the manual and on-screen help.
Level crossings are now included in zoom-out mode, and they are shown flashing for manual crossings that are open to trains without any routes across them. This is to remind users to close them because heavy time penalties are incurred if they are forgotten - which I've done to my cost more than once! To further remind users about such level crossings a warning icon is also shown flashing on the left hand side of the screen.
Points to note that are not included on web page:
Update Contributing.md to mention discord wrt having a question
Lincoln - LS51 went from 2min to 3 min when stopped at Saxilby. It's because MinsDelayed is only calculated at each logged action and is subtracted from later stop times, assuming the timetable is (reasonably) correct. If more time is made up before the next station then the subtraction is inappropriate, but subtracted anyway and the time to act can be shorter than it should be. This is corrected at the next logged action and the time can increase. Similarly if there is a lot of make up time before the next but one (or more) stop, it won't be accounted for until that stop is the next stop. Otherwise the calculation becomes too complicated. Overall the time to act assumes the timetable is reasonably accurate with regard to timings, and if a long way off then so will the times to act. But, in all cases as the time reduces it becomes more accurate.
Error found in Mins Early calculation - error in Lincoln for LT01 when appeared - Mins Early was ~47mins & LaterStopTime was about same, so didn't show in Actions Due panel, but Mins Early should have been 0 or close to it. Now corrected.
Checked all catches that don't go to errorlog & added calllogpops where required. Some of these functions call external functions that have errorlog throws - but don't want to add pops in those functions as would lose the last call log item, but do want to allow for the catch coming from such a throw. Don't alter these - will have an extra item on the call log but that shouldn't be a problem.
Added initial check that the executable exists in the working directory. If not an attempt is made to change the working directory to the directory in which the executable resides, and if successful program execution continues normally, or if fails a message is given about the working directory being wrong and the program terminates. It was found that sometimes the shift left click taskbar icon doesn't work (seems to only work if there's a desktop or a taskbar icon for the program), and if so right clicking gives an option to run the program, but if selected the working directory is changed to \Windows\System32 giving very odd effects. The above mod corrects that behaviour by resetting the working directory.
VERSION CHANGES AFTER v2.7.0 for v2.8.0
Include on web version page:
The main change in this version is the ability to use the Windows clipboard so that areas of railway that are cut or copied can be pasted into another railway application. The user manual and on-screen help have been modified to explain the process in section 3.5.
Minor changes:
1. After selecting an area of railway in track build mode the track elements now become visible so that the selected area can more easily be filled with a particular element.
2. If an area of railway was cut and moved and then cancelled, it used to be pasted in the new position which wasn't appropriate, so now it's pasted back in its original position.
3. It was found that if a route was set for a call-on into a platform where there was already a train, and that train changed direction, the route was cancelled. It happened because of an earlier change that cancelled stub routes ahead of a train when it changed direction and the excess route beyond the train was no longer wanted, but the route direction wasn't checked so any route was cancelled. Now the route direction is checked and only routes leading away from the train are cancelled.
4. It was found that a route could be set across a level crossing that had only just begun to close to trains if the route setting was done very quickly. The final signal before the crossing stayed at red so trains would be protected but the route was present and shouldn't have been. The program check routine has now been modified to include routes that are in course of being set in addition to routes already set.
Changes not included on web page:
File specification changed to include the session file addition after v2.7.0 - should have been done for last version.
Error in LC down time: Exeter log 11:34:28 gives 0.4mins & is later than 10:33:01 which gives 0.9mins. Problem is that the excess minutes are only calculated on exit from operation or program, whereas the session value is stored before that. Best to assume that train will cross LC after the perf summary sent so deduct 3 mins from each down barrier. If train does cross then accurate, if it doesn't then later play will increase the value, but in all cases the value can only increase in successive perf summaries.
Create character buffers in Utilities.cpp using new but don't use delete[] - there were a lot of these spread throughout the program so memory leakage would occur, all ok now
Manual doesn't explain how to delete a user graphic. Keep existing arrangement but explain that have to select a graphic (any will do) then right click it. In fact it does in section 3.1, but not in 3.2 - tidied up now
Manual error: " it does not automatically open after a train has passed" - should be "close", maybe better to keep to barriers lowering & raising, check other sections for consistency - done
Actions due time STILL too short for TL16 approaching Swanley - see session file. Due to not using GetRepeatTime for repeat departures, so departure time was too low, Corrected now.
In TTrainController::CalcOperatingAndNotStartedTrainLateness where AVEntryPtr is a combined arrival and departure and the arrival time is less than TTClockTime then it registers as 'failed to reach' even though the train has arrived and is stopped at the location. Also late departures are included in the same calculation (for OperatingTrainArrDep) but these should really be included with late departures. OK, added !Train.StoppedAtLocation as condition to rule out TimeTimeLocs where train has arrived. Also dropped departures from both operating and not started trains and dropped divide by 2.
In TTrain::CallingOnAllowed don't count the distance for the track element that the front of the train stands on, as it has already covered that distance, start at the next element. Can use 'if(Distance > 4000 + LeadElementDistance) then all else stays same, but need to derive it from LeadElement which is a track vector position.
Trains due to stop at next station still have too short a time in actions due panel! See session 19/03/21 at 9:36 for FP03, due to stop at Chatham and times down but when stops time goes up to 2 minutes. OK, changed (DistanceToStationStop < DistanceToRedSignal) to (DistanceToStationStop <= DistanceToRedSignal) in CalcTimeToAct
Should only have a 'save' option for a railway after changing or moving text, graphics, copying or cutting. It's function ResetChangedFileDataAndCaption that sets the option, and it's called too early for text and distances (& maybe others). All checked & much better now.
VERSION CHANGES AFTER v2.6.2 for v2.7.0
This version incorporates a number of functional changes that will hopefully make operation easier as follows:
In response to Josco's suggestion via Discord of adding information to trains listed in the 'actions due' panel this is now included. The same information as is selected via the 'information' menu is shown when the user hovers over a headcode and clicks the right mouse button. The mouse button click was added instead of just plain hovering to avoid distraction when the information isn't needed.
There are now two options available when selecting preferred direction (green) routes. The green route selection button is split into upper and lower halves, the upper half working as before where the route is built by clicking on each consecutive signal (or buffer/continuation at the ends) - this reflects normal practice. The lower half button allows routes to be built from signal to any following signal (or buffer/continuation at the ends). Routes built in this way must still follow preferred directions, so should be more accurate first time than unrestricted routes that don't have to follow preferred directions. In fact this change was suggested by Bjorn years ago!
When a train exits at a continuation and there are two or more possible exits to choose from, there is currently no way during operation to know which is/are designated as correct in the timetable. The exit element identifier (ID) is shown only if the exit isn't named. In this version the allowable exit IDs are listed in the timetable information window. This change was prompted by my abysmal performance at the last signalling social when operating Liverpool St to Romford. I repeatedly sent trains out from Romford on the slow line when they should have used the fast line - don't tell anybody! I won't have that excuse in future so I'll have to find a new one.
When a train was stopped at a signal and a call-on offered and accepted, the time to act remained 'NOW' until it passed the signal. That was inappropriate so now as soon as a call-on is accepted the train is removed from the list.
The manual and on-screen help have been updated in accordance with these changes as have the file specifications.
One correction was made relating to train colours:
I noticed that on returning a train to timetable control at a stop location after being under signaller control the train colour changed to 'running' (grey) when the route in front cleared, even though the train wasn't due to depart. The colour should have remained pale green (stopped at location) until the departure time. The fault was found and corrected.
VERSION CHANGES AFTER v2.6.1 for v2.6.2
This is simply a fix for a bug introduced in the last version relating to two locations having the same name. What I overlooked was that in a developing railway locations can be saved before they are named, and in these cases they have a null name, which is an empty string - meaning unnamed. The name checker failed to ignore these locations so the warning message was given in error - causing confusion - each time such a railway was loaded. Happily the fix was quite simple - a new line that checks for nulls and bypasses the name check if any are found. Thanks to Micke(Commuterpop) for reporting this issue.
VERSION CHANGES AFTER v2.6.0 for v2.6.1
This version includes a number of small functional changes, a couple of bug fixes and documentation changes.
Small Functional changes:
In response to Bill78's supporting program to merge two .dev railway files there was a need to check that two locations didn't have the same name so as to prevent the merged railway being saved as a .rly file. There is an existing check but this is made on entering a name, and this prevents two locations having the same name, but with two separate railways being merged each might have a name that appears in the other railway. A new check is now made on loading a railway file, and if the same name is found a warning is given to say that the railway can't be saved as a .rly file. The check and warning is repeated if an attempt is made to save as a .rly file.
When gap setting the existing arrangement marks gaps to be set, but in a detailed railway these can be hard to find. Now the marks flash in both zoom-in and zoom-out modes and are easier to spot.
During operation, after taking signaller control of a train, it was easy to click 'step forward one element' inadvertently if two clicks were made in quick succession. The position of the pop-up menu has now been moved slightly so that the mouse does not lie over any of the options so as to prevent this nuisance.
If a train was removed by the signaller there could be a short stub route left over ahead of the removed train. This is now removed up to the next signal (similar to route removal behind a train that has changed direction).
Bug fixes:
Androeker discovered an error & notified it via discord on 16/12/20. The error was that if a location name containing a continuation was changed then a timetable that included it would validate and therefore allow the program to load and operate, the reason being that the list of continuation names [ContinuationNameMap] wasn't updated in these circumstances [it's only updated in TryToLinkTrack, so if that isn't called, as it isn't for a name change, then the error wouldn't be seen by the program]. When the program was exited and later restarted and an attempt made to reload the (flawed) timetable the continuation name list was updated (as it is whenever track is linked), so the program saw the error and the load failed. This correction rebuilds ContinuationNameMap whenever a name is entered or changed so the timetable validator now gives an appropriate error message.
It was noticed in the 'Actions due' panel that the time to act was sometimes too short for trains that were approaching a stop location. The time corrected itself when the train stopped. What happened was that when running early the time calculator didn't take account of the extra time needed at the next station before reaching it. This version updates the time calculator to take account of the dwell time.
Additional changes:
User manual and on-screen help updated in line with latest program changes.
The file specification document has been expanded to include session files, timetable files and the configuration file as well as railway files. It now also incorporates the earlier 'Changing a timetable in a session file whilst retaining routes' document.
Detail:
* = mention on website
/*changed position of popup menu for signaller control - as was could inadvertently select 'move forwards one element' if clicked twice in quick succession
/*remove route ahead of a removed train up to next signal - like cdt stub route removal
/*add location name checker for when saving as a .rly file in response to Bill78 merge program (& when loading a file)
/*add flashing gap in zoom out & zoom in for ease of finding
/*[bug fix] Androeker error found 16/12/20 & notified by discord on 16/12/20. Error was that if a location name containing a continuation was changed then a timetable that included it would validate and therefore allow the program to load and operate it, the reason being that the list of continuation names [ContinuationNameMap] wasn't updated in these circumstances [it's only updated in TryToLinkTrack, so if that isn't called, as it isn't for a name change, then the error wouldn't be seen by the program]. When the program was exited and later restarted and an attempt made to reload the (flawed) timetable the continuation name list was updated (as it is whenever track is linked), so the program saw the error and the load failed. The modification rebuilds ContinuationNameMap whenever a name is entered or changed so the error is no longer be hidden.
/*[bug fix] Actions due time too short for trains approaching a stop location, corrects when stopped for duration of stop but seems to ignore the next stop duration when approaching. Only seem to calc stop times when actually stopped (see TrainUnit.cpp line 17684), prob to do with early or late running & recovery times & prob a comment somewhere about it. If merely remove line 17684 then seems ok! Compare with & without this if... statement and check whether can lead to any problems - if ok then run for a long time to confirm no adverse behaviour. No, that is needed because in a while.. loop where each element is examined in turn. What happens is that when running early it doesn't take account of the extra time needed at the next station. Added mod 16/12/20 & seems ok but needs a lot of testing.
/update on-screen help when all manual changes made
/mention in user manual flashing gaps when setting - to find easier on big railway (both zoom modes)
-----------------------
VERSION CHANGES AFTER v2.5.1 for v2.6.0
Text in website 'Version information':
This version includes a number of functional changes as well as several 'corrections' (i.e. improved undesirable behaviour) and bug fixes.
Functional changes:
A selected area can now be filled with a specified track element, which can save a great deal of time when building long sections of horizontal or vertical parallel tracks. This was in response to a request from Wilsteady. The user manual and on-screen help have been expanded to explain this feature in section 3.5.
Level crossings can now be opened and closed manually by left clicking them. This was in response to a request from Krizar. The user manual and on-screen help explain how to use this new feature in section 3.1.1. Note that program versions earlier than v2.6.0 won't load a session file that includes any manually opened level crossings.
When railways, timetables or session files are in folders other than the defaults, and a user navigates to them for loading or saving, the new folder locations are stored in a configuration file (Config.txt) and are used thereafter by the program. This is helpful for users who prefer to locate their files in other than the default folders and is in response to an initial request from Micke (Commuterpop) and subsequent suggestions from Bjorn and Krizar as to how it might be done. The feature is described in the user manual and on-screen help in sections 2.3 and 6.3. Config.txt also now stores the background colour and signal handedness, making the earlier files that were used for these purposes redundant.
Horizontal & vertical signals can now be used in named non-station (blue) locations. Wilsteady suggested this a few months ago. I think I was just playing safe in disallowing them but on further thought I can't see why there should be problems and testing didn't reveal any, and it makes them consistent with station locations where signals can already be used.
Corrections:
If a timetabled location appeared twice or more in a particular service other than with a change of direction between them it was assumed to be an error and not permitted. It isn't necessarily an error however for trains that take a circular route back to earlier locations. This was queried by Daniel Gill some time ago and I promised to look at it again. This version now allows location duplication but gives a one-off message to allow the user to check whether it's intended or an error.
If a railway or session contains user graphics and the program can't find them, then formerly the load would fail. Now they are loaded without them but a message is given to inform the user.
In the last update a train that changed direction at a timetabled location had any excess route elements beyond the train removed automatically up to the next signal. This has now been extended to trains under signaller control that change direction.
Bug fixes:
A route that finished at a trailing point leg where an existing route on the other leg looped back to this trailing leg caused an appending route to loop forever. A new test has been added that checks and exits for this condition. Thanks to Xeon for spotting this and notifying me by email on 13/10/20.
If a named location was copied and pasted next to another location it didn't take the name of that location but lay next to it and remained unnamed. This version corrects it, making the pasted location take the name of the existing location.
Detail:
* = to be mentioned on website (as above)
*/mention manual & help changed
/*See if can allow user to click level crossing to change state, need to preserve penalty timing & if opened reclose after train passed or user clicks again OK done for 2.6.0.
/*See if can include Wilsteady's suggestion re filling a selected area with a track element (and if do so change the paste warning (PasteWarningSentFlag) to include it as well as pasting - no need as filling doesn't overwrite existing elements)
*/See if can set basic directories to the last folder chosen as per Micke's request
done 08/10/20 - details: Now have Config.txt instead of Signal.hnd, Background.col & GNU, so they are now unused, though signals will initially be on left regardless of how set before & background colour will be black - so may need setting again. Config.txt only written on closing so on first opening it doesn't exist and all values are the defaults. Directories (for railways, timetables and sessions will remain where last navigated to in a save (for railways & ttbls) or load (for all). Can't select session save directory so need to navigate to where wanted in a load - and load one (may need to copy or move one there first if none there already). If can't find a directory in Config.txt then reverts to the default (as before) directory. Stoll nervous about this as it uses Windows functions and they often don't do what's expected of them!
/*Added horiz & vert signals to named non-station locations - Wilsteady's suggestion on 09/05/20. I think was just playing safe in disallowing them but on further thought I can't see a reason, and it makes them consistent with station locations.
*/[functional change but really a correction]Check whether a location appearing twice or more needs to be an error. Maybe just a warning to check it's not an entry mistake. (line, 11684, 11754 & 11836 in TrainUnit.cpp). If give warning just give it once. Done all this 7/10/20 & seems ok. Loops and same consequtive locs now permitted - seems ok, hope there's no dire effects lurking!
*/[correction] If can't find a user graphic then ensure can load the railway without it. OK, can load the railway, and after some mods can also load a session file.
*/[correction] Add route removal for signaller mode cdts done 7/10/20
*/Bug fix: Error found by Xeon notified by email 13/10/20. A route that finishes at a trailing point leg where an existing route on the other leg loops back to this trailing leg causes an appending route to loop forever. A new test has been added that checks for this condition.
/*Bug fix: If copy a segment of a location and paste next to another location it doesn't take the name of that location and named and unnamed lie adjacent to each other. OK corrected 25/10/20 by removing the CopyFlag condition when pasting - don't need it for pasting because want any locations (which are unnamed for copy) to be named if the they are pasted adjacent to an existing named location
/Bug fix: Don't have change of service show both trains at loc at same time (did this when finish time same as arrival time, & prob also when start time same as dep time) OK added new test 10/10/20
/Bug fix: after clearall usergraphicreselectpanel shown if click graohic button but fails if try to reselect because vector & map cleared when track deleted & recreated. Check now includes UserGraphicVector being not empty or panel not shown
/[correction] When mirror part of Birmingham station the mirrored part retains the name & the rest is unnamed, but when mirror back again the station takes the name as required but not the blue sidings, they retain the striped image & are unnamed. Only seems to happen if select a single blue element. Yes, it's because it isn't expected that added elements are already named (they aren't when adding track), so add a check in SearchForAndUpdateLocationName for the added element having a name and if so enter it -allows to pasted elements having a name. done 24/10/20
/Check if conflict analysis ok with multiple station names - no, should be ok
/Change manual info to 2.6.0 in base program page
/also add tt error messages on same page
/change text on download/base program page to refer to latest version + mention the taskbar issue re flashing
/drop dropbox links
/Give warning if a paste area will overwrite existing track
/If lower barriers manually then stays red if any auto barrier changing open or close - ok, needed colour selection inside the for.. next.. loop done 30/10/20
/Add SetBarriersDownLCToManual, SetLinkedManualLCs, IsBarrierDownVectorAtHVManual & AnyLinkedBarrierDownVectorManual functions to CallerChecker
/if manually lower LC barriers have to manually raise them, even if set a route across
/ Try to expand on explanations of the 'core' classes in DeveloperGuide to give people a better starting point to explore the code. maybe an overview flowchart. [Added call and caller graphs + inheritance diagrams in doxygen html output]
/Added more detail to manual & help on braking force
/Added wording to timetable analyses to better explain use of asterisks - arrivals & departures don't have asterisks if total number of arrivals or departures exceed platforms, added that asterisks show in location analysis in these cases
/Extend error messages for name not being in the tt and name not being a valid location - suggest checking if there are named concourses without platforms. OK done 10/10/20
/Check if there's a way to see if a scrollbar is present in a panel and if so use that for HighlightPanel instead of > 46 entries - that's crude! Doesn't seem to be an easy way - use 47, that's more accurate - done 7/10/20
/Change manual:-
/- 2.3 mention config file & say what it stores, drop mention of signal.hnd & background.col
/- 3.4 1st para say can change location of railway files
/- 3.2 & 3.3 warned about windows fonts in both these paras, drop one
/- 5 include change of timetable location there as above
/- 6.3 mentions Sessions folder location
/Change help file as above
-----------------------
VERSION CHANGES AFTER v2.5.0 for v2.5.1
This is a relatively minor 'tidy up' release. It adds a few features that improve usability and operation, and corrects a couple of bugs.
Functional changes:
When a train changes direction under timetable control at a location other than at buffers there is usually a redundant route left in the original direction. The program now removes these unwanted routes automatically up to the next facing signal.
All types of finish event are now permitted immediately after a new train is declared ('Snt') apart from Fns-sh & Frh-sh.
Facing signals can now be allowed next to bridges if the user chooses it - this is useful for working on old railways without having to change them or for new densely packed railways. A warning is given that such signals can't be used as route truncate points, but it is now up to the user to decide whether or not that risk matters.
The distance/speed selection warning that all track lengths will be set to the specified value is now only given once.
A few timetable error messages have been clarified.
Bug fixes:
For distance/speed setting the selected track length should show in magenta for easy identification, but prior to this release it was overridden by the normal colour when set.
Track information showed when the mouse was positioned over the timetable editor, this has now been corrected.
-----------------------
VERSION CHANGES AFTER v2.4.3 for v2.5.0
* = mentioned on website
Functional changes:
*Timetable conflict analysis added. This is too complex to explain here but it is described in detail in section 5.12 of the user manual and on-screen help.
*The warning that a session file hasn't been saved when a session is ended or the application closed is now only given if the timetable clock time is 5 minutes or more later than the last session save or later than a new session start time
*Signals immediately before bridges are now disallowed for new railways because the bridge prevents a route from being truncated to the signal (a bridge as a truncate point is ambiguous as it may contain two routes and is therefore not permitted). Existing railways with signals next to bridges will still work as normal, but if any changes are made to the layout then the restriction will apply.
*An option has been added to 'not show again' the warning when changing the timetable clock.
*Information is now provided for follow-on services in both the train status and timetable information windows when hovering the mouse over a train. It includes changes of direction, splits and joins, and departure times. This information helps in decision making for trains at and due to arrive at locations, especially in route setting for departures and platform selection for arrivals.
*The 'Actions Due' panel now shows trains requiring attention before operation is resumed when a session file is loaded. This only applies for sessions saved after operating the railway, it doesn't apply for pre-start sessions. This allows the state of play to be assessed before operation, and trains requiring the most urgent attention can be located ready for routes to be set as soon as operation begins.
*The ability to right-click the first letter of text to delete it has been re-established in 'AddText' mode. From v2.1.0 it was overridden by the screen move routine, but now text deletion takes precedence.
*In the timetable editor the selected entry following a cut or delete action is now the entry before the deleted entry rather than after it. This makes it easier to insert a new entry in place of the deleted entry.
*The keyboard shortcut keys for AddMins & SubMins in the timetable editor have been removed because when these are to be used the edit box has focus and a keypress is interpreted as a text entry rather than as a command to simulate a button click.
Operator action panel hint delay changed to 3 secs from 4, and update operator action panel changed to every second from every 2 seconds.
Bug fixes:
*It was noticed that the response to timetable editor keyboard shortcut keys didn't match button click behaviour accurately in all respects. The keys worked as they should but sometimes the selected entry reverted to the top of the list making it necessary to scroll down again for long timetables. This has now been corrected.
*An error discovered by Albie Vowles and reported via email on 14/08/20 was corrected. It was a fault that was present from the beginning involving locked routes, where all elements in the route normally stay locked until they time out at 2 minutes. In Albie's case a train ran past the signal at danger (with the locked route ahead of it) and cancelled two elements, leaving it shorter than it originally was. Periodically the program rebuilds the entire railway, for example when the viewpoint changes, but in rebuilding this locked route it assumed it was longer than it was, and when it came to the end sooner than expected the program crashed and generated an error file. Fortunately it was easily fixed. The program now checks whether the actual length of the locked route is shorter than expected, and if it is then the rebuilding stops when it reaches the real endpoint.
*An error discovered by JKWok and reported via discord on 9/7/20 was corrected. If separate locations were joined together by a new platform or concourse not all the earlier separate names were deleted. It was due to not ensuring that all elements had the chance to have an existing name erased, but now they do.
Delete own temporary timetable file on exiting the program so as to limit the build up of these unwanted files.
If tried to load a timetable for editing but failed for any reason, the timetable stays displayed with the signal hand image present & obscuring half the timetable. Now the signal panel is blanked early in the 'edit timetable' function.
Notes about correcting shortcut key behaviour in the timetable editor - this was particularly problematic. After copy a timetable entry using shift c, (not when click button) the list starts again at the top where the top entry shows blue, even though the highlighted (orange) entry is as it was and still shows in the display panel. Spent a long time on this and can't make any headway. Tried setting ...ListBox->Selected[index] to the highlighted entry in ClockTimer2 when HighlightPanel set but it altered the TopBox value and the highlighted entry for some unknown reason. Tried lots of other things but none worked. Found that if pressed C again it reverted to the correct position! It also affected the other keyboard keys as well but not delete, presumably because had to click a message box button.
Progress! When press a key it highlights the first entry it finds beginning with that letter - BEFORE the click function is called. BUT, still can't override it, setting AutoComplete to false doesn't work, and changing ItemIndex, TopIndex and Selected[ItemIndex] in CopyTTEntryButtonClick affects behaviour but doesn't do what is needed.
If press 'c' on its own, goes up to first comment, then click copy button while 'c' held down, still reverts to proper position. Same if hold down shift c then click copy button. Tried setting focus on listbox, no effect, tried running through the copy routine twice (since when shift c pressed again it reverts to proper position) no effect, tried setting AutoComplete to false within the copy function, no effect.
Question is why does it behave differently when all executed code is the same? And why does it revert to proper position on second keypress (only reverts ok with shift c, not with c on its own)?
Maybe flush the character buffer before the function executes? No effect.
Interesting: in monitoring AllEntriesTTListBox->TopIndex in copy function, in the first pass when shift c pressed it was 75 (as it should be), but when shift c pressed again it entered with the value 1, i.e. the true position, and was reset to 75 in the function, when it displayed correctly. So it seems that it is reset outside my code by Windows, somehow. But setting it to 1 initially inside the function had no effect.
Setting AllEntriesTTListBox->TopIndex to 75 in ClockTimer 2 worked ok, regardless of whether key down or not.
Set AutoCompleteDelay to 1mSec (from 500mSec) and added a delay before the copy function of 2 secs, interestingly the positioning of the selected entry to 1 occurred AFTER the 2 seconds, so the Windows function (whatever it is) occurs AFTER my code executes - didn't expect that!
Try flushing the input buffer before the delay before the copy function. No good.
Seems that the only way to deal with the problem is to pass control back to ClockTimer2 so the function executes after the os does what it does with the key. Set a flag in FormKeyDown and execute and reset it in ClockTimer2.
It works!!
But, problem with delete (shift e) because the confirm question box appears after the keypress but before the main part of the function call. Reset AllEntriesTTListBox->TopIndex before the question, that works ok, but still have the selected entry showing in blue which might be confusing, so try selecting the same entry as TTCurrentEntry. Yes this works ok, added new function SetTopIndex() & call for every keypress in timetable mode.
Problem when press page up or page down with selected entry changing. Added AllEntriesTTListBox->Selected[TTCurrentEntryPtr - TimetableEditVector.begin()] = true; in ClockTimer2 whenever in TTMode so selected always same as TTCurrentryPtr. Solves that problem but now when click mouse on one of the listed entries the entry chosen on MouseUp isn't always right. It's because when scroll to a different position and click on an entry, the ...Selected[...] line immediately changes TopIndex so the entry where the mouse is down is different to the one chosen. Hence only allow selected to be changed when both mouse buttons are up, to ensure that AllEntriesTTListBoxMouseUp runs first (uses either mouse button). Yes that works OK.
But, still changes TopIndex on Copy using shift+ c, even though correct item highlighted. Cured it by setting AllEntriesTTListBoxTopPosition = AllEntriesTTListBox->TopIndex in FormKeyDown function for TTMode and restored it in ClockTimer2 if any key flag set. Now at last all seem to work as the buttons - phew!!
-----------------------
VERSION CHANGES AFTER v2.4.2 Beta for v2.4.3
This is purely a bug-fix release to correct an error reported by Isglassen05 on 31/07/20. When using 'Delete' in the edit menu in a railway that included one or more user graphics, where the selected area for deletion didn't include any graphics, the program would fail. It was due to the variable used to search for included graphics being set wrongly. This version corrects the error. It is surprising that it hadn't been reported before as it was present from v2.4.0 onwards.
-----------------------
VERSION CHANGES AFTER v2.4.1 Beta for v2.4.2
* = mentioned on website
*Mention can put text on top of stations and non-station named locations (added for 2.4.0 but forgot to mention then).
Updated developerguide to mention the doxy files with more detailed descriptions.
Arranged comments better in header files so display better in Doxygen html.
*Added many more keyboard shortcut keys, most buttons now have a shortcut. The button hint shows the shortcut and they are all listed in the manual and on-screen help
*Mention manual & on-screen help updated.
*Added points check in check for wrong end entry (Xeon error reported 30/05/20 - not a new fault).
Dropped 'save failed' message when click cancel in a timetable save dialogue and 'File not saved' message in smae circumstances for a railway file save
*Corrected SPAD error reported by Micke 02/06/20 when trains entered a continuation with zero (or very low) speed - see TrainUnit.cpp for explanation in SetTrainMovementValues (search on Micke).
Route locking required took no account of train direction. A train moving away from a set route within 1 element of route start still gave the lock message when attempted to cancel and caused locking. Modified RouteLockingRequired to correct this behaviour.
-----------------------
VERSION CHANGES AFTER v2.4.0 Beta for v2.4.1 Beta
* = mentioned on website
*The ‘Set mean time between failures’ menu option under the ‘Mode’ tag had been left in by mistake during development but did nothing. This version removes it. Thanks to Mark for reporting it.
*Inactive track elements such as concourses couldn’t be erased in v2.4.0 due to an error in the code which this version corrects. Thanks to Krizar for reporting it.
*Mark sent in an error file generated when a train left at a continuation. The file made it clear that just as the train left it had zero speed (ExitSpeed == 0) and OnelengthAccelDecel was true too for the continuation element. The zero exit speed caused a divide by zero error that crashed the program. This version ensures that the program won’t crash if the same thing happens again, but why it happened remains a mystery.
release wasn't "beta" in About box
-----------------------
VERSION CHANGES AFTER v2.3.1 for v2.4.0 Beta
all mentioned on website
Version 2.4.0 Beta incorporates several features, some of which have required significant code modification, so it is released as a 'Beta' because even after a lot of testing there may well remain some teething problems that will need early attention. It has been compiled using Embarcadero's latest C++ compiler version 10.3, which is based on Windows 10 and generates code that doesn't need any changes to the compatibility mode, at least for normal Windows 10 settings. A very welcome and surprising outcome was that the program also works on earlier Windows versions without the need for any changes to the settings. It has been tested on an ancient notebook computer that runs Windows XP and it worked perfectly straight out of the box - that was really unexpected! It should therefore work on any Windows operating system later than XP.
New features include:
- Random train failures.
- The ability to ad user-defined graphics (note that session files saved with failures or user graphics won't load in earlier versions).
- Rotation by 90 degrees.
- All pastes are now with attributes, although 'Copy' won't copy location names because these can't be duplicated.
- Timetable listings can be sorted into alphabetical order for easier service location.
- More keyboard shortcuts have been added.
- All session files should load regardless of which decimal point character was used when saved (different countries use different characters) - thanks to Micke for helping me with this.
- Platforms can now be any length equal to or greater than 20m, which is the minimum length for any track element. Formerly they were fixed at 100m to prevent unrealistic scaling, but user pressure forced a rethink, especially when Discord member Xander with an X pointed out that ERTMS requires short platfrom lengths in order to display several train locations at each platform.
- A number of error messages have been clarified.
Bug fixes:
- The 'Submins' (subtract minutes) box had disappeared from the timetable editor in version 2.3.1. It's a bit too easy to move buttons and other program features inadvertently when changing the user interface, and I must have moved that button behind one of the panels without realising it so it couldn't be used. No-one reported it so it must not have been missed, but it's back now.
- If there was an exit signal next to a level crossing and an autosignals route was set from that signal the train crashed into the crossing. The reason was that as a train approached the crossing the single route element on the crossing was removed ahead of the train and the crossing started to close, causing the train to crash. Exit signals now can't be placed next to a level crossing. Thanks to Krizar for reporting it.
- If the 'Actions due' panel was clicked before trains were listed, or a train was clicked after it had been removed by the signaller but before the panel updated then the program crashed. This has now been fixed. Thanks to Rokas and LiWinDom for reporting these errors.
- The wrong colours were displayed for underpass lengths and speed limits. These have now been fixed. Thanks to Xeon for reporting it.
- There was a lockup condition when the 'Actions due' panel was open and a train was in a loop. This has been fixed. Thanks again to Xeon for reporting it.
-----------------------
VERSION CHANGES AFTER v2.3.0 for v2.3.1
* = mention on user website
Make all new signal glyphs consistent & have bot lh pixel in glyph itself white (affects diag sigs 73 & 74)
Made all bitmaps 8 bits per pixel using websafe colours. Earlier HIDEOPACTIONPANEL, SHOWOPACTIONPANEL, SIGSONLEFT, SIGSONRIGHT and NEWHOME were 24 bits per pixel. Also DISTANCEKEY was 8 bits but not websafe.
*Added underpasses
*Expanded on a few messages to clarify
Updated help files & developer doc
*Note added about underpasses not loading in earlier versions
*Corrected Albie Vowles' error - crashed for very large repeat values. Now a warning message is given.
-----------------------
VERSION CHANGES AFTER v2.2.0 for v2.3.0
* = mention on user website
*Modified the 'Actions Due' panel to prevent track and train information from being displayed when they lie behind the panel (Thanks to Xeon for spotting this)
*An error in the user manual and help files has been corrected. 'Paste with attributes' was claimed to retain preferred directions as well as track properties. In fact it doesn't retain preferred directions as these are not stored as track properties and keeping them would be a difficult programming task. Re-establishing them for a moved section of track is normally quite quick.
*Signals can now be displayed on the right hand side as well as the left hand side of the track. The setting is made before any railway is loaded so existing railways can be loaded with right hand signals where appropriate. Other than in appearance the signals work as before.
*Timetable clock speeds have been extended to include 1/8 and 1/16 real time. This is to make operation of very large railways easier. Also the time taken for points and level crossing barrier changing and route setting have been kept at their normal values for slower clock speeds, to prevent long waiting times for slower speed operation. At higher clock speeds these durations shorten in proportion.
*The user manual and help files have been updated in line with the above changes and the timetable error messages document has also been updated to correct a few errors and to make some explanations clearer.
*Changes made to text and graphics handling functions to make memory usage more efficient. There had been failures when loading very large session files, especially those containing very many trains. These changes provide more memory space for such files.
Message boxes added for failure to load a session file due to insufficient memory and also for failure to create very large bitmaps.
VERSION CHANGES AFTER v2.1.0 for v2.2.0
* = mention on user website
*Actions due panel added
*use of solid colours should avoid need to set 256 colour compatibility
*Paste-with-attributes feature added
*Level crossing excess barrier down time not saved on exit so start a new session with a clean slate! Change at next release. ok corrected at v2.2.0 - 07/07/19. Added floating point value as a string after ***Interface***
*'End' key can now be used as a zoom toggle
Ctrl+S, A, W & Z disabled for screen moving. Ctrl+S conflicted with save in v2.1.0 but no-one reported this so these keys probably not used, especially since now (since v2.1.0) have ability to move using the right mouse key.
Used TPanel for the floating information label, with an automatic resizing TLabel on it containing the information. TPanel is a TWinControl which can overlie other panels, whereas a TLabel (as before) isn't and TPanels always overlie it. So now there is no need to remove the performance panel when it obscures a floating label as the floating label appears on top of it.
Had underlines in floating timetable for '&' character (used for hotkeys but applied in error here), corrected at this release
Program crash with error report when try to split at a named non-station location & there is a non-track element present (i.e. effectively a nonstation [blue] concourse) - discovered by Xeon & notified 14 July 2018. Ordinary concourses are excluded but these aren't. It's because the active track 'find' function fails as there isn't one for this type of element. Keep the 'find' function but include a test if it fails where if due to one of these elements just 'continue', otherwise throw the error. OK corrected in v2.2.0
VERSION CHANGES AFTER v2.0.0 Beta for v2.1.0
* = mention on user website
*mention a) to l) as a group - good programming practice changes & improved readability (credit due to SS)
a) Change the way version info is retrieved (internal fix - no user-facing changes)
b) Remove beta tag (6 months have passed)
c) Change the version numbering format to use Semantic versioning (see https://semver.org/)
d) Add 'Build' keyword support to version for future Continuous Integration implementation
e) Menu improvements - Help and About submenus put in standard order, menu text changed to title case, added railway website link to help menu, added icons to menus
f) Add key modifiers to menus, and ellipses on dialog opening actions
g) Fix typo in Utilities::CallLogPop() comment
h) Add CONTRIBUTING.md file
i) Remove ambiguity from Clear All dialog by changing 'delete' to 'close'
j) Added icons to Timetable editor buttons, added two-way toggle buttons to Timetable conversion tools, and made Start Time edit box informational-only
k) 'Doxygen' file documentation added with corresponding header file comment changes