private static string getSpecialOrderDetails(SpecialOrder order) { int daysLeft = order.GetDaysLeft(); string description = order.GetDescription(); string objectiveDescription = ""; string name = order.GetName(); int moneyReward = order.GetMoneyReward(); // Get each objectives for (int i = 0; i < order.GetObjectiveDescriptions().Count; i++) { objectiveDescription += order.GetObjectiveDescriptions()[i] + ", \n"; } string toReturn = $"{name}\n\tDescription:{description}\n\tObjectives: {objectiveDescription}"; if (order.IsTimedQuest()) { toReturn = $"{toReturn}\n\tTime: {daysLeft} days"; } if (order.HasMoneyReward()) { toReturn = $"{toReturn}\n\tReward: {moneyReward}g"; } return(toReturn); }
public void DrawQuestDetails(SpriteBatch b, SpecialOrder order, int x) { bool dehighlight = false; bool found_match = false; foreach (SpecialOrder active_order in Game1.player.team.specialOrders) { if (active_order.questState.Value != 0) { continue; } foreach (SpecialOrder available_order in Game1.player.team.availableSpecialOrders) { if (!(available_order.orderType.Value != GetOrderType()) && active_order.questKey.Value == available_order.questKey.Value) { if (order.questKey != active_order.questKey) { dehighlight = true; } found_match = true; break; } } if (found_match) { break; } } if (!found_match && Game1.player.team.acceptedSpecialOrderTypes.Contains(GetOrderType())) { dehighlight = true; } SpriteFont font = ((LocalizedContentManager.CurrentLanguageCode == LocalizedContentManager.LanguageCode.ko) ? Game1.smallFont : Game1.dialogueFont); Color font_color = Game1.textColor; float shadow_intensity = 0.5f; float graphic_alpha = 1f; if (dehighlight) { font_color = Game1.textColor * 0.25f; shadow_intensity = 0f; graphic_alpha = 0.25f; } if (boardType == "Qi") { font_color = Color.White; shadow_intensity = 0f; if (dehighlight) { font_color = Color.White * 0.25f; graphic_alpha = 0.25f; } } int header_y = yPositionOnScreen + 128; string order_name = order.GetName(); KeyValuePair <Texture2D, Rectangle>?drawn_portrait = GetPortraitForRequester(order.requester.Value); if (drawn_portrait.HasValue) { Utility.drawWithShadow(b, drawn_portrait.Value.Key, new Vector2(x, header_y), drawn_portrait.Value.Value, Color.White * graphic_alpha, 0f, Vector2.Zero, 4f, flipped: false, -1f, -1, -1, shadow_intensity * 0.6f); } Utility.drawTextWithShadow(b, order_name, font, new Vector2((float)(x + 256) - font.MeasureString(order_name).X / 2f, header_y), font_color, 1f, -1f, -1, -1, shadow_intensity); string raw_description = order.GetDescription(); string description = Game1.parseText(raw_description, font, 512); float height = font.MeasureString(description).Y; float scale = 1f; float max_height = 400f; while (height > max_height && !(scale <= 0.25f)) { scale -= 0.05f; description = Game1.parseText(raw_description, font, (int)(512f / scale)); height = font.MeasureString(description).Y; } Utility.drawTextWithShadow(b, description, font, new Vector2(x, yPositionOnScreen + 192), font_color, scale, -1f, -1, -1, shadow_intensity); if (dehighlight) { return; } int days_left = order.GetDaysLeft(); int due_date_y_position = yPositionOnScreen + 576; Utility.drawWithShadow(b, Game1.mouseCursors, new Vector2(x, due_date_y_position), new Rectangle(410, 501, 9, 9), Color.White, 0f, Vector2.Zero, 4f, flipped: false, 0.99f, -1, -1, shadow_intensity * 0.6f); Utility.drawTextWithShadow(b, Game1.parseText((days_left > 1) ? Game1.content.LoadString("Strings\\StringsFromCSFiles:QuestLog.cs.11374", days_left) : Game1.content.LoadString("Strings\\StringsFromCSFiles:QuestLog.cs.11375", days_left), Game1.dialogueFont, width - 128), Game1.dialogueFont, new Vector2(x + 48, due_date_y_position), font_color, 1f, -1f, -1, -1, shadow_intensity); if (!(boardType == "Qi")) { return; } int reward = -1; GemsReward gems = null; foreach (OrderReward r in order.rewards) { if (r is GemsReward) { gems = r as GemsReward; break; } } if (gems != null) { reward = gems.amount; } if (reward != -1) { Utility.drawWithShadow(b, Game1.objectSpriteSheet, new Vector2((float)x + 512f / scale - Game1.dialogueFont.MeasureString(string.Concat(reward)).X - 12f - 60f, due_date_y_position - 8), new Rectangle(288, 561, 15, 15), Color.White, 0f, Vector2.Zero, 4f, flipped: false, 0.99f, -1, -1, shadow_intensity * 0.6f); Utility.drawTextWithShadow(b, Game1.parseText(string.Concat(reward), Game1.dialogueFont, width - 128), Game1.dialogueFont, new Vector2((float)x + 512f / scale - Game1.dialogueFont.MeasureString(string.Concat(reward)).X - 4f, due_date_y_position), font_color, 1f, -1f, -1, -1, shadow_intensity); Utility.drawTextWithShadow(b, Game1.parseText(Utility.loadStringShort("StringsFromCSFiles", "QuestLog.cs.11376"), Game1.dialogueFont, width - 128), Game1.dialogueFont, new Vector2((float)x + 512f / scale - Game1.dialogueFont.MeasureString(Utility.loadStringShort("StringsFromCSFiles", "QuestLog.cs.11376")).X + 8f, due_date_y_position - 60), font_color * 0.6f, 1f, -1f, -1, -1, shadow_intensity); } }
public override void receiveLeftClick(int x, int y, bool playSound = true) { base.receiveLeftClick(x, y, playSound); if (acceptLeftQuestButton.visible && acceptLeftQuestButton.containsPoint(x, y)) { Game1.playSound("newArtifact"); if (leftOrder != null) { Game1.player.team.acceptedSpecialOrderTypes.Add(GetOrderType()); SpecialOrder order2 = leftOrder; Game1.player.team.specialOrders.Add(SpecialOrder.GetSpecialOrder(order2.questKey.Value, order2.generationSeed)); Game1.multiplayer.globalChatInfoMessage("AcceptedSpecialOrder", Game1.player.Name, order2.GetName()); UpdateButtons(); } } else if (acceptRightQuestButton.visible && acceptRightQuestButton.containsPoint(x, y)) { Game1.playSound("newArtifact"); if (rightOrder != null) { Game1.player.team.acceptedSpecialOrderTypes.Add(GetOrderType()); SpecialOrder order = rightOrder; Game1.player.team.specialOrders.Add(SpecialOrder.GetSpecialOrder(order.questKey.Value, order.generationSeed)); Game1.multiplayer.globalChatInfoMessage("AcceptedSpecialOrder", Game1.player.Name, order.GetName()); UpdateButtons(); } } }