2
0

QuestRequirement.cs 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. //-----------------------------------------------------------------------------
  2. // QuestRequirement.cs
  3. //
  4. // Microsoft XNA Community Game Platform
  5. // Copyright (C) Microsoft Corporation. All rights reserved.
  6. //-----------------------------------------------------------------------------
  7. using System;
  8. using Microsoft.Xna.Framework.Content;
  9. namespace RolePlaying.Data
  10. {
  11. /// <summary>
  12. /// A requirement for a particular number of a piece of content.
  13. /// </summary>
  14. /// <remarks>Used to track gear acquired and monsters killed.</remarks>
  15. public class QuestRequirement<T> : ContentEntry<T> where T : ContentObject
  16. {
  17. /// <summary>
  18. /// The quantity of the content entry that has been acquired.
  19. /// </summary>
  20. private int completedCount;
  21. /// <summary>
  22. /// The quantity of the content entry that has been acquired.
  23. /// </summary>
  24. [ContentSerializerIgnore]
  25. public int CompletedCount
  26. {
  27. get { return completedCount; }
  28. set { completedCount = value; }
  29. }
  30. /// <summary>
  31. /// Reads a QuestRequirement object from the content pipeline.
  32. /// </summary>
  33. public class QuestRequirementReader : ContentTypeReader<QuestRequirement<T>>
  34. {
  35. /// <summary>
  36. /// Reads a QuestRequirement object from the content pipeline.
  37. /// </summary>
  38. protected override QuestRequirement<T> Read(ContentReader input,
  39. QuestRequirement<T> existingInstance)
  40. {
  41. QuestRequirement<T> requirement = existingInstance;
  42. if (requirement == null)
  43. {
  44. requirement = new QuestRequirement<T>();
  45. }
  46. input.ReadRawObject<ContentEntry<T>>(requirement as ContentEntry<T>);
  47. if (typeof(T) == typeof(Gear))
  48. {
  49. requirement.Content = input.ContentManager.Load<T>(
  50. System.IO.Path.Combine("Gear", requirement.ContentName));
  51. }
  52. else if (typeof(T) == typeof(Monster))
  53. {
  54. requirement.Content = input.ContentManager.Load<T>(
  55. System.IO.Path.Combine(@"Characters\Monsters",
  56. requirement.ContentName));
  57. }
  58. return requirement;
  59. }
  60. }
  61. }
  62. }