Beispiel #1
0
        public void HandleTrainSync(TrainSyncRpc rpc)
        {
            for (int i = 0; i < rpc.TrainCount; i++)
            {
                string[]       carData = rpc.TrainCars[i].Split("-");
                RailcarModel[] models  = new RailcarModel[carData.Length];
                for (int j = 0; j < carData.Length; j++)
                {
                    models[j] = Models[int.Parse(carData[j])];
                }

                Train train;
                if (i >= Trains.Count)
                {
                    train = new Train(this, models[i], TrackPosition.FromString(this, rpc.TrainPositions[i]));
                    for (int j = 1; j < models.Length; j++)
                    {
                        train.AddRailcar(models[j]);
                    }
                }
                else
                {
                    train = (Train)Trains[i];
                }

                train.UpdatePosition(TrackPosition.FromString(this, rpc.TrainPositions[i]));
                train.Speed        = rpc.TrainSpeeds[i];
                train.Acceleration = rpc.TrainAccelerations[i];
            }

            for (int i = 0; i < rpc.SwitchInfo.Length; i++)
            {
                Switches[i].SwitchPosition = rpc.SwitchInfo[i];
            }
        }
Beispiel #2
0
        public TrainModel GetVehicleModelFromRailcar(RailcarModel model)
        {
            switch (model.Id)
            {
            case 537:
                return(VehicleModel.Trains.FreightEngine);

            case 569:
                return(VehicleModel.Trains.FlatFreight);

            case 590:
                return(VehicleModel.Trains.BoxFreight);

            case 538:
                return(VehicleModel.Trains.BrownStreakEngine);

            case 570:
                return(VehicleModel.Trains.BrownStreakCarriage);

            case 449:
                return(VehicleModel.Trains.Trolly);

            default:
                return(VehicleModel.Trains.FreightEngine);
            }
        }
Beispiel #3
0
        public override void AddRailcar(RailcarModel carModel)
        {
            Railcar last = (Railcar)Railcars[Railcars.Count - 1];
            Railcar car  = new Railcar(this, carModel, last.FrontPosition - (last.Model.RearOffset + carModel.FrontOffset));

            Railcars.Add(car);
        }
Beispiel #4
0
        public Railcar(SharedTrain train, RailcarModel model, TrackPosition position) : base(train, model, position)
        {
            dummyObject = new WorldObject(321, Vector3.Zero)
            {
                Alpha             = 0,
                CollisionsEnabled = false,
            };
            dummyObject.SetStreamable(false);
            ClientRailManager m = (ClientRailManager)train.RailManager;

            trainVehicle = new Slipe.Client.Vehicles.Train(m.GetVehicleModelFromRailcar(model), Vector3.Zero)
            {
                Derailed = true
            };
            trainVehicle.SetStreamable(false);
            if (!model.IsEngine)
            {
                trainVehicle.OverrideLights = Slipe.Shared.Vehicles.OverrideLightState.ForcedOff;
            }
            trainVehicle.AttachTo(dummyObject, new Vector3(0, 0, model.Height), Vector3.Zero);

            FrontPosition = position;

            random      = new Random();
            OnNodePass += PlaySoundEffect;
        }
Beispiel #5
0
        public Train(ServerRailManager manager, RailcarModel engineModel, TrackPosition position) : base(manager, engineModel, position)
        {
            Speed        = 0f;
            Acceleration = 0.5f;
            MaxSpeed     = 8f;
            Railcar engine = new Railcar(this, engineModel, position);

            Railcars.Add(engine);
        }
Beispiel #6
0
        public Train(ClientRailManager manager, RailcarModel engineModel, TrackPosition position) : base(manager, engineModel, position)
        {
            Railcar engine = new Railcar(this, engineModel, position);

            Railcars.Add(engine);
        }
Beispiel #7
0
 public Railcar(Train train, RailcarModel model, TrackPosition position) : base(train, model, position)
 {
 }