示例#1
0
    public TerrainUnitInfo SetTile(Point point, int tile)
    {
        TerrainUnitInfo info = null;

        switch (tile)
        {
        case 0:
            info = GameInformation.instance.GetTerrainInfo(Terrain.GRASS);
            break;

        case 4:
            info = GameInformation.instance.GetTerrainInfo(Terrain.RESTAURANT);
            break;

        default:
            Debug.LogWarning("Map generation tile not set up: " + tile);
            break;
        }

        if (info == null)
        {
            info = GameInformation.instance.GetTerrainInfo(Terrain.GRASS);
        }
        SetTile(point, info);

        return(info);
    }
示例#2
0
    private void CreateBoard()
    {
        int[,] levelMap = generator.GenerateLevel();
        TerrainUnitInfo[,] terrainMap = generator.GenerateLevel(levelMap);

        for (int i = 0; i < 8; i++)
        {
            for (int j = 0; j < 8; j++)
            {
                Point           p    = new Point(i, j);
                TerrainUnitInfo info = terrainMap[i, j];

                board.SetTile(p, info);

                if (info.terrain == Terrain.RESTAURANT)
                {
                    owner.restaurantUnits.Add(board.GetTile(p).GetComponent <TerrainUnit>());
                }

                int terrainInt = levelMap[i, j];
                if (terrainInt == 5)
                {
                    enemyTiles.Add(p);
                }
                if (terrainInt == 6)
                {
                    unitTiles.Add(p);
                }
            }
        }

        battleUI.SetHealthText(owner.restaurantUnits.Count);
    }
    private List <Tile> GetTilesInDirection(BoardCreator board, Point start, Point dir)
    {
        List <Tile> tiles = new List <Tile>();

        Point next     = start + dir;
        Tile  nextTile = board.GetTile(next);

        while (nextTile != null)
        {
            Unit u = nextTile.content.GetComponent <Unit>();
            if (u.type != UnitType.TERRAIN)
            {
                break;
            }
            TerrainUnitInfo info = u.GetComponent <UnitStats>().terrainUnitInfo;
            if (info.BlocksProjectiles() &&
                !(u.GetComponent <UnitStats>().IsDead() && !info.BlocksProjectileWhenDead()))
            {
                break;
            }

            tiles.Add(nextTile);

            next    += dir;
            nextTile = board.GetTile(next);
        }
        if (nextTile != null)
        {
            tiles.Add(nextTile);
        }

        return(tiles);
    }
示例#4
0
 public void ChangeSprite(int health, TerrainUnitInfo info)
 {
     try {
         renderer.sprite = info.unitSprites[health];
     } catch (Exception e) {
     }
 }
示例#5
0
 public void SetRiverSprite(bool frozen, TerrainUnitInfo info)
 {
     if (frozen)
     {
         renderer.sprite = info.frozenSprite;
     }
     else
     {
         renderer.sprite = info.unitSprite;
     }
 }
示例#6
0
    public TerrainUnitInfo[,] GenerateLevel(int[,] levelMap)
    {
        TerrainUnitInfo[,] level = new TerrainUnitInfo[8, 8];

        for (int i = 0; i < 8; i++)
        {
            for (int j = 0; j < 8; j++)
            {
                level[i, j] = GetTerrain(levelMap[i, j]);
            }
        }

        return(level);
    }
    public void SetTerrainInfo(TerrainUnitInfo terrainInfo)
    {
        _terrainInfo = terrainInfo;
        info         = terrainInfo;

        health          = info.maxHealth;
        gameObject.name = info.name;
        GetComponent <SpriteRenderer>().sprite = info.unitSprite;

        if (terrainInfo.unitSprites.Length != health && terrainInfo.IsDestructible())
        {
            Debug.LogError(terrainInfo.name + "'s unit sprites are not set up correctly.");
        }
    }
示例#8
0
    public void SetTile(Point point, TerrainUnitInfo info)
    {
        Tile t = GetTile(point);

        if (t == null)
        {
            t = Instantiate(tilePrefab, transform).GetComponent <Tile>();
            t.SetPosition(point);
            tiles.Add(point, t);
        }

        t.GetComponent <UnitStats>().SetTerrainInfo(info);
        t.GetComponent <TerrainUnit>().Place(t);
        t.GetComponent <TerrainUnit>().SetSortingLayer();
    }
示例#9
0
    public void CreateBoard(TerrainUnitInfo info)
    {
        for (int i = 0; i < width; i++)
        {
            for (int j = 0; j < height; j++)
            {
                Point p    = new Point(i, j);
                Tile  tile = Instantiate(tilePrefab, transform).GetComponent <Tile>();

                tile.GetComponent <UnitStats>().SetTerrainInfo(info);
                tile.GetComponent <TerrainUnit>().Place(tile);

                tile.SetPosition(p);
                tiles.Add(p, tile);
            }
        }
    }
    public virtual bool CanTraverse(Tile tile)
    {
        Unit u = tile.content.GetComponent <Unit>();

        if (u.type != UnitType.TERRAIN)
        {
            return(false);
        }

        TerrainUnitInfo info = u.GetComponent <UnitStats>().terrainUnitInfo;

        if (!info.IsPassable(u.GetComponent <UnitStats>().HasStatus(StatusEffects.FREEZE),
                             !u.GetComponent <UnitStats>().IsDead()))
        {
            return(false);
        }

        return(true);
    }
    private bool WillCollideWithObject(Tile tile)
    {
        Unit u = tile.content.GetComponent <Unit>();

        if (u.type != UnitType.TERRAIN)
        {
            return(true);
        }

        TerrainUnitInfo info = u.GetComponent <UnitStats>().terrainUnitInfo;

        if (!info.IsPassable(u.GetComponent <UnitStats>().HasStatus(StatusEffects.FREEZE),
                             !u.GetComponent <UnitStats>().IsDead()))
        {
            return(true);
        }

        return(false);
    }