diff --git a/Assets/Scripts/Beatmap.cs b/Assets/Scripts/Beatmap.cs
index ed9b5849..0fa4c5d1 100644
--- a/Assets/Scripts/Beatmap.cs
+++ b/Assets/Scripts/Beatmap.cs
@@ -21,6 +21,8 @@ namespace RhythmHeavenMania
{
public float beat;
public int track;
+
+ // consideration: use arrays instead of hardcoding fixed parameter names
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public float length;
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public float valA;
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public float valB;
@@ -28,6 +30,7 @@ namespace RhythmHeavenMania
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public bool toggle;
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public int type;
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public int type2;
+ [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public int type3;
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public EasingFunction.Ease ease;
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public Color colorA;
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public Color colorB;
diff --git a/Assets/Scripts/Games/DrummingPractice/Drummer.cs b/Assets/Scripts/Games/DrummingPractice/Drummer.cs
index f6a7c38e..01d344c3 100644
--- a/Assets/Scripts/Games/DrummingPractice/Drummer.cs
+++ b/Assets/Scripts/Games/DrummingPractice/Drummer.cs
@@ -23,6 +23,9 @@ namespace RhythmHeavenMania.Games.DrummingPractice
private bool hitting = false;
+ // in the future: use the MiiStudio API to render any mii from a nintendo account / MNMS / Mii Studio code?
+ // figure out how to call the API from unity?
+ // used expressions: "normal", "smile", "sorrow"
[System.Serializable]
public class MiiFace
{
diff --git a/Assets/Scripts/Games/DrummingPractice/DrummingPractice.cs b/Assets/Scripts/Games/DrummingPractice/DrummingPractice.cs
index f6fb732d..265a243a 100644
--- a/Assets/Scripts/Games/DrummingPractice/DrummingPractice.cs
+++ b/Assets/Scripts/Games/DrummingPractice/DrummingPractice.cs
@@ -12,6 +12,7 @@ namespace RhythmHeavenMania.Games.DrummingPractice
{
public enum MiiType
{
+ Random = -1,
GuestA,
GuestB,
GuestC,
@@ -96,27 +97,47 @@ namespace RhythmHeavenMania.Games.DrummingPractice
rightDrummer.SetFace(type);
}
- public void SetMiis(int playerFace, bool all = false)
+ public void SetMiis(int playerFace, int leftFace = -1, int rightFace = -1, bool all = false)
{
- player.mii = playerFace;
+ if (playerFace == -1)
+ {
+ do
+ {
+ player.mii = UnityEngine.Random.Range(0, player.miiFaces.Count);
+ }
+ while (player.mii == leftFace || player.mii == rightFace);
+ }
+ else
+ player.mii = playerFace;
- if (all)
+ if (all && playerFace != -1)
{
leftDrummer.mii = playerFace;
rightDrummer.mii = playerFace;
}
else
{
- do
+ if (leftFace == -1)
{
- leftDrummer.mii = UnityEngine.Random.Range(0, leftDrummer.miiFaces.Count);
+ do
+ {
+ leftDrummer.mii = UnityEngine.Random.Range(0, player.miiFaces.Count);
+ }
+ while (leftDrummer.mii == player.mii);
}
- while (leftDrummer.mii == player.mii);
- do
+ else
+ leftDrummer.mii = leftFace;
+
+ if (rightFace == -1)
{
- rightDrummer.mii = UnityEngine.Random.Range(0, rightDrummer.miiFaces.Count);
+ do
+ {
+ rightDrummer.mii = UnityEngine.Random.Range(0, player.miiFaces.Count);
+ }
+ while (rightDrummer.mii == leftDrummer.mii || rightDrummer.mii == player.mii);
}
- while (rightDrummer.mii == leftDrummer.mii || rightDrummer.mii == player.mii);
+ else
+ rightDrummer.mii = rightFace;
}
SetFaces(0);
diff --git a/Assets/Scripts/Minigames.cs b/Assets/Scripts/Minigames.cs
index 8fd7d84e..047ae6b3 100644
--- a/Assets/Scripts/Minigames.cs
+++ b/Assets/Scripts/Minigames.cs
@@ -413,10 +413,12 @@ namespace RhythmHeavenMania
{
new Param("toggle", true, "Applause", "Whether or not an applause should be played on a successful hit")
}),
- new GameAction("set mii", delegate { var e = eventCaller.currentEntity; DrummingPractice.instance.SetMiis(e.type, e.toggle); }, 0.5f, parameters: new List()
+ new GameAction("set mii", delegate { var e = eventCaller.currentEntity; DrummingPractice.instance.SetMiis(e.type, e.type2, e.type3, e.toggle); }, 0.5f, parameters: new List()
{
- new Param("type", DrummingPractice.MiiType.GuestA, "Mii", "The Mii that the player will control"),
- new Param("toggle", false, "Set All", "Whether all Miis should be set")
+ new Param("type", DrummingPractice.MiiType.Random, "Player Mii", "The Mii that the player will control"),
+ new Param("type2", DrummingPractice.MiiType.Random, "Left Mii", "The Mii that the player will control"),
+ new Param("type3", DrummingPractice.MiiType.Random, "Right Mii", "The Mii that the player will control"),
+ new Param("toggle", false, "Set All to Player", "Sets all Miis to the Player's Mii")
}),
}),