Пример #1
0
        public static void WriteStatTypesToFile(string filepath)
        {
            using (StreamWriter file = File.CreateText(filepath)){
                file.WriteLine("/// <summary>");
                file.WriteLine("/// THIS IS A GENERATED FILE");
                file.WriteLine("/// ANY EDITS WILL BE DELETED ON NEXT GENERATION");
                file.WriteLine("/// Generated Enum that can be used to easily select a StatType from the StatTypeDatabase.");
                file.WriteLine("/// The value assigned to each enum key is the ID of that statType within the StatTypeDatabase");
                file.WriteLine("/// </summary>");

                file.WriteLine("namespace Systems.StatSystem");
                file.WriteLine("{");
                file.WriteLine("\tpublic enum StatType\n\t{");
                file.WriteLine("\t\tNone = 0,");

                for (int i = 0; i < StatTypeDatabase.Instance.Count; i++)
                {
                    var statType = StatTypeDatabase.GetAt(i);
                    if (!string.IsNullOrEmpty(statType.Name))
                    {
                        if (i == (StatTypeDatabase.Instance.Count - 1))
                        {
                            file.WriteLine(string.Format("\t\t{0} = {1}", statType.Name.Replace(" ", string.Empty), statType.ID));
                        }
                        else
                        {
                            file.WriteLine(string.Format("\t\t{0} = {1},", statType.Name.Replace(" ", string.Empty), statType.ID));
                        }
                    }
                }

                file.WriteLine("\t}\n}");
            }
            AssetDatabase.Refresh();
        }
        public void OnGUI()
        {
            scroll = GUILayout.BeginScrollView(scroll);
            for (int i = 0; i < StatTypeDatabase.GetAssetCount(); i++)
            {
                var asset = StatTypeDatabase.GetAt(i);
                if (asset != null)
                {
                    if (GUILayout.Button(asset.Name, EditorStyles.toolbarButton))
                    {
                        if (OnAssetSelect != null)
                        {
                            OnAssetSelect(asset);
                        }
                        this.Close();
                    }
                }
            }

            GUILayout.EndScrollView();
        }
Пример #3
0
        public void OnGUI()
        {
            scrollPosition = GUILayout.BeginScrollView(scrollPosition);

            for (int i = 0; i < StatTypeDatabase.GetAssetCount(); i++)
            {
                var asset = StatTypeDatabase.GetAt(i);
                if (asset != null)
                {
                    GUILayout.BeginHorizontal(EditorStyles.toolbar);
                    GUILayout.Label(string.Format("ID: {0}", asset.ID.ToString("D3")), GUILayout.Width(60));

                    bool clicked = GUILayout.Toggle(asset.ID == activeID, asset.Name, ToggleButtonStyle);

                    if (clicked != (asset.ID == activeID))
                    {
                        if (clicked)
                        {
                            activeID = asset.ID;
                            GUI.FocusControl(null);
                        }
                        else
                        {
                            activeID = -1;
                        }
                    }

                    if (GUILayout.Button("-", EditorStyles.toolbarButton, GUILayout.Width(30)) && EditorUtility.DisplayDialog("Delete Stat Type", "Are you sure you want to delete " + asset.Name + " Stat Type?", "Delete", "Cancel"))
                    {
                        StatTypeDatabase.Instance.RemoveAt(i);
                    }

                    GUILayout.EndHorizontal();

                    if (activeID == asset.ID)
                    {
                        EditorGUI.BeginChangeCheck();

                        //START OF SELECTED VIEW
                        GUILayout.BeginVertical("Box");
                        GUILayout.BeginHorizontal();
                        //SPRITE ON LEFT OF HORIZONTAL
                        GUILayout.BeginVertical(GUILayout.Width(75)); //begin vertical
                        GUILayout.Label("Stat Sprite", GUILayout.Width(72));
                        asset.Icon = (Sprite)EditorGUILayout.ObjectField(asset.Icon, typeof(Sprite), false, GUILayout.Width(72), GUILayout.Height(72));
                        GUILayout.EndVertical();   //end vertical

                        //INFO ON RIGHT OF HORIZONTAL
                        GUILayout.BeginVertical(); //begin vertical

                        GUILayout.BeginHorizontal();
                        GUILayout.Label("Name", GUILayout.Width(80));
                        asset.Name = EditorGUILayout.TextField(asset.Name);
                        GUILayout.EndHorizontal();
                        GUILayout.BeginHorizontal();
                        GUILayout.Label("Short Name", GUILayout.Width(80));
                        asset.ShortName = EditorGUILayout.TextField(asset.ShortName);
                        GUILayout.EndHorizontal();
                        GUILayout.BeginHorizontal();
                        GUILayout.Label("Description", GUILayout.Width(80));
                        asset.Description = EditorGUILayout.TextArea(asset.Description, GUILayout.MinHeight(50));
                        GUILayout.EndHorizontal();

                        GUILayout.EndVertical();  //end vertical

                        GUILayout.EndHorizontal();
                        GUILayout.EndVertical();

                        if (EditorGUI.EndChangeCheck())
                        {
                            EditorUtility.SetDirty(StatTypeDatabase.Instance);
                        }
                    }
                }
            }

            GUILayout.EndScrollView();

            GUILayout.BeginHorizontal();
            if (GUILayout.Button("Add Type", EditorStyles.toolbarButton))
            {
                var newAsset = new StatTypeAsset(StatTypeDatabase.Instance.GetNextId());
                StatTypeDatabase.Instance.Add(newAsset);
            }

            if (GUILayout.Button("Generate StatType Enum", EditorStyles.toolbarButton))
            {
                StatTypeGenerator.CheckAndGenerateFile();
            }

            GUILayout.EndHorizontal();
        }