/// <summary>Turn text tags ({FARMER} & {REQUESTER}) into their constant values.</summary>
        /// <param name="quest">The quest object that contains the description, objective, and title.</param>
        /// <returns>An updated quest model.</returns>
        public static BillBoardQuest ResolveQuestTextTags(BillBoardQuest quest)
        {
            quest.Title       = quest.Title.Replace("{FARMER}", Game1.player.Name);
            quest.Title       = quest.Title.Replace("{REQUESTER}", quest.Requester);
            quest.Description = quest.Description.Replace("{FARMER}", Game1.player.Name);
            quest.Description = quest.Description.Replace("{REQUESTER}", quest.Requester);
            quest.Objective   = quest.Objective.Replace("{FARMER}", Game1.player.Name);
            quest.Objective   = quest.Objective.Replace("{REQUESTER}", quest.Requester);

            return(quest);
        }
        /// <summary>Adds the requester sign off and rewards to the quest description</summary>
        /// <param name="quest">The quest object that contains the rewards, description, and requester</param>
        /// <returns>A constructed description string</returns>
        public static string ConstructDescriptionString(BillBoardQuest quest)
        {
            string questDescription = $"{quest.Description}\n\n";

            if (quest.FriendshipReward > 0)
            {
                questDescription += $"- {quest.Requester} will be thankful\n";
            }

            if (quest.MoneyReward > 0)
            {
                questDescription += $"- {quest.MoneyReward}g on delivery";
            }

            return(questDescription);
        }
Exemple #3
0
        public NoteMenu(BillBoardQuest quest, int questPosition)
        {
            Quest         = ModEntry.ResolveQuestTextTags(quest);
            QuestPosition = questPosition;

            // load assets
            AcceptQuestButtonTexture = ModEntry.ModHelper.Content.Load <Texture2D>("Assets/AcceptButton.png", ContentSource.ModFolder);
            NoteBackgroundTexture    = ModEntry.ModHelper.Content.Load <Texture2D>("Assets/NoteBackground.png", ContentSource.ModFolder);
            var closeButtonTexture = ModEntry.ModHelper.Content.Load <Texture2D>("Assets/CloseButton.png", ContentSource.ModFolder);

            // get the top left position for the background asset (pass it *4 as that's the scale)
            Vector2 backgroundTopLeftPosition = Utility.getTopLeftPositionForCenteringOnScreen(NoteBackgroundTexture.Width * 4, NoteBackgroundTexture.Height * 4);

            this.xPositionOnScreen = (int)backgroundTopLeftPosition.X;
            this.yPositionOnScreen = (int)backgroundTopLeftPosition.Y;

            this.upperRightCloseButton = new ClickableTextureComponent(
                bounds: new Rectangle(this.xPositionOnScreen + NoteBackgroundTexture.Width * 4 - 32, this.yPositionOnScreen - 24, 48, 48),
                texture: closeButtonTexture,
                sourceRect: new Rectangle(0, 0, 12, 12),
                scale: 4f
                );

            Vector2 acceptQuestButtonDimensions = Game1.dialogueFont.MeasureString("Accept Quest") + new Vector2(24);

            AcceptQuestButton = new ClickableComponent(
                bounds: new Rectangle(
                    x: this.xPositionOnScreen + (NoteBackgroundTexture.Width / 2 * 4) - ((int)acceptQuestButtonDimensions.X / 2),
                    y: this.yPositionOnScreen + (NoteBackgroundTexture.Height * 4) - (int)((int)acceptQuestButtonDimensions.Y / 1.5),
                    width: (int)acceptQuestButtonDimensions.X,
                    height: (int)acceptQuestButtonDimensions.Y
                    ),
                name: ""
                );

            QuestTitleTextDimensions = Game1.dialogueFont.MeasureString(Quest.Title);
        }