private short                  individualInTile; //Index from an array. must have error checking & update the variable as needed.

        public void InitializeLocationTile(GroundTile groundType, StructureTile structureType, StructureTileAttribute structureTypeAttribute)
        {
            ground             = groundType;
            structure          = structureType;
            structureAttribute = structureTypeAttribute;
            individualInTile   = -1;
        }
Exemple #2
0
 public BaseTileData(BaseTileData origin)
 {
     GridPosition  = origin.GridPosition;
     worldPosition = origin.worldPosition;
     originTile    = origin.originTile;
     terrainTile   = origin.terrainTile;
     structureTile = origin.structureTile;
 }
Exemple #3
0
 private void RegisterConsumingEnergyStructure(StructureTile structure)
 {
     // Add() allows duplicates, so we just check the structure isn't already in the list
     if (!_energyConsumingStructures.Contains(structure))
     {
         _energyConsumingStructures.Add(structure);
     }
 }
Exemple #4
0
    public void DestroyStructureAtPos(Vector3Int pos)
    {
        BaseTileData  data      = GetTileDataAtPos(pos);
        StructureTile structure = data.structureTile;

        if (structure != null && structure._building != null)
        {
            structure.DestroyStructure();
            data.structureTile = null;
        }
    }
Exemple #5
0
    public void UnregisterStructure(StructureTile structure)
    {
        if (structure._structureData.ProducesEnergy)
        {
            UnregisterProducingEnergyStructure(structure);
        }

        if (structure._structureData.ConsumesEnergy)
        {
            UnregisterConsumingEnergyStructure(structure);
        }
    }
Exemple #6
0
    public StructureTile CreateStructureFromType(StructureType type, BaseTileData data)
    {
        StructureTile newTile = null;

        StructureBinding structureBinding = BuildingManager.Instance.StructuresTemplates.GetStructureBindingFromType(type);

        if (structureBinding != null)
        {
            switch (type)
            {
            case StructureType.PowerPlant:
                newTile = new PowerPlantTile();
                break;

            case StructureType.Sawmill:
                newTile = new SawmillTile();
                break;

            case StructureType.PumpingStation:
                newTile = new PumpingStationTile();
                WaterClusterManager.Instance.RegisterPumpingStation(data);
                break;

            case StructureType.Village:
                newTile = new VillageTile();
                break;

            case StructureType.Mine:
                newTile = new MineTile();
                break;

            case StructureType.Relay:
                newTile = new RelayTile();
                break;

            case StructureType.MainRelay:
                newTile = new MainRelayTile();
                break;

            default:
                throw new MissingStructureTypeDefinitionException();
            }
            data.structureTile = newTile;
            BuildingView building = Instantiate(structureBinding.building, data.worldPosition, Quaternion.identity, transform);
            building.dataTile    = newTile;
            newTile._building    = building;
            newTile.GridPosition = data.GridPosition;
            ResourcesManager.Instance.RegisterStructure(newTile);
            RelayManager.Instance.RegisterStructure(data);
        }
        return(newTile);
    }
Exemple #7
0
 public StructureTile HandleFlood()
 {
     terrainTile.terrainInfo.HideFloodableInfo();
     if (structureTile != null)
     {
         if (!structureTile.CanStructureBeFlooded())
         {
             structureTile = null;
             return(structureTile);
         }
     }
     return(null);
 }
Exemple #8
0
 public override void Execute()
 {
     _floodedTile = new BaseTileData(_originTile);
     TilesDataManager.Instance.CreateTerrainFromType(TerrainType.Water, _floodedTile);
     TilesDataManager.Instance.ChangeTerrainTileInTilemap(_floodedTile.GridPosition, TerrainType.Water, true);
     _cluster.AddTile(_floodedTile);
     _floodedStructure = _floodedTile.HandleFlood();
     _originTile.HandleFloodPrevision();
     _swapTilesCommand = new SwapTilesCommand(_originTile, _floodedTile);
     _swapTilesCommand.Execute();
     _removeFloodCommand = new WaterClusterRemoveFloodCommand(_cluster, WaterClusterManager.floodThreshold);
     _removeFloodCommand.Execute();
 }
Exemple #9
0
 public void InitModule(AbstractModuleScriptable abstractModuleScriptable, StructureTile tile)
 {
     _button         = GetComponent <Button>();
     _image          = _button.image;
     _spriteOff      = abstractModuleScriptable.spriteOff;
     _spriteOn       = abstractModuleScriptable.spriteOn;
     _abstractModule = abstractModuleScriptable;
     _tile           = tile;
     IsOn            = tile.IsModuleActive(abstractModuleScriptable);
     UpdateSprite();
     if (IsOn == false)
     {
         _button.onClick.AddListener(() => ActivateModule());
     }
 }
Exemple #10
0
 private void UpdateUI()
 {
     BaseTileData selectedTile = MouseManager.Instance.SelectedTile;
     bool isActive = selectedTile != null;
     SetVisible(isActive);
     if (isActive)
     {
         _posText.text = selectedTile.GridPosition.ToString();
         _typeText.text = selectedTile.GetTerrainText();
         StructureTile structure = selectedTile.structureTile;
         _structureControlView.gameObject.SetActive(structure != null);
         _structureControlView.Structure = structure;
     }
     _errorText.gameObject.SetActive(false);
     _previousTile = selectedTile;
 }
Exemple #11
0
 private void UnregisterConsumingEnergyStructure(StructureTile structure)
 {
     _energyConsumingStructures.Remove(structure);
 }
Exemple #12
0
 private void UnregisterProducingEnergyStructure(StructureTile structure)
 {
     _energyProducingStructures.Remove(structure);
 }
 public override void ApplyModuleEffect(StructureTile tile)
 {
     tile.IsFloodable = true;
 }
 public abstract void ApplyModuleEffect(StructureTile tile);
 public void SetStructure(StructureTile newStructure)
 {
     structure = newStructure;
 }