--[[ TODO: * Als de speler naar rechts tegen een muur aanloopt blijft hij bij de muur bumpen. Ideeen: *One-way platformen, via collision checks ]]-- function love.load() Properties = { ScreenWidth = 800, ScreenHeight = 480 } -- Menu properties -- [Mode] 1 = Loading, 2 = Intro, 3 = Menu, 4 = Game, 5 = Pause Menu = { Mode = 4, } -- Player properties Player = { PosX = 192, PosY = 64, DX = 0, DY = 1, Gravity = 0.5, JumpForce = -12, MaxWalkSpeed = 4, WalkAcceleration = 40, State = "stand", LookDir = "right", Lives = 3, Coins = 0, Points = 0 } -- Map properties MapData = { Name = "Level 1", } -- Tiles that get drawn MapTile = { {11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6}, {11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6}, {11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6}, {11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 0, 0, 0, 0, 0, 2, 3, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6}, {11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 19, 20, 0, 0, 0, 0, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 6, 0, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6}, {11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 0, 0, 0, 0, 0, 0, 11, 11, 11, 0, 0, 0, 0, 0, 0, 2, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 6, 0, 6, 6, 6, 6, 6, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6}, {11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 0, 0, 0, 0, 2, 19, 11, 11, 11, 0, 0, 0, 0, 0, 0, 11, 11, 11, 11, 0, 0, 0, 0, 2, 3, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 6, 6, 0, 6, 0, 6, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6}, {11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 0, 0, 0, 0, 0, 0, 11, 11, 11, 3, 3, 3, 3, 3, 3, 11, 0, 0, 0, 0, 0, 0, 0, 11, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 6, 6, 6, 0, 6, 0, 6, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6}, {11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 19, 20, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 11, 11, 11, 11, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 11, 6, 6, 6, 6, 0, 6, 0, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6}, {11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 19, 19, 19, 20, 0, 0, 0, 2, 3, 3, 3, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 0, 0, 0, 0, 0, 0, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 3, 3, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6}, {11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 0, 0, 0, 0, 2, 19, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6}, {11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 3, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6}, {11, 11, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6}, {11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6}, {11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6} } -- Tile data for collision MapCol = { {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1}, {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1} } TileSprites = love.graphics.newImage('TileSprites.png') TileWidth, TileHeight = 32,32 TileSpritesW, TileSpritesH = TileSprites:getWidth(),TileSprites:getHeight() q11 = love.graphics.newQuad(0,0,TileWidth,TileHeight,TileSpritesW,TileSpritesH) q12 = love.graphics.newQuad(32,0,TileWidth,TileHeight,TileSpritesW,TileSpritesH) q13 = love.graphics.newQuad(64,0,TileWidth,TileHeight,TileSpritesW,TileSpritesH) q14 = love.graphics.newQuad(96,0,TileWidth,TileHeight,TileSpritesW,TileSpritesH) q15 = love.graphics.newQuad(128,0,TileWidth,TileHeight,TileSpritesW,TileSpritesH) q16 = love.graphics.newQuad(160,0,TileWidth,TileHeight,TileSpritesW,TileSpritesH) q17 = love.graphics.newQuad(192,0,TileWidth,TileHeight,TileSpritesW,TileSpritesH) q18 = love.graphics.newQuad(224,0,TileWidth,TileHeight,TileSpritesW,TileSpritesH) q21 = love.graphics.newQuad(0,32,TileWidth,TileHeight,TileSpritesW,TileSpritesH) q22 = love.graphics.newQuad(32,32,TileWidth,TileHeight,TileSpritesW,TileSpritesH) q23 = love.graphics.newQuad(64,32,TileWidth,TileHeight,TileSpritesW,TileSpritesH) q24 = love.graphics.newQuad(96,32,TileWidth,TileHeight,TileSpritesW,TileSpritesH) q25 = love.graphics.newQuad(128,32,TileWidth,TileHeight,TileSpritesW,TileSpritesH) q26 = love.graphics.newQuad(160,32,TileWidth,TileHeight,TileSpritesW,TileSpritesH) q27 = love.graphics.newQuad(192,32,TileWidth,TileHeight,TileSpritesW,TileSpritesH) q28 = love.graphics.newQuad(224,32,TileWidth,TileHeight,TileSpritesW,TileSpritesH) q31 = love.graphics.newQuad(0,64,TileWidth,TileHeight,TileSpritesW,TileSpritesH) q32 = love.graphics.newQuad(32,64,TileWidth,TileHeight,TileSpritesW,TileSpritesH) q33 = love.graphics.newQuad(64,64,TileWidth,TileHeight,TileSpritesW,TileSpritesH) q34 = love.graphics.newQuad(96,64,TileWidth,TileHeight,TileSpritesW,TileSpritesH) q35 = love.graphics.newQuad(128,64,TileWidth,TileHeight,TileSpritesW,TileSpritesH) q36 = love.graphics.newQuad(160,64,TileWidth,TileHeight,TileSpritesW,TileSpritesH) q37 = love.graphics.newQuad(192,64,TileWidth,TileHeight,TileSpritesW,TileSpritesH) q38 = love.graphics.newQuad(224,64,TileWidth,TileHeight,TileSpritesW,TileSpritesH) PlayerSprites = love.graphics.newImage("PlayerSprites.png") TilePWidth, TilePHeight = 32,40 PlayerSpritesW, PlayerSpritesH = PlayerSprites:getWidth(),PlayerSprites:getHeight() p11 = love.graphics.newQuad(0,0,TilePWidth,TilePHeight,PlayerSpritesW,PlayerSpritesH) p12 = love.graphics.newQuad(32,0,TilePWidth,TilePHeight,PlayerSpritesW,PlayerSpritesH) p13 = love.graphics.newQuad(64,0,TilePWidth,TilePHeight,PlayerSpritesW,PlayerSpritesH) p14 = love.graphics.newQuad(96,0,TilePWidth,TilePHeight,PlayerSpritesW,PlayerSpritesH) p15 = love.graphics.newQuad(128,0,TilePWidth,TilePHeight,PlayerSpritesW,PlayerSpritesH) p16 = love.graphics.newQuad(160,0,TilePWidth,TilePHeight,PlayerSpritesW,PlayerSpritesH) p17 = love.graphics.newQuad(192,0,TilePWidth,TilePHeight,PlayerSpritesW,PlayerSpritesH) p18 = love.graphics.newQuad(224,0,TilePWidth,TilePHeight,PlayerSpritesW,PlayerSpritesH) p21 = love.graphics.newQuad(0,40,TilePWidth,TilePHeight,PlayerSpritesW,PlayerSpritesH) p22 = love.graphics.newQuad(32,40,TilePWidth,TilePHeight,PlayerSpritesW,PlayerSpritesH) p23 = love.graphics.newQuad(64,40,TilePWidth,TilePHeight,PlayerSpritesW,PlayerSpritesH) p24 = love.graphics.newQuad(96,40,TilePWidth,TilePHeight,PlayerSpritesW,PlayerSpritesH) p25 = love.graphics.newQuad(128,40,TilePWidth,TilePHeight,PlayerSpritesW,PlayerSpritesH) p26 = love.graphics.newQuad(160,40,TilePWidth,TilePHeight,PlayerSpritesW,PlayerSpritesH) p27 = love.graphics.newQuad(192,40,TilePWidth,TilePHeight,PlayerSpritesW,PlayerSpritesH) p28 = love.graphics.newQuad(224,40,TilePWidth,TilePHeight,PlayerSpritesW,PlayerSpritesH) BackgroundImage = love.graphics.newImage("Background.png") TileRenderOffsetY = -32 TileRenderOffsetX = -32 CamRenderOffsetX = 0 PlayerDistanceFromBorder = 300 PlayerHeightDistance = 8 AnimationKeyframe = 1 TimePassed = 0 SoundJump = love.audio.newSource("Jump.ogg","static") SoundGround = love.audio.newSource("Ground.ogg","static") end function love.update(dt) UpdatePlayer(dt) MovePlayer(dt) UpdateCamera() UpdateAnimation(dt) end function love.draw() DrawBackground() DrawMap() DrawPlayer() DebugDraw() end function DebugDraw() love.graphics.setColor(255, 255, 255) love.graphics.rectangle("fill",10,10,80,70) love.graphics.setColor(150, 150, 255) love.graphics.print( CamRenderOffsetX, 10, 10, r, 3, 3, ox, oy, kx, ky ) love.graphics.print( AnimationKeyframe, 10, 40, r, 3, 3, ox, oy, kx, ky ) love.graphics.setColor(255, 255, 255) end function DrawBackground() for a = 1,2 do love.graphics.draw(BackgroundImage, (a-1)*1024+CamRenderOffsetX/-10,0) end end function DrawMap() for y = 1, #MapTile do for x = 1, #MapTile[y] do -- if MapTile[y][x] == 0 then -- love.graphics.draw(TileSprites, q13, ((x*TileWidth))+TileRenderOffsetX-CamRenderOffsetX, ((y*TileHeight))+TileRenderOffsetY) -- end if MapTile[y][x] == 1 then love.graphics.draw(TileSprites, q11, ((x*TileWidth))+TileRenderOffsetX-CamRenderOffsetX, ((y*TileHeight))+TileRenderOffsetY) end if MapTile[y][x] == 2 then love.graphics.draw(TileSprites, q12, ((x*TileWidth))+TileRenderOffsetX-CamRenderOffsetX, ((y*TileHeight))+TileRenderOffsetY) end if MapTile[y][x] == 3 then love.graphics.draw(TileSprites, q13, ((x*TileWidth))+TileRenderOffsetX-CamRenderOffsetX, ((y*TileHeight))+TileRenderOffsetY) end if MapTile[y][x] == 4 then love.graphics.draw(TileSprites, q14, ((x*TileWidth))+TileRenderOffsetX-CamRenderOffsetX, ((y*TileHeight))+TileRenderOffsetY) end if MapTile[y][x] == 5 then love.graphics.draw(TileSprites, q15, ((x*TileWidth))+TileRenderOffsetX-CamRenderOffsetX, ((y*TileHeight))+TileRenderOffsetY) end if MapTile[y][x] == 6 then love.graphics.draw(TileSprites, q16, ((x*TileWidth))+TileRenderOffsetX-CamRenderOffsetX, ((y*TileHeight))+TileRenderOffsetY) end if MapTile[y][x] == 7 then love.graphics.draw(TileSprites, q17, ((x*TileWidth))+TileRenderOffsetX-CamRenderOffsetX, ((y*TileHeight))+TileRenderOffsetY) end if MapTile[y][x] == 8 then love.graphics.draw(TileSprites, q18, ((x*TileWidth))+TileRenderOffsetX-CamRenderOffsetX, ((y*TileHeight))+TileRenderOffsetY) end if MapTile[y][x] == 9 then love.graphics.draw(TileSprites, q21, ((x*TileWidth))+TileRenderOffsetX-CamRenderOffsetX, ((y*TileHeight))+TileRenderOffsetY) end if MapTile[y][x] == 10 then love.graphics.draw(TileSprites, q22, ((x*TileWidth))+TileRenderOffsetX-CamRenderOffsetX, ((y*TileHeight))+TileRenderOffsetY) end if MapTile[y][x] == 11 then love.graphics.draw(TileSprites, q23, ((x*TileWidth))+TileRenderOffsetX-CamRenderOffsetX, ((y*TileHeight))+TileRenderOffsetY) end if MapTile[y][x] == 12 then love.graphics.draw(TileSprites, q24, ((x*TileWidth))+TileRenderOffsetX-CamRenderOffsetX, ((y*TileHeight))+TileRenderOffsetY) end if MapTile[y][x] == 13 then love.graphics.draw(TileSprites, q25, ((x*TileWidth))+TileRenderOffsetX-CamRenderOffsetX, ((y*TileHeight))+TileRenderOffsetY) end if MapTile[y][x] == 14 then love.graphics.draw(TileSprites, q26, ((x*TileWidth))+TileRenderOffsetX-CamRenderOffsetX, ((y*TileHeight))+TileRenderOffsetY) end if MapTile[y][x] == 15 then love.graphics.draw(TileSprites, q27, ((x*TileWidth))+TileRenderOffsetX-CamRenderOffsetX, ((y*TileHeight))+TileRenderOffsetY) end if MapTile[y][x] == 16 then love.graphics.draw(TileSprites, q28, ((x*TileWidth))+TileRenderOffsetX-CamRenderOffsetX, ((y*TileHeight))+TileRenderOffsetY) end if MapTile[y][x] == 17 then love.graphics.draw(TileSprites, q31, ((x*TileWidth))+TileRenderOffsetX-CamRenderOffsetX, ((y*TileHeight))+TileRenderOffsetY) end if MapTile[y][x] == 18 then love.graphics.draw(TileSprites, q32, ((x*TileWidth))+TileRenderOffsetX-CamRenderOffsetX, ((y*TileHeight))+TileRenderOffsetY) end if MapTile[y][x] == 19 then love.graphics.draw(TileSprites, q33, ((x*TileWidth))+TileRenderOffsetX-CamRenderOffsetX, ((y*TileHeight))+TileRenderOffsetY) end if MapTile[y][x] == 20 then love.graphics.draw(TileSprites, q34, ((x*TileWidth))+TileRenderOffsetX-CamRenderOffsetX, ((y*TileHeight))+TileRenderOffsetY) end if MapTile[y][x] == 21 then love.graphics.draw(TileSprites, q35, ((x*TileWidth))+TileRenderOffsetX-CamRenderOffsetX, ((y*TileHeight))+TileRenderOffsetY) end if MapTile[y][x] == 22 then love.graphics.draw(TileSprites, q36, ((x*TileWidth))+TileRenderOffsetX-CamRenderOffsetX, ((y*TileHeight))+TileRenderOffsetY) end if MapTile[y][x] == 23 then love.graphics.draw(TileSprites, q37, ((x*TileWidth))+TileRenderOffsetX-CamRenderOffsetX, ((y*TileHeight))+TileRenderOffsetY) end if MapTile[y][x] == 24 then love.graphics.draw(TileSprites, q38, ((x*TileWidth))+TileRenderOffsetX-CamRenderOffsetX, ((y*TileHeight))+TileRenderOffsetY) end end end end function DrawPlayer() if Player.State == "stand" and Player.LookDir == "right" and Player.DX > 0 then if AnimationKeyframe == 1 or AnimationKeyframe == 5 then love.graphics.draw(PlayerSprites, p12, (Player.PosX+TileRenderOffsetX-CamRenderOffsetX), ((Player.PosY+TileRenderOffsetY-PlayerHeightDistance)+1)) elseif AnimationKeyframe == 2 or AnimationKeyframe == 6 then love.graphics.draw(PlayerSprites, p13, (Player.PosX+TileRenderOffsetX-CamRenderOffsetX), ((Player.PosY+TileRenderOffsetY-PlayerHeightDistance)+1)) elseif AnimationKeyframe == 3 or AnimationKeyframe == 7 then love.graphics.draw(PlayerSprites, p14, (Player.PosX+TileRenderOffsetX-CamRenderOffsetX), ((Player.PosY+TileRenderOffsetY-PlayerHeightDistance)+1)) elseif AnimationKeyframe == 4 or AnimationKeyframe == 8 then love.graphics.draw(PlayerSprites, p13, (Player.PosX+TileRenderOffsetX-CamRenderOffsetX), ((Player.PosY+TileRenderOffsetY-PlayerHeightDistance)+1)) end elseif Player.State == "stand" and Player.LookDir == "left" and Player.DX < 0 then if AnimationKeyframe == 1 or AnimationKeyframe == 5 then love.graphics.draw(PlayerSprites, p22, (Player.PosX+TileRenderOffsetX-CamRenderOffsetX), ((Player.PosY+TileRenderOffsetY-PlayerHeightDistance)+1)) elseif AnimationKeyframe == 2 or AnimationKeyframe == 6 then love.graphics.draw(PlayerSprites, p23, (Player.PosX+TileRenderOffsetX-CamRenderOffsetX), ((Player.PosY+TileRenderOffsetY-PlayerHeightDistance)+1)) elseif AnimationKeyframe == 3 or AnimationKeyframe == 7 then love.graphics.draw(PlayerSprites, p24, (Player.PosX+TileRenderOffsetX-CamRenderOffsetX), ((Player.PosY+TileRenderOffsetY-PlayerHeightDistance)+1)) elseif AnimationKeyframe == 4 or AnimationKeyframe == 8 then love.graphics.draw(PlayerSprites, p23, (Player.PosX+TileRenderOffsetX-CamRenderOffsetX), ((Player.PosY+TileRenderOffsetY-PlayerHeightDistance)+1)) end elseif Player.State == "jump" and Player.LookDir == "right" then love.graphics.draw(PlayerSprites, p15, (Player.PosX+TileRenderOffsetX-CamRenderOffsetX), ((Player.PosY+TileRenderOffsetY-PlayerHeightDistance)+1)) elseif Player.State == "jump" and Player.LookDir == "left" then love.graphics.draw(PlayerSprites, p25, (Player.PosX+TileRenderOffsetX-CamRenderOffsetX), ((Player.PosY+TileRenderOffsetY-PlayerHeightDistance)+1)) elseif Player.State == "crouch" and Player.LookDir == "right" then love.graphics.draw(PlayerSprites, p16, (Player.PosX+TileRenderOffsetX-CamRenderOffsetX), ((Player.PosY+TileRenderOffsetY-PlayerHeightDistance)+1)) elseif Player.State == "crouch" and Player.LookDir == "left" then love.graphics.draw(PlayerSprites, p26, (Player.PosX+TileRenderOffsetX-CamRenderOffsetX), ((Player.PosY+TileRenderOffsetY-PlayerHeightDistance)+1)) elseif Player.State == "climb" and Player.LookDir == "right" then elseif Player.State == "climb" and Player.LookDir == "left" then else -- The player isn't moving if AnimationKeyframe == 8 then love.graphics.draw(PlayerSprites, p21, (Player.PosX+TileRenderOffsetX-CamRenderOffsetX), ((Player.PosY+TileRenderOffsetY-PlayerHeightDistance)+1)) else love.graphics.draw(PlayerSprites, p11, (Player.PosX+TileRenderOffsetX-CamRenderOffsetX), ((Player.PosY+TileRenderOffsetY-PlayerHeightDistance)+1)) end end end function UpdateAnimation(TimePassedFrame) TimePassed = TimePassed + TimePassedFrame if TimePassed >= 0.25 then if AnimationKeyframe < 8 then AnimationKeyframe = AnimationKeyframe + 1 else AnimationKeyframe = 1 end TimePassed = 0 end end function CheckCollisionRX(PointX,PointY) GridX = math.floor(PointX/32) GridY = math.floor(PointY/32) if GridY > 0 then if MapCol[GridY][GridX] == 1 then return math.fmod(PointX,32) else return false end else return false end end function CheckCollisionLX(PointX,PointY) GridX = math.floor(PointX/32) GridY = math.floor(PointY/32) if GridY > 0 then if MapCol[GridY][GridX] == 1 then return (32-math.fmod(PointX,32)) else return false end else return false end end function CheckCollisionUY(PointX,PointY) GridX = math.floor(PointX/32) GridY = math.floor(PointY/32) if GridY > 0 then if MapCol[GridY][GridX] == 1 then return math.fmod(PointY,32) else return false end else return false end end function CheckCollisionDY(PointX,PointY) GridX = math.floor(PointX/32) GridY = math.floor(PointY/32) if GridY > 0 then if MapCol[GridY][GridX] == 1 then return 32-math.fmod(PointY,32) else return false end else return false end end function UpdatePlayer(dt) if love.keyboard.isDown("left") or love.keyboard.isDown("right") then -- When Player is controlling horizontal movement: increase speed if love.keyboard.isDown("left") then Player.LookDir = "left" if Player.DX > -(Player.MaxWalkSpeed) then Player.DX = Player.DX - Player.WalkAcceleration * dt else Player.DX = -(Player.MaxWalkSpeed) end end if love.keyboard.isDown("right") then Player.LookDir = "right" if Player.DX < Player.MaxWalkSpeed then Player.DX = Player.DX + Player.WalkAcceleration * dt else Player.DX = Player.MaxWalkSpeed end end end if love.keyboard.isDown("left") == false and love.keyboard.isDown("right") == false then -- When player isn't controlling horizontal movement: decrease speed if Player.DX > 0.1 then Player.DX = Player.DX - (((Player.WalkAcceleration)/4)*dt) end if Player.DX < -0.1 then Player.DX = Player.DX + (((Player.WalkAcceleration)/4)*dt) end if Player.DX > -0.1 and Player.DX < 0.1 then Player.LookDir = "front" Player.DX = 0 end end if love.keyboard.isDown("up") then if Player.DY < 2 then if Player.State == "stand" then Player.DY = Player.JumpForce love.audio.play(SoundJump) Player.State = "jump" end end end Player.DY = Player.DY + Player.Gravity/1 end function MovePlayer(dt) if Player.DX > 0 then if CheckCollisionRX(Player.PosX+32+Player.DX,Player.PosY) ~= false then Player.PosX = Player.PosX + Player.DX-1 - CheckCollisionRX(Player.PosX+32+Player.DX,Player.PosY) Player.DX = 0 end if CheckCollisionRX(Player.PosX+32+Player.DX,Player.PosY+32) ~= false then Player.PosX = Player.PosX + Player.DX-1 - CheckCollisionRX(Player.PosX+32+Player.DX,Player.PosY+32) Player.DX = 0 end end if Player.DX < 0 then if CheckCollisionLX(Player.PosX+Player.DX,Player.PosY) ~= false then Player.PosX = Player.PosX + Player.DX + CheckCollisionLX(Player.PosX+Player.DX,Player.PosY) Player.DX = 0 end if CheckCollisionLX(Player.PosX+Player.DX,Player.PosY+32) ~= false then Player.PosX = Player.PosX + Player.DX + CheckCollisionLX(Player.PosX+Player.DX,Player.PosY+32) Player.DX = 0 end end if Player.PosX + Player.DX > 32 then Player.PosX = Player.PosX + Player.DX else Player.PosX = 32 end if Player.DY > 0 then if CheckCollisionUY(Player.PosX,Player.PosY+Player.DY+32) ~= false then Player.PosY = Player.PosY + Player.DY-1 - CheckCollisionUY(Player.PosX,Player.PosY+Player.DY+32) Player.DY = 0.5 if Player.State == "jump" then love.audio.play(SoundGround) end Player.State = "stand" end if CheckCollisionUY(Player.PosX+32,Player.PosY+Player.DY+32) ~= false then Player.PosY = Player.PosY + Player.DY-1 - CheckCollisionUY(Player.PosX+32,Player.PosY+Player.DY+32) Player.DY = 0.5 if Player.State == "jump" then love.audio.play(SoundGround) end Player.State = "stand" end end if Player.DY < 0 then if CheckCollisionDY(Player.PosX,Player.PosY+Player.DY) ~= false then Player.PosY = Player.PosY + Player.DY + CheckCollisionDY(Player.PosX,Player.PosY+Player.DY) Player.DY = 0 end if CheckCollisionDY(Player.PosX+32,Player.PosY+Player.DY) ~= false then Player.PosY = Player.PosY + Player.DY + CheckCollisionDY(Player.PosX+32,Player.PosY+Player.DY) Player.DY = 0 end end Player.PosY = Player.PosY + Player.DY end function UpdateCamera() if math.floor(Player.PosX-PlayerDistanceFromBorder) > 0 then CamRenderOffsetX = math.floor(Player.PosX-PlayerDistanceFromBorder) else CamRenderOffsetX = 0 end end