Compare commits
	
		
			8 Commits
		
	
	
		
			f689632a92
			...
			8440be2ab1
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					8440be2ab1 | ||
| 
						 | 
					df4184eec4 | ||
| 
						 | 
					e8a124fa63 | ||
| 
						 | 
					78b4379143 | ||
| 
						 | 
					b8106bc1aa | ||
| 
						 | 
					f8d71bb27d | ||
| 
						 | 
					7016961609 | ||
| 
						 | 
					95502bc429 | 
@ -20,6 +20,7 @@ function GameKeyPressed(key)
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	-- debug map changes!
 | 
			
		||||
	--[[
 | 
			
		||||
	if DebugFlag and key == "1" then
 | 
			
		||||
		_G.CUR_LEVEL = 1
 | 
			
		||||
		RestartGame()
 | 
			
		||||
@ -30,4 +31,10 @@ function GameKeyPressed(key)
 | 
			
		||||
		RestartGame()
 | 
			
		||||
		love.load()
 | 
			
		||||
	end
 | 
			
		||||
	if DebugFlag and key == "3" then
 | 
			
		||||
		_G.CUR_LEVEL = 3
 | 
			
		||||
		RestartGame()
 | 
			
		||||
		love.load()
 | 
			
		||||
	end
 | 
			
		||||
	--]]
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
@ -39,6 +39,14 @@ function UpdateGame(dt)
 | 
			
		||||
 | 
			
		||||
	for i, v in ipairs(Bullets1) do
 | 
			
		||||
		v:update(dt)
 | 
			
		||||
 | 
			
		||||
		-- Check bounce count
 | 
			
		||||
		if v.bounce >= _G.BULLETS_BOUNCE_MAX then
 | 
			
		||||
			table.remove(Bullets1, i)
 | 
			
		||||
			v.collider:destroy()
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		--  Handle screen edges
 | 
			
		||||
		if v.y < 0 then --top of screen
 | 
			
		||||
			table.remove(Bullets1, i)
 | 
			
		||||
			v.collider:destroy()
 | 
			
		||||
@ -46,6 +54,8 @@ function UpdateGame(dt)
 | 
			
		||||
			table.remove(Bullets1, i)
 | 
			
		||||
			v.collider:destroy()
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		-- Hit player2
 | 
			
		||||
		if v.collider:enter("Player2") then
 | 
			
		||||
			print("Player1 hit Player2!")
 | 
			
		||||
			table.remove(Bullets1, i)
 | 
			
		||||
@ -55,6 +65,7 @@ function UpdateGame(dt)
 | 
			
		||||
			end
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		-- Hit player1
 | 
			
		||||
		if v.collider:enter("Player1") then
 | 
			
		||||
			print("Player 1 hit themselves!")
 | 
			
		||||
			table.remove(Bullets1, i)
 | 
			
		||||
@ -63,10 +74,24 @@ function UpdateGame(dt)
 | 
			
		||||
				UserPlayer1.health = UserPlayer1.health - 1
 | 
			
		||||
			end
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		--Hit another bullet
 | 
			
		||||
		if v.collider:enter("Bullet1") then
 | 
			
		||||
			table.remove(Bullets1, i)
 | 
			
		||||
			v.collider:destroy()
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	for i, v in ipairs(Bullets2) do
 | 
			
		||||
		v:update(dt)
 | 
			
		||||
 | 
			
		||||
		-- Check bounce count
 | 
			
		||||
		if v.bounce >= _G.BULLETS_BOUNCE_MAX then
 | 
			
		||||
			table.remove(Bullets2, i)
 | 
			
		||||
			v.collider:destroy()
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		--  Handle screen edges
 | 
			
		||||
		if v.y < 0 then --top of screen
 | 
			
		||||
			table.remove(Bullets2, i)
 | 
			
		||||
			v.collider:destroy()
 | 
			
		||||
@ -75,6 +100,7 @@ function UpdateGame(dt)
 | 
			
		||||
			v.collider:destroy()
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		-- Hit player2
 | 
			
		||||
		if v.collider:enter("Player1") then
 | 
			
		||||
			print("Player2 hit Player1!")
 | 
			
		||||
			table.remove(Bullets2, i)
 | 
			
		||||
