home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 3 / PDCD_3.iso / pocketbk / games / yam11src / UTIL.OPL < prev    next >
Text File  |  1995-07-08  |  2KB  |  92 lines

  1. REM MODULE Util
  2. REM Copyright (c) 1995 Bermuda Software Publishing
  3. REM Written by Bruno Essmann (bessmann@iiic.ethz.ch)
  4.  
  5. PROC Util_Init
  6.     REM GenMarkNonActive, we don't want to waste batteries
  7.     CALL($138B, 0, 0, 0, 0, 0)
  8.  
  9.     REM Initialize the randomizer
  10.      RANDOMIZE FLT(HOUR)*3600+MINUTE*60+SECOND
  11. ENDP REM Util_Init
  12.  
  13. PROC Util_FileExist(ptr%)
  14.     REM Search for the given filename on all local drives
  15.     IF EXIST(peek$(ptr%)) : RETURN YES : ENDIF
  16.     POKEB ptr% + 1, %a
  17.     IF EXIST(peek$(ptr%)) : RETURN YES : ENDIF
  18.     POKEB ptr% + 1, %b
  19.     IF EXIST(peek$(ptr%)) : RETURN YES : ENDIF
  20.     RETURN NO
  21. ENDP REM Util_FileExist
  22.  
  23. PROC Util_Query(t$, u$, v$)
  24.     REM Ask a simple question
  25.     LOCAL ret%
  26.  
  27.     LOCK ON : Disp_OpenPauseWin
  28.     dINIT t$ : dTEXT "", u$, 2 : dTEXT "", v$, 2
  29.     dBUTTONS DialogNo, -Escape, DialogYes, Enter
  30.     ret% = DIALOG
  31.     Disp_ClosePauseWin : LOCK OFF
  32.     IF ret% <> Enter : RETURN YES : ENDIF
  33.     RETURN NO
  34. ENDP REM Util_Query
  35.  
  36. PROC Util_TimeString(m%, s%)
  37.     REM Convert time (minutes, seconds) to a string mm:ss
  38.     LOCAL t$(6)
  39.     
  40.     IF m% < 10 : t$ = "0" : ELSE t$ = "" : ENDIF
  41.     t$ = t$+NUM$(m%, 2)+":"
  42.     IF s% < 10 : t$ = t$+"0" : ENDIF
  43.     t$ = t$+NUM$(s%, 2)
  44.     RETURN t$
  45. ENDP REM Util_TimeString
  46.  
  47. PROC Util_Rand(max%)
  48.     REM Simple random function with maximum
  49.     REM Note: I've tried a modified Lehmer-Alogrithm which
  50.     REM       worked quite good (at least much better than
  51.     REM       the internal) but it was much to slow...
  52.     RETURN INT(RND*max%)
  53. ENDP REM Util_Rand
  54.  
  55. PROC Util_Play(sound%)
  56.     LOCAL n$(128)
  57.     REM Play a sound
  58.     
  59.     IF D.Sound% = 1 : RETURN : ENDIF
  60.  
  61.     IF sound% = SoundError
  62.         BEEP DefSoundErrTime, DefSoundErrPitch
  63.     ELSEIF sound% = SoundWon
  64.         IF D.SndType% = 2 : PlaySnd%:(D.SndWon$)
  65.         ELSE : PlaySnd%:(DefSoundWonName) : ENDIF
  66.     ELSEIF sound% = SoundLost
  67.         IF D.SndType% = 2 : PlaySnd%:(D.SndLost$)
  68.         ELSE : PlaySnd%:(DefSoundLostName) : ENDIF
  69.     ENDIF
  70. ENDP REM Util_Play
  71.  
  72. PROC PlaySnd%:(f$)
  73.     LOCAL name$(128), h%, t$(32), b%(4), s&, t%
  74.     
  75.     name$ = f$
  76.     IF IOOPEN(h%, name$, $0400) < 0
  77.         BEEP DefSoundErrTime, DefSoundErrPitch
  78.         GIPRINT name$+" ???"
  79.         RETURN
  80.     ELSE
  81.         IOREAD(h%, ADDR(t$), 32) : IOCLOSE(h%)
  82.         b%(1) = PEEKB (ADDR(t$)+18) : b%(2) = PEEKB (ADDR(t$)+19)
  83.         b%(3) = PEEKB (ADDR(t$)+20) : b%(4) = PEEKB (ADDR(t$)+21)
  84.         s& = b%(1)+(b%(2)*256)+(b%(3)*65536)+(b%(4)*16777216)
  85.         t% = s&/250
  86.         name$ = name$+CHR$(0)
  87.         CALL($1E86,UADD(ADDR(name$),1),t%,6-D.Sound%,0,PlaybackStatus)
  88.     ENDIF
  89. ENDP
  90.  
  91. REM END Util.
  92.