예제 #1
0
    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();
    }
예제 #2
0
    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);
    }
예제 #3
0
    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();
    }
예제 #4
0
    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;
        }
    }
예제 #5
0
 public IsometricTileData(IsometricTilePrefabController tilePrefabController, int rotation)
 {
     TilePrefab = tilePrefabController;
     Rotation   = rotation;
 }