@ -83,16 +109,24 @@ function UpdateGame(dt)
 | 
			
		||||
				UserPlayer2.health = UserPlayer2.health - 1
 | 
			
		||||
			end
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		-- Hit player1
 | 
			
		||||
		if v.collider:enter("Player2") then
 | 
			
		||||
			print("Player 2 hit themselves!")
 | 
			
		||||
			table.remove(Bullets2, i)
 | 
			
		||||
			v.collider:destroy()
 | 
			
		||||
 | 
			
		||||
			if UserPlayer2.health > 0 then
 | 
			
		||||
				UserPlayer2.health = UserPlayer2.health - 1
 | 
			
		||||
			end
 | 
			
		||||
		end
 | 
			
		||||
 | 
			
		||||
		--Hit another bullet
 | 
			
		||||
		if v.collider:enter("Bullet2") then
 | 
			
		||||
			table.remove(Bullets2, i)
 | 
			
		||||
			v.collider:destroy()
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	UserPlayer1:handleKeys("w", "s", "a", "d", dt)
 | 
			
		||||
	UserPlayer2:handleKeys("up", "down", "left", "right", dt)
 | 
			
		||||
	UserPlayer1:updateCol()
 | 
			
		||||
 | 
			
		||||
@ -8,6 +8,9 @@
 | 
			
		||||
--
 | 
			
		||||
GAMESTATE = "MENU"
 | 
			
		||||
 | 
			
		||||
-- Mute for game
 | 
			
		||||
MUTED = false
 | 
			
		||||
 | 
			
		||||
MENU_POS = 0
 | 
			
		||||
MENU_MAX = 3 --0 play, 1 ?, 2 ?, 3 quit
 | 
			
		||||
 | 
			
		||||
@ -16,7 +19,7 @@ PAUSE_POS = 0
 | 
			
		||||
PAUSE_MAX = 2 -- 0 resume, 1 menu,  2 quit
 | 
			
		||||
 | 
			
		||||
BULLETS_MAX = 10 -- MAX amount of bullets a player can shoot
 | 
			
		||||
--BULLETS_BOUCE_MAX = 7 -- MAX amount of bounces before exploding!
 | 
			
		||||
BULLETS_BOUNCE_MAX = 7 -- MAX amount of bounces before exploding!
 | 
			
		||||
BULLETS_LIFETIME = 50
 | 
			
		||||
 | 
			
		||||
-- WIN flags for P1 and P2
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										80
									
								
								main.lua
									
									
									
									
									
								
							
							
						
						
									
										80
									
								
								main.lua
									
									
									
									
									
								
							@ -1,21 +1,55 @@
 | 
			
		||||
Object = require("libs/classic")
 | 
			
		||||
 | 
			
		||||
require("constants")
 | 
			
		||||
WF = require("libs/windfield")
 | 
			
		||||
STI = require("libs/sti")
 | 
			
		||||
 | 
			
		||||
World = WF.newWorld(0, 0) --no gravity
 | 
			
		||||
World:setQueryDebugDrawing(true) -- Draws the area of a query for 10 frames
 | 
			
		||||
--World:setQueryDebugDrawing(true) -- Draws the area of a query for 10 frames
 | 
			
		||||
World:addCollisionClass("Player1")
 | 
			
		||||
World:addCollisionClass("Bullet1")
 | 
			
		||||
World:addCollisionClass("Player2")
 | 
			
		||||
World:addCollisionClass("Bullet2")
 | 
			
		||||
World:addCollisionClass("Wall")
 | 
			
		||||
 | 
			
		||||
require("restart")
 | 
			
		||||
require("player")
 | 
			
		||||
require("bullet")
 | 
			
		||||
require("mapsloader")
 | 
			
		||||
 | 
			
		||||
require("Game/UpdateGame")
 | 
			
		||||
require("Menu/UpdateMenu")
 | 
			
		||||
require("Pause/UpdatePause")
 | 
			
		||||
require("Win/UpdateWin")
 | 
			
		||||
 | 
			
		||||
require("Game/DrawGame")
 | 
			
		||||
require("Menu/DrawMenu")
 | 
			
		||||
require("Pause/DrawPause")
 | 
			
		||||
require("Win/DrawWin")
 | 
			
		||||
 | 
			
		||||
require("Game/GameKeyPressed")
 | 
			
		||||
require("Menu/MenuKeyPressed")
 | 
			
		||||
require("Pause/PauseKeyPressed")
 | 
			
		||||
require("Win/WinKeyPressed")
 | 
			
		||||
 | 
			
		||||
--Fonts used in the game
 | 
			
		||||
GameFont = love.graphics.newFont("assets/Daydream.ttf", 60)
 | 
			
		||||
DebugFont = love.graphics.newFont("assets/Daydream.ttf", 12)
 | 
			
		||||
MenuFont = love.graphics.newFont("assets/Daydream.ttf", 45)
 | 
			
		||||
Walls = {}
 | 
			
		||||
 | 
			
		||||
