/* ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» º Anzahl der angezeigten Felder aus DISPSPIELFELDDATA auslesen !!! º º NICHT 10 * 20 voraussetzen !!!!!!!! º º ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ */ /* * generated by tptc - translate pascal to c * version 1.7 03/26/88 (c) 1988 s.h.smith */ /* dir 8 7 0 1 6 * 2 5 4 3 9 */ int ms, strgjmp; int cxp, cyp, sxp, syp; int lastdir; void movedir(char dir) { lastdir = dir; // int oldx = cxp; // int oldy = cyp; switch (dir) { case 0 : cyp-= 2 * strgjmp; break; case 1: { /* rechts oben */ if (strgjmp == 1) { if ( cyp & 1 ) cxp+=strgjmp; cyp -= strgjmp; } else { cxp += strgjmp; cyp -= strgjmp * 2; } } break; case 2: { /* rechts unten */ if (strgjmp == 1) { if ( cyp & 1 ) cxp+= strgjmp; cyp += strgjmp; } else { cxp += strgjmp; cyp += strgjmp * 2; } } break; case 3: cyp+=2*strgjmp; break; case 4: { /* links unten */ if (strgjmp == 1) { if (cyp % 2 == 0) cxp-=strgjmp; cyp += strgjmp; } else { cxp-=strgjmp; cyp+=strgjmp * 2; } } break; case 5: { if (strgjmp == 1) { if (cyp % 2 == 0) cxp-=strgjmp; cyp-= strgjmp; } else { cxp -= strgjmp; cyp -= strgjmp * 2; } } break; case 6: cxp += 2 * strgjmp; break; case 7: cxp -= 2 * strgjmp; break; } } #define strginc 5 void movecursor(tkey ch) { ms = getmousestatus(); cxp = cursor.posx + actmap->xpos; cyp = cursor.posy + actmap->ypos; int oldcxp = cxp; int oldcyp = cyp; sxp = actmap->xpos; syp = actmap->ypos; if (ms == 2) mousevisible(false); if ( (ch > 512) && (ch < 1024 ) ) ch -= 512; strgjmp = 1; #ifdef NEWKEYB if ( ( skeypress ( ct_lstrg ) ) || ( skeypress ( ct_rstrg ) ) ) strgjmp = strginc; if ( ( ch == ct_up ) || ( ch == ct_down ) || ( ch == ct_left ) || ( ch == ct_right ) || ( ch == ct_rstrg ) || ( ch == ct_lstrg )) { if ( skeypress( ct_left ) ) { if ( cyp & 1 ) movedir( 5 ); else movedir( 4 ); } if ( skeypress( ct_right ) ) { if ( cyp & 1 ) movedir( 1 ); else movedir( 2 ); } if ( skeypress( ct_up ) ) movedir(0); if ( skeypress( ct_down ) ) movedir(3); } else #endif #ifndef NEWKEYB switch (ch) { case ct_up: movedir(0); break; case ct_down: movedir(3); break; case ct_left: { if ( cyp & 1 ) movedir( 5 ); else movedir( 4 ); } break; case ct_right: { if ( cyp & 1 ) movedir( 1 ); else movedir( 2 ); } break; } #endif switch (ch) { #ifdef NEWKEYB case ct_8k: movedir(0); break; case ct_4k: movedir(7); break; case ct_6k: movedir(6); break; case ct_2k: movedir(3); break; #endif case ct_7k: movedir(5); break; case ct_9k: movedir(1); break; case ct_1k: movedir(4); break; case ct_3k: movedir(2); break; } if (cxp < 0) { sxp += cxp; cxp = 0; if (sxp < 0) { sxp = 0; cyp -= cyp & 1; } } if ( cxp >= actmap->xsize ) cxp = actmap->xsize -1 ; if ( cyp >= actmap->ysize ) cyp = actmap->ysize -1 ; if ( cxp < 0 ) cxp = 0; if ( cyp < 0 ) cyp = 0; if ( cxp < actmap->xpos ) actmap->xpos = cxp; if ( cyp < actmap->ypos ) { actmap->ypos = cyp; if ( actmap->ypos & 1 ) actmap->ypos--; } int xsize = idisplaymap.getscreenxsize(); int ysize = idisplaymap.getscreenysize(); if ( cxp >= actmap->xpos + xsize ) actmap->xpos = cxp - xsize + 1; if ( cyp >= actmap->ypos + ysize ) { actmap->ypos = cyp - ysize + 1; if ( actmap->ypos & 1 ) actmap->ypos++; } if ((oldcxp != cxp) || (oldcyp != cyp) || sxp != actmap->xpos || syp != actmap->ypos ) { cursor.hide(); // lasttick = ticker; if ((actmap->ypos != syp) || (actmap->xpos != sxp)) displaymap(); cursor.posx = cxp - actmap->xpos; cursor.posy = cyp - actmap->ypos; cursor.show(); } /* tf = actualfontsettings; actualfontsettings.font = schriften.smallarial; actualfontsettings.color = 14; actualfontsettings.background = 0; actualfontsettings.length = 200; showtext2(scat("x-pos : %s y-pos : %s",strr(scat("%s%s",cursor.posx,actmap->xpos)),strr(scat("%s%s",cursor.posy,actmap->ypos))),10,460); actualfontsettings = tf; showmemory(false); */ if (ms == 2) mousevisible(true); }