public void GenerateNewColorSequences(Color[] allColors) { int currentSequenceLenght = minColorSequencelenght; for (int i = 0; i < nbColorSequences; i++) { SequenceOfColor sc = new SequenceOfColor(); sc.ColorsSequence = new Color[currentSequenceLenght]; sc.types = new Other.PickableType[currentSequenceLenght]; for (int j = 0; j < currentSequenceLenght; j++) { int nextType = 0; if (_spawnRobotHeads) { nextType = _random.Next(0, 5); } else { nextType = _random.Next(1, 5); } int nextColor = _random.Next(0, allColors.Length); sc.ColorsSequence[j] = allColors[nextColor]; sc.types[j] = (Other.PickableType)nextType; } SequencesOfColor[i] = sc; if (currentSequenceLenght < maxColorSequenceLenght) { currentSequenceLenght += 1; } } }
private void ValidateConsumed(PickableType type, Color color) { SequenceOfColor currentSequence = SequencesOfColor[SucceedSequences]; Color currentSequenceColor = currentSequence.ColorsSequence[currentSequence.SucceedColors]; PickableType currentType = currentSequence.types[currentSequence.SucceedColors]; if (_finishAfterOnce) { WhenFurnaceConsumedAll?.Invoke(); } else { if (Math.Abs(currentSequenceColor.r - (color).r) < 0.01f && Math.Abs(currentSequenceColor.g - (color).g) < 0.01f && Math.Abs(currentSequenceColor.b - (color).b) < 0.01f && currentType == type) { CheckItemOffList?.Invoke(); WhenFurnaceConsumeRight?.Invoke(); if (!_firstSuccessPlayed) { OnFirstSuccessfulItemDropped?.Invoke(); _firstSuccessPlayed = true; } currentSequence.SucceedColors++; if (currentSequence.SucceedColors == currentSequence.ColorsSequence.Length) { SucceedSequences++; if (SucceedSequences == SequencesOfColor.Length) { WhenFurnaceConsumedAll?.Invoke(); } else { WhenFurnaceConsumeAWholeSequenceWithoutFinishing?.Invoke(); } } } else { if (!_firstFailPlayed) { _firstFailPlayed = true; OnFirstWrongItemDropped?.Invoke(); } WhenFurnaceConsumeWrong?.Invoke(); } } }
public Other.PickableType GetNextItemType() { SequenceOfColor currentSequence = GetCurrentSequence(); return(currentSequence.types[currentSequence.SucceedColors]); }
public Color GetNextColor() { SequenceOfColor currentSequence = GetCurrentSequence(); return(currentSequence.ColorsSequence[currentSequence.SucceedColors]); }