local sub = string.sub local find = string.find g_mapPieceValues = g_mapPieceValues or "FFFFFFFFFFFFFFFF" -- sixteen values local fileRead = false local levelName = nil local sprites = nil local swm = (1920 / 1080) / (GetDesktopWidth() / GetDesktopHeight()) local xcol1 = 50-(16.875*swm) local xcol2 = 50-(5.625*swm) local xcol3 = 50+(5.625*swm) local xcol4 = 50+(16.875*swm) local spritetrigger = 0 local delay = 15 local promptdelay = 2000 local spralph = 0 local function loadSprites() sprites = { { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece01.png" ) ), x = xcol1, y = 20, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece02.png" ) ), x = xcol2, y = 20, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece03.png" ) ), x = xcol3, y = 20, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece04.png" ) ), x = xcol4, y = 20, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece05.png" ) ), x = xcol1, y = 40, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece06.png" ) ), x = xcol2, y = 40, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece07.png" ) ), x = xcol3, y = 40, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece08.png" ) ), x = xcol4, y = 40, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece09.png" ) ), x = xcol1, y = 60, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece10.png" ) ), x = xcol2, y = 60, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece11.png" ) ), x = xcol3, y = 60, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece12.png" ) ), x = xcol4, y = 60, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece13.png" ) ), x = xcol1, y = 80, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece14.png" ) ), x = xcol2, y = 80, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece15.png" ) ), x = xcol3, y = 80, xsize = -1, ysize = 20 }, { spr = CreateSprite( LoadImage( "scriptbank\\images\\ignite\\puzzle\\mappiece16.png" ) ), x = xcol4, y = 80, xsize = -1, ysize = 20 } } for _, v in pairs( sprites ) do SetSpritePosition( v.spr, 200, 200 ) SetSpriteOffset ( v.spr , -1 , 10 ) SetSpriteSize( v.spr, v.xsize, v.ysize ) end end local function saveValues() local file = io.open( "scriptbank\\mappieces.dat", "w+" ) io.output( file ) if file ~= nil then io.write( levelName, "\n" ) io.write( g_mapPieceValues, "\n" ) end io.close( file ) end function fe_gotPiece( num ) return sub( g_mapPieceValues, num, num ) == 'T' end local imageDisplayed = false local function showImage() imageDisplayed = true for k, v in pairs( sprites ) do if fe_gotPiece( k ) then SetSpritePosition( v.spr, v.x, v.y ) end end end local function hideImage() imageDisplayed = false for _, v in pairs( sprites ) do SetSpritePosition( v.spr, 200, 200 ) end end function fe_setPiece( num ) local str = g_mapPieceValues local update = sub( str, num, num ) == 'F' 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() if update and imageDisplayed then showImage() end 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 function file_example_main( e ) if not fileRead then levelName = getLevelName( g_LevelFilename ) if strLevelFilename ~= nil then -- we have just loaded this level from a save game so save the file saveValues() else -- level change or new game -- if a new game the change to title.lua will have deleted the file local file = io.open( "scriptbank\\" .. "mappieces.dat", "r") if file ~= nil then -- file exists so must be a level change Dr Watson local level = file:read() g_mapPieceValues = file:read() io.close( file ) end end fileRead = true 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 PromptLocal( e, pieces ) end if newpieceaquired == 1 then showImage() StartTimer(e) newpieceaquired = 2 end if newpieceaquired == 2 and GetTimer(e) > promptdelay then Prompt ("Press E to continue") if g_KeyPressE == 1 then hideImage() newpieceaquired = 0 end end end