예제 #1
0
 public TargetCubeData(TargetCubeData t)
 {
     this.Id = t.Id;
     this.horizontalPosition = t.horizontalPosition;
     this.vecticalPosition   = t.vecticalPosition;
     this.orientation        = t.orientation;
     this.cubeColor          = t.cubeColor;
 }
예제 #2
0
    private List <TargetCubeData> GenerateDefaultPattern(Tuple <int, int> tuple)
    {
        List <TargetCubeData> targetCubeDatas = new List <TargetCubeData>();

        for (int i = 0; i < tuple.Item2; i++)
        {
            TargetCubeData cube = new TargetCubeData {
                Id = tuple.Item1 + i, cubeColor = CubeColor.Blue, horizontalPosition = HorizontalPosition.Right, vecticalPosition = VerticalPosition.Bot, orientation = Orientation.Top
            };
            if ((tuple.Item1 + i) % 2 == 0)
            {
                cube.orientation = Orientation.Bot;
            }
            targetCubeDatas.Add(cube);
        }
        return(targetCubeDatas);
    }
예제 #3
0
    private List <TargetCubeData> GenerateFromFileAndPatterns(string filePath)
    {
        // From 2D array of bool to Tuple<Index,Size>
        List <List <bool> >      lines  = ExtractBoolArrayFromFile(Application.dataPath + "/" + filePath);
        List <bool>              bools  = Convert2dBoolArrayTo1d(lines);
        List <Tuple <int, int> > tuples = GenerateTupleFromBool(bools);

        // Generate random targetCubeData for each tuple
        List <TargetCubeData> targetCubeDatas = new List <TargetCubeData>();

        foreach (Tuple <int, int> t in tuples)
        {
            //Debug.Log(t);
            List <Pattern> patterns = ((AudioData)target).patternManager.listPatterns.FindAll(p => p.length == t.Item2);
            Pattern        pattern  = null;

            if (patterns.Count > 0)
            {
                pattern = patterns[UnityEngine.Random.Range(0, patterns.Count)];
            }

            if (pattern != null)
            {
                foreach (TargetCubeData t2 in pattern.targetCubeDatas)
                {
                    TargetCubeData targetCube = new TargetCubeData(t2);
                    targetCube.Id = t2.Id + t.Item1;
                    targetCubeDatas.Add(targetCube);
                }
            }
            else
            {
                targetCubeDatas.AddRange(GenerateDefaultPattern(t));
            }
        }

        return(targetCubeDatas);
    }
예제 #4
0
    private List <TargetCubeData> Randomizer()
    {
        UnityEngine.Random.InitState(randomSeed.intValue);

        List <TargetCubeData> targetCubesData = new List <TargetCubeData>();

        CubeColor cubeColor = (CubeColor)RandomEnum(new int[] { (int)CubeColor.Blue, (int)CubeColor.Red });

        for (int i = 0; i < nbFrames.intValue; i++)
        {
            //Setting
            bool isNotEmpty  = RandomBool(isNotEmptyChance.floatValue);
            bool isDouble    = RandomBool(isDoubleChance.floatValue);
            bool isTop       = RandomBool(isTopChance.floatValue);
            bool isExtrem    = RandomBool(isExtremChance.floatValue);
            bool isSameColor = RandomBool(isSameColorChance.floatValue);

            if (isNotEmpty)
            {
                TargetCubeData current = new TargetCubeData();
                current.Id = i;

                if (isExtrem)
                {
                    current.horizontalPosition = (HorizontalPosition)RandomEnum(new int[] { (int)HorizontalPosition.ExtLeft, (int)HorizontalPosition.ExtRight });
                }
                else
                {
                    current.horizontalPosition = (HorizontalPosition)RandomEnum(new int[] { (int)HorizontalPosition.Left, (int)HorizontalPosition.Right });
                }
                if (isTop)
                {
                    current.vecticalPosition = VerticalPosition.Top;
                }
                else
                {
                    current.vecticalPosition = VerticalPosition.Bot;
                }

                current.orientation = (Orientation)RandomEnum(new int[] { 0, 1, 2, 3 });

                current.cubeColor = cubeColor;
                targetCubesData.Add(current);

                if (isDouble)
                {
                    TargetCubeData current2 = new TargetCubeData();
                    current2.Id = i;

                    UnityEngine.Random.InitState(i);

                    if (isExtrem)
                    {
                        current2.horizontalPosition = (HorizontalPosition)RandomEnum(new int[] { (int)HorizontalPosition.ExtLeft, (int)HorizontalPosition.ExtRight });
                    }
                    else
                    {
                        current2.horizontalPosition = (HorizontalPosition)RandomEnum(new int[] { (int)HorizontalPosition.Left, (int)HorizontalPosition.Right });
                    }
                    if (!isTop)
                    {
                        current2.vecticalPosition = VerticalPosition.Top;
                    }
                    else
                    {
                        current2.vecticalPosition = VerticalPosition.Bot;
                    }

                    current2.orientation = (Orientation)RandomEnum(new int[] { 0, 1, 2, 3 });

                    if (cubeColor == CubeColor.Blue)
                    {
                        current2.cubeColor = CubeColor.Red;
                    }
                    else
                    {
                        current2.cubeColor = CubeColor.Blue;
                    }

                    targetCubesData.Add(current2);
                }

                if (!isSameColor)
                {
                    if (cubeColor == CubeColor.Blue)
                    {
                        cubeColor = CubeColor.Red;
                    }
                    else
                    {
                        cubeColor = CubeColor.Blue;
                    }
                }
            }
        }

        return(targetCubesData);
    }