private void BuildP2(ViewTile tile)
    {
        var tileP2 = _world.P2Plain.Tiles[(int)tile.worldPosition.x, (int)tile.worldPosition.y];

        if (!_world.P2Action.CanUseAction(PlayerActionType.Build) || tileP2.TowerActive)
        {
            return;
        }

        switch (tileP2.TileType)
        {
        case TileType.Mine:
            tileP2.BuildTower();
            audioSource.PlayOneShot(BuildSFX);
            _worldCreator.MakeTowerP2(tile);
            tile.ActivateTower();
            _world.P2Resources.AddResource(tileP2.ResourceType, TileType.Mine);
            _world.P2Action.UseAction(PlayerActionType.Build);
            break;

        case TileType.Field:
            tileP2.BuildTower();
            audioSource.PlayOneShot(BuildSFX);
            _worldCreator.MakeTowerP2(tile);
            tile.ActivateTower();
            _world.P2Resources.AddResource(tileP2.ResourceType, TileType.Field);
            _world.P2Action.UseAction(PlayerActionType.Build);
            break;

        case TileType.Mountain:
            break;
        }

        RefreshUIP2();
    }
Esempio n. 2
0
 public void UpdateView(int x, int y)
 {
     foreach (GameObject viewTile in viewTiles)
     {
         viewTile.transform.position += new Vector3(x, y, 0);
         ViewTile vt = viewTile.GetComponent <ViewTile>();
         vt.UpdateViewTile(x, y);
     }
 }
    protected void initMap()
    {
        MapData map = GameState.map;

        numRows = map.numRows;
        numCols = map.numCols;
        path    = new List <ViewTile>();
        grid    = new ViewTile[numRows, numCols];

        // Generate tiles
        float topEdge  = (float)(spacing * (numRows / 2.0 - 0.5));
        float leftEdge = (float)-(spacing * (numCols / 2.0 - 0.5));

        for (int i = 0; i < numRows; ++i)
        {
            GameObject row = new GameObject("row");
            row.transform.parent        = gameObject.transform;
            row.transform.localPosition = new Vector3(0, topEdge - (spacing * i), 0);
            for (int j = 0; j < numCols; ++j)
            {
                ViewTile tile = Instantiate(tileScript);
                tile.transform.parent        = row.transform;
                tile.transform.localPosition = new Vector3(leftEdge + (spacing * j), 0, 0);
                tile.transform.localScale    = new Vector3(scaling, scaling, 0);
                tile.tileData.coord          = new Coord(i, j);
                tile.mapScript = this;
                grid[i, j]     = tile;
            }
        }
        // Set tile data
        for (int i = 0; i < numRows; ++i)
        {
            for (int j = 0; j < numCols; ++j)
            {
                grid[i, j].tileData = map.getTileData(i, j);
            }
        }

        // Set path
        TileData        td;
        List <TileData> map_path = map.getPath();

        td = map_path[0];
        grid[td.coord.row, td.coord.col].setSprite(TSprites.startTile);
        path.Add(grid[td.coord.row, td.coord.col]);
        for (int i = 1; i < map_path.Count - 1; ++i)
        {
            td = map_path[i];
            grid[td.coord.row, td.coord.col].setSprite(TSprites.decideSprite(td.startDirection, td.endDirection));
            path.Add(grid[td.coord.row, td.coord.col]);
        }
        td = map_path[map_path.Count - 1];
        grid[td.coord.row, td.coord.col].setSprite(TSprites.endTile);
        path.Add(grid[td.coord.row, td.coord.col]);
    }
    private void DigP2(ViewTile tile)
    {
        if (!_world.P2Action.CanUseAction(PlayerActionType.Dig))
        {
            return;
        }

        var tileP1 = _world.P1Plain.Tiles[(int)tile.worldPosition.x, (int)tile.worldPosition.y];
        var tileP2 = _world.P2Plain.Tiles[(int)tile.worldPosition.x, (int)tile.worldPosition.y];

        switch (tileP2.TileType)
        {
        case TileType.Mine:
            break;

        case TileType.Field:
            tileP2.Dig();
            audioSource.PlayOneShot(DigSFX);
            tileP1.Raise();
            _worldCreator.MakeMineP2(tile);
            _worldCreator.MakeMountainP1(tile);
            _world.P2Action.UseAction(PlayerActionType.Dig);
            if (tileP1.TowerActive)
            {
                tileP1.DestoryTower();
                _world.P1Resources.RemoveResource(tileP1.ResourceType);
            }

            break;

        case TileType.Mountain:
            tileP2.Dig();
            audioSource.PlayOneShot(DigSFX);
            _world.P2Action.UseAction(PlayerActionType.Dig);
            if (tileP1.TileType == TileType.Mine)
            {
                tileP1.Raise();
                if (tileP1.TowerActive)
                {
                    _world.P1Resources.RemoveResource(tileP1.ResourceType);
                }
                _worldCreator.MakePlainP1(tile);
                tile.RemoveHoleSprite();
                _worldCreator.ViewTilesMultiArrayPlayerOne[(int)tile.worldPosition.x, (int)tile.worldPosition.y].RemoveHoleSprite();
            }
            _worldCreator.MakePlainP2(tile);
            tile.RemoveMountain();

            break;

        default:
            break;
        }
    }
