local sub = string.sub local find = string.find local fileName = "mappieces.dat" local firstLevel = 'file_example.fpm' g_mapPieceValues = g_mapPieceValues or "FFFFFFFFFFFFFFFF" -- sixteen values local fileRead = false local levelName = nil local sprites = nil local function loadSprites() sprites = { { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece01.png" ) ), x = 27.5, y = 10, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece02.png" ) ), x = 38.75, y = 10, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece03.png" ) ), x = 50, y = 10, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece04.png" ) ), x = 61.25, y = 10, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece05.png" ) ), x = 27.5, y = 30, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece06.png" ) ), x = 38.75, y = 30, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece07.png" ) ), x = 50, y = 30, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece08.png" ) ), x = 61.25, y = 30, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece09.png" ) ), x = 27.5, y = 50, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece10.png" ) ), x = 38.75, y = 50, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece11.png" ) ), x = 50, y = 50, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece12.png" ) ), x = 61.25, y = 50, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece13.png" ) ), x = 27.5, y = 70, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece14.png" ) ), x = 38.75, y = 70, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece15.png" ) ), x = 50, y = 70, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece16.png" ) ), x = 61.25, y = 70, xsize = -1, ysize = 20 } } for _, v in pairs( sprites ) do SetSpritePosition( v.spr, 200, 200 ) SetSpriteSize( v.spr, v.xsize, v.ysize ) end end local function saveValues() local file = io.open( "scriptbank\\" .. fileName, "w+" ) io.output( file ) if file ~= nil then io.write( levelName, "\n" ) io.write( g_mapPieceValues, "\n" ) end io.close( file ) end function fe_setPiece( num ) local str = g_mapPieceValues if num == 1 then g_mapPieceValues = 'T' .. sub( str, 2, #str ) elseif num == #str then g_mapPieceValues = sub( str, 1, num - 1 ) .. 'T' elseif num < #str then g_mapPieceValues = sub( str, 1, num - 1 ) .. 'T' .. sub( str, num + 1, #str ) end saveValues() end function fe_gotPiece( num ) return sub( g_mapPieceValues, num, num ) == 'T' end function file_example_init( e ) if sprites == nil then loadSprites() end end local function getLevelName( str ) local spos = 1 local epos = 0 while epos < #str do epos = find( str, '\\', spos + 1 ) or #str if epos < #str then spos = epos + 1 end end return sub( str, spos, epos ) end local mouseClick = false local imageDisplayed = false function file_example_main( e ) if not fileRead then local thisLevel = getLevelName( g_LevelFilename ) local fl = firstLevel if strLevelFilename ~= nil then local strLevel = getLevelName( strLevelFilename ) if strLevel == thisLevel then fl = strLevel end end if thisLevel ~= fl then local file = io.open( "scriptbank\\" .. fileName, "r") if file ~= nil then local level = file:read() if thisLevel ~= level then g_mapPieceValues = file:read() end io.close( file ) end end fileRead = true levelName = thisLevel end local pieces = "" local allFound = true for i = 1, #g_mapPieceValues do if fe_gotPiece( i ) then pieces = pieces .. i .. " " else allFound = false end end if allFound then Prompt( "All Found" ) else Prompt( pieces ) end if g_MouseClick == 1 then if not mouseClick then mouseClick = true if imageDisplayed then imageDisplayed = false for _, v in pairs( sprites ) do SetSpritePosition( v.spr, 200, 200 ) end else imageDisplayed = true for k, v in pairs( sprites ) do if fe_gotPiece( k ) then SetSpritePosition( v.spr, v.x, v.y ) end end end end else mouseClick = false end end