-- Music streaming
 | 
			
		||||
musicMenu = love.audio.newSource("music/menu.mp3", "stream") or nil
 | 
			
		||||
musicBattle = love.audio.newSource("music/battle.mp3", "stream") or nil
 | 
			
		||||
--musicStory = love.audio.newSource("music/story.mp3", "stream") or nil
 | 
			
		||||
 | 
			
		||||
musicPause = musicBattle:clone()
 | 
			
		||||
musicPause:setFilter({
 | 
			
		||||
	type = "lowpass",
 | 
			
		||||
	volume = 0.7,
 | 
			
		||||
	highgain = 0.4,
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
function love.run()
 | 
			
		||||
	if love.load then
 | 
			
		||||
		love.load(love.arg.parseGameArguments(arg), arg)
 | 
			
		||||
@ -70,34 +104,14 @@ function love.run()
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function love.load()
 | 
			
		||||
	Object = require("libs/classic")
 | 
			
		||||
	require("libs/restart")
 | 
			
		||||
	require("player")
 | 
			
		||||
	require("bullet")
 | 
			
		||||
	require("mapsloader")
 | 
			
		||||
 | 
			
		||||
	require("Game/UpdateGame")
 | 
			
		||||
	require("Menu/UpdateMenu")
 | 
			
		||||
	require("Pause/UpdatePause")
 | 
			
		||||
	require("Win/UpdateWin")
 | 
			
		||||
 | 
			
		||||
	require("Game/DrawGame")
 | 
			
		||||
	require("Menu/DrawMenu")
 | 
			
		||||
	require("Pause/DrawPause")
 | 
			
		||||
	require("Win/DrawWin")
 | 
			
		||||
 | 
			
		||||
	require("Game/GameKeyPressed")
 | 
			
		||||
	require("Menu/MenuKeyPressed")
 | 
			
		||||
	require("Pause/PauseKeyPressed")
 | 
			
		||||
	require("Win/WinKeyPressed")
 | 
			
		||||
 | 
			
		||||
function love.load(args)
 | 
			
		||||
	-- Set a random seed
 | 
			
		||||
	love.math.setRandomSeed(love.timer.getTime())
 | 
			
		||||
 | 
			
		||||
	--Game consts
 | 
			
		||||
	--Game values (reset after each load)
 | 
			
		||||
	HEALTH = 3
 | 
			
		||||
	DELAY = 0.5
 | 
			
		||||
	P1_DELAY = 0.5
 | 
			
		||||
	P2_DELAY = 0.5
 | 
			
		||||
 | 
			
		||||
	--Bullet lists
 | 
			
		||||
	Bullets1 = {}
 | 
			
		||||
@ -106,28 +120,16 @@ function love.load()
 | 
			
		||||
	DebugFlag = false
 | 
			
		||||
	EnableKeyPress1 = true
 | 
			
		||||
	KeyPressTime1 = 0
 | 
			
		||||
	KeyDelay1 = DELAY
 | 
			
		||||
	KeyDelay1 = P1_DELAY
 | 
			
		||||
 | 
			
		||||
	EnableKeyPress2 = true
 | 
			
		||||
	KeyPressTime2 = 0
 | 
			
		||||
	KeyDelay2 = DELAY
 | 
			
		||||
	KeyDelay2 = P2_DELAY
 | 
			
		||||
 | 
			
		||||
	local playerSpeed = 12000
 | 
			
		||||
	UserPlayer1 = Player(1, 1000, 100, HEALTH, "assets/player1.png", playerSpeed)
 | 
			
		||||
	UserPlayer2 = Player(2, 200, 300, HEALTH, "assets/player2.png", playerSpeed)
 | 
			
		||||
 | 
			
		||||
	-- Music streaming
 | 
			
		||||
	musicMenu = love.audio.newSource("music/menu.mp3", "stream") or nil
 | 
			
		||||
	musicBattle = love.audio.newSource("music/battle.mp3", "stream") or nil
 | 
			
		||||
	--musicStory = love.audio.newSource("music/story.mp3", "stream") or nil
 | 
			
		||||
 | 
			
		||||
	musicPause = musicBattle:clone()
 | 
			
		||||
	musicPause:setFilter({
 | 
			
		||||
		type = "lowpass",
 | 
			
		||||
		volume = 0.7,
 | 
			
		||||
		highgain = 0.4,
 | 
			
		||||
	})
 | 
			
		||||
 | 
			
		||||
	--STI Map loading
 | 
			
		||||
	LoadMap(_G.CUR_LEVEL)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										368
									
								
								maps/map3.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										368
									
								
								maps/map3.lua
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,368 @@
 | 
			
		||||
return {
 | 
			
		||||
  version = "1.10",
 | 
			
		||||
  luaversion = "5.1",
 | 
			
		||||
  tiledversion = "1.11.0",
 | 
			
		||||
  class = "",
 | 
			
		||||
  orientation = "orthogonal",
 | 
			
		||||
  renderorder = "right-down",
 | 
			
		||||
  width = 25,
 | 
			
		||||
  height = 15,
 | 
			
		||||
  tilewidth = 64,
 | 
			
		||||
  tileheight = 64,
 | 
			
		||||
  nextlayerid = 4,
 | 
			
		||||
  nextobjectid = 23,
 | 
			
		||||
  properties = {},
 | 
			
		||||
  tilesets = {
 | 
			
		||||
    {
 | 
			
		||||
      name = "tileset",
 | 
			
		||||
      firstgid = 1,
 | 
			
		||||
      class = "",
 | 
			
		||||
      tilewidth = 64,
 | 
			
		||||
      tileheight = 64,
 | 
			
		||||
      spacing = 0,
 | 
			
		||||
      margin = 0,
 | 
			
		||||
      columns = 9,
 | 
			
		||||
      image = "../assets/tileset.png",
 | 
			
		||||
      imagewidth = 576,
 | 
			
		||||
      imageheight = 384,
 | 
			
		||||
      objectalignment = "unspecified",
 | 
			
		||||
      tilerendersize = "tile",
 | 
			
		||||
      fillmode = "stretch",
 | 
			
		||||
      tileoffset = {
 | 
			
		||||
        x = 0,
 | 
			
		||||
        y = 0
 | 
			
		||||
      },
 | 
			
		||||
      grid = {
 | 
			
		||||
        orientation = "orthogonal",
 | 
			
		||||
        width = 64,
 | 
			
		||||
        height = 64
 | 
			
		||||
      },
 | 
			
		||||
      properties = {},
 | 
			
		||||
      wangsets = {},
 | 
			
		||||
      tilecount = 54,
 | 
			
		||||
      tiles = {}
 | 
			
		||||
    }
 | 
			
		||||
  },
 | 
			
		||||
  layers = {
 | 
			
		||||
    {
 | 
			
		||||
      type = "tilelayer",
 | 
			
		||||
      x = 0,
 | 
			
		||||
      y = 0,
 | 
			
		||||
      width = 25,
 | 
			
		||||
      height = 15,
 | 
			
		||||
      id = 1,
 | 
			
		||||
      name = "floor",
 | 
			
		||||
      class = "",
 | 
			
		||||
      visible = true,
 | 
			
		||||
      opacity = 1,
 | 
			
		||||
      offsetx = 0,
 | 
			
		||||
      offsety = 0,
 | 
			
		||||
      parallaxx = 1,
 | 
			
		||||
      parallaxy = 1,
 | 
			
		||||
      properties = {},
 | 
			
		||||
      encoding = "lua",
 | 
			
		||||
      data = {
 | 
			
		||||
        1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3,
 | 
			
		||||
        10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12,
 | 
			
		||||
        10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12,
 | 
			
		||||
        10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12,
 | 
			
		||||
        10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12,
 | 
			
		||||
        10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12,
 | 
			
		||||
        10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12,
 | 
			
		||||
        10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12,
 | 
			
		||||
        10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12,
 | 
			
		||||
        10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12,
 | 
			
		||||
        10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12,
 | 
			
		||||
        10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12,
 | 
			
		||||
        10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12,
 | 
			
		||||
        10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12,
 | 
			
		||||
        19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      type = "tilelayer",
 | 
			
		||||
      x = 0,
 | 
			
		||||
      y = 0,
 | 
			
		||||
      width = 25,
 | 
			
		||||
      height = 15,
 | 
			
		||||
      id = 2,
 | 
			
		||||
      name = "inner walls",
 | 
			
		||||
      class = "",
 | 
			
		||||
      visible = true,
 | 
			
		||||
      opacity = 1,
 | 
			
		||||
      offsetx = 0,
 | 
			
		||||
      offsety = 0,
 | 
			
		||||
      parallaxx = 1,
 | 
			
		||||
      parallaxy = 1,
 | 
			
		||||
      properties = {},
 | 
			
		||||
      encoding = "lua",
 | 
			
		||||
      data = {
 | 
			
		||||
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
        0, 33, 34, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 31, 0, 0, 0,
 | 
			
		||||
        0, 42, 43, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 35, 54, 40, 0, 0, 0,
 | 
			
		||||
        0, 51, 52, 53, 0, 0, 0, 0, 0, 31, 31, 31, 0, 0, 0, 0, 0, 42, 43, 44, 54, 11, 0, 0, 0,
 | 
			
		||||
        0, 0, 0, 0, 0, 0, 11, 11, 11, 40, 40, 40, 0, 0, 0, 0, 0, 51, 52, 53, 31, 11, 0, 0, 0,
 | 
			
		||||
        0, 0, 0, 0, 0, 0, 32, 32, 32, 33, 34, 35, 31, 31, 0, 0, 0, 54, 54, 31, 40, 0, 0, 0, 0,
 | 
			
		||||
        0, 0, 0, 0, 0, 0, 41, 41, 41, 42, 43, 44, 40, 40, 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0,
 | 
			
		||||
        0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 53, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
        0, 0, 0, 33, 34, 34, 34, 35, 0, 0, 0, 0, 41, 41, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
        0, 0, 0, 42, 43, 43, 43, 44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 54, 54, 0, 0, 0, 0,
 | 
			
		||||
        0, 0, 0, 42, 43, 43, 43, 44, 0, 0, 0, 0, 0, 0, 0, 33, 34, 34, 34, 34, 35, 0, 0, 0, 0,
 | 
			
		||||
        0, 0, 0, 51, 52, 52, 52, 53, 0, 0, 0, 0, 0, 0, 0, 42, 43, 43, 43, 43, 44, 0, 0, 0, 0,
 | 
			
		||||
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 52, 52, 52, 53, 0, 0, 0, 0,
 | 
			
		||||
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
 | 
			
		||||
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
 | 
			
		||||
      }
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
      type = "objectgroup",
 | 
			
		||||
      draworder = "topdown",
 | 
			
		||||
      id = 3,
 | 
			
		||||
      name = "Walls",
 | 
			
		||||
      class = "",
 | 
			
		||||
      visible = false,
 | 
			
		||||
      opacity = 1,
 | 
			
		||||
      offsetx = 0,
 | 
			
		||||
      offsety = 0,
 | 
			
		||||
      parallaxx = 1,
 | 
			
		||||
      parallaxy = 1,
 | 
			
		||||
      properties = {},
 | 
			
		||||
      objects = {
 | 
			
		||||
        {
 | 
			
		||||
          id = 1,
 | 
			
		||||
          name = "",
 | 
			
		||||
          type = "",
 | 
			
		||||
          shape = "rectangle",
 | 
			
		||||
          x = 0,
 | 
			
		||||
          y = 0,
 | 
			
		||||
          width = 1600,
 | 
			
		||||
          height = 16,
 | 
			
		||||
          rotation = 0,
 | 
			
		||||
          visible = true,
 | 
			
		||||
          properties = {}
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id = 2,
 | 
			
		||||
          name = "",
 | 
			
		||||
          type = "",
 | 
			
		||||
          shape = "rectangle",
 | 
			
		||||
          x = 1584,
 | 
			
		||||
          y = 0,
 | 
			
		||||
          width = 16,
 | 
			
		||||
          height = 960,
 | 
			
		||||
          rotation = 0,
 | 
			
		||||
          visible = true,
 | 
			
		||||
          properties = {}
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id = 3,
 | 
			
		||||
          name = "",
 | 
			
		||||
          type = "",
 | 
			
		||||
          shape = "rectangle",
 | 
			
		||||
          x = 0,
 | 
			
		||||
          y = 944,
 | 
			
		||||
          width = 1600,
 | 
			
		||||
          height = 16,
 | 
			
		||||
          rotation = 0,
 | 
			
		||||
          visible = true,
 | 
			
		||||
          properties = {}
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id = 4,
 | 
			
		||||
          name = "",
 | 
			
		||||
          type = "",
 | 
			
		||||
          shape = "rectangle",
 | 
			
		||||
          x = 0,
 | 
			
		||||
          y = 0,
 | 
			
		||||
          width = 16,
 | 
			
		||||
          height = 960,
 | 
			
		||||
          rotation = 0,
 | 
			
		||||
          visible = true,
 | 
			
		||||
          properties = {}
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id = 5,
 | 
			
		||||
          name = "",
 | 
			
		||||
          type = "",
 | 
			
		||||
          shape = "rectangle",
 | 
			
		||||
          x = 112,
 | 
			
		||||
          y = 64,
 | 
			
		||||
          width = 96,
 | 
			
		||||
          height = 192,
 | 
			
		||||
          rotation = 0,
 | 
			
		||||
          visible = true,
 | 
			
		||||
          properties = {}
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id = 6,
 | 
			
		||||
          name = "",
 | 
			
		||||
          type = "",
 | 
			
		||||
          shape = "rectangle",
 | 
			
		||||
          x = 400,
 | 
			
		||||
          y = 368,
 | 
			
		||||
          width = 160,
 | 
			
		||||
          height = 64,
 | 
			
		||||
          rotation = 0,
 | 
			
		||||
          visible = true,
 | 
			
		||||
          properties = {}
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id = 7,
 | 
			
		||||
          name = "",
 | 
			
		||||
          type = "",
 | 
			
		||||
          shape = "rectangle",
 | 
			
		||||
          x = 576,
 | 
			
		||||
          y = 208,
 | 
			
		||||
          width = 192,
 | 
			
		||||
          height = 96,
 | 
			
		||||
          rotation = 0,
 | 
			
		||||
          visible = true,
 | 
			
		||||
          properties = {}
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id = 8,
 | 
			
		||||
          name = "",
 | 
			
		||||
          type = "",
 | 
			
		||||
          shape = "rectangle",
 | 
			
		||||
          x = 608,
 | 
			
		||||
          y = 336,
 | 
			
		||||
          width = 128,
 | 
			
		||||
          height = 160,
 | 
			
		||||
          rotation = 0,
 | 
			
		||||
          visible = true,
 | 
			
		||||
          properties = {}
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id = 10,
 | 
			
		||||
          name = "",
 | 
			
		||||
          type = "",
 | 
			
		||||
          shape = "rectangle",
 | 
			
		||||
          x = 768,
 | 
			
		||||
          y = 336,
 | 
			
		||||
          width = 128,
 | 
			
		||||
          height = 96,
 | 
			
		||||
          rotation = 0,
 | 
			
		||||
          visible = true,
 | 
			
		||||
          properties = {}
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id = 11,
 | 
			
		||||
          name = "",
 | 
			
		||||
          type = "",
 | 
			
		||||
          shape = "rectangle",
 | 
			
		||||
          x = 768,
 | 
			
		||||
          y = 496,
 | 
			
		||||
          width = 128,
 | 
			
		||||
          height = 64,
 | 
			
		||||
          rotation = 0,
 | 
			
		||||
          visible = true,
 | 
			
		||||
          properties = {}
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id = 13,
 | 
			
		||||
          name = "",
 | 
			
		||||
          type = "",
 | 
			
		||||
          shape = "rectangle",
 | 
			
		||||
          x = 240,
 | 
			
		||||
          y = 528,
 | 
			
		||||
          width = 224,
 | 
			
		||||
          height = 224,
 | 
			
		||||
          rotation = 0,
 | 
			
		||||
          visible = true,
 | 
			
		||||
          properties = {}
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id = 14,
 | 
			
		||||
          name = "",
 | 
			
		||||
          type = "",
 | 
			
		||||
          shape = "rectangle",
 | 
			
		||||
          x = 1008,
 | 
			
		||||
          y = 656,
 | 
			
		||||
          width = 272,
 | 
			
		||||
          height = 144,
 | 
			
		||||
          rotation = 0,
 | 
			
		||||
          visible = true,
 | 
			
		||||
          properties = {}
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id = 15,
 | 
			
		||||
          name = "",
 | 
			
		||||
          type = "",
 | 
			
		||||
          shape = "rectangle",
 | 
			
		||||
          x = 1168,
 | 
			
		||||
          y = 592,
 | 
			
		||||
          width = 160,
 | 
			
		||||
          height = 32,
 | 
			
		||||
          rotation = 0,
 | 
			
		||||
          visible = true,
 | 
			
		||||
          properties = {}
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id = 16,
 | 
			
		||||
          name = "",
 | 
			
		||||
          type = "",
 | 
			
		||||
          shape = "rectangle",
 | 
			
		||||
          x = 1120,
 | 
			
		||||
          y = 144,
 | 
			
		||||
          width = 128,
 | 
			
		||||
          height = 160,
 | 
			
		||||
          rotation = 0,
 | 
			
		||||
          visible = true,
 | 
			
		||||
          properties = {}
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id = 17,
 | 
			
		||||
          name = "",
 | 
			
		||||
          type = "",
 | 
			
		||||
          shape = "rectangle",
 | 
			
		||||
          x = 1104,
 | 
			
		||||
          y = 336,
 | 
			
		||||
          width = 96,
 | 
			
		||||
          height = 32,
 | 
			
		||||
          rotation = 0,
 | 
			
		||||
          visible = true,
 | 
			
		||||
          properties = {}
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id = 19,
 | 
			
		||||
          name = "",
 | 
			
		||||
          type = "",
 | 
			
		||||
          shape = "rectangle",
 | 
			
		||||
          x = 1216,
 | 
			
		||||
          y = 336,
 | 
			
		||||
          width = 64,
 | 
			
		||||
          height = 96,
 | 
			
		||||
          rotation = 0,
 | 
			
		||||
          visible = true,
 | 
			
		||||
          properties = {}
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id = 20,
 | 
			
		||||
          name = "",
 | 
			
		||||
          type = "",
 | 
			
		||||
          shape = "rectangle",
 | 
			
		||||
          x = 1280,
 | 
			
		||||
          y = 80,
 | 
			
		||||
          width = 64,
 | 
			
		||||
          height = 288,
 | 
			
		||||
          rotation = 0,
 | 
			
		||||
          visible = true,
 | 
			
		||||
          properties = {}
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
          id = 22,
 | 
			
		||||
          name = "",
 | 
			
		||||
          type = "",
 | 
			
		||||
          shape = "rectangle",
 | 
			
		||||
          x = 1344,
 | 
			
		||||
          y = 80,
 | 
			
		||||
          width = 64,
 | 
			
		||||
          height = 96,
 | 
			
		||||
          rotation = 0,
 | 
			
		||||
          visible = true,
 | 
			
		||||
          properties = {}
 | 
			
		||||
        }
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										67
									
								
								maps/map3.tmx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								maps/map3.tmx
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,67 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<map version="1.10" tiledversion="1.11.0" orientation="orthogonal" renderorder="right-down" width="25" height="15" tilewidth="64" tileheight="64" infinite="0" nextlayerid="4" nextobjectid="23">
 | 
			
		||||
 <editorsettings>
 | 
			
		||||
  <export target="map3.lua" format="lua"/>
 | 
			
		||||
 </editorsettings>
 | 
			
		||||
 <tileset firstgid="1" name="tileset" tilewidth="64" tileheight="64" tilecount="54" columns="9">
 | 
			
		||||
  <image source="../assets/tileset.png" width="576" height="384"/>
 | 
			
		||||
 </tileset>
 | 
			
		||||
 <layer id="1" name="floor" width="25" height="15">
 | 
			
		||||
  <data encoding="csv">
 | 
			
		||||
1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,
 | 
			
		||||
10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,
 | 
			
		||||
10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,
 | 
			
		||||
10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,
 | 
			
		||||
10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,
 | 
			
		||||
10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,
 | 
			
		||||
10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,
 | 
			
		||||
10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,
 | 
			
		||||
10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,
 | 
			
		||||
10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,
 | 
			
		||||
10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,
 | 
			
		||||
10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,
 | 
			
		||||
10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,
 | 
			
		||||
10,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,12,
 | 
			
		||||
19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21
 | 
			
		||||
</data>
 | 
			
		||||
 </layer>
 | 
			
		||||
 <layer id="2" name="inner walls" width="25" height="15">
 | 
			
		||||
  <data encoding="csv">
 | 
			
		||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 | 
			
		||||
0,33,34,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,54,31,0,0,0,
 | 
			
		||||
0,42,43,44,0,0,0,0,0,0,0,0,0,0,0,0,0,33,34,35,54,40,0,0,0,
 | 
			
		||||
0,51,52,53,0,0,0,0,0,31,31,31,0,0,0,0,0,42,43,44,54,11,0,0,0,
 | 
			
		||||
0,0,0,0,0,0,11,11,11,40,40,40,0,0,0,0,0,51,52,53,31,11,0,0,0,
 | 
			
		||||
0,0,0,0,0,0,32,32,32,33,34,35,31,31,0,0,0,54,54,31,40,0,0,0,0,
 | 
			
		||||
0,0,0,0,0,0,41,41,41,42,43,44,40,40,0,0,0,0,0,40,0,0,0,0,0,
 | 
			
		||||
0,0,0,0,0,0,0,0,0,51,52,53,32,32,0,0,0,0,0,0,0,0,0,0,0,
 | 
			
		||||
0,0,0,33,34,34,34,35,0,0,0,0,41,41,0,0,0,0,0,0,0,0,0,0,0,
 | 
			
		||||
0,0,0,42,43,43,43,44,0,0,0,0,0,0,0,0,0,0,54,54,54,0,0,0,0,
 | 
			
		||||
0,0,0,42,43,43,43,44,0,0,0,0,0,0,0,33,34,34,34,34,35,0,0,0,0,
 | 
			
		||||
0,0,0,51,52,52,52,53,0,0,0,0,0,0,0,42,43,43,43,43,44,0,0,0,0,
 | 
			
		||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,52,52,52,52,53,0,0,0,0,
 | 
			
		||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 | 
			
		||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
 | 
			
		||||
</data>
 | 
			
		||||
 </layer>
 | 
			
		||||
 <objectgroup id="3" name="Walls" visible="0">
 | 
			
		||||
  <object id="1" x="0" y="0" width="1600" height="16"/>
 | 
			
		||||
  <object id="2" x="1584" y="0" width="16" height="960"/>
 | 
			
		||||
  <object id="3" x="0" y="944" width="1600" height="16"/>
 | 
			
		||||
  <object id="4" x="0" y="0" width="16" height="960"/>
 | 
			
		||||
  <object id="5" x="112" y="64" width="96" height="192"/>
 | 
			
		||||
  <object id="6" x="400" y="368" width="160" height="64"/>
 | 
			
		||||
  <object id="7" x="576" y="208" width="192" height="96"/>
 | 
			
		||||
  <object id="8" x="608" y="336" width="128" height="160"/>
 | 
			
		||||
  <object id="10" x="768" y="336" width="128" height="96"/>
 | 
			
		||||
  <object id="11" x="768" y="496" width="128" height="64"/>
 | 
			
		||||
  <object id="13" x="240" y="528" width="224" height="224"/>
 | 
			
		||||
  <object id="14" x="1008" y="656" width="272" height="144"/>
 | 
			
		||||
  <object id="15" x="1168" y="592" width="160" height="32"/>
 | 
			
		||||
  <object id="16" x="1120" y="144" width="128" height="160"/>
 | 
			
		||||
  <object id="17" x="1104" y="336" width="96" height="32"/>
 | 
			
		||||
  <object id="19" x="1216" y="336" width="64" height="96"/>
 | 
			
		||||
  <object id="20" x="1280" y="80" width="64" height="288"/>
 | 
			
		||||
  <object id="22" x="1344" y="80" width="64" height="96"/>
 | 
			
		||||
 </objectgroup>
 | 
			
		||||
</map>
 | 
			
		||||
@ -60,12 +60,15 @@ function Player:handleKeys(up, down, left, right, dt)
 | 
			
		||||
	if love.keyboard.isDown(up) then
 | 
			
		||||
		self.vx = cos(self.rotation) * (self.speed * dt)
 | 
			
		||||
		self.vy = sin(self.rotation) * (self.speed * dt)
 | 
			
		||||
	elseif love.keyboard.isDown(down) then
 | 
			
		||||
	end
 | 
			
		||||
	if love.keyboard.isDown(down) then
 | 
			
		||||
		self.vx = cos(self.rotation) * (self.speed / 2 * dt) * -1
 | 
			
		||||
		self.vy = sin(self.rotation) * (self.speed / 2 * dt) * -1
 | 
			
		||||
	elseif love.keyboard.isDown(left) then
 | 
			
		||||
	end
 | 
			
		||||
	if love.keyboard.isDown(left) then
 | 
			
		||||
		self.rotation = self.rotation - (self.rotSpeed * dt)
 | 
			
		||||
	elseif love.keyboard.isDown(right) then
 | 
			
		||||
	end
 | 
			
		||||
	if love.keyboard.isDown(right) then
 | 
			
		||||
		self.rotation = self.rotation + (self.rotSpeed * dt)
 | 
			
		||||
	end
 | 
			
		||||
	self.collider:setLinearVelocity(self.vx, self.vy)
 | 
			
		||||
 | 
			
		||||
@ -29,9 +29,30 @@ function ClearBullets(bullets)
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local function setNewLevelFromRandom(count)
 | 
			
		||||
	local level = math.random(1, count)
 | 
			
		||||
	_G.CUR_LEVEL = level
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local function getLevelCount()
 | 
			
		||||
	local levelcount = 0
 | 
			
		||||
	local suf = ".lua"
 | 
			
		||||
	local files = love.filesystem.getDirectoryItems("maps/")
 | 
			
		||||
 | 
			
		||||
	for _, file in ipairs(files) do
 | 
			
		||||
		if string.find(file, suf) then
 | 
			
		||||
			levelcount = levelcount + 1
 | 
			
		||||
			--print(k .. ". " .. file) --outputs something like "1. main.lua"
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
	return levelcount
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
function RestartGame()
 | 
			
		||||
	setNewLevelFromRandom(getLevelCount())
 | 
			
		||||
 | 
			
		||||
	-- Stop the music
 | 
			
		||||
	StopAllMusic()
 | 
			
		||||
	--StopAllMusic()
 | 
			
		||||
 | 
			
		||||
	-- Clear the players collision
 | 
			
		||||
	ClearPlayerCollision()
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user