Parts.h 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. /*-------------------------------------------------------------------------
  2. * Parts.h
  3. *
  4. * Common parts definition for client/server
  5. *
  6. * Owner:
  7. *
  8. * Copyright 1986-1998 Microsoft Corporation, All Rights Reserved
  9. *-----------------------------------------------------------------------*/
  10. // Many of the fed messages depend on these structures, so FEDSRVVER in
  11. // messages.h must be incremented for any structure change in this file
  12. // as well as for any change to the messages in messages.h
  13. // in order to be flexible, we need macros to make sure all part types handle
  14. // the base part info the same
  15. #ifdef NEVER
  16. // PART_VAR_PARMS is used when creating a pfm for the var parms. Must be first var parm
  17. #define PART_VAR_PARMS(_PartType) \
  18. FM_VAR_PARM(_PartType##_FileModel, CB_ZTS) \
  19. FM_VAR_PARM(_PartType##_FileIcon, CB_ZTS) \
  20. FM_VAR_PARM(_PartType##_FileTexture, CB_ZTS) \
  21. FM_VAR_PARM(_PartType##_Description, CB_ZTS)
  22. #endif
  23. //NYI hack for time to build
  24. #define SET_PARTS(partstruct, _PartType) \
  25. (partstruct).price = _PartType##_Price; \
  26. (partstruct).timeToBuild = _PartType##_TimeToBuild; \
  27. (partstruct).groupID = _PartType##_GroupID; \
  28. (partstruct).partID = _PartType##_PartID; \
  29. (partstruct).successorPartID = _PartType##_SuccessorID; \
  30. (partstruct).mass = _PartType##_Mass; \
  31. (partstruct).equipmentType = (EquipmentType) _PartType##_PartTypeID; \
  32. (partstruct).signature = float(_PartType##_Signature) / 100.f; \
  33. (partstruct).partMask = _PartType##_PartMask; \
  34. (partstruct).ttbmRequired.ClearAll(); \
  35. (partstruct).ttbmEffects.ClearAll(); \
  36. SQLSTRCPY((partstruct).description, _PartType##_Description); \
  37. SQLSTRCPY((partstruct).name, _PartType##_Name); \
  38. SQLSTRCPY((partstruct).modelName, _PartType##_FileModel); \
  39. SQLSTRCPY((partstruct).iconName, _PartType##_FileIcon); \
  40. TechsListToBits(_PartType##_TechBitsReqd, (partstruct).ttbmRequired); \
  41. TechsListToBits(_PartType##_TechBitsEffect, (partstruct).ttbmEffects); \
  42. assert ((partstruct).ttbmEffects <= (partstruct).ttbmRequired); \
  43. SQLSTRCPY((partstruct).inventoryLineMDL, _PartType##_InventoryLineMDL);
  44. //NYI hack for time to build
  45. #define SET_EXPEND(expendstruct, EXPENDTYPE) \
  46. SQLSTRCPY((expendstruct).modelName, EXPENDTYPE##_ModelInstance); \
  47. SQLSTRCPY((expendstruct).iconName, EXPENDTYPE##_IconInstance); \
  48. SQLSTRCPY((expendstruct).textureName, EXPENDTYPE##_TextureInstance); \
  49. SQLSTRCPY((expendstruct).launcherDef.modelName, EXPENDTYPE##_Model); \
  50. SQLSTRCPY((expendstruct).launcherDef.iconName, EXPENDTYPE##_Icon); \
  51. SQLSTRCPY((expendstruct).launcherDef.name, EXPENDTYPE##_Name); \
  52. SQLSTRCPY((expendstruct).launcherDef.description, EXPENDTYPE##_Description); \
  53. (expendstruct).launcherDef.ttbmRequired.ClearAll(); \
  54. (expendstruct).launcherDef.ttbmEffects.ClearAll(); \
  55. TechsListToBits(EXPENDTYPE##_TechBitsReqd, (expendstruct).launcherDef.ttbmRequired); \
  56. TechsListToBits(EXPENDTYPE##_TechBitsEffect, (expendstruct).launcherDef.ttbmEffects); \
  57. assert ((expendstruct).launcherDef.ttbmEffects <= (expendstruct).launcherDef.ttbmRequired); \
  58. (expendstruct).radius = EXPENDTYPE##_Radius; \
  59. (expendstruct).rotation = EXPENDTYPE##_Rotation; \
  60. (expendstruct).color.r = EXPENDTYPE##_PercentRed / 100.0f; \
  61. (expendstruct).color.g = EXPENDTYPE##_PercentGreen / 100.0f; \
  62. (expendstruct).color.b = EXPENDTYPE##_PercentBlue / 100.0f; \
  63. (expendstruct).color.a = EXPENDTYPE##_PercentAlpha / 100.0f; \
  64. (expendstruct).lifespan = EXPENDTYPE##_LifeSpan; \
  65. (expendstruct).loadTime = EXPENDTYPE##_LoadTime; \
  66. (expendstruct).signature = float(EXPENDTYPE##_SignatureInstance) / 100.0f; \
  67. (expendstruct).hitPoints = EXPENDTYPE##_HitPoints; \
  68. (expendstruct).defenseType = EXPENDTYPE##_DefenseType; \
  69. (expendstruct).expendabletypeID = EXPENDTYPE##_ExpendableID; \
  70. (expendstruct).launcherDef.mass = EXPENDTYPE##_Mass; \
  71. (expendstruct).launcherDef.signature = float(EXPENDTYPE##_SignatureShip) / 100.0f; \
  72. (expendstruct).launcherDef.price = EXPENDTYPE##_Price; \
  73. (expendstruct).launcherDef.timeToBuild = EXPENDTYPE##_TimeToBuild; \
  74. (expendstruct).launcherDef.groupID = EXPENDTYPE##_GroupID; \
  75. (expendstruct).launcherDef.partMask = EXPENDTYPE##_PartMask; \
  76. (expendstruct).launcherDef.expendableSize = EXPENDTYPE##_ExpendableSize; \
  77. (expendstruct).eabmCapabilities = EXPENDTYPE##_Capabilities;
  78. // Use this to actually reference existing var-length part props
  79. #define FM_VARPART_REF(PFM, NAME) ((PFM)->part.ib##NAME ? (char*)(PFM) + (PFM)->part.ib##NAME : NULL)
  80. /*
  81. struct Part // only used as base type
  82. {
  83. char szName [c_cbName];
  84. char szFileModel [c_cbFileName];
  85. char szFileTexture[c_cbFileName];
  86. char szDescription[c_cbDescription];
  87. BitMask maskAvailability; //Test against sideID
  88. Money price;
  89. PartID partID;
  90. EquipmentType equipmentType; // compare this with a EquipmentType enum
  91. short mass;
  92. HitPoints hitpoints;
  93. Capacity capDrain; // power, space, whatever we end up calling it
  94. };
  95. */