public void OnPieceChange(NetworkMessage netMsg) { MyNetworkManager.PieceChangeMessage msg = netMsg.ReadMessage <MyNetworkManager.PieceChangeMessage>(); //Debug.Log ("Ball Type: " + msg.ball); switch (msg.ball) { case GameManager.BallType.Accelerate: GetComponent <MeshRenderer> ().material = accelerate; GetComponent <ParticleSystem>().startColor = accelerate.color; break; case GameManager.BallType.Destroy: GetComponent <MeshRenderer> ().material = destroy; GetComponent <ParticleSystem>().startColor = destroy.color; break; case GameManager.BallType.Freeze: GetComponent <MeshRenderer> ().material = freeze; GetComponent <ParticleSystem>().startColor = freeze.color; break; case GameManager.BallType.Rotate: GetComponent <MeshRenderer> ().material = rotate; GetComponent <ParticleSystem>().startColor = rotate.color; break; } if (velocity == Vector2.zero) { velocity = new Vector2(-speed * Time.fixedDeltaTime, -speed * Time.fixedDeltaTime); } }
void Respawn (){ myMsg += "Respawn\n"; if (!isServer) return; Time.timeScale = frequency; transform.position = startPoint; this.blocks = 4; //-------------------------Check if can spawn a new piece-------------------------------------- Collider2D[] colliders = new Collider2D[10]; int layerID = LayerMask.NameToLayer("Tetroid"); // 0-31 int layerMask = 1 << layerID; int walls; walls = Physics2D.OverlapAreaNonAlloc(new Vector2(startPoint.x,startPoint.y-1),new Vector2(startPoint.x+1,startPoint.y+2),colliders,layerMask); if (walls > 0) { //End of round GameManager.singleton.roundOver = true; string msg2 = "Bloquean el respawn:\n"; for (int a=0; a<walls; a++){ msg2 += "\t"+colliders[a].gameObject.name +"\n"; } Debug.Log ( msg2 ); return; } //------------------------End of check if can spawn a new piece -------------------------------- //-------Sends a msg to the BallMove to change the material of the ball------------- MyNetworkManager.PieceChangeMessage msg = new MyNetworkManager.PieceChangeMessage(); msg.ball = GameManager.RandomBall (); NetworkServer.SendToAll(MyNetworkManager.MyMsgType.PieceChange, msg); //-------End of the message send to BallMove --------------------------------------- GameManager.PieceType piece = GameManager.RandomPiece (); GameObject[] blocks = new GameObject[4]; for (int i=0; i<4; i++) { blocks[i] = Instantiate(blockPrefab); blocks[i].transform.parent = transform; blocks[i].name = ""+(char)('a'+i); blocks[i].tag = "Block"; } //Repositioning each block[i] switch(piece){ case GameManager.PieceType.L: blocks[0].transform.localPosition = new Vector2 ( 0 , 1 ); blocks[1].transform.localPosition = new Vector2 ( 0 , 0 ); blocks[2].transform.localPosition = new Vector2 ( 0 , -1 ); blocks[3].transform.localPosition = new Vector2 ( 1 , -1 ); break; case GameManager.PieceType.J: blocks[0].transform.localPosition = new Vector2 ( 1 , 1 ); blocks[1].transform.localPosition = new Vector2 ( 1 , 0 ); blocks[2].transform.localPosition = new Vector2 ( 1 , -1 ); blocks[3].transform.localPosition = new Vector2 ( 0 , -1 ); break; case GameManager.PieceType.T: blocks[0].transform.localPosition = new Vector2 ( 0 , 1 ); blocks[1].transform.localPosition = new Vector2 ( 0 , 0 ); blocks[2].transform.localPosition = new Vector2 ( 0 , -1 ); blocks[3].transform.localPosition = new Vector2 ( 1 , 0 ); break; case GameManager.PieceType.Z: blocks[0].transform.localPosition = new Vector2 ( 1 , 1 ); blocks[1].transform.localPosition = new Vector2 ( 0 , 0 ); blocks[2].transform.localPosition = new Vector2 ( 0 , -1 ); blocks[3].transform.localPosition = new Vector2 ( 1 , 0 ); break; case GameManager.PieceType.S: blocks[0].transform.localPosition = new Vector2 ( 0 , 1 ); blocks[1].transform.localPosition = new Vector2 ( 0 , 0 ); blocks[2].transform.localPosition = new Vector2 ( 1 , -1 ); blocks[3].transform.localPosition = new Vector2 ( 1 , 0 ); break; case GameManager.PieceType.O: blocks[0].transform.localPosition = new Vector2 ( 0 , 1 ); blocks[1].transform.localPosition = new Vector2 ( 0 , 0 ); blocks[2].transform.localPosition = new Vector2 ( 1 , 0 ); blocks[3].transform.localPosition = new Vector2 ( 1 , 1 ); break; case GameManager.PieceType.I: blocks[0].transform.localPosition = new Vector2 ( 0 , 1 ); blocks[1].transform.localPosition = new Vector2 ( 0 , 0 ); blocks[2].transform.localPosition = new Vector2 ( 0 , -1 ); blocks[3].transform.localPosition = new Vector2 ( 0 , 2 ); break; } //if (GameManager.singleton.online) { // NetworkServer.SpawnWithClientAuthority (blocks [0], connectionToClient); // NetworkServer.SpawnWithClientAuthority (blocks [1], connectionToClient); // NetworkServer.SpawnWithClientAuthority (blocks [2], connectionToClient); // NetworkServer.SpawnWithClientAuthority (blocks [3], connectionToClient); //} else { NetworkServer.Spawn(blocks[0]); NetworkServer.Spawn(blocks[1]); NetworkServer.Spawn(blocks[2]); NetworkServer.Spawn(blocks[3]); //} }
void Respawn() { myMsg += "Respawn\n"; if (!isServer) { return; } Time.timeScale = frequency; transform.position = startPoint; this.blocks = 4; //-------------------------Check if can spawn a new piece-------------------------------------- Collider2D[] colliders = new Collider2D[10]; int layerID = LayerMask.NameToLayer("Tetroid"); // 0-31 int layerMask = 1 << layerID; int walls; walls = Physics2D.OverlapAreaNonAlloc(new Vector2(startPoint.x, startPoint.y - 1), new Vector2(startPoint.x + 1, startPoint.y + 2), colliders, layerMask); if (walls > 0) //End of round { GameManager.singleton.roundOver = true; string msg2 = "Bloquean el respawn:\n"; for (int a = 0; a < walls; a++) { msg2 += "\t" + colliders[a].gameObject.name + "\n"; } Debug.Log(msg2); return; } //------------------------End of check if can spawn a new piece -------------------------------- //-------Sends a msg to the BallMove to change the material of the ball------------- MyNetworkManager.PieceChangeMessage msg = new MyNetworkManager.PieceChangeMessage(); msg.ball = GameManager.RandomBall(); NetworkServer.SendToAll(MyNetworkManager.MyMsgType.PieceChange, msg); //-------End of the message send to BallMove --------------------------------------- GameManager.PieceType piece = GameManager.RandomPiece(); GameObject[] blocks = new GameObject[4]; for (int i = 0; i < 4; i++) { blocks[i] = Instantiate(blockPrefab); blocks[i].transform.parent = transform; blocks[i].name = "" + (char)('a' + i); blocks[i].tag = "Block"; } //Repositioning each block[i] switch (piece) { case GameManager.PieceType.L: blocks[0].transform.localPosition = new Vector2(0, 1); blocks[1].transform.localPosition = new Vector2(0, 0); blocks[2].transform.localPosition = new Vector2(0, -1); blocks[3].transform.localPosition = new Vector2(1, -1); break; case GameManager.PieceType.J: blocks[0].transform.localPosition = new Vector2(1, 1); blocks[1].transform.localPosition = new Vector2(1, 0); blocks[2].transform.localPosition = new Vector2(1, -1); blocks[3].transform.localPosition = new Vector2(0, -1); break; case GameManager.PieceType.T: blocks[0].transform.localPosition = new Vector2(0, 1); blocks[1].transform.localPosition = new Vector2(0, 0); blocks[2].transform.localPosition = new Vector2(0, -1); blocks[3].transform.localPosition = new Vector2(1, 0); break; case GameManager.PieceType.Z: blocks[0].transform.localPosition = new Vector2(1, 1); blocks[1].transform.localPosition = new Vector2(0, 0); blocks[2].transform.localPosition = new Vector2(0, -1); blocks[3].transform.localPosition = new Vector2(1, 0); break; case GameManager.PieceType.S: blocks[0].transform.localPosition = new Vector2(0, 1); blocks[1].transform.localPosition = new Vector2(0, 0); blocks[2].transform.localPosition = new Vector2(1, -1); blocks[3].transform.localPosition = new Vector2(1, 0); break; case GameManager.PieceType.O: blocks[0].transform.localPosition = new Vector2(0, 1); blocks[1].transform.localPosition = new Vector2(0, 0); blocks[2].transform.localPosition = new Vector2(1, 0); blocks[3].transform.localPosition = new Vector2(1, 1); break; case GameManager.PieceType.I: blocks[0].transform.localPosition = new Vector2(0, 1); blocks[1].transform.localPosition = new Vector2(0, 0); blocks[2].transform.localPosition = new Vector2(0, -1); blocks[3].transform.localPosition = new Vector2(0, 2); break; } //if (GameManager.singleton.online) { // NetworkServer.SpawnWithClientAuthority (blocks [0], connectionToClient); // NetworkServer.SpawnWithClientAuthority (blocks [1], connectionToClient); // NetworkServer.SpawnWithClientAuthority (blocks [2], connectionToClient); // NetworkServer.SpawnWithClientAuthority (blocks [3], connectionToClient); //} else { NetworkServer.Spawn(blocks[0]); NetworkServer.Spawn(blocks[1]); NetworkServer.Spawn(blocks[2]); NetworkServer.Spawn(blocks[3]); //} }