data dirs renamed
[k8-i-v-a-n.git] / Doc / Obsolete / Alter.txt
blob163f23ad8711e2cf551ac3d6fe81ddd91b9d0213
1 The longest if sentence ever written in IVAN
2 --------------------------------------------
4 void square::AlterLuminance(vector Dir, USI AL)
6         #define WMACRO(X, Y) if(!game::CCurrentArea()->CSquare(vector(X, Y))->COverTerrain()->CIsWalkable()) return;
8         vector Player = game::CPlayer()->CPos();
10         if(!OverTerrain->CIsWalkable())
11         {
12                 if(Player.X < Pos.X)
13                 {
14                         if(Player.Y < Pos.Y)
15                         {
16                                 if(Dir.X < Pos.X)
17                                 {
18                                         /* Dxxxx
19                                            xPxxx
20                                            xxTxx
21                                            xxxxx
22                                            xxxxx */
24                                         if(Dir.Y <  Pos.Y);
26                                         /* xxxxx
27                                            xPxxx
28                                            xDTxx
29                                            xxxxx
30                                            xxxxx */
32                                         if(Dir.Y == Pos.Y);
34                                         /* xxxxx
35                                            xPxxx
36                                            xxTxx
37                                            xDxxx
38                                            xxxxx */
40                                         if(Dir.Y >  Pos.Y)
41                                                 WMACRO(Pos.X - 1, Pos.Y)
42                                 }
44                                 if(Dir.X == Pos.X)
45                                 {
46                                         /* xxxxx
47                                            xPDxx
48                                            xxTxx
49                                            xxxxx
50                                            xxxxx */
52                                         if(Dir.Y <  Pos.Y);
54                                         /* xxxxx
55                                            xPxxx
56                                            xxDxx
57                                            xxxxx
58                                            xxxxx */
60                                         if(Dir.Y == Pos.Y);
62                                         /* xxxxx
63                                            xPxxx
64                                            xxTxx
65                                            xxDxx
66                                            xxxxx */
68                                         if(Dir.Y >  Pos.Y)
69                                                 WMACRO(Pos.X - 1, Pos.Y)
70                                 }
72                                 if(Dir.X > Pos.X)
73                                 {
74                                         /* xxxxx
75                                            xPxDx
76                                            xxTxx
77                                            xxxxx
78                                            xxxxx */
80                                         if(Dir.Y <  Pos.Y)
81                                                 WMACRO(Pos.X, Pos.Y - 1)
83                                         /* xxxxx
84                                            xPxxx
85                                            xxTDx
86                                            xxxxx
87                                            xxxxx */
89                                         if(Dir.Y == Pos.Y)
90                                                 WMACRO(Pos.X, Pos.Y - 1)
92                                         /* xxxxx
93                                            xPxxx
94                                            xxTxx
95                                            xxxDx
96                                            xxxxx */
98                                         if(Dir.Y >  Pos.Y)
99                                                 return;
100                                 }
101                         }
103                         if(Player.Y == Pos.Y)
104                         {
105                                 if(Dir.X < Pos.X)
106                                 {
107                                         /* xxxxx
108                                            xDxxx
109                                            xPTxx
110                                            xxxxx
111                                            xxxxx */
113                                         if(Dir.Y <  Pos.Y);
115                                         /* xxxxx
116                                            xxxxx
117                                            DPTxx
118                                            xxxxx
119                                            xxxxx */
121                                         if(Dir.Y == Pos.Y);
123                                         /* xxxxx
124                                            xxxxx
125                                            xPTxx
126                                            xDxxx
127                                            xxxxx */
129                                         if(Dir.Y >  Pos.Y);
130                                 }
132                                 if(Dir.X == Pos.X)
133                                 {
134                                         /* xxxxx
135                                            xxDxx
136                                            xPTxx
137                                            xxxxx
138                                            xxxxx */
140                                         if(Dir.Y <  Pos.Y);
142                                         /* xxxxx
143                                            xxxxx
144                                            xPDxx
145                                            xxxxx
146                                            xxxxx */
148                                         if(Dir.Y == Pos.Y);
150                                         /* xxxxx
151                                            xxxxx
152                                            xPTxx
153                                            xxDxx
154                                            xxxxx */
156                                         if(Dir.Y >  Pos.Y);
157                                 }
159                                 if(Dir.X > Pos.X)
160                                 {
161                                         /* xxxxx
162                                            xxxDx
163                                            xPTxx
164                                            xxxxx
165                                            xxxxx */
167                                         if(Dir.Y <  Pos.Y)
168                                                 WMACRO(Pos.X, Pos.Y - 1)
170                                         /* xxxxx
171                                            xxxxx
172                                            xPTDx
173                                            xxxxx
174                                            xxxxx */
176                                         if(Dir.Y == Pos.Y)
177                                                 return;
179                                         /* xxxxx
180                                            xxxxx
181                                            xPTxx
182                                            xxxDx
183                                            xxxxx */
185                                         if(Dir.Y >  Pos.Y)
186                                                 WMACRO(Pos.X, Pos.Y + 1)
187                                 }
188                         }
190                         if(Player.Y > Pos.Y)
191                         {
192                                 if(Dir.X < Pos.X)
193                                 {
194                                         /* xxxxx
195                                            xDxxx
196                                            xxTxx
197                                            xPxxx
198                                            xxxxx */
200                                         if(Dir.Y <  Pos.Y)
201                                                 WMACRO(Pos.X - 1, Pos.Y)
203                                         /* xxxxx
204                                            xxxxx
205                                            xDTxx
206                                            xPxxx
207                                            xxxxx */
209                                         if(Dir.Y == Pos.Y);
211                                         /* xxxxx
212                                            xxxxx
213                                            xxTxx
214                                            xPxxx
215                                            xDxxx */
217                                         if(Dir.Y >  Pos.Y);
218                                 }
220                                 if(Dir.X == Pos.X)
221                                 {
222                                         /* xxxxx
223                                            xxDxx
224                                            xxTxx
225                                            xPxxx
226                                            xxxxx */
228                                         if(Dir.Y <  Pos.Y)
229                                                 WMACRO(Pos.X - 1, Pos.Y)
231                                         /* xxxxx
232                                            xxxxx
233                                            xxDxx
234                                            xPxxx
235                                            xxxxx */
237                                         if(Dir.Y == Pos.Y);
239                                         /* xxxxx
240                                            xxxxx
241                                            xxTxx
242                                            xPDxx
243                                            xxxxx */
245                                         if(Dir.Y >  Pos.Y);
246                                 }
248                                 if(Dir.X > Pos.X)
249                                 {
250                                         /* xxxxx
251                                            xxxDx
252                                            xxTxx
253                                            xPxxx
254                                            xxxxx */
256                                         if(Dir.Y <  Pos.Y)
257                                                 return;
259                                         /* xxxxx
260                                            xxxxx
261                                            xxTDx
262                                            xPxxx
263                                            xxxxx */
265                                         if(Dir.Y == Pos.Y)
266                                                 WMACRO(Pos.X, Pos.Y + 1)
268                                         /* xxxxx
269                                            xxxxx
270                                            xxTxx
271                                            xPxDx
272                                            xxxxx */
274                                         if(Dir.Y >  Pos.Y)
275                                                 WMACRO(Pos.X, Pos.Y + 1)
276                                 }
277                         }
278                 }
280                 if(Player.X == Pos.X)
281                 {
282                         if(Player.Y < Pos.Y)
283                         {
284                                 if(Dir.X < Pos.X)
285                                 {
286                                         /* xxxxx
287                                            xDPxx
288                                            xxTxx
289                                            xxxxx
290                                            xxxxx */
292                                         if(Dir.Y <  Pos.Y);
294                                         /* xxxxx
295                                            xxPxx
296                                            xDTxx
297                                            xxxxx
298                                            xxxxx */
300                                         if(Dir.Y == Pos.Y);
302                                         /* xxxxx
303                                            xxPxx
304                                            xxTxx
305                                            xDxxx
306                                            xxxxx */
308                                         if(Dir.Y >  Pos.Y)
309                                                 WMACRO(Pos.X - 1, Pos.Y)
310                                 }
312                                 if(Dir.X == Pos.X)
313                                 {
314                                         /* xxDxx
315                                            xxPxx
316                                            xxTxx
317                                            xxxxx
318                                            xxxxx */
320                                         if(Dir.Y <  Pos.Y);
322                                         /* xxxxx
323                                            xxPxx
324                                            xxDxx
325                                            xxxxx
326                                            xxxxx */
328                                         if(Dir.Y == Pos.Y);
330                                         /* xxxxx
331                                            xxPxx
332                                            xxTxx
333                                            xxDxx
334                                            xxxxx */
336                                         if(Dir.Y >  Pos.Y)
337                                                 return;
338                                 }
340                                 if(Dir.X > Pos.X)
341                                 {
342                                         /* xxxxx
343                                            xxPDx
344                                            xxTxx
345                                            xxxxx
346                                            xxxxx */
348                                         if(Dir.Y <  Pos.Y);
350                                         /* xxxxx
351                                            xxPxx
352                                            xxTDx
353                                            xxxxx
354                                            xxxxx */
356                                         if(Dir.Y == Pos.Y);
358                                         /* xxxxx
359                                            xxPxx
360                                            xxTxx
361                                            xxxDx
362                                            xxxxx */
364                                         if(Dir.Y >  Pos.Y)
365                                                 WMACRO(Pos.X + 1, Pos.Y)
366                                 }
367                         }
369                         if(Player.Y == Pos.Y)
370                         {
371                                 if(Dir.X < Pos.X)
372                                 {
373                                         /* xxxxx
374                                            xDxxx
375                                            xxPxx
376                                            xxxxx
377                                            xxxxx */
379                                         if(Dir.Y <  Pos.Y);
381                                         /* xxxxx
382                                            xxxxx
383                                            xDPxx
384                                            xxxxx
385                                            xxxxx */
387                                         if(Dir.Y == Pos.Y);
389                                         /* xxxxx
390                                            xxxxx
391                                            xxPxx
392                                            xDxxx
393                                            xxxxx */
395                                         if(Dir.Y >  Pos.Y);
396                                 }
398                                 if(Dir.X == Pos.X)
399                                 {
400                                         /* xxxxx
401                                            xxDxx
402                                            xxPxx
403                                            xxxxx
404                                            xxxxx */
406                                         if(Dir.Y <  Pos.Y);
408                                         /* xxxxx
409                                            xxxxx
410                                            xxQxx
411                                            xxxxx
412                                            xxxxx */
414                                         if(Dir.Y == Pos.Y);
416                                         /* xxxxx
417                                            xxxxx
418                                            xxPxx
419                                            xxDxx
420                                            xxxxx */
422                                         if(Dir.Y >  Pos.Y);
423                                 }
425                                 if(Dir.X > Pos.X)
426                                 {
427                                         /* xxxxx
428                                            xxxDx
429                                            xxPxx
430                                            xxxxx
431                                            xxxxx */
433                                         if(Dir.Y <  Pos.Y);
435                                         /* xxxxx
436                                            xxxxx
437                                            xxPDx
438                                            xxxxx
439                                            xxxxx */
441                                         if(Dir.Y == Pos.Y);
443                                         /* xxxxx
444                                            xxxxx
445                                            xxPxx
446                                            xxxDx
447                                            xxxxx */
449                                         if(Dir.Y >  Pos.Y);
450                                 }
451                         }
453                         if(Player.Y > Pos.Y)
454                         {
455                                 if(Dir.X < Pos.X)
456                                 {
457                                         /* xxxxx
458                                            xDxxx
459                                            xxTxx
460                                            xxPxx
461                                            xxxxx */
463                                         if(Dir.Y <  Pos.Y)
464                                                 WMACRO(Pos.X - 1, Pos.Y)
466                                         /* xxxxx
467                                            xxxxx
468                                            xDTxx
469                                            xxPxx
470                                            xxxxx */
472                                         if(Dir.Y == Pos.Y);
474                                         /* xxxxx
475                                            xxxxx
476                                            xxTxx
477                                            xDPxx
478                                            xxxxx */
480                                         if(Dir.Y >  Pos.Y);
481                                 }
483                                 if(Dir.X == Pos.X)
484                                 {
485                                         /* xxxxx
486                                            xxDxx
487                                            xxTxx
488                                            xxPxx
489                                            xxxxx */
491                                         if(Dir.Y <  Pos.Y)
492                                                 return;
494                                         /* xxxxx
495                                            xxxxx
496                                            xxDxx
497                                            xxPxx
498                                            xxxxx */
500                                         if(Dir.Y == Pos.Y);
502                                         /* xxxxx
503                                            xxxxx
504                                            xxTxx
505                                            xxPxx
506                                            xxDxx */
508                                         if(Dir.Y >  Pos.Y);
509                                 }
511                                 if(Dir.X > Pos.X)
512                                 {
513                                         /* xxxxx
514                                            xxxDx
515                                            xxTxx
516                                            xxPxx
517                                            xxxxx */
519                                         if(Dir.Y <  Pos.Y)
520                                                 WMACRO(Pos.X + 1, Pos.Y)
522                                         /* xxxxx
523                                            xxxxx
524                                            xxTDx
525                                            xxPxx
526                                            xxxxx */
528                                         if(Dir.Y == Pos.Y);
530                                         /* xxxxx
531                                            xxxxx
532                                            xxTxx
533                                            xxPDx
534                                            xxxxx */
536                                         if(Dir.Y >  Pos.Y);
537                                 }
538                         }
539                 }
541                 if(Player.X > Pos.X)
542                 {
543                         if(Player.Y < Pos.Y)
544                         {
545                                 if(Dir.X < Pos.X)
546                                 {
547                                         /* xxxxx
548                                            xDxPx
549                                            xxTxx
550                                            xxxxx
551                                            xxxxx */
553                                         if(Dir.Y <  Pos.Y)
554                                                 WMACRO(Pos.X, Pos.Y - 1)
556                                         /* xxxxx
557                                            xxxPx
558                                            xDTxx
559                                            xxxxx
560                                            xxxxx */
562                                         if(Dir.Y == Pos.Y)
563                                                 WMACRO(Pos.X, Pos.Y - 1)
565                                         /* xxxxx
566                                            xxxPx
567                                            xxTxx
568                                            xDxxx
569                                            xxxxx */
571                                         if(Dir.Y >  Pos.Y)
572                                                 return;
573                                 }
575                                 if(Dir.X == Pos.X)
576                                 {
577                                         /* xxxxx
578                                            xxDPx
579                                            xxTxx
580                                            xxxxx
581                                            xxxxx */
583                                         if(Dir.Y <  Pos.Y);
585                                         /* xxxxx
586                                            xxxPx
587                                            xxDxx
588                                            xxxxx
589                                            xxxxx */
591                                         if(Dir.Y == Pos.Y);
593                                         /* xxxxx
594                                            xxxPx
595                                            xxTxx
596                                            xxDxx
597                                            xxxxx */
599                                         if(Dir.Y >  Pos.Y)
600                                                 WMACRO(Pos.X + 1, Pos.Y)
601                                 }
603                                 if(Dir.X > Pos.X)
604                                 {
605                                         /* xxxxD
606                                            xxxPx
607                                            xxTxx
608                                            xxxxx
609                                            xxxxx */
611                                         if(Dir.Y <  Pos.Y);
613                                         /* xxxxx
614                                            xxxPx
615                                            xxTDx
616                                            xxxxx
617                                            xxxxx */
619                                         if(Dir.Y == Pos.Y);
621                                         /* xxxxx
622                                            xxxPx
623                                            xxTxx
624                                            xxxDx
625                                            xxxxx */
627                                         if(Dir.Y >  Pos.Y)
628                                                 WMACRO(Pos.X + 1, Pos.Y)
629                                 }
630                         }
632                         if(Player.Y == Pos.Y)
633                         {
634                                 if(Dir.X < Pos.X)
635                                 {
636                                         /* xxxxx
637                                            xDxxx
638                                            xxTPx
639                                            xxxxx
640                                            xxxxx */
642                                         if(Dir.Y <  Pos.Y)
643                                                 WMACRO(Pos.X, Pos.Y - 1)
645                                         /* xxxxx
646                                            xxxxx
647                                            xDTPx
648                                            xxxxx
649                                            xxxxx */
651                                         if(Dir.Y == Pos.Y)
652                                                 return;
654                                         /* xxxxx
655                                            xxxxx
656                                            xxTPx
657                                            xDxxx
658                                            xxxxx */
660                                         if(Dir.Y >  Pos.Y)
661                                                 WMACRO(Pos.X, Pos.Y + 1)
662                                 }
664                                 if(Dir.X == Pos.X)
665                                 {
666                                         /* xxxxx
667                                            xxDxx
668                                            xxTPx
669                                            xxxxx
670                                            xxxxx */
672                                         if(Dir.Y <  Pos.Y);
674                                         /* xxxxx
675                                            xxxxx
676                                            xxDPx
677                                            xxxxx
678                                            xxxxx */
680                                         if(Dir.Y == Pos.Y);
682                                         /* xxxxx
683                                            xxxxx
684                                            xxTPx
685                                            xxDxx
686                                            xxxxx */
688                                         if(Dir.Y >  Pos.Y);
689                                 }
691                                 if(Dir.X > Pos.X)
692                                 {
693                                         /* xxxxx
694                                            xxxDx
695                                            xxTPx
696                                            xxxxx
697                                            xxxxx */
699                                         if(Dir.Y <  Pos.Y);
701                                         /* xxxxx
702                                            xxxxx
703                                            xxTPD
704                                            xxxxx
705                                            xxxxx */
707                                         if(Dir.Y == Pos.Y);
709                                         /* xxxxx
710                                            xxxxx
711                                            xxTPx
712                                            xxxDx
713                                            xxxxx */
715                                         if(Dir.Y >  Pos.Y);
716                                 }
717                         }
719                         if(Player.Y > Pos.Y)
720                         {
721                                 if(Dir.X < Pos.X)
722                                 {
723                                         /* xxxxx
724                                            xDxxx
725                                            xxTxx
726                                            xxxPx
727                                            xxxxx */
729                                         if(Dir.Y <  Pos.Y)
730                                                 return;
732                                         /* xxxxx
733                                            xxxxx
734                                            xDTxx
735                                            xxxPx
736                                            xxxxx */
738                                         if(Dir.Y == Pos.Y)
739                                                 WMACRO(Pos.X, Pos.Y + 1)
741                                         /* xxxxx
742                                            xxxxx
743                                            xxTxx
744                                            xDxPx
745                                            xxxxx */
747                                         if(Dir.Y >  Pos.Y)
748                                                 WMACRO(Pos.X, Pos.Y + 1)
749                                 }
751                                 if(Dir.X == Pos.X)
752                                 {
753                                         /* xxxxx
754                                            xxDxx
755                                            xxTxx
756                                            xxxPx
757                                            xxxxx */
759                                         if(Dir.Y <  Pos.Y)
760                                                 WMACRO(Pos.X + 1, Pos.Y)
762                                         /* xxxxx
763                                            xxxxx
764                                            xxDxx
765                                            xxxPx
766                                            xxxxx */
768                                         if(Dir.Y == Pos.Y);
770                                         /* xxxxx
771                                            xxxxx
772                                            xxTxx
773                                            xxDPx
774                                            xxxxx */
776                                         if(Dir.Y >  Pos.Y);
777                                 }
779                                 if(Dir.X > Pos.X)
780                                 {
781                                         /* xxxxx
782                                            xxxDx
783                                            xxTxx
784                                            xxxPx
785                                            xxxxx */
787                                         if(Dir.Y <  Pos.Y)
788                                                 WMACRO(Pos.X + 1, Pos.Y)
790                                         /* xxxxx
791                                            xxxxx
792                                            xxTDx
793                                            xxxPx
794                                            xxxxx */
796                                         if(Dir.Y == Pos.Y);
798                                         /* xxxxx
799                                            xxxxx
800                                            xxTxx
801                                            xxxPx
802                                            xxxxD */
804                                         if(Dir.Y >  Pos.Y);
805                                 }
806                         }
807                 }
808         }
810         if(AL > Luminance)
811                 Luminance = AL;