Merge pull request #47 from minenice55/set-mii

Drumming Practice: ability to set each Mii Character separately
This commit is contained in:
Jenny Crowe 2022-03-11 14:31:05 -07:00 committed by GitHub
commit 04f0023d35
4 changed files with 42 additions and 13 deletions

View file

@ -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;

View file

@ -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
{

View file

@ -12,6 +12,7 @@ namespace RhythmHeavenMania.Games.DrummingPractice
{
public enum MiiType
{
Random = -1,
GuestA,
GuestB,
GuestC,
@ -43,7 +44,7 @@ namespace RhythmHeavenMania.Games.DrummingPractice
// TODO: Move this to OnGameSwitch() when functional?
private void Start()
{
SetMiis(UnityEngine.Random.Range(0, player.miiFaces.Count));
SetMiis();
}
private void Update()
@ -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) MiiType.Random, int leftFace = (int) MiiType.Random, int rightFace = (int) MiiType.Random, bool all = false)
{
player.mii = playerFace;
if (playerFace == (int) MiiType.Random)
{
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 == (int) MiiType.Random)
{
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 == (int) MiiType.Random)
{
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);

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 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("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 on the left"),
new Param("type3", DrummingPractice.MiiType.Random, "Right Mii", "The Mii on the right"),
new Param("toggle", false, "Set All to Player", "Sets all Miis to the Player's Mii")
}),
}),