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; }
public BaseTileData(BaseTileData origin) { GridPosition = origin.GridPosition; worldPosition = origin.worldPosition; originTile = origin.originTile; terrainTile = origin.terrainTile; structureTile = origin.structureTile; }
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); } }
public void DestroyStructureAtPos(Vector3Int pos) { BaseTileData data = GetTileDataAtPos(pos); StructureTile structure = data.structureTile; if (structure != null && structure._building != null) { structure.DestroyStructure(); data.structureTile = null; } }
public void UnregisterStructure(StructureTile structure) { if (structure._structureData.ProducesEnergy) { UnregisterProducingEnergyStructure(structure); } if (structure._structureData.ConsumesEnergy) { UnregisterConsumingEnergyStructure(structure); } }
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); }
public StructureTile HandleFlood() { terrainTile.terrainInfo.HideFloodableInfo(); if (structureTile != null) { if (!structureTile.CanStructureBeFlooded()) { structureTile = null; return(structureTile); } } return(null); }
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(); }
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()); } }
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; }
private void UnregisterConsumingEnergyStructure(StructureTile structure) { _energyConsumingStructures.Remove(structure); }
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; }