public virtual bool IsBuildingAllowedHere(TileMapState state, Vector3Int cell) { for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { var v3 = new Vector3Int(cell.x + i, cell.y + j, 0); TileBase tile = state.tilemap.GetTile(v3); if (!tile || state.buildingCoords.ContainsKey(v3)) { return(false); } if (!MapController.Instance.CheckTileString(tile, requiredString)) { return(false); } // if (!requiredAtLeastOneOfString.IsNullOrEmpty() && // MapController.Instance.CheckTileString(tile, requiredAtLeastOneOfString)) // { // // } } } return(true); }
private void Start() { buildings = new List <Building>(); for (int k = 0; k < tilemaps.Length; k++) { TileMapState state = tilemaps[k]; if (state.explored) { continue; } else { for (int i = -64; i < 64; i++) { for (int j = -64; j < 64; j++) { Vector3Int cell = new Vector3Int(i, j, 0); if (state.tilemap.HasTile(cell)) { Animator anim = Instantiate(steamCloud, state.tilemap.CellToWorld(cell).PlusY(-0.5f), Quaternion.identity, transform); AnimatorStateInfo info = anim.GetCurrentAnimatorStateInfo(0); anim.GetComponent <SpriteRenderer>().flipX = Random.value < 0.25f; anim.Play(info.fullPathHash, -1, Random.Range(0f, 1f)); state.fogClouds.Add(anim.gameObject); } } } } } }
public async Task SetTileMapState(JsonTileMapState jsonTileMapState) { await ConnectToContract(); TileMapState tileMapStateTx = new TileMapState(); tileMapStateTx.Data = JsonUtility.ToJson(jsonTileMapState); await this.contract.CallAsync("SetTileMapState", tileMapStateTx); }
public async Task <JsonTileMapState> GetTileMapState() { await ConnectToContract(); TileMapState result = await this.contract.StaticCallAsync <TileMapState>("GetTileMapState", new TileMapState()); if (result == null) { throw new Exception("Smart contract didn't return anything!"); } JsonTileMapState jsonTileMapState = JsonUtility.FromJson <JsonTileMapState>(result.Data); return(jsonTileMapState); }
public void Place(TileMapState state, Vector3Int cell) { ChangeColor(Color.white); myTilemapState = state; myCell = cell; MapController.Instance.buildings.Add(this); placed = true; ResourcesController.Instance.woodCount -= woodCost; ResourcesController.Instance.metalsCount -= metalCost; for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { state.buildingCoords.Add(new Vector3Int(cell.x + i, cell.y + j, 0), this); } } CameraController.Instance.SmallCameraShake(); transform.DOPunchScale(Vector3.one * .1f, .33f, 1, .1f); }