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