From 532b35c5bff29f3e499f2c5b737e4eb16e5cb5d8 Mon Sep 17 00:00:00 2001 From: Eric Wasylishen Date: Thu, 7 Oct 2021 19:59:38 -0600 Subject: [PATCH] qbsp: insert new epairs at the end of an entity --- qbsp/map.cc | 19 ++++++++++--------- testmaps/qbsp-vis.sha256sum | 20 ++++++++++---------- testmaps/qbsp.sha256sum | 20 ++++++++++---------- 3 files changed, 30 insertions(+), 29 deletions(-) diff --git a/qbsp/map.cc b/qbsp/map.cc index 6aca436a..6c6cb3b4 100644 --- a/qbsp/map.cc +++ b/qbsp/map.cc @@ -2225,13 +2225,8 @@ ConvertEntity(FILE *f, const mapentity_t *entity, const conversion_t format) { fprintf(f, "{\n"); - // put the epairs in a temporary list to reverse the order, so we can print them in the same order as the .MAP file - std::list> epairs; - for (const epair_t *epair = entity->epairs; epair; epair = epair->next) { - epairs.push_front(std::make_pair(std::string(epair->key), std::string(epair->value))); - } - for (const auto &epair : epairs) { - fprintf(f, "\"%s\" \"%s\"\n", epair.first.c_str(), epair.second.c_str()); + for (epair_t *ep = entity->epairs; ep; ep = ep->next) { + fprintf(f, "\"%s\" \"%s\"\n", ep->key, ep->value); } for (int i=0; inummapbrushes; i++) { @@ -2322,9 +2317,15 @@ SetKeyValue(mapentity_t *entity, const char *key, const char *value) ep->value = copystring(value); return; } + + // insert a new one at the end + epair_t **next_ptr = &entity->epairs; + while (*next_ptr) { + next_ptr = &(*next_ptr)->next; + } + ep = (epair_t *)AllocMem(OTHER, sizeof(epair_t), true); - ep->next = entity->epairs; - entity->epairs = ep; + *next_ptr = ep; ep->key = copystring(key); ep->value = copystring(value); } diff --git a/testmaps/qbsp-vis.sha256sum b/testmaps/qbsp-vis.sha256sum index 05abf41f..3476fa8c 100644 --- a/testmaps/qbsp-vis.sha256sum +++ b/testmaps/qbsp-vis.sha256sum @@ -1,12 +1,12 @@ 415d75b92b48e753b3ffc462b9e002a6c4e659481e8cc7609b268d03d0985029 *qbsp_func_detail.bsp c9524f3858d9df55f612fb4b75670434712c2ed58a37e8534bf48f82eb6f81db *qbsp_func_detail_illusionary_plus_water.bsp -e6b67b2cc464e000896dc547b19b77074bbcb029fd9e39546a2a56da2eb74894 *e1m1-bsp29.bsp -9d15751394e7192c8f0fb5e9b832aca9c04bcf97213935e37680273cb90bcfe0 *e1m1-bsp2.bsp -97e0e9fa25ab257a0ea610964d821bee0cbd55dddd4c8fd60bffe9a11de1739d *e1m1-2psb.bsp -b617f77a387efe4c6eb398f254d5b72e85fb4b377f0512ec65232092ca4dc30b *e1m1-hexen2.bsp -cde34a66f76fc4dd7cdf36f43b68a7256f80f1083ef50822ef1b60484d4985ab *e1m1-hexen2-bsp2.bsp -8f038b13625aa708daea90a0a63b5481d3314ea603572165dc79243d14ba8034 *e1m1-hexen2-2psb.bsp -bd4ecbfb7ca9002fc54d6c42a54d120ec67e9638f7329a7d0465afcfeb30dc88 *e1m1-hlbsp.bsp -48fc09913eec1ea1c09edf651824b3fd63a55274d1b3f54e39aa537b93132959 *e1m1-bspxbrushes.bsp -e5cd1c62ddc896d8e0363877df05ca41e305818c93044e7952738a99cfc5e5a1 *e1m1-bsp29-onlyents.bsp -86e8990f4ba8d0fa5bb8f4acd89bdf321db2896019e26903fb5c321b3eed6b62 *qbspfeatures.bsp +c3e0cfd0388a730835a73eb33155a454e459d2173e4b2e4df3825a45e1d9b34e *e1m1-bsp29.bsp +6c1280a4db77acd2076a47cf918f1ef7d60e6646bfb995373c122fe74522d495 *e1m1-bsp2.bsp +c73b5d7c4a769fc49ef84f7dd5e1c0e241526ba38ed3c65995f0addbf5052bb1 *e1m1-2psb.bsp +20cda0460d56039fcabb23507265e82fea40fbb7c08191e6df4a8818ca1d2b1e *e1m1-hexen2.bsp +68cd868446524fb058e5f7f82658023e7d8b8424570dd10d87df806f1f8c8473 *e1m1-hexen2-bsp2.bsp +057bf27e450eee6f1b66ceee7ce8a31f4a63e15729a6c3077798f20ef6e4c964 *e1m1-hexen2-2psb.bsp +0a7bf1e685175cad414a815d91d7f662cd659d480ae48ed483bfe944b2951789 *e1m1-hlbsp.bsp +54ac6402cc0e8854aa21258cb748599c74e72d2f772c69528cf91005ba6150c7 *e1m1-bspxbrushes.bsp +ab153235b6a5e1b08191445b48e6f0d609c3be48dddb661a16cb41a1bc63bc38 *e1m1-bsp29-onlyents.bsp +221ef0138b1caae18ab20196af30b37cbd2c9358994e2cff212f91442e21c39d *qbspfeatures.bsp diff --git a/testmaps/qbsp.sha256sum b/testmaps/qbsp.sha256sum index cb335440..5c837b7a 100644 --- a/testmaps/qbsp.sha256sum +++ b/testmaps/qbsp.sha256sum @@ -1,15 +1,15 @@ 6b27857f7fca00c0412998db914f19f1e0c1408dbbd8800230589a39c67b94bb *qbsp_func_detail.bsp 9c316cfa2587aba74925a96883bc5553490daf14ad3ed31a2669cfd7a53036a2 *qbsp_func_detail_illusionary_plus_water.bsp -ff6481312cecce94f5702eef01e296d23b44cce0649a50a2c5ef88d18bd4d937 *e1m1-bsp29.bsp -ed6e532713ac624d046514d2dac54bb0d039298bcd5440c8024b17182d912365 *e1m1-bsp2.bsp -f5e6594ca62d9cb84463537d6c7fd688d9ed770820689e8ce116ebf4cd694e3c *e1m1-2psb.bsp -f9ec3608af2116ee0feca5cfac41f2052ad8881a094e2a274419f6ed35b974fd *e1m1-hexen2.bsp -2bbf7fc86a055fddcf98fbb160c790c5d09f504a45832792ee89b2d0846d28be *e1m1-hexen2-bsp2.bsp -529b542a6fb7e0874e84e815ed00ac9e90d9e8e1c4c46b4f6fa3114ca2da8fae *e1m1-hexen2-2psb.bsp -fe1ed71ea322fbdb4a94522410271afb53e8b11be95cd87d20622598bfd528e3 *e1m1-hlbsp.bsp -a0c244963bdf845beedc875cf3594045657d7f242f720e045e0fa3a8b031962a *e1m1-bspxbrushes.bsp -62fe5d3425b50d0d8d2b0adf781426af4ee4716152d3029b07391f3aca81c712 *e1m1-bsp29-onlyents.bsp -e83e9017c63fe0211582dbfbc88bcdef9f7ed0bca080dfd9c9149ab76c67eabb *qbspfeatures.bsp +9c8e99b94adab8a1c167585cea24b93f5de97eb27edfa1d1bdf62e65b8c41225 *e1m1-bsp29.bsp +663d18865131d41cd2e3114c1cbe19d81aadd12bd6c76b8500508b9216bbf167 *e1m1-bsp2.bsp +1a1b53f1bdebf966a0846b9466638c0b3b3678eee6488fb572dd9a9ccd7b3084 *e1m1-2psb.bsp +8684b1cccc0bae448fbab355c7fc7029e20bc5e89258213d9b897ab662f4463b *e1m1-hexen2.bsp +00ac8b45f10da4f43b822fe275f679f94d2a45f7658f5596756d86c09fe15e7b *e1m1-hexen2-bsp2.bsp +d17350006d71fd0022161ac3fbc96b97f00923490162199440d35950e93be227 *e1m1-hexen2-2psb.bsp +26eadee81364d003eb0fb643d50e3ea8a5e74c3a7cfcadc109a1d32d7855ed86 *e1m1-hlbsp.bsp +af969da100d8dda94d355277c60382c925aabe18c6a4ce9b7500e4e43313f7f4 *e1m1-bspxbrushes.bsp +4b2194ef8dcf2006870191763eaf0d29c33de93923b16f81638b22f88f49e635 *e1m1-bsp29-onlyents.bsp +02edda18a76b57b2e24f92b4dc9967239ebb9e5136e4f43522e381059bafd458 *qbspfeatures.bsp abf3633d5a6d0e167ce9bacec476d3408c8240df5f3d72d14867cd201d4e3674 *qbsp_func_detail.prt c0995c6b92256fa048c1a755ebe7e07f5fae33cb64e3c53adc234380fe44f267 *qbsp_func_detail_illusionary_plus_water.prt 08349ab23c97120c41493d8fb00b9a6c41553aba64b1710ba11cc5bdfbe51e45 *e1m1-bsp29.prt