| 113 | } |
| 114 | |
| 115 | int calcmapdims(mapdim_s &md, const servsqr *s, int _ssize) |
| 116 | { |
| 117 | int res = 0; |
| 118 | md.x1 = md.y1 = _ssize; |
| 119 | md.x2 = md.y2 = 0; |
| 120 | md.minfloor = 127; md.maxceil = -128; |
| 121 | for(int y = 0; y < _ssize; y++) for(int x = 0; x < _ssize; x++) |
| 122 | { |
| 123 | if((s->type & TAGTRIGGERMASK) != SOLID) |
| 124 | { |
| 125 | if(x < md.x1) md.x1 = x; |
| 126 | if(x > md.x2) md.x2 = x; |
| 127 | if(y < md.y1) md.y1 = y; |
| 128 | md.y2 = y; |
| 129 | if(s->floor < md.minfloor) md.minfloor = s->floor; |
| 130 | if(s->ceil > md.maxceil) md.maxceil = s->ceil; |
| 131 | } |
| 132 | s++; |
| 133 | } |
| 134 | if(md.x2 < md.x1 || md.y2 < md.y1) |
| 135 | { // map is completely solid -> default to empty map values |
| 136 | md.x1 = md.y1 = 2; |
| 137 | md.x2 = md.y2 = _ssize - 3; |
| 138 | md.minfloor = 0; |
| 139 | md.maxceil = 16; |
| 140 | res = -1; // reject map on servers |
| 141 | } |
| 142 | if(md.x1 < MINBORD || md.y1 < MINBORD || md.x2 >= _ssize - MINBORD || md.y2 >= _ssize - MINBORD) res = -2; // reject map because of world border violation |
| 143 | md.xspan = md.x2 - md.x1 + 1; |
| 144 | md.yspan = md.y2 - md.y1 + 1; |
| 145 | md.xm = md.x1 + md.xspan / 2.0f; |
| 146 | md.ym = md.y1 + md.yspan / 2.0f; |
| 147 | return res; |
| 148 | } |
| 149 | |
| 150 | int calcmapareastats(mapareastats_s &ms, servsqr *_servworld, int _ssize, const mapdim_s &md) |
| 151 | { |
no outgoing calls
no test coverage detected