private void CheckKeys() { var keys = new List <MMPoint>(_room.keys); var i = 0; while (i < keys.Count) { var kx = keys[i].x; var ky = keys[i].y; var keyRect = new Rectangle(kx, ky, 8, 8); var playerRect = new Rectangle(_x, _y, 10, 18); if (keyRect.Intersects(playerRect)) { keys.RemoveAt(i); IncrementScore?.Invoke(this, 100); } else { i++; } } _room.keys = keys.ToArray(); }
// Clears full rows as they occur private void FlashTmrTick(object sender, EventArgs e) { switch (flashCounter) { case 1: flashRow = FindFullRow(); if (flashRow > -1) { flashCounter = 2; HasChanged(gameGrid, true, flashRow); } break; case 2: flashCounter = 3; HasChanged(gameGrid, false, -1); break; case 3: flashCounter = 4; HasChanged(gameGrid, true, flashRow); break; case 4: var newGrid = new List <string[]>(gameGrid); if (listShapes.Count == 0) { return; } foreach (var p in listShapes.Last().CurrentPoints) { if (p.Y > -1) { newGrid[p.Y][p.X] = ""; } } var newRow = new string[20]; newGrid.RemoveAt(flashRow); newGrid.Insert(0, newRow); missATick = true; gameGrid = newGrid.ToArray(); flashCounter = 1; MoveDown(); HasChanged(gameGrid, false, -1); missATick = false; rowCounter += 1; if (rowCounter % 10 == 0) { tmr.Interval -= 40; IncrementScore?.Invoke(((int)((1000 - tmr.Interval) * 0.35))); // IncrementStore != NULL } else if (rowCounter % 5 == 0) { tmr.Interval -= 20; IncrementScore?.Invoke(((int)((1000 - tmr.Interval) * 0.25))); // IncrementStore != NULL } else { IncrementScore?.Invoke(((int)((1000 - tmr.Interval) * 0.05))); // IncrementStore != NULL } break; } }