/// <summary> /// Change one character in the line to a different character. /// </summary> /// <param name="y">Y position to change.</param> /// <param name="character">Character to change to.</param> /// <param name="colors">Current color set to use.</param> public void ChangeChar(int y, char character, ColorSet colors) { if (y >= this.Start || y <= this.End) { return; } int color = -1; if (y < Start && y >= Middle) { color = colors.c2; } else { color = colors.c3; } CharUpdateEvent?.Invoke(XPos, y, character, color); }
/// <summary> /// Performs one tick on the line. /// </summary> /// <param name="charGrid">Grid of characters.</param> /// <param name="matrixCode">Base Matrix Code object.</param> public void Tick(char[,] charGrid, MatrixCode matrixCode) { Start++; Middle++; End++; if (Start < 0) { return; } if (End >= matrixCode.WINDOW_HEIGHT) { Reset(new Random(), matrixCode); return; } if (Start <= matrixCode.WINDOW_HEIGHT) { if (Start < matrixCode.WINDOW_HEIGHT) { CharUpdateEvent?.Invoke(XPos, Start, charGrid[XPos, Start], matrixCode.CurrentColor.c1); } if (Start > 0) { CharUpdateEvent?.Invoke(XPos, Start - 1, charGrid[XPos, Start - 1], matrixCode.CurrentColor.c2); } } if (Middle < 0) { return; } if (Middle < matrixCode.WINDOW_HEIGHT) { CharUpdateEvent?.Invoke(XPos, Middle, charGrid[XPos, Middle], matrixCode.CurrentColor.c3); } if (End < 0) { return; } CharUpdateEvent?.Invoke(XPos, End, charGrid[XPos, End], -1); }