Moved duplicated code in vmap.cpp to a separate function

This commit is contained in:
Alexander Dormidontov
2023-07-02 13:36:09 +04:00
parent a5dc4a5835
commit 362e6435aa
2 changed files with 35 additions and 50 deletions

View File

@@ -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;x<H_SIZE; x++,pf++) {
if(GET_TERRAIN(*pf) == WATER_TERRAIN_INDEX) {
*pf |= MAIN_TERRAIN_INDEX << TERRAIN_OFFSET;
}
}
*/
}
/*Функция загрузки карт высот и т.д.
Удалил закомментированный код, смотреть в svn.*/
void vrtMap::accept(int up,int down)
@@ -1136,26 +1168,7 @@ void vrtMap::accept(int up,int down)
ExpandBuffer(inbuf,p);
}
//ZMOD 1.18 DYNAMIC WATER (there is one more in lower)
//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;
}
}
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<H_SIZE; x++,pf++) {
if(GET_TERRAIN(*pf) == WATER_TERRAIN_INDEX) {
*pf |= MAIN_TERRAIN_INDEX << TERRAIN_OFFSET;
}
}
*/
netModify(p);
lineT[i] = p; //znfo lineT compressed //догрузка
lineTcolor[i] = use_c();

View File

@@ -76,6 +76,7 @@ struct vrtMap {
void allocHeap(void);
void lockHeap(void);
void dump_terrain(void);
void netModify(uchar* p);
void accept(int up,int down);
void change(int up,int down);
void request(int up,int down,int left, int right);