Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
                }
            }
        }