Beispiel #1
0
 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);
                 }
             }
         }
     }
 }
Beispiel #2
0
 //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);
         }
     }
 }
Beispiel #3
0
 // 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);
         }
     }
 }
Beispiel #4
0
    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);
    }
Beispiel #5
0
    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);
    }
Beispiel #6
0
    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);
        //    }
        //}
    }
Beispiel #7
0
    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);
    }
Beispiel #8
0
 public void LoadNextLevel(LevelCollageInfo levelInfo)
 {
     SaveLevel();
     LoadLevel(levelInfo);
 }