Exemple #1
0
	/// <summary>
	/// Gets the random type of the unlocked minigame
	/// NOTE: Should only get called ONCE, it can repeat if called again, leading to error
	/// </summary>
	/// <returns>The random unlocked minigame type.</returns>
	public MinigameTypes GetRandomUnlockedMinigameType(){
		if(!isMinigameRandomCallLocked){
			isMinigameRandomCallLocked = true;	// Lock the function call so its not called again
			int latestAbsolutePartition = GetLatestUnlockedAbsolutePartition();
			List<MinigameTypes> minigameAux = new List<MinigameTypes>();
			foreach(ImmutableDataPartition partitionData in DataLoaderPartitions.GetDataList()){
				if(partitionData.Number <= latestAbsolutePartition && partitionData.MinigameList != null){
					foreach(MinigameTypes minigameType in partitionData.MinigameList){
						minigameAux.Add(minigameType);
					}
				}
			}
			if(minigameAux.Count == 0){
				return MinigameTypes.None;
			}
			else{
				int randomIndex = UnityEngine.Random.Range(0, minigameAux.Count);
				return minigameAux[randomIndex];
			}
		}
		else{
			Debug.LogError("Illegal second call for minigame");
			return MinigameTypes.None;
		}
	}
Exemple #2
0
	private int GetLatestUnlockedAbsolutePartition(){
		ImmutableDataGate latestGate = GatingManager.Instance.GetLatestLockedGate();
		if(latestGate != null){	// All gates unlocked
			return latestGate.AbsolutePartition - 1;	// Get latest gate and subtract 1
		}
		else{
			// All gates unlocked
			List<ImmutableDataPartition> list = DataLoaderPartitions.GetDataList();
			return DataLoaderPartitions.GetDataList().Count - 1;	// Get the gates list count, off by 1
		}
	}