Beispiel #1
0
    void RaycastGround(Ray r, bool hitUI)
    {
        RaycastHit[] hits = Physics.RaycastAll(r, 1000.0f, groundOrObstacleMask);
        HitTile = hits.Length > 0;
        if (hitUI)
        {
            HitTile = false;
        }
        System.Predicate <string> nameCheck = hitName => hitName.Contains(Strings.REAL_BLOCK);
        raycastHitTile = HitTile ? GetClosestHit(hits, nameCheck) : null;

        if (HitTile)
        {
            if (raycastHitTile == null)
            {
                raycastHitTile = hits[0];
            }
            currentBlockUnit = raycastHitTile.Value.transform.GetComponent <PLEBlockUnit>();
            if (currentBlockUnit == null)
            {
                HitTile        = false;
                raycastHitTile = null;
            }
        }
        else
        {
            currentBlockUnit = null;
        }
    }
Beispiel #2
0
 private void SyncWorkingTileData()
 {
     WorkingTileData.Clear();
     for (int i = 0; i < tileParent.childCount; i++)
     {
         Transform    tile      = tileParent.GetChild(i);
         PLEBlockUnit blockUnit = tile.GetComponent <PLEBlockUnit>();
         if (blockUnit)
         {
             List <LevelUnitStates> levelStates = blockUnit.GetLevelStates();
             int      tileType = blockUnit.TileType;
             TileData tileData = new TileData(tileType, tile.position, levelStates);
             WorkingTileData.Add(tileData);
         }
     }
 }
Beispiel #3
0
    public void ColorAction(int tileType)
    {
        List <GridTile> tiles = levelEditor.gridController.GetSelectedGridTiles();

        if (tiles.Count == 0)
        {
            return;
        }

        int   currentWaveIndex = PLESpawnManager.Instance.CurrentWaveIndex;
        Color newColor         = TileColors.GetColor(tileType);

        for (int i = 0; i < tiles.Count; i++)
        {
            GridTile     tile      = tiles[i];
            PLEBlockUnit blockUnit = tile.blockUnit;
            blockUnit.riseColor = newColor;
            blockUnit.SyncTileStatesAndColors();
        }
    }
Beispiel #4
0
    private void LoadTiles()
    {
        PLEGrid gridController = levelEditor.gridController;

        gridController.ResetGrid();
        for (int i = 0; i < WorkingTileData.Count; i++)
        {
            TileData tileData = WorkingTileData[i];
            List <LevelUnitStates> levelStates = new List <LevelUnitStates>();
            foreach (LevelUnitStates levelUnitState in tileData.levelStates)
            {
                levelStates.Add(levelUnitState);
            }
            GridTile tile = gridController.GetTileAtPoint(tileData.position.AsVector);
            tile.IsActive = true;
            LevelUnit    levelUnit = tile.levelUnit;
            PLEBlockUnit blockUnit = tile.blockUnit;
            blockUnit.SetLevelStates(levelStates, tileData.RiseColor);
            List <GameObject> props = Physics.OverlapBox(tile.realTile.transform.position, new Vector3(1, 10, 1)).ToList().Where(prop => prop.GetComponent <PLEProp>()).Select(item => item.gameObject).ToList();

            if (props.Count > 0)
            {
                blockUnit.SetProp(props[0]);
            }

            List <PLESpawn> spawns = Physics.OverlapBox(tile.realTile.transform.position, new Vector3(1, 10, 1), Quaternion.identity, spawnLayerMask).ToList().Select(prop => prop.GetComponent <PLESpawn>()).ToList();
            spawns.ForEach(spawn => {
                blockUnit.AddSpawn(spawn.gameObject);
            });

            tile.realTile.transform.SetParent(tileParent);
        }
        gridController.ShowWalls();
        if (!SceneTracker.IsCurrentSceneEditor)
        {
            gridController.SetGridVisiblity(false);
        }
    }
Beispiel #5
0
    private void UpdateTiles(List <GridTile> tiles, LevelUnitStates state, bool wasToldToChangeColor)
    {
        if (tiles.Count == 0)
        {
            return;
        }

        SFXManager.Instance.Play(SFXType.UI_Click);
        int currentWaveIndex = PLESpawnManager.Instance.CurrentWaveIndex;

        for (int i = 0; i < tiles.Count; i++)
        {
            GridTile     tile      = tiles[i];
            PLEBlockUnit blockUnit = tile.blockUnit;
            LevelUnit    levelUnit = tile.levelUnit;
            if (!blockUnit.HasActiveSpawn)
            {
                List <LevelUnitStates> levelUnitStates = blockUnit.GetLevelStates();
                levelUnitStates[currentWaveIndex] = state;
                blockUnit.SyncTileStatesAndColors();
                levelUnit.TryTransitionToState(state, wasToldToChangeColor);
            }
        }
    }