_squad_specific_armor.hpp 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. //Squad Specific Armours 1-1, 1-2 etc.
  2. #ifndef SQD_SPECIFIC_MACROS
  3. #define SQD_SPECIFIC_MACROS
  4. #define SQD_SPECIFIC_MACRO_QUOTE(a) #a
  5. #define SQD_SPECIFIC_MACRO_CONCAT(a,b) a##b
  6. #define SQD_SPECIFIC_MACRO_CONCAT_3(a,b,c) SQD_SPECIFIC_MACRO_CONCAT(a,SQD_SPECIFIC_MACRO_CONCAT(b,c))
  7. #define SQD_SPECIFIC_MACRO_CONCAT_4(a,b,c,d) SQD_SPECIFIC_MACRO_CONCAT(a,SQD_SPECIFIC_MACRO_CONCAT(b,SQD_SPECIFIC_MACRO_CONCAT(c,d)))
  8. #define SQD_SPECIFIC_MACRO_CONCAT_8(a,b,c,d,e,f,g,h) SQD_SPECIFIC_MACRO_CONCAT(a,SQD_SPECIFIC_MACRO_CONCAT(b,SQD_SPECIFIC_MACRO_CONCAT(c,SQD_SPECIFIC_MACRO_CONCAT(d,SQD_SPECIFIC_MACRO_CONCAT(e,SQD_SPECIFIC_MACRO_CONCAT(f,SQD_SPECIFIC_MACRO_CONCAT(g,h)))))))
  9. #define SQD_SPECIFIC_MACRO_ARR_2(a,b) a,b
  10. #define SQD_SPECIFIC_MACRO_ARR_3(a,b,c) a,b,c
  11. #define SQD_SPECIFIC_MACRO_ARR_4(a,b,c,d) a,b,c,d
  12. #define SQD_SPECIFIC_MACRO_ARR_5(a,b,c,d,e) a,b,c,d,e
  13. #define SQD_SPECIFIC_NAME(rank,platoon,squad) SQD_SPECIFIC_MACRO_CONCAT_4(rank,_,platoon,squad)
  14. #define SQD_SPECIFIC_SQUAD_DISPLAY(platoon,squad) SQD_SPECIFIC_MACRO_CONCAT_3(platoon,-,squad)
  15. #define SQD_SPECIFIC_UNIFORM_SINGLE_CLASSDEF(role,rank,inDisplayName,displayRank,platoon,squad) \
  16. class macro_new_uniform_class(role,SQD_SPECIFIC_NAME(rank,platoon,squad)): macro_new_uniform_class(role,rank) \
  17. { \
  18. displayName = MACRO_QUOTE([501st] inDisplayName (displayRank) [SQD_SPECIFIC_SQUAD_DISPLAY(platoon,squad)]); \
  19. class ItemInfo: ItemInfo \
  20. { \
  21. uniformClass = macro_new_uniform_skin_class(role,SQD_SPECIFIC_NAME(rank,platoon,squad)); \
  22. }; \
  23. }
  24. #define SQD_SPECIFIC_UNIFORM_PLT_CLASSDEF(role,rank,displayName,displayRank,platoon) \
  25. SQD_SPECIFIC_UNIFORM_SINGLE_CLASSDEF(role,rank,displayName,displayRank,platoon,1); \
  26. SQD_SPECIFIC_UNIFORM_SINGLE_CLASSDEF(role,rank,displayName,displayRank,platoon,2); \
  27. SQD_SPECIFIC_UNIFORM_SINGLE_CLASSDEF(role,rank,displayName,displayRank,platoon,3)
  28. #define SQD_SPECIFIC_UNIFORM_COMPANY_CLASSDEF(role,rank,displayName,displayRank) \
  29. SQD_SPECIFIC_UNIFORM_PLT_CLASSDEF(role,rank,displayName,displayRank,1); \
  30. SQD_SPECIFIC_UNIFORM_PLT_CLASSDEF(role,rank,displayName,displayRank,2); \
  31. SQD_SPECIFIC_UNIFORM_PLT_CLASSDEF(role,rank,displayName,displayRank,3)
  32. #define SQD_SPECIFIC_SKIN_TEXTURE_BASE_PATH(texPath) SQD_SPECIFIC_MACRO_CONCAT(texPath,\Republic\clones\Infantry)
  33. #define SQD_SPECIFIC_SKIN_TEXTURE_UPPER_NAME(prefix,squad,platoon) SQD_SPECIFIC_MACRO_CONCAT_8(prefix,_,platoon,_,squad,_armor_,upper,.paa)
  34. #define SQD_SPECIFIC_SKIN_TEXTURE_LOWER_NAME(prefix) SQD_SPECIFIC_MACRO_CONCAT(prefix,_armor_lower.paa)
  35. #define SQD_SPECIFIC_SKIN_TEXTURE_UPPER(texPath,prefix,suffix,squad,platoon) SQD_SPECIFIC_MACRO_CONCAT_3(SQD_SPECIFIC_SKIN_TEXTURE_BASE_PATH(texPath),\,SQD_SPECIFIC_SKIN_TEXTURE_UPPER_NAME(prefix,squad,platoon))
  36. #define SQD_SPECIFIC_SKIN_TEXTURE_LOWER(texPath,prefix) SQD_SPECIFIC_MACRO_CONCAT_3(SQD_SPECIFIC_SKIN_TEXTURE_BASE_PATH(texPath),\,SQD_SPECIFIC_SKIN_TEXTURE_LOWER_NAME(prefix))
  37. #define SQD_SPECIFIC_TEXTURES(texPath,rank,rankRole,squad,platoon) { SQD_SPECIFIC_MACRO_ARR_2(SQD_SPECIFIC_SKIN_TEXTURE_UPPER(texPath,rankRole,upper,squad,platoon),SQD_SPECIFIC_SKIN_TEXTURE_LOWER(texPath,rank)) }
  38. //RankRole refers to the mos, its used to determine the upper chestpiece, for GI rank and rankRole should be the same
  39. #define SQD_SPECIFIC_SKIN_SINGLE_CLASSDEF(role,rank,rankRole,platoon,squad,textureBasePath) \
  40. class macro_new_uniform_skin_class(role,SQD_SPECIFIC_NAME(rank,platoon,squad)): macro_new_uniform_skin_class(501_inf,recruit) \
  41. { \
  42. hiddenSelectionsTextures[] = SQD_SPECIFIC_TEXTURES(textureBasePath,rank,rankRole,squad,platoon); }
  43. #define SQD_SPECIFIC_SKIN_PLT_CLASSDEF(role,rank,rankRole,platoon,textureBasePath) \
  44. SQD_SPECIFIC_SKIN_SINGLE_CLASSDEF(role,rank,rankRole,platoon,1,textureBasePath); \
  45. SQD_SPECIFIC_SKIN_SINGLE_CLASSDEF(role,rank,rankRole,platoon,2,textureBasePath); \
  46. SQD_SPECIFIC_SKIN_SINGLE_CLASSDEF(role,rank,rankRole,platoon,3,textureBasePath)
  47. #define SQD_SPECIFIC_SKIN_COMPANY_CLASSDEF(role,rank,rankRole,textureBasePath) \
  48. SQD_SPECIFIC_SKIN_PLT_CLASSDEF(role,rank,rankRole,1,textureBasePath); \
  49. SQD_SPECIFIC_SKIN_PLT_CLASSDEF(role,rank,rankRole,2,textureBasePath); \
  50. SQD_SPECIFIC_SKIN_PLT_CLASSDEF(role,rank,rankRole,3,textureBasePath)
  51. #endif