Newer
Older
DungeonShooting / DungeonShooting_Godot / src / framework / map / mark / ActivityMark_HandlerExpression.cs
@小李xl 小李xl on 29 Aug 2023 2 KB 预生成房间数据
//
// using System;
// using Godot;
//
// public partial class ActivityMark
// {
//     /// <summary>
//     /// 根据预制表达式创建物体并返回
//     /// </summary>
//     /// <param name="type">物体类型</param>
//     /// <param name="expressionFieldName">预制表达式字段名称, 注意是字段名称, 而不是内容</param>
//     public ActivityObjectResult<T> CreateActivityObjectFromExpression<T>(ActivityType type, string expressionFieldName) where T : ActivityObject
//     {
//         if (_currentExpression.TryGetValue(expressionFieldName, out var expressionData))
//         {
//             if (expressionData.Id == "null")
//             {
//                 return null;
//             }
//             var id = ActivityId.GetIdPrefix(type) + expressionData.Id;
//             var activityObject = ActivityObject.Create<T>(id);
//             if (activityObject == null)
//             {
//                 return null;
//             }
//
//             HandlerExpressionArgs(type, activityObject, expressionData);
//             return new ActivityObjectResult<T>(activityObject, expressionData);
//         }
//
//         GD.PrintErr("未找到表达式字段: " + expressionFieldName + ", 请检查是否有该字段或者该字段加上了[ActivityExpression]标记");
//         return null;
//     }
//
//     private void HandlerExpressionArgs(ActivityType type, ActivityObject instance, ActivityExpressionData expressionData)
//     {
//         switch (type)
//         {
//             case ActivityType.None:
//                 break;
//             case ActivityType.Player:
//                 break;
//             case ActivityType.Test:
//                 break;
//             case ActivityType.Role:
//                 break;
//             case ActivityType.Enemy:
//                 break;
//             case ActivityType.Weapon:
//             {
//                 var weapon = (Weapon)instance;
//                 //当前弹夹弹药量
//                 if (expressionData.Args.TryGetValue("CurrAmmon", out var currAmmon))
//                 {
//                     weapon.SetCurrAmmo(int.Parse(currAmmon));
//                 }
//                 //备用弹药量
//                 if (expressionData.Args.TryGetValue("ResidueAmmo", out var residueAmmo))
//                 {
//                     weapon.SetResidueAmmo(int.Parse(residueAmmo));   
//                 }
//             }
//                 break;
//             case ActivityType.Bullet:
//                 break;
//             case ActivityType.Shell:
//                 break;
//             case ActivityType.Other:
//                 break;
//         }
//     }
// }