public static List <string> FormatActionAsList(GameAction action) { if (action is Conditional) { return(ResolveConditional(action as Conditional)); } var result = new List <string>(); var caption = action.GetCaption(); caption = caption == "" || caption == null?action.GetType().Name : caption; result.Add(caption); return(result); }
internal static void Append(GameAction action, String indent = "") { try { if (action == null) { Append($"{indent}GameAction is null"); return; } { Append(indent + action.GetType().Name + $" {action.GetCaption()}"); } { var a = action as Conditional; if (a != null) { Append($"{indent} operation {a.ConditionsChecker?.Operation}"); var conditions = a.ConditionsChecker?.Conditions; if (conditions != null) { foreach (var c in conditions) { Append($"{indent} {(c.Not ? "not " : " ")}{c.GetType().Name} {c.GetCaption()}"); } } if (a.IfTrue?.HasActions == true) { Append($"{indent} if true:"); foreach (var nested in a.IfTrue.Actions) { Append(nested, $"{indent} "); } } if (a.IfFalse?.HasActions == true) { Append($"{indent} if false:"); foreach (var nested in a.IfFalse.Actions) { Append(nested, $"{indent} "); } } } } { var a = action as ContextActionConditionalSaved; if (a != null) { Append($"{indent} succeeded:"); if (a.Succeed?.HasActions == true) { foreach (var nested in a.Succeed.Actions ?? Array.Empty <GameAction>()) { Append(nested, $"{indent} "); } } if (a.Failed?.HasActions == true) { Append($"{indent} failed:"); foreach (var nested in a.Failed.Actions ?? Array.Empty <GameAction>()) { Append(nested, $"{indent} "); } } } } { var a = action as ContextActionSavingThrow; if (a != null) { foreach (var nested in a.Actions.Actions) { Append(nested, $"{indent} "); } } } { var a = action as ContextActionApplyBuff; if (a != null) { Append(a.Buff, $"{indent} "); } } } catch (Exception e) { Log.Error($"Error evaluating {action?.GetType()}:\n{e}"); } }