using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; using Questionable.Model.Gathering; using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory; using static Questionable.QuestPathGenerator.RoslynShortcuts; namespace Questionable.QuestPathGenerator.RoslynElements; internal static class GatheringLocationExtensions { public static ExpressionSyntax ToExpressionSyntax(this GatheringLocation location) { var emptyLocation = new GatheringLocation(); return ObjectCreationExpression( IdentifierName(nameof(GatheringLocation))) .WithInitializer( InitializerExpression( SyntaxKind.ObjectInitializerExpression, SeparatedList( SyntaxNodeList( Assignment(nameof(GatheringLocation.Position), location.Position, emptyLocation.Position).AsSyntaxNodeOrToken(), Assignment(nameof(GatheringLocation.MinimumAngle), location.MinimumAngle, emptyLocation.MinimumAngle).AsSyntaxNodeOrToken(), Assignment(nameof(GatheringLocation.MaximumAngle), location.MaximumAngle, emptyLocation.MaximumAngle).AsSyntaxNodeOrToken(), Assignment(nameof(GatheringLocation.MinimumDistance), location.MinimumDistance, emptyLocation.MinimumDistance) .AsSyntaxNodeOrToken(), Assignment(nameof(GatheringLocation.MaximumDistance), location.MaximumDistance, emptyLocation.MaximumDistance) .AsSyntaxNodeOrToken())))); } }