X2 Y^OIEӇXd ( @ (//(  0/80@0?/8 0( ?G@POWOXOP?H0@/7@O_``h_hPX 0(P_oppxow_g@O/8'' 7p`o?G/7 0??H/8`/o?GOX@H0?/pOW?H/8 7OP?G/7( P0@PX@O0@ 0O @H/@' 00@@P0?'_OP@H( 7/7' ^^^^^^^^^^^^^^^^^^^^^^^^^^TeeBBBBeTT^^^^^^^eBDJ33333JJDBeZ^^^^TD33==#####==3JDBT^^^^eJ=###=3DeZ^^TB3# #=3JBZ^^T3#  #=JBT^^J# Sll #=JBZ^T# %,68??86,/@A*< ##45('.6787-9%:;*<=#$+&,--.,/01)2 3 $%&&'%($!)* ##  !"#     ??dBs[@ sprite6 Uxs5cf3 b(fdH@Q@A<$@d'R \1 jAS_=bZHRK1V-Y 1PBb"4hsprite7  Fxs5cf3 b(fdH@Q@ %թ$'54HR$W#69npڝa{//={{Po^0`l& \ÄYk?㟉V**bn !gJў7\~**|L'Z.FwwGS}G%lQ7m"]\% ՘vXIn$w1)~+kÔ]5ĺ72Z,8QŃw͈l([Nq0NIF_ѨN-39Ov\[ xi윖F3?iNu5z눑73.=/ dEک(]1KcUH)Hwڞا|xhDϡZg`5v2Q({˞ar{T5D11SekҗNźXlc<_ prQZWF\'_P [D^ge9UŕOif-%#E':`@}t]},҉idN ߢݹQǪWAܨ܍TKA Jzz &'t\\ΐ\ jh%y BW^eӸ2MB.9?J#+-2 #Ѕ69/(ǰ&+r /q-y*Bu@\euG& help$ x}LwKdnXt3 dLCa"RaÄA#):G7W&TTA)}^=F)ZQRwѸ5.K\-E8 Kވ?d n^֖XhLfQQW$ljH 1`3033+ C"BK;^֞\Zw8M 40Ù˪,a\"L_,dmaz|\M3FT𡄓 nsN9\;'hZMvׁv~i7J[p낶W^ &_ g[Z&ݽb`낞XejenmƈfE-Jyi[)+X]iBG iڌ~,' rta>nuRYy=滛HA>(Y!|Gut:EZ&M'Hc5D E3L8p!F<{]9]%@jfoR,AoOMqE[,\b@$H/a*\)MN3_ݫ.ZƗN^#py UV zpH8sنQ>] '5c̄S_L4bn_~%M܂]MPm_y-YFTiO?6 ^ѣ(*q_!M')Ͻ_e):v=V@MO;~{9 c^7 $@:jG ~'dČVKDDf7;86x=l 5QtQ^{Q D9j`ZGL~ O ê >Oh3VDwDEB\EFIEM`DyQ S(vj:IvE`Zn@# ": 贽"z'*w2q>خn/&ːfont0Arial   fileaccess [show_info() //shows the help at startup textline[0]=" " //thats the starting text buffer maxarray=1 //as above canwrite=0 //at the moment write to file is disabled //inhibit write if the filename does not exist and you do not wish to create barsize=512 //not necessary, needed it here for debugging scrollpos=0 //scrolled to top of doc scrollbarpressed=0 //the mouse is not clicked on the scrollbar0000000  action_ifscrollbarpressed=1000000000000000]!move the scrollbar with the mouse0000000c scrollpos;round(wasscrollpos-downscreen*(wasmouse_y-mouse_y)/(16*34))000000]*restrict scrolling so text stays on screen0000000daction_if_variable scrollpos0100000c scrollpos0000000daction_if_variable scrollpos-room_height/16+downscreen+4200000c scrollpos-room_height/16+downscreen+4000000000000008cscrollbarpressed00000005 ]check if over the scroll bar0000000 action_ifmouse_x>786&&mouse_x<798000000000000000 action_if mouse_y>barstart&&mouse_yroom_width-32) { positione-=1 //trim back till it fits } if((-scrollpos+downscreen+1)>0&&(-scrollpos+downscreen+1)<34) //only draw whats on screen draw_text(10,(-scrollpos+downscreen+2)*16,string_copy(textline[k],positions,positione-positions)) //draw_text(0,(-scrollpos+downscreen+2)*16,string(string_length(textline[k]))+" "+string(positions)+" "+string (positione)) //draw_text(0,(-scrollpos+downscreen+2)*16,string(scrollpos)+" "+string(downscreen)+" "+string (barsize)) positions=positione+1 //move the start marker to the first not written downscreen+=1 //track position down screen } } 0000000action_draw_sprite800-10000  action_color 167772150000000daction_if_variable downscreen3420000000000000]"If the text does not fit on screen0000000]calculate the scrollbar size0000000cbarsize512*34/downscreen000000c surroundbar 512-barsize000000cbarstart(48+surroundbar*scrollpos/(downscreen-34)000000cbarend0barsize+48+surroundbar*scrollpos/(downscreen-34)000000]$draw the scroll bar (bit that moves)0000000action_draw_rectangle786barstart798barend000000000000up $cfileaccess.scrollpos0000000!daction_if_variablefileaccess.scrollpos10200000cfileaccess.scrollpos-1000000000000000cfileaccess.scrollpos0000000<daction_if_variablefileaccess.scrollpos10200000cfileaccess.scrollpos-1000000000000000cfileaccess.scrollpos0000000daction_if_variablefileaccess.scrollpos0200000cfileaccess.scrollpos-1000000down #cfileaccess.scrollpos'-room_height/16+fileaccess.downscreen+4000000"daction_if_variable2(-fileaccess.scrollpos+fileaccess.downscreen+4)-10room_height/16200000cfileaccess.scrollpos1000000000000000cfileaccess.scrollpos'-room_height/16+fileaccess.downscreen+4000000=daction_if_variable2(-fileaccess.scrollpos+fileaccess.downscreen+4)-10room_height/16200000cfileaccess.scrollpos1000000000000000cfileaccess.scrollpos'-room_height/16+fileaccess.downscreen+4000000daction_if_variable2(-fileaccess.scrollpos+fileaccess.downscreen+4)*16 room_height200000cfileaccess.scrollpos1000000help  [ show_info()0000000room1Word Processor P          @  XGame InformationX{\rtf1\ansi\ansicpg1252\deff0\deflang3081{\fonttbl{\f0\fnil\fcharset0 Arial;}{\f1\fnil MS Sans Serif;}} {\colortbl ;\red0\green0\blue0;} \viewkind4\uc1\pard\cf1\fs40 Word Processor\fs24 \par Tony Forster, June 2006 \par \i\fs16 May be copied with acknowledgement\i0\fs24 \par \par Demonstrates file read/write functions. How to create buttons and scrollbars. \par \par \b Challenges: \par \b0 \par Find as many ways as you can to make the program crash or misbehave, then fix them. \par \par How large a file can the program manage till it crashes. All text is read from the file to an array of strings. Can you read only those records into memory which are required? \par \par Make word wrap occur on a space. What will you do with long words like URL's? \par \par Export/import other file types, for example rtf. \par \par Make a file open dialogue box. \par \par Add editing and write to file. \par \par press escape to close this screen \par \par \cf0\b\f1\fs16 \par } Spritessprite6sprite7 file open helpSounds BackgroundsPathsScripts Fonts font0 Time LinesObjects fileaccess up down helpRoomsroom1 Game Information Global Game Settings