public void GivenMapElement_WhenConvertToEntityType_ThenReturnTheRightType()
        {
            // Arrange
            var nonBreakableWall = new NonBreakableWall();
            var breakableWall    = new BreakableWall();
            var playerOne        = new PlayerDto()
            {
                EntityType = EntityType.PlayerOne
            };
            var playerTwo = new PlayerDto()
            {
                EntityType = EntityType.PlayerTwo
            };


            // Act
            var typeWall          = _elementToTypeConverter.ConvertToEntityType(nonBreakableWall);
            var typeBreakableWall = _elementToTypeConverter.ConvertToEntityType(breakableWall);
            var typePlayerOne     = _elementToTypeConverter.ConvertToEntityType(playerOne);
            var typePlayerTwo     = _elementToTypeConverter.ConvertToEntityType(playerTwo);


            // Assert
            Check.That(typeWall).IsEqualTo(EntityType.Wall);
            Check.That(typeBreakableWall).IsEqualTo(EntityType.BreakableWall);
            Check.That(typePlayerOne).IsEqualTo(EntityType.PlayerOne);
            Check.That(typePlayerTwo).IsEqualTo(EntityType.PlayerTwo);
        }
Exemplo n.º 2
0
    /// <summary>
    /// Use the object at position x, y on object obj
    /// </summary>
    /// <param name="posX">Position x.</param>
    /// <param name="posY">Position y.</param>
    /// <param name="obj">Object.</param>
    public override bool Use(float posX, float posY, GameObject obj = null)
    {
        //base.Use (posX, posY, obj);

        //set the physics
        GetComponent <Collider2D>().enabled      = true;
        GetComponent <Rigidbody2D>().isKinematic = false;

        transform.localScale /= 4f;

        if (obj != null)
        {
            BreakableWall wall = obj.GetComponent <BreakableWall> ();
            if (wall != null)
            {
                wall.HitOn();
                //Destroy (gameObject, 0.1f);
                return(true);
            }

            Monster monster = obj.GetComponent <Monster> ();
            if (monster != null)
            {
                monster.HitByStone();
                //Destroy (gameObject, 0.1f);
                return(true);
            }
        }
        //PlayerControl.playerControl.Unlcoked (1);
        return(false);
    }
 void OnTriggerEnter(Collider other)
 {
     if (other.gameObject.layer == 24)
     {
         wall = other.GetComponentInParent <BreakableWall> ();
         wall.Hit();
         print("Player Wall health hit: " + wall.health);
     }
 }
	void OnTriggerEnter(Collider other)
	{			
		
		if (other.gameObject.layer == 24) 
		{
			wall = other.GetComponentInParent<BreakableWall> ();
			wall.Hit ();
			print ("Player Wall health hit: " + wall.health);
		}
	}
Exemplo n.º 5
0
    private void OnTriggerEnter2D(Collider2D collision)
    {
        //Debug.Log("Object Detected from Hitbox");
        //if it's an enemy
        if (collision.gameObject.layer == 11 && collision.CompareTag("Enemy"))
        {
            //Debug.Log("Enemy Hit: " + collision.gameObject.name);
            EnemyStats enemy = collision.gameObject.GetComponentInParent <EnemyStats>();
            if (enemy != null)
            {
                Vector3 knockbackTemp = knockback;
                if (usePlayerFacing)
                {
                    knockbackTemp.x = (player.facingRight) ? knockback.x : -knockback.x;
                }
                enemy.LogDamage(damage, knockbackTemp);
            }
        }

        else if (collision.gameObject.layer == 12)
        {
            //Debug.Log("Door Detected");
            Door door = collision.gameObject.GetComponentInParent <Door>();
            if (door != null)
            {
                //Debug.Log("Opening Door");
                door.Open(false);
            }
            //else
            //{
            //    //Debug.Log("Door is null");
            //}
        }
        //if it's a breakable wall
        else if (collision.gameObject.layer == 18)
        {
            BreakableWall breakableWall = collision.gameObject.GetComponent <BreakableWall>();
            if (breakableWall != null)
            {
                breakableWall.BreakWall();
            }
        }
    }
