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 { |
479 return 0; |
481 return 0; |
480 } |
482 } |
481 |
483 |
482 /** Build a stretch of railroad tracks. |
484 /** Build a stretch of railroad tracks. |
483 * @param tile start tile of drag |
485 * @param tile start tile of drag |
|
486 * @param flags operation to perform |
484 * @param p1 end tile of drag |
487 * @param p1 end tile of drag |
485 * @param p2 various bitstuffed elements |
488 * @param p2 various bitstuffed elements |
486 * - p2 = (bit 0-3) - railroad type normal/maglev (0 = normal, 1 = mono, 2 = maglev) |
489 * - p2 = (bit 0-3) - railroad type normal/maglev (0 = normal, 1 = mono, 2 = maglev) |
487 * - p2 = (bit 4-6) - track-orientation, valid values: 0-5 (Track enum) |
490 * - p2 = (bit 4-6) - track-orientation, valid values: 0-5 (Track enum) |
488 * - p2 = (bit 7) - 0 = build, 1 = remove tracks |
491 * - p2 = (bit 7) - 0 = build, 1 = remove tracks |
528 return (total_cost == 0) ? CMD_ERROR : total_cost; |
531 return (total_cost == 0) ? CMD_ERROR : total_cost; |
529 } |
532 } |
530 |
533 |
531 /** Build rail on a stretch of track. |
534 /** Build rail on a stretch of track. |
532 * Stub for the unified rail builder/remover |
535 * Stub for the unified rail builder/remover |
|
536 * @param tile start tile of drag |
|
537 * @param flags operation to perform |
|
538 * @param p1 end tile of drag |
|
539 * @param p2 various bitstuffed elements |
|
540 * - p2 = (bit 0-3) - railroad type normal/maglev (0 = normal, 1 = mono, 2 = maglev) |
|
541 * - p2 = (bit 4-6) - track-orientation, valid values: 0-5 (Track enum) |
|
542 * - p2 = (bit 7) - 0 = build, 1 = remove tracks |
533 * @see CmdRailTrackHelper |
543 * @see CmdRailTrackHelper |
534 */ |
544 */ |
535 int32 CmdBuildRailroadTrack(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) |
545 int32 CmdBuildRailroadTrack(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) |
536 { |
546 { |
537 return CmdRailTrackHelper(tile, flags, p1, CLRBIT(p2, 7)); |
547 return CmdRailTrackHelper(tile, flags, p1, CLRBIT(p2, 7)); |
538 } |
548 } |
539 |
549 |
540 /** Build rail on a stretch of track. |
550 /** Build rail on a stretch of track. |
541 * Stub for the unified rail builder/remover |
551 * Stub for the unified rail builder/remover |
|
552 * @param tile start tile of drag |
|
553 * @param flags operation to perform |
|
554 * @param p1 end tile of drag |
|
555 * @param p2 various bitstuffed elements |
|
556 * - p2 = (bit 0-3) - railroad type normal/maglev (0 = normal, 1 = mono, 2 = maglev) |
|
557 * - p2 = (bit 4-6) - track-orientation, valid values: 0-5 (Track enum) |
|
558 * - p2 = (bit 7) - 0 = build, 1 = remove tracks |
542 * @see CmdRailTrackHelper |
559 * @see CmdRailTrackHelper |
543 */ |
560 */ |
544 int32 CmdRemoveRailroadTrack(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) |
561 int32 CmdRemoveRailroadTrack(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) |
545 { |
562 { |
546 return CmdRailTrackHelper(tile, flags, p1, SETBIT(p2, 7)); |
563 return CmdRailTrackHelper(tile, flags, p1, SETBIT(p2, 7)); |
547 } |
564 } |
548 |
565 |
549 /** Build a train depot |
566 /** Build a train depot |
550 * @param tile position of the train depot |
567 * @param tile position of the train depot |
|
568 * @param flags operation to perform |
551 * @param p1 rail type |
569 * @param p1 rail type |
552 * @param p2 bit 0..1 entrance direction (DiagDirection) |
570 * @param p2 bit 0..1 entrance direction (DiagDirection) |
553 * |
571 * |
554 * @todo When checking for the tile slope, |
572 * @todo When checking for the tile slope, |
555 * distingush between "Flat land required" and "land sloped in wrong direction" |
573 * distingush between "Flat land required" and "land sloped in wrong direction" |
613 |
631 |
614 /** Build signals, alternate between double/single, signal/semaphore, |
632 /** Build signals, alternate between double/single, signal/semaphore, |
615 * pre/exit/combo-signals, and what-else not. If the rail piece does not |
633 * pre/exit/combo-signals, and what-else not. If the rail piece does not |
616 * have any signals, bit 4 (cycle signal-type) is ignored |
634 * have any signals, bit 4 (cycle signal-type) is ignored |
617 * @param tile tile where to build the signals |
635 * @param tile tile where to build the signals |
|
636 * @param flags operation to perform |
618 * @param p1 various bitstuffed elements |
637 * @param p1 various bitstuffed elements |
619 * - p1 = (bit 0-2) - track-orientation, valid values: 0-5 (Track enum) |
638 * - p1 = (bit 0-2) - track-orientation, valid values: 0-5 (Track enum) |
620 * - p1 = (bit 3) - 1 = override signal/semaphore, or pre/exit/combo signal (CTRL-toggle) |
639 * - p1 = (bit 3) - 1 = override signal/semaphore, or pre/exit/combo signal (CTRL-toggle) |
621 * - p1 = (bit 4) - 0 = signals, 1 = semaphores |
640 * - p1 = (bit 4) - 0 = signals, 1 = semaphores |
622 * @param p2 used for CmdBuildManySignals() to copy direction of first signal |
641 * @param p2 used for CmdBuildManySignals() to copy direction of first signal |
707 return cost; |
726 return cost; |
708 } |
727 } |
709 |
728 |
710 /** Build many signals by dragging; AutoSignals |
729 /** Build many signals by dragging; AutoSignals |
711 * @param tile start tile of drag |
730 * @param tile start tile of drag |
|
731 * @param flags operation to perform |
712 * @param p1 end tile of drag |
732 * @param p1 end tile of drag |
713 * @param p2 various bitstuffed elements |
733 * @param p2 various bitstuffed elements |
714 * - p2 = (bit 0- 2) - track-orientation, valid values: 0-5 (Track enum) |
734 * - p2 = (bit 0- 2) - track-orientation, valid values: 0-5 (Track enum) |
715 * - p2 = (bit 3) - 1 = override signal/semaphore, or pre/exit/combo signal (CTRL-toggle) |
735 * - p2 = (bit 3) - 1 = override signal/semaphore, or pre/exit/combo signal (CTRL-toggle) |
716 * - p2 = (bit 4) - 0 = signals, 1 = semaphores |
736 * - p2 = (bit 4) - 0 = signals, 1 = semaphores |
794 return error ? CMD_ERROR : total_cost; |
814 return error ? CMD_ERROR : total_cost; |
795 } |
815 } |
796 |
816 |
797 /** Build signals on a stretch of track. |
817 /** Build signals on a stretch of track. |
798 * Stub for the unified signal builder/remover |
818 * Stub for the unified signal builder/remover |
|
819 * @param tile start tile of drag |
|
820 * @param flags operation to perform |
|
821 * @param p1 end tile of drag |
|
822 * @param p2 various bitstuffed elements |
|
823 * - p2 = (bit 0- 2) - track-orientation, valid values: 0-5 (Track enum) |
|
824 * - p2 = (bit 3) - 1 = override signal/semaphore, or pre/exit/combo signal (CTRL-toggle) |
|
825 * - p2 = (bit 4) - 0 = signals, 1 = semaphores |
|
826 * - p2 = (bit 5) - 0 = build, 1 = remove signals |
|
827 * - p2 = (bit 24-31) - user defined signals_density |
799 * @see CmdSignalTrackHelper |
828 * @see CmdSignalTrackHelper |
800 */ |
829 */ |
801 int32 CmdBuildSignalTrack(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) |
830 int32 CmdBuildSignalTrack(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) |
802 { |
831 { |
803 return CmdSignalTrackHelper(tile, flags, p1, p2); |
832 return CmdSignalTrackHelper(tile, flags, p1, p2); |
804 } |
833 } |
805 |
834 |
806 /** Remove signals |
835 /** Remove signals |
807 * @param tile coordinates where signal is being deleted from |
836 * @param tile coordinates where signal is being deleted from |
808 * @param various bitstuffed elements, only track information is used |
837 * @param flags operation to perform |
809 * - p1 = (bit 0- 2) - track-orientation, valid values: 0-5 (Track enum) |
838 * @param p1 various bitstuffed elements, only track information is used |
810 * - p1 = (bit 3) - override signal/semaphore, or pre/exit/combo signal (CTRL-toggle) |
839 * - (bit 0- 2) - track-orientation, valid values: 0-5 (Track enum) |
811 * - p1 = (bit 4) - 0 = signals, 1 = semaphores |
840 * - (bit 3) - override signal/semaphore, or pre/exit/combo signal (CTRL-toggle) |
|
841 * - (bit 4) - 0 = signals, 1 = semaphores |
|
842 * @param p2 unused |
812 */ |
843 */ |
813 int32 CmdRemoveSingleSignal(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) |
844 int32 CmdRemoveSingleSignal(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) |
814 { |
845 { |
815 Track track = (Track)GB(p1, 0, 3); |
846 Track track = (Track)GB(p1, 0, 3); |
816 |
847 |
846 return _eco->GetPrice(CEconomy::REMOVE_SIGNALS); |
877 return _eco->GetPrice(CEconomy::REMOVE_SIGNALS); |
847 } |
878 } |
848 |
879 |
849 /** Remove signals on a stretch of track. |
880 /** Remove signals on a stretch of track. |
850 * Stub for the unified signal builder/remover |
881 * Stub for the unified signal builder/remover |
|
882 * @param tile start tile of drag |
|
883 * @param flags operation to perform |
|
884 * @param p1 end tile of drag |
|
885 * @param p2 various bitstuffed elements |
|
886 * - p2 = (bit 0- 2) - track-orientation, valid values: 0-5 (Track enum) |
|
887 * - p2 = (bit 3) - 1 = override signal/semaphore, or pre/exit/combo signal (CTRL-toggle) |
|
888 * - p2 = (bit 4) - 0 = signals, 1 = semaphores |
|
889 * - p2 = (bit 5) - 0 = build, 1 = remove signals |
|
890 * - p2 = (bit 24-31) - user defined signals_density |
851 * @see CmdSignalTrackHelper |
891 * @see CmdSignalTrackHelper |
852 */ |
892 */ |
853 int32 CmdRemoveSignalTrack(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) |
893 int32 CmdRemoveSignalTrack(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) |
854 { |
894 { |
855 return CmdSignalTrackHelper(tile, flags, p1, SETBIT(p2, 5)); // bit 5 is remove bit |
895 return CmdSignalTrackHelper(tile, flags, p1, SETBIT(p2, 5)); // bit 5 is remove bit |
912 extern int32 DoConvertTunnelBridgeRail(TileIndex tile, RailType totype, bool exec); |
952 extern int32 DoConvertTunnelBridgeRail(TileIndex tile, RailType totype, bool exec); |
913 |
953 |
914 /** Convert one rail type to the other. You can convert normal rail to |
954 /** Convert one rail type to the other. You can convert normal rail to |
915 * monorail/maglev easily or vice-versa. |
955 * monorail/maglev easily or vice-versa. |
916 * @param tile end tile of rail conversion drag |
956 * @param tile end tile of rail conversion drag |
|
957 * @param flags operation to perform |
917 * @param p1 start tile of drag |
958 * @param p1 start tile of drag |
918 * @param p2 new railtype to convert to |
959 * @param p2 new railtype to convert to |
919 */ |
960 */ |
920 int32 CmdConvertRail(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) |
961 int32 CmdConvertRail(TileIndex tile, uint32 flags, uint32 p1, uint32 p2) |
921 { |
962 { |