0 Members and 1 Guest are viewing this topic.
-- BetterLuaAPI for TI-Nspire-- Version 2.2 (Aug 28th 2011)-- Adriweb 2011 -- Thanks to Jim Bauwens and Levak-- [email protected]-- Put all this or some of this (be careful, though, some functions use each other) in your code and thank me ;)-- Remember to put "myGC = gc" in the on.paint(gc) function.-- See the use of that device table in the on.paint functionlocal function drawPoint(x, y) myGC:fillRect(x, y, 1, 1)endlocal function drawCircle(x, y, diameter) myGC:drawArc(x - diameter/2, y - diameter/2, diameter,diameter,0,360)endlocal function drawCenteredString(str) myGC:drawString(str, (pww() - myGC:getStringWidth(str)) / 2, pwh() / 2, "middle")endlocal function pww() return platform.window:width()endlocal function drawXCenteredString(str,y) myGC:drawString(str, (pww() - myGC:getStringWidth(str)) / 2, y, "top")endlocal function verticalBar(x) myGC:fillRect(x,0,1,platform.window:height())endlocal function horizontalBar(y) myGC:fillRect(0,y,platform.window:width(),1)endlocal function drawSquare(x,y,l) myGC:drawPolyLine({(x-l/2),(y-l/2), (x+l/2),(y-l/2), (x+l/2),(y+l/2), (x-l/2),(y+l/2), (x-l/2),(y-l/2)})endlocal function drawRoundRect(x,y,wd,ht,rd) -- wd = width, ht = height, rd = radius of the rounded corner x = x-wd/2 -- let the center of the square be the origin (x coord) y = y-ht/2 -- same for y coord if rd > ht/2 then rd = ht/2 end -- avoid drawing cool but unexpected shapes. This will draw a circle (max rd) myGC:drawLine(x + rd, y, x + wd - (rd), y); myGC:drawArc(x + wd - (rd*2), y + ht - (rd*2), rd*2, rd*2, 270, 90); myGC:drawLine(x + wd, y + rd, x + wd, y + ht - (rd)); myGC:drawArc(x + wd - (rd*2), y, rd*2, rd*2,0,90); myGC:drawLine(x + wd - (rd), y + ht, x + rd, y + ht); myGC:drawArc(x, y, rd*2, rd*2, 90, 90); myGC:drawLine(x, y + ht - (rd), x, y + rd); myGC:drawArc(x, y + ht - (rd*2), rd*2, rd*2, 180, 90);endlocal function fillRoundRect(x,y,wd,ht,radius) -- wd = width and ht = height -- renders badly when transparency (alpha) is not at maximum >< will re-code later if radius > ht/2 then radius = ht/2 end -- avoid drawing cool but unexpected shapes. This will draw a circle (max radius) myGC:fillPolygon({(x-wd/2),(y-ht/2+radius), (x+wd/2),(y-ht/2+radius), (x+wd/2),(y+ht/2-radius), (x-wd/2),(y+ht/2-radius), (x-wd/2),(y-ht/2+radius)}) myGC:fillPolygon({(x-wd/2-radius+1),(y-ht/2), (x+wd/2-radius+1),(y-ht/2), (x+wd/2-radius+1),(y+ht/2), (x-wd/2+radius),(y+ht/2), (x-wd/2+radius),(y-ht/2)}) x = x-wd/2 -- let the center of the square be the origin (x coord) y = y-ht/2 -- same myGC:fillArc(x + wd - (radius*2), y + ht - (radius*2), radius*2, radius*2, 1, -91); myGC:fillArc(x + wd - (radius*2), y, radius*2, radius*2,-2,91); myGC:fillArc(x, y, radius*2, radius*2, 85, 95); myGC:fillArc(x, y + ht - (radius*2), radius*2, radius*2, 180, 95);endlocal function drawLinearGradient(color1,color2) -- syntax would be : color1 and color2 as {r,g,b}. -- don't really know how to do that. probably converting to hue/saturation/light mode and change the hue. -- todo with unpack(color1) and unpack(color2)end--------------- End of BetterLuaAPI--------------- Start of application--Variables used throughout the application--Set api levelplatform.apilevel = '1.0'--'System' variableswidth = platform.window:width()height = platform.window:height()--Define the various screens and set the main screenmain, blocks, items, mobs, terrain, title = 0, 1 ,2, 3, 4, 5screen = main--Array of paint, which will hold all the paint functions for different screenspaint = {}--All images used in the applicationSectionBlocks = image.new("&\000\000\000&\000\000\000\000\000\000\000L\000\000\000\016\000\001\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000)\174)\174)\174\204\186\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\200\165J\178)\174\009\170j\178\139\182\009\174\232\169\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000*\174J\178\232\165\232\165\009\170\232\169\009\170*\174\009\170\232\169\232\169\233\169\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\200\165\200\165\009\174*\174\233\169\009\174\009\174\009\170\232\169\232\169\009\174\009\170\232\169\009\170\200\165\200\165\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000J\178J\178\009\170\232\169)\174*\174\232\169)\174\009\174\009\174*\174\009\174\009\170\232\169\009\170\009\174\232\165\009\170)\174*\174\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000*\174)\174)\174)\174)\174*\174*\174)\174\009\174)\174\009\170\009\174j\178J\178\232\169\232\165\009\170\009\170\232\169\232\169J\174)\174\009\170\232\169\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\172\182J\178\232\169J\174*\174\009\174k\178k\178j\178J\174\009\170\009\170\232\169\232\169\009\174\009\174*\174j\178)\174\232\165\009\170J\174j\178J\178\009\170\232\169\232\169\232\169\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000J\178\009\170\009\170k\178*\174*\174\009\170)\174J\178\009\170\009\170*\174\009\170\232\169)\174)\174\232\165\232\169\009\170)\174*\174\200\165\232\165\009\170J\178j\178*\174\139\182)\174J\174\009\170\135\161\000\000\000\000\000\000\000\000\000\000\200\165\009\170J\174J\178J\178\200\165\232\169\009\170*\174)\174\232\169J\178J\178J\178J\178J\178)\174\009\174\009\174\009\170\009\170)\174\232\169\232\169J\178*\174\009\170\232\169\200\165\232\169\232\169\200\165\232\165\167\161\000\000\000\000\000\000\000\000f\157\200\165\009\170)\174j\178\232\169\009\174\232\169\009\174\009\174\232\169\009\174\009\170\009\174\009\170\232\169*\174k\178j\178*\174)\174k\178J\174\232\169\232\169*\174\232\169\233\169)\174\233\169J\178\232\169%\153\228\144\000\000\000\000\000\000\000\000f\157\167\161\135\161\135\161\232\169J\174k\182J\178*\174\232\169\233\169\200\165\232\169\009\174k\178)\174\232\169)\174\009\170\233\169\233\169\232\169\009\174)\174)\174\009\170\233\169\233\169\009\170\167\161F\157\004\149\195\144\228\144\000\000\000\000\000\000\000\000\134\157E\157f\157f\157E\153\167\161\009\170)\174)\174\009\174\139\182J\178\009\170\009\170\009\174\009\170)\174)\174)\174J\174\009\170\009\170)\174)\174\009\170)\174\009\170\232\169E\153\228\144\228\148\228\144\195\144\131\144\000\000\000\000\000\000\000\000F\157\196\156%\157f\157f\157E\157E\153\135\161\232\169\009\170\232\169\009\170)\174*\174\009\174\232\169\200\165\009\170*\174\009\170)\174j\178)\174)\174\232\169\009\174f\157\228\148\228\144\004\149\005\149\195\144\163\144b\148\000\000\000\000\000\000\000\000\163\156\230\156\005\153E\153F\157\228\156\005\157F\153f\157\167\165k\178)\174\009\170\009\174)\174)\174)\174J\178)\174\200\165\232\169\009\174\009\170\167\161%\153\228\148\228\148\004\149\004\149\228\148\130\144\163\144\130\144\131\152\000\000\000\000\000\000\000\000\005\173\230\164\164\156\195\152%\153\228\156\005\157F\157E\153f\157f\157\134\157)\174\009\174*\174J\178\009\170)\174\009\174\200\165\232\169\200\165E\153\195\144\195\144\195\144\228\148\004\149\004\149\195\148b\148b\144b\148\131\152\000\000\000\000\000\000\000\000\229\168\196\164\229\168\228\168%\157\228\156\228\156\004\157\004\153f\157\135\161f\157F\153\135\161\232\169\009\170\009\170\009\170J\178)\174F\157\228\144\163\144\195\144\195\144\195\144\228\148\228\148\195\144b\148\131\152\131\152b\148\196\160\000\000\000\000\000\000\000\000\005\173\163\156\229\168&\181\228\164\196\160\163\156\163\156\228\156f\157\135\161\135\161f\157\135\161\135\161f\157\009\170\232\165f\157\228\148\228\144\228\148\130\144\195\144\130\144\163\144\163\144\130\144\163\144\164\148\131\152\131\152\131\152\196\164\000\000\000\000\000\000\000\000G\185\228\168\229\168\005\173\196\164\228\168\229\168\163\160\228\152%\153F\157\135\161\135\161\167\165F\157%\153F\157\228\148\005\149\004\149\228\148\228\144\130\144\131\144b\144\130\144\130\144b\144c\148\131\148\131\152\131\152\131\152\163\156\000\000\000\000\000\000\000\000\196\164\196\164\196\164\196\164\229\168\229\168\196\164\196\164\196\160\195\152\196\156F\157%\161\163\152%\153E\153F\157\228\144\195\144\228\144\195\144\228\144\130\144b\144b\148b\148b\144\130\148\130\148\131\152\131\152\163\156\163\156\163\156\000\000\000\000\000\000\000\000\005\173\196\164&\181\006\177(\169\007\169\196\164\131\156\163\156\131\156\163\156\228\156\163\156\196\160\004\153%\153\228\156\004\149b\144\163\144b\144\195\144\163\152\131\152\130\148b\148b\148\163\156\196\164\164\160\131\152\131\152\163\152\131\152\000\000\000\000\000\000\000\000\229\168\228\164\229\168&\181&\177\005\173\196\164\229\172\228\168\163\160\196\160\196\156\007\161\196\164\163\156\163\156\163\156\195\148\164\148b\144\131\156b\148\163\152\130\148b\144\131\152\163\156\163\156\196\160\163\156\131\152\130\148b\148\163\156\000\000\000\000\000\000\000\000\196\164\005\173\196\164\229\168\229\168\005\173\229\168\229\168&\181\006\177\196\164\196\164\164\156\228\164\229\172\131\156\196\164b\144\132\148\163\156\196\164\131\152\163\156\130\152\163\160\196\164\131\152\131\152\163\156\131\152\131\152\163\156\131\152\163\156\000\000\000\000\000\000\000\000\196\164\005\173\196\160\196\160\196\164\229\168\229\168\196\164\229\168\229\172\229\168&\181\229\168\196\164\228\168\163\156\196\164\163\156\130\152\163\156\163\156\164\152\163\152\131\152\131\152\163\156\131\152\163\156\163\156\163\156\196\164\196\160\165\152\131\152\000\000\000\000\000\000\000\000\005\173\229\168\228\168\005\173\229\168\163\160\164\160\163\160\196\160\196\164\196\160&\177&\181\196\164\229\168\196\164&\181\131\152b\144\131\152\131\152\197\156\164\156\131\152\130\148\130\148\131\152\163\156\131\152\163\156\196\160\164\156\164\152b\144\000\000\000\000\000\000\000\000\229\168\196\164\196\164\006\177G\185\229\168\163\160\163\160\196\164\229\168\005\173\005\173\005\173\196\164\005\173\196\164&\181\163\156\131\152\131\152\164\160\164\160\163\156\131\152b\148\130\148\131\152\163\156\131\156b\148\163\156\163\156\131\152\163\156\000\000\000\000\000\000\000\000\196\164\163\156\228\168\005\173\005\177\005\173\006\177\006\177\196\164\196\164\229\168\229\172\196\164\196\164\196\164\229\172\005\173\196\164\131\152\196\164\196\164\131\152\163\156\130\148\130\148\130\152\163\156\196\164\163\156b\148b\148\163\156\196\164\196\164\000\000\000\000\000\000\000\000\196\164\229\168\229\168\228\168\005\173&\181\006\177\005\173\196\164\196\164\229\168\196\164\196\164\228\168\196\164\229\168\005\173\131\152\131\152\131\152\163\156\131\152b\148\130\148\163\156\131\152\163\152\164\160\163\156\131\152\131\152\163\156\164\160\163\156\000\000\000\000\000\000\000\000\005\173\229\168\196\164\196\164\229\168\005\173\006\177\005\173\006\169\006\169G\185\005\177\196\164G\185\005\173\163\156\228\168\163\156\131\152b\148\130\152\163\156\131\152\164\160\164\160\164\152\164\152\131\152\131\152\130\152\163\156\196\164\163\156\163\156\000\000\000\000\000\000\000\000\005\173\228\168\163\156\229\168\229\164\229\164\006\177\005\177\229\164\006\165\005\177\005\173\163\160&\177&\181\196\164\229\168\163\156\163\156b\148\164\160\196\164\164\160\163\156\163\156\131\152\131\152\131\152\163\156b\148\131\152\131\152\163\156b\148\000\000\000\000\000\000\000\000\005\173\196\164\005\173&\177\005\173\196\160\229\168\005\173\228\168\196\164\228\168\229\168\196\164\228\164\006\173(\169\005\173\131\152\163\156\131\152\196\160\164\160\196\160\196\160\163\156\131\152b\148\131\152\163\156\163\156\131\152\163\156\130\152b\144\000\000\000\000\000\000\000\000\000\000\196\164&\181&\177\005\173\196\160\164\160\228\168\229\168\196\160\196\164\196\164\196\164\163\160\005\173\007\169\196\164\131\152\163\156\131\152\163\156\163\156\163\156\196\160\163\156\163\156\163\160\163\156\131\152\163\156\163\156\163\156\131\152\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\173\005\173\229\168\006\165\197\160\228\168\005\173\229\168\006\177\196\160\196\164\229\168\228\168\163\156\163\156\130\152\163\156\131\152\163\152\131\152\163\156\131\152\163\156\196\164\163\156\131\152\131\152\163\156\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\164(\169\007\169\229\168&\181&\181\229\168\163\160\228\168\005\173G\185\005\173\131\152b\144\163\156\131\152\131\152b\148\130\148\130\148\163\156\163\156\163\156\131\152\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\164\229\168\005\173\005\173\228\168\005\173\228\168&\181\006\177&\181\131\152\163\156\131\152\163\156\131\152b\148\165\152\164\152\131\152\163\156\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\173\229\168\196\164\228\168\228\168\228\164\005\173\005\173\131\152\131\152b\144\196\160\163\156\131\152\165\152\198\152\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\164\228\168\005\173\005\173\005\173\005\173\163\156\131\152\196\160\164\160\163\156\163\156\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\005\173\005\173\196\164\163\160\163\156\131\152\196\164\196\160\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\196\160\131\156\163\156\131\152\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000")SectionItemsTemp = image.new("<\000\000\000<\000\000\000\000\000\000\000x\000\000\000\016\000\001\000\031|\031|\031|\031|\031|\031|\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\031|\031|\031|\031|\031|\031|\031|\031|\031|\031|\031|\031|\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\031|\031|\031|\031|\031|\031|\031|\031|\031|\031|\031|\031|\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\031|\031|\031|\031|\031|\031|\031|\031|\031|\000\128\000\128\000\128\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\000\128\000\128\000\128\031|\031|\031|\031|\031|\031|\000\128\000\128\000\128\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\000\128\000\128\000\128\031|\031|\031|\031|\031|\031|\000\128\000\128\000\128\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\255\000\128\000\128\000\128\031|\031|\031|\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\2278\2278\2279\2278\2279\2279\2279\227\025\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\025\227\025\2279\2279\2239\2239\2239\2239\2239\2239\2239\2239\2239\2238\2278\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\231\024\227\024\2278\2279\223\230\140\230\136\230\136\230\136\230\136\230\136\230\136\230\136\230\136\230\1409\2239\227\024\227\024\227\024\227\024\227\024\227\024\227\008\161\008\161\008\161\008\161\008\161\008\161\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\023\231\023\231\023\231\023\231\023\2278\223Y\215\007\133\007\129'\129'\129'\129'\129'\129'\129'\129\007\129Y\2159\2239\227\024\227\024\227\024\227\024\227\024\227\008\161\008\161\008\161\008\161\008\161\008\161\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\023\231'\173'\173\228\156\229\152\229\140\006\129\212\174\212\170\146\162\146\162\146\162\146\162\212\166\212\166X\1837\191\007\133\230\1409\223\024\227\024\227\024\227\008\161\008\161\255\255\255\255\255\255\255\255\024\227\024\227\008\161\008\161\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\023\231'\173&\173\227\160\004\153\004\137&\129\244\166\244\166\178\158\146\162\146\162\146\162\212\170\212\166W\1837\191\007\133\230\1409\223\024\227\024\227\024\227\008\161\008\161\255\255\255\255\255\255\255\255\023\227\024\227\008\161\008\161\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\023\231\129\144\128\144\169\181\234\169o\174\145\162\178\158\178\158'\129'\129'\129'\129'\129'\129'\129\007\129Y\2159\2239\227\024\227\008\161\008\161\255\255\255\255{\239{\239\024\227\023\227\255\255\255\255\008\161\008\161\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\2278\227\130\140\129\136\235\169\011\158\144\166\177\162\145\162q\170\006\133\230\132\230\136\230\136\230\136\230\132\230\136\230\1409\2239\227\024\227\024\227\008\161\008\161\255\255\255\255{\239{\239\024\227\024\227\255\255\255\255\008\161\008\161\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\2278\2278\223\229\140\005\133p\174\144\166\210\170\210\174F\133\006\1417\2198\2239\2239\2239\2239\2239\2239\2239\227\024\227\008\161\008\161\255\255\255\255z\239{\239\024\227\024\227{\239{\239\255\255\255\255\008\161\008\161\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\2278\2279\2279\223Y\215\006\129'\129\145\162\177\162\211\174\177\182\005\145\228\152\022\2317\227\024\227\024\2278\2279\2278\227\024\227\024\227\024\227\008\161\007\161\255\255\255\255z\239z\239\024\227\024\227{\239{\239\255\255\255\255\008\161\008\161\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\2279\223\230\140\007\133\212\174\244\166\178\158\146\162\196\128\162\132G\165F\173\195\160\196\160\023\231\024\231\024\227\024\227\024\227\024\227\024\227\024\227\024\231\023\231\229\156\197\156\022\227\023\227z\239{\239\255\255\255\255\008\161\008\161\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\2278\2279\223\230\136\007\129\212\170\244\166\178\158q\170\163\128\130\140F\173%\173\194\164\195\160\021\235\023\231\024\231\024\227\024\227\024\227\024\227\024\231\023\231\021\235\195\160\195\160\021\231\023\227z\239z\239\255\255\255\255\008\161\008\161\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\2278\2279\223\230\136'\129\146\162\178\158'\129\006\1298\2197\227`\148`\148\168\189\136\189\195\160\196\160\023\231\024\231\024\227\024\227\024\231\023\231\228\160\194\160\168\189\169\189a\148b\144\255\255\255\255\008\161\008\161\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\2278\2279\223\230\136'\129\146\162\146\162'\129\230\1328\2238\227b\144`\148\169\189\168\189\194\164\195\160\022\235\023\231\023\231\024\231\023\231\022\235\195\160\194\164\168\189\169\189a\148b\144\255\255\255\255\008\161\008\161\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\2278\2279\223\230\136'\129\146\162\146\162'\129\230\1369\2238\227\023\231\022\231`\148`\152%\177%\177\195\160\196\160\023\231\023\231\196\160\195\160%\177%\177`\148`\148\022\231\023\231\008\161\008\161\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\2278\2279\223\230\136'\129\146\162\146\162'\129\230\1369\2238\227\024\227\023\231b\144a\148&\173%\177\194\164\195\160\021\235\021\235\195\160\194\164%\177&\173a\148b\144\023\231\024\231\008\161\008\161\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\2278\2279\223\230\136'\129\212\170\212\170'\129\230\1369\2239\227\024\227\024\227\023\231\023\231a\148`\148\168\189\136\189\194\164\194\164\168\189\168\189`\152a\148\023\231\023\231\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\2278\2279\223\230\136'\129\212\166\212\166'\129\230\1369\2239\227\024\227\024\227\024\227\023\231b\144`\148\169\189\168\189\193\164\193\164\167\189\168\189`\148b\144\023\231\024\227\024\2278\227\024\227\023\227\023\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\2278\2279\223\230\136'\129W\183W\183'\129\230\1369\223\025\227\024\227\024\227\024\227\024\231\023\231\022\235`\148`\152$\177$\177\193\164\194\164\021\235\023\231\024\227\024\227\024\227\023\227\229\156\228\156\228\156\229\1567\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\2278\223\230\140\007\1297\1917\191\007\129\230\1409\223\025\227\024\227\024\227\024\227\024\231\023\231\022\235`\148`\152%\177$\177\193\164\194\164\021\235\023\231\023\231\024\227\023\2275\231\002\157\000\161\000\157\002\1575\2317\227\024\227\024\227\024\227\025\227\025\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\2278\2278\2279\223Y\211\007\133\007\133Y\2159\2239\227\024\227\024\227\024\227\024\227\023\231\196\160\195\160&\173&\173`\148`\152\168\189\168\189\195\160\196\160\023\231\023\231\228\156\226\156\148\243\145\243\145\243\147\243\001\157\227\156\023\227\024\227\024\227\024\227\025\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\2279\2279\223\230\140\230\1409\2239\227\024\227\024\227\024\227\024\231\023\231\021\235\195\160\194\164%\177&\173`\148`\148\169\189\136\189\194\164\195\160\021\231\022\231\227\160\000\161\146\243\175\243\174\243\176\243\000\161\001\1615\2317\227\024\227\024\227\024\227\025\227\025\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\2279\2279\2239\2279\227\024\227\024\227\024\227\024\231\023\231\196\160\195\160\168\189\168\189`\148a\148\022\235\022\235`\148`\152%\177%\177\195\160\195\160\226\160\000\161-\231K\231\008\223\009\223\176\243\146\243\001\161\227\1567\227\024\227\024\227\024\227\025\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\2278\227\024\227\024\227\024\227\024\227\024\227\024\231\023\231\022\235\195\160\194\164\168\189\169\189`\148b\144\023\231\023\231b\144a\148&\173%\177\194\164\194\160\225\160\000\161.\231,\231\008\223\008\223\174\243\176\243\000\161\001\1575\2317\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\231\023\231\228\160\195\160%\173%\177`\152`\148\022\231\023\231\024\227\024\231\023\231\023\231a\148`\148\168\189\167\189\224\160\224\160\236\222\234\222\233\222\009\223\008\223\009\223\176\243\147\243\002\157\229\156\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\231\023\231\021\235\195\160\194\160%\177&\173a\148b\144\023\231\024\227\024\227\024\227\024\227\023\231b\144`\148\168\189\167\189\224\160\224\160\236\222\234\222\234\222\233\222\008\223\008\223\174\243\145\243\000\161\228\156\023\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227(\165(\165\197\156\195\160\169\189\168\189`\148a\148\023\231\023\231\024\227\024\227\024\227\024\227\024\227\024\231\023\231\021\231\128\148\128\148\205\222\236\222h\206g\210\234\222\234\222,\231K\231\175\243\145\243\000\161\228\156\023\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227(\165(\165\197\156\195\160\169\189\169\189`\148b\144\023\231\024\227\024\227\024\227\024\227\024\227\024\227\024\227\023\2315\231\128\144\128\148\236\222\235\222g\206h\210\236\222\236\222.\231-\231\146\243\148\243\002\157\229\156\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227(\165(\165\239\193\238\193/\202.\202a\148a\148\022\231\023\231\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\229\156\227\156\207\222\237\222h\206h\206\235\222\236\222\224\160\224\160\000\161\000\161\000\161\226\1565\231\023\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227(\165'\165\237\193\237\193/\202/\198b\144b\144\023\231\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\023\227\228\156\001\161\238\222\235\222g\206h\206\237\222\206\226\224\160\225\160\227\160\227\156\228\156\229\156\023\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\023\231b\144a\148\170\185\170\185\237\193\239\193\239\193\239\193(\165)\165\025\227\024\227\024\227\024\227\024\227\024\227\024\227\023\227\228\156\001\161\238\222\236\222\236\222\237\222\128\148\128\148E\173F\173\022\231\023\231\023\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\023\231a\148`\148\169\189\169\185\237\193\015\194\239\189\239\189(\165)\165\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\229\156\226\156\239\218\238\222\238\222\207\222\128\144\128\148'\173'\173\023\231\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\023\231'\173&\173\194\160\195\160'\169(\1651\1981\198\239\189\239\189)\165)\165)\165)\165\024\227\024\227\024\227\024\227\023\2275\231\227\156\225\160\225\160\227\1565\231\022\231\023\231\023\231\023\231\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\023\231'\173'\173\196\160\229\156'\165(\1651\1981\198\239\189\239\189)\165)\165)\165)\165\024\227\024\227\024\227\024\227\024\2277\227\229\156\228\156\228\156\229\156\023\227\023\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\023\231\023\231\023\231\023\231\023\231\024\231\024\227)\165)\1651\1981\1981\1981\198s\206s\206)\165)\165\024\227\024\227\024\227\024\227\024\2278\231\023\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\231\024\227\024\227\024\227\024\227)\165)\1651\1981\1981\1981\198s\206s\206)\165)\165\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227)\165)\165)\165)\165)\165)\165\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227)\165)\165)\165)\165)\165)\165\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\000\128\000\128\000\128\255\255\255\255\255\255\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227\024\227J\169J\169J\169\000\128\000\128\000\128\031|\031|\031|\000\128\000\128\000\128J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169\000\128\000\128\000\128\031|\031|\031|\031|\031|\031|\000\128\000\128\000\128J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169\000\128\000\128\000\128\031|\031|\031|\031|\031|\031|\000\128\000\128\000\128J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169J\169\000\128\000\128\000\128\031|\031|\031|\031|\031|\031|\031|\031|\031|\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\031|\031|\031|\031|\031|\031|\031|\031|\031|\031|\031|\031|\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\031|\031|\031|\031|\031|\031|\031|\031|\031|\031|\031|\031|\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\000\128\031|\031|\031|\031|\031|\031|") SectionItems = image.copy(SectionItemsTemp, SectionItemsTemp:width()*0.6, SectionItemsTemp:height()*0.6) SectionItemsTemp = nil----Some functions that make life easier----[[function on.create() screen = mainend]]--local function refresh() platform.window:invalidate()endfunction on.timer() refresh()end----Classes used throughout the app with their belonging functions--HitBoxSquare = class()function HitBoxSquare:init(xIn, yIn, width, height) self.x = xIn self.y = yIn self.width = width self.height = heightendfunction HitBoxSquare:contains(xMouse, yMouse) local sw = self.width local sh = self.height return (xMouse>=(self.x)) and xMouse<=(self.x+sw) and yMouse>=(self.y) and yMouse<=(self.y+sh)end----Actual application starting pointhitBoxBlocks = HitBoxSquare(width*0.20, height*0.30, SectionBlocks:width(), SectionBlocks:height())hitBoxItems = HitBoxSquare(width*0.40, height*0.30, SectionItems:width(), SectionBlocks:height())function checkSelection() if(screen == main) then if hitBoxBlocks:contains(mouseX, mouseY) then screen = blocks end if hitBoxItems:contains(mouseX, mouseY) then screen = items end end if (screen == blocks) then end if (screen == items) then end if (screen == mobs) then end if (screen == terrain) then endendfunction on.paint(gc) myGC = gc paint[screen](gc) timer.start(1)endfunction on.mouseDown(x, y) mouseX = x mouseY= y checkSelection()end--Screen paintingfunction on.escapeKey() if (screen == main) then screen = title elseif (screen ~= title) then screen = main endendfunction on.enterKey() if (screen == title) then screen = main endend--Title screen.paint[title] = function(gc) gc:setFont("serif", "bi", 12) drawXCenteredString("Minecraft Encyclopedia", height*0.05)end--Main screen. paint[main] = function(gc) gc:setFont("serif", "bi", 12) drawXCenteredString("Minecraft Encyclopedia", height*0.05) imgX=width*0.20 imgY=height*0.30 gc:drawImage(SectionBlocks,imgX, imgY) imgX=width*0.40 gc:drawImage(SectionItems, imgX, imgY) timer.start(1)end--Blocks screenpaint[blocks] = function(gc) gc:setFont("serif", "bi", 12) drawXCenteredString("Blocks Section", height*0.01, "top") gc:drawRect(0,0, width, height*0.1) timer.start(1)end--Items screenpaint[items] = function(gc) gc:setFont("serif", "bi", 12) drawXCenteredString("Items Section", height*0.01, "top") gc:drawRect(0,0, width, height*0.1) refresh()end
a_acute = string.uchar(225)a_circ = string.uchar(226)a_tilde = string.uchar(227)a_diaer = string.uchar(228)a_ring = string.uchar(229)e_acute = string.uchar(233)e_grave = string.uchar(232)o_acute = string.uchar(243) o_circ = string.uchar(244)l_alpha = string.uchar(945)l_beta = string.uchar(946)l_omega = string.uchar(2126)sup_plus = string.uchar(8314)sup_minus = string.uchar(8315)right_arrow = string.uchar(8594)Color = { ["black"] = {0, 0, 0}, ["red"] = {255, 0, 0}, ["green"] = {0, 255, 0}, ["blue "] = {0, 0, 255}, ["white"] = {255, 255, 255}, ["brown"] = {165,42,42}, ["cyan"] = {0,255,255}, ["darkblue"] = {0,0,139}, ["darkred"] = {139,0,0}, ["fuchsia"] = {255,0,255}, ["gold"] = {255,215,0}, ["gray"] = {127,127,127}, ["grey"] = {127,127,127}, ["lightblue"] = {173,216,230}, ["lightgreen"] = {144,238,144}, ["magenta"] = {255,0,255}, ["maroon"] = {128,0,0}, ["navyblue"] = {159,175,223}, ["orange"] = {255,165,0}, ["palegreen"] = {152,251,152}, ["pink"] = {255,192,203}, ["purple"] = {128,0,128}, ["royalblue"] = {65,105,225}, ["salmon"] = {250,128,114}, ["seagreen"] = {46,139,87}, ["silver"] = {192,192,192}, ["turquoise"] = {64,224,208}, ["violet"] = {238,130,238}, ["yellow"] = {255,255,0}}Color.mt = {__index = function () return {0,0,0} end}setmetatable(Color,Color.mt)function copyTable(t) local t2 = {} for k,v in pairs(t) do t2[k] = v end return t2endfunction deepcopy(t) -- This function recursively copies a table's contents, and ensures that metatables are preserved. That is, it will correctly clone a pure Lua object. if type(t) ~= 'table' then return t end local mt = getmetatable(t) local res = {} for k,v in pairs(t) do if type(v) == 'table' then v = deepcopy(v) end res[k] = v end setmetatable(res,mt) return resend -- from http://snippets.luacode.org/snippets/Deep_copy_of_a_Lua_Table_2function utf8(nbr) return string.uchar(nbr)endfunction test(arg) return arg and 1 or 0endfunction screenRefresh() return platform.window:invalidate()endfunction pww() return platform.window:width()endfunction pwh() return platform.window:height()endfunction drawPoint(gc, x, y) gc:fillRect(x, y, 1, 1)endfunction drawCircle(gc, x, y, diameter) gc:drawArc(x - diameter/2, y - diameter/2, diameter,diameter,0,360)endfunction drawCenteredString(gc, str) gc:drawString(str, .5*(pww() - gc:getStringWidth(str)), .5*pwh(), "middle")endfunction drawXCenteredString(gc, str, y) gc:drawString(str, .5*(pww() - gc:getStringWidth(str)), y, "top")endfunction setColor(gc,theColor) if type(theColor) == "string" then theColor = string.lower(theColor) if type(Color[theColor]) == "table" then gc:setColorRGB(unpack(Color[theColor])) end elseif type(theColor) == "table" then gc:setColorRGB(unpack(theColor)) endendfunction verticalBar(gc,x) gc:fillRect(gc,x,0,1,pwh())endfunction horizontalBar(gc,y) gc:fillRect(gc,0,y,pww(),1)endfunction nativeBar(gc, screen, y) gc:setColorRGB(128,128,128) gc:fillRect(screen.x+5, screen.y+y, screen.w-10, 2)endfunction drawSquare(gc,x,y,l) gc:drawPolyLine(gc,{(x-l/2),(y-l/2), (x+l/2),(y-l/2), (x+l/2),(y+l/2), (x-l/2),(y+l/2), (x-l/2),(y-l/2)})endfunction drawRoundRect(gc,x,y,wd,ht,rd) -- wd = width, ht = height, rd = radius of the rounded corner x = x-wd/2 -- let the center of the square be the origin (x coord) y = y-ht/2 -- same for y coord if rd > ht/2 then rd = ht/2 end -- avoid drawing cool but unexpected shapes. This will draw a circle (max rd) gc:drawLine(x + rd, y, x + wd - (rd), y); gc:drawArc(x + wd - (rd*2), y + ht - (rd*2), rd*2, rd*2, 270, 90); gc:drawLine(x + wd, y + rd, x + wd, y + ht - (rd)); gc:drawArc(x + wd - (rd*2), y, rd*2, rd*2,0,90); gc:drawLine(x + wd - (rd), y + ht, x + rd, y + ht); gc:drawArc(x, y, rd*2, rd*2, 90, 90); gc:drawLine(x, y + ht - (rd), x, y + rd); gc:drawArc(x, y + ht - (rd*2), rd*2, rd*2, 180, 90);endfunction fillRoundRect(gc,x,y,wd,ht,radius) -- wd = width and ht = height -- renders badly when transparency (alpha) is not at maximum >< will re-code later if radius > ht/2 then radius = ht/2 end -- avoid drawing cool but unexpected shapes. This will draw a circle (max radius) gc:fillPolygon({(x-wd/2),(y-ht/2+radius), (x+wd/2),(y-ht/2+radius), (x+wd/2),(y+ht/2-radius), (x-wd/2),(y+ht/2-radius), (x-wd/2),(y-ht/2+radius)}) gc:fillPolygon({(x-wd/2-radius+1),(y-ht/2), (x+wd/2-radius+1),(y-ht/2), (x+wd/2-radius+1),(y+ht/2), (x-wd/2+radius),(y+ht/2), (x-wd/2+radius),(y-ht/2)}) x = x-wd/2 -- let the center of the square be the origin (x coord) y = y-ht/2 -- same gc:fillArc(x + wd - (radius*2), y + ht - (radius*2), radius*2, radius*2, 1, -91); gc:fillArc(x + wd - (radius*2), y, radius*2, radius*2,-2,91); gc:fillArc(x, y, radius*2, radius*2, 85, 95); gc:fillArc(x, y + ht - (radius*2), radius*2, radius*2, 180, 95);end
function on.resize(w, h) width, height = w, h end
function on.paint(gc) if screenNeedUpdate then for i=1,2 do for ii=1,5,1 do tile = string.sub(map[i], ii, ii) if tile == "G" then gc:drawImage(tileGrass, tileGrass:width()*ii, tileGrass:height()*i ) end if tile == "W" then gc:drawImage(tileWater, tileWater:width()*ii, tileWater:height()*i) end end end refreshScreen() screenNeedUpdate = false endend