Beispiel #1
0
 static void ClearLevel(LevelConstructor levelConstructor)
 {
     if (EditorUtility.DisplayDialog("Clear level", "Do you realy want to clear this level?", "Yes", "No"))
     {
         levelConstructor.ClearLevel();
     }
 }
Beispiel #2
0
    public void StartGenerate(LevelConstructor levelConstructor, TileGeneration startTile)
    {
        _levelConstructor = levelConstructor;
        _fogZPosition     = startTile.GetPosition().z - startTile.GetSize().z *_startOfsetPosition;
        _fogStep          = startTile.GetSize().z;
        _pool             = FindObjectOfType <FogPool>();

        GenerateFog();
        StartCoroutine(NextGnerateFog());
    }
Beispiel #3
0
 private void ConstructorInit()
 {
     LevelConstructor.Ctx levelConstructorCtx = new LevelConstructor.Ctx
     {
         boxInRowCount = boxInRowCount,
         leftWall      = leftWall,
         rightWall     = rightWall,
         mcamera       = mcamera,
     };
     LevelConstructor levelConstructor = new LevelConstructor(levelConstructorCtx);
 }
Beispiel #4
0
 private void Awake()
 {
     //enforce singleton
     if (!instance)
     {
         instance = this;
     }
     else
     {
         Destroy(this);
     }
 }
    // Use this for initialization
    void Start()
    {
        if (gameCamera == null)
        {
            gameCamera = GameObject.Find("Main Camera").GetComponent<Camera>();
        }

        if (levelConstructor == null)
        {
            levelConstructor = GameObject.Find ("LevelConstructor").GetComponent<LevelConstructor>();
        }

        floorMask = LayerMask.GetMask("TileGround");
    }
Beispiel #6
0
        static void SaveLevel(LevelConstructor levelConstructor)
        {
            var data = AssetDatabase.LoadAssetAtPath <LevelData>($"Assets/Resources/Levels/Level-{levelConstructor.LevelNumber}.asset");

            if (data != null)
            {
                //Если уже есть уровень с таким номером, то спрашиваем заменить его или нет
                if (!EditorUtility.DisplayDialog("Save level",
                                                 $"Level with number {levelConstructor.LevelNumber} already exist.\n Replace?", "Replace", "Cancel"))
                {
                    return;
                }
            }
            if (levelConstructor.SaveLevel())
            {
                EditorUtility.DisplayDialog("Save level", "Level saved successfuly", "OK");
            }
            else
            {
                EditorUtility.DisplayDialog("Save level", "Oops.. Something goes wrong while saving level. See console", "OK");
            }
        }
 private void Awake()
 {
     instance = this;
 }
    // Use this for initialization
    void Start()
    {
        if (levelConstructor == null)
        {
            GameObject levelConstructorObj = GameObject.Find("LevelConstructor");
            if (levelConstructorObj == null)
            {
                // TODO: Some warning here.
            }

            if (levelConstructorObj != null)
            {
                levelConstructor = levelConstructorObj.GetComponent<LevelConstructor>();
            }

        }

        if (tileSelector == null)
        {
            GameObject tileSelectorObj = GameObject.Find ("TileSelector");
            if (tileSelectorObj != null)
            {
                tileSelector = tileSelectorObj.GetComponent<TileSelector>();
                tileSelector.OnTileSelectionCallback += OnTileSelected;
            }
        }
    }
    private void OnGUI()
    {
        if (GameObject.FindObjectOfType <GameManager>() == null)
        {
            EditorGUILayout.HelpBox(new GUIContent("Navigate to a level scene to use this tool"));
            return;
        }

        GUIStyle headerStyle = new GUIStyle();

        headerStyle.fontSize  = 18;
        headerStyle.fontStyle = FontStyle.Bold;

        EditorGUILayout.LabelField("Json Level Editor", headerStyle);
        EditorGUILayout.Separator();

        currentPackIndex  = EditorGUILayout.IntField("Target Pack Index", currentPackIndex, GUILayout.MaxWidth(250f));
        currentLevelIndex = EditorGUILayout.IntField("Target Level Index", currentLevelIndex, GUILayout.MaxWidth(250f));

        if (GUILayout.Button("Create Level Asset"))
        {
            GameManager  currentGameManager  = GameObject.FindObjectOfType <GameManager>();
            BoardManager currentBoardManager = GameObject.FindObjectOfType <BoardManager>();
            BoardData    newGameBoardData    = new BoardData(currentGameManager.gameBoardParent,
                                                             new Vector2Int(currentBoardManager.GetBoardWidth(),
                                                                            currentBoardManager.GetBoardHeight()));
            BoardData newSolutionBoardData = new BoardData(currentGameManager.solutionBoardParent,
                                                           new Vector2Int(currentBoardManager.GetBoardWidth(),
                                                                          currentBoardManager.GetBoardHeight()));

            string targetFilePath = GetCurrentAssetPath();
            if (!File.Exists(targetFilePath))
            {
                AssetDatabase.CreateAsset(new TextAsset(), targetFilePath);
                AssetDatabase.Refresh();
            }

            LevelData    targetLevelData = new LevelData(newGameBoardData, newSolutionBoardData);
            string       levelJsonData   = JsonUtility.ToJson(targetLevelData, true);
            StreamWriter writer          = new StreamWriter(targetFilePath);

            writer.Write(levelJsonData);
            writer.Close();
        }

        if (GUILayout.Button("Load Level Data"))
        {
            GameObject.FindObjectOfType <LevelConstructor>().DestroyLevel();

            TextAsset levelDataAsset = Resources.Load <TextAsset>($"{LEVEL_FILES_LOCATION}/LevelPack_{currentPackIndex}/Level_{currentPackIndex}-{currentLevelIndex}");
            if (levelDataAsset == null)
            {
                Debug.LogError($"Couldn't Find Data Asset for {GetCurrentAssetPath()}");
                return;
            }

            StreamReader reader = new StreamReader(GetCurrentAssetPath());
            string       input  = reader.ReadToEnd();

            currentLevelData = JsonUtility.FromJson <LevelData>(input);
            if (currentLevelData == null)
            {
                Debug.LogError($"Couldn't Parse Level Data Asset");
                return;
            }

            LevelConstructor constructor = GameObject.FindObjectOfType <LevelConstructor>();
            constructor.ConstructLevel(currentLevelData);
        }

        if (GUILayout.Button("Destroy Level"))
        {
            GameObject.FindObjectOfType <LevelConstructor>().DestroyLevel();
            EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene());
        }
    }