示例#1
0
    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);
        }
    }
示例#2
0
	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]);
		//}
	}
示例#3
0
    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]);
        //}
    }