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); }
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 }
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 } } }