public void CreateTiles(int width, int height) { InitializeTiles(); spawnedTiles = new TilePrefab[height][]; // Resize the ScrollView tileScrollViewContent.transform.localScale = new Vector3(1f, 1f, 1f); tileScrollViewContent.GetComponent <RectTransform>().SetInsetAndSizeFromParentEdge(RectTransform.Edge.Left, 0f, width * 100f); tileScrollViewContent.GetComponent <RectTransform>().SetInsetAndSizeFromParentEdge(RectTransform.Edge.Bottom, 0f, height * 100f); // Dispose tiles float xOffset = 55.5f; float yOffset = 60f; for (int heightIndex = height - 1; heightIndex >= 0; heightIndex--) // 위쪽부터 생성해야 가장 아래쪽 타일이 위로 오므로 이미지가 커도 보임. { spawnedTiles[heightIndex] = new TilePrefab[width]; for (int widthIndex = 0; widthIndex < width; widthIndex++) { spawnedTiles[heightIndex][widthIndex] = Instantiate(tile, tileScrollViewContent.transform); spawnedTiles[heightIndex][widthIndex].transform.SetPositionAndRotation(new Vector3(xOffset + widthIndex * 100f, yOffset + heightIndex * 100f), Quaternion.identity); } } }
private void instantiateTile(int x, int y) { GameObject container = getContainer(new Vector2(x, y)); MapLayer[] layers = (MapLayer[])Enum.GetValues(typeof(MapLayer)); foreach (MapLayer layer in layers) { GameObject layerContainer = container.transform.Find(layer.ToString()).gameObject; foreach (Transform child in layerContainer.transform) { GameObject.Destroy(child.gameObject); } Tile t = this.map.getTile(layer, x, y); if (t != null) { TilePrefab tilePrefab = Resources.Load <Transform>(t.PrefabPath).GetComponent <TilePrefab>(); GameObject newTile = new GameObject(); newTile.transform.SetParent(layerContainer.transform, false); newTile.transform.localScale = t.Scale; SpriteRenderer spriteComp = newTile.AddComponent <SpriteRenderer>(); spriteComp.sprite = tilePrefab.Icon; Material mat = layer == MapLayer.GROUND ? groundLayerMat : backgroundLayerMat; spriteComp.material = mat; } } updateLines(); }
public override void perform(Vector2 startPos, Vector2 endPos) { slectedTiles.Clear(); int xStart = (int)Mathf.Min(startPos.x, endPos.x); int yStart = (int)Mathf.Min(startPos.y, endPos.y); int xEnd = (int)Mathf.Max(startPos.x, endPos.x); int yEnd = (int)Mathf.Max(startPos.y, endPos.y); for (int x = xStart; x <= xEnd; x++) { for (int y = yStart; y <= yEnd; y++) { Tile t = map.getTile(MapLayer.GROUND, x, y); if (t != null) { TilePrefab prefab = Resources.Load <TilePrefab>(t.PrefabPath); if (prefab.GetComponent <T>() != null) { slectedTiles.Add(t); } } } } if (onSelected != null && slectedTiles.Count > 0) { onSelected(); } }
private void ApplyTilePrefab(TilePrefab tilePrefab, Vector3Int pos, Tilemap tilemap, int zPos) { foreach (var preset in tilePrefab.Presets) { var adjPos = pos; adjPos.z += zPos; tilemap.SetTile(adjPos, preset.Tile); } }
private void configureTile(int x, int y) { Tile t = this.map.getTile(MapLayer.GROUND, x, y); if (t != null) { TilePrefab tileComp = getTileInstance(t.ID); tileComp.configure(t.Settings, this); } }
// Use this for initialization void Awake() { Input.backButtonLeavesApp = true; self = this; colorMap[0] = Color.green; colorMap[1] = Color.blue; colorMap[2] = new Color(0f, 1f, 1f); colorMap[3] = Color.black; colorMap[4] = Color.red; colorMap[5] = new Color(1f, 0f, 1f); colorMap[6] = new Color(1f, 1f, 0f); Mesh tileMesh = TilePrefab.GetComponent <MeshFilter>().sharedMesh; baseMainVerts = tileMesh.vertices; convertToSides(tileMesh, baseMainVerts, ref sideVerts); tileMesh.vertices = baseMainVerts; sideView = false; inventory = new Inventory(GameObject.FindGameObjectWithTag("inventory"), false); equipment = new Inventory(GameObject.FindGameObjectWithTag("equipS"), true); myCam = GameObject.FindGameObjectWithTag("Cam2").GetComponent <Camera> (); mainCam = GameObject.FindGameObjectWithTag("MainCamera").GetComponent <Camera> (); soundUI = myCam.transform.GetChild(1).GetComponent <AudioSource> (); soundEquip = myCam.transform.GetChild(2).GetComponent <AudioSource> (); playerLocation = GameObject.FindGameObjectWithTag("Player").GetComponent <Transform> (); //playerAnim = playerLocation.GetComponent<Animator> (); //playerFollowL = GameObject.FindGameObjectWithTag ("PlayerFollow").GetComponent<Transform> (); UIInventory.SetActive(false); UINormal.SetActive(false); UIEdit.SetActive(false); UIMove.SetActive(false); UIChat.SetActive(false); UIStats.SetActive(false); UIHaS.SetActive(false); UICompass.SetActive(false); UIOptions.SetActive(false); chCam = chatCam.GetComponent <Camera> (); chCam.enabled = false; //chatCam.SetActive (false); selBox = GameObject.FindGameObjectWithTag("selectBox"); selCirc = GameObject.FindGameObjectWithTag("selectCircle"); selBox.SetActive(false); selCirc.SetActive(false); selectBox = selBox; foreach (EnemyType type in Enum.GetValues(EnemyType.archer.GetType())) { GameObject prefab = Resources.Load <GameObject>("Prefabs/enemy/" + type.ToString()); enemyPrefabs.Add(type, prefab); } }
public override void configure(TileSettings settings, LevelLoader loader) { foreach (int targetID in settings.triggerTargets) { Debug.Log(targetID); TilePrefab target = loader.getTileInstance(targetID); Debug.Log(target); Debug.Log(target.GetType()); if (typeof(Triggerable).IsAssignableFrom(target.GetType())) { targets.Add((Triggerable)target); } } }
public static void AddDetail(TilePrefab Prefab, int Tileset, int X, int Y, int TileType) { int DetailCount = 0; DetailCount = (Detail.Length - 1) + 1; Array.Resize(ref Detail, DetailCount + 1); Array.Resize(ref Detail[DetailCount].Tile.Layer, (int)Enums.LayerType.Count); Detail[DetailCount].DetailBase = (byte)Prefab; Detail[DetailCount].Tile.Type = (byte)TileType; Detail[DetailCount].Tile.Layer[3].Tileset = (byte)Tileset; Detail[DetailCount].Tile.Layer[3].X = (byte)X; Detail[DetailCount].Tile.Layer[3].Y = (byte)Y; }
private void instantiateTile(int x, int y) { MapLayer[] layers = (MapLayer[])Enum.GetValues(typeof(MapLayer)); foreach (MapLayer layer in layers) { Tile t = this.map.getTile(layer, x, y); if (t != null) { GameObject newTile = Instantiate <Transform>(Resources.Load <Transform>(t.PrefabPath)).gameObject; newTile.name = String.Format("({0}|{1}) {2}", x, y, newTile.name); newTile.transform.position = new Vector3(x, y, newTile.transform.position.z); newTile.transform.localScale = t.Scale; TilePrefab tileComp = newTile.GetComponent <TilePrefab>(); tileInstances.Add(t.ID, tileComp); } } }
public void CreatePreviewTiles(int width, int height) { if (previewTiles != null) { DestroyPreviewTiles(); } previewTiles = new TilePrefab[height][]; for (int heightIndex = height - 1; heightIndex >= 0; heightIndex--) // 위쪽부터 생성해야 가장 아래쪽 타일이 위로 오므로 이미지가 커도 보임. { previewTiles[heightIndex] = new TilePrefab[width]; for (int widthIndex = 0; widthIndex < width; widthIndex++) { previewTiles[heightIndex][widthIndex] = Instantiate(tile, previewContent.transform); } } }
private void AddTile(TilePrefab prefab) { var item = new MenuItem { Header = prefab.Name, Icon = new Border { Background = new SolidColorBrush(prefab.EditColor) } }; item.Click += delegate { var prefabTile = PlacementTarget as PrefabTile; if (prefabTile == null) { return; } ((PrefabTileData)prefabTile.DataContext).Reassign((PrefabTileData)prefab); }; AddChild(item); }
public static void LoadDetail(TilePrefab Prefab, int Tileset, int X, int Y, int TileType = 0, int EndX = 0, int EndY = 0) { if (EndX == 0) { EndX = X; } if (EndY == 0) { EndY = Y; } int pX = 0; int pY = 0; for (pX = X; pX <= EndX; pX++) { for (pY = Y; pY <= EndY; pY++) { AddDetail(Prefab, Tileset, pX, pY, TileType); } } }
private void replaceMapTile(Tilemap map, List <TilePrefab> tilePrefabMap, Vector3Int tilePos) { TileBase tile = map.GetTile(tilePos); if (tile == null) { return; } TilePrefab tileObj = tilePrefabMap.Where(t => t.tile.name == tile.name).FirstOrDefault(); if (tileObj == null) { //Debug.Log("Tile with the name " + tile.name + " is not defined in TilePrefabConfig."); return; } Item item = tileObj.prefab.GetComponent <Item>(); if (item != null) { PlayerInventory invConf = Configs.main.PlayerInventory; if (invConf.PlayerItems.Any(x => x.Type == item.GetItemType())) { map.SetTile(tilePos, null); return; } } GameObject prefab = tileObj.prefab; GameObject instance = Instantiate(prefab); instance.transform.position = map.CellToWorld(tilePos) + new Vector3(map.tileAnchor.x, map.tileAnchor.y, map.tileAnchor.z); map.SetTile(tilePos, null); }
private void switchTab(Tab selectedTab) { MapLayer layer = MapLayer.GROUND; decorationTabBtn.interactable = true; specialTabBtn.interactable = true; blockTabBtn.interactable = true; TilePrefab[] prefabs = new TilePrefab[0]; //TODO Bad Code... switch (selectedTab) { case Tab.DECORATION: layer = MapLayer.BACKGROUND; decorationTabBtn.interactable = false; prefabs = decorationTiles; break; case Tab.BLOCK: layer = MapLayer.GROUND; blockTabBtn.interactable = false; prefabs = groundTiles; break; case Tab.SPECIAL: layer = MapLayer.GROUND; specialTabBtn.interactable = false; prefabs = specialTiles; break; } //Clear Content foreach (GameObject g in availibleBlocks) { Destroy(g); } //Update content foreach (TilePrefab prefab in prefabs) { Sprite sprite = prefab.Icon; int[] xScales = prefab.AllowFlipHorizontal ? new int[] { 1, -1 } : new int[] { 1 }; int[] yScales = prefab.AllowFlipVertical ? new int[] { 1, -1 } : new int[] { 1 }; foreach (int xScale in xScales) { foreach (int yScale in yScales) { GameObject newTileBtn = new GameObject(); newTileBtn.transform.SetParent(content, false); newTileBtn.transform.localScale = new Vector3(xScale, yScale, 1); Image imageComponent = newTileBtn.AddComponent <Image>(); imageComponent.sprite = sprite; Button btnComponent = newTileBtn.AddComponent <Button>(); btnComponent.transition = Selectable.Transition.None; btnComponent.onClick.AddListener(delegate { this.SelectedTilePrefabPath = "Tiles/" + selectedTab.ToString() + "/" + prefab.gameObject.name; //TODO echt kacke so this.SelectedTileSprite = sprite; this.SelectedTileLayer = layer; this.SelectedTileScale = new Vector3(xScale, yScale, 1); if (onTileSelected != null) { onTileSelected(); } }); availibleBlocks.Add(newTileBtn); } } } }