public void ChangePart(string area, string partName) { switch(area) { case "Chassis": if(tempChassis!=null) { // Un-parent Turret tempTurret.transform.parent = null; // Store old transform info oldPosition = tempChassis.transform.position; oldRotation = tempChassis.transform.rotation; // Destroy old chassis object Destroy(tempChassis); } // Load new chassis object // Instantiate new chassis object tempChassis = Instantiate(Resources.Load("Chassis/"+partName), oldPosition, oldRotation) as GameObject; if(partName=="Drone") { tempChassis.transform.rotation = Quaternion.identity; } if(tempTurret!=null) { // Parent Turret to new chassis tempTurret.transform.parent = tempChassis.transform; tempTurret.transform.localPosition = Vector3.zero; } break; case "Turret": if(tempTurret!=null) { if((tempWeapons!=null) && (tempWeapons.Count>0)) { // Detach Weapons foreach(GameObject weapon in tempWeapons) { if(weapon!=null) weapon.transform.parent = null; } } // Store old transform info oldPosition = tempTurret.transform.position; oldRotation = tempTurret.transform.rotation; // Destroy old turret object Destroy(tempTurret); } // Load new turret object // Instantiate new turret object tempTurret = Instantiate(Resources.Load("Turret/"+partName), oldPosition, oldRotation) as GameObject; if((tempWeapons!=null) && (tempWeapons.Count>0)) { // Attach weapons to new Turret foreach(GameObject weapon in tempWeapons) { if(weapon!=null) { weapon.transform.parent = tempTurret.transform; } } } // Get number of hardpoints on new turret numHardPoints = tempTurret.GetComponent<TurretControl>().hardPoints.Count; // Remove weapons beyond number of hardpoints and update positions tempInt = 0; while(tempInt<tempWeapons.Count) { if(tempInt >= numHardPoints) { Destroy(tempWeapons[tempInt]); tempWeapons[tempInt] = null; } else { currentHardPoint = tempTurret.GetComponent<TurretControl>().hardPoints[tempInt]; if(tempWeapons[tempInt]!=null) { tempWeapons[tempInt].transform.localPosition = new Vector3(currentHardPoint.Location.x, currentHardPoint.Location.y, 0f); tempWeapons[tempInt].transform.localRotation = Quaternion.Euler(new Vector3(0f, 0f, currentHardPoint.Angle)); } } tempInt++; } // Update TurretControl delegates tempTurret.GetComponent<TurretControl>().DelegateFireAndReload(); // Sync playerprefs tempInt = 1; while(tempInt <= numHardPoints) { // if(PlayerPrefs.HasKey("Weapon_"+tempInt)) // { if((tempWeapons.Count>=tempInt) && (tempWeapons[tempInt-1]!=null)) { //Debug.Log(tempWeapons[tempInt-1].name); switch(tempWeapons[tempInt-1].name) { case "MachineGun(Clone)": PlayerPrefs.SetInt("Weapon_"+tempInt, 1); break; case "Cannon(Clone)": PlayerPrefs.SetInt("Weapon_"+tempInt, 2); break; case "ShotGun(Clone)": PlayerPrefs.SetInt("Weapon_"+tempInt, 3); break; case "RailGun(Clone)": PlayerPrefs.SetInt("Weapon_"+tempInt, 4); break; case "Laser(Clone)": PlayerPrefs.SetInt("Weapon_"+tempInt, 5); break; case "EMP(Clone)": PlayerPrefs.SetInt("Weapon_"+tempInt, 6); break; case "PotassiumBlaster(Clone)": PlayerPrefs.SetInt("Weapon_"+tempInt, 7); break; } //Debug.Log("Setint Weapon_"+tempInt+" -> "+tempWeapons[tempInt-1].name); } else { PlayerPrefs.SetInt("Weapon_"+tempInt, 0); //Debug.Log("Setint Weapon_"+tempInt+" -> 0"); } tempInt++; // } // else // { // break; // } } stopping = false; while(!stopping) { if(PlayerPrefs.HasKey("Weapon_"+tempInt)) { PlayerPrefs.SetInt("Weapon_"+tempInt, 0); //Debug.Log("Setint Weapon_"+tempInt+" -> 0"); } else { stopping = true; } tempInt++; } if(tempChassis!=null) { // Attach new turret to chassis tempTurret.transform.parent = tempChassis.transform; tempTurret.transform.localPosition = Vector3.zero; } numHardPoints = tempTurret.GetComponent<TurretControl>().hardPoints.Count; break; case "Weapon": tempInt = 0; foreach(GameObject weap in tempWeapons) { if(weap!=null) { tempInt++; } } if(tempInt<numHardPoints) { // Get weapon prefab reference compareWeapon = Resources.Load("Weapon/"+partName) as GameObject; // Instantiate and add new weapon to list of weapons tempInt = 0; foreach(GameObject weap in tempWeapons) { if(weap!=null) { tempInt++; } else { break; } } currentHardPoint = tempTurret.GetComponent<TurretControl>().hardPoints[tempInt]; //Debug.Log("Current Hard point: "+tempInt); tempWeapons.Insert(tempInt, Instantiate(compareWeapon, vehicleLocation, Quaternion.identity) as GameObject); if(tempWeapons.Count>=(tempInt+2)) { tempWeapons.RemoveAt(tempInt+1); } //Debug.Log("Added "+partName); // Sync with PlayerPrefs int ii=1; while(ii <= numHardPoints) { // if(PlayerPrefs.HasKey("Weapon_"+ii)) // { if((tempWeapons.Count>=ii) && (tempWeapons[ii-1]!=null)) { //Debug.Log(tempWeapons[ii-1].name); switch(tempWeapons[ii-1].name) { case "MachineGun(Clone)": PlayerPrefs.SetInt("Weapon_"+ii, 1); break; case "Cannon(Clone)": PlayerPrefs.SetInt("Weapon_"+ii, 2); break; case "ShotGun(Clone)": PlayerPrefs.SetInt("Weapon_"+ii, 3); break; case "RailGun(Clone)": PlayerPrefs.SetInt("Weapon_"+ii, 4); break; case "Laser(Clone)": PlayerPrefs.SetInt("Weapon_"+ii, 5); break; case "EMP(Clone)": PlayerPrefs.SetInt("Weapon_"+ii, 6); break; case "PotassiumBlaster(Clone)": PlayerPrefs.SetInt("Weapon_"+ii, 7); break; } //Debug.Log("Setint Weapon_"+ii+" -> "+tempWeapons[ii-1].name); } else { PlayerPrefs.SetInt("Weapon_"+ii, 0); //Debug.Log("Setint Weapon_"+ii+" -> 0"); } ii++; // } // else // { // break; // } } stopping = false; while(!stopping) { if(PlayerPrefs.HasKey("Weapon_"+ii)) { PlayerPrefs.SetInt("Weapon_"+ii, 0); //Debug.Log("Setint Weapon_"+ii+" -> 0"); } else { stopping = true; } ii++; } // Attach weapon to Turret tempWeapons[tempInt].transform.parent = tempTurret.transform; // Update TurretControl Delegates tempTurret.GetComponent<TurretControl>().DelegateFireAndReload(); // move weapon to hardpoint position tempWeapons[tempInt].transform.localPosition = new Vector3(currentHardPoint.Location.x, currentHardPoint.Location.y, 0f); tempWeapons[tempInt].transform.localRotation = Quaternion.Euler(new Vector3(0f, 0f, currentHardPoint.Angle)); } else { // Maybe play sound for out of hardpoints } break; case "GameType": gameTypeNum = int.Parse(partName); break; } }
void InitializePlayer() { switch(chassisNum) { case 1: chassisName = "Tank"; break; case 2: chassisName = "Jeep"; break; case 3: chassisName = "Drone"; break; } switch(turretNum) { case 1: turretName = "Turret_2"; break; case 2: turretName = "Turret_3"; break; case 3: turretName = "Turret_4"; break; } // Show Chassis object tempChassis = Instantiate(Resources.Load("Chassis/"+chassisName), vehicleLocation, Quaternion.identity) as GameObject; // Show Turret tempTurret = Instantiate(Resources.Load("Turret/"+turretName), vehicleLocation, Quaternion.identity) as GameObject; tempTurret.transform.parent = tempChassis.transform; numHardPoints = tempTurret.GetComponent<TurretControl>().hardPoints.Count; tempInt = 0; // Show Weapons foreach(int weapon in weaponsNum) { switch(weapon) { case 1: weaponName = "MachineGun"; break; case 2: weaponName = "Cannon"; break; case 3: weaponName = "ShotGun"; break; case 4: weaponName = "RailGun"; break; case 5: weaponName = "Laser"; break; case 6: weaponName = "EMP"; break; case 7: weaponName = "PotassiumBlaster"; break; } // foreach(GameObject weap in tempWeapons) // { // if(weap!=null) // { // tempInt++; // } // else // { // break; // } // } //Debug.Log("Current Hardpoint "+tempInt); if(tempInt<numHardPoints) { currentHardPoint = tempTurret.GetComponent<TurretControl>().hardPoints[tempInt]; } if(weapon>0) { tempWeapons.Add(Instantiate(Resources.Load("Weapon/"+weaponName), vehicleLocation, Quaternion.identity) as GameObject); // Attach weapon to Turret tempWeapons[tempWeapons.Count-1].transform.parent = tempTurret.transform; // move weapon to hardpoint position tempWeapons[tempWeapons.Count-1].transform.localPosition = new Vector3(currentHardPoint.Location.x, currentHardPoint.Location.y, 0f); tempWeapons[tempWeapons.Count-1].transform.localRotation = Quaternion.Euler(new Vector3(0f, 0f, currentHardPoint.Angle)); } else { tempWeapons.Add(null); } tempInt++; } }