Compare commits
9 Enmetoj
albertoefg
...
master
Author | SHA1 | Date | |
---|---|---|---|
Jaidyn Ann | 16c49ac85a | ||
Jaidyn Ann | 4e77a845a1 | ||
Jaidyn Ann | 18c5a3b87f | ||
Jaidyn Ann | 700b0000ac | ||
Jaidyn Ann | 61377bb442 | ||
Jaidyn Ann | 235d470c4b | ||
Jaidyn Ann | a3bf3c5927 | ||
Jaidyn Ann | 025acf5978 | ||
Jaidyn Ann | 2054e27282 |
|
@ -0,0 +1,33 @@
|
||||||
|
# Monkune
|
||||||
|
Monkune is a platform-ish game, where you stack monkeys in order to get bananas.
|
||||||
|
|
||||||
|
![Screenshot of the game.](art/screenshot.png)
|
||||||
|
|
||||||
|
Made for [Librejam 2020-01](https://bytecrab.org/librejam/202101.html), with the
|
||||||
|
theme of ”cooperation.” It also bears the honor of being the winner… by default,
|
||||||
|
due to lack of competitors. :^)
|
||||||
|
|
||||||
|
|
||||||
|
## Running
|
||||||
|
Monkune should run just fine on any operating system with
|
||||||
|
[LÖVE](https://love2d.org) — including GNU/Linux, BSD, and Haiku.
|
||||||
|
|
||||||
|
Make sure LÖVE (`love2d`) is installed with your package manager, and then:
|
||||||
|
`$ make test`
|
||||||
|
|
||||||
|
|
||||||
|
### Building
|
||||||
|
The Makefile can make both the `monkune.love` archive and the Windows executable.
|
||||||
|
Make sure the `./bin/` directory exists, and that LÖVE is installed with your
|
||||||
|
package manager.
|
||||||
|
|
||||||
|
```
|
||||||
|
$ make win32
|
||||||
|
$ make love
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## Meta
|
||||||
|
Author: Jaidyn Ann <jadedctrl@posteo.at>
|
||||||
|
Code is under the GPLv3 (see COPYING.txt)
|
||||||
|
Art assets all under the CC-BY 3.0.
|
30
README.txt
30
README.txt
|
@ -1,30 +0,0 @@
|
||||||
MONKUNE
|
|
||||||
================================================================================
|
|
||||||
is a puzzle-ish game made for Librejam 2020-01.
|
|
||||||
|
|
||||||
|
|
||||||
INSTALL
|
|
||||||
--------------------------------------------------
|
|
||||||
LINUX/UNIX/HAIKU
|
|
||||||
--------------------
|
|
||||||
Download and open the "monkune.love" archive with the `love2d` command.
|
|
||||||
|
|
||||||
WINDOWS
|
|
||||||
--------------------
|
|
||||||
Download and extract the "monkune-win32.zip" file.
|
|
||||||
From there, run "Monkune.exe".
|
|
||||||
|
|
||||||
|
|
||||||
"BUILD"
|
|
||||||
--------------------------------------------------
|
|
||||||
The makefile can make both the "monkune.love" archive and the windows
|
|
||||||
executable. Make sure the `./bin/` directory exists, and that love2d
|
|
||||||
is installed with your package manager.
|
|
||||||
|
|
||||||
|
|
||||||
BORING STUFF
|
|
||||||
--------------------------------------------------
|
|
||||||
Jaidyn Ann <jadedctrl@teknik.io>
|
|
||||||
Code under GPLv3 (see COPYING.txt)
|
|
||||||
Art under varying (libre; see ./art/COPYING.txt)
|
|
||||||
Libraries under varying (libre; see ./lib/COPYING.txt)
|
|
Binary file not shown.
|
@ -0,0 +1,5 @@
|
||||||
|
https://opengameart.org/content/quirky-runner
|
||||||
|
|
||||||
|
Quirky Runner
|
||||||
|
|
||||||
|
CC-BY 3.0
|
Binary file not shown.
|
@ -0,0 +1,4 @@
|
||||||
|
https://opengameart.org/sites/default/files/the_life_and_times_of_inky_blinky_pinky_and_clyde_1.mp3
|
||||||
|
|
||||||
|
The Life and Times of Inky, Blinky, Pinky and Clyde
|
||||||
|
CC-BY 3.0
|
Binary file not shown.
|
@ -0,0 +1,5 @@
|
||||||
|
https://opengameart.org/content/windle-pixels-8-bit-circus
|
||||||
|
|
||||||
|
Windle Pixel's 8-Bit Circus
|
||||||
|
|
||||||
|
CC-BY 3.0
|
Binary file not shown.
After Width: | Height: | Size: 1.9 KiB |
548
main.lua
548
main.lua
|
@ -4,9 +4,9 @@ wind = require "lib/windfield"
|
||||||
stalker = require "lib/STALKER-X"
|
stalker = require "lib/STALKER-X"
|
||||||
|
|
||||||
downwall = 1; rightwall = 2; leftwall = 3
|
downwall = 1; rightwall = 2; leftwall = 3
|
||||||
mainmenu = 0; game = 1; gameover = 2; pause = 3
|
mainmenu = 0; game = 1; gameover = 2; pause = 3; youwin = 4
|
||||||
|
|
||||||
world = wind.newWorld(0, 400, true)
|
world = wind.newWorld(0, 40, true)
|
||||||
|
|
||||||
-- GAME STATES
|
-- GAME STATES
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
|
@ -20,8 +20,9 @@ function love.load ()
|
||||||
a_ttf = love.graphics.newFont("art/font/alagard.ttf", nil, "none")
|
a_ttf = love.graphics.newFont("art/font/alagard.ttf", nil, "none")
|
||||||
r_ttf = love.graphics.newFont("art/font/romulus.ttf", nil, "none")
|
r_ttf = love.graphics.newFont("art/font/romulus.ttf", nil, "none")
|
||||||
|
|
||||||
-- mainmenu_load()
|
camera = stalker()
|
||||||
game_load()
|
|
||||||
|
mainmenu_load()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
@ -29,17 +30,28 @@ function love.update(dt)
|
||||||
if(mode == mainmenu) then mainmenu_update(dt)
|
if(mode == mainmenu) then mainmenu_update(dt)
|
||||||
elseif(mode == game) then game_update(dt)
|
elseif(mode == game) then game_update(dt)
|
||||||
elseif(mode == gameover) then gameover_update(dt)
|
elseif(mode == gameover) then gameover_update(dt)
|
||||||
|
elseif(mode == youwin) then youwin_update(dt)
|
||||||
elseif(mode == pause) then pause_update(dt)
|
elseif(mode == pause) then pause_update(dt)
|
||||||
end
|
end
|
||||||
|
camera:update(dt)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
function love.draw()
|
function love.draw()
|
||||||
|
camera:attach()
|
||||||
if(mode == mainmenu) then mainmenu_draw()
|
if(mode == mainmenu) then mainmenu_draw()
|
||||||
elseif(mode == game) then game_draw()
|
elseif(mode == game) then game_draw()
|
||||||
elseif(mode == gameover) then gameover_draw()
|
elseif(mode == gameover) then gameover_draw()
|
||||||
|
elseif(mode == youwin) then youwin_draw()
|
||||||
elseif(mode == pause) then pause_draw()
|
elseif(mode == pause) then pause_draw()
|
||||||
end
|
end
|
||||||
|
camera:detach()
|
||||||
|
camera:draw()
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function love.resize()
|
||||||
|
camera = stalker()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
@ -47,6 +59,7 @@ function love.keypressed(key)
|
||||||
if(mode == mainmenu) then mainmenu_keypressed(key)
|
if(mode == mainmenu) then mainmenu_keypressed(key)
|
||||||
elseif(mode == game) then game_keypressed(key)
|
elseif(mode == game) then game_keypressed(key)
|
||||||
elseif(mode == gameover) then gameover_keypressed(key)
|
elseif(mode == gameover) then gameover_keypressed(key)
|
||||||
|
elseif(mode == youwin) then youwin_keypressed(key)
|
||||||
elseif(mode == pause) then pause_keypressed(key)
|
elseif(mode == pause) then pause_keypressed(key)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -56,6 +69,7 @@ function love.keyreleased (key)
|
||||||
if(mode == mainmenu) then mainmenu_keyreleased(key)
|
if(mode == mainmenu) then mainmenu_keyreleased(key)
|
||||||
elseif(mode == game) then game_keyreleased(key)
|
elseif(mode == game) then game_keyreleased(key)
|
||||||
elseif(mode == gameover) then gameover_keyreleased(key)
|
elseif(mode == gameover) then gameover_keyreleased(key)
|
||||||
|
elseif(mode == youwin) then youwin_keyreleased(key)
|
||||||
elseif(mode == pause) then pause_keyreleased(key)
|
elseif(mode == pause) then pause_keyreleased(key)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -66,44 +80,126 @@ end
|
||||||
function mainmenu_load ()
|
function mainmenu_load ()
|
||||||
mode = mainmenu
|
mode = mainmenu
|
||||||
selection = 1
|
selection = 1
|
||||||
-- if(bgm) then
|
if(bgm) then
|
||||||
-- bgm:stop()
|
bgm:stop()
|
||||||
-- end
|
end
|
||||||
-- bgm = love.audio.newSource("art/music/menu.ogg", "static")
|
bgm = love.audio.newSource("art/music/default.mp3", "static")
|
||||||
-- bgm:play()
|
bgm:play()
|
||||||
-- bgm:setLooping(true)
|
bgm:setLooping(true)
|
||||||
-- bgm:setVolume(1.5)
|
-- bgm:setVolume(1.5)
|
||||||
--
|
frontMenu = nil
|
||||||
-- frontMenu = Menu:new(100, 100, 30, 50, 2,
|
mapMenu = nil
|
||||||
-- { { love.graphics.newText(a_ttf, "get banana!"),
|
|
||||||
-- function () game_load() end },
|
frontMenu_init()
|
||||||
-- { love.graphics.newText(a_ttf, "get help!"),
|
|
||||||
-- function () helpScreen = true end },
|
camera = stalker()
|
||||||
-- { love.graphics.newText(a_ttf, "get outta dodge!"),
|
map = Map:new("maps/sys/menu.lua")
|
||||||
-- function () love.event.quit(0) end } })
|
player.following = true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
function mainmenu_update(dt)
|
function mainmenu_update(dt)
|
||||||
|
if not (mapMenu == nil) then return; end
|
||||||
|
|
||||||
|
world:update(dt)
|
||||||
|
player:update(dt)
|
||||||
|
map:update(dt)
|
||||||
|
|
||||||
|
-- make player monkey move randomly
|
||||||
|
local num = math.random(100)
|
||||||
|
local dirs = player.directionals
|
||||||
|
if (num == 1) then
|
||||||
|
dirs['left'] = 1
|
||||||
|
dirs['right'] = 0
|
||||||
|
elseif (num == 2) then
|
||||||
|
dirs['right'] = 1
|
||||||
|
dirs['left'] = 0
|
||||||
|
elseif (num == 3) then
|
||||||
|
dirs['up'] = 1
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
function mainmenu_draw ()
|
function mainmenu_draw ()
|
||||||
|
if (mapMenu == nil) then
|
||||||
|
map:draw()
|
||||||
|
player:draw()
|
||||||
|
frontMenu:draw()
|
||||||
|
else
|
||||||
|
mapMenu:draw()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
function mainmenu_keypressed(key)
|
function mainmenu_keypressed(key)
|
||||||
|
if (mapMenu == nil) then
|
||||||
|
frontMenu:keypressed(key)
|
||||||
|
else
|
||||||
|
mapMenu:keypressed(key)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
function mainmenu_keyreleased(key)
|
function mainmenu_keyreleased(key)
|
||||||
|
if (mapMenu == nil) then
|
||||||
|
frontMenu:keyreleased(key)
|
||||||
|
else
|
||||||
|
mapMenu:keyreleased(key)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function frontMenu_init()
|
||||||
|
frontMenu = Menu:new(100, 100, 30, 50, 3, {
|
||||||
|
{love.graphics.newText(a_ttf, "get banana"),
|
||||||
|
function () mapMenu_init() end},
|
||||||
|
-- camera:fade(.2, {0,0,0,1}, function() mapMenu_init() end)
|
||||||
|
-- 2, {0,0,0,1}, function() mapMenu_init() end)
|
||||||
|
-- end},
|
||||||
|
{love.graphics.newText(a_ttf, "get outta dodge"),
|
||||||
|
function () love.event.quit(0) end }})
|
||||||
|
mapMenu = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function mapMenu_init(directory)
|
||||||
|
directory = directory or "maps"
|
||||||
|
local menuEntries = {[1] = {love.graphics.newText(a_ttf, "../"),
|
||||||
|
function () mainmenu_load() end}}
|
||||||
|
-- if (directory == "maps") then mainmenu_load()
|
||||||
|
|
||||||
|
local indice = 2
|
||||||
|
local files = love.filesystem.getDirectoryItems(directory)
|
||||||
|
|
||||||
|
for k,file in pairs(files) do
|
||||||
|
file = directory .. "/" .. file
|
||||||
|
local filetype = love.filesystem.getInfo(file).type
|
||||||
|
local fileSplit = split(file, ".")
|
||||||
|
local fileExt = fileSplit[2] or ""
|
||||||
|
|
||||||
|
if (filetype == "directory") then
|
||||||
|
menuEntries[indice] = {love.graphics.newText(a_ttf, file .. "/"),
|
||||||
|
function() mapMenu_init(file) end}
|
||||||
|
indice = indice + 1
|
||||||
|
elseif (filetype == "file" and fileExt == "lua") then
|
||||||
|
menuEntries[indice] = {love.graphics.newText(a_ttf, fileSplit[1]),
|
||||||
|
function() game_load(file) end}
|
||||||
|
indice = indice + 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
mapMenu = Menu:new(100, 100, 30, 50, 3, menuEntries)
|
||||||
|
frontMenu = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
-- PAUSE STATE
|
-- PAUSE STATE
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
function pause_load()
|
function pause_load()
|
||||||
|
if(bgm) then
|
||||||
|
bgm:stop()
|
||||||
|
end
|
||||||
|
mode = pause
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
@ -112,10 +208,23 @@ end
|
||||||
|
|
||||||
|
|
||||||
function pause_draw ()
|
function pause_draw ()
|
||||||
|
game_draw()
|
||||||
|
camera:detach()
|
||||||
|
love.graphics.draw(love.graphics.newText(r_ttf,
|
||||||
|
"paused\n[enter to continue]\n[escape to exit]"), 200, 200, 0, 3, 3)
|
||||||
|
camera:attach()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
function pause_keypressed(key)
|
function pause_keypressed(key)
|
||||||
|
if (key == "return") then
|
||||||
|
if(bgm) then
|
||||||
|
bgm:play()
|
||||||
|
end
|
||||||
|
mode = game
|
||||||
|
elseif (key == "escape") then
|
||||||
|
mainmenu_load()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
@ -126,6 +235,7 @@ end
|
||||||
-- GAMEOVER STATE
|
-- GAMEOVER STATE
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
function gameover_load ()
|
function gameover_load ()
|
||||||
|
mode = gameover
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
@ -135,11 +245,17 @@ end
|
||||||
|
|
||||||
function gameover_draw ()
|
function gameover_draw ()
|
||||||
game_draw()
|
game_draw()
|
||||||
|
camera:detach()
|
||||||
|
love.graphics.draw(love.graphics.newText(r_ttf,
|
||||||
|
"nice try!\n[enter to restart]\n[escape to exit]"), 200, 200, 0, 3, 3)
|
||||||
|
camera:attach()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
function gameover_keypressed(key)
|
function gameover_keypressed(key)
|
||||||
if(key == "return" or key == "escape") then
|
if (key == "return" or key == "space") then
|
||||||
|
camera:fade(.2, {0,0,0,1}, function() game_load() end)
|
||||||
|
elseif (key == "escape") then
|
||||||
mainmenu_load()
|
mainmenu_load()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -150,14 +266,63 @@ end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- YOUWIN STATE
|
||||||
|
----------------------------------------
|
||||||
|
function youwin_load ()
|
||||||
|
mode = youwin
|
||||||
|
|
||||||
|
if(bgm) then
|
||||||
|
bgm:stop()
|
||||||
|
end
|
||||||
|
bgm = love.audio.newSource("art/music/win.mp3", "static")
|
||||||
|
bgm:play()
|
||||||
|
bgm:setLooping(true)
|
||||||
|
|
||||||
|
camera = stalker()
|
||||||
|
map = Map:new("maps/sys/win.lua")
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function youwin_update(dt)
|
||||||
|
world:update(dt)
|
||||||
|
player:update(dt)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function youwin_draw ()
|
||||||
|
map:draw()
|
||||||
|
player:draw()
|
||||||
|
|
||||||
|
camera:detach()
|
||||||
|
love.graphics.draw(love.graphics.newText(r_ttf,
|
||||||
|
"monkey happy!\nhit enter!"), 200, 200, 0, 3, 3)
|
||||||
|
camera:attach()
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function youwin_keypressed(key)
|
||||||
|
if (key == "return" or key == "space" or key == "escape") then
|
||||||
|
mainmenu_load()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function youwin_keyreleased(key)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- GAME STATE
|
-- GAME STATE
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
function game_load ()
|
function game_load(mapfile)
|
||||||
mode = game
|
mode = game
|
||||||
map = Map:new("maps/tutorial/1.lua")
|
|
||||||
camera = stalker()
|
mapfile = mapfile or map.filepath
|
||||||
camera:setFollowStyle('PLATFORMER')
|
map = Map:new(mapfile)
|
||||||
|
|
||||||
|
camera:fade(.2, {0,0,0,0})
|
||||||
camera:setFollowLerp(0.1)
|
camera:setFollowLerp(0.1)
|
||||||
|
camera:setFollowStyle('PLATFORMER')
|
||||||
|
|
||||||
-- bgm:stop()
|
-- bgm:stop()
|
||||||
-- bgm = love.audio.newSource("art/music/game.ogg", "static")
|
-- bgm = love.audio.newSource("art/music/game.ogg", "static")
|
||||||
|
@ -171,20 +336,13 @@ function game_update(dt)
|
||||||
map:update(dt)
|
map:update(dt)
|
||||||
|
|
||||||
local x, y = player.monks[player.current].body:getPosition()
|
local x, y = player.monks[player.current].body:getPosition()
|
||||||
camera:update(dt)
|
|
||||||
camera:follow(x, y)
|
camera:follow(x, y)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
function game_draw ()
|
function game_draw ()
|
||||||
camera:attach()
|
|
||||||
|
|
||||||
map:draw()
|
map:draw()
|
||||||
player:draw()
|
player:draw()
|
||||||
banana:draw()
|
|
||||||
|
|
||||||
camera:detach()
|
|
||||||
camera:draw()
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
@ -212,9 +370,12 @@ function game_keypressed(key)
|
||||||
player.following = false
|
player.following = false
|
||||||
|
|
||||||
elseif (key == "=" and camera.scale < 10) then
|
elseif (key == "=" and camera.scale < 10) then
|
||||||
camera.scale = camera.scale + 1
|
camera.scale = camera.scale + .5
|
||||||
elseif (key == "-" and camera.scale > 1) then
|
elseif (key == "-" and camera.scale > .5) then
|
||||||
camera.scale = camera.scale - 1
|
camera.scale = camera.scale - .5
|
||||||
|
|
||||||
|
elseif (key == "escape") then
|
||||||
|
pause_load()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -244,10 +405,10 @@ end
|
||||||
-- MONK player class
|
-- MONK player class
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
Monk = class('Monk')
|
Monk = class('Monk')
|
||||||
world:addCollisionClass('Monk')
|
|
||||||
|
|
||||||
function Monk:initialize(x, y, count)
|
function Monk:initialize(x, y, count)
|
||||||
self.monks = {}
|
self.monks = {}
|
||||||
|
self.frozen = {}
|
||||||
self.onGround = {}
|
self.onGround = {}
|
||||||
self.current = 0
|
self.current = 0
|
||||||
self.last = count - 1
|
self.last = count - 1
|
||||||
|
@ -262,9 +423,10 @@ function Monk:initialize(x, y, count)
|
||||||
|
|
||||||
for i=0,(count-1) do
|
for i=0,(count-1) do
|
||||||
self.monks[i] = world:newRectangleCollider(x - (i * 20), y, 16, 16);
|
self.monks[i] = world:newRectangleCollider(x - (i * 20), y, 16, 16);
|
||||||
self.monks[i]:setCollisionClass('Monk')
|
self.monks[i]:setCollisionClass('monk')
|
||||||
self.monks[i]:setObject(self)
|
self.monks[i]:setObject(self)
|
||||||
self.monkSprites[i] = 'default'
|
self.monkSprites[i] = 'default'
|
||||||
|
self.frozen[i] = false
|
||||||
|
|
||||||
local collision = self:makeCollisionCallback(i)
|
local collision = self:makeCollisionCallback(i)
|
||||||
self.monks[i]:setPreSolve(collision)
|
self.monks[i]:setPreSolve(collision)
|
||||||
|
@ -284,10 +446,22 @@ function Monk:update(dt)
|
||||||
|
|
||||||
for i=0,(self.last) do
|
for i=0,(self.last) do
|
||||||
if (self.onGround[i] > 0) then self.monkSprites[i] = 'default'
|
if (self.onGround[i] > 0) then self.monkSprites[i] = 'default'
|
||||||
|
elseif (self.frozen[i] == true) then self.monkSprites[i] = 'frozen'
|
||||||
else self.monkSprites[i] = 'jump'
|
else self.monkSprites[i] = 'jump'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local allFrozen = true
|
||||||
|
for k,frozen in pairs(self.frozen) do
|
||||||
|
if (frozen == true) then
|
||||||
|
self.monks[k]:setType('static')
|
||||||
|
self.monks[k]:setCollisionClass('platform')
|
||||||
|
elseif (frozen == false) then
|
||||||
|
allFrozen = false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if (allFrozen == true) then gameover_load(); end
|
||||||
|
|
||||||
-- cleanup
|
-- cleanup
|
||||||
for i=0,(self.last) do
|
for i=0,(self.last) do
|
||||||
self.onGround[i] = 0
|
self.onGround[i] = 0
|
||||||
|
@ -298,22 +472,13 @@ end
|
||||||
|
|
||||||
|
|
||||||
function Monk:draw ()
|
function Monk:draw ()
|
||||||
-- live monkeys
|
for i=0,self.last do
|
||||||
for i=self.current,self.last do
|
|
||||||
local monk = self.monks[i]
|
local monk = self.monks[i]
|
||||||
local x,y = monk.body:getWorldPoints(monk.shape:getPoints())
|
local x,y = monk.body:getWorldPoints(monk.shape:getPoints())
|
||||||
|
|
||||||
love.graphics.draw(self.sprites[self.monkSprites[i]], x, y,
|
love.graphics.draw(self.sprites[self.monkSprites[i]], x, y,
|
||||||
monk.body:getAngle(), 1, 1)
|
monk.body:getAngle(), 1, 1)
|
||||||
end
|
end
|
||||||
-- frozen monkeys
|
|
||||||
for i=0,self.current-1 do
|
|
||||||
local monk = self.monks[i]
|
|
||||||
local x,y = monk.body:getWorldPoints(monk.shape:getPoints())
|
|
||||||
|
|
||||||
love.graphics.draw(self.sprites['frozen'], x, y, monk.body:getAngle(),
|
|
||||||
1, 1)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
@ -360,9 +525,9 @@ function Monk:follow ()
|
||||||
local mx, my = thisMonk.body:getPosition()
|
local mx, my = thisMonk.body:getPosition()
|
||||||
local dx, dy = thisMonk:getLinearVelocity()
|
local dx, dy = thisMonk:getLinearVelocity()
|
||||||
|
|
||||||
if (mx < (x + 30)) then
|
if (mx < (x + 30) and math.random(20) == 1) then
|
||||||
thisMonk:setLinearVelocity(newVel, dy)
|
thisMonk:setLinearVelocity(newVel, dy)
|
||||||
elseif ((x - 30) < mx) then
|
elseif ((x - 30) < mx and math.random(10) == 1) then
|
||||||
thisMonk:setLinearVelocity(-newVel, dy)
|
thisMonk:setLinearVelocity(-newVel, dy)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -388,12 +553,18 @@ end
|
||||||
|
|
||||||
|
|
||||||
-- freeze the player monkey in place, making it a platform
|
-- freeze the player monkey in place, making it a platform
|
||||||
function Monk:freeze ()
|
function Monk:freeze (indice)
|
||||||
if not (self.current > self.last) then
|
indice = indice or self.current
|
||||||
local monk = self.monks[self.current]
|
local monk = self.monks[indice]
|
||||||
monk:setType('static')
|
self.frozen[indice] = true
|
||||||
monk:setCollisionClass('Platform')
|
|
||||||
self:switch(self.current + 1)
|
if (indice == self.current) then
|
||||||
|
for i=0,self.last do
|
||||||
|
if (self.frozen[self.last - i] == false) then
|
||||||
|
self:switch(self.last - i)
|
||||||
|
i = self.last
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -401,9 +572,6 @@ end
|
||||||
-- switch from current monkey to next
|
-- switch from current monkey to next
|
||||||
function Monk:switch (index)
|
function Monk:switch (index)
|
||||||
self.current = index
|
self.current = index
|
||||||
if (index > self.last) then
|
|
||||||
gameover_load()
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
@ -412,8 +580,8 @@ function Monk:makeCollisionCallback (i)
|
||||||
local function collision(collision1, collision2, contact)
|
local function collision(collision1, collision2, contact)
|
||||||
local nx, ny = contact:getNormal( )
|
local nx, ny = contact:getNormal( )
|
||||||
|
|
||||||
if collision1.collision_class == "Monk"
|
if (collision1.collision_class == "monk"
|
||||||
and collision2.collision_class == "Platform"
|
and collision2.collision_class == "platform")
|
||||||
then
|
then
|
||||||
if (math.abs(ny) == 1) then
|
if (math.abs(ny) == 1) then
|
||||||
self.onGround[i] = downwall
|
self.onGround[i] = downwall
|
||||||
|
@ -424,6 +592,22 @@ function Monk:makeCollisionCallback (i)
|
||||||
if not (self.onGround[i] == 0) then return; end
|
if not (self.onGround[i] == 0) then return; end
|
||||||
self.onGround[i] = rightwall
|
self.onGround[i] = rightwall
|
||||||
end
|
end
|
||||||
|
|
||||||
|
elseif (collision1.collision_class == "monk"
|
||||||
|
and collision2.collision_class == "banana")
|
||||||
|
then
|
||||||
|
youwin_load()
|
||||||
|
|
||||||
|
elseif (collision1.collision_class == "monk"
|
||||||
|
and collision2.collision_class == "button")
|
||||||
|
then
|
||||||
|
map.buttonHit = true
|
||||||
|
|
||||||
|
elseif (collision1.collision_class == "monk"
|
||||||
|
and collision2.collision_class == "frozenButton"
|
||||||
|
and self.frozen[i] == true)
|
||||||
|
then
|
||||||
|
map.frozenHit = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
return collision
|
return collision
|
||||||
|
@ -433,16 +617,16 @@ end
|
||||||
|
|
||||||
-- BANNANA owo (win condition obj)
|
-- BANNANA owo (win condition obj)
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
Bananna = class('Bananna')
|
Banana = class('Banana')
|
||||||
world:addCollisionClass('Bananna')
|
|
||||||
|
|
||||||
function Bananna:initialize(x, y)
|
function Banana:initialize(x, y)
|
||||||
self.sprite = love.graphics.newImage("art/sprites/banana.png")
|
self.sprite = love.graphics.newImage("art/sprites/banana.png")
|
||||||
self.collider = world:newRectangleCollider(x, y, 16, 16);
|
self.collider = world:newRectangleCollider(x, y, 16, 16);
|
||||||
|
self.collider:setCollisionClass('banana')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
function Bananna:draw()
|
function Banana:draw()
|
||||||
local col = self.collider
|
local col = self.collider
|
||||||
local x,y = col.body:getWorldPoints(col.shape:getPoints())
|
local x,y = col.body:getWorldPoints(col.shape:getPoints())
|
||||||
love.graphics.draw(self.sprite, x, y, col.body:getAngle(), 1, 1)
|
love.graphics.draw(self.sprite, x, y, col.body:getAngle(), 1, 1)
|
||||||
|
@ -453,83 +637,179 @@ end
|
||||||
-- MAP used to store map data (ofc)
|
-- MAP used to store map data (ofc)
|
||||||
----------------------------------------
|
----------------------------------------
|
||||||
Map = class('Map')
|
Map = class('Map')
|
||||||
world:addCollisionClass('Platform')
|
|
||||||
|
|
||||||
function Map:initialize(filepath)
|
function Map:initialize(filepath)
|
||||||
|
self.filepath = filepath
|
||||||
self.ground = {}
|
self.ground = {}
|
||||||
self.platforms = {}
|
self.platforms = {}
|
||||||
|
self.tables = {}
|
||||||
self.objects = {}
|
self.objects = {}
|
||||||
self.object_c = 0
|
self.outOfBounds = "die"
|
||||||
|
self.spawn = {['x'] = 100, ['y'] = 100}
|
||||||
|
self.respawn = {['x'] = 100, ['y'] = 100}
|
||||||
|
self.buttonHit = false
|
||||||
|
self.frozenHit = false
|
||||||
|
|
||||||
local maptable = dofile(filepath)
|
local maptable = dofile(filepath)
|
||||||
|
|
||||||
|
self.width,self.height = maptable.width,maptable.height
|
||||||
|
self.tileWidth,self.tileHeight = maptable.tilewidth,maptable.tileheight
|
||||||
|
|
||||||
love.graphics.setBackgroundColor(146/255, 187/255, 203/255)
|
love.graphics.setBackgroundColor(146/255, 187/255, 203/255)
|
||||||
local monkCount = 3
|
local monkCount = 3
|
||||||
local monkX,monkY = 100,100
|
local monkX,monkY = 100,100
|
||||||
local bananaX,bananaY = 200,200
|
world:destroy()
|
||||||
|
world = wind.newWorld(0, 400, true)
|
||||||
|
world:addCollisionClass('monk')
|
||||||
|
world:addCollisionClass('banana')
|
||||||
|
world:addCollisionClass('platform')
|
||||||
|
world:addCollisionClass('button')
|
||||||
|
world:addCollisionClass('frozenButton')
|
||||||
|
world:addCollisionClass('toyButton')
|
||||||
|
world:addCollisionClass('door')
|
||||||
|
world:addCollisionClass('frozenDoor')
|
||||||
|
world:addCollisionClass('toyDoor')
|
||||||
|
world:addCollisionClass('toy')
|
||||||
|
|
||||||
for n,layer in pairs(maptable.layers) do
|
for n,layer in pairs(maptable.layers) do
|
||||||
if not (layer.type == "objectgroup") then break; end
|
if not (layer.type == "objectgroup") then break; end
|
||||||
for nn,object in pairs(layer.objects) do
|
for nn,object in pairs(layer.objects) do
|
||||||
|
|
||||||
if (object.shape == "rectangle") then
|
if (object.shape == "rectangle") then
|
||||||
self.object_c = self.object_c + 1
|
self.tables[object.id] =
|
||||||
local o_c = self.object_c
|
|
||||||
self.objects[o_c] =
|
|
||||||
world:newRectangleCollider(object.x, object.y,
|
world:newRectangleCollider(object.x, object.y,
|
||||||
object.width, object.height)
|
object.width, object.height)
|
||||||
self.objects[o_c]:setType('static')
|
self.tables[object.id]:setType('static')
|
||||||
self.objects[o_c]:setCollisionClass('Platform')
|
self.tables[object.id]:setCollisionClass('platform')
|
||||||
|
|
||||||
|
elseif (object.shape == "polygon") then
|
||||||
|
local ox,oy = object.x,object.y
|
||||||
|
local vertices = {}
|
||||||
|
local vi = 1
|
||||||
|
for kk,verticePair in pairs(object.polygon) do
|
||||||
|
vertices[vi] = verticePair['x'] + ox
|
||||||
|
vertices[vi+1] = verticePair['y'] + oy
|
||||||
|
vi = vi + 2
|
||||||
|
end
|
||||||
|
self.tables[object.id] =
|
||||||
|
world:newPolygonCollider(vertices)
|
||||||
|
self.tables[object.id]:setType('static')
|
||||||
|
self.tables[object.id]:setCollisionClass('platform')
|
||||||
|
|
||||||
elseif (object.shape == "text") then
|
elseif (object.shape == "text") then
|
||||||
self.object_c = self.object_c + 1
|
self.tables[object.id] = object
|
||||||
self.objects[self.object_c] = object
|
|
||||||
|
|
||||||
elseif (object.shape == "point" and object.type == "spawn") then
|
elseif (object.shape == "point" and object.type == "spawn") then
|
||||||
if not (object.properties == nil
|
if not (object.properties == nil
|
||||||
and object.properties["count"] == nil) then
|
or object.properties["count"] == nil) then
|
||||||
monkCount = object.properties["count"]
|
monkCount = object.properties["count"]
|
||||||
end
|
end
|
||||||
monkX,monkY = object.x,object.y
|
self.spawn['x'],self.spawn['y'] = object.x,object.y
|
||||||
|
|
||||||
|
elseif (object.shape == "point" and object.type == "respawn") then
|
||||||
|
self.respawn['x'],self.respawn['y'] = object.x,object.y
|
||||||
|
self.outOfBounds = "teleport"
|
||||||
|
|
||||||
elseif (object.shape == "point" and object.type == "banana") then
|
elseif (object.shape == "point" and object.type == "banana") then
|
||||||
bananaX,bananaY = object.x,object.y
|
self.objects[object.id] = Banana:new(object.x, object.y)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
local thisTable = self.tables[object.id]
|
||||||
|
|
||||||
|
if (object.type == "toy") then
|
||||||
|
thisTable:setCollisionClass('toy')
|
||||||
|
thisTable:setType('kinematic')
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
if (object.type == "door" or object.type == "frozenDoor"
|
||||||
|
or object.type == "toyDoor")
|
||||||
|
then
|
||||||
|
thisTable.normPos = {}
|
||||||
|
thisTable.normPos['x'],thisTable.normPos['y'] =
|
||||||
|
thisTable.body:getPosition()
|
||||||
|
end
|
||||||
|
|
||||||
|
if (object.type == "door") then
|
||||||
|
thisTable:setCollisionClass('door')
|
||||||
|
elseif (object.type == "frozenDoor") then
|
||||||
|
thisTable:setCollisionClass('frozenDoor')
|
||||||
|
elseif (object.type == "toyDoor") then
|
||||||
|
thisTable:setCollisionClass('toyDoor')
|
||||||
|
elseif (object.type == "button") then
|
||||||
|
thisTable:setCollisionClass('button')
|
||||||
|
elseif (object.type == "frozenButton") then
|
||||||
|
thisTable:setCollisionClass('frozenButton')
|
||||||
|
elseif (object.type == "toyButton") then
|
||||||
|
thisTable:setCollisionClass('toyButton')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
player = Monk:new(monkX, monkY, monkCount)
|
|
||||||
banana = Bananna:new(bananaX, bananaY)
|
player = Monk:new(self.spawn['x'], self.spawn['y'], monkCount)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
function Map:update(dt)
|
function Map:update(dt)
|
||||||
|
local heightMax = self.height * self.tileHeight + 100
|
||||||
|
local widthMax = self.width * self.tileWidth + 200
|
||||||
|
|
||||||
|
-- enforce borders
|
||||||
|
for i=0,player.last do
|
||||||
|
local x,y = player.monks[i].body:getPosition()
|
||||||
|
|
||||||
|
if ((math.abs(x) > widthMax or y > heightMax)
|
||||||
|
and self.outOfBounds == "die") then
|
||||||
|
player:freeze(i)
|
||||||
|
elseif ((math.abs(x) > widthMax or y > heightMax)
|
||||||
|
and self.outOfBounds == "teleport") then
|
||||||
|
player.monks[i].body:setPosition(
|
||||||
|
self.respawn['x'], self.respawn['y'])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- unlock or reset doors
|
||||||
|
for k,table in pairs(self.tables) do
|
||||||
|
if (table.collision_class == "door" and self.buttonHit == true) then
|
||||||
|
table.body:setPosition(-1000, -1000)
|
||||||
|
elseif (table.collision_class == "door") then
|
||||||
|
table.body:setPosition(table.normPos['x'], table.normPos['y'])
|
||||||
|
|
||||||
|
elseif (table.collision_class == "frozenDoor"
|
||||||
|
and self.frozenHit == true)
|
||||||
|
then
|
||||||
|
table.body:setPosition(-1000, -1000)
|
||||||
|
elseif (table.collision_clas == "frozenDoor") then
|
||||||
|
table.body:setPosition(table.normPos['x'], table.normPos['y'])
|
||||||
|
|
||||||
|
elseif (table.collision_class == "toyDoor"
|
||||||
|
and self.toyHit == true)
|
||||||
|
then
|
||||||
|
table.body:setPosition(-1000, -1000)
|
||||||
|
elseif (table.collision_class == "toyDoor") then
|
||||||
|
table.body:setPosition(table.normPos['x'], table.normPos['y'])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
self.toyHit = false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
function Map:draw()
|
function Map:draw()
|
||||||
for k,object in pairs(self.objects) do
|
for k,table in pairs(self.tables) do
|
||||||
if (object.type == "Rectangle") then
|
if (table.type == "Rectangle" or table.type == "Polygon") then
|
||||||
love.graphics.polygon('fill',
|
love.graphics.polygon('fill',
|
||||||
object.body:getWorldPoints(object.shape:getPoints()))
|
table.body:getWorldPoints(table.shape:getPoints()))
|
||||||
elseif (object.shape == "text") then
|
|
||||||
love.graphics.draw(love.graphics.newText(a_ttf, object.text),
|
elseif (table.shape == "text") then
|
||||||
object.x, object.y)
|
love.graphics.draw(love.graphics.newText(a_ttf, table.text),
|
||||||
|
table.x, table.y, 0, 2, 2)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
for k,object in pairs(self.objects) do
|
||||||
|
object:draw()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
-- TEXTBOX gods forgive me
|
|
||||||
----------------------------------------
|
|
||||||
Textbox = class("Textbox")
|
|
||||||
|
|
||||||
function Textbox:initialize(x, y, string)
|
|
||||||
self.x,self.y = x,y
|
|
||||||
self.text = love.graphics.newText(a_ttf, string)
|
|
||||||
end
|
|
||||||
|
|
||||||
function Textbox:draw()
|
|
||||||
love.graphics.draw(self.text, self.x, self.y)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
@ -539,57 +819,79 @@ end
|
||||||
Menu = class("Menu")
|
Menu = class("Menu")
|
||||||
|
|
||||||
function Menu:initialize(x, y, offset_x, offset_y, scale, menuItems)
|
function Menu:initialize(x, y, offset_x, offset_y, scale, menuItems)
|
||||||
self.x = x; self.y = y
|
self.x,self.y = x,y
|
||||||
self.offset_x = offset_x; self.offset_y = offset_y
|
self.offset_x,self.offset_y = offset_x,offset_y
|
||||||
self.scale = scale
|
|
||||||
self.options = menuItems
|
self.options = menuItems
|
||||||
self.selected = 1
|
self.selected = 1
|
||||||
self.enter = false
|
self.scale = scale
|
||||||
self.up = false
|
|
||||||
self.down = false
|
self.keys = {}
|
||||||
|
self.keys['up'] = false
|
||||||
|
self.keys['down'] = false
|
||||||
|
self.keys['enter'] = false
|
||||||
|
|
||||||
|
self.ttf = r_ttf
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
function Menu:draw ()
|
function Menu:draw ()
|
||||||
-- love.graphics.draw(love.graphics.newText(a_ttf, ">>"),
|
for i=1,table.maxn(self.options) do
|
||||||
-- self.x - self.offset_x, this_y, 0,
|
local this_y = self.y + (self.offset_y * i)
|
||||||
-- self.scale, self.scale)
|
|
||||||
love.graphics.draw(love.graphics.newText(a_ttf, ">>"),
|
love.graphics.draw(self.options[i][1],
|
||||||
self.x - self.offset_x, this_y, 0,
|
self.x, this_y, 0, self.scale, self.scale)
|
||||||
self.scale, self.scale)
|
if (i == self.selected) then
|
||||||
|
love.graphics.draw(love.graphics.newText(self.ttf, ">>"),
|
||||||
|
self.x - self.offset_x, this_y, 0, self.scale, self.scale)
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
function Menu:keypressed(key)
|
function Menu:keypressed(key)
|
||||||
maxn = table.maxn(self.options)
|
maxn = table.maxn(self.options)
|
||||||
|
|
||||||
if(key == "return" and self.enter == false) then
|
if (key == "return" or key == "space") then
|
||||||
self.enter = true
|
self.keys['enter'] = true
|
||||||
if(self.options[self.selected][2]) then
|
if(self.options[self.selected][2]) then
|
||||||
self.options[self.selected][2]()
|
self.options[self.selected][2]()
|
||||||
end
|
end
|
||||||
elseif(key == "up" and self.selected > 1 and self.up == false) then
|
|
||||||
self.up = true
|
elseif (key == "up" and self.selected > 1
|
||||||
|
and self.keys['up'] == false) then
|
||||||
|
self.keys['up'] = true
|
||||||
self.selected = self.selected - 1
|
self.selected = self.selected - 1
|
||||||
elseif(key == "up" and self.up == false) then
|
elseif (key == "up" and self.keys['up'] == false) then
|
||||||
self.up = true
|
self.keys['up'] = true
|
||||||
self.selected = maxn
|
self.selected = maxn
|
||||||
elseif(key == "down" and self.selected < maxn and self.down == false) then
|
|
||||||
self.down = true
|
elseif (key == "down" and self.selected < maxn
|
||||||
|
and self.keys['down'] == false) then
|
||||||
|
self.keys['down'] = true
|
||||||
self.selected = self.selected + 1
|
self.selected = self.selected + 1
|
||||||
elseif(key == "down" and self.down == false) then
|
elseif (key == "down" and self.keys['down'] == false) then
|
||||||
self.down = true
|
self.keys['down'] = true
|
||||||
self.selected = 1
|
self.selected = 1
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
function Menu:keyreleased(key)
|
function Menu:keyreleased(key)
|
||||||
if(key == "return") then
|
if (key == "return" or key == "space") then
|
||||||
self.enter = false
|
self.keys['enter'] = false
|
||||||
elseif (key == "up") then
|
elseif (key == "up") then
|
||||||
self.up = false
|
self.keys['up'] = false
|
||||||
elseif (key == "down") then
|
elseif (key == "down") then
|
||||||
self.down = false
|
self.keys['down'] = false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
function split(inputString, seperator)
|
||||||
|
local newString = {}
|
||||||
|
for stringBit in string.gmatch(inputString, "([^"..seperator.."]+)") do
|
||||||
|
table.insert(newString, stringBit)
|
||||||
|
end
|
||||||
|
return newString
|
||||||
|
end
|
||||||
|
|
|
@ -4,12 +4,12 @@ return {
|
||||||
tiledversion = "1.4.3",
|
tiledversion = "1.4.3",
|
||||||
orientation = "orthogonal",
|
orientation = "orthogonal",
|
||||||
renderorder = "right-down",
|
renderorder = "right-down",
|
||||||
width = 100,
|
width = 120,
|
||||||
height = 100,
|
height = 50,
|
||||||
tilewidth = 16,
|
tilewidth = 16,
|
||||||
tileheight = 16,
|
tileheight = 16,
|
||||||
nextlayerid = 5,
|
nextlayerid = 5,
|
||||||
nextobjectid = 46,
|
nextobjectid = 47,
|
||||||
properties = {},
|
properties = {},
|
||||||
tilesets = {},
|
tilesets = {},
|
||||||
layers = {
|
layers = {
|
||||||
|
@ -29,8 +29,8 @@ return {
|
||||||
name = "hi",
|
name = "hi",
|
||||||
type = "",
|
type = "",
|
||||||
shape = "text",
|
shape = "text",
|
||||||
x = 37.6276,
|
x = 390.961,
|
||||||
y = 34.1667,
|
y = 10.1667,
|
||||||
width = 94.08,
|
width = 94.08,
|
||||||
height = 17,
|
height = 17,
|
||||||
rotation = 0,
|
rotation = 0,
|
||||||
|
@ -319,8 +319,8 @@ return {
|
||||||
name = "",
|
name = "",
|
||||||
type = "",
|
type = "",
|
||||||
shape = "rectangle",
|
shape = "rectangle",
|
||||||
x = 1370,
|
x = 1619.33,
|
||||||
y = 236,
|
y = 241.333,
|
||||||
width = 222.667,
|
width = 222.667,
|
||||||
height = 77.3333,
|
height = 77.3333,
|
||||||
rotation = 0,
|
rotation = 0,
|
||||||
|
@ -345,8 +345,8 @@ return {
|
||||||
name = "",
|
name = "",
|
||||||
type = "spawn",
|
type = "spawn",
|
||||||
shape = "point",
|
shape = "point",
|
||||||
x = 93,
|
x = 441,
|
||||||
y = 80,
|
y = 82.6667,
|
||||||
width = 0,
|
width = 0,
|
||||||
height = 0,
|
height = 0,
|
||||||
rotation = 0,
|
rotation = 0,
|
||||||
|
@ -360,13 +360,28 @@ return {
|
||||||
name = "",
|
name = "",
|
||||||
type = "banana",
|
type = "banana",
|
||||||
shape = "point",
|
shape = "point",
|
||||||
x = 1484,
|
x = 1721.33,
|
||||||
y = 240,
|
y = 238.667,
|
||||||
width = 0,
|
width = 0,
|
||||||
height = 0,
|
height = 0,
|
||||||
rotation = 0,
|
rotation = 0,
|
||||||
visible = true,
|
visible = true,
|
||||||
properties = {}
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 46,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "text",
|
||||||
|
x = 1121.04,
|
||||||
|
y = 265.167,
|
||||||
|
width = 80.5938,
|
||||||
|
height = 19,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
text = "-->",
|
||||||
|
wrap = true,
|
||||||
|
properties = {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,10 +1,10 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<map version="1.4" tiledversion="1.4.3" orientation="orthogonal" renderorder="right-down" width="100" height="100" tilewidth="16" tileheight="16" infinite="0" nextlayerid="5" nextobjectid="46">
|
<map version="1.4" tiledversion="1.4.3" orientation="orthogonal" renderorder="right-down" width="120" height="50" tilewidth="16" tileheight="16" infinite="0" nextlayerid="5" nextobjectid="47">
|
||||||
<editorsettings>
|
<editorsettings>
|
||||||
<export target="1.lua" format="lua"/>
|
<export target="1.lua" format="lua"/>
|
||||||
</editorsettings>
|
</editorsettings>
|
||||||
<objectgroup id="2" name="Object Layer 1">
|
<objectgroup id="2" name="Object Layer 1">
|
||||||
<object id="2" name="hi" x="37.6276" y="34.1667" width="94.08" height="17">
|
<object id="2" name="hi" x="390.961" y="10.1667" width="94.08" height="17">
|
||||||
<text wrap="1">move with wasd or arrow keys</text>
|
<text wrap="1">move with wasd or arrow keys</text>
|
||||||
</object>
|
</object>
|
||||||
<object id="38" x="1102.96" y="312.833" width="82.0781" height="17">
|
<object id="38" x="1102.96" y="312.833" width="82.0781" height="17">
|
||||||
|
@ -31,17 +31,20 @@
|
||||||
<object id="24" x="959.333" y="353.333" width="30.6667" height="157.333"/>
|
<object id="24" x="959.333" y="353.333" width="30.6667" height="157.333"/>
|
||||||
<object id="26" x="989.333" y="367.333" width="34.6667" height="143.333"/>
|
<object id="26" x="989.333" y="367.333" width="34.6667" height="143.333"/>
|
||||||
<object id="29" x="1024" y="384.667" width="224" height="126.667"/>
|
<object id="29" x="1024" y="384.667" width="224" height="126.667"/>
|
||||||
<object id="43" x="1370" y="236" width="222.667" height="77.3333"/>
|
<object id="43" x="1619.33" y="241.333" width="222.667" height="77.3333"/>
|
||||||
</objectgroup>
|
</objectgroup>
|
||||||
<objectgroup id="4" name="Object Layer 3">
|
<objectgroup id="4" name="Object Layer 3">
|
||||||
<object id="32" type="spawn" x="93" y="80">
|
<object id="32" type="spawn" x="441" y="82.6667">
|
||||||
<properties>
|
<properties>
|
||||||
<property name="count" type="int" value="4"/>
|
<property name="count" type="int" value="4"/>
|
||||||
</properties>
|
</properties>
|
||||||
<point/>
|
<point/>
|
||||||
</object>
|
</object>
|
||||||
<object id="45" type="bananna" x="1484" y="240">
|
<object id="45" type="bananna" x="1721.33" y="238.667">
|
||||||
<point/>
|
<point/>
|
||||||
</object>
|
</object>
|
||||||
|
<object id="46" x="1121.04" y="265.167" width="80.5938" height="19">
|
||||||
|
<text wrap="1">--></text>
|
||||||
|
</object>
|
||||||
</objectgroup>
|
</objectgroup>
|
||||||
</map>
|
</map>
|
|
@ -0,0 +1,262 @@
|
||||||
|
return {
|
||||||
|
version = "1.4",
|
||||||
|
luaversion = "5.1",
|
||||||
|
tiledversion = "1.4.3",
|
||||||
|
orientation = "orthogonal",
|
||||||
|
renderorder = "right-down",
|
||||||
|
width = 50,
|
||||||
|
height = 50,
|
||||||
|
tilewidth = 16,
|
||||||
|
tileheight = 16,
|
||||||
|
nextlayerid = 7,
|
||||||
|
nextobjectid = 23,
|
||||||
|
properties = {},
|
||||||
|
tilesets = {},
|
||||||
|
layers = {
|
||||||
|
{
|
||||||
|
type = "objectgroup",
|
||||||
|
draworder = "topdown",
|
||||||
|
id = 2,
|
||||||
|
name = "platforms",
|
||||||
|
visible = true,
|
||||||
|
opacity = 1,
|
||||||
|
offsetx = 0,
|
||||||
|
offsety = 0,
|
||||||
|
properties = {},
|
||||||
|
objects = {
|
||||||
|
{
|
||||||
|
id = 5,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 779.288,
|
||||||
|
y = 116.365,
|
||||||
|
width = 20,
|
||||||
|
height = 145.333,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 18,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 16.2311,
|
||||||
|
y = 735.171,
|
||||||
|
width = 782.91,
|
||||||
|
height = 63.9694,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 19,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 112.663,
|
||||||
|
y = 258.742,
|
||||||
|
width = 683.614,
|
||||||
|
height = 479.293,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 20,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "polygon",
|
||||||
|
x = 301.707,
|
||||||
|
y = 257.787,
|
||||||
|
width = 0,
|
||||||
|
height = 0,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
polygon = {
|
||||||
|
{ x = 0, y = 0 },
|
||||||
|
{ x = -188.089, y = -98.3411 },
|
||||||
|
{ x = -189.044, y = 0.954768 }
|
||||||
|
},
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 21,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 374.269,
|
||||||
|
y = 118.391,
|
||||||
|
width = 423.917,
|
||||||
|
height = 21.9597,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type = "objectgroup",
|
||||||
|
draworder = "topdown",
|
||||||
|
id = 4,
|
||||||
|
name = "special",
|
||||||
|
visible = true,
|
||||||
|
opacity = 1,
|
||||||
|
offsetx = 0,
|
||||||
|
offsety = 0,
|
||||||
|
properties = {},
|
||||||
|
objects = {
|
||||||
|
{
|
||||||
|
id = 9,
|
||||||
|
name = "",
|
||||||
|
type = "spawn",
|
||||||
|
shape = "point",
|
||||||
|
x = 50.0004,
|
||||||
|
y = 727.578,
|
||||||
|
width = 0,
|
||||||
|
height = 0,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {
|
||||||
|
["count"] = 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 12,
|
||||||
|
name = "",
|
||||||
|
type = "banana",
|
||||||
|
shape = "point",
|
||||||
|
x = 725.869,
|
||||||
|
y = 252.003,
|
||||||
|
width = 0,
|
||||||
|
height = 0,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type = "objectgroup",
|
||||||
|
draworder = "topdown",
|
||||||
|
id = 6,
|
||||||
|
name = "signs",
|
||||||
|
visible = true,
|
||||||
|
opacity = 1,
|
||||||
|
offsetx = 0,
|
||||||
|
offsety = 0,
|
||||||
|
properties = {},
|
||||||
|
objects = {
|
||||||
|
{
|
||||||
|
id = 17,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "text",
|
||||||
|
x = 407.506,
|
||||||
|
y = 84.5049,
|
||||||
|
width = 82.0781,
|
||||||
|
height = 17,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
text = "frozen button + frozen monkey",
|
||||||
|
wrap = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 22,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "text",
|
||||||
|
x = 17.944,
|
||||||
|
y = 604.416,
|
||||||
|
width = 80.5938,
|
||||||
|
height = 19,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
text = "climb!",
|
||||||
|
wrap = true,
|
||||||
|
properties = {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type = "objectgroup",
|
||||||
|
draworder = "topdown",
|
||||||
|
id = 3,
|
||||||
|
name = "doors",
|
||||||
|
visible = true,
|
||||||
|
opacity = 1,
|
||||||
|
offsetx = 0,
|
||||||
|
offsety = 0,
|
||||||
|
properties = {},
|
||||||
|
objects = {
|
||||||
|
{
|
||||||
|
id = 7,
|
||||||
|
name = "",
|
||||||
|
type = "door",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 376.211,
|
||||||
|
y = 132.398,
|
||||||
|
width = 20,
|
||||||
|
height = 128,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 8,
|
||||||
|
name = "",
|
||||||
|
type = "frozenDoor",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 625.287,
|
||||||
|
y = 128.201,
|
||||||
|
width = 17.3333,
|
||||||
|
height = 129.333,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type = "objectgroup",
|
||||||
|
draworder = "topdown",
|
||||||
|
id = 5,
|
||||||
|
name = "buttons",
|
||||||
|
visible = true,
|
||||||
|
opacity = 1,
|
||||||
|
offsetx = 0,
|
||||||
|
offsety = 0,
|
||||||
|
properties = {},
|
||||||
|
objects = {
|
||||||
|
{
|
||||||
|
id = 10,
|
||||||
|
name = "",
|
||||||
|
type = "button",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 304.323,
|
||||||
|
y = 247.822,
|
||||||
|
width = 42.6667,
|
||||||
|
height = 9.33333,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 11,
|
||||||
|
name = "",
|
||||||
|
type = "frozenButton",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 539.767,
|
||||||
|
y = 249.732,
|
||||||
|
width = 58.6667,
|
||||||
|
height = 9.33333,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<map version="1.4" tiledversion="1.4.3" orientation="orthogonal" renderorder="right-down" width="50" height="50" tilewidth="16" tileheight="16" infinite="0" nextlayerid="7" nextobjectid="23">
|
||||||
|
<editorsettings>
|
||||||
|
<export target="2.lua" format="lua"/>
|
||||||
|
</editorsettings>
|
||||||
|
<objectgroup id="2" name="platforms">
|
||||||
|
<object id="5" x="779.288" y="116.365" width="20" height="145.333"/>
|
||||||
|
<object id="18" x="16.2311" y="735.171" width="782.91" height="63.9694"/>
|
||||||
|
<object id="19" x="112.663" y="258.742" width="683.614" height="479.293"/>
|
||||||
|
<object id="20" x="301.707" y="257.787">
|
||||||
|
<polygon points="0,0 -188.089,-98.3411 -189.044,0.954768"/>
|
||||||
|
</object>
|
||||||
|
<object id="21" x="374.269" y="118.391" width="423.917" height="21.9597"/>
|
||||||
|
</objectgroup>
|
||||||
|
<objectgroup id="4" name="special">
|
||||||
|
<object id="9" type="spawn" x="50.0004" y="727.578">
|
||||||
|
<properties>
|
||||||
|
<property name="count" type="int" value="2"/>
|
||||||
|
</properties>
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="12" type="banana" x="725.869" y="252.003">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
</objectgroup>
|
||||||
|
<objectgroup id="6" name="signs">
|
||||||
|
<object id="17" x="407.506" y="84.5049" width="82.0781" height="17">
|
||||||
|
<text wrap="1">frozen button + frozen monkey</text>
|
||||||
|
</object>
|
||||||
|
<object id="22" x="17.944" y="604.416" width="80.5938" height="19">
|
||||||
|
<text wrap="1">climb!</text>
|
||||||
|
</object>
|
||||||
|
</objectgroup>
|
||||||
|
<objectgroup id="3" name="doors">
|
||||||
|
<object id="7" type="door" x="376.211" y="132.398" width="20" height="128"/>
|
||||||
|
<object id="8" type="frozenDoor" x="625.287" y="128.201" width="17.3333" height="129.333"/>
|
||||||
|
</objectgroup>
|
||||||
|
<objectgroup id="5" name="buttons">
|
||||||
|
<object id="10" type="button" x="304.323" y="247.822" width="42.6667" height="9.33333"/>
|
||||||
|
<object id="11" type="frozenButton" x="539.767" y="249.732" width="58.6667" height="9.33333"/>
|
||||||
|
</objectgroup>
|
||||||
|
</map>
|
|
@ -0,0 +1,221 @@
|
||||||
|
return {
|
||||||
|
version = "1.4",
|
||||||
|
luaversion = "5.1",
|
||||||
|
tiledversion = "1.4.3",
|
||||||
|
orientation = "orthogonal",
|
||||||
|
renderorder = "right-down",
|
||||||
|
width = 100,
|
||||||
|
height = 100,
|
||||||
|
tilewidth = 16,
|
||||||
|
tileheight = 16,
|
||||||
|
nextlayerid = 5,
|
||||||
|
nextobjectid = 14,
|
||||||
|
properties = {},
|
||||||
|
tilesets = {},
|
||||||
|
layers = {
|
||||||
|
{
|
||||||
|
type = "objectgroup",
|
||||||
|
draworder = "topdown",
|
||||||
|
id = 2,
|
||||||
|
name = "platforms",
|
||||||
|
visible = true,
|
||||||
|
opacity = 1,
|
||||||
|
offsetx = 0,
|
||||||
|
offsety = 0,
|
||||||
|
properties = {},
|
||||||
|
objects = {
|
||||||
|
{
|
||||||
|
id = 1,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 333.333,
|
||||||
|
y = 950.667,
|
||||||
|
width = 754.667,
|
||||||
|
height = 93.3333,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 2,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 624.667,
|
||||||
|
y = 79.3333,
|
||||||
|
width = 162,
|
||||||
|
height = 18,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 3,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 626.667,
|
||||||
|
y = 98.3333,
|
||||||
|
width = 21,
|
||||||
|
height = 109,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 4,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 767.667,
|
||||||
|
y = 98.3333,
|
||||||
|
width = 20,
|
||||||
|
height = 108,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type = "objectgroup",
|
||||||
|
draworder = "topdown",
|
||||||
|
id = 3,
|
||||||
|
name = "doors",
|
||||||
|
visible = true,
|
||||||
|
opacity = 1,
|
||||||
|
offsetx = 0,
|
||||||
|
offsety = 0,
|
||||||
|
properties = {},
|
||||||
|
objects = {
|
||||||
|
{
|
||||||
|
id = 5,
|
||||||
|
name = "",
|
||||||
|
type = "door",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 628.667,
|
||||||
|
y = 192.333,
|
||||||
|
width = 159,
|
||||||
|
height = 17,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type = "objectgroup",
|
||||||
|
draworder = "topdown",
|
||||||
|
id = 4,
|
||||||
|
name = "buttons",
|
||||||
|
visible = true,
|
||||||
|
opacity = 1,
|
||||||
|
offsetx = 0,
|
||||||
|
offsety = 0,
|
||||||
|
properties = {},
|
||||||
|
objects = {
|
||||||
|
{
|
||||||
|
id = 6,
|
||||||
|
name = "",
|
||||||
|
type = "button",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 672.667,
|
||||||
|
y = 393.667,
|
||||||
|
width = 70.3333,
|
||||||
|
height = 16,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 7,
|
||||||
|
name = "",
|
||||||
|
type = "banana",
|
||||||
|
shape = "point",
|
||||||
|
x = 702.667,
|
||||||
|
y = 191.333,
|
||||||
|
width = 0,
|
||||||
|
height = 0,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 8,
|
||||||
|
name = "",
|
||||||
|
type = "spawn",
|
||||||
|
shape = "point",
|
||||||
|
x = 711.667,
|
||||||
|
y = 950.333,
|
||||||
|
width = 0,
|
||||||
|
height = 0,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {
|
||||||
|
["count"] = "10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 9,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "text",
|
||||||
|
x = 663.703,
|
||||||
|
y = 786.5,
|
||||||
|
width = 80.5938,
|
||||||
|
height = 19,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
text = "+/- to zoom",
|
||||||
|
wrap = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 11,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 858.667,
|
||||||
|
y = 613.333,
|
||||||
|
width = 24,
|
||||||
|
height = 76,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 12,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "polygon",
|
||||||
|
x = 870.667,
|
||||||
|
y = 580,
|
||||||
|
width = 0,
|
||||||
|
height = 0,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
polygon = {
|
||||||
|
{ x = 0, y = 0 },
|
||||||
|
{ x = -25.3333, y = 38.6667 },
|
||||||
|
{ x = 30.6667, y = 38.6667 }
|
||||||
|
},
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 13,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 566.667,
|
||||||
|
y = 412,
|
||||||
|
width = 302.667,
|
||||||
|
height = 41.3333,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<map version="1.4" tiledversion="1.4.3" orientation="orthogonal" renderorder="right-down" width="100" height="100" tilewidth="16" tileheight="16" infinite="0" nextlayerid="5" nextobjectid="14">
|
||||||
|
<objectgroup id="2" name="platforms">
|
||||||
|
<object id="1" x="333.333" y="950.667" width="754.667" height="93.3333"/>
|
||||||
|
<object id="2" x="624.667" y="79.3333" width="162" height="18"/>
|
||||||
|
<object id="3" x="626.667" y="98.3333" width="21" height="109"/>
|
||||||
|
<object id="4" x="767.667" y="98.3333" width="20" height="108"/>
|
||||||
|
</objectgroup>
|
||||||
|
<objectgroup id="3" name="doors">
|
||||||
|
<object id="5" type="frozenDoor" x="628.667" y="192.333" width="159" height="17"/>
|
||||||
|
</objectgroup>
|
||||||
|
<objectgroup id="4" name="buttons">
|
||||||
|
<object id="6" type="frozenButton" x="672.667" y="393.667" width="70.3333" height="16"/>
|
||||||
|
<object id="7" type="banana" x="702.667" y="191.333">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="8" type="spawn" x="711.667" y="950.333">
|
||||||
|
<properties>
|
||||||
|
<property name="count" value="10"/>
|
||||||
|
</properties>
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="9" x="663.703" y="786.5" width="80.5938" height="19">
|
||||||
|
<text wrap="1">+/- to zoom</text>
|
||||||
|
</object>
|
||||||
|
<object id="11" x="858.667" y="613.333" width="24" height="76"/>
|
||||||
|
<object id="12" x="870.667" y="580">
|
||||||
|
<polygon points="0,0 -25.3333,38.6667 30.6667,38.6667"/>
|
||||||
|
</object>
|
||||||
|
<object id="13" x="566.667" y="412" width="302.667" height="41.3333"/>
|
||||||
|
</objectgroup>
|
||||||
|
</map>
|
|
@ -0,0 +1,180 @@
|
||||||
|
return {
|
||||||
|
version = "1.4",
|
||||||
|
luaversion = "5.1",
|
||||||
|
tiledversion = "1.4.3",
|
||||||
|
orientation = "orthogonal",
|
||||||
|
renderorder = "right-down",
|
||||||
|
width = 50,
|
||||||
|
height = 50,
|
||||||
|
tilewidth = 16,
|
||||||
|
tileheight = 16,
|
||||||
|
nextlayerid = 4,
|
||||||
|
nextobjectid = 49,
|
||||||
|
properties = {},
|
||||||
|
tilesets = {},
|
||||||
|
layers = {
|
||||||
|
{
|
||||||
|
type = "objectgroup",
|
||||||
|
draworder = "topdown",
|
||||||
|
id = 2,
|
||||||
|
name = "Object Layer 1",
|
||||||
|
visible = true,
|
||||||
|
opacity = 1,
|
||||||
|
offsetx = 0,
|
||||||
|
offsety = 0,
|
||||||
|
properties = {},
|
||||||
|
objects = {
|
||||||
|
{
|
||||||
|
id = 2,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 38.932,
|
||||||
|
y = 306.814,
|
||||||
|
width = 14.6488,
|
||||||
|
height = 242.519,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 4,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 55.2085,
|
||||||
|
y = 537.94,
|
||||||
|
width = 524.102,
|
||||||
|
height = 11.3935,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 6,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 581.752,
|
||||||
|
y = 306,
|
||||||
|
width = 14.6488,
|
||||||
|
height = 242.52,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 27,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "polygon",
|
||||||
|
x = 800,
|
||||||
|
y = 530.242,
|
||||||
|
width = 0,
|
||||||
|
height = 0,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
polygon = {
|
||||||
|
{ x = 0, y = 0 },
|
||||||
|
{ x = -360.606, y = 269.697 },
|
||||||
|
{ x = -6.06061, y = 266.667 }
|
||||||
|
},
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 28,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 46.6665,
|
||||||
|
y = 791.333,
|
||||||
|
width = 66.6667,
|
||||||
|
height = 14.6667,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 29,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 177.333,
|
||||||
|
y = 790,
|
||||||
|
width = 105.333,
|
||||||
|
height = 16,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 30,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 346.667,
|
||||||
|
y = 788.667,
|
||||||
|
width = 54.6667,
|
||||||
|
height = 16,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type = "objectgroup",
|
||||||
|
draworder = "topdown",
|
||||||
|
id = 3,
|
||||||
|
name = "Object Layer 2",
|
||||||
|
visible = true,
|
||||||
|
opacity = 1,
|
||||||
|
offsetx = 0,
|
||||||
|
offsety = 0,
|
||||||
|
properties = {},
|
||||||
|
objects = {
|
||||||
|
{
|
||||||
|
id = 31,
|
||||||
|
name = "",
|
||||||
|
type = "spawn",
|
||||||
|
shape = "point",
|
||||||
|
x = 321.333,
|
||||||
|
y = 484,
|
||||||
|
width = 0,
|
||||||
|
height = 0,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {
|
||||||
|
["count"] = 10
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 32,
|
||||||
|
name = "",
|
||||||
|
type = "respawn",
|
||||||
|
shape = "point",
|
||||||
|
x = 330.667,
|
||||||
|
y = 2.66667,
|
||||||
|
width = 0,
|
||||||
|
height = 0,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 33,
|
||||||
|
name = "",
|
||||||
|
type = "banana",
|
||||||
|
shape = "point",
|
||||||
|
x = 78.9474,
|
||||||
|
y = 784.897,
|
||||||
|
width = 0,
|
||||||
|
height = 0,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<map version="1.4" tiledversion="1.4.3" orientation="orthogonal" renderorder="right-down" width="50" height="50" tilewidth="16" tileheight="16" infinite="0" nextlayerid="4" nextobjectid="49">
|
||||||
|
<editorsettings>
|
||||||
|
<export format="lua"/>
|
||||||
|
</editorsettings>
|
||||||
|
<objectgroup id="2" name="Object Layer 1">
|
||||||
|
<object id="2" x="38.932" y="306.814" width="14.6488" height="242.519"/>
|
||||||
|
<object id="4" x="55.2085" y="537.94" width="524.102" height="11.3935"/>
|
||||||
|
<object id="6" x="581.752" y="306" width="14.6488" height="242.52"/>
|
||||||
|
<object id="27" x="800" y="530.242">
|
||||||
|
<polygon points="0,0 -360.606,269.697 -6.06061,266.667"/>
|
||||||
|
</object>
|
||||||
|
<object id="28" x="46.6665" y="791.333" width="66.6667" height="14.6667"/>
|
||||||
|
<object id="29" x="177.333" y="790" width="105.333" height="16"/>
|
||||||
|
<object id="30" x="346.667" y="788.667" width="54.6667" height="16"/>
|
||||||
|
</objectgroup>
|
||||||
|
<objectgroup id="3" name="Object Layer 2">
|
||||||
|
<object id="31" type="spawn" x="321.333" y="484">
|
||||||
|
<properties>
|
||||||
|
<property name="count" type="int" value="10"/>
|
||||||
|
</properties>
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="32" type="respawn" x="330.667" y="2.66667">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="33" type="banana" x="78.9474" y="784.897">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
</objectgroup>
|
||||||
|
</map>
|
|
@ -0,0 +1,258 @@
|
||||||
|
return {
|
||||||
|
version = "1.4",
|
||||||
|
luaversion = "5.1",
|
||||||
|
tiledversion = "1.4.3",
|
||||||
|
orientation = "orthogonal",
|
||||||
|
renderorder = "right-down",
|
||||||
|
width = 50,
|
||||||
|
height = 50,
|
||||||
|
tilewidth = 16,
|
||||||
|
tileheight = 16,
|
||||||
|
nextlayerid = 4,
|
||||||
|
nextobjectid = 49,
|
||||||
|
properties = {},
|
||||||
|
tilesets = {},
|
||||||
|
layers = {
|
||||||
|
{
|
||||||
|
type = "objectgroup",
|
||||||
|
draworder = "topdown",
|
||||||
|
id = 2,
|
||||||
|
name = "Object Layer 1",
|
||||||
|
visible = true,
|
||||||
|
opacity = 1,
|
||||||
|
offsetx = 0,
|
||||||
|
offsety = 0,
|
||||||
|
properties = {},
|
||||||
|
objects = {
|
||||||
|
{
|
||||||
|
id = 2,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 38.932,
|
||||||
|
y = 306.814,
|
||||||
|
width = 14.6488,
|
||||||
|
height = 242.519,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 4,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 55.2085,
|
||||||
|
y = 537.94,
|
||||||
|
width = 524.102,
|
||||||
|
height = 11.3935,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 6,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 581.752,
|
||||||
|
y = 306,
|
||||||
|
width = 14.6488,
|
||||||
|
height = 242.52,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 37,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "rectangle",
|
||||||
|
x = 466.819,
|
||||||
|
y = 306.636,
|
||||||
|
width = 120.137,
|
||||||
|
height = 11.4416,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 40,
|
||||||
|
name = "",
|
||||||
|
type = "",
|
||||||
|
shape = "polygon",
|
||||||
|
x = 54.9199,
|
||||||
|
y = 311.213,
|
||||||
|
width = 0,
|
||||||
|
height = 0,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
polygon = {
|
||||||
|
{ x = 0, y = 0 },
|
||||||
|
{ x = 529.748, y = 225.4 },
|
||||||
|
{ x = -3.43249, y = 229.977 }
|
||||||
|
},
|
||||||
|
properties = {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
type = "objectgroup",
|
||||||
|
draworder = "topdown",
|
||||||
|
id = 3,
|
||||||
|
name = "Object Layer 2",
|
||||||
|
visible = true,
|
||||||
|
opacity = 1,
|
||||||
|
offsetx = 0,
|
||||||
|
offsety = 0,
|
||||||
|
properties = {},
|
||||||
|
objects = {
|
||||||
|
{
|
||||||
|
id = 31,
|
||||||
|
name = "",
|
||||||
|
type = "spawn",
|
||||||
|
shape = "point",
|
||||||
|
x = 521.562,
|
||||||
|
y = 299.789,
|
||||||
|
width = 0,
|
||||||
|
height = 0,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {
|
||||||
|
["count"] = 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 32,
|
||||||
|
name = "",
|
||||||
|
type = "respawn",
|
||||||
|
shape = "point",
|
||||||
|
x = 535.472,
|
||||||
|
y = 17.5408,
|
||||||
|
width = 0,
|
||||||
|
height = 0,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 33,
|
||||||
|
name = "",
|
||||||
|
type = "banana",
|
||||||
|
shape = "point",
|
||||||
|
x = 99.5423,
|
||||||
|
y = 315.789,
|
||||||
|
width = 0,
|
||||||
|
height = 0,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 41,
|
||||||
|
name = "",
|
||||||
|
type = "banana",
|
||||||
|
shape = "point",
|
||||||
|
x = 133.867,
|
||||||
|
y = 320.366,
|
||||||
|
width = 0,
|
||||||
|
height = 0,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 42,
|
||||||
|
name = "",
|
||||||
|
type = "banana",
|
||||||
|
shape = "point",
|
||||||
|
x = 124.714,
|
||||||
|
y = 291.762,
|
||||||
|
width = 0,
|
||||||
|
height = 0,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 43,
|
||||||
|
name = "",
|
||||||
|
type = "banana",
|
||||||
|
shape = "point",
|
||||||
|
x = 183.066,
|
||||||
|
y = 307.78,
|
||||||
|
width = 0,
|
||||||
|
height = 0,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 44,
|
||||||
|
name = "",
|
||||||
|
type = "banana",
|
||||||
|
shape = "point",
|
||||||
|
x = 177.346,
|
||||||
|
y = 259.725,
|
||||||
|
width = 0,
|
||||||
|
height = 0,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 45,
|
||||||
|
name = "",
|
||||||
|
type = "banana",
|
||||||
|
shape = "point",
|
||||||
|
x = 219.68,
|
||||||
|
y = 296.339,
|
||||||
|
width = 0,
|
||||||
|
height = 0,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 46,
|
||||||
|
name = "",
|
||||||
|
type = "banana",
|
||||||
|
shape = "point",
|
||||||
|
x = 181.922,
|
||||||
|
y = 356.979,
|
||||||
|
width = 0,
|
||||||
|
height = 0,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 47,
|
||||||
|
name = "",
|
||||||
|
type = "banana",
|
||||||
|
shape = "point",
|
||||||
|
x = 217.391,
|
||||||
|
y = 328.375,
|
||||||
|
width = 0,
|
||||||
|
height = 0,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
id = 48,
|
||||||
|
name = "",
|
||||||
|
type = "banana",
|
||||||
|
shape = "point",
|
||||||
|
x = 245.995,
|
||||||
|
y = 358.124,
|
||||||
|
width = 0,
|
||||||
|
height = 0,
|
||||||
|
rotation = 0,
|
||||||
|
visible = true,
|
||||||
|
properties = {}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,53 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<map version="1.4" tiledversion="1.4.3" orientation="orthogonal" renderorder="right-down" width="50" height="50" tilewidth="16" tileheight="16" infinite="0" nextlayerid="4" nextobjectid="49">
|
||||||
|
<editorsettings>
|
||||||
|
<export target="win.lua" format="lua"/>
|
||||||
|
</editorsettings>
|
||||||
|
<objectgroup id="2" name="Object Layer 1">
|
||||||
|
<object id="2" x="38.932" y="306.814" width="14.6488" height="242.519"/>
|
||||||
|
<object id="4" x="55.2085" y="537.94" width="524.102" height="11.3935"/>
|
||||||
|
<object id="6" x="581.752" y="306" width="14.6488" height="242.52"/>
|
||||||
|
<object id="37" x="466.819" y="306.636" width="120.137" height="11.4416"/>
|
||||||
|
<object id="40" x="54.9199" y="311.213">
|
||||||
|
<polygon points="0,0 529.748,225.4 -3.43249,229.977"/>
|
||||||
|
</object>
|
||||||
|
</objectgroup>
|
||||||
|
<objectgroup id="3" name="Object Layer 2">
|
||||||
|
<object id="31" type="spawn" x="521.562" y="299.789">
|
||||||
|
<properties>
|
||||||
|
<property name="count" type="int" value="10"/>
|
||||||
|
</properties>
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="32" type="respawn" x="535.472" y="17.5408">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="33" type="banana" x="99.5423" y="315.789">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="41" type="banana" x="133.867" y="320.366">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="42" type="banana" x="124.714" y="291.762">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="43" type="banana" x="183.066" y="307.78">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="44" type="banana" x="177.346" y="259.725">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="45" type="banana" x="219.68" y="296.339">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="46" type="banana" x="181.922" y="356.979">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="47" type="banana" x="217.391" y="328.375">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
<object id="48" type="banana" x="245.995" y="358.124">
|
||||||
|
<point/>
|
||||||
|
</object>
|
||||||
|
</objectgroup>
|
||||||
|
</map>
|
Ŝarĝante…
Reference in New Issue