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++;
        }
    }