void FixedUpdate() { if(!animationRunning && rotationQueue.Count > 0) { animationRunning = true; // something changed, win sound can be played again playedWinSound = false; currentItem = rotationQueue.Dequeue(); doRotation(currentItem); } if (!playedWinSound && this.IsSolved() && rotationQueue.Count == 0) { playedWinSound = true; SoundManager.PlayWinSound(); } }
private void enqueueItem(int axisNum, Rotation rotation) { this.backupSelections(); RotationQueueItem item = new RotationQueueItem(); item.axisNum = axisNum; item.rotation = rotation; rotationQueue.Enqueue(item); }
private void enqueueRandomAction() { int rnd = Random.Range(0, 6); int element = Random.Range(0, 100) > 50 ? 0 : 2; RotationQueueItem item = new RotationQueueItem(); item.axisNum = element; switch(rnd) { case 0: item.rotation = Rotation.ROW_RIGHT; break; case 1: item.rotation = Rotation.COLUMN_UP; break; case 2: item.rotation = Rotation.LAYER_LEFT; break; case 3: item.rotation = Rotation.ROW_LEFT; break; case 4: item.rotation = Rotation.COLUMN_DOWN; break; case 5: item.rotation = Rotation.LAYER_RIGHT; break; } rotationQueue.Enqueue(item); }
private void doRotation(RotationQueueItem item) { switch(item.rotation) { case Rotation.ROW_LEFT: this.rotateRowToLeft(item.axisNum); break; case Rotation.ROW_RIGHT: this.rotateRowToRight(item.axisNum); break; case Rotation.COLUMN_UP: this.rotateColumnUp(item.axisNum); break; case Rotation.COLUMN_DOWN: this.rotateColumnDown(item.axisNum); break; case Rotation.LAYER_LEFT: this.rotateLayerToLeft(item.axisNum); break; case Rotation.LAYER_RIGHT: this.rotateLayerToRight(item.axisNum); break; } }