private void CreatePiece(ScriptPiece.PieceType nType, ScriptPiece.PieceRotate nRotate = ScriptPiece.PieceRotate.None) { Quaternion nAltRotation = goAlternate.transform.localRotation; goAlternate.transform.localRotation = Quaternion.identity; ScriptPiece nPiece = new ScriptPiece(); GameObject[] nBlocks = new GameObject[4] { (GameObject)Instantiate(prefabBlock), (GameObject)Instantiate(prefabBlock), (GameObject)Instantiate(prefabBlock), (GameObject)Instantiate(prefabBlock) }; float nTopPanelH = panelTop.GetComponent <RectTransform>().rect.height *canvas2d.scaleFactor; Vector3 nScreenPos = new Vector3(Screen.width / 2, Screen.height - nTopPanelH / 2, -cameraAlternate.transform.position.z); Vector3 nWorldPos = cameraAlternate.ScreenToWorldPoint(nScreenPos); Vector3 nPartSize = prefabBlock.transform.localScale; nPiece.SetBlocks(nWorldPos, nPartSize, nPartSize, nBlocks, nType, nRotate); mCurrentPiece = nPiece; goAlternate.transform.localRotation = nAltRotation; }
private void StateWait() //Main game loop { if (!panelTimer.GetComponent <ScriptTimer>().running) { ChangeState(GameState.Crank, true); return; } if (mActions.Count == 0) { return; } var nPair = mActions.Dequeue(); GameFlow nAction = nPair.Key; ScriptClicker nPosition = (ScriptClicker)nPair.Value; switch (nAction) { case GameFlow.Enter: mActivePlayArea = true; ShowDropPosition(nPosition); break; case GameFlow.Select: if (mActivePlayArea) { ShowDropPosition(nPosition); } break; case GameFlow.Drop: if (mHasBomb) { if (ExplodeCurrentPiece()) { ChangeState(GameState.Explode); } } else if (DropCurrentPiece()) { ChangeState(GameState.Drop); } break; case GameFlow.Deselect: HideDropPosition(); mActivePlayArea = false; break; case GameFlow.Rotate: ScriptPiece.PieceType nType = mCurrentPiece.pieceType; ScriptPiece.PieceRotate nRotate = mCurrentPiece.GetNextRotate(); DestroyPiece(); CreatePiece(nType, nRotate); HideDropPosition(); CheckNeedBomb(); break; case GameFlow.Pause: ChangeState(GameState.Pause); textTotalPause.text = mTotal.ToString(); textSinglesPause.text = mSingles.ToString(); textDoublesPause.text = mDoubles.ToString(); textTriplesPause.text = mTriples.ToString(); textQuadsPause.text = mQuads.ToString(); textScorePause.text = mScore.ToString(); panelTimer.GetComponent <ScriptTimer>().paused = true; animePause.enabled = true; animePause.SetBool("enter", true); break; } }