The Blog is closer to three weeks old, but either way, it's come a long way.
We now have object loaded from a data file, but to see them in the game, needs an updated icon sheet.
Here is the source, without transparency - to go in the artwork folder with the name standard source.png.
Here, I filled the magenta bits in orange to help me line up the new graphics. Filling the orange grid with magenta when all the objects have been added will put this back to normal.
And this is the transparent one for the media folder with the name standard.png.
They have both been optimised to keep the sizes down.
And here's a complete code check - Just over 900 lines - to keep everything in sync.
// 23 April 2012 - Tabs converted to 3 spaces // Constants must go at start of program #constant PANEL_ROWS 3 #constant PANEL_COLS 4 #constant DEPTH_MENU 10 #constant DEPTH_SCORE 20 #constant DEPTH_PANEL 30 #constant DEPTH_WORK 40 #constant MAX_WORKOBJECTS 100 #constant FRAME_HIGHLIGHT 251 #constant FRAME_TRASHCAN 252 #constant STATE_SETUP 0 #constant STATE_INTRO 1 #constant STATE_DEMO 2 #constant STATE_MENU 3 #constant STATE_RUNNING 4 #constant STATE_EXIT 99 #constant MENU_FADE 1.0 #constant MENU_ITEMS 2 #constant MENU_DIVTOP 0.25 #constant MENU_DIVSIZE 0.10 #constant MENU_RED 255 #constant MENU_GREEN 165 #constant MENU_BLUE 0 #constant MENU_REDHI 255 #constant MENU_GREENHI 255 #constant MENU_BLUEHI 0 #constant TRANS_NONE 0 #constant TRANS_FADEIN 1 #constant TRANS_FADEOUT 2 // User Defined Types - custom data structures type displayType physWidth# physHeight# virtWidth# virtHeight# iconSize# textHeight# lastFPS# iconImage highSprite transType transCount# transStep# endtype type touchType pointDX# pointDY# pointWX# pointWY# spritePicked objectPicked menuPicked pickOffsetX# pickOffsetY# endtype type panelType height# speed# isOpen image sprite text sound iconMax endtype type WorkObjectType isFree objectID sprite endtype type GameType state level topObject endtype type MainObjectType name$ detail$ icon isKnown isGroup endtype // I must remember to put this somewhere global numWorkObjects = 0 Initialise() // Temporary Objects imageRef = SafeloadImage( "finger.png" ) spriteRef = createSprite( imageRef ) // Main Loop do LoopStart() select GameState() case STATE_SETUP // Setup Code testNum = LoadObjectData( "standard" ) setGameState( STATE_INTRO ) // Workaround to ensure frame rate ok before menu is called // if timer() > 2.0 then setGameState( STATE_MENU ) endcase case STATE_INTRO // Intro Code print(" Objects : " + str( TopObject() ) ) for i=1 to TopObject() printc( str(i) + " : " + ObjectName( i ) + " : " + str( ObjectIcon( i) ) ) if ObjectIsGroup( i ) > 0 printc( ", Group: ") thisString$ = ObjectDetail( i ) thisNum = len( thisString$ ) / 2 for j = 1 to thisNum thisCode$ = mid( thisString$ , j*2 - 1 , 2) thisObject = Base96Decode( thisCode$ ) printc( ObjectName( thisObject ) ) if j < thisNum then printc( ", " ) next j print( "." ) else print( ", " + chr(34) + ObjectDetail( i ) + chr( 34 )) endif next i print( " ----- ") endcase case STATE_DEMO // Demo Code endcase case STATE_MENU // Menu Code if getTextVisible( menuText[ 1 ]) = 0 // Menu starting - Activate Transition StartTransition( TRANS_FADEIN , MENU_FADE ) thisX# = VirtWidth() / 2.0 thisY# = VirtHeight() * MENU_DIVTOP thisSize# = VirtHeight() * MENU_DIVSIZE for i=1 to MENU_ITEMS setTextSize( menuText[ i ] , thisSize# ) setTextAlignment( menuText[ i ] , 1 ) setTextDepth( menuText[ i ] , DEPTH_MENU ) setTextPosition( menuText[ i ] , thisX# , thisY# ) setTextVisible( menuText[ i ] , 1 ) setTextColor( menuText[ i ] , MENU_RED , MENU_GREEN, MENU_BLUE , 0 ) thisY# = thisY# + getTextTotalHeight( menuText[ i ] ) * 2.0 next i elseif (Transition() = TRANS_FADEIN) or (Transition() = TRANS_FADEOUT) thisAlpha = 255.0 * TransitionCount() if Transition() = TRANS_FADEOUT then thisAlpha = 255 - thisAlpha for i=1 to MENU_ITEMS setTextColorAlpha( menuText[ i ] , thisAlpha ) next i if TransitionCount() = 1.0 if Transition() = TRANS_FADEOUT // Menu Exiting for i=1 to MENU_ITEMS setTextVisible( menuText[ i ] , 0 ) next i select MenuPicked() case 1 // Menu Option 1 setGameState( STATE_RUNNING ) endcase case 2 // Menu Option 2 setGameState( STATE_EXIT ) endcase endselect endif StopTransition() endif endif checkMenuPointer() endcase case STATE_RUNNING // Running Code checkGamePointer() endcase case default // Picks up unknown states - including STATE_EXIT exit endcase endselect // Position temporary finger sprite setSpritePosition( spriteRef , PointDX() , PointDY() ) PrintDiagnostics() sync() loop end // Loop Functions function LoopStart() display.lastFPS# = screenFPS() panel.speed# = panelHeight() / (lastFPS() * 1.25) touch.pointDX# = getPointerX() touch.pointDY# = getPointerY() touch.pointWX# = ScreentoWorldX(PointDX()) touch.pointWY# = ScreentoWorldY(PointDY()) if Transition() > TRANS_NONE then UpdateTransition() endfunction // Game Functions function checkGamePointer() if getPointerPressed() > 0 if PointDY() >= getTextY( panelText() ) and PointDY() < getSpriteY( panelSprite() ) ToggleTrayOpen() elseif PointDY() < getTextY( panelText() ) touch.spritePicked = getSpriteHit( PointWX() , pointWY() ) if SpritePicked() > 0 touch.objectPicked = FindWorkObjectBySprite( SpritePicked() ) if ObjectPicked() > 0 touch.pickOffsetX# = PointWX() - getSpriteXByOffset( SpritePicked() ) touch.pickOffsetY# = PointWY() - getSpriteYByOffset( SpritePicked() ) endif endif endif elseif getPointerReleased() > 0 if thisObjectPicked > 0 thisX# = PointWX() - PickOffsetX() thisY# = PointWY() - PickOffsetY() HideHighLight() if WorldToScreenY( thisY#) >= getTextY( panelText() ) DelWorkObject( ObjectPicked() ) else setSpritePositionByOffset( SpritePicked() , thisX# , thisY# ) setSpriteDepth( SpritePicked() , DEPTH_WORK - 1 ) thisObjectUnder = WorkObjectIsOver( ObjectPicked() ) if thisObjectUnder > 0 // This is where the merge objects code goes endif endif endif touch.spritePicked = 0 touch.objectPicked = 0 touch.pickOffsetX# = 0.0 touch.pickOffsetY# = 0.0 elseif getPointerState() > 0 if ObjectPicked() > 0 thisX# = PointWX() - PickOffsetX() thisY# = PointWY() - PickOffsetY() setSpritePositionByOffset( SpritePicked() , thisX# , thisY# ) setSpriteDepth( SpritePicked() , DEPTH_PANEL - 5 ) if WorldToScreenY( thisY#) >= getTextY( panelText() ) HighlightSprite( SpritePicked() , FRAME_TRASHCAN ) else thisObjectUnder = WorkObjectIsOver( ObjectPicked() ) if thisObjectUnder > 0 HighlightSprite( WorkObjectSprite( thisObjectUnder ) , FRAME_HIGHLIGHT ) else HideHighLight() endif endif endif endif if panelIsOpen() = 1 if getSpriteY( panelSprite() ) > ( PhysHeight() - panelHeight() ) MovePanel( -panelSpeed() ) endif else if getSpriteY( panelSprite() ) < PhysHeight() MovePanel( panelSpeed() ) endif endif endfunction // Menu Functions function checkMenuPointer() thisMenuSelected = 0 for i=1 to MENU_ITEMS if getTextHitTest( menuText[ i ] , PointDX() , PointDY() ) > 0 thisMenuSelected = i exit endif next i if getPointerPressed() > 0 // Pointer Pressed touch.menuPicked = thisMenuSelected elseif getPointerReleased() > 0 // Pointer Released if thisMenuSelected > 0 and thisMenuSelected = MenuPicked() then StartTransition( TRANS_FADEOUT , MENU_FADE ) elseif getPointerState() > 0 // PointerHeld if MenuPicked() > 0 if thisMenuSelected = MenuPicked() setTextColorRed( menuText[ MenuPicked() ] , MENU_REDHI ) setTextColorGreen( menuText[ MenuPicked() ] , MENU_GREENHI ) setTextColorBlue( menuText[ MenuPicked() ] , MENU_BLUENHI ) else setTextColorRed( menuText[ MenuPicked() ] , MENU_RED ) setTextColorGreen( menuText[ MenuPicked() ] , MENU_GREEN ) setTextColorBlue( menuText[ MenuPicked() ] , MENU_BLUE ) endif endif endif endfunction // Transition Functions function StartTransition( thisType , thisTime# ) display.transType = thisType display.transCount# = 0.0 display.transStep# = 1.0 / ( lastFPS() * thisTime# ) endfunction function StopTransition() display.transType = TRANS_NONE endfunction function UpdateTransition() if TransitionCount() < 1.0 then display.transCount# = TransitionCount() + TransitionStep() if TransitionCount() > 1.0 then display.transCount# = 1.0 endfunction // Diagnostic Functions function PrintDiagnostics() printc( "Phy: " + str( PhysWidth() , 0) + " x " + str( PhysHeight() , 0 )) printc( ", Vir: " + str( VirtWidth() , 1) + " x " + str( VirtHeight() , 1 )) print( ", @ " + str ( lastFPS() , 2 ) + " fps" + chr(10) ) printc("Transition Type : " + str( Transition() ) ) printc(", Count: " + str( TransitionCount() , 3 ) ) print(", Step: " + str( TransitionStep() , 3 ) + chr(10)) print("Game State : " + str( GameState() ) + chr(10)) print("Objects : " + str( TopObject() ) + chr(10) ) printc( "Pointer (Display): " ) print( str( PointDX() ) + " x " + str( PointDY() ) ) printc( "Pointer (World): " ) print( str( PointWX() ) + " x " + str( PointWY() ) ) printc( "Sprite: ") print( str( getSpriteHit( PointDX() , PointDY() ))) printc( "Sprite Picked: ") printc( str( SpritePicked() )) printc( ", Object Picked: ") printc( str( ObjectPicked() )) printc( ", Over : " ) print( str( WorkObjectIsOver( ObjectPicked() ) )) endfunction // Panel Functions function ToggleTrayOpen() panel.isOpen = 1 - panelIsOpen() if panelSound() > 0 then playSound( panelSound() ) endfunction function MovePanel( distance# ) setSpriteY( panelSprite() , getSpriteY( panelSprite() ) + distance# ) setTextY( panelText() , getTextY( panelText() ) + distance# ) PositionPanelIcons() endfunction function PositionPanelIcons() iconDepth = getSpriteDepth( PanelSprite() ) - 1 for icon = 1 to panelIconMax() offset = icon - 1 col = offset mod PANEL_COLS row = offset / PANEL_COLS x = col * IconSize() + 2 y = row * IconSize() + getSpriteY( PanelSprite() ) + 2 setSpritePosition( panelIconSprite[ icon ] , x , y ) setSpriteDepth( panelIconSprite[ icon ] , iconDepth ) next icon endfunction // Load Functions function SafeLoadImage( thisFileName$ ) if getFileExists( thisFileName$ ) thisImageRef = loadImage( thisFileName$ ) else thisImageRef = 0 endif endfunction thisImageRef function SafeLoadSound( thisFileName$ ) if getFileExists( thisFileName$ ) thisSoundRef = loadSound( thisFileName$ ) else thisSoundRef = 0 endif endfunction thisSoundRef // Base 96 Functions function Base96Encode( thisValue ) lowValue = thisValue mod 96 highValue = ( thisValue / 96 ) mod 96 thisString$ = chr( highValue + 32 ) + chr( lowValue + 32 ) endfunction thisString$ function Base96Decode( thisString$ ) thisLen = len(thisString$) if thisLen = 0 thisValue = 0 else if thisLen = 1 then thisString$ = " " + thisString$ highValue = asc( left( thisString$ , 1 ) ) - 32 lowValue = asc( mid( thisString$ , 2, 1 ) ) - 32 thisValue = highValue * 96 + lowValue endif endfunction thisValue function Base96Sort( thisString$ ) thisLen = len(thisString$) if thisLen > 2 and (thisLen && 1) = 0 thisArraySize = thisLen / 2 dim tempArray[ thisArraySize ] as string for i=1 to thisArraySize tempArray[ i ] = mid( thisString$ , i*2 - 1 , 2) next i SortTempArray( thisArraySize ) thisString$ = "" for i=1 to thisArraySize thisString$ = thisString$ + tempArray[ i ] next i endif endfunction thisString$ function SortTempArray( thisSize ) for i=1 to thisSize - 1 thisLow = i for j = i + 1 to thisSize if tempArray[j] < tempArray[thisLow] then thisLow = j next j if thisLowest <> i temp$ = tempArray[i] tempArray[i] = tempArray[thisLow] tempArray[thisLow] = temp$ endif next i endfunction // Main Object Functions function ObjectValid( thisObject ) thisBool = ( thisObject > 0 and thisObject <= TopObject() ) endfunction thisBool function FindObjectByName( thisName$ ) thisName$ = upper( thisName$ ) for thisObject = 1 to TopObject() if upper( ObjectName( thisObject )) = thisName$ then exit next thisObject if thisObject > TopObject() then thisObject = 0 endfunction thisObject // Work Object Functions function TopWorkObject() endfunction numWorkObjects function WorkObjectValid( thisObject ) thisBool = ( thisObject > 0 and thisObject <= TopWorkObject() ) endfunction thisBool function FirstFreeWorkObject() for thisObject = 1 to TopWorkObject() if WorkObjectIsFree( thisObject ) > 0 then exit next thisObject if thisObject > MAX_WORKOBJECTS then thisObject = 0 endfunction thisObject function AddWorkObject( thisObjectID, thisSprite ) thisObject = FirstFreeWorkObject() if thisObject > TopWorkObject() then numWorkObjects = thisObject if WorkObjectValid( thisObject ) workObject[ thisObject ].isFree = 0 workObject[ thisObject ].objectID = thisObjectID workObject[ thisObject ].sprite = thisSprite endif endfunction thisObject function DelWorkObject( thisObject ) if WorkObjectValid( thisObject ) workObject[ thisObject ].isFree = 1 if WorkObjectSprite( thisObject ) > 0 thisSprite = WorkObjectSprite( thisObject ) workObject[ thisObject ].sprite = 0 if getSpriteExists( thisSprite ) then deleteSprite( thisSprite ) endif while WorkObjectIsFree( TopWorkObject() ) = 1 and TopWorkObject() >= 0 dec numWorkObjects , 1 endwhile endif endfunction function CreateWorkObjectSprite( thisObject , thisX , thisY ) if WorkObjectIsFree( thisObject ) = 0 if WorkObjectSprite( thisObject ) = 0 then workObject[ thisObject ].sprite = createSprite( IconImage() ) thisSprite = WorkObjectSprite( thisObject ) fixSpriteToScreen( thisSprite , 0 ) setSpriteSize( thisSprite , IconSize() , - 1) setSpriteOffset( thisSprite , iconSize() / 2.0 , iconSize() / 2.0 ) setSpritePositionByOffset( thisSprite , thisX , thisY ) setSpriteDepth( thisSprite , DEPTH_WORK - 1 ) setSpriteAnimation( thisSprite , 64 , 64 , 252 ) setSpriteFrame( thisSprite , WorkObjectID( thisObject ) ) endif endfunction function WorkObjectIsOver( thisWorkObject ) thisSprite = WorkObjectSprite( thisWorkObject ) if thisSprite > 0 thisX# = getSpriteXByOffset( thisSprite ) thisY# = getSpriteYByOffset( thisSprite ) for thisObject = 1 to TopWorkObject() if thisObject <> thisWorkObject thisSprite = WorkObjectSprite( thisObject ) if thisSprite > 0 diffX# = abs( getSpriteXByOffset( thisSprite ) - thisX# ) diffY# = abs( getSpriteYByOffset( thisSprite ) - thisY# ) if diffX# < iconSize() and diffY# < iconSize() then exit endif endif next thisObject if thisObject > TopWorkObject() then thisObject = 0 else thisObject = -1 endif endfunction thisObject function FindWorkObjectBySprite( thisSprite ) for thisObject = 1 to TopWorkObject() if WorkObjectSprite( thisObject ) = thisSprite then exit next thisObject if thisObject > TopWorkObject() then thisObject = 0 endfunction thisObject function HideHighLight() if HighSprite() > 0 if getSpriteExists( HighSprite() ) then deleteSprite( HighSprite() ) display.highSprite = 0 endif endfunction function HighlightSprite( thisSprite , thisFrame ) if thisSprite > 0 and thisFrame > 0 and thisFrame < 253 if getSpriteExists( thisSprite ) HideHighLight() display.highSprite = cloneSprite( thisSprite ) setSpriteFrame( HighSprite() , thisFrame ) setSpriteDepth( HighSprite() , getSpriteDepth( HighSprite() ) - 1) endif endif endfunction // Game State Functions function SetGameState( thisState ) game.state = thisState endfunction // Data Load Functions function LoadObjectData( thisName$ ) // Pass the name without extension thisTextName$ = thisName$ + ".txt" thisImageName$ = FindImageFile( thisName$ ) if getFileExists( thisTextName$ ) and thisImageName$ <> "" // Both data files exist dim tempArray[ 1000 ] as string thisArraySize = 0 thisFile = openToRead( thisTextName$ ) thisString$ = readLine( thisFile ) repeat if thisString$ <> "" inc thisArraySize , 1 tempArray[ thisArraySize ] = thisString$ endif thisString$ = readLine( thisFile ) until fileEof( thisFile ) > 0 closefile( thisFile ) // Convert Data to Array game.topObject = thisArraySize dim MainObject[ topObject() ] as MainObjectType for i=1 to topObject() thisString$ = tempArray[ i ] thisLen = len( thisString$ ) thisComma = FindSubString( thisString$ , "," , 1 ) thisColon = FindSubString( thisString$ , ":" , thisComma + 1 ) if thisComma > 0 MainObject[ i ].name$ = left( thisString$ , thisComma - 1) if thisColon > 0 MainObject[ i ].detail$ = right( thisString$ , thisLen - thisColon ) thisLen = thisColon - 1 thisString$ = left( thisString$ , thisLen) else MainObject[ i ].detail$ = "" endif thisString$ = right( thisString$ , thisLen - thisComma ) thisValue = val( thisString$ ) MainObject[ i ].icon = abs( thisValue ) MainObject[ i ].isKnown = 0 if thisValue < 0 MainObject[ i ].isGroup = 1 else MainObject[ i ].isGroup = 0 endif endif next i // Recipes Go Here for i=topObject() + 1 to thisArraySize next i // Clear Temp Array dim tempArray[ 0 ] // Group Memberships for i=1 to topObject() if ObjectIsGroup( i ) > 0 and ObjectDetail( i ) <> "" thisString$ = ObjectDetail( i ) thisLen = len( thisString$ ) thisStart = 1 thisCoded$ = "" while thisStart < thisLen thisComma = FindSubString( thisString$ , "," , thisStart ) if thisComma = 0 then thisComma = thisLen + 1 thisObject$ = mid( thisString$ , thisStart , thisComma - thisStart ) // convert to base96 thisObject = FindObjectByName( thisObject$ ) if thisObject > 0 then thisCoded$ = thisCoded$ + Base96Encode( thisObject ) thisStart = thisComma + 1 endwhile MainObject[ i ].detail$ = Base96Sort( thisCoded$ ) endif next i endif endfunction thisArraySize function FindImageFile( thisName$ ) thisString$ = "" if getFileExists( thisName$ + ".png" ) thisString$ = thisName$ + ".png" elseif getFileExists( thisName$ + ".jpg" ) thisString$ = thisName$ + ".jpg" elseif getFileExists( thisName$ + ".bmp" ) thisString$ = thisName$ + ".bmp" endif endfunction thisString$ // String Functions function FindSubString( thisString$ , thisSearch$ , thisStart ) thisLen = len( thisSearch$ ) thisSearch$ = upper( thisSearch$ ) thisString$ = upper( thisString$ ) thisEnd = len( thisString$ ) - thisLen + 1 for thisPos = thisStart to thisEnd if mid( thisString$ , thisPos , thisLen ) = thisSearch$ then exit next i if thisPos > thisEnd then thisPos = 0 endfunction thisPos // Initialisation Functions function Initialise() // Prepare Globals global game as gameType game.level = 0 game.state = STATE_SETUP game.topObject = 0 global touch as touchType touch.pointDX# = 0.0 touch.pointDY# = 0.0 touch.pointWX# = 0.0 touch.pointWY# = 0.0 touch.spritePicked = 0 touch.objectPicked = 0 touch.menuPicked = 0 touch.pickOffsetX# = 0.0 touch.pickOffsetY# = 0.0 global display as displayType display.physWidth# = getDeviceWidth() display.physHeight# = getDeviceHeight() display.virtWidth# = PhysWidth() display.virtHeight# = PhysHeight() display.iconSize# = PhysWidth() / PANEL_COLS display.textHeight# = PhysHeight() / 20.0 display.highSprite = 0 display.iconImage = SafeloadImage( "objects.png" ) display.transType = TRANS_NONE display.transCount# = 0.0 display.transStep# = 0.0 global panel as panelType panel.iconMax = PANEL_ROWS * PANEL_COLS panel.height# = IconSize() * PANEL_ROWS panel.speed# = 0.0 panel.isOpen = 0 panel.Image = SafeloadImage( "panel.jpg" ) panel.sprite = createSprite( PanelImage() ) panel.text = createText( "Objects" ) panel.sound = SafeLoadSound("panel.wav") setImageWrapU( PanelImage() , 1 ) setImageWrapV( PanelImage() , 1 ) uScale# = getImageWidth( PanelImage() ) / PhysWidth() vScale# = getImageHeight( PanelImage() ) / PanelHeight() setSpriteUVScale( PanelSprite() , uScale# , vScale# ) setSpriteSize( PanelSprite() , PhysWidth() , PanelHeight() ) setSpritePosition( PanelSprite() , 0 , PhysHeight() ) setSpriteDepth( PanelSprite() , DEPTH_PANEL) setTextSize( panelText() , textHeight() ) setTextAlignMent( panelText() , 1) setTextPosition( panelText() , PhysWidth() / 2.0 , PhysHeight() - TextHeight() ) setTextDepth( panelText() , DEPTH_PANEL - 1 ) // Prepare Arrays dim panelIconSprite[ panelIconMax() ] for icon = 1 to panelIconMax() panelIconSprite[ icon ] = createSprite( 0 ) setSpriteSize( panelIconSprite[ icon ] , IconSize() - 4, IconSize() - 4) setSpriteColor( panelIconSprite[ icon ] , 255 , 255 , 255 , 127 ) next icon dim workObject[ MAX_WORKOBJECTS ] as WorkObjectType for thisObject = 1 to MAX_WORKOBJECTS workObject[ thisObject ].isFree = 1 workObject[ thisObject ].objectID = 0 workObject[ thisObject ].sprite = 0 next thisObject setVirtualResolution( VirtWidth(), VirtHeight() ) PositionPanelIcons() dim menuString[ 5 ] as string = [ "" , "Start Game" , "Exit", "Option 4" , "Option 5" , "Option 6" ] dim menuText[ MENU_ITEMS ] for i=1 to MENU_ITEMS menuText[ i ] = createText( menuString[i] ) setTextVisible( menuText[ i ] , 0 ) next i dim MainObject[0] as MainObjectType endfunction // Return Functions - Game function GameLevel() endfunction game.level function GameState() endfunction game.state function TopObject() endfunction game.topObject // Return Functions - Display function PhysWidth() endfunction display.physWidth# function PhysHeight() endfunction display.physHeight# function VirtWidth() endfunction display.virtWidth# function VirtHeight() endfunction display.virtHeight# function IconSize() endfunction display.iconSize# function TextHeight() endfunction display.textHeight# function LastFPS() endfunction display.lastFPS# function IconImage() endfunction display.iconImage function HighSprite() endfunction display.highSprite function Transition() endfunction display.transType function TransitionCount() endfunction display.transCount# function TransitionStep() endfunction display.transStep# // Return Functions - Touch function PointDX() endfunction touch.pointDX# function PointDY() endfunction touch.pointDY# function PointWX() endfunction touch.pointWX# function PointWY() endfunction touch.pointWY# function SpritePicked() endfunction touch.spritePicked function ObjectPicked() endfunction touch.objectPicked function MenuPicked() endfunction touch.menuPicked function PickOffsetX() endfunction touch.pickOffsetX# function PickOffsetY() endfunction touch.pickOffsetY# // Return Functions - Panel function PanelHeight() endfunction panel.height# function PanelSpeed() endfunction panel.speed# function PanelIsOpen() endfunction panel.isOpen function PanelImage() endfunction panel.image function PanelSprite() endfunction panel.sprite function PanelText() endfunction panel.text function PanelSound() endfunction panel.sound function PanelIconMax() endfunction panel.iconMax // Return Functions - WorkObject Array function WorkObjectIsFree( thisObject ) if WorkObjectValid( thisObject ) thisIsFree = workObject[ thisObject ].isFree else thisIsFree = -1 endif endfunction thisIsFree function WorkObjectID( thisObject ) if WorkObjectValid( thisObject ) thisObjectID = workObject[ thisObject ].objectID else thisObjectID = -1 endif endfunction thisObjectID function WorkObjectSprite( thisObject ) if WorkObjectValid( thisObject ) thisSprite = workObject[ thisObject ].sprite else thisSprite = -1 endif endfunction thisSprite // Return Functions - Main Object function ObjectName( thisObject ) if ObjectValid( thisObject ) thisString$ = MainObject [ thisObject ].name$ else thisString$ = "" endif endfunction thisString$ function ObjectDetail( thisObject ) if ObjectValid( thisObject ) thisString$ = MainObject [ thisObject ].detail$ else thisString$ = "" endif endfunction thisString$ function ObjectIcon( thisObject ) if ObjectValid( thisObject ) thisIcon = MainObject [ thisObject ].icon else thisIcon = -1 endif endfunction thisIcon function ObjectIsKnown( thisObject ) if ObjectValid( thisObject ) thisBool = MainObject [ thisObject ].isKnown else thisBool = -1 endif endfunction thisBool function ObjectIsGroup( thisObject ) if ObjectValid( thisObject ) thisBool = MainObject [ thisObject ].isGroup else thisBool = -1 endif endfunction thisBool //
No comments:
Post a Comment