In my game I have a bunch of different levels. In every level you can receive a gem.
You can’t earn more than 3 gems per lvl. But I don’t know how I can implement my system.
I have a globalUpgradesManager that never gets destroyed and receives the gems from the levelManager.
(eacher level has it’s own levelManager)
So when you clear the level the levelManager calls a function in the globalUpgradesManager.
This function adds gems based on the health that you finished with on the level.
The receiving the gems works. But you can get gems every time you play the level.
So instead of getting a max of 3 gems per level you can get as many as you want.
How can I solve this problem?
Thank you in advance
Code:
public void ReceiveOneGem()
{
Scene currentScene = SceneManager.GetActiveScene();
string sceneName = currentScene.name;
if (!levels.Contains(sceneName))
{
levels.Add(sceneName);
//gemsPerLevel.Add(maxGemsPerLevel);
//maxGemsPerLevel = 0;
gems++;
maxGemsPerLevel += 1;
sceneName = maxGemsPerLevel.ToString();
}
else if (levels.Contains(sceneName))
{
if (maxGemsPerLevel <= 3)
{
gems++;
maxGemsPerLevel += 1;
sceneName = maxGemsPerLevel.ToString();
}
}
}
public void ReceiveTwoGem()
{
Scene currentScene = SceneManager.GetActiveScene();
string sceneName = currentScene.name;
if (!levels.Contains(sceneName))
{
levels.Add(sceneName);
//gemsPerLevel.Add(maxGemsPerLevel);
//maxGemsPerLevel = 0;
gems += 2;
maxGemsPerLevel += 2;
sceneName = maxGemsPerLevel.ToString();
}
else if (levels.Contains(sceneName))
{
if (maxGemsPerLevel <= 3)
{
gems += 2;
maxGemsPerLevel += 2;
sceneName = maxGemsPerLevel.ToString();
}
}
}
public void ReceiveThreeGem()
{
Scene currentScene = SceneManager.GetActiveScene();
string sceneName = currentScene.name;
if (!levels.Contains(sceneName))
{
levels.Add(sceneName);
//gemsPerLevel.Add(maxGemsPerLevel);
//maxGemsPerLevel = 0;
gems += 3;
maxGemsPerLevel += 3;
sceneName = maxGemsPerLevel.ToString();
}
else if (levels.Contains(sceneName))
{
if (maxGemsPerLevel <= 3)
{
gems += 3;
maxGemsPerLevel += 3;
sceneName = maxGemsPerLevel.ToString();
}
}
}
Hello, just change your list of names with a dictionary that contains the number of gems you got in that level using the scene name as key. Cant provide know code i will edit this answer in a few minutes.