Esempio n. 1
0
        public void Spawn()
        {
            int playerVehicleIndex = PlayerData.GetSelectedVehicleIndex(itemManager);

            if (playerVehicleIndex == -1)
            {
                if (itemManager != null && itemManager.vehicles.Count > 0)
                {
                    playerVehicleIndex = 0;
                }
            }

            // Get the player ship
            Vehicle playerVehicle = null;

            if (playerVehicleIndex != -1)
            {
                Transform vehicleTransform = ((GameObject)Instantiate(itemManager.vehicles[playerVehicleIndex].gameObject, spawnPoint.position, spawnPoint.rotation)).transform;
                playerVehicle      = vehicleTransform.GetComponent <Vehicle>();
                playerVehicle.name = "PlayerVehicle";

                List <int> selectedModuleIndexesByMount = PlayerData.GetModuleLoadout(playerVehicleIndex, itemManager);

                bool hasLoadout = false;
                for (int i = 0; i < selectedModuleIndexesByMount.Count; ++i)
                {
                    if (selectedModuleIndexesByMount[i] != -1)
                    {
                        hasLoadout = true;
                    }
                }

                // Update the vehicle loadout
                if (hasLoadout)
                {
                    for (int i = 0; i < selectedModuleIndexesByMount.Count; ++i)
                    {
                        if (selectedModuleIndexesByMount[i] == -1)
                        {
                            continue;
                        }

                        Module module = GameObject.Instantiate(itemManager.modulePrefabs[selectedModuleIndexesByMount[i]], null);

                        playerVehicle.ModuleMounts[i].AddMountableModule(module, itemManager.modulePrefabs[selectedModuleIndexesByMount[i]], true);
                    }
                }
                else
                {
                    for (int i = 0; i < playerVehicle.ModuleMounts.Count; ++i)
                    {
                        playerVehicle.ModuleMounts[i].createDefaultModulesAtStart = true;
                    }
                }

                onLoadoutVehicleSpawned.Invoke(playerVehicle);
            }
        }
Esempio n. 2
0
 public void OpenMenu()
 {
     // Select a ship
     if (displayVehicles.Count > 0)
     {
         int ind = PlayerData.GetSelectedVehicleIndex(itemManager);
         if (ind >= 0 && displayVehicles.Count > ind)
         {
             SelectVehicle(ind);
         }
         else
         {
             SelectVehicle(0);
         }
     }
 }
Esempio n. 3
0
        private void Start()
        {
            // Disable the blackout screen
            blackout.SetActive(false);

            // Disable module selection menu
            moduleSelectionUI.SetActive(false);
            weaponInfoParent.SetActive(false);

            // Enable the ship selection menu
            shipSelectionUI.SetActive(true);

            // Create the display vehicles
            displayVehicles = displayManager.AddDisplayVehicles(itemManager.vehicles, itemManager);

            moduleMenuController.Initialize(itemManager);

            // Update weapon metrics reference values
            GetGunMetricsReferenceValues(itemManager.modulePrefabs, out maxGunSpeed, out maxGunArmorDamage, out maxGunShieldDamage);

            GetMissileMetricsReferenceValues(itemManager.modulePrefabs, out maxMissileSpeed, out maxMissileArmorDamage, out maxMissileShieldDamage,
                                             out maxMissileAgility, out maxMissileLockingRange);

            GetShipMetricsReferenceValues(displayVehicles, out maxVehicleSpeed, out maxVehicleAgility, out maxVehicleArmor, out maxVehicleShields);

            // Select a ship
            if (displayVehicles.Count > 0)
            {
                int ind = PlayerData.GetSelectedVehicleIndex(itemManager);
                if (ind >= 0 && displayVehicles.Count > ind)
                {
                    OnSelectVehicle(ind);
                }
                else
                {
                    OnSelectVehicle(0);
                }
            }
        }
Esempio n. 4
0
        /// <summary>
        /// Spawn the vehicle and enter it.
        /// </summary>
        public void Spawn()
        {
            // Create a reference to the vehicle
            Vehicle vehicle = null;

            // Create the vehicle
            switch (vehicleSpawnType)
            {
            case VehicleSpawnType.Loadout:

                int playerVehicleIndex = PlayerData.GetSelectedVehicleIndex(itemManager);
                if (playerVehicleIndex == -1)
                {
                    if (itemManager != null && itemManager.vehicles.Count > 0)
                    {
                        playerVehicleIndex = 0;
                    }
                }

                if (playerVehicleIndex != -1)
                {
                    // Create the vehicle
                    Transform vehicleTransform = ((GameObject)Instantiate(itemManager.vehicles[playerVehicleIndex].gameObject, vehicleSpawnPoint.position, vehicleSpawnPoint.rotation)).transform;
                    vehicle      = vehicleTransform.GetComponent <Vehicle>();
                    vehicle.name = vehicleName;


                    // Get the vehicle loadout
                    List <int> selectedModuleIndexesByMount = PlayerData.GetModuleLoadout(playerVehicleIndex, itemManager);

                    bool hasLoadout = false;
                    for (int i = 0; i < selectedModuleIndexesByMount.Count; ++i)
                    {
                        if (selectedModuleIndexesByMount[i] != -1)
                        {
                            hasLoadout = true;
                        }
                    }

                    // Create the vehicle loadout
                    if (hasLoadout)
                    {
                        for (int i = 0; i < selectedModuleIndexesByMount.Count; ++i)
                        {
                            if (selectedModuleIndexesByMount[i] == -1)
                            {
                                continue;
                            }

                            Module module = GameObject.Instantiate(itemManager.modulePrefabs[selectedModuleIndexesByMount[i]], null);

                            vehicle.ModuleMounts[i].AddMountableModule(module, itemManager.modulePrefabs[selectedModuleIndexesByMount[i]], true);
                        }
                    }
                    else
                    {
                        for (int i = 0; i < vehicle.ModuleMounts.Count; ++i)
                        {
                            vehicle.ModuleMounts[i].createDefaultModulesAtStart = true;
                        }
                    }
                }

                break;

            case VehicleSpawnType.Prefab:

                vehicle = Instantiate(vehiclePrefab, vehicleSpawnPoint.position, vehicleSpawnPoint.rotation);

                break;
            }

            if (vehicle != null)
            {
                // Set child vehicle that the game agent will exit to when exiting this vehicle.
                VehicleEnterExitManager enterExitManager = vehicle.GetComponent <VehicleEnterExitManager>();
                if (startingChildVehicle != null)
                {
                    if (enterExitManager != null)
                    {
                        if (startingChildVehicle.CanEnter(enterExitManager))
                        {
                            enterExitManager.SetChild(startingChildVehicle);
                        }
                    }
                }

                // Make the starting occupant enter the vehicle
                if (startingOccupant != null)
                {
                    GameAgent occupant;
                    if (spawnOccupantFromPrefab)
                    {
                        occupant = Instantiate(startingOccupant, Vector3.zero, Quaternion.identity);
                    }
                    else
                    {
                        occupant = startingOccupant;
                    }

                    occupant.EnterVehicle(vehicle);
                }

                // Call the event
                onVehicleSpawned.Invoke(vehicle);
            }
        }