private void ShowTileObject(ref BattleFieldAttackTileClass bfatc) { bfatc.HasEffect = EditorGUILayout.ToggleLeft("HasEffect", bfatc.HasEffect); if (bfatc.HasEffect) { bfatc.EffectChances = EditorGUILayout.FloatField("EffectChances", bfatc.EffectChances); var list = bfatc.Effects; int newCount = Mathf.Max(0, EditorGUILayout.IntField("Number of Effects", list.Count)); while (newCount < list.Count) { list.RemoveAt(list.Count - 1); } while (newCount > list.Count) { list.Add(null); } for (int i = 0; i < list.Count; i++) { bfatc.Effects[i] = (ScriptableObjectAttackEffect)EditorGUILayout.ObjectField("Effect " + i, bfatc.Effects[i], typeof(ScriptableObjectAttackEffect), false); //"Effect", bfatc.Effects, typeof(ScriptableObjectAttackEffect), false } } bfatc.IsEffectOnTile = EditorGUILayout.ToggleLeft("HasEffectOnTile", bfatc.IsEffectOnTile); if (bfatc.IsEffectOnTile) { bfatc.TileParticlesID = (ParticlesType)EditorGUILayout.EnumPopup("ParticleType", bfatc.TileParticlesID); bfatc.DurationOnTile = EditorGUILayout.FloatField("DurationOnTile", bfatc.DurationOnTile); } }
public BattleFieldTileInfo(BulletBehaviourInfoClassOnBattleFieldClass parent, BattleFieldAttackTileClass tile) { Parent = parent; Tile = tile; }
public void DrawBattleTileAtk(BulletBehaviourInfoClassOnBattleFieldClass BattleTileTrajectory, Vector2Int horizontal, Vector2Int vertical) { bool showClose = true; BattleFieldTileInfo bfti = null; BattleFieldAttackTileClass bfatc; for (int x = horizontal.x; x < horizontal.y; x++) { EditorGUILayout.BeginHorizontal(); for (int y = vertical.x; y < vertical.y; y++) { //Debug.Log(x + " " + y); bfatc = BattleTileTrajectory.BulletEffectTiles.Where(r => r.Pos == new Vector2Int(x, y)).FirstOrDefault(); if (firstOpen && bfatc != null) { bfti = new BattleFieldTileInfo(BattleTileTrajectory, bfatc); TilesInfo.Add(bfti); } else { bfti = TilesInfo.Where(r => r.Tile.Pos == new Vector2Int(x, y)).FirstOrDefault(); } showClose = EditorGUILayout.ToggleLeft(x + "," + y, bfatc != null ? true : false, GUILayout.Width(40)); if (showClose) { if (bfatc == null) { if (TilesInfo.Count == 0) { bfatc = new BattleFieldAttackTileClass(new Vector2Int(x, y)); } else { ScriptableObjectAttackEffect[] copyOfEffects = new ScriptableObjectAttackEffect[TilesInfo[TilesInfo.Count - 1].Tile.Effects.Count]; TilesInfo[TilesInfo.Count - 1].Tile.Effects.CopyTo(copyOfEffects); bfatc = new BattleFieldAttackTileClass(new Vector2Int(x, y), TilesInfo[TilesInfo.Count - 1].Tile.HasEffect, copyOfEffects.ToList(), TilesInfo[TilesInfo.Count - 1].Tile.IsEffectOnTile, TilesInfo[TilesInfo.Count - 1].Tile.TileParticlesID, TilesInfo[TilesInfo.Count - 1].Tile.DurationOnTile); } bfti = new BattleFieldTileInfo(BattleTileTrajectory, bfatc); BattleTileTrajectory.BulletEffectTiles.Add(bfatc); TilesInfo.Add(bfti); } } else if (!showClose && bfatc != null) { TilesInfo.Remove(bfti); BattleTileTrajectory.BulletEffectTiles.Remove(bfatc); } } EditorGUILayout.EndHorizontal(); } if (TilesInfo.Count > 0) { WriteInfo(BattleTileTrajectory); } }