223 {
225 {
226 x = -1;
227 y = -1;
228 return false;
229 }
232 int num = 0;
233 int num2 = 0;
235 playerPos *= 0.0625f;
236 int sectionX = Netplay.GetSectionX((
int)playerPos.
X);
237 int sectionY = Netplay.GetSectionY((
int)playerPos.
Y);
238 int num3 = Netplay.GetSectionX((
int)vector.
X);
239 int num4 = Netplay.GetSectionY((
int)vector.
Y);
240 int num5;
241 if (num3 != sectionX || num4 != sectionY)
242 {
243 vector = playerPos;
244 num3 = sectionX;
245 num4 = sectionY;
246 num5 = 4;
247 x = sectionX;
248 y = sectionY;
249 }
250 else
251 {
257 }
258 int num6 = (int)(playerPos.
X - ((
float)num3 + 0.5f) * 200f);
259 int num7 = (int)(playerPos.
Y - ((
float)num4 + 0.5f) * 150f);
260 if (num == 0)
261 {
262 num = ((num6 <= 0) ? 1 : (-1));
263 num2 = ((num7 <= 0) ? 1 : (-1));
264 }
265 int num8 = 0;
266 bool flag = false;
267 bool flag2 = false;
268 while (true)
269 {
270 if (num8 == 4)
271 {
272 if (flag2)
273 {
274 throw new Exception(
"Infinite loop in WorldSections.GetNextMapDraw");
275 }
276 flag2 = true;
277 x = num3;
278 y = num4;
279 num6 = (int)(vector.
X - ((
float)num3 + 0.5f) * 200f);
280 num7 = (int)(vector.
Y - ((
float)num4 + 0.5f) * 150f);
281 num = ((num6 <= 0) ? 1 : (-1));
282 num2 = ((num7 <= 0) ? 1 : (-1));
283 num5 = 4;
284 num8 = 0;
285 }
286 if (y >= 0 && y < height && x >= 0 && x <
width)
287 {
288 flag = false;
290 {
291 break;
292 }
293 }
294 int num9 = x - num3;
295 int num10 = y - num4;
296 if (num9 == 0 || num10 == 0)
297 {
298 if (num5 == 4)
299 {
300 if (num9 == 0 && num10 == 0)
301 {
303 {
304 y -= num2;
305 }
306 else
307 {
308 x -= num;
309 }
310 }
311 else
312 {
313 if (num9 != 0)
314 {
316 }
317 if (num10 != 0)
318 {
320 }
321 }
322 num5 = 0;
323 num8 = -2;
324 flag = true;
325 }
326 else
327 {
328 if (num9 != 0)
329 {
330 num = ((num9 <= 0) ? 1 : (-1));
331 }
332 else
333 {
334 num2 = ((num10 <= 0) ? 1 : (-1));
335 }
336 x += num;
337 y += num2;
338 num5++;
339 }
340 if (flag)
341 {
342 num8++;
343 }
344 else
345 {
346 flag = true;
347 }
348 }
349 else
350 {
351 x += num;
352 y += num2;
353 }
354 }
357 prevMap.centerPos = playerPos;
358 prevMap.X = x;
359 prevMap.Y = y;
360 prevMap.leg = num5;
361 prevMap.xDir = num;
362 prevMap.yDir = num2;
364 return true;
365 }
static double Abs(double value)