TheaterTypes.cs 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. //
  2. // Copyright 2020 Electronic Arts Inc.
  3. //
  4. // The Command & Conquer Map Editor and corresponding source code is free
  5. // software: you can redistribute it and/or modify it under the terms of
  6. // the GNU General Public License as published by the Free Software Foundation,
  7. // either version 3 of the License, or (at your option) any later version.
  8. // The Command & Conquer Map Editor and corresponding source code is distributed
  9. // in the hope that it will be useful, but with permitted additional restrictions
  10. // under Section 7 of the GPL. See the GNU General Public License in LICENSE.TXT
  11. // distributed with this program. You should have received a copy of the
  12. // GNU General Public License along with permitted additional restrictions
  13. // with this program. If not, see https://github.com/electronicarts/CnC_Remastered_Collection
  14. using MobiusEditor.Model;
  15. using MobiusEditor.Utility;
  16. using System.Collections.Generic;
  17. using System.Linq;
  18. using System.Reflection;
  19. namespace MobiusEditor.RedAlert
  20. {
  21. public static class TheaterTypes
  22. {
  23. private static readonly IEnumerable<string> commonTilesets = new string[] { "RA_Units", "RA_Structures", "RA_VFX", "Common_VFX" };
  24. public static readonly TheaterType Temperate = new TheaterType(0, "temperate", "RA_Terrain_Temperate".Yield().Concat(commonTilesets));
  25. public static readonly TheaterType Snow = new TheaterType(1, "snow", "RA_Terrain_Snow".Yield().Concat(commonTilesets));
  26. public static readonly TheaterType Interior = new TheaterType(2, "interior", "RA_Terrain_Interior".Yield().Concat(commonTilesets));
  27. private static TheaterType[] Types;
  28. static TheaterTypes()
  29. {
  30. Types =
  31. (from field in typeof(TheaterTypes).GetFields(BindingFlags.Static | BindingFlags.Public)
  32. where field.IsInitOnly && typeof(TheaterType).IsAssignableFrom(field.FieldType)
  33. select field.GetValue(null) as TheaterType).ToArray();
  34. }
  35. public static IEnumerable<TheaterType> GetTypes()
  36. {
  37. return Types;
  38. }
  39. }
  40. }