示例#1
0
    private static int GetWordCount(PuzzleComponent p)
    {
        WordSet ws = new WordSet();

        JsonUtility.FromJsonOverwrite(StringCompressor.DecompressString(p.Content), ws);
        return(ws.Words.Count);
    }
示例#2
0
    public bool AddPuzzle(Puzzle puzzle)
    {
        // Create CategoryComponent
        PuzzleComponent.Create(puzzle, transform);

        return(true);
    }
示例#3
0
    public static void UpdateServer(PuzzleComponent component)
    {
        component.UpdateData();

        if (!ServerEditor.Post(@"Puzzles/Update/" + component.PuzzleData.ID, component.PuzzleData, "Update puzzle", "Update"))
        {
            component.PuzzleData = null;
        }
    }
示例#4
0
 //constructor 2 for create
 public PuzzleObject(string nameObject, Vector3 position, int id, float koeff_scale, string name)
 {
     ObjectInit(C.PREFAB + nameObject);
     _component = _object.GetComponent <PuzzleComponent>();
     TransformInit();
     AttachToCanvas();
     SetTransform(position);
     SetScale(koeff_scale);
     SetID(id);
     SetName(name + id);
     MaterialInit();
 }
示例#5
0
    private void CreateCategory(Transform parenTransform)
    {
        // Get category ID
        var categoryComponent = parenTransform.GetComponent <CategoryComponent>();
        int?categoryID        = categoryComponent != null ? (int?)categoryComponent.CategoryData.ID : null;

        // Find all subCategories
        var subCategories = _Categories.Where(c => c.ParentID == categoryID);

        // Create category components
        foreach (Category subCategory in subCategories)
        {
            CreateCategory(CategoryComponent.Create(subCategory, parenTransform));
        }

        // Find all puzzles
        var puzzles = _puzzles.Where(p => p.CategoryID == categoryID);

        // Create puzzle components
        foreach (var puzzle in puzzles)
        {
            PuzzleComponent.Create(puzzle, parenTransform);
        }
    }
示例#6
0
 void Awake()
 {
     Instance  = this;
     this.refs = GetComponent <GameObjectRef>();
 }
示例#7
0
    public override void OnInspectorGUI()
    {
        _puzzleComponent = target as PuzzleComponent;

        EditorGUILayout.Space();
        EditorGUILayout.BeginHorizontal();

        #region Update

        if (GUILayout.Button("Update"))
        {
            UpdateServer(_puzzleComponent);
        }

        #endregion

        #region Delete

        if (GUILayout.Button("Delete!!"))
        {
            if (EditorUtility.DisplayDialog("Delete Puzzle", "Are you sure?", "Delete", "Cancel"))
            {
                if (!ServerEditor.Post(@"Puzzles/Delete/" + _puzzleComponent.ID, null, "Delete Puzzle", "Delete"))
                {
                    EditorUtility.DisplayDialog("Error", "Can't delete Puzzle in database", "Ok");
                }

                _puzzleComponent.Delete();
                return;
            }
        }


        #endregion

        EditorGUILayout.EndHorizontal();

        #region Spawn

        if (GUILayout.Button("Spawn"))
        {
            var Wordspawner = FindObjectOfType <WordSpawner>();

            if (Wordspawner == null)
            {
                EditorUtility.DisplayDialog("Error", "Can't find word spawner", "Ok");
                return;
            }

            Wordspawner.EditorInstatiate = EditorInstantiate;

            WordSet wordSet = new WordSet();
            JsonUtility.FromJsonOverwrite(StringCompressor.DecompressString(_puzzleComponent.Content), wordSet);
            Wordspawner.WordSet = wordSet;

            Wordspawner.SpawnWords();
        }


        #endregion

        EditorGUILayout.Space();
        EditorGUILayout.LabelField("ID", _puzzleComponent.ID.ToString());
        DrawDefaultInspector();
    }
