#include "project.h" #ifdef MAP_NULL void map_output (int *computer, int *x, int *y) { (*computer)--; } #elif defined(MAP_HOME) void map_output (int *computer, int *x, int *y) { switch (*computer) { case 1: *computer = 5; break; case 2: *computer = 4; break; case 3: *computer = 0; if (x) *x = *x / 2; break; case 4: *computer = 0; if (x) *x = (*x / 2) + 1024; break; case 5: case 6: case 7: (*computer) -= 4; break; } } #endif int map_grace_left (int computer) { int console = layout_computer_to_console (computer); int cl = layout_console_to_computer (console - 1); if ((cl < 1) || (cl > N_COMPUTER)) return 1; map_output (&computer, NULL, NULL); map_output (&cl, NULL, NULL); return cl != computer; } int map_grace_right (int computer) { int console = layout_computer_to_console (computer); int cl = layout_console_to_computer (console + 1); if ((cl < 1) || (cl > N_COMPUTER)) return 1; map_output (&computer, NULL, NULL); map_output (&cl, NULL, NULL); return cl != computer; } int map_switch_left (int *cc) { int computer; int console; int ok; for (computer = *cc - 1; computer > 0; computer--) { /* First see if this computer is being displayed - if so easy*/ if (layout_computer_to_console (computer) > 0) { *cc = computer; layout_status (*cc); return 1; } /* We're switching left so try console from the left to the right */ ok = 0; for (console = 1; console <= N_CONSOLE; ++console) { if (layout_possible (console, computer)) { layout_map (console, computer); if (!ok) *cc = computer; computer++; ok++; } } if (ok) { layout_status (*cc); return 1; } } return 0; } int map_switch_right (int *cc) { int computer; int console; int ok; for (computer = *cc + 1; computer <= N_COMPUTER; computer++) { /* First see if this computer is being displayed - if so easy*/ if (layout_computer_to_console (computer) > 0) { *cc = computer; layout_status (*cc); return 1; } /* We're switching right so try console from the left to the right */ ok = 0; for (console = N_CONSOLE; console > 0; --console) { if (layout_possible (console, computer)) { layout_map (console, computer); if (!ok) *cc = computer; computer--; ok++; } } if (ok) { layout_status (*cc); return 1; } } return 0; } int map_init (void) { return layout_init (); }