From 362e6435aab683dfc3b3977cc08a2c479c6030bb Mon Sep 17 00:00:00 2001 From: Alexander Dormidontov Date: Sun, 2 Jul 2023 13:36:09 +0400 Subject: [PATCH] Moved duplicated code in vmap.cpp to a separate function --- src/terra/vmap.cpp | 84 +++++++++++++++++++--------------------------- src/terra/vmap.h | 1 + 2 files changed, 35 insertions(+), 50 deletions(-) diff --git a/src/terra/vmap.cpp b/src/terra/vmap.cpp index a61f2e4..1a4d809 100644 --- a/src/terra/vmap.cpp +++ b/src/terra/vmap.cpp @@ -1082,6 +1082,38 @@ void vrtMap::dump_terrain() { //delete[] line_buffer; } +void vrtMap::netModify(uchar* p) { + //ZMOD 1.18 DYNAMIC WATER + //ZMOD 1.20 fix + if (NetworkON && zMod_flood_level_delta!=0) { + uchar* pa,*pc,*pf,*pa0,*pc0,*pf0; + //uchar type,lxVal,rxVal; + pa0 = pa = p; + pf0 = pf = pa0 + H_SIZE; + + if (zMod_flood_level_delta>0) { //если уровень повысился + for(int x = 0;x < H_SIZE; x++, pa++, pf++) + if (*(pa0 + x) <= FloodLEVEL) //заливаем всё что ниже уровня + *pf &= ~TERRAIN_MASK & ~OBJSHADOW; + + } else { //если уровень понизился + for(int x = 0;x < H_SIZE; x++, pa++, pf++) + if (*(pa0 + x) > FloodLEVEL) //осушаем всё что выше уровня + if(GET_TERRAIN(*pf) == WATER_TERRAIN_INDEX) //и только существующую воду + *pf |= MAIN_TERRAIN; + } + } + /* + //znfo ficha DRY + uchar* pf = p + H_SIZE; + for (int x=0;x0) { //если уровень повысился - for(int x = 0;x < H_SIZE; x++, pa++, pf++) - if (*(pa0 + x) <= FloodLEVEL) //заливаем все что ниже уровня - *pf &= ~TERRAIN_MASK & ~OBJSHADOW; - - } else { //если уровень понизился - for(int x = 0;x < H_SIZE; x++, pa++, pf++) - if (*(pa0 + x) > FloodLEVEL) //осушаем все что выше уровня - if(GET_TERRAIN(*pf) == WATER_TERRAIN_INDEX) //и только существующую воду - *pf |= MAIN_TERRAIN; - } - } + netModify(p); lineT[i] = p; //znfo lineT compressed //загрузка lineTcolor[i] = use_c(); @@ -1534,36 +1547,7 @@ void vrtMap::linkC(int up,int down,int d) ExpandBuffer(inbuf,p); } - //ZMOD 1.18 DYNAMIC WATER (there is one more in upper) - //ZMOD 1.20 fix - if (NetworkON && zMod_flood_level_delta!=0) { - uchar* pa,*pc,*pf,*pa0,*pc0,*pf0; - uchar type,lxVal,rxVal; - pa0 = pa = p; - pf0 = pf = pa0 + H_SIZE; - - if (zMod_flood_level_delta>0) { //если уровень повысился - for(int x = 0;x < H_SIZE; x++, pa++, pf++) - if (*(pa0 + x) <= FloodLEVEL) //заливаем все что ниже уровня - *pf &= ~TERRAIN_MASK & ~OBJSHADOW; - - } else { //если уровень понизился - for(int x = 0;x < H_SIZE; x++, pa++, pf++) - if (*(pa0 + x) > FloodLEVEL) //осушаем все что выше уровня - if(GET_TERRAIN(*pf) == WATER_TERRAIN_INDEX) //и только существующую воду - *pf |= MAIN_TERRAIN; - } - } - -/* - //znfo ficha DRY (there is one more in upper) - uchar* pf = p + H_SIZE; - for (int x=0;x