示例#8
0
    void OnGUI()
    {
        #region Get clue and category

        GUILayout.Label("Generator", EditorStyles.boldLabel);

        _clue = EditorGUILayout.TextField("Clue", _clue);



        _puzzle = (PuzzleComponent)EditorGUILayout.ObjectField(_puzzle, typeof(PuzzleComponent), true);

        #endregion

        #region Spawn wordSet

        if (GUILayout.Button("Spawn"))
        {
            _clue = _puzzle.Clue;
            var Wordspawner = FindObjectOfType <WordSpawner>();

            if (Wordspawner == null)
            {
                EditorUtility.DisplayDialog("Error", "Can't find word spawner", "Ok");
                return;
            }



            Wordspawner.EditorInstatiate = EditorInstantiate;

            WordSet wSet = new WordSet();
            JsonUtility.FromJsonOverwrite(StringCompressor.DecompressString(_puzzle.Content), wSet);
            Wordspawner.WordSet = wSet;
            _wordSet            = wSet;
            Wordspawner.SpawnWords();
        }

        #endregion


        #region Regenerate wordSet

        if (GUILayout.Button("Regenerate"))
        {
            var wordGenerator = FindObjectOfType <WordSetGenerator>();
            if (wordGenerator == null)
            {
                EditorUtility.DisplayDialog("Error", "Can't find word spawner", "Ok");
                return;
            }

            wordGenerator.AllWords = "";
            foreach (var word in _wordSet.Words)
            {
                wordGenerator.AllWords += word.Name + " ";
            }
            wordGenerator.UsedWordCount = _wordSet.Words.Count;
            MgsCoroutine.GetTime        = GetTime;
            MgsCoroutine.Start(
                wordGenerator.MakeWordSet(),
                () => EditorUtility.DisplayCancelableProgressBar(MgsCoroutine.Title, MgsCoroutine.Info, MgsCoroutine.Percentage),
                0.1);

            EditorUtility.ClearProgressBar();

            wordGenerator.EditorInstantiate = EditorInstantiate;

            wordGenerator.SpawnWordSet();

            Selection.activeObject = wordGenerator.gameObject;
        }

        #endregion


        if (GUILayout.Button("Save"))
        {
            #region Get word manager

            var wordManagers = FindObjectsOfType <WordManager>();

            if (wordManagers.Length == 0)
            {
                EditorUtility.DisplayDialog("Error", "Word manager not found!", "OK");
                return;
            }

            if (wordManagers.Length > 1)
            {
                EditorUtility.DisplayDialog("Error", "More than one Word manager!", "OK");
                return;
            }

            var wordManager = wordManagers[0];

            #endregion

            #region Create New wordSet

            WordSet wordSet = new WordSet();

            wordSet.Clue  = _clue;
            wordSet.Words = new List <SWord>();

            foreach (var word in wordManager.GetComponentsInChildren <Word>())
            {
                wordSet.Words.Add(new SWord(word));
            }

            #endregion

            #region Replace Puzzle TO Server
            // create category in database
            var puzzle = new Puzzle
            {
                ID         = _puzzle.PuzzleData.ID,
                CategoryID = _puzzle.PuzzleData.CategoryID,
                Clue       = _clue,
                Row        = _puzzle.PuzzleData.Row,
                Content    = StringCompressor.CompressString(JsonUtility.ToJson(wordSet)),
                LastUpdate = DateTime.Now
            };

            _puzzle.Content = puzzle.Content;
            _puzzle.Clue    = puzzle.Clue;
            _puzzle.Dirty   = true;
            _puzzle.UpdateData();

            ServerEditor.Post(@"Puzzles/Update/" + _puzzle.PuzzleData.ID, puzzle, "Update puzzle",
                              "Update");

            #endregion
        }
    }
示例#9
0
 //constructor for find
 public PuzzleObject(int id)
 {
     _object    = GameObject.Find("puzzle" + id);
     _component = _object.GetComponent <PuzzleComponent>();
     TransformInit();
 }