Esempio n. 5
0
    // Start is called before the first frame update
    void Start()
    {
        viewTileScript = FindObjectOfType <ViewTile>();

        buttonComponent.onClick.AddListener(OnClick);

        Text[] texts;
        texts     = GetComponentsInChildren <Text>();
        nameText  = texts[0];
        levelText = texts[1];

        Hide();
    }
    void Start()
    {
        Player1Turn();



        _worldCreator.GenerateWorld(_world);

        _p1PositionTile            = _worldCreator.ViewTilesMultiArrayPlayerOne[0, 0];
        _p2PositionTile            = _worldCreator.ViewTilesMultiArrayPlayerTwo[5, 0];
        Player1.transform.position = _p1PositionTile.transform.position;
        Player2.transform.position = _p2PositionTile.transform.position;
    }
Esempio n. 7
0
    private void CalculateView()
    {
        Camera          camera          = FindObjectOfType <Camera>();
        CameraControler cameraControler = camera.GetComponent <CameraControler>();
        float           cameraSize      = cameraControler.GetSize();

        cameraSize = Mathf.Ceil(cameraSize);

        viewWidth  = (int)cameraSize;
        viewHeight = (int)cameraSize * 2;

        int fullViewWidth  = viewWidth + 2;
        int fullViewHeight = viewHeight + 2;

        int numberOfViewTiles = fullViewWidth * fullViewHeight;

        viewTiles = new GameObject[numberOfViewTiles];

        float startX = camera.transform.position.x - (cameraSize / 2 + 1);
        float startY = camera.transform.position.y - (cameraSize + 1);

        // Limit view tiles to map limits
        startX = Mathf.Clamp(startX, 0, mapWidth - cameraControler.GetSize());
        startY = Mathf.Clamp(startY, 0, mapHeight - cameraControler.GetSize());

        startX = Mathf.Floor(startX);
        startY = Mathf.Floor(startY);

        float unitSize = 1.00f;

        // wi - width index
        // hi - height index
        for (int wi = 0; wi < fullViewWidth; wi++)
        {
            for (int hi = 0; hi < fullViewHeight; hi++)
            {
                Vector2 newPosition = new Vector2(startX + wi * unitSize, startY + hi * unitSize);

                GameObject newViewTile = Instantiate(viewTilePrefab, newPosition, Quaternion.identity) as GameObject;
                newViewTile.transform.parent = this.transform;
                newViewTile.name             = "viewTile [" + wi + "][" + hi + "]";

                ViewTile vt = newViewTile.GetComponent <ViewTile>();
                vt.x = (int)startX + wi;
                vt.y = (int)startY + hi;

                viewTiles[wi * fullViewHeight + hi] = newViewTile;
            }
        }
    }
    public void MakeTowerP2(ViewTile tile)
    {
        switch (World.P2Plain.Tiles[(int)tile.worldPosition.x, (int)tile.worldPosition.y].ResourceType)
        {
        case ResourceType.Red:
            tile.TowerSpriteRenderer.sprite = TowerSpritesP2[0];
            break;

        case ResourceType.Green:
            tile.TowerSpriteRenderer.sprite = TowerSpritesP2[1];
            break;

        case ResourceType.Blue:
            tile.TowerSpriteRenderer.sprite = TowerSpritesP2[2];
            break;
        }
    }
    private void MoveP2(ViewTile tile)
    {
        if (!_world.P2Action.CanUseAction(PlayerActionType.Move))
        {
            return;
        }

        var movesOverX = Math.Abs(_p2PositionTile.worldPosition.x - tile.worldPosition.x) == 1 && Math.Abs(_p2PositionTile.worldPosition.y - tile.worldPosition.y) == 0;
        var movesOverY = Math.Abs(_p2PositionTile.worldPosition.x - tile.worldPosition.x) == 0 && Math.Abs(_p2PositionTile.worldPosition.y - tile.worldPosition.y) == 1;

        if (movesOverX || movesOverY)
        {
            _world.P2Action.UseAction(PlayerActionType.Move);
            _p2PositionTile            = tile;
            Player2.transform.position = tile.transform.position;
            audioSource.PlayOneShot(BuildSFX);
        }
    }
Esempio n. 10
0
 void OnClick()
 {
     ViewTile.ButtonClicked();
 }
Esempio n. 11
0
 public void MakeMountainP2(ViewTile tile)
 {
     MakeMountainP2((int)tile.worldPosition.x, (int)tile.worldPosition.y);
 }
Esempio n. 12
0
 public void MakePlainP1(ViewTile tile)
 {
     MakePlainP1((int)tile.worldPosition.x, (int)tile.worldPosition.y);
 }