Drumming Practice: individually set each mii

note: had to add a third integer value to the Beatmap parameters, may wanna consider using some kind of array in the future
This commit is contained in:
minenice55 2022-03-11 13:20:24 -05:00
parent 504713bcf1
commit 5cf2255022
4 changed files with 41 additions and 12 deletions

View file

@ -21,6 +21,8 @@ namespace RhythmHeavenMania
{ {
public float beat; public float beat;
public int track; 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 length;
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public float valA; [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public float valA;
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public float valB; [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 bool toggle;
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public int type; [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public int type;
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public int type2; [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 EasingFunction.Ease ease;
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public Color colorA; [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public Color colorA;
[JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public Color colorB; [JsonProperty(DefaultValueHandling = DefaultValueHandling.Ignore)] public Color colorB;

View file

@ -23,6 +23,9 @@ namespace RhythmHeavenMania.Games.DrummingPractice
private bool hitting = false; 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] [System.Serializable]
public class MiiFace public class MiiFace
{ {

View file

@ -12,6 +12,7 @@ namespace RhythmHeavenMania.Games.DrummingPractice
{ {
public enum MiiType public enum MiiType
{ {
Random = -1,
GuestA, GuestA,
GuestB, GuestB,
GuestC, GuestC,
@ -96,28 +97,48 @@ namespace RhythmHeavenMania.Games.DrummingPractice
rightDrummer.SetFace(type); 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)
{ {
if (playerFace == -1)
{
do
{
player.mii = UnityEngine.Random.Range(0, player.miiFaces.Count);
}
while (player.mii == leftFace || player.mii == rightFace);
}
else
player.mii = playerFace; player.mii = playerFace;
if (all) if (all && playerFace != -1)
{ {
leftDrummer.mii = playerFace; leftDrummer.mii = playerFace;
rightDrummer.mii = playerFace; rightDrummer.mii = playerFace;
} }
else else
{
if (leftFace == -1)
{ {
do do
{ {
leftDrummer.mii = UnityEngine.Random.Range(0, leftDrummer.miiFaces.Count); leftDrummer.mii = UnityEngine.Random.Range(0, player.miiFaces.Count);
} }
while (leftDrummer.mii == player.mii); while (leftDrummer.mii == player.mii);
}
else
leftDrummer.mii = leftFace;
if (rightFace == -1)
{
do do
{ {
rightDrummer.mii = UnityEngine.Random.Range(0, rightDrummer.miiFaces.Count); 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); SetFaces(0);
} }

View file

@ -413,10 +413,12 @@ namespace RhythmHeavenMania
{ {
new Param("toggle", true, "Applause", "Whether or not an applause should be played on a successful hit") 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<Param>() 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<Param>()
{ {
new Param("type", DrummingPractice.MiiType.GuestA, "Mii", "The Mii that the player will control"), new Param("type", DrummingPractice.MiiType.Random, "Player Mii", "The Mii that the player will control"),
new Param("toggle", false, "Set All", "Whether all Miis should be set") 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")
}), }),
}), }),