Newer
Older
DungeonShooting / DungeonShooting_Godot / src / framework / map / mark / EnemyMark.cs
@小李xl 小李xl on 29 Aug 2023 2 KB 预生成房间数据
//
// using Godot;
//
// /// <summary>
// /// 针对敌人生成位置的标记
// /// </summary>
// [Tool, GlobalClass]
// public partial class EnemyMark : ActivityMark
// {
//     /// <summary>
//     /// 脸默认朝向
//     /// </summary>
//     public enum FaceDirectionValueEnum
//     {
//         /// <summary>
//         /// 随机
//         /// </summary>
//         Random,
//         /// <summary>
//         /// 左边
//         /// </summary>
//         Left,
//         /// <summary>
//         /// 右边
//         /// </summary>
//         Right
//     }
//     
//     /// <summary>
//     /// 武器1 id, id会自动加上武器前缀
//     /// </summary>
//     [Export(PropertyHint.Expression), ActivityExpression]
//     public string Weapon1Id;
//     /// <summary>
//     /// 武器2 id, id会自动加上武器前缀
//     /// </summary>
//     [Export(PropertyHint.Expression), ActivityExpression]
//     public string Weapon2Id;
//     /// <summary>
//     /// 脸默认的朝向
//     /// </summary>
//     [Export]
//     public FaceDirectionValueEnum FaceDirection = FaceDirectionValueEnum.Random;
//
//     public override void _Ready()
//     {
//         Type = ActivityType.Enemy;
//         Layer = RoomLayerEnum.YSortLayer;
//         Altitude = 0;
//     }
//
//     public override void Doing(ActivityObjectResult<ActivityObject> result, RoomInfo roomInfo)
//     {
//         //创建敌人
//         var instance = (Enemy)result.ActivityObject;
//         var pos = instance.Position;
//         
//         //脸的朝向
//         if (FaceDirection == FaceDirectionValueEnum.Random)
//         {
//             instance.Face = Random.RandomBoolean() ? global::FaceDirection.Left : global::FaceDirection.Right;
//         }
//         else if (FaceDirection == FaceDirectionValueEnum.Left)
//         {
//             instance.Face = global::FaceDirection.Left;
//         }
//         else
//         {
//             instance.Face = global::FaceDirection.Right;
//         }
//
//         if (!string.IsNullOrWhiteSpace(Weapon1Id))
//             CreateWeapon(instance, pos, nameof(Weapon1Id));
//         if (!string.IsNullOrWhiteSpace(Weapon2Id))
//             CreateWeapon(instance, pos, nameof(Weapon2Id));
//     }
//
//     //生成武器
//     private void CreateWeapon(Enemy enemy, Vector2 pos, string fieldName)
//     {
//         var result = CreateActivityObjectFromExpression<Weapon>(ActivityType.Weapon, fieldName);
//         if (result != null)
//         {
//             //如果不能放下, 则直接扔地上
//             if (!enemy.PickUpWeapon(result.ActivityObject))
//             {
//                 result.ActivityObject.PutDown(pos, RoomLayerEnum.NormalLayer);
//             }
//         }
//     }
// }