public void CreateLevel() { var levelSave = levelSerializer.DeserializeLevel(@"1"); level = new GameObject("Root").AddComponent <Level>(); var grid = new TileGrid(levelSave.width, levelSave.height); var player = Instantiate(PlayerPrefab).GetComponent <PlayerTile>(); level.Initialize(grid, player); var levelParams = level.GetParameters(); player.Initialize(levelSave.player, levelParams); for (int i = 0; i < levelSave.tiles.Count; i++) { var tileSave = levelSave.tiles[i]; for (int j = 0; j < tilePrefabs.Count; j++) { if (tilePrefabs[j].GetComponent <ITile>().GetType().Name == tileSave.tileName) { var tile = Instantiate(tilePrefabs[j]).GetComponent <ITile>(); tile.Initialize(tileSave, levelParams); grid.AddTile(tile); } } } }
private void CreateTestLevel() { var l = new GameObject("Root").AddComponent <Level>(); level = l; var p = Instantiate(PlayerPrefab).GetComponent <PlayerTile>(); var grid = new TileGrid(size); p.Initialize(1, 4, grid); var w = Instantiate(wallPrefab).GetComponent <WallTile>(); w.Initialize(4, 3); grid.AddTile(w); var dch = Instantiate(directionChangerPrefab).GetComponent <DirectionChangerTile>(); dch.Initialize(1, 6, Direction.DOWN); grid.AddTile(dch); l.Initialize(grid, p); }
private Tile CreateOneTile(Coordinate _coordinate, Tile.TileType _type) { GameObject go = Instantiate(tilePrefabs[(int)_type].gameObject, GetWorldSpacePositionFromCoordinate(_coordinate), Quaternion.identity) as GameObject; go.SetActive(true); // local reference copy was set as inactive, so it has to be activated Tile t = go.GetComponent <Tile>(); t.transform.SetParent(transform); t.Initialize(tileGrid, _coordinate, _type); tileGrid.AddTile(_coordinate, t); // initialize light source if it has one LightSource lightSource = go.GetComponent <LightSource>(); if (lightSource != null) { lightSource.Initialize(); } EventBroadcast.Instance.TriggerEvent(EventBroadcast.Event.LEVEL_CHANGE); return(t); }
void SetTile(TileType type) { var cost = TileTypeData.Get(type).cost; if (scoreKeeper.points < cost || !grid.CanBuild(mousePosition, type)) { return; } scoreKeeper.points -= cost; if (activeTile != null) { activeTile.type = type; } else { grid.AddTile(mousePosition, type); } RefreshButtons(); pointPreview = 0; }