QuestRequirement.cs 2.3 KB

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