forked from liza/Questionable
138 lines
8.7 KiB
C#
138 lines
8.7 KiB
C#
using Microsoft.CodeAnalysis;
|
|
using Microsoft.CodeAnalysis.CSharp;
|
|
using Microsoft.CodeAnalysis.CSharp.Syntax;
|
|
using Questionable.Model.Questing;
|
|
using static Microsoft.CodeAnalysis.CSharp.SyntaxFactory;
|
|
using static Questionable.QuestPathGenerator.RoslynShortcuts;
|
|
|
|
namespace Questionable.QuestPathGenerator.RoslynElements;
|
|
|
|
internal static class QuestStepExtensions
|
|
{
|
|
public static ExpressionSyntax ToExpressionSyntax(this QuestStep step)
|
|
{
|
|
var emptyStep = new QuestStep();
|
|
return ObjectCreationExpression(
|
|
IdentifierName(nameof(QuestStep)))
|
|
.WithArgumentList(
|
|
ArgumentList(
|
|
SeparatedList<ArgumentSyntax>(
|
|
new SyntaxNodeOrToken[]
|
|
{
|
|
Argument(LiteralValue(step.InteractionType)),
|
|
Token(SyntaxKind.CommaToken),
|
|
Argument(LiteralValue(step.DataId)),
|
|
Token(SyntaxKind.CommaToken),
|
|
Argument(LiteralValue(step.Position)),
|
|
Token(SyntaxKind.CommaToken),
|
|
Argument(LiteralValue(step.TerritoryId))
|
|
})))
|
|
.WithInitializer(
|
|
InitializerExpression(
|
|
SyntaxKind.ObjectInitializerExpression,
|
|
SeparatedList<ExpressionSyntax>(
|
|
SyntaxNodeList(
|
|
Assignment(nameof(QuestStep.StopDistance), step.StopDistance,
|
|
emptyStep.StopDistance)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.NpcWaitDistance), step.NpcWaitDistance,
|
|
emptyStep.NpcWaitDistance)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.TargetTerritoryId), step.TargetTerritoryId,
|
|
emptyStep.TargetTerritoryId)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.DelaySecondsAtStart), step.DelaySecondsAtStart,
|
|
emptyStep.DelaySecondsAtStart)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.PickUpItemId), step.PickUpItemId, emptyStep.PickUpItemId)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.Disabled), step.Disabled, emptyStep.Disabled)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.DisableNavmesh), step.DisableNavmesh,
|
|
emptyStep.DisableNavmesh)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.Mount), step.Mount, emptyStep.Mount)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.Fly), step.Fly, emptyStep.Fly)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.Land), step.Land, emptyStep.Land)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.Sprint), step.Sprint, emptyStep.Sprint)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.IgnoreDistanceToObject),
|
|
step.IgnoreDistanceToObject, emptyStep.IgnoreDistanceToObject)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.Comment), step.Comment, emptyStep.Comment)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.Aetheryte), step.Aetheryte, emptyStep.Aetheryte)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.AethernetShard), step.AethernetShard,
|
|
emptyStep.AethernetShard)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.AetheryteShortcut), step.AetheryteShortcut,
|
|
emptyStep.AetheryteShortcut)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.AethernetShortcut), step.AethernetShortcut,
|
|
emptyStep.AethernetShortcut)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.AetherCurrentId), step.AetherCurrentId,
|
|
emptyStep.AetherCurrentId)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.ItemId), step.ItemId, emptyStep.ItemId)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.GroundTarget), step.GroundTarget,
|
|
emptyStep.GroundTarget)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.ItemCount), step.ItemCount, emptyStep.ItemCount)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.Emote), step.Emote, emptyStep.Emote)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.ChatMessage), step.ChatMessage,
|
|
emptyStep.ChatMessage)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.Action), step.Action, emptyStep.Action)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.EnemySpawnType), step.EnemySpawnType,
|
|
emptyStep.EnemySpawnType)
|
|
.AsSyntaxNodeOrToken(),
|
|
AssignmentList(nameof(QuestStep.KillEnemyDataIds), step.KillEnemyDataIds)
|
|
.AsSyntaxNodeOrToken(),
|
|
AssignmentList(nameof(QuestStep.ComplexCombatData), step.ComplexCombatData)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.CombatDelaySecondsAtStart),
|
|
step.CombatDelaySecondsAtStart,
|
|
emptyStep.CombatDelaySecondsAtStart)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.JumpDestination), step.JumpDestination,
|
|
emptyStep.JumpDestination)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.ContentFinderConditionId),
|
|
step.ContentFinderConditionId, emptyStep.ContentFinderConditionId)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.SkipConditions), step.SkipConditions,
|
|
emptyStep.SkipConditions)
|
|
.AsSyntaxNodeOrToken(),
|
|
AssignmentList(nameof(QuestStep.RequiredQuestVariables),
|
|
step.RequiredQuestVariables)
|
|
.AsSyntaxNodeOrToken(),
|
|
AssignmentList(nameof(QuestStep.RequiredGatheredItems),
|
|
step.RequiredGatheredItems),
|
|
AssignmentList(nameof(QuestStep.CompletionQuestVariablesFlags),
|
|
step.CompletionQuestVariablesFlags)
|
|
.AsSyntaxNodeOrToken(),
|
|
AssignmentList(nameof(QuestStep.DialogueChoices), step.DialogueChoices)
|
|
.AsSyntaxNodeOrToken(),
|
|
AssignmentList(nameof(QuestStep.PointMenuChoices), step.PointMenuChoices)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.PickUpQuestId), step.PickUpQuestId,
|
|
emptyStep.PickUpQuestId)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.TurnInQuestId), step.TurnInQuestId,
|
|
emptyStep.TurnInQuestId)
|
|
.AsSyntaxNodeOrToken(),
|
|
Assignment(nameof(QuestStep.NextQuestId), step.NextQuestId,
|
|
emptyStep.NextQuestId)
|
|
.AsSyntaxNodeOrToken()))));
|
|
}
|
|
}
|