Add bananna and zoom in/out feature

This commit is contained in:
Jaidyn Ann 2021-01-07 02:15:15 -06:00
parent c63e33f1bc
commit 76f548d6c4
6 changed files with 83 additions and 30 deletions

BIN
art/sprites/bananna.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 227 B

BIN
art/sprites/bananna.wb Normal file

Binary file not shown.

View File

@ -180,6 +180,7 @@ function game_draw ()
map:draw() map:draw()
player:draw() player:draw()
bananna:draw()
camera:detach() camera:detach()
camera:draw() camera:draw()
@ -208,6 +209,11 @@ function game_keypressed(key)
player.following = true player.following = true
elseif (key == "f" and player.following == true) then elseif (key == "f" and player.following == true) then
player.following = false player.following = false
elseif (key == "=" and camera.scale < 10) then
camera.scale = camera.scale + 1
elseif (key == "-" and camera.scale > 1) then
camera.scale = camera.scale - 1
end end
end end
@ -424,6 +430,25 @@ end
-- BANNANA owo (win condition obj)
----------------------------------------
Bananna = class('Bananna')
world:addCollisionClass('Bananna')
function Bananna:initialize(x, y)
self.sprite = love.graphics.newImage("art/sprites/bananna.png")
self.collider = world:newRectangleCollider(x, y, 16, 16);
end
function Bananna:draw()
local col = self.collider
local x,y = col.body:getWorldPoints(col.shape:getPoints())
love.graphics.draw(self.sprite, x, y, col.body:getAngle(), 1, 1)
end
-- MAP used to store map data (ofc) -- MAP used to store map data (ofc)
---------------------------------------- ----------------------------------------
Map = class('Map') Map = class('Map')
@ -437,6 +462,9 @@ function Map:initialize(filepath)
local maptable = dofile(filepath) local maptable = dofile(filepath)
love.graphics.setBackgroundColor(146/255, 187/255, 203/255) love.graphics.setBackgroundColor(146/255, 187/255, 203/255)
local monkCount = 3
local monkX,monkY = 100,100
local banannaX,banannaY = 200,200
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
@ -452,15 +480,19 @@ function Map:initialize(filepath)
self.objects[o_c]:setCollisionClass('Platform') self.objects[o_c]:setCollisionClass('Platform')
elseif (object.shape == "point" and object.type == "spawn") then elseif (object.shape == "point" and object.type == "spawn") then
local monkCount = 3
if not (object.properties == nil if not (object.properties == nil
and object.properties["count"] == nil) then and object.properties["count"] == nil) then
monkCount = object.properties["count"] monkCount = object.properties["count"]
end end
player = Monk:new(object.x, object.y, monkCount) monkX,monkY = object.x,object.y
elseif (object.shape == "point" and object.type == "bananna") then
banannaX,banannaY = object.x,object.y
end end
end end
end end
player = Monk:new(monkX, monkY, monkCount)
bananna = Bananna:new(banannaX, banannaY)
end end

View File

@ -9,4 +9,13 @@ Text-box formatting will be ignored, but the text is used.
You can set the spawn point of the monkey party with a point object of type You can set the spawn point of the monkey party with a point object of type
"spawn". Otherwise, it defaults to (100,100). "spawn". Otherwise, it defaults to (100,100).
You can place the bannanas in the map with a point object of type "bannana".
Otherwise... it'll just pop up in (200,200).
Export your map to Lua, put it in a custom "maps" folder, and you're good to go! Export your map to Lua, put it in a custom "maps" folder, and you're good to go!
Useful bits
----------------------------------------
The farthest a monkey can jump horizontally is 15 16x16 squares
The highest a monkey can jump vertically is 5 16x16 squares

View File

@ -9,7 +9,7 @@ return {
tilewidth = 16, tilewidth = 16,
tileheight = 16, tileheight = 16,
nextlayerid = 5, nextlayerid = 5,
nextobjectid = 34, nextobjectid = 46,
properties = {}, properties = {},
tilesets = {}, tilesets = {},
layers = { layers = {
@ -35,37 +35,22 @@ return {
height = 17, height = 17,
rotation = 0, rotation = 0,
visible = true, visible = true,
text = "Hello, monkeys.", text = "move with wasd or arrow keys",
wrap = true, wrap = true,
properties = {} properties = {}
}, },
{ {
id = 30, id = 38,
name = "", name = "",
type = "", type = "",
shape = "text", shape = "text",
x = 132.961, x = 1102.96,
y = 50.8333, y = 312.833,
width = 82.0781, width = 82.0781,
height = 17, height = 17,
rotation = 0, rotation = 0,
visible = true, visible = true,
text = "You're hungry, aren't you?", text = "hit 'space' to create a platform",
wrap = true,
properties = {}
},
{
id = 31,
name = "",
type = "",
shape = "text",
x = 230.294,
y = 70.8333,
width = 82.0781,
height = 17,
rotation = 0,
visible = true,
text = "Go on ahead, then.",
wrap = true, wrap = true,
properties = {} properties = {}
} }
@ -328,6 +313,19 @@ return {
rotation = 0, rotation = 0,
visible = true, visible = true,
properties = {} properties = {}
},
{
id = 43,
name = "",
type = "",
shape = "rectangle",
x = 1370,
y = 236,
width = 222.667,
height = 77.3333,
rotation = 0,
visible = true,
properties = {}
} }
} }
}, },
@ -356,6 +354,19 @@ return {
properties = { properties = {
["count"] = 4 ["count"] = 4
} }
},
{
id = 45,
name = "",
type = "bananna",
shape = "point",
x = 1484,
y = 240,
width = 0,
height = 0,
rotation = 0,
visible = true,
properties = {}
} }
} }
} }

View File

@ -1,17 +1,14 @@
<?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="34"> <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">
<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="37.6276" y="34.1667" width="94.08" height="17">
<text wrap="1">Hello, monkeys.</text> <text wrap="1">move with wasd or arrow keys</text>
</object> </object>
<object id="30" x="132.961" y="50.8333" width="82.0781" height="17"> <object id="38" x="1102.96" y="312.833" width="82.0781" height="17">
<text wrap="1">You're hungry, aren't you?</text> <text wrap="1">hit 'space' to create a platform</text>
</object>
<object id="31" x="230.294" y="70.8333" width="82.0781" height="17">
<text wrap="1">Go on ahead, then.</text>
</object> </object>
</objectgroup> </objectgroup>
<objectgroup id="3" name="Object Layer 2"> <objectgroup id="3" name="Object Layer 2">
@ -34,6 +31,7 @@
<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"/>
</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="93" y="80">
@ -42,5 +40,8 @@
</properties> </properties>
<point/> <point/>
</object> </object>
<object id="45" type="bananna" x="1484" y="240">
<point/>
</object>
</objectgroup> </objectgroup>
</map> </map>