home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 226-250 / apd246 / plaques.amos / plaques.amosSourceCode
AMOS Source Code  |  1990-10-09  |  2KB  |  75 lines

  1. '
  2. ' Plaque Routines - Version 2.0 - June 1991
  3. '
  4. ' Jason D Banks  
  5. '
  6. ' These can make text look pretty, but serve little other purpose
  7. '
  8. ' I've been using them in 'Labyrinth' a role-playing game in amos. 
  9. ' Now I'm scrapping enough cash to get TOME to make it easier so 
  10. ' I've shelved Labyrinth for now. One day....
  11. '
  12. Screen Open 0,640,256,16,Hires : Curs Off : Flash Off : Pen 1 : Paper 0 : Cls 0
  13. _INIT_PLAQ
  14. PLAQ[20,-1,"greetings|to Thee|From Jason||AND||Enjoy the|Plaques Proggy"]
  15. PLAQ[-1,10,"Plaques - version 1.0"]
  16. PLAQ[-1,-1,"|(c) 1991||J Banks||"]
  17. PLAQ[400,-1,"      ||||"]
  18. PLAQ[405,-1,"     |||"]
  19. PLAQ[410,-1,"    ||"]
  20. PLAQ[415,-1,"   |"]
  21. Procedure _INIT_PLAQ
  22.    If _INIT_ED=True Then Pop Proc
  23.    Palette 0,$FFF,$444,$666,$888,$222
  24.    Global _INIT_ED
  25.    _INIT_ED=True
  26. End Proc
  27. Procedure PLAQ[X,Y,TXT$]
  28. '  x = x co-ordinate - if x=-1 then automatically centres the plaq in the screen's x plane.
  29. '  y = y co-ordinate - if y=-1 then automatically centres the plaq in the screen's y plane.
  30. '  txt$ = text to place in the plaq. This is analyzed to size the plaq's x & y depth 
  31. '         and the format goes that you use '|' as a seperator so the text "GREETINGS|TO THEE"
  32. '  is made up of the two lines "GREETINGS" and "TO THEE".
  33.    _GET_MX_X[TXT$] : MX_X=Param
  34.    _GET_MX_Y[TXT$] : MX_Y=Param
  35.    SX=Screen Width
  36.    SY=Screen Height
  37.    If X=-1 Then X=(SX/2)-(MX_X*4)
  38.    If Y=-1 Then Y=(SY/2)-(MX_Y*4)
  39.    _DRAW_PLAQ[X,Y,X+8*MX_X,Y+8*MX_Y,5]
  40.    DX=X+4*MX_X
  41.    Ink 5,3,
  42.    For R=0 To MX_Y-1
  43.       A=Instr(TXT$,"|")
  44.       If A=0 Then A$=TXT$ : TXT$="" Else A$=Left$(TXT$,A-1) : TXT$=Mid$(TXT$,A+1)
  45.       Text DX-(Len(A$)*4),Y+7+8*R,A$
  46.    Next R
  47. End Proc
  48. Procedure _DRAW_PLAQ[X1,Y1,X2,Y2,BORD]
  49.    ' this is the routine that actually draws the border's shell 
  50.    ' note that the minimum border size is 3.
  51.    If BORD<3 Then BORD=3
  52.    If X1>X2 Then Swap X1,X2
  53.    If Y1>Y2 Then Swap Y1,Y2
  54.    Ink 2,0,0 : Bar X1-BORD,Y1-BORD To X2+BORD,Y2+BORD
  55.    Ink 3,, : Bar X1,Y1 To X2,Y2
  56.    Ink 4,,
  57.    Polygon X1-BORD,Y1-BORD To X2+BORD,Y1-BORD To X2+BORD,Y2+BORD To X2,Y2 To X2,Y1 To X1,Y1 To X1-BORD,Y1-BORD
  58. End Proc
  59. Procedure _GET_MX_X[T$]
  60.    X=0
  61.    While Len(T$)>0
  62.       A=Instr(T$,"|")
  63.       If A=0 Then B=Len(T$) Else If A>X+1 Then X=A-1
  64.       If A=0 Then T$="" Else T$=Mid$(T$,A+1)
  65.    Wend 
  66.    If B>X Then X=B
  67. End Proc[X]
  68. Procedure _GET_MX_Y[T$]
  69.    Y=0
  70.    While Len(T$)>0
  71.       Inc Y
  72.       A=Instr(T$,"|")
  73.       If A>0 Then T$=Mid$(T$,A+1) Else T$=""
  74.    Wend 
  75. End Proc[Y]