public void Save(StarLife life, AllSoundFx sound) { string gamePath = Application.persistentDataPath + "/Player.dat"; FileStream fstream = new FileStream(gamePath, FileMode.OpenOrCreate); BinaryFormatter formatter = new BinaryFormatter(); GameStats gStats = new GameStats(life, sound); formatter.Serialize(fstream, gStats); fstream.Close(); }
public GameStats(StarLife life, AllSoundFx sound) { #region For all Gameplay isAdDisabled = life.isAdRemoved; isLimUnlock = life.isLimitlessUnlocked; diamonds = life.diamonds; highScoreLL = life.HighScore; totalLockedLevel = life.totalClassicLocked; isActive = life.isGameActive; isMusicOn = sound.isSoundOn; isGameOverPanelActive = life.isGameOverPanelActive; VideoadCounter = life.adCounter; isRatemeShown = life.isRatingShown; ratemecounter = life.rateCounter; isStartDisabled = life.isStartIntroDisabled; for (int i = 0; i < 60; i++) { AdlimitCounter[i] = life.AdlimitCounter[i]; } #endregion }
void Update() { if (camera == null) { return; } //Center starfield rect on player starfieldRect.position = camera.transform.position - starfieldOffset; //Store player position delta deltaPosition = lastPosition - camera.transform.position; lastPosition = camera.transform.position; //Update 1st layer for (int i = layer1.Count - 1; i >= 0; i--) { layer1[i].transform.position += (deltaPosition * layer1Speed) - deltaPosition; StarLife script = layer1[i].GetComponent <StarLife>(); if (!starfieldRect.Contains(layer1[i].transform.position)) { script.timeOOB += Time.deltaTime; } else { script.timeOOB = 0; } if (script.timeOOB > starTimeout) { layer1[i].SetActive(false); layer1.RemoveAt(i); } } //Update 2nd Layer for (int i = layer2.Count - 1; i >= 0; i--) { layer2[i].transform.position += (deltaPosition * layer2Speed) - deltaPosition; StarLife script = layer2[i].GetComponent <StarLife>(); if (!starfieldRect.Contains(layer2[i].transform.position)) { script.timeOOB += Time.deltaTime; } else { script.timeOOB = 0; } if (script.timeOOB > starTimeout) { layer2[i].SetActive(false); layer2.RemoveAt(i); } } //Update 3rd Layer for (int i = layer3.Count - 1; i >= 0; i--) { layer3[i].transform.position += (deltaPosition * layer3Speed) - deltaPosition; StarLife script = layer3[i].GetComponent <StarLife>(); if (!starfieldRect.Contains(layer3[i].transform.position)) { script.timeOOB += Time.deltaTime; } else { script.timeOOB = 0; } if (script.timeOOB > starTimeout) { layer3[i].SetActive(false); layer3.RemoveAt(i); } } //Check number of stars in 1st layer and add more in direction of player movement while (layer1.Count < numOfStarsLayer1) { GameObject obj; Vector2 dirNormal; obj = starPool.GetPooledObject(); StarLife script = obj.GetComponent <StarLife>(); script.timeOOB = 0; dirNormal = player.GetComponent <Rigidbody2D>().velocity.normalized; if (dirNormal.x > 0) { if (dirNormal.y > 0) { //top right if (Random.value < 0.5f) { obj.transform.position = new Vector2(Random.Range(starfieldRect.xMin, starfieldRect.xMax), starfieldRect.yMax); } else { obj.transform.position = new Vector2(starfieldRect.xMax, Random.Range(starfieldRect.yMin, starfieldRect.yMax)); } } else { //bottom right if (Random.value < 0.5f) { obj.transform.position = new Vector2(Random.Range(starfieldRect.xMin, starfieldRect.xMax), starfieldRect.yMin); } else { obj.transform.position = new Vector2(starfieldRect.xMax, Random.Range(starfieldRect.yMin, starfieldRect.yMax)); } } } else { if (dirNormal.y > 0) { //top left if (Random.value < 0.5f) { obj.transform.position = new Vector2(Random.Range(starfieldRect.xMin, starfieldRect.xMax), starfieldRect.yMax); } else { obj.transform.position = new Vector2(starfieldRect.xMin, Random.Range(starfieldRect.yMin, starfieldRect.yMax)); } } else { //bottom left if (Random.value < 0.5f) { obj.transform.position = new Vector2(Random.Range(starfieldRect.xMin, starfieldRect.xMax), starfieldRect.yMin); } else { obj.transform.position = new Vector2(starfieldRect.xMin, Random.Range(starfieldRect.yMin, starfieldRect.yMax)); } } } obj.SetActive(true); layer1.Add(obj); } //Check number of stars in 2nd layer and add more in direction of player movement if (layer2.Count < numOfStarsLayer2) { GameObject obj; Vector2 dirNormal; obj = starPool.GetPooledObject(); StarLife script = obj.GetComponent <StarLife>(); script.timeOOB = 0; dirNormal = player.GetComponent <Rigidbody2D>().velocity.normalized; if (dirNormal.x > 0) { if (dirNormal.y > 0) { //top right if (Random.value < 0.5f) { obj.transform.position = new Vector2(Random.Range(starfieldRect.xMin, starfieldRect.xMax), starfieldRect.yMax - Random.Range(edgeSpawnMin, edgeSpawnMax)); } else { obj.transform.position = new Vector2(starfieldRect.xMax - Random.Range(edgeSpawnMin, edgeSpawnMax), Random.Range(starfieldRect.yMin, starfieldRect.yMax)); } } else { //bottom right if (Random.value < 0.5f) { obj.transform.position = new Vector2(Random.Range(starfieldRect.xMin, starfieldRect.xMax), starfieldRect.yMin + Random.Range(edgeSpawnMin, edgeSpawnMax)); } else { obj.transform.position = new Vector2(starfieldRect.xMax - Random.Range(edgeSpawnMin, edgeSpawnMax), Random.Range(starfieldRect.yMin, starfieldRect.yMax)); } } } else { if (dirNormal.y > 0) { //top left if (Random.value < 0.5f) { obj.transform.position = new Vector2(Random.Range(starfieldRect.xMin, starfieldRect.xMax), starfieldRect.yMax - Random.Range(edgeSpawnMin, edgeSpawnMax)); } else { obj.transform.position = new Vector2(starfieldRect.xMin + Random.Range(edgeSpawnMin, edgeSpawnMax), Random.Range(starfieldRect.yMin, starfieldRect.yMax)); } } else { //bottom left if (Random.value < 0.5f) { obj.transform.position = new Vector2(Random.Range(starfieldRect.xMin, starfieldRect.xMax), starfieldRect.yMin + Random.Range(edgeSpawnMin, edgeSpawnMax)); } else { obj.transform.position = new Vector2(starfieldRect.xMin + Random.Range(edgeSpawnMin, edgeSpawnMax), Random.Range(starfieldRect.yMin, starfieldRect.yMax)); } } } obj.SetActive(true); layer2.Add(obj); } //Check number of stars in 3rd layer and add more in direction of player movement if (layer3.Count < numOfStarsLayer3) { GameObject obj; Vector2 dirNormal; obj = starPool.GetPooledObject(); StarLife script = obj.GetComponent <StarLife>(); script.timeOOB = 0; dirNormal = player.GetComponent <Rigidbody2D>().velocity.normalized; if (dirNormal.x > 0) { if (dirNormal.y > 0) { //top right if (Random.value < 0.5f) { obj.transform.position = new Vector2(Random.Range(starfieldRect.xMin, starfieldRect.xMax), starfieldRect.yMax - Random.Range(edgeSpawnMin, edgeSpawnMax)); } else { obj.transform.position = new Vector2(starfieldRect.xMax - Random.Range(edgeSpawnMin, edgeSpawnMax), Random.Range(starfieldRect.yMin, starfieldRect.yMax)); } } else { //bottom right if (Random.value < 0.5f) { obj.transform.position = new Vector2(Random.Range(starfieldRect.xMin, starfieldRect.xMax), starfieldRect.yMin + Random.Range(edgeSpawnMin, edgeSpawnMax)); } else { obj.transform.position = new Vector2(starfieldRect.xMax - Random.Range(edgeSpawnMin, edgeSpawnMax), Random.Range(starfieldRect.yMin, starfieldRect.yMax)); } } } else { if (dirNormal.y > 0) { //top left if (Random.value < 0.5f) { obj.transform.position = new Vector2(Random.Range(starfieldRect.xMin, starfieldRect.xMax), starfieldRect.yMax - Random.Range(edgeSpawnMin, edgeSpawnMax)); } else { obj.transform.position = new Vector2(starfieldRect.xMin + Random.Range(edgeSpawnMin, edgeSpawnMax), Random.Range(starfieldRect.yMin, starfieldRect.yMax)); } } else { //bottom left if (Random.value < 0.5f) { obj.transform.position = new Vector2(Random.Range(starfieldRect.xMin, starfieldRect.xMax), starfieldRect.yMin + Random.Range(edgeSpawnMin, edgeSpawnMax)); } else { obj.transform.position = new Vector2(starfieldRect.xMin + Random.Range(edgeSpawnMin, edgeSpawnMax), Random.Range(starfieldRect.yMin, starfieldRect.yMax)); } } } obj.SetActive(true); layer3.Add(obj); } }