228 /* Validate functions for rail building */ |
228 /* Validate functions for rail building */ |
229 static inline bool ValParamTrackOrientation(Track track) {return IsValidTrack(track);} |
229 static inline bool ValParamTrackOrientation(Track track) {return IsValidTrack(track);} |
230 |
230 |
231 /** Build a single piece of rail |
231 /** Build a single piece of rail |
232 * @param tile tile to build on |
232 * @param tile tile to build on |
|
233 * @param flags operation to perform |
233 * @param p1 railtype of being built piece (normal, mono, maglev) |
234 * @param p1 railtype of being built piece (normal, mono, maglev) |
234 * @param p2 rail track to build |
235 * @param p2 rail track to build |
235 */ |
236 */ |
236 int32 CmdBuildSingleRail(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) |
237 int32 CmdBuildSingleRail(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) |
237 { |
238 { |
475 return 0; |
477 return 0; |
476 } |
478 } |
477 |
479 |
478 /** Build a stretch of railroad tracks. |
480 /** Build a stretch of railroad tracks. |
479 * @param tile start tile of drag |
481 * @param tile start tile of drag |
|
482 * @param flags operation to perform |
480 * @param p1 end tile of drag |
483 * @param p1 end tile of drag |
481 * @param p2 various bitstuffed elements |
484 * @param p2 various bitstuffed elements |
482 * - p2 = (bit 0-3) - railroad type normal/maglev (0 = normal, 1 = mono, 2 = maglev) |
485 * - p2 = (bit 0-3) - railroad type normal/maglev (0 = normal, 1 = mono, 2 = maglev) |
483 * - p2 = (bit 4-6) - track-orientation, valid values: 0-5 (Track enum) |
486 * - p2 = (bit 4-6) - track-orientation, valid values: 0-5 (Track enum) |
484 * - p2 = (bit 7) - 0 = build, 1 = remove tracks |
487 * - p2 = (bit 7) - 0 = build, 1 = remove tracks |
524 return (total_cost == 0) ? CMD_ERROR : total_cost; |
527 return (total_cost == 0) ? CMD_ERROR : total_cost; |
525 } |
528 } |
526 |
529 |
527 /** Build rail on a stretch of track. |
530 /** Build rail on a stretch of track. |
528 * Stub for the unified rail builder/remover |
531 * Stub for the unified rail builder/remover |
|
532 * @param tile start tile of drag |
|
533 * @param flags operation to perform |
|
534 * @param p1 end tile of drag |
|
535 * @param p2 various bitstuffed elements |
|
536 * - p2 = (bit 0-3) - railroad type normal/maglev (0 = normal, 1 = mono, 2 = maglev) |
|
537 * - p2 = (bit 4-6) - track-orientation, valid values: 0-5 (Track enum) |
|
538 * - p2 = (bit 7) - 0 = build, 1 = remove tracks |
529 * @see CmdRailTrackHelper |
539 * @see CmdRailTrackHelper |
530 */ |
540 */ |
531 int32 CmdBuildRailroadTrack(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) |
541 int32 CmdBuildRailroadTrack(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) |
532 { |
542 { |
533 return CmdRailTrackHelper(tile, flags, p1, CLRBIT(p2, 7)); |
543 return CmdRailTrackHelper(tile, flags, p1, CLRBIT(p2, 7)); |
534 } |
544 } |
535 |
545 |
536 /** Build rail on a stretch of track. |
546 /** Build rail on a stretch of track. |
537 * Stub for the unified rail builder/remover |
547 * Stub for the unified rail builder/remover |
|
548 * @param tile start tile of drag |
|
549 * @param flags operation to perform |
|
550 * @param p1 end tile of drag |
|
551 * @param p2 various bitstuffed elements |
|
552 * - p2 = (bit 0-3) - railroad type normal/maglev (0 = normal, 1 = mono, 2 = maglev) |
|
553 * - p2 = (bit 4-6) - track-orientation, valid values: 0-5 (Track enum) |
|
554 * - p2 = (bit 7) - 0 = build, 1 = remove tracks |
538 * @see CmdRailTrackHelper |
555 * @see CmdRailTrackHelper |
539 */ |
556 */ |
540 int32 CmdRemoveRailroadTrack(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) |
557 int32 CmdRemoveRailroadTrack(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) |
541 { |
558 { |
542 return CmdRailTrackHelper(tile, flags, p1, SETBIT(p2, 7)); |
559 return CmdRailTrackHelper(tile, flags, p1, SETBIT(p2, 7)); |
543 } |
560 } |
544 |
561 |
545 /** Build a train depot |
562 /** Build a train depot |
546 * @param tile position of the train depot |
563 * @param tile position of the train depot |
|
564 * @param flags operation to perform |
547 * @param p1 rail type |
565 * @param p1 rail type |
548 * @param p2 bit 0..1 entrance direction (DiagDirection) |
566 * @param p2 bit 0..1 entrance direction (DiagDirection) |
549 * |
567 * |
550 * @todo When checking for the tile slope, |
568 * @todo When checking for the tile slope, |
551 * distingush between "Flat land required" and "land sloped in wrong direction" |
569 * distingush between "Flat land required" and "land sloped in wrong direction" |
607 |
625 |
608 /** Build signals, alternate between double/single, signal/semaphore, |
626 /** Build signals, alternate between double/single, signal/semaphore, |
609 * pre/exit/combo-signals, and what-else not. If the rail piece does not |
627 * pre/exit/combo-signals, and what-else not. If the rail piece does not |
610 * have any signals, bit 4 (cycle signal-type) is ignored |
628 * have any signals, bit 4 (cycle signal-type) is ignored |
611 * @param tile tile where to build the signals |
629 * @param tile tile where to build the signals |
|
630 * @param flags operation to perform |
612 * @param p1 various bitstuffed elements |
631 * @param p1 various bitstuffed elements |
613 * - p1 = (bit 0-2) - track-orientation, valid values: 0-5 (Track enum) |
632 * - p1 = (bit 0-2) - track-orientation, valid values: 0-5 (Track enum) |
614 * - p1 = (bit 3) - 1 = override signal/semaphore, or pre/exit/combo signal (CTRL-toggle) |
633 * - p1 = (bit 3) - 1 = override signal/semaphore, or pre/exit/combo signal (CTRL-toggle) |
615 * - p1 = (bit 4) - 0 = signals, 1 = semaphores |
634 * - p1 = (bit 4) - 0 = signals, 1 = semaphores |
616 * @param p2 used for CmdBuildManySignals() to copy direction of first signal |
635 * @param p2 used for CmdBuildManySignals() to copy direction of first signal |
701 return cost; |
720 return cost; |
702 } |
721 } |
703 |
722 |
704 /** Build many signals by dragging; AutoSignals |
723 /** Build many signals by dragging; AutoSignals |
705 * @param tile start tile of drag |
724 * @param tile start tile of drag |
|
725 * @param flags operation to perform |
706 * @param p1 end tile of drag |
726 * @param p1 end tile of drag |
707 * @param p2 various bitstuffed elements |
727 * @param p2 various bitstuffed elements |
708 * - p2 = (bit 0- 2) - track-orientation, valid values: 0-5 (Track enum) |
728 * - p2 = (bit 0- 2) - track-orientation, valid values: 0-5 (Track enum) |
709 * - p2 = (bit 3) - 1 = override signal/semaphore, or pre/exit/combo signal (CTRL-toggle) |
729 * - p2 = (bit 3) - 1 = override signal/semaphore, or pre/exit/combo signal (CTRL-toggle) |
710 * - p2 = (bit 4) - 0 = signals, 1 = semaphores |
730 * - p2 = (bit 4) - 0 = signals, 1 = semaphores |
788 return error ? CMD_ERROR : total_cost; |
808 return error ? CMD_ERROR : total_cost; |
789 } |
809 } |
790 |
810 |
791 /** Build signals on a stretch of track. |
811 /** Build signals on a stretch of track. |
792 * Stub for the unified signal builder/remover |
812 * Stub for the unified signal builder/remover |
|
813 * @param tile start tile of drag |
|
814 * @param flags operation to perform |
|
815 * @param p1 end tile of drag |
|
816 * @param p2 various bitstuffed elements |
|
817 * - p2 = (bit 0- 2) - track-orientation, valid values: 0-5 (Track enum) |
|
818 * - p2 = (bit 3) - 1 = override signal/semaphore, or pre/exit/combo signal (CTRL-toggle) |
|
819 * - p2 = (bit 4) - 0 = signals, 1 = semaphores |
|
820 * - p2 = (bit 5) - 0 = build, 1 = remove signals |
|
821 * - p2 = (bit 24-31) - user defined signals_density |
793 * @see CmdSignalTrackHelper |
822 * @see CmdSignalTrackHelper |
794 */ |
823 */ |
795 int32 CmdBuildSignalTrack(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) |
824 int32 CmdBuildSignalTrack(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) |
796 { |
825 { |
797 return CmdSignalTrackHelper(tile, flags, p1, p2); |
826 return CmdSignalTrackHelper(tile, flags, p1, p2); |
798 } |
827 } |
799 |
828 |
800 /** Remove signals |
829 /** Remove signals |
801 * @param tile coordinates where signal is being deleted from |
830 * @param tile coordinates where signal is being deleted from |
802 * @param various bitstuffed elements, only track information is used |
831 * @param flags operation to perform |
803 * - p1 = (bit 0- 2) - track-orientation, valid values: 0-5 (Track enum) |
832 * @param p1 various bitstuffed elements, only track information is used |
804 * - p1 = (bit 3) - override signal/semaphore, or pre/exit/combo signal (CTRL-toggle) |
833 * - (bit 0- 2) - track-orientation, valid values: 0-5 (Track enum) |
805 * - p1 = (bit 4) - 0 = signals, 1 = semaphores |
834 * - (bit 3) - override signal/semaphore, or pre/exit/combo signal (CTRL-toggle) |
|
835 * - (bit 4) - 0 = signals, 1 = semaphores |
|
836 * @param p2 unused |
806 */ |
837 */ |
807 int32 CmdRemoveSingleSignal(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) |
838 int32 CmdRemoveSingleSignal(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) |
808 { |
839 { |
809 Track track = (Track)GB(p1, 0, 3); |
840 Track track = (Track)GB(p1, 0, 3); |
810 |
841 |
840 return _price.remove_signals; |
871 return _price.remove_signals; |
841 } |
872 } |
842 |
873 |
843 /** Remove signals on a stretch of track. |
874 /** Remove signals on a stretch of track. |
844 * Stub for the unified signal builder/remover |
875 * Stub for the unified signal builder/remover |
|
876 * @param tile start tile of drag |
|
877 * @param flags operation to perform |
|
878 * @param p1 end tile of drag |
|
879 * @param p2 various bitstuffed elements |
|
880 * - p2 = (bit 0- 2) - track-orientation, valid values: 0-5 (Track enum) |
|
881 * - p2 = (bit 3) - 1 = override signal/semaphore, or pre/exit/combo signal (CTRL-toggle) |
|
882 * - p2 = (bit 4) - 0 = signals, 1 = semaphores |
|
883 * - p2 = (bit 5) - 0 = build, 1 = remove signals |
|
884 * - p2 = (bit 24-31) - user defined signals_density |
845 * @see CmdSignalTrackHelper |
885 * @see CmdSignalTrackHelper |
846 */ |
886 */ |
847 int32 CmdRemoveSignalTrack(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) |
887 int32 CmdRemoveSignalTrack(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) |
848 { |
888 { |
849 return CmdSignalTrackHelper(tile, flags, p1, SETBIT(p2, 5)); // bit 5 is remove bit |
889 return CmdSignalTrackHelper(tile, flags, p1, SETBIT(p2, 5)); // bit 5 is remove bit |
906 extern int32 DoConvertTunnelBridgeRail(TileIndex tile, RailType totype, bool exec); |
946 extern int32 DoConvertTunnelBridgeRail(TileIndex tile, RailType totype, bool exec); |
907 |
947 |
908 /** Convert one rail type to the other. You can convert normal rail to |
948 /** Convert one rail type to the other. You can convert normal rail to |
909 * monorail/maglev easily or vice-versa. |
949 * monorail/maglev easily or vice-versa. |
910 * @param tile end tile of rail conversion drag |
950 * @param tile end tile of rail conversion drag |
|
951 * @param flags operation to perform |
911 * @param p1 start tile of drag |
952 * @param p1 start tile of drag |
912 * @param p2 new railtype to convert to |
953 * @param p2 new railtype to convert to |
913 */ |
954 */ |
914 int32 CmdConvertRail(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) |
955 int32 CmdConvertRail(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) |
915 { |
956 { |