Exemplo n.º 1
0
        /// <summary>
        /// Leave vehicle player is currently sitting in.
        /// </summary>
        public virtual void LeaveVehicle()
        {
            Client.Assert(currentVehicle != null && state != State.OnFoot,
                          "Player is leaving vehicle but he is not in vehicle.");

            // Detach character game object from vehicle.

            if (IsSpawned)
            {
                characterGameObject.transform.SetParent(null);

                Game.Objects.PlayerVehicle vehicleGameObject =
                    currentVehicle.GetObjectSubtype() as Game.Objects.PlayerVehicle;
                Transform seatTransform = vehicleGameObject.SeatTransform;
                Teleport(seatTransform.position, seatTransform.rotation);

                // Notify vehicle that the player left.
                vehicleGameObject.CurrentDrivingState =
                    Game.Objects.PlayerVehicle.DrivingStates.None;
            }

            currentVehicle = null;

            // Set state of the player.
            SwitchState(State.OnFoot);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Enter vehicle.
        /// </summary>
        /// <param name="vehicle">The vehicle to enter.</param>
        /// <param name="passenger">Is player entering vehicle as passenger?</param>
        public virtual void EnterVehicle(
            Game.Components.ObjectSyncComponent vehicle, bool passenger)
        {
            Client.Assert(currentVehicle == null,
                          "Entered vehicle but player is already in vehicle.");
            Client.Assert(
                state == State.OnFoot, "Entered vehicle but player is not on foot.");

            currentVehicle = vehicle;

            Game.Objects.PlayerVehicle vehicleSubtype =
                currentVehicle.GetObjectSubtype() as Game.Objects.PlayerVehicle;
            if (!passenger)
            {
                // Remote player is now driver.
                vehicleSubtype.CurrentDrivingState =
                    Game.Objects.PlayerVehicle.DrivingStates.Driver;
            }
            else
            {
                vehicleSubtype.CurrentDrivingState =
                    Game.Objects.PlayerVehicle.DrivingStates.Passenger;
            }

            SitInCurrentVehicle();

            // Set state of the player.
            SwitchState(passenger ? State.Passenger : State.DrivingVehicle);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Constructor.
        /// </summary>
        public BeerCase(GameObject go)
        {
            beerCaseGO = go;
            osc        = beerCaseGO.GetComponent <Components.ObjectSyncComponent>();

            Client.Assert(beerCaseFSM = Utils.GetPlaymakerScriptByName(go, "Use"), "Beer case FSM not found!");
            HookEvents();
        }
Exemplo n.º 4
0
        /// <summary>
        /// Enter vehicle.
        /// </summary>
        /// <param name="vehicle">The vehicle to enter.</param>
        /// <param name="passenger">Is player entering vehicle as passenger?</param>
        public override void EnterVehicle(Game.Components.ObjectSyncComponent vehicle, bool passenger)
        {
            base.EnterVehicle(vehicle, passenger);

            Messages.VehicleEnterMessage msg = new Messages.VehicleEnterMessage();
            msg.objectID  = vehicle.ObjectID;
            msg.passenger = passenger;
            netManager.BroadcastMessage(msg, Steamworks.EP2PSend.k_EP2PSendReliable);
            vehicle.TakeSyncControl();
        }
Exemplo n.º 5
0
 /// <summary>
 /// Write vehicle switch changes into vehicle switch message.
 /// </summary>
 /// <param name="state">The engine state to write.</param>
 public void WriteVehicleSwitchMessage(Game.Components.ObjectSyncComponent vehicle, PlayerVehicle.SwitchIDs switchID, bool newValue, float newValueFloat)
 {
     Messages.VehicleSwitchMessage msg = new Messages.VehicleSwitchMessage();
     msg.objectID    = vehicle.ObjectID;
     msg.switchID    = (int)switchID;
     msg.switchValue = newValue;
     if (newValueFloat != -1)
     {
         msg.SwitchValueFloat = newValueFloat;
     }
     netManager.BroadcastMessage(msg, Steamworks.EP2PSend.k_EP2PSendReliable);
 }
Exemplo n.º 6
0
 /// <summary>
 /// Write vehicle engine state into state message.
 /// </summary>
 /// <param name="state">The engine state to write.</param>
 public void WriteVehicleStateMessage(Game.Components.ObjectSyncComponent vehicle, PlayerVehicle.EngineStates state, PlayerVehicle.DashboardStates dashstate, float startTime)
 {
     Messages.VehicleStateMessage msg = new Messages.VehicleStateMessage();
     msg.objectID  = vehicle.ObjectID;
     msg.state     = (int)state;
     msg.dashstate = (int)dashstate;
     if (startTime != -1)
     {
         msg.StartTime = startTime;
     }
     netManager.BroadcastMessage(msg, Steamworks.EP2PSend.k_EP2PSendReliable);
 }