public void SaveListsForSecondSaveLocation() { if (listOfSmallLightObjects_SecondSaveLocation != null) { return; } setSmallLightObjectList(); setBigLightObjectList(); setSinisterOneObjectList(); setPlattformObjectList(); listOfSmallLightObjects_SecondSaveLocation = getSmallLightObjectList(); listOfBigLightObjects_SecondSaveLocation = getBigLightObjectList(); listOfSinisterObjects_SecondSaveLocation = getSinisterObjectList(); listOfPlattformObjects_SecondSaveLocation = getPlattformObjectList(); GameObject player = GameObject.Find("Player"); PlayerLevelController plcScript = player.GetComponent <PlayerLevelController>(); secondSavedLevelData = new levelData(); secondSavedLevelData.score = plcScript.getCurrentScore(); secondSavedLevelData.timer = plcScript.getCurrentLevelTimer(); secondSavedLevelData.smalLightCounter = plcScript.returnNumberOfCollectedSmallLights(); secondSavedLevelData.bigLightCounter = plcScript.returnNumberOfCollectedBigLights(); }
// Lade die Objekte neu. Liefert TRUE wenn erfolgreich, sonst FALSE public bool restartToSaveLocation(int saveLocation) { // Lade Speicherpunkt 1 oder 2 if (saveLocation < 1 || saveLocation > 2) { return(false); } if (saveLocation == 1) { /* ******************************************************************* * * Lade die Kleinen Lichter neu * zerstoere dafuer zuerst alle vorhandenen kleinen Lichter * * ******************************************************************* */ // Neues Licht Objekt GameObject newLightOrb; // Sichere eine Neue Liste an kleinen Lichtern setSmallLightObjectList(); // Maximale Anzahl feststellen int iMaxNumber = listOfSmallLightObjects.Count; // Alle Elemente zerstören for (int i = 0; i < iMaxNumber; i++) { Destroy(listOfSmallLightObjects[i].orbObject); } // zaehle die zahl an die -zu dem damaligen zeitpunkt existierten- kleinen Lichter aus int numberOfElements = listOfSmallLightObjects_FirstSaveLocation.Count; // iteriere durch die Objekte for (int i = 0; i < numberOfElements; i++) { newLightOrb = (GameObject)Instantiate(Resources.Load("SmallLight")); newLightOrb.transform.position = listOfSmallLightObjects_FirstSaveLocation[i].objectPosition; newLightOrb.transform.parent = SmallLight_Group.transform; } /* ******************************************************************* * * Lade die Großen Lichter neu * zerstoere dafuer zuerst alle vorhandenen großen Lichter * * ******************************************************************* */ // Sichere eine Neue Liste an kleinen Lichtern setBigLightObjectList(); // Maximale Anzahl feststellen iMaxNumber = listOfBigLightObjects.Count; // Alle Elemente zerstören for (int i = 0; i < iMaxNumber; i++) { Destroy(listOfBigLightObjects[i].orbObject); } // zaehle die zahl an die -zu dem damaligen zeitpunkt existierten- großen Lichter aus numberOfElements = listOfBigLightObjects_FirstSaveLocation.Count; // iteriere durch die Objekte for (int i = 0; i < numberOfElements; i++) { newLightOrb = (GameObject)Instantiate(Resources.Load("BigLight")); newLightOrb.transform.position = listOfBigLightObjects_FirstSaveLocation[i].objectPosition; newLightOrb.transform.parent = BigLight_group.transform; } /* ******************************************************************* * * Lade die Sinisters (beide Typen) neu * zerstoere dafuer zuerst alle vorhandenen Sinisters beider Typen * * ******************************************************************* */ GameObject newSinister; // Sichere eine Neue Liste an Sinistern setSinisterOneObjectList(); // Maximale Anzahl feststellen iMaxNumber = listOfSinisterObjects.Count; // Alle Elemente zerstoeren for (int i = 0; i < iMaxNumber; i++) { Destroy(listOfSinisterObjects[i].sinisterObj); } // zaehle die zahl an die -zu dem damaligen zeitpunkt existierten- großen Lichter aus numberOfElements = listOfSinisterObjects_FirstSaveLocation.Count; // iteriere durch die Objekte for (int i = 0; i < numberOfElements; i++) { newSinister = (GameObject)Instantiate(Resources.Load(listOfSinisterObjects_FirstSaveLocation[i].sinisterName)); newSinister.name = listOfSinisterObjects_FirstSaveLocation[i].sinisterName; newSinister.transform.position = listOfSinisterObjects_FirstSaveLocation[i].objectPosition; newSinister.transform.localScale = listOfSinisterObjects_FirstSaveLocation[i].objectScale; if (newSinister.rigidbody2D != null) { newSinister.rigidbody2D.gravityScale = listOfSinisterObjects_FirstSaveLocation[i].gravityScale; } EnemyMovement tempScript = newSinister.GetComponent <EnemyMovement>(); tempScript.enabled = false; tempScript.MovingInX = listOfSinisterObjects_FirstSaveLocation[i].movinginx; tempScript.MovingInNegativeX = listOfSinisterObjects_FirstSaveLocation[i].movinginnegativex; tempScript.MovingInY = listOfSinisterObjects_FirstSaveLocation[i].movinginy; tempScript.MovingInNegativeY = listOfSinisterObjects_FirstSaveLocation[i].movinginnegativey; tempScript.maxMovementInX = listOfSinisterObjects_FirstSaveLocation[i].maxmoveinx; tempScript.maxNegativeMovementInX = listOfSinisterObjects_FirstSaveLocation[i].maxnegativemoveinx; tempScript.maxMovementInY = listOfSinisterObjects_FirstSaveLocation[i].maxmoveiny; tempScript.maxNegativeMovementInY = listOfSinisterObjects_FirstSaveLocation[i].maxnegativemoveiny; tempScript.minPositionForX = listOfSinisterObjects_FirstSaveLocation[i].minPositionForPatrouilInX; tempScript.maxPositionForX = listOfSinisterObjects_FirstSaveLocation[i].maxPositionForPatrouilInX; tempScript.minPositionForY = listOfSinisterObjects_FirstSaveLocation[i].minPositionForPatrouilInY; tempScript.maxPositionForY = listOfSinisterObjects_FirstSaveLocation[i].maxPositionForPatrouilInY; tempScript.isFacingRight = listOfSinisterObjects_FirstSaveLocation[i].face; tempScript.enemyMovePattern = (EnemyMovement.enemyMovementPattern)listOfSinisterObjects_FirstSaveLocation[i].objectEnumValue; tempScript.enabled = true; newSinister.transform.parent = (listOfSinisterObjects_FirstSaveLocation[i].sinisterName.Equals("SinisterOne") ? SinisterOne_Group.transform : SinisterTwo_Group.transform); } /* ******************************************************************* * * Setze die Plattformen zurueck * ! Keine zerstoerung notwendig, da Plattformen unzerstörbar sind ! * * ******************************************************************* */ // Plattformen numberOfElements = listOfPlattformObjects_FirstSaveLocation.Count; // aktuelles GameObjekt GameObject curPlatform; // iteriere durch alle Objekte for (int i = 0; i < numberOfElements; i++) { curPlatform = listOfPlattformObjects_FirstSaveLocation[i].obj; curPlatform.transform.position = listOfPlattformObjects_FirstSaveLocation[i].objPosition; } GameObject player = GameObject.Find("Player"); PlayerLevelController plcScript = player.GetComponent <PlayerLevelController>(); plcScript.setCurrentLevelTimer(firstSavedLevelData.timer); plcScript.setCurrentScore(firstSavedLevelData.score); plcScript.resetLightCountTo(firstSavedLevelData.smalLightCounter, firstSavedLevelData.bigLightCounter); return(true); } if (saveLocation == 2) { /* ******************************************************************* * * Lade die Kleinen Lichter neu * zerstoere dafuer zuerst alle vorhandenen kleinen Lichter * * ******************************************************************* */ // Neues Licht Objekt GameObject newLightOrb; // Sichere eine Neue Liste an kleinen Lichtern setSmallLightObjectList(); // Maximale Anzahl feststellen int iMaxNumber = listOfSmallLightObjects.Count; // Alle Elemente zerstören for (int i = 0; i < iMaxNumber; i++) { Destroy(listOfSmallLightObjects[i].orbObject); } // zaehle die zahl an die -zu dem damaligen zeitpunkt existierten- kleinen Lichter aus int numberOfElements = listOfSmallLightObjects_SecondSaveLocation.Count; // iteriere durch die Objekte for (int i = 0; i < numberOfElements; i++) { newLightOrb = (GameObject)Instantiate(Resources.Load("SmallLight")); newLightOrb.transform.position = listOfSmallLightObjects_SecondSaveLocation[i].objectPosition; newLightOrb.transform.parent = SmallLight_Group.transform; } /* ******************************************************************* * * Lade die Großen Lichter neu * zerstoere dafuer zuerst alle vorhandenen großen Lichter * * ******************************************************************* */ // Sichere eine Neue Liste an kleinen Lichtern setBigLightObjectList(); // Maximale Anzahl feststellen iMaxNumber = listOfBigLightObjects.Count; // Alle Elemente zerstören for (int i = 0; i < iMaxNumber; i++) { Destroy(listOfBigLightObjects[i].orbObject); } // zaehle die zahl an die -zu dem damaligen zeitpunkt existierten- großen Lichter aus numberOfElements = listOfBigLightObjects_SecondSaveLocation.Count; // iteriere durch die Objekte for (int i = 0; i < numberOfElements; i++) { newLightOrb = (GameObject)Instantiate(Resources.Load("BigLight")); newLightOrb.transform.position = listOfBigLightObjects_SecondSaveLocation[i].objectPosition; newLightOrb.transform.parent = BigLight_group.transform; } /* ******************************************************************* * * Lade die Sinisters (beide Typen) neu * zerstoere dafuer zuerst alle vorhandenen Sinisters beider Typen * * ******************************************************************* */ GameObject newSinister; // Sichere eine Neue Liste an Sinistern setSinisterOneObjectList(); // Maximale Anzahl feststellen iMaxNumber = listOfSinisterObjects.Count; // Alle Elemente zerstoeren for (int i = 0; i < iMaxNumber; i++) { Destroy(listOfSinisterObjects[i].sinisterObj); } // zaehle die zahl an die -zu dem damaligen zeitpunkt existierten- großen Lichter aus numberOfElements = listOfSinisterObjects_SecondSaveLocation.Count; // iteriere durch die Objekte for (int i = 0; i < numberOfElements; i++) { //Debug.Log ("Name to Load: '"+listOfSinisterObjects_SecondSaveLocation[i].sinisterName+"'"); newSinister = (GameObject)Instantiate(Resources.Load(listOfSinisterObjects_SecondSaveLocation[i].sinisterName)); newSinister.name = listOfSinisterObjects_SecondSaveLocation[i].sinisterName; newSinister.transform.position = listOfSinisterObjects_SecondSaveLocation[i].objectPosition; newSinister.transform.localScale = listOfSinisterObjects_SecondSaveLocation[i].objectScale; if (newSinister.rigidbody2D != null) { newSinister.rigidbody2D.gravityScale = listOfSinisterObjects_SecondSaveLocation[i].gravityScale; } EnemyMovement tempScript = newSinister.GetComponent <EnemyMovement>(); tempScript.enabled = false; tempScript.MovingInX = listOfSinisterObjects_SecondSaveLocation[i].movinginx; tempScript.MovingInNegativeX = listOfSinisterObjects_SecondSaveLocation[i].movinginnegativex; tempScript.MovingInY = listOfSinisterObjects_SecondSaveLocation[i].movinginy; tempScript.MovingInNegativeY = listOfSinisterObjects_SecondSaveLocation[i].movinginnegativey; tempScript.maxMovementInX = listOfSinisterObjects_SecondSaveLocation[i].maxmoveinx; tempScript.maxNegativeMovementInX = listOfSinisterObjects_SecondSaveLocation[i].maxnegativemoveinx; tempScript.maxMovementInY = listOfSinisterObjects_SecondSaveLocation[i].maxmoveiny; tempScript.maxNegativeMovementInY = listOfSinisterObjects_SecondSaveLocation[i].maxnegativemoveiny; tempScript.minPositionForX = listOfSinisterObjects_SecondSaveLocation[i].minPositionForPatrouilInX; tempScript.maxPositionForX = listOfSinisterObjects_SecondSaveLocation[i].maxPositionForPatrouilInX; tempScript.minPositionForY = listOfSinisterObjects_SecondSaveLocation[i].minPositionForPatrouilInY; tempScript.maxPositionForY = listOfSinisterObjects_SecondSaveLocation[i].maxPositionForPatrouilInY; tempScript.isFacingRight = listOfSinisterObjects_SecondSaveLocation[i].face; tempScript.enemyMovePattern = (EnemyMovement.enemyMovementPattern)listOfSinisterObjects_SecondSaveLocation[i].objectEnumValue; tempScript.enabled = true; newSinister.transform.parent = (listOfSinisterObjects_SecondSaveLocation[i].sinisterName.Equals("SinisterOne") ? SinisterOne_Group.transform : SinisterTwo_Group.transform); } /* ******************************************************************* * * Setze die Plattformen zurueck * ! Keine zerstoerung notwendig, da Plattformen unzerstörbar sind ! * * ******************************************************************* */ // Plattformen numberOfElements = listOfPlattformObjects_SecondSaveLocation.Count; // aktuelles GameObjekt GameObject curPlatform; // iteriere durch alle Objekte for (int i = 0; i < numberOfElements; i++) { curPlatform = listOfPlattformObjects_SecondSaveLocation[i].obj; curPlatform.transform.position = listOfPlattformObjects_SecondSaveLocation[i].objPosition; } GameObject player = GameObject.Find("Player"); PlayerLevelController plcScript = player.GetComponent <PlayerLevelController>(); plcScript.setCurrentLevelTimer(secondSavedLevelData.timer); plcScript.setCurrentScore(secondSavedLevelData.score); plcScript.resetLightCountTo(secondSavedLevelData.smalLightCounter, secondSavedLevelData.bigLightCounter); return(true); } /* Vorangehensweise: * Wenn Objekt existiert, editiere es * Wenn Objekt nicht existiert, erstelle es vom Prefab und setze Werte */ return(false); }