public void LoadLevel(LevelCollageInfo levelInfo) { currentLevelInfo = levelInfo; currentLevelInfo.visited = true; CollageFraction.selectedCollageFraction = null; //Debug.Log("Collage ORG Load level: " + levelIndex.ToString() + " Count: " + levelInfoList[currentLevelId].collageFractionInfoList.Count); if (levelInfo.collageFractionInfoList.Count == 0) { //see this level for the first time for empty list generate pieces and shuffle SetCollagePieces(levelInfo); SequentiallySetPieceToGrid(); ShuffleCollagePieces(); } else { for (int i = 0; i < collageFractionList.Count; ++i) { collageFractionList[i].SetTextureAndPositionFromInfo(levelInfo.collageFractionInfoList[i]); if (currentLevelInfo.childrenLevelCollageIndexes.Contains(i)) { LevelCollageInfo child = currentLevelInfo.childrenLevelInfo[currentLevelInfo.childrenLevelCollageIndexes.IndexOf(i)]; if (!child.visited) { collageFractionList[i].SetImageFromTexture2D(PlayerInfo.questionTexture); } else { Texture2D sketch = child.GetSketch(); collageFractionList[i].SetImageFromTexture2D(sketch); } } } } }
//Set up pictures for collage pieces public void SetCollagePieces(LevelCollageInfo levelInfo) { for (int i = 0; i < collageFractionList.Count; i++) { collageFractionList[i].canEnterNextLevel = false; Texture2D cTex = GetTexture2DForCollage(levelInfo, i); collageFractionList[i].currentTexture2d = cTex; if (currentLevelInfo.childrenLevelCollageIndexes.Contains(i)) { collageFractionList[i].canEnterNextLevel = true; LevelCollageInfo child = currentLevelInfo.childrenLevelInfo[currentLevelInfo.childrenLevelCollageIndexes.IndexOf(i)]; if (!child.visited) { collageFractionList[i].SetImageFromTexture2D(PlayerInfo.questionTexture); } else { Texture2D sketch = child.GetSketch(); collageFractionList[i].SetImageFromTexture2D(sketch); } } else { collageFractionList[i].SetImageFromTexture2D(cTex); } } }
// Update is called once per frame void Update() { if (IsDoubleTap()) { if (CollageFraction.selectedCollageFraction.canEnterNextLevel) { int nextLevelIndex = CollageFraction._Collage.currentLevelInfo.childrenLevelCollageIndexes.IndexOf(CollageFraction.selectedCollageFraction.collageId); //Debug.Log("nextLevelIndex " + nextLevelIndex); LevelCollageInfo nextLevel = CollageFraction._Collage.currentLevelInfo.childrenLevelInfo[nextLevelIndex]; CollageFraction._Collage.LoadNextLevel(nextLevel); } } }
public Texture2D GetSketch() { //Debug.Log("here" + collageFractionInfoList.Count + " " + levelTexture.height + " " + levelTexture.width); Texture2D sketch = new Texture2D(levelTexture.width, levelTexture.height, levelTexture.format, true); foreach (CollageFractionInfo collage in collageFractionInfoList) { int nextIndex = childrenLevelCollageIndexes.IndexOf(collage.collageId); int positionId = collage.positionId; if (positionId != -1) { //Debug.Log("here has some ids"); int xOffset = positionId % gameBoard.gridCountPerLine; int yOffset = positionId / gameBoard.gridCountPerLine; Texture2D tex = collage.currentTexture2d; //Debug.Log("collage texture2d: " + tex.width + " " + tex.height); if (nextIndex != -1) { LevelCollageInfo childLevel = childrenLevelInfo[nextIndex]; if (!childLevel.visited) { tex = CollageImage.ScaleTexture(PlayerInfo.questionTexture, tex.width, tex.height); } else { tex = CollageImage.ScaleTexture(childLevel.GetSketch(), tex.width, tex.height); } } //send picture to sketches for (int i = 0; i < tex.width; i++) { for (int j = 0; j < tex.height; j++) { Color color = tex.GetPixel(i, j); sketch.SetPixel(xOffset * levelCollageSize + i, yOffset * levelCollageSize + j, color); } } } } sketch.Apply(); return(sketch); }
public Texture2D GetTexture2DForCollage(LevelCollageInfo levelInfo, int collageIndex) { Texture2D currentTexture = levelInfo.levelTexture; int collageTempSize = levelInfo.levelCollageSize; Texture2D collageTex = new Texture2D(collageTempSize, collageTempSize, currentTexture.format, true); int xOffset = collageIndex % gameBoard.gridCountPerLine; int yOffset = collageIndex / gameBoard.gridCountPerLine; for (int i = 0; i < collageTempSize; i++) { for (int j = 0; j < collageTempSize; ++j) { Color color = currentTexture.GetPixel(xOffset * collageTempSize + i, yOffset * collageTempSize + j); collageTex.SetPixel(i, j, color); } } collageTex.Apply(); return(collageTex); }
void Update() { //Debug right click if (isRightSelected) { if (Input.GetMouseButtonUp(1)) { if (canEnterNextLevel) { isRightSelected = false; //Debug.Log("Pressed right click enter next level." + _Collage.currentLevelInfo.levelId); //Debug.Log(_Collage.currentLevelInfo.childrenLevelCollageIndexes); //Debug.Log(collageId); int nextLevelIndex = _Collage.currentLevelInfo.childrenLevelCollageIndexes.IndexOf(collageId); //Debug.Log("nextLevelIndex " + nextLevelIndex); LevelCollageInfo nextLevel = _Collage.currentLevelInfo.childrenLevelInfo[nextLevelIndex]; _Collage.LoadNextLevel(nextLevel); } } } //if (IsDoubleTap()) //{ // if (canEnterNextLevel) // { // isRightSelected = false; // //Debug.Log("Pressed right click enter next level." + _Collage.currentLevelInfo.levelId); // //Debug.Log(_Collage.currentLevelInfo.childrenLevelCollageIndexes); // //Debug.Log(collageId); // int nextLevelIndex = _Collage.currentLevelInfo.childrenLevelCollageIndexes.IndexOf(collageId); // //Debug.Log("nextLevelIndex " + nextLevelIndex); // LevelCollageInfo nextLevel = _Collage.currentLevelInfo.childrenLevelInfo[nextLevelIndex]; // _Collage.LoadNextLevel(nextLevel); // } //} }
private void SetLevels() { int levelCount = 0; int collagePerLine = collageOrg.gameBoard.gridCountPerLine; //sent info to collage organizing LevelCollageInfo initLevel = new LevelCollageInfo(); initLevel.levelId = levelCount++; initLevel.levelTexture = targetTexture; initLevel.levelCollageSize = targetTexture.width / collagePerLine; collageOrg.currentLevelId = 0; collageOrg.currentLevelInfo = initLevel; //generate second level List <int> numberList = new List <int>(); int count = collageOrg.collageFractionList.Count; for (int i = 0; i < count; i++) { numberList.Add(i); } List <int> selectedNumberList = GFractalArt.ChooseFrom <int>(numberList, count, collageOrg.gameBoard.first_level_puzzle_num); foreach (int selectedNumber in selectedNumberList) { LevelCollageInfo secondLevel = new LevelCollageInfo(); secondLevel.levelId = levelCount++; secondLevel.levelTexture = collageOrg.GetTexture2DForCollage(initLevel, selectedNumber); secondLevel.levelCollageSize = targetTexture.width / collagePerLine / collagePerLine; //link parent secondLevel.parentLevelInfo = initLevel; initLevel.childrenLevelInfo.Add(secondLevel); initLevel.childrenLevelCollageIndexes.Add(selectedNumber); List <int> selectedNumberList2 = GFractalArt.ChooseFrom <int>(numberList, count, collageOrg.gameBoard.second_level_puzzle_num); foreach (int selectedNumber2 in selectedNumberList2) { LevelCollageInfo thirdLevel = new LevelCollageInfo(); thirdLevel.levelId = levelCount++; thirdLevel.levelTexture = collageOrg.GetTexture2DForCollage(secondLevel, selectedNumber2); thirdLevel.levelCollageSize = targetTexture.width / collagePerLine / collagePerLine / collagePerLine; //link parent thirdLevel.parentLevelInfo = secondLevel; secondLevel.childrenLevelInfo.Add(thirdLevel); secondLevel.childrenLevelCollageIndexes.Add(selectedNumber2); } } //generate third level //LevelCollageInfo thirdLevel = new LevelCollageInfo(); //thirdLevel.levelId = 2; //randomCollageIndex = UnityEngine.Random.Range(0, 16); //thirdLevel.levelTexture = collageOrg.GetTexture2DForCollage(secondLevel, randomCollageIndex); //thirdLevel.levelCollageSize = targetTexture.width / 4 / 4 / 4; ////link parent //thirdLevel.parentLevelInfo = secondLevel; //secondLevel.childrenLevelInfo.Add(thirdLevel); //secondLevel.childrenLevelCollageIndexes.Add(randomCollageIndex); }
public void LoadNextLevel(LevelCollageInfo levelInfo) { SaveLevel(); LoadLevel(levelInfo); }