public static bool TryCreateFromSave(TransportSave transportSave, out TrainTransport trainTransport) { trainTransport = null; if (transportSave.type == _trackCalculationType.name && Train.TrainAnimations.ContainsKey(transportSave.itemName) && Train.TrainTypes.ContainsKey(transportSave.itemName)) { trainTransport = new TrainTransport(transportSave); return(true); } return(false); }
public JObject Save() { TransportSave transportSave = new TransportSave(); transportSave.meshid = _meshedVehicleDescription.Object.ObjectID.ID; transportSave.type = _trackCalculationType.name; transportSave.BlockType = TrainType.ConnectedBlock.BlockType; transportSave.position = new SerializableVector3(Position); transportSave.prevPos = new SerializableVector3(_prevPosition); transportSave.trackPos = new SerializableVector3(TrackPosition); transportSave.itemName = _trainId.Name; transportSave.energy = _energy; if (_player != null) { transportSave.player = _player.ID.ToString(); } return(JObject.FromObject(transportSave)); }
public TrainTransport(TransportSave transportSave) { if (transportSave.type == _trackCalculationType.name) { Position = transportSave.position; _prevPosition = transportSave.prevPos; _trainId = transportSave.itemName; TrackPosition = transportSave.trackPos; TrainType = Train.TrainTypes[transportSave.itemName]; _animatedObject = Train.TrainAnimations[transportSave.itemName]; _meshedVehicleDescription = new MeshedVehicleDescription(new ClientMeshedObject(_animatedObject.ObjType, new MeshedObjectID(transportSave.meshid)), TrainType.TrainConfiguration.playerSeatOffset, TrainType.TrainConfiguration.AllowPlayerToEditBlocksWhileRiding); _idealHeightFromTrack = TrainType.TrainConfiguration.IdealHeightFromTrack; _energy = transportSave.energy; Delay = TrainType.TrainConfiguration.MoveTimePerBlockMs; ManaCostPerBlock = TrainType.TrainConfiguration.EnergyCostPerBlock; if (!string.IsNullOrEmpty(transportSave.player)) { _player = Players.GetPlayer(NetworkID.Parse(transportSave.player)); MeshedObjectManager.Attach(_player, _meshedVehicleDescription); } } }