Пример #1
0
        /// <summary>
        /// setup the collection based on a collection asset
        /// </summary>
        public void SetupCollection(GambitCollectionAsset collectionAsset)
        {
            IsCollectionSetup = true;

            if (collectionAsset != null)
            {
                Gambits.Clear();
                foreach (var gambitAsset in collectionAsset.Gambits)
                {
                    Gambits.Add(gambitAsset.CreateInstance());
                    Gambits [Gambits.Count - 1].Owner = this.gameObject;
                    Gambits [Gambits.Count - 1].Initialize();

                    foreach (var gambitCondition in gambitAsset.Conditions)
                    {
                        Gambits [Gambits.Count - 1].Conditions.Add(gambitCondition.CreateInstance());
                        Gambits [Gambits.Count - 1].Conditions [Gambits [Gambits.Count - 1].Conditions.Count - 1].Owner = this.gameObject;
                    }
                }
            }
        }
        protected override void DisplayAssetGUI(EntityAsset asset)
        {
            GUILayout.BeginVertical("Box");

            GUILayout.BeginHorizontal();

            //asset.Icon = (Sprite)EditorGUILayout.ObjectField(asset.Icon, typeof(Sprite), false,
            //	GUILayout.Width(72), GUILayout.Height(72));

            GUILayout.BeginVertical();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Name", GUILayout.Width(100));
            asset.Name = EditorGUILayout.TextField(asset.Name);

            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Gambit Collection ", GUILayout.Width(100));

            GambitCollectionAsset gambitCollectionAsset = GambitCollectionDatabase.Instance.Get(asset.GambitCollectionId);

            if (GUILayout.Button(gambitCollectionAsset == null?"Assign Gambit Collection":gambitCollectionAsset.Name))
            {
                XmlDatabaseEditorUtility.ShowContext(GambitCollectionDatabase.Instance, (gambitColAsset) => {
                    if (EditorUtility.DisplayDialog("Change gambit collection", "Are you sure you want to change the associated gambit collection? Changing gambit collection might result in unsynchronized skill collection", "Change", "Cancel"))
                    {
                        asset.GambitCollectionId = gambitColAsset.Id;
                    }
                });
            }

            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Skill Collection ", GUILayout.Width(100));

            SkillCollectionAsset skillCollectionAsset = SkillCollectionDatabase.Instance.Get(asset.SkillCollectionId);

            if (GUILayout.Button(skillCollectionAsset == null?"Assign Skill Collection":skillCollectionAsset.Name))
            {
                XmlDatabaseEditorUtility.ShowContext(SkillCollectionDatabase.Instance, (skillColAsset) => {
                    if (EditorUtility.DisplayDialog("Change skill collection", "Are you sure you want to change the associated skill collection? Changing skill collection might result in loss of skill data in gambits.", "Change", "Cancel"))
                    {
                        asset.SkillCollectionId = skillColAsset.Id;
                    }
                });
            }

            GUILayout.EndHorizontal();

            GUILayout.EndVertical();

            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Description", GUILayout.Width(100));
            asset.Description = EditorGUILayout.TextField(asset.Description);
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Tag", GUILayout.Width(100));
            asset.Tag = (int)(PerceptionTags)(EditorGUILayout.EnumFlagsField((PerceptionTags)asset.Tag));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Alert Mask", GUILayout.Width(100));
            asset.AlertMask = (int)(PerceptionTags)(EditorGUILayout.EnumFlagsField((PerceptionTags)asset.AlertMask));
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();
            GUILayout.Label("Vision", GUILayout.Width(100));
            asset.Vision = EditorGUILayout.FloatField(asset.Vision);
            GUILayout.EndHorizontal();

            GUILayout.EndVertical();
        }