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); } }
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); } } }
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); } } }
/// <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); } }