private void RefreshTiles() { foreach (Transform child in _contentArea.transform) { Destroy(child.gameObject); } BuildingModel[] models = SharedModels.GetModels <BuildingModel>(); foreach (var model in models) { var asset = Instantiate(ElementTemplate); var tile = asset.GetComponent <TileView>(); Assert.IsNotNull(tile, "ElementTemplate does not contain a ColorTileView script"); tile.transform.SetParent(_contentArea, false); tile.ContentModel = model; tile.TileSelectedEvent += OnItemSelected; //tile.TileEnableEvent += (itile, go) => Debug.Log(go.name + " enabled: " + itile.IsEnabled); tile.AvailabilityDelegate = (tileModel) => { BuildingModel buildingModel = tileModel as BuildingModel; int buildingsNumber = _gridModel.FindAll(buildingModel).Length; return(buildingsNumber < buildingModel.MaxNumber); }; } }
private void Awake() { Assert.IsNotNull(ElementTemplate); _toggleMenu = GetComponent <IToggleMenuView>(); _gridModel = SharedModels.Get <IGridModel <BuildingModel> >(); _gridModel.ElementAdded += OnElementAdded; }
public void OnItemSelected(ITileView tile, GameObject tileGameObject) { _currentTile = tile; BuildingModel data = tile.ContentModel as BuildingModel; _toggleMenu.ToggleMenu(); SharedModels.GetWriteableModel <SharedDataModel>().SelectedBuilding.Value = data; }
private void Awake() { Assert.IsNotNull(_landTemplate); Assert.IsNotNull(_gridView); _gridView.CreateBuilding = CreateBuilding; //A model could also be specified directly as ScriptableObject variable of a Monobehaviour. //Just remember to cast it to the right interface. _gridModel = SharedModels.Get <GridModel>(); }
private void Awake() { Assert.IsNotNull(_raycaster, "You must specify a raycaster"); Assert.IsNotNull(_selectedCellObject, "You must provide an object to highlight the landing place of the building"); _selectedCell = _selectedCellObject.GetComponent <SelectedCellView>(); _sharedData = SharedModels.GetWriteableModel <SharedDataModel>(); _sharedData.SelectedBuilding.OnChange += OnSelectedBuildingChange; _gridModel = SharedModels.Get <IGridModel <BuildingModel> >(); _scaledCell = new Vector3( (_cellSize.x * transform.localScale.x) / _gridModel.Rows, 0f, (_cellSize.y * transform.localScale.z) / _gridModel.Columns); _scaledOffset = new Vector3( (_cellSize.x / 2f) * transform.localScale.x, 0f, (_cellSize.y / 2f) * transform.localScale.z); }