public MSTSElectricLocomotiveViewer(Viewer viewer, MSTSElectricLocomotive car)
            : base(viewer, car)
        {
            electricLocomotive = car;
            if (electricLocomotive.Train != null && (electricLocomotive.Train.TrainType == TrainType.Ai ||
                                                     ((electricLocomotive.Train.TrainType == TrainType.Player || electricLocomotive.Train.TrainType == TrainType.AiPlayerDriven || electricLocomotive.Train.TrainType == TrainType.AiPlayerHosting) &&
                                                      (electricLocomotive.Train.MUDirection != MidpointDirection.N && electricLocomotive.LocomotivePowerSupply.MainPowerSupplyOn))))
            // following reactivates the sound triggers related to certain states
            // for pantos the sound trigger related to the raised panto must be reactivated, else SignalEvent() would raise also another panto
            {
                int iPanto = 0;
                foreach (Pantograph panto in electricLocomotive.Pantographs.List)
                {
                    if (panto.State == PantographState.Up)
                    {
                        switch (iPanto)
                        {
                        case 0: electricLocomotive.SignalEvent(TrainEvent.Pantograph1Up); break;

                        case 1: electricLocomotive.SignalEvent(TrainEvent.Pantograph2Up); break;

                        case 2: electricLocomotive.SignalEvent(TrainEvent.Pantograph3Up); break;

                        case 3: electricLocomotive.SignalEvent(TrainEvent.Pantograph4Up); break;

                        default: electricLocomotive.SignalEvent(TrainEvent.Pantograph1Up); break;
                        }
                    }
                    iPanto++;
                }
                electricLocomotive.SignalEvent(TrainEvent.EnginePowerOn);
                electricLocomotive.SignalEvent(TrainEvent.ReverserToForwardBackward);
                electricLocomotive.SignalEvent(TrainEvent.ReverserChange);
            }
        }
示例#2
0
 public MSTSElectricLocomotiveViewer(Viewer viewer, MSTSElectricLocomotive car)
     : base(viewer, car)
 {
     ElectricLocomotive = car;
     if (ElectricLocomotive.Train != null && car.Train.TrainType == Train.TRAINTYPE.AI)
     {
         ElectricLocomotive.SignalEvent(TrainEvent.Pantograph1Up);
         ElectricLocomotive.SignalEvent(TrainEvent.EnginePowerOn);
         ElectricLocomotive.SignalEvent(TrainEvent.ReverserToForwardBackward);
         ElectricLocomotive.SignalEvent(TrainEvent.ReverserChange);
     }
 }
示例#3
0
        public ScriptedElectricPowerSupply(MSTSElectricLocomotive locomotive) :
            base(locomotive)
        {
            Locomotive  = locomotive;
            Simulator   = locomotive.Simulator;
            Pantographs = locomotive.Pantographs;

            State          = PowerSupplyState.PowerOff;
            AuxiliaryState = PowerSupplyState.PowerOff;
            FilterVoltageV = 0;

            CircuitBreaker = new ScriptedCircuitBreaker(Locomotive);
        }
 public MSTSElectricLocomotiveViewer(Viewer viewer, MSTSElectricLocomotive car)
     : base(viewer, car)
 {
     ElectricLocomotive = car;
     if (ElectricLocomotive.Train != null && (car.Train.TrainType == Train.TRAINTYPE.AI ||
                                              ((car.Train.TrainType == Train.TRAINTYPE.PLAYER || car.Train.TrainType == Train.TRAINTYPE.AI_PLAYERDRIVEN || car.Train.TrainType == Train.TRAINTYPE.AI_PLAYERHOSTING) &&
                                               (car.Train.MUDirection != Direction.N && ElectricLocomotive.PowerOn))))
     {
         ElectricLocomotive.SignalEvent(Event.Pantograph1Up);
         ElectricLocomotive.SignalEvent(Event.EnginePowerOn);
         ElectricLocomotive.SignalEvent(Event.ReverserToForwardBackward);
         ElectricLocomotive.SignalEvent(Event.ReverserChange);
     }
 }
示例#5
0
        public MSTSElectricLocomotiveViewer(Viewer viewer, MSTSElectricLocomotive car)
            : base(viewer, car)
        {
            ElectricLocomotive = car;
            if (ElectricLocomotive.Train != null && (car.Train.TrainType == Train.TRAINTYPE.AI ||
                                                     ((car.Train.TrainType == Train.TRAINTYPE.PLAYER || car.Train.TrainType == Train.TRAINTYPE.AI_PLAYERDRIVEN || car.Train.TrainType == Train.TRAINTYPE.AI_PLAYERHOSTING) &&
                                                      (car.Train.MUDirection != Direction.N && ElectricLocomotive.PowerOn))))
            // following reactivates the sound triggers related to certain states
            // for pantos the sound trigger related to the raised panto must be reactivated, else SignalEvent() would raise also another panto
            {
                var   iPanto = 0;
                Event evt;
                foreach (var panto in ElectricLocomotive.Pantographs.List)
                {
                    if (panto.State == ORTS.Scripting.Api.PantographState.Up)
                    {
                        switch (iPanto)
                        {
                        case 0: evt = Event.Pantograph1Up; break;

                        case 1: evt = Event.Pantograph2Up; break;

                        case 2: evt = Event.Pantograph3Up; break;

                        case 3: evt = Event.Pantograph4Up; break;

                        default: evt = Event.Pantograph1Up; break;
                        }
                        ElectricLocomotive.SignalEvent(evt);
                    }
                    iPanto++;
                }
                ElectricLocomotive.SignalEvent(Event.EnginePowerOn);
                ElectricLocomotive.SignalEvent(Event.ReverserToForwardBackward);
                ElectricLocomotive.SignalEvent(Event.ReverserChange);
            }
        }
示例#6
0
 public ScriptedCircuitBreaker(MSTSElectricLocomotive locomotive)
 {
     Simulator  = locomotive.Simulator;
     Locomotive = locomotive;
 }
示例#7
0
 public ScriptedDualModePowerSupply(MSTSElectricLocomotive locomotive) :
     base(locomotive)
 {
     CircuitBreaker      = new ScriptedCircuitBreaker(this);
     TractionCutOffRelay = new ScriptedTractionCutOffRelay(this);
 }
 public MSTSElectricLocomotiveViewer(Viewer viewer, MSTSElectricLocomotive car)
     : base(viewer, car)
 {
     ElectricLocomotive = car;
 }