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