18 if (!kHasVanillaFingerprints || room_id < 0 || room_id >= 0x128) {
21 const int begin = kVanillaFingerprintOffsets[room_id];
22 const int end = kVanillaFingerprintOffsets[room_id + 1];
23 return std::vector<uint16_t>(kVanillaFingerprintHashes + begin,
24 kVanillaFingerprintHashes + end);
28 const std::vector<std::vector<uint16_t>>& fingerprints,
29 const std::string& source_note) {
32 "// Generated by z3ed dungeon-room-census --emit-vanilla-fingerprints.\n";
33 out +=
"// Source: " + source_note +
"\n";
35 "// One-way 16-bit object hashes; see "
36 "room_census_vanilla_fingerprints.h.\n";
37 out +=
"// clang-format off\n";
38 out +=
"constexpr bool kHasVanillaFingerprints = true;\n";
39 out +=
"constexpr uint16_t kVanillaFingerprintHashes[] = {\n";
41 std::vector<int> offsets;
42 for (
const auto& room : fingerprints) {
43 offsets.push_back(total);
44 for (
size_t i = 0; i < room.size(); ++i) {
45 if (total % 12 == 0) {
48 out += absl::StrFormat(
" 0x%04X,", room[i]);
50 if (total % 12 == 0) {
55 offsets.push_back(total);
56 if (total % 12 != 0) {
63 out += absl::StrFormat(
"constexpr int kVanillaFingerprintOffsets[%d] = {\n",
64 static_cast<int>(offsets.size()));
65 for (
size_t i = 0; i < offsets.size(); ++i) {
69 out += absl::StrFormat(
" %d,", offsets[i]);
74 if (offsets.size() % 12 != 0) {
77 out +=
"};\n// clang-format on\n";