19 |
*/ |
*/ |
20 |
#include "laser.hh" |
#include "laser.hh" |
21 |
#include "sound.hh" |
#include "sound.hh" |
22 |
|
#include "game.hh" |
23 |
#include "actors.hh" |
#include "actors.hh" |
24 |
#include <algorithm> |
#include <algorithm> |
25 |
#include <cassert> |
#include <cassert> |
592 |
case '|': |
case '|': |
593 |
if (dir==EAST || dir==WEST) { |
if (dir==EAST || dir==WEST) { |
594 |
emit_light(reverse(dir)); |
emit_light(reverse(dir)); |
595 |
if (transparent) |
if (transparent) |
596 |
emit_light(dir); |
emit_light(dir); |
597 |
} |
} |
598 |
else { |
else if ((dir == NORTH || dir == SOUTH) && transparent && |
599 |
// @@@ FIXME: oxyd1 lets light pass if mirror is transparent |
enigma::GameCompatibility == GAMET_OXYD1) { |
600 |
|
emit_light(dir); |
601 |
} |
} |
602 |
break; |
break; |
603 |
case '-': |
case '-': |
604 |
if (dir==NORTH || dir==SOUTH) { |
if (dir==NORTH || dir==SOUTH) { |
605 |
emit_light(reverse(dir)); |
emit_light(reverse(dir)); |
606 |
if (transparent) |
if (transparent) |
607 |
emit_light(dir); |
emit_light(dir); |
608 |
} |
} |
609 |
else { |
else if ((dir == EAST || dir == WEST) && transparent && |
610 |
// @@@ FIXME: oxyd1 lets light pass if mirror is transparent |
enigma::GameCompatibility == GAMET_OXYD1) { |
611 |
|
emit_light(dir); |
612 |
} |
} |
613 |
break; |
break; |
614 |
case '/': |
case '/': |
619 |
case WEST: emit_light(SOUTH); break; |
case WEST: emit_light(SOUTH); break; |
620 |
case NODIR: break; |
case NODIR: break; |
621 |
} |
} |
622 |
if (transparent) |
if (transparent) |
623 |
emit_light(dir); |
emit_light(dir); |
624 |
break; |
break; |
625 |
case '\\': |
case '\\': |
626 |
switch(dir) { |
switch(dir) { |
630 |
case WEST: emit_light(NORTH); break; |
case WEST: emit_light(NORTH); break; |
631 |
case NODIR: break; |
case NODIR: break; |
632 |
} |
} |
633 |
if (transparent) |
if (transparent) |
634 |
emit_light(dir); |
emit_light(dir); |
635 |
break; |
break; |
636 |
} |
} |
637 |
return false; |
return false; |