activity_sdk_pack_composer_validate.cpp 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #include <algorithm>
  2. #include <array>
  3. #include <limits>
  4. #include "activity_sdk_pack_composer_internal.h"
  5. namespace sunrise::client::content::activity::sdk_generation::pack_composer::detail {
  6. /** Checks the retained activity and panel tables at the public composition boundary. */
  7. bool validate_storage(const Inputs&,
  8. const PreparedRanges& prepared,
  9. const Storage& value) noexcept {
  10. const std::array<std::size_t, format::kSectionCount> counts{
  11. value.strings.size(),
  12. value.activities.size(),
  13. value.scenarios.size(),
  14. value.bubbles.size(),
  15. value.states.size(),
  16. value.objects.size(),
  17. value.occurrences.size(),
  18. value.slots.size(),
  19. value.texts.size(),
  20. value.capabilities.size(),
  21. value.gates.size(),
  22. value.refusals.size(),
  23. value.actorClasses.size(),
  24. value.rsatDescriptors.size(),
  25. value.rsatSchemas.size(),
  26. value.rsatFields.size(),
  27. value.squads.size(),
  28. value.squadMembers.size(),
  29. value.squadAnchors.size(),
  30. value.authoredSceneResources.size(),
  31. value.authoredSceneSquadEdges.size(),
  32. value.taskTargets.size(),
  33. value.dialogueCueTexts.size(),
  34. value.directiveElements.size(),
  35. value.activityBindingTags.size(),
  36. value.activityBindingLocators.size(),
  37. value.behaviorPrograms.size(),
  38. value.behaviorInputs.size(),
  39. value.behaviorChannelWrites.size(),
  40. value.behaviorOwners.size(),
  41. value.behaviorActivityBindings.size(),
  42. value.actorMessageSchemas.size(),
  43. value.actorCommandDefinitions.size(),
  44. value.actorBehaviorProfiles.size(),
  45. value.simulationEventDefinitions.size(),
  46. value.runtimeSchemas.size(),
  47. value.runtimeFields.size(),
  48. value.sobjectRsats.size(),
  49. value.sobjectRsatDescriptors.size(),
  50. value.entityTypeDefinitions.size(),
  51. value.sobjectRsatFieldBindings.size(),
  52. value.runtimeTypeDefinitions.size(),
  53. value.actorStateNames.size(),
  54. value.actorSequenceTables.size(),
  55. value.actorSequenceEntries.size(),
  56. value.actorSequenceBindings.size(),
  57. value.dialogueCues.size(),
  58. value.combatObjectiveGroups.size(),
  59. value.actorAbilities.size(),
  60. value.actorAbilityTargets.size(),
  61. value.authoredSceneEventKeys.size(),
  62. };
  63. const bool bounded = std::all_of(counts.begin(), counts.end(), [](std::size_t count) {
  64. return count <= (std::numeric_limits<std::uint32_t>::max)();
  65. });
  66. return bounded && !value.strings.empty() && !value.activities.empty()
  67. && !value.actorMessageSchemas.empty() && !value.actorCommandDefinitions.empty()
  68. && value.actorBehaviorProfiles.size() == value.actorClasses.size()
  69. && !value.simulationEventDefinitions.empty() && !value.runtimeSchemas.empty()
  70. && !value.runtimeFields.empty() && !value.sobjectRsats.empty()
  71. && !value.entityTypeDefinitions.empty()
  72. && value.sobjectRsatFieldBindings.size() == value.rsatFields.size()
  73. && !value.runtimeTypeDefinitions.empty()
  74. && prepared.scenarioBubbles.size() == value.scenarios.size()
  75. && prepared.scenarioStates.size() == value.scenarios.size()
  76. && prepared.scenarioOccurrences.size() == value.scenarios.size()
  77. && prepared.bubbleStates.size() == value.bubbles.size()
  78. && prepared.objectSlots.size() == value.objects.size();
  79. }
  80. } // namespace sunrise::client::content::activity::sdk_generation::pack_composer::detail