QuestRequirement.cs 2.6 KB

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