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