private EnemySpawner(EnemySpawnerObject gameObject, out bool success) : base(gameObject, out success)
 {
     if (success)
     {
         GameManager.S.RegisterTurnTaker(this);
         this.gameObject = gameObject;
     }
 }
    public static EnemySpawner Make(EnemySpawnerObject enemySpawnerPrefab, int row, int col, Transform parent = null)
    {
        enemySpawnerPrefab = Object.Instantiate(enemySpawnerPrefab);
        enemySpawnerPrefab.transform.parent = parent;
        enemySpawnerPrefab.spawnRow         = row;
        enemySpawnerPrefab.spawnCol         = col;
        EnemySpawner result = new EnemySpawner(enemySpawnerPrefab, out bool success);

        return(success ? result : null);
    }
Пример #3
0
    private void InitializeLists()
    {
        #region SearchForLevelObjectOrCreate //TODO: fetch from list of objects in the project object
        string[] guids = AssetDatabase.FindAssets("t:Level");
        foreach (string guid in guids)
        {
            Debug.Log("ScriptObj: " + AssetDatabase.GUIDToAssetPath(guid));
        }
        Debug.Log(guids.Length);

        if (guids != null && guids.Length > 0)
        {
            //level = ScriptableObject.CreateInstance<Level>();
            level = (Level)AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(guids[0]), typeof(Level));
        }
        else
        {
            if (AssetDatabase.IsValidFolder("Assets/Export"))
            {
                //Debug.Log("Exists");
            }
            else
            {
                string ret;

                ret = AssetDatabase.CreateFolder("Assets", "Export");
                if (AssetDatabase.GUIDToAssetPath(ret) != "")
                {
                    Debug.Log("Folder asset created");
                }
                else
                {
                    Debug.Log("Couldn't find the GUID for the path");
                }
            }
            AssetDatabase.Refresh();
            if (AssetDatabase.IsValidFolder("Assets/Export/Assets"))
            {
                //Debug.Log("Exists");
            }
            else
            {
                string ret;

                ret = AssetDatabase.CreateFolder("Assets/Export", "Assets");
                if (AssetDatabase.GUIDToAssetPath(ret) != "")
                {
                    Debug.Log("Folder asset created");
                }
                else
                {
                    Debug.Log("Couldn't find the GUID for the path");
                }
            }
            if (AssetDatabase.IsValidFolder("Assets/Export/Assets/Data"))
            {
                //Debug.Log("Exists");
            }
            else
            {
                string ret;

                ret = AssetDatabase.CreateFolder("Assets/Export/Assets", "Data");
                if (AssetDatabase.GUIDToAssetPath(ret) != "")
                {
                    Debug.Log("Folder asset created");
                }
                else
                {
                    Debug.Log("Couldn't find the GUID for the path");
                }
            }
            AssetDatabase.Refresh();
            level = ScriptableObject.CreateInstance <Level>();
            AssetDatabase.CreateAsset(level, "Assets/Export/Data/Level-00.asset");
        }
        #endregion
        #region EnvironmentObjects
        string[] Environment_guids = AssetDatabase.FindAssets("t:EnvironmentObject");
        if (Environment_guids != null || Environment_guids.Length > 0)
        {
            foreach (string s in Environment_guids)
            {
                EnvironmentObject eo = (EnvironmentObject)AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(s), typeof(EnvironmentObject));
                bool exists          = false;
                foreach (EnvironmentObject envObj in environmentTiles)
                {
                    if (envObj == eo)
                    {
                        exists = true;
                    }
                }
                if (!exists)
                {
                    EnvironmentObject envObj = eo;
                    environmentTiles.Add(envObj);
                }
            }
        }
        #endregion
        #region StaticObjects
        string[] Static_guids = AssetDatabase.FindAssets("t:StaticObject");
        if (Static_guids != null || Static_guids.Length > 0)
        {
            foreach (string s in Static_guids)
            {
                StaticObject so     = (StaticObject)AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(s), typeof(StaticObject));
                bool         exists = false;
                foreach (StaticObject statObj in staticObjectTiles)
                {
                    if (statObj == so)
                    {
                        exists = true;
                    }
                }
                if (!exists)
                {
                    StaticObject statObj = so;
                    staticObjectTiles.Add(statObj);
                }
            }
        }
        #endregion
        #region EnemySpawnersObjects
        string[] Spawner_guids = AssetDatabase.FindAssets("t:EnemySpawnerObject");
        if (Spawner_guids != null || Spawner_guids.Length > 0)
        {
            foreach (string s in Spawner_guids)
            {
                EnemySpawnerObject eso = (EnemySpawnerObject)AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(s), typeof(EnemySpawnerObject));
                bool exists            = false;
                foreach (EnemySpawnerObject spawnObj in enemySpawnerTiles)
                {
                    if (spawnObj == eso)
                    {
                        exists = true;
                    }
                }
                if (!exists)
                {
                    EnemySpawnerObject spawnObj = eso;
                    enemySpawnerTiles.Add(spawnObj);
                }
            }
        }
        #endregion
        #region PlayerObjects
        string[] Player_guids = AssetDatabase.FindAssets("t:PlayerObject");
        if (Player_guids != null || Player_guids.Length > 0)
        {
            foreach (string s in Player_guids)
            {
                PlayerObject po     = (PlayerObject)AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(s), typeof(PlayerObject));
                bool         exists = false;
                foreach (PlayerObject plObj in playerTiles)
                {
                    if (plObj == po)
                    {
                        exists = true;
                    }
                }
                if (!exists)
                {
                    PlayerObject plObj = po;
                    playerTiles.Add(plObj);
                }
            }
        }
        #endregion
    }
