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]; } }
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); } }
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); }
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; }
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); }
public Train(ClientRailManager manager, RailcarModel engineModel, TrackPosition position) : base(manager, engineModel, position) { Railcar engine = new Railcar(this, engineModel, position); Railcars.Add(engine); }
public Railcar(Train train, RailcarModel model, TrackPosition position) : base(train, model, position) { }