示例#1
0
        /// <inheritdoc/>
        public void ShowQuestProgress(QuestDefinition quest, bool wasProgressionRequested)
        {
            using var writer = this.player.Connection.StartSafeWrite(QuestProgress.HeaderType, QuestProgress.Length);
            _ = new QuestProgress(writer.Span)
            {
                QuestGroup = (ushort)quest.Group,
            };

            var questState = this.player.SelectedCharacter.QuestStates.FirstOrDefault(q => q.Group == quest.Group);

            // to write the quest state into the message, we can use the same logic as for the QuestState. The messages are equal in their content.
            QuestState progress = writer.Span;

            progress.AssignActiveQuestData(questState, this.player);
            writer.Commit();
        }