Пример #4
0
    private void AddNewObject(MouseUpEvent evt)
    {
        objectEditSelectionContainer.Clear();

        if (objectSelectionField.value == null)
        {
            string typeOfObject = ObjectTypeLayer.value;
            switch (typeOfObject)
            {
            case "SpriteObject":
                #region
                ObjectField SpriteSpriteSelection = ve.Q <ObjectField>("SpriteImageObjectSelectionField");
                if (SpriteSpriteSelection.value != null)
                {
                    ScriptableObject so = ScriptableObject.CreateInstance <SpriteObject>();

                    SpriteObject spriteObject = (SpriteObject)so;
                    Sprite       s            = (Sprite)SpriteSpriteSelection.value;
                    spriteObject.sprite = (Sprite)SpriteSpriteSelection.value;
                    EditorUtility.SetDirty(spriteObject);
                    spriteObject.x = (int)s.rect.x;
                    EditorUtility.SetDirty(spriteObject);
                    spriteObject.y = (int)s.rect.y;
                    EditorUtility.SetDirty(spriteObject);
                    spriteObject.width = (int)s.rect.width;
                    EditorUtility.SetDirty(spriteObject);
                    spriteObject.height = (int)s.rect.height;
                    EditorUtility.SetDirty(spriteObject);

                    if (string.IsNullOrEmpty(ObjectNameTextField.value))
                    {
                        AssetDatabase.CreateAsset(spriteObject, "Assets/Export/Data/SpriteData.asset");
                    }
                    else
                    {
                        AssetDatabase.CreateAsset(spriteObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset");
                    }
                }
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
                break;

                #endregion
            case "EnvironmentObject":
                #region
                ObjectField EnvironmentSpriteSelection = ve.Q <ObjectField>("SpriteImageObjectSelectionField");
                ObjectField ColliderSelection          = ve.Q <ObjectField>("SpriteColliderObjectSelectionField");
                if (EnvironmentSpriteSelection.value != null)
                {
                    ScriptableObject eo = ScriptableObject.CreateInstance <EnvironmentObject>();

                    EnvironmentObject environmentObject = (EnvironmentObject)eo;
                    environmentObject.sprite = (SpriteObject)EnvironmentSpriteSelection.value;
                    EditorUtility.SetDirty(environmentObject);
                    if (ColliderSelection.value != null)
                    {
                        environmentObject.collider = (ColliderObject)ColliderSelection.value;
                        EditorUtility.SetDirty(environmentObject);
                    }

                    if (string.IsNullOrEmpty(ObjectNameTextField.value))
                    {
                        AssetDatabase.CreateAsset(environmentObject, "Assets/Export/Data/EnvironementData.asset");
                    }
                    else
                    {
                        AssetDatabase.CreateAsset(environmentObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset");
                    }
                }
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();

                //ve.Bind(serializedObject);
                break;

                #endregion
            case "StaticObject":
                #region
                ObjectField StaticSpriteSelection   = ve.Q <ObjectField>("SpriteImageObjectSelectionField");
                ObjectField StaticColliderSelection = ve.Q <ObjectField>("SpriteColliderObjectSelectionField");
                if (StaticSpriteSelection.value != null && StaticColliderSelection.value != null)
                {
                    ScriptableObject so = ScriptableObject.CreateInstance <StaticObject>();

                    StaticObject staticObject = (StaticObject)so;
                    staticObject.sprite = (SpriteObject)StaticSpriteSelection.value;
                    EditorUtility.SetDirty(staticObject);
                    staticObject.collider = (ColliderObject)StaticColliderSelection.value;
                    EditorUtility.SetDirty(staticObject);

                    if (string.IsNullOrEmpty(ObjectNameTextField.value))
                    {
                        AssetDatabase.CreateAsset(staticObject, "Assets/Export/Data/StaticObject.asset");
                    }
                    else
                    {
                        AssetDatabase.CreateAsset(staticObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset");
                    }
                }
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
                break;

                #endregion
            case "AnimationObject":
                #region
                ScriptableObject animso     = ScriptableObject.CreateInstance <AnimationObject>();
                AnimationObject  animObject = (AnimationObject)animso;
                if (string.IsNullOrEmpty(ObjectNameTextField.value))
                {
                    AssetDatabase.CreateAsset(animObject, "Assets/Export/Data/AnimationObject.asset");
                }
                else
                {
                    AssetDatabase.CreateAsset(animObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset");
                }
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
                break;

                #endregion
            case "EnemyObject":
                #region
                ObjectField EnemyObjectSpriteSelection   = ve.Q <ObjectField>("EnemySpriteObjectSelectionField");
                FloatField  EnemyHealthField             = ve.Q <FloatField>("EnemyObjectHealthField");
                FloatField  EnemyAttackField             = ve.Q <FloatField>("EnemyObjectAttackField");
                ObjectField EnemyObjectColliderSelection = ve.Q <ObjectField>("EnemyColliderObjectSelectionField");
                if (EnemyObjectSpriteSelection.value != null && EnemyHealthField.value != 0 && EnemyAttackField.value != 0 && EnemyObjectColliderSelection.value != null)
                {
                    ScriptableObject so = ScriptableObject.CreateInstance <EnemyObject>();

                    EnemyObject enemyObject = (EnemyObject)so;
                    enemyObject.sprite = (SpriteObject)EnemyObjectSpriteSelection.value;
                    EditorUtility.SetDirty(enemyObject);
                    enemyObject.health = EnemyHealthField.value;
                    EditorUtility.SetDirty(enemyObject);
                    enemyObject.attack = EnemyAttackField.value;
                    EditorUtility.SetDirty(enemyObject);
                    enemyObject.enemyCollider = (CircleColliderObject)EnemyObjectColliderSelection.value;
                    EditorUtility.SetDirty(enemyObject);

                    if (string.IsNullOrEmpty(ObjectNameTextField.value))
                    {
                        AssetDatabase.CreateAsset(enemyObject, "Assets/Export/Data/EnemyObject.asset");
                    }
                    else
                    {
                        AssetDatabase.CreateAsset(enemyObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset");
                    }
                }
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
                break;

                #endregion
            case "EnemySpawner":
                #region
                ObjectField EnemySpawnerObjectSpriteSelection   = ve.Q <ObjectField>("EnemySpawnerSpriteObjectSelectionField");
                FloatField  EnemySpawnerTimeField               = ve.Q <FloatField>("EnemySpawnTimeField");
                ObjectField EnemySpawnerenemySelection          = ve.Q <ObjectField>("EnemyObjectSelectionField");
                ObjectField EnemySpawnerObjectColliderSelection = ve.Q <ObjectField>("SpawnerColliderObjectSelectionField");
                if (EnemySpawnerObjectSpriteSelection.value != null && EnemySpawnerTimeField != null && EnemySpawnerenemySelection.value != null && EnemySpawnerObjectColliderSelection.value != null)
                {
                    ScriptableObject so = ScriptableObject.CreateInstance <EnemySpawnerObject>();

                    EnemySpawnerObject enemySpawnerObject = (EnemySpawnerObject)so;
                    enemySpawnerObject.sprite = (SpriteObject)EnemySpawnerObjectSpriteSelection.value;
                    EditorUtility.SetDirty(enemySpawnerObject);
                    enemySpawnerObject.spawnTime = EnemySpawnerTimeField.value;
                    EditorUtility.SetDirty(enemySpawnerObject);
                    enemySpawnerObject.enemy = (EnemyObject)EnemySpawnerenemySelection.value;
                    EditorUtility.SetDirty(enemySpawnerObject);
                    enemySpawnerObject.spawnerCollider = (CircleColliderObject)EnemySpawnerObjectColliderSelection.value;
                    EditorUtility.SetDirty(enemySpawnerObject);

                    if (string.IsNullOrEmpty(ObjectNameTextField.value))
                    {
                        AssetDatabase.CreateAsset(enemySpawnerObject, "Assets/Export/Data/EnemySpawnerObject.asset");
                    }
                    else
                    {
                        AssetDatabase.CreateAsset(enemySpawnerObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset");
                    }
                }
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
                break;

                #endregion
            //case "Player":
            //    break;
            case "PolygonCollider":
                #region
                FloatField PolyColliderHeightField     = ve.Q <FloatField>("PolygonColliderHeightField");
                FloatField PolyColliderWidthField      = ve.Q <FloatField>("PolygonColliderWidthField");
                Toggle     PolyColliderIsTriggerToggle = ve.Q <Toggle>("PolygonColliderSetTrigger");
                if (PolyColliderHeightField != null && PolyColliderWidthField != null && PolyColliderIsTriggerToggle != null)
                {
                    ScriptableObject so = ScriptableObject.CreateInstance <PolygonColliderObject>();

                    PolygonColliderObject polygonColliderObject = (PolygonColliderObject)so;
                    polygonColliderObject.height = PolyColliderHeightField.value;
                    EditorUtility.SetDirty(polygonColliderObject);
                    polygonColliderObject.width = PolyColliderWidthField.value;
                    EditorUtility.SetDirty(polygonColliderObject);
                    polygonColliderObject.isTrigger = PolyColliderIsTriggerToggle.value;
                    EditorUtility.SetDirty(polygonColliderObject);

                    if (string.IsNullOrEmpty(ObjectNameTextField.value))
                    {
                        AssetDatabase.CreateAsset(polygonColliderObject, "Assets/Export/Data/PolygonColliderObject.asset");
                    }
                    else
                    {
                        AssetDatabase.CreateAsset(polygonColliderObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset");
                    }
                }
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
                break;

                #endregion
            case "CircleCollider":
                #region
                FloatField CircleColliderRadiustField    = ve.Q <FloatField>("CircleColliderRadiusField");
                Toggle     CircleColliderIsTriggerToggle = ve.Q <Toggle>("CircleColliderSetTrigger");

                if (CircleColliderRadiustField != null && CircleColliderIsTriggerToggle != null)
                {
                    ScriptableObject so = ScriptableObject.CreateInstance <CircleColliderObject>();

                    CircleColliderObject circleColliderObject = (CircleColliderObject)so;

                    circleColliderObject.radius = CircleColliderRadiustField.value;
                    EditorUtility.SetDirty(circleColliderObject);
                    circleColliderObject.isTrigger = CircleColliderIsTriggerToggle.value;
                    EditorUtility.SetDirty(circleColliderObject);


                    if (string.IsNullOrEmpty(ObjectNameTextField.value))
                    {
                        AssetDatabase.CreateAsset(circleColliderObject, "Assets/Export/Data/CircleColliderObject.asset");
                    }
                    else
                    {
                        AssetDatabase.CreateAsset(circleColliderObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset");
                    }
                }
                break;

                #endregion
            case "ProjectileObject":
                #region
                ObjectField ProjectileObjectSpriteSelection   = ve.Q <ObjectField>("ProjectileSpriteObjectSelectionField");
                FloatField  ProjectileSpeedField              = ve.Q <FloatField>("ProjectileSpeedField");
                ObjectField ProjectileObjectColliderSelection = ve.Q <ObjectField>("ProjectileColliderObjectSelectionField");

                if (ProjectileObjectSpriteSelection.value != null && ProjectileSpeedField != null && ProjectileObjectColliderSelection.value != null)
                {
                    ScriptableObject so = ScriptableObject.CreateInstance <ProjectileObject>();

                    ProjectileObject projectileObject = (ProjectileObject)so;
                    projectileObject.sprite = (SpriteObject)ProjectileObjectSpriteSelection.value;
                    EditorUtility.SetDirty(projectileObject);
                    projectileObject.speed = ProjectileSpeedField.value;
                    EditorUtility.SetDirty(projectileObject);
                    projectileObject.projectileCollider = (CircleColliderObject)ProjectileObjectColliderSelection.value;
                    EditorUtility.SetDirty(projectileObject);

                    if (string.IsNullOrEmpty(ObjectNameTextField.value))
                    {
                        AssetDatabase.CreateAsset(projectileObject, "Assets/Export/Data/ProjectileObject.asset");
                    }
                    else
                    {
                        AssetDatabase.CreateAsset(projectileObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset");
                    }
                }
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
                break;

                #endregion
            case "PlayerObject":
                #region
                ObjectField PlayerObjectSpriteSelection     = ve.Q <ObjectField>("PlayerSpriteObjectSelectionField");
                FloatField  PlayerHealthField               = ve.Q <FloatField>("PlayerObjectHealthField");
                FloatField  PlayerAttackField               = ve.Q <FloatField>("PlayerObjectAttackField");
                FloatField  PlayerSpeedField                = ve.Q <FloatField>("PlayerObjectSpeedField");
                ObjectField PlayerObjectProjectileSelection = ve.Q <ObjectField>("PlayerProjectileObjectSelectionField");
                ObjectField PlayerObjectColliderSelection   = ve.Q <ObjectField>("PlayerColliderObjectSelectionField");

                if (PlayerObjectSpriteSelection.value != null && PlayerHealthField.value != 0 && PlayerAttackField.value != 0 && PlayerSpeedField.value != 0 && PlayerObjectProjectileSelection.value != null && PlayerObjectColliderSelection.value != null)
                {
                    ScriptableObject so = ScriptableObject.CreateInstance <PlayerObject>();

                    PlayerObject playerObject = (PlayerObject)so;
                    playerObject.sprite = (SpriteObject)PlayerObjectSpriteSelection.value;
                    EditorUtility.SetDirty(playerObject);
                    playerObject.health = PlayerHealthField.value;
                    EditorUtility.SetDirty(playerObject);
                    playerObject.attack = PlayerAttackField.value;
                    EditorUtility.SetDirty(playerObject);
                    playerObject.projectile = (ProjectileObject)PlayerObjectProjectileSelection.value;
                    EditorUtility.SetDirty(playerObject);
                    playerObject.playerCollider = (CircleColliderObject)PlayerObjectColliderSelection.value;
                    EditorUtility.SetDirty(playerObject);

                    if (string.IsNullOrEmpty(ObjectNameTextField.value))
                    {
                        AssetDatabase.CreateAsset(playerObject, "Assets/Export/Data/PlayerObject.asset");
                    }
                    else
                    {
                        AssetDatabase.CreateAsset(playerObject, "Assets/Export/Data/" + ObjectNameTextField.value + ".asset");
                    }
                }
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
                break;
                #endregion
            }
        }
    }