public void DoUpdate() { if (!isShown) { return; } List <MirrorChange> changes = parent.GetChanges(); for (int i = 0; i < changes.Count; i++) { switch (changes[i].t) { case MirrorChange.changeType.shift: { MirrorChangeShift change = changes[i] as MirrorChangeShift; ShiftRow(change.y, change.shiftDir, true); } break; case MirrorChange.changeType.launch: { MirrorChangeLaunch change = changes[i] as MirrorChangeLaunch; LaunchTiles(change.length, change.topY, change.colNum, true); } break; case MirrorChange.changeType.wipe: { MirrorChangeWipeRow change = changes[i] as MirrorChangeWipeRow; for (int x = 0; x < width; x++) { DestroyBlock(x, change.y); } } break; case MirrorChange.changeType.shield: { MirrorChangeShield change = changes[i] as MirrorChangeShield; if (change.kill) { tiles[GetListPosFromXY(change.x, height - 1)].Kill(); } else { SetShieldGraphic(change.x, change.frame); } } break; default: { MirrorChangeRemoveTile change = changes[i] as MirrorChangeRemoveTile; DestroyBlock(change.x, change.y); } break; } } }