Beispiel #1
0
 List <ValidLevels> GenerateValidLevelList()
 {
     if (fileParse == null)
     {
         fileParse = new ValidSeedListFileParse();
     }
     return(fileParse.DeseriealizeLevels());
 }
 void SaveLevelToFile(ValidLevels level)
 {
     if (fp == null)
     {
         fp = new ValidSeedListFileParse();
     }
     fp.SerializeALevel(level);
 }
 void SaveLevelToFile(ValidLevels level)
 {
     if (fp == null) { fp = new ValidSeedListFileParse(); }
     fp.SerializeALevel(level);
 }
    bool RunOneLevelTrial()
    {
        FindNetworkManager();
        ValidLevels thisLevel = new ValidLevels();
        LevelValidator lv = new LevelValidator();

        levelTesterState_s bestWinState = lv.PathfindLevel_BreadthFirst();
        if (bestWinState.numStepsToReach == -1)
        {
            return false;
        }
        else
        {
            thisLevel.numClicks = bestWinState.numStepsToReach; 					// set number of clicks
        }

        thisLevel.level = networkMgr.GetNumPeople();		// set how many people on this level

        if (thisLevel.level == 3)
        {	thisLevel.difficulty = Difficulty.VeryEasy;	}			// set difficulty from number of clicks and level
        else if (thisLevel.level == 4 && thisLevel.numClicks < 3)
        {	thisLevel.difficulty = Difficulty.VeryEasy;	}
        else if (thisLevel.level == 4 && thisLevel.numClicks >= 3)
        {	thisLevel.difficulty = Difficulty.Easy;	}
        else if (thisLevel.level == 5 && thisLevel.numClicks < 4)
        {	thisLevel.difficulty = Difficulty.Easy;	}
        else if (thisLevel.level == 5 && thisLevel.numClicks >= 4)
        {	thisLevel.difficulty = Difficulty.Medium;	}
        else if (thisLevel.level == 6 && thisLevel.numClicks < 3)
        {	return false;	}		// this level is too easy
        else if (thisLevel.level == 6 && thisLevel.numClicks < 5)
        {	thisLevel.difficulty = Difficulty.Medium;	}
        else if (thisLevel.level == 6 && thisLevel.numClicks >= 5)
        {	thisLevel.difficulty = Difficulty.Hard;	}
        else if (thisLevel.level == 7 && thisLevel.numClicks < 3)
        {	return false;	}		// this level is too easy
        else if (thisLevel.level == 7 && thisLevel.numClicks < 5)
        {	thisLevel.difficulty = Difficulty.Medium;	}
        else if (thisLevel.level == 7 && thisLevel.numClicks >= 5)
        {	thisLevel.difficulty = Difficulty.Hard;	}
        else if (thisLevel.level == 8 && thisLevel.numClicks < 3)
        {	return false;	}		// this level is too easy
        else if (thisLevel.level == 8 && thisLevel.numClicks < 5)
        {	thisLevel.difficulty = Difficulty.Medium;	}
        else if (thisLevel.level == 8 && thisLevel.numClicks >= 5)
        {	thisLevel.difficulty = Difficulty.Hard;	}
        else
        {	Debug.LogException(new System.Exception("Level and number of clicks wasn't handled by levelTester class (" + thisLevel.level + ", " + thisLevel.numClicks + ")"));	}

        thisLevel.seed = networkMgr.usedSeed;						// set used seed
        thisLevel.path = bestWinState.pathOfActions;

        if (lv.CheckIfLevelCanBeOneClick(bestWinState))
        {
            thisLevel.oneClick = true;
        }

        // find a person for the cantTouch special level
        bool foundCantClickPerson = false;
        for (int i = 0; i < bestWinState.pathOfActions.trail.Count; i++)
        {
            int personToExclude = bestWinState.pathOfActions.trail[i].Key;
            networkMgr.ReloadStartingState();
            LevelValidator lv2 = new LevelValidator();
            levelTesterState_s bestWinState2 = lv2.PathfindLevel_BreadthFirst(personToExclude);
            if (bestWinState2.numStepsToReach != -1)
            {
                foundCantClickPerson = true;
                thisLevel.cantTouch = personToExclude;
                //print (bestWinState.numStepsToReach + ":" + bestWinState2.numStepsToReach);
                thisLevel.cantTouchPath = bestWinState2.pathOfActions;

            }
        }
        if (!foundCantClickPerson) { thisLevel.cantTouch = -1; }

        if (thisLevel.difficulty != Difficulty.Impossible)
        {
            lv.levelList.Add(thisLevel);

            if (fp == null) { fp = new ValidSeedListFileParse(); }
            fp.SerializeALevel(thisLevel);
        }
        return true;
    }
 List<ValidLevels> GenerateValidLevelList()
 {
     if (fileParse == null) { fileParse = new ValidSeedListFileParse(); }
     return fileParse.DeseriealizeLevels();
 }
    bool RunOneLevelTrial()
    {
        FindNetworkManager();
        ValidLevels    thisLevel = new ValidLevels();
        LevelValidator lv        = new LevelValidator();

        levelTesterState_s bestWinState = lv.PathfindLevel_BreadthFirst();

        if (bestWinState.numStepsToReach == -1)
        {
            return(false);
        }
        else
        {
            thisLevel.numClicks = bestWinState.numStepsToReach;                                                 // set number of clicks
        }

        thisLevel.level = networkMgr.GetNumPeople();                    // set how many people on this level

        if (thisLevel.level == 3)
        {
            thisLevel.difficulty = Difficulty.VeryEasy;
        }                                                                                       // set difficulty from number of clicks and level
        else if (thisLevel.level == 4 && thisLevel.numClicks < 3)
        {
            thisLevel.difficulty = Difficulty.VeryEasy;
        }
        else if (thisLevel.level == 4 && thisLevel.numClicks >= 3)
        {
            thisLevel.difficulty = Difficulty.Easy;
        }
        else if (thisLevel.level == 5 && thisLevel.numClicks < 4)
        {
            thisLevel.difficulty = Difficulty.Easy;
        }
        else if (thisLevel.level == 5 && thisLevel.numClicks >= 4)
        {
            thisLevel.difficulty = Difficulty.Medium;
        }
        else if (thisLevel.level == 6 && thisLevel.numClicks < 3)
        {
            return(false);
        }                                               // this level is too easy
        else if (thisLevel.level == 6 && thisLevel.numClicks < 5)
        {
            thisLevel.difficulty = Difficulty.Medium;
        }
        else if (thisLevel.level == 6 && thisLevel.numClicks >= 5)
        {
            thisLevel.difficulty = Difficulty.Hard;
        }
        else if (thisLevel.level == 7 && thisLevel.numClicks < 3)
        {
            return(false);
        }                                               // this level is too easy
        else if (thisLevel.level == 7 && thisLevel.numClicks < 5)
        {
            thisLevel.difficulty = Difficulty.Medium;
        }
        else if (thisLevel.level == 7 && thisLevel.numClicks >= 5)
        {
            thisLevel.difficulty = Difficulty.Hard;
        }
        else if (thisLevel.level == 8 && thisLevel.numClicks < 3)
        {
            return(false);
        }                                               // this level is too easy
        else if (thisLevel.level == 8 && thisLevel.numClicks < 5)
        {
            thisLevel.difficulty = Difficulty.Medium;
        }
        else if (thisLevel.level == 8 && thisLevel.numClicks >= 5)
        {
            thisLevel.difficulty = Difficulty.Hard;
        }
        else
        {
            Debug.LogException(new System.Exception("Level and number of clicks wasn't handled by levelTester class (" + thisLevel.level + ", " + thisLevel.numClicks + ")"));
        }

        thisLevel.seed = networkMgr.usedSeed;                                                   // set used seed
        thisLevel.path = bestWinState.pathOfActions;

        if (lv.CheckIfLevelCanBeOneClick(bestWinState))
        {
            thisLevel.oneClick = true;
        }

        // find a person for the cantTouch special level
        bool foundCantClickPerson = false;

        for (int i = 0; i < bestWinState.pathOfActions.trail.Count; i++)
        {
            int personToExclude = bestWinState.pathOfActions.trail[i].Key;
            networkMgr.ReloadStartingState();
            LevelValidator     lv2           = new LevelValidator();
            levelTesterState_s bestWinState2 = lv2.PathfindLevel_BreadthFirst(personToExclude);
            if (bestWinState2.numStepsToReach != -1)
            {
                foundCantClickPerson = true;
                thisLevel.cantTouch  = personToExclude;
                //print (bestWinState.numStepsToReach + ":" + bestWinState2.numStepsToReach);
                thisLevel.cantTouchPath = bestWinState2.pathOfActions;
            }
        }
        if (!foundCantClickPerson)
        {
            thisLevel.cantTouch = -1;
        }

        if (thisLevel.difficulty != Difficulty.Impossible)
        {
            lv.levelList.Add(thisLevel);

            if (fp == null)
            {
                fp = new ValidSeedListFileParse();
            }
            fp.SerializeALevel(thisLevel);
        }
        return(true);
    }