Exemplo n.º 6
0
    void Start()
    {
        leftWall   = GameObject.FindGameObjectWithTag("Left Wall").GetComponent <BreakableWall>();
        rightWall  = GameObject.FindGameObjectWithTag("Right Wall").GetComponent <BreakableWall>();
        topWall    = GameObject.FindGameObjectWithTag("Top Wall").GetComponent <ColorFlash>();
        bottomWall = GameObject.FindGameObjectWithTag("Bottom Wall").GetComponent <ColorFlash>();

        soundManager = GameObject.FindObjectOfType <SoundManager> ();
        canvas       = GameObject.FindObjectOfType <Canvas>();

        text = canvas.GetComponentInChildren <Text> ();

        leftPlayer  = Instantiate(leftPlayer, new Vector3(-6, 0, 0), Quaternion.identity);
        rightPlayer = Instantiate(rightPlayer, new Vector3(6, 0, 0), Quaternion.identity);

        puck = Instantiate(puck, Vector3.zero, Quaternion.identity);

        puck.Initialize();

        StartCoroutine(puck.ResetPosition());
        StartCoroutine(Countdown());
    }
Exemplo n.º 7
0
    private void DetectHit()
    {
        Collider2D[] objectsInRange = Physics2D.OverlapCircleAll(location.position, range);

        foreach (Collider2D collider in objectsInRange)
        {
            Enemy enemy = collider.GetComponent <Enemy>();

            if (enemy != null)
            {
                enemy.HitByBomb();
                continue;
            }

            PuzzleEnemy pEnemy = collider.gameObject.GetComponent <PuzzleEnemy>();

            if (pEnemy != null)
            {
                pEnemy.HitByBomb();
            }

            Player player = collider.GetComponent <Player>();

            if (player != null)
            {
                player.TakeDamage(2);
                continue;
            }

            BreakableWall wall = collider.GetComponent <BreakableWall>();

            if (wall != null)
            {
                wall.BlowUp();
                continue;
            }
        }
    }
Exemplo n.º 8
0
    public void Explode()
    {
        IsExploding = true;
        SpriteRenderer.gameObject.SetActive(false);
        ExplosionRenderer.gameObject.SetActive(true);
        AudioSource.PlayOneShot(ExplosionSound);
        ExplosionRenderer.transform.DORotate(new Vector3(0f, 0f, 180f), 0.3f).OnComplete(() => Destroy(gameObject));

        // This is the absolute worst way to do this, but whatever.
        Collider2D[] colliders = Physics2D.OverlapBoxAll(transform.position, new Vector2(2f, 2f), 0f);
        foreach (Collider2D collider in colliders)
        {
            PlayerMovement playerMovement = collider.GetComponent <PlayerMovement>();
            if (playerMovement != null)
            {
                // Found a player... muahahaha.
                Debug.Log("Explosion damaged player.");
                playerMovement.TakeDamage(Damage);
                continue;
            }
            Enemy enemy = collider.GetComponent <Enemy>();
            if (enemy != null)
            {
                // Found an enemy... kaboom.
                Debug.Log("Explosion damaged enemy.");
                enemy.TakeDamage(Damage);
                continue;
            }
            BreakableWall wall = collider.GetComponent <BreakableWall>();
            if (wall != null)
            {
                // Found a breakable wall... siyanara.
                Debug.Log("Explosion damaged wall.");
                wall.TakeExplosion();
                continue;
            }
        }
    }
Exemplo n.º 9
0
    public void TakeAttackRange()
    {
        charSprite.GetComponent <SpritesOutline>().outlineSize = 16;
        Collider2D[] enemiesToDamage = Physics2D.OverlapAreaAll(startPos.position, endPos.position, enemies);

        for (int i = 0; i < enemiesToDamage.Length; i++)
        {
            if (enemiesToDamage[i].tag == "Player" || enemiesToDamage[i].tag == "King" || enemiesToDamage[i].tag == "Boss" ||
                enemiesToDamage[i].tag == "Hand" || enemiesToDamage[i].tag == "Enemy")
            {
                CharacterHealth characterHealth = enemiesToDamage [i].GetComponent <CharacterHealth> ();
                if (characterHealth != null)
                {
                    characterHealth.TakeDamage(damage);
                }
            }
            else if (enemiesToDamage[i].tag == "Bar")
            {
                MachineTrigger machineTrigger = enemiesToDamage [i].GetComponent <MachineTrigger> ();
                if (machineTrigger != null)
                {
                    machineTrigger.StateChange();
                }
            }
            else if (enemiesToDamage[i].tag == "Breakable")
            {
                BreakableWall breakableWall = enemiesToDamage [i].GetComponent <BreakableWall> ();
                if (breakableWall != null)
                {
                    breakableWall.WallChange();
                }
            }
        }

        coolDownTime = startTime;
    }
Exemplo n.º 10
0
    /**
     * Erstellt die richtige Art Feld anhand des eingelesenen Symboles und gibt
     * dieses zurück. Das eingegebene Symbol muss eines der aufgelisteten sein.
     * Wirft eine Exception,falls das Symbol nicht existiert.
     * "#": Wand
     * " ": Weg
     * "P":	Spieler
     * "B": Box
     * "G":	Zielfeld
     * @precondition Das eingegebene Symbol muss existieren.
     * @params symbol welches eingelesen werden soll. Muss existieren.
     * @params x Koordinate des Feldes.
     * @params y Koordinate des Feldes.
     * @param board auf welchem gearbeitet wird.
     * @return Das erstellte neue Feld.
     */
    public Square makeSquare(string symbol, int x, int y, Board board, Vector3 position)
    {
        Square square;

        switch (symbol)
        {
        case FLOOR_SYMBOL:
            square = new Floor(x, y, board, position);
            break;

        case WALL_SYMBOL:
            square = new Wall(x, y, board, position);
            break;

        case BREAKABLE_WALL_SYMBOL:
            BreakableWall bw = new BreakableWall(x, y, board, position);
            square = new Floor(x, y, board, position);
            square.setMovableSquare(bw);
            break;

        case PLAYER_SYMBOL:
            Player player = new Player(x, y, board, position);
            square = new Floor(x, y, board, position);
            square.setMovableSquare(player);
            break;

        case BOX_SYMBOL:
            Box box = new Box(x, y, board, position);
            square = new Floor(x, y, board, position);
            square.setMovableSquare(box);
            break;

        case GOAL_SYMBOL:
            square = new Goal(x, y, board, position);
            break;

        case BOMB_SYMBOL:
            Bomb bomb = new Bomb(x, y, board, position);
            square = new Floor(x, y, board, position);
            square.setMovableSquare(bomb);
            break;

        case "1":
            square = new BreakableFloor(x, y, board, position, 1);
            break;

        case "2":
            square = new BreakableFloor(x, y, board, position, 2);
            break;

        case "3":
            square = new BreakableFloor(x, y, board, position, 3);
            break;

        case "4":
            square = new BreakableFloor(x, y, board, position, 4);
            break;

        case "5":
            square = new BreakableFloor(x, y, board, position, 5);
            break;

        case "6":
            square = new BreakableFloor(x, y, board, position, 6);
            break;

        case "7":
            square = new BreakableFloor(x, y, board, position, 7);
            break;

        case "8":
            square = new BreakableFloor(x, y, board, position, 8);
            break;

        case "9":
            square = new BreakableFloor(x, y, board, position, 9);
            break;

        default:
            throw new UnknownSymbolException();
        }
        return(square);
    }
Exemplo n.º 11
0
        public void BreakableWall_GetImageFileName_RightImageName()
        {
            var wall = new BreakableWall();

            wall.GetImageFileName().Should().Be("BreakableWall.png");
        }
Exemplo n.º 12
0
    //Interaction with items function
    void UpdateInteract()
    {
        //If player hits key (button dependent on input settings in unity)
        if (Input.GetButtonDown("Collect" + controller))
        {
            //Local Variables for interact function
            RaycastHit2D[] hits            = Physics2D.CircleCastAll(transform.position, interactionRange, Vector2.zero, 0);
            Collectible    bestCollectible = null;
            BreakableWall  bestWall        = null;
            float          bestDistance    = float.MaxValue;

            foreach (RaycastHit2D hit in hits)
            {
                //Detects, filters and ignore any object that is not a collectible item (another Player)
                //Continue to loop and filter the next object detected
                GameObject hitObject = hit.collider.gameObject;
                if (hitObject == gameObject)
                {
                    continue;
                }

                //Get treasure script component
                Collectible treasure = hitObject.GetComponent <Collectible>();

                //if the gameobject detected is a collectable, then calculate the distance between the player and collectable
                //if the player is in range distance of collectible, then allow collectable interaction
                if (treasure)
                {
                    float distance = Vector2.Distance(transform.position, hitObject.transform.position);
                    if (distance < bestDistance)
                    {
                        bestCollectible = treasure;
                        bestDistance    = distance;
                    }
                }
                else
                {
                    BreakableWall wall = hitObject.GetComponent <BreakableWall>();
                    if (wall)
                    {
                        float distance = Vector2.Distance(transform.position, hitObject.transform.position);
                        if (distance < bestDistance)
                        {
                            bestWall     = wall;
                            bestDistance = distance;
                        }
                    }
                }
            }

            //If collectable, tries to collect object (Jess's script) and create particle effects when button is pressed
            if (bestCollectible && !bestWall)
            {
                bestCollectible.Collect(this);
                Instantiate(particlesPrefab, transform.position, Quaternion.identity);
            }
            else if (bestWall)
            {
                bestWall.Break();
            }
        }
    }