Пример #1
0
    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);
        }
    }
Пример #2
0
 public BattleFieldTileInfo(BulletBehaviourInfoClassOnBattleFieldClass parent, BattleFieldAttackTileClass tile)
 {
     Parent = parent;
     Tile   = tile;
 }
Пример #3
0
    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);
        }
    }