home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C128CPM / MDRAW.LBR / MOUSECUR.INC < prev   
Encoding:
Text File  |  2019-04-13  |  2.0 KB  |  82 lines

  1. {
  2. SG Tools Pro (C) 1992 Steve Goldsmith
  3.  
  4. The Mouse Cursor module allows you to control a cursor with 1351 and
  5. compatible mouses in port 2.
  6. }
  7.  
  8. {global mouse vars}
  9.  
  10. var
  11.  
  12.   mseXOld, mseXFeel, mseXOverflow, mseYOld, mseYFeel, mseYOverflow : byte;
  13.   mseXCur, mseYCur, mseXCurMin, mseXCurMax,mseYCurMin, mseYCurMax : integer;
  14.  
  15. procedure InitMouseCur (XCur, YCur, XCurMin,YCurMin,XCurMax,YCurMax : integer;
  16.                         XFeel,YFeel,XOverflow,YOverflow : byte);
  17.  
  18. begin
  19.   mseXCur := XCur;
  20.   mseYCur := YCur;
  21.   mseXCurMin := XCurMin;
  22.   mseYCurMin := YCurMin;
  23.   mseXCurMax := XCurMax;
  24.   mseYCurMax := YCurMax;
  25.   mseXFeel := XFeel;
  26.   mseYFeel := YFeel;
  27.   mseXOverFlow := XOverflow;
  28.   mseYOverflow := YOverflow;
  29.   mseX := 0;
  30.   mseY := 0;
  31.   mseXOld := 0;
  32.   mseYOld := 0
  33. end;
  34.  
  35. procedure UpdateMouseCurX;
  36.  
  37. var
  38.  
  39.   XDiff : byte;
  40.  
  41. begin
  42.   XDiff := abs (mseXOld-mseX); {calc abs diff between old and new pos}
  43.   if XDiff >= mseXFeel then      {see if diff > feel}
  44.   begin
  45.     if XDiff < mseXOverflow then {see if diff overflowed}
  46.     begin
  47.       if (mseXCur < mseXCurMax) and {which direction are we going?}
  48.       (mseX > mseXOld) then
  49.         mseXCur := mseXCur+1
  50.       else
  51.         if (mseXCur > mseXCurMin) and
  52.         (mseX < mseXOld) then
  53.           mseXCur := mseXCur-1
  54.     end;
  55.     mseXOld := mseX  {old mouse pos = new pos}
  56.   end
  57. end;
  58.  
  59. procedure UpdateMouseCurY;
  60.  
  61. var
  62.  
  63.   YDiff : byte;
  64.  
  65. begin
  66.   YDiff := abs (mseYOld-mseY); {calc abs diff between old and new pos}
  67.   if YDiff >= mseYFeel then      {see if diff > feel}
  68.   begin
  69.     if YDiff < mseYOverflow then {see if diff overflowed}
  70.     begin
  71.       if (mseYCur < mseYCurMax) and {which direction are we going?}
  72.       (mseY < mseYOld) then
  73.         mseYCur := mseYCur+1
  74.       else
  75.         if (mseYCur > mseYCurMin) and
  76.         (mseY > mseYOld) then
  77.           mseYCur := mseYCur-1
  78.     end;
  79.     mseYOld := mseY  {old mouse pos = new pos}
  80.   end
  81. end;
  82.