Beispiel #1
0
        private void DisplaySelectedStatContent(RPGStatAsset stat)
        {
            GUILayout.BeginVertical();

            GUILayout.BeginHorizontal(EditorStyles.toolbar);
            var statType = RPGStatTypeDatabase.Instance.Get(stat.AssignedStatId, true);

            GUILayout.Label(string.Format("[{0}]: {1}", stat.CreateInstance().GetType().Name,
                                          statType == null ? "Stat Type Not Set" : statType.Name));

            if (GUILayout.Button(statType == null ? "Assign Type" : "Change Type", EditorStyles.toolbarButton, GUILayout.Width(100)))
            {
                XmlDatabaseEditorUtility.ShowContext(RPGStatTypeDatabase.Instance, (statTypeAsset) => {
                    stat.AssignedStatId = statTypeAsset.Id;
                    Debug.Log("Assigning stat to stat type " + statTypeAsset.Id);
                }, typeof(RPGStatTypeWindow));
            }
            GUILayout.EndHorizontal();

            if (stat != null)
            {
                foreach (var extension in RPGStatEditorUtility.GetExtensions())
                {
                    if (extension.CanHandleType(stat.GetType()))
                    {
                        extension.OnGUI(stat);
                    }
                }
            }

            GUILayout.EndVertical();
        }
Beispiel #2
0
        public override void OnGUI(object asset)
        {
            RPGStatAsset stat = asset as RPGStatAsset;

            stat.StatBaseValue = EditorGUILayout.IntField("Stat Base Value", stat.StatBaseValue);

            GUILayout.BeginHorizontal();
            var category = RPGStatCategoryDatabase.Instance.Get(stat.StatCategoryId);

            if (category == null)
            {
                EditorGUILayout.LabelField("Stat Category", "None");
            }
            else
            {
                EditorGUILayout.LabelField("Stat Category", category.Name);
            }

            if (GUILayout.Button("Set Category", EditorStyles.miniButtonMid, GUILayout.Width(100)))
            {
                RPGStatCategoryDatabase.Instance.LoadDatabase();
                XmlDatabaseEditorUtility.ShowContext(RPGStatCategoryDatabase.Instance, (categoryAsset) => {
                    stat.StatCategoryId = categoryAsset.Id;
                }, typeof(RPGStatCategoryWindow));
            }
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal(EditorStyles.toolbarButton);
            if (stat.StatScaler != null)
            {
                EditorGUILayout.LabelField("Stat Scaler", stat.StatScaler.GetType().Name);
            }
            else
            {
                EditorGUILayout.LabelField("Stat Scaler", "No Scaler Set");
            }

            if (GUILayout.Button("Set", EditorStyles.toolbarButton, GUILayout.Width(40)))
            {
                RPGStatScalerDatabase.Instance.LoadDatabase();
                XmlDatabaseEditorUtility.GetGenericMenu(RPGStatScalerEditorUtility.GetNames(), (selectedIndex) => {
                    stat.StatScaler = RPGStatScalerEditorUtility.CreateAsset(selectedIndex);
                }).ShowAsContext();
            }

            if (GUILayout.Button("Remove", EditorStyles.toolbarButton, GUILayout.Width(60)))
            {
                stat.StatScaler = null;
            }
            GUILayout.EndHorizontal();

            if (stat.StatScaler != null)
            {
                foreach (var extension in RPGStatScalerEditorUtility.GetExtensions())
                {
                    if (extension.CanHandleType(stat.StatScaler.GetType()))
                    {
                        extension.OnGUI(stat.StatScaler);
                    }
                }
            }
            else
            {
                GUILayout.Label("No Stat Scaler selected. Stat will not scale with level",
                                EditorStyles.centeredGreyMiniLabel);
            }
        }