示例#1
0
        public void HandleEvent(PowerSupplyEvent evt)
        {
            Event soundEvent = Event.None;

            switch (evt)
            {
            case PowerSupplyEvent.LowerPantograph:
                if (State == PantographState.Up || State == PantographState.Raising)
                {
                    State = PantographState.Lowering;

                    switch (Id)
                    {
                    default:
                    case 1:
                        soundEvent = Event.Pantograph1Down;
                        break;

                    case 2:
                        soundEvent = Event.Pantograph2Down;
                        break;
                    }
                }

                break;

            case PowerSupplyEvent.RaisePantograph:
                if (State == PantographState.Down || State == PantographState.Lowering)
                {
                    State = PantographState.Raising;

                    switch (Id)
                    {
                    default:
                    case 1:
                        soundEvent = Event.Pantograph1Up;
                        break;

                    case 2:
                        soundEvent = Event.Pantograph2Up;
                        break;
                    }
                }
                break;
            }

            if (soundEvent != Event.None)
            {
                foreach (var eventHandler in Wagon.EventHandlers)
                {
                    eventHandler.HandleEvent(soundEvent);
                }
            }
        }
示例#2
0
        public void HandleEvent(PowerSupplyEvent evt)
        {
            Event soundEvent = Event.None;

            switch (evt)
            {
            case PowerSupplyEvent.LowerPantograph:
                if (State == PantographState.Up || State == PantographState.Raising)
                {
                    State = PantographState.Lowering;

                    switch (Id)
                    {
                    default:
                    case 1:
                        soundEvent = Event.Pantograph1Down;
                        Confirm(CabControl.Pantograph1, CabSetting.Off);
                        break;

                    case 2:
                        soundEvent = Event.Pantograph2Down;
                        Confirm(CabControl.Pantograph2, CabSetting.Off);
                        break;

                    case 3:
                        soundEvent = Event.Pantograph3Down;
                        Confirm(CabControl.Pantograph3, CabSetting.Off);
                        break;

                    case 4:
                        soundEvent = Event.Pantograph4Down;
                        Confirm(CabControl.Pantograph4, CabSetting.Off);
                        break;
                    }
                }

                break;

            case PowerSupplyEvent.RaisePantograph:
                if (State == PantographState.Down || State == PantographState.Lowering)
                {
                    State = PantographState.Raising;

                    switch (Id)
                    {
                    default:
                    case 1:
                        soundEvent = Event.Pantograph1Up;
                        Confirm(CabControl.Pantograph4, CabSetting.On);
                        break;

                    case 2:
                        soundEvent = Event.Pantograph2Up;
                        Confirm(CabControl.Pantograph2, CabSetting.On);
                        break;

                    case 3:
                        soundEvent = Event.Pantograph3Up;
                        Confirm(CabControl.Pantograph3, CabSetting.On);
                        break;

                    case 4:
                        soundEvent = Event.Pantograph4Up;
                        Confirm(CabControl.Pantograph4, CabSetting.On);
                        break;
                    }


                    if (!Simulator.TRK.Tr_RouteFile.Electrified)
                    {
                        Simulator.Confirmer.Warning(Simulator.Catalog.GetString("No power line!"));
                    }
                    if (Simulator.Settings.OverrideNonElectrifiedRoutes)
                    {
                        Simulator.Confirmer.Information(Simulator.Catalog.GetString("Power line condition overridden."));
                    }
                }
                break;
            }

            if (soundEvent != Event.None)
            {
                try
                {
                    foreach (var eventHandler in Wagon.EventHandlers)
                    {
                        eventHandler.HandleEvent(soundEvent);
                    }
                }
                catch (Exception error)
                {
                    Trace.TraceInformation("Sound event skipped due to thread safety problem " + error.Message);
                }
            }
        }
示例#3
0
        public void HandleEvent(PowerSupplyEvent evt)
        {
            Event soundEvent = Event.None;

            switch (evt)
            {
            case PowerSupplyEvent.LowerPantograph:
                if (State == PantographState.Up || State == PantographState.Raising)
                {
                    State = PantographState.Lowering;

                    switch (Id)
                    {
                    default:
                    case 1:
                        soundEvent = Event.Pantograph1Down;
                        break;

                    case 2:
                        soundEvent = Event.Pantograph2Down;
                        break;

                    case 3:
                        soundEvent = Event.Pantograph3Down;
                        break;

                    case 4:
                        soundEvent = Event.Pantograph4Down;
                        break;
                    }
                }

                break;

            case PowerSupplyEvent.RaisePantograph:
                if (State == PantographState.Down || State == PantographState.Lowering)
                {
                    State = PantographState.Raising;

                    switch (Id)
                    {
                    default:
                    case 1:
                        soundEvent = Event.Pantograph1Up;
                        break;

                    case 2:
                        soundEvent = Event.Pantograph2Up;
                        break;

                    case 3:
                        soundEvent = Event.Pantograph3Up;
                        break;

                    case 4:
                        soundEvent = Event.Pantograph4Up;
                        break;
                    }
                }
                break;
            }

            if (soundEvent != Event.None)
            {
                try
                {
                    foreach (var eventHandler in Wagon.EventHandlers)
                    {
                        eventHandler.HandleEvent(soundEvent);
                    }
                }
                catch (Exception error)
                {
                    Trace.TraceInformation("Sound event skipped due to thread safety problem " + error.Message);
                }
            }
        }
 /// <summary>
 /// Used when someone want to notify us of an event
 /// </summary>
 public override void SignalEvent(Event evt)
 {
     base.SignalEvent(evt);
 }