private void DrawTileEdit(float posX, float posY) { float buttonSize = 100; ScrollPos = GUI.BeginScrollView(new Rect(position.width - RightWidth, posY, RightWidth, position.height - posY), ScrollPos, new Rect(position.width - RightWidth, posY, RightWidth - 20, Mathf.CeilToInt((float)TileSetsData.Tiles.Length / 3) * (buttonSize + Offset))); for (int i = 0; i < TileSetsData.Tiles.Length; i++) { Sprite sprite = TileSetsData.Tiles[i].GetSpriteForRotation(Rotation); Texture tex = sprite.texture; Color startColor = GUI.color; if (SelectedTile == TileSetsData.Tiles[i]) { GUI.color = Color.green; } if (GUI.Button(new Rect(posX, posY, buttonSize, buttonSize), tex)) { SelectedTile = TileSetsData.Tiles[i]; } GUI.color = startColor; posX += buttonSize + Offset; if (posX > position.width - 50) { posX = position.width - RightWidth + Offset; posY += buttonSize + Offset; } } GUI.EndScrollView(); }
void Start() { if (WorldData == null) { return; } List <List <IsometricTileData> > tileData = WorldData.GetTileData(); for (int i = 0; i < tileData.Count; i++) { Vector3 prefabPosition = new Vector3(-TileOffset.x, TileOffset.y, 0) * i; for (int j = 0; j < tileData[i].Count; j++) { prefabPosition += TileOffset; Sprite sprite = tileData[i][j].TilePrefab.GetSpriteForRotation(tileData[i][j].Rotation); Texture tex = sprite.texture; Vector3 tilePosition = prefabPosition - new Vector3(0, -tex.height * 0.005f, j * 0.001f + i * 0.001f); IsometricTilePrefabController tileController = Instantiate <IsometricTilePrefabController>(tileData[i][j].TilePrefab, PrefabParent); tileController.transform.localPosition = tilePosition; tileController.SetRotation(tileData[i][j].Rotation); } } TrackMoveController.SetTrack(WorldData.TrackData); }
private void CreateNewWorld(String name) { WorldData = new IsometricWorldData(); WorldData.WorldName = name; IsometricTilePrefabController initialBlock = TileSetsData.EmptyTile; List <IsometricTileData> line = new List <IsometricTileData>(); List <List <IsometricTileData> > row = new List <List <IsometricTileData> >(); IsometricTileData tile = new IsometricTileData(initialBlock, 0); line.Add(tile); row.Add((line)); WorldData.SetTileData(row); AssetDatabase.CreateAsset(WorldData, WorldDataPath + name + ".asset"); SaveWorld(); }
private void DrawRightSide() { float posX = position.width - RightWidth + Offset; float posY = Offset; int editLenght = Enum.GetNames(typeof(EditType)).Length; for (int i = 0; i < editLenght; i++) { float tabWidth = ((float)(RightWidth - (editLenght + 1) * Offset) / editLenght); EditType editType = (EditType)i; Color startColor = GUI.color; if (SelectedEdit == editType) { GUI.color = Color.green; } if (GUI.Button(new Rect(posX, posY, tabWidth, LineHeight), editType.ToString())) { if (SelectedEdit != editType) { SelectedTile = null; SelectedEdit = editType; } } GUI.color = startColor; posX += tabWidth + Offset; } posX = position.width - RightWidth + Offset; posY += LineHeight + Offset; switch (SelectedEdit) { case EditType.Building: DrawBuildingEdit(posX, posY); break; case EditType.Tiles: DrawTileEdit(posX, posY); break; case EditType.Track: DrawTrackEdit(posX, posY); break; } }
public IsometricTileData(IsometricTilePrefabController tilePrefabController, int rotation) { TilePrefab = tilePrefabController; Rotation = rotation; }