summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAki <nthirtyone@gmail.com>2016-05-13 13:11:51 +0200
committerAki <nthirtyone@gmail.com>2016-05-13 13:11:51 +0200
commit7d4251e3a9c08b89d25ef724270752f36649f765 (patch)
tree66ba6060a0b2c6f1a2a93f50f804120955244147
parent6dc1dc3ace057e3f7ff63f56971fdb432734392b (diff)
downloadroflnauts-7d4251e3a9c08b89d25ef724270752f36649f765.zip
roflnauts-7d4251e3a9c08b89d25ef724270752f36649f765.tar.gz
roflnauts-7d4251e3a9c08b89d25ef724270752f36649f765.tar.bz2
Draw pulled inside the objects
-rw-r--r--ground.lua19
-rw-r--r--main.lua34
-rw-r--r--player.lua33
3 files changed, 57 insertions, 29 deletions
diff --git a/ground.lua b/ground.lua
index 1034d71..9f695c8 100644
--- a/ground.lua
+++ b/ground.lua
@@ -1,6 +1,9 @@
-- `Ground`
+-- Static platform physical object with a sprite. `Players` can walk on it.
-- Collision category: [1]
+-- WHOLE CODE HAS FLAG OF "need a cleanup"
+
-- Metatable of `Ground`
-- nils initialized in constructor
Ground = {
@@ -21,4 +24,20 @@ function Ground:new (world, x, y, shape, sprite)
o.fixture:setCategory(1)
o.fixture:setFriction(0.2)
return o
+end
+
+-- Draw of `Ground`
+function Ground:draw (offset_x, offset_y, debug)
+ -- defaults
+ local offset_x = offset_x or 0
+ local offset_y = offset_y or 0
+ local debug = debug or false
+ -- sprite draw
+ love.graphics.setColor(255,255,255,255)
+ love.graphics.draw(self.sprite, self.body:getX()-math.ceil(self.sprite:getWidth()/2), self.body:getY())
+ -- debug draw
+ if debug then
+ love.graphics.setColor(220, 220, 220, 100)
+ love.graphics.polygon("fill", self.body:getWorldPoints(self.shape:getPoints()))
+ end
end \ No newline at end of file
diff --git a/main.lua b/main.lua
index b847e3a..d5b4d1a 100644
--- a/main.lua
+++ b/main.lua
@@ -1,9 +1,12 @@
+-- "NOTNAUTS"
+-- WHOLE CODE HAS FLAG OF "need a cleanup"
+
require "ground"
require "player"
debug = false
-function love.load()
+function love.load ()
-- Graphics
love.graphics.setBackgroundColor(189, 95, 93)
love.graphics.setDefaultFilter("nearest", "nearest")
@@ -35,7 +38,7 @@ function love.load()
Nauts[2].key_hit = "g"
end
-function love.update(dt)
+function love.update (dt)
-- Put world in motion!
world:update(dt)
-- Players
@@ -44,7 +47,7 @@ function love.update(dt)
end
end
-function love.keypressed(key)
+function love.keypressed (key)
-- Switch hitbox display on/off
if key == "x" then
debug = not debug
@@ -62,7 +65,7 @@ function love.keyreleased(key)
end
end
-function love.draw()
+function love.draw ()
-- Draw SOME background
-- I'm already bored with solid color!
love.graphics.setColor(193, 100, 99, 255)
@@ -72,31 +75,16 @@ function love.draw()
-- Draw ground
for k,platform in pairs(Platforms) do
- love.graphics.setColor(255,255,255,255)
- love.graphics.draw(platform.sprite, platform.body:getX()-math.ceil(platform.sprite:getWidth()/2), platform.body:getY())
- if debug then
- love.graphics.setColor(220, 220, 220, 100)
- love.graphics.polygon("fill", platform.body:getWorldPoints(platform.shape:getPoints()))
- end
+ platform:draw(0, 0, debug)
end
-- Draw player
for k,naut in pairs(Nauts) do
- love.graphics.setColor(255,255,255,255)
- love.graphics.draw(naut.sprite, naut.current[naut.frame], naut.body:getX(), naut.body:getY(), naut.rotate, naut.facing, 1, 12, 15)
- if debug then
- love.graphics.setColor(50, 255, 50, 100)
- love.graphics.polygon("fill", naut.body:getWorldPoints(naut.shape:getPoints()))
- love.graphics.setColor(255,255,255,255)
- love.graphics.points(naut.body:getX()+12*naut.facing,naut.body:getY()-2)
- love.graphics.points(naut.body:getX()+6*naut.facing,naut.body:getY()+2)
- love.graphics.points(naut.body:getX()+18*naut.facing,naut.body:getY()+2)
- love.graphics.points(naut.body:getX()+12*naut.facing,naut.body:getY()+6)
- end
+ naut:draw(0, 0, debug)
end
end
-function beginContact(a, b, coll)
+function beginContact (a, b, coll)
local x,y = coll:getNormal()
if y == -1 then
print(b:getUserData().name .. " is not in air")
@@ -105,7 +93,7 @@ function beginContact(a, b, coll)
end
end
-function endContact(a, b, coll)
+function endContact (a, b, coll)
print(b:getUserData().name .. " is in air")
b:getUserData().inAir = true
end \ No newline at end of file
diff --git a/player.lua b/player.lua
index 51ad29f..4d6f7ec 100644
--- a/player.lua
+++ b/player.lua
@@ -38,7 +38,7 @@ Player = {
}
-- Constructor of `Player`
-function Player:new(world, x, y, spritesheet)
+function Player:new (world, x, y, spritesheet)
-- Meta
local o = {}
setmetatable(o, self)
@@ -59,7 +59,7 @@ function Player:new(world, x, y, spritesheet)
end
-- Update callback of `Player`
-function Player:update(dt)
+function Player:update (dt)
-- # VERTICAL MOVEMENT
-- Jumping
if self.jumpactive and self.jumptimer > 0 then
@@ -131,7 +131,7 @@ function Player:update(dt)
end
-- Keypressed callback of `Player`
-function Player:keypressed(key)
+function Player:keypressed (key)
-- Jumping
if key == self.key_jump then
if not self.inAir then
@@ -168,7 +168,7 @@ function Player:keypressed(key)
end
-- Keyreleased callback of `Player`
-function Player:keyreleased(key)
+function Player:keyreleased (key)
-- Jumping
if key == self.key_jump then
self.jumpactive = false
@@ -184,6 +184,27 @@ function Player:keyreleased(key)
end
end
+-- Draw of `Player`
+function Player:draw (offset_x, offset_y, debug)
+ -- defaults
+ local offset_x = offset_x or 0
+ local offset_y = offset_y or 0
+ local debug = debug or false
+ -- sprite draw
+ love.graphics.setColor(255,255,255,255)
+ love.graphics.draw(self.sprite, self.current[self.frame], self.body:getX(), self.body:getY(), self.rotate, self.facing, 1, 12, 15)
+ -- debug draw
+ if debug then
+ love.graphics.setColor(50, 255, 50, 100)
+ love.graphics.polygon("fill", self.body:getWorldPoints(self.shape:getPoints()))
+ love.graphics.setColor(255,255,255,255)
+ love.graphics.points(self.body:getX()+12*self.facing,self.body:getY()-2)
+ love.graphics.points(self.body:getX()+ 6*self.facing,self.body:getY()+2)
+ love.graphics.points(self.body:getX()+18*self.facing,self.body:getY()+2)
+ love.graphics.points(self.body:getX()+12*self.facing,self.body:getY()+6)
+ end
+end
+
-- Change animation of `Player`
-- idle, walk, attack, attack_up, attack_down, damage
function Player:changeAnimation(animation)
@@ -194,7 +215,7 @@ end
-- Punch of `Player`
-- REWORK NEEDED
-function Player:hit(horizontal, vertical)
+function Player:hit (horizontal, vertical)
if vertical == -1 then
self:changeAnimation("attack_up")
elseif vertical == 1 then
@@ -228,7 +249,7 @@ function Player:hit(horizontal, vertical)
end
-- Taking damage of `Player` by successful hit test
-function Player:damage(horizontal, vertical)
+function Player:damage (horizontal, vertical)
self.body:applyLinearImpulse((34+12*self.combo)*horizontal, (50+10*self.combo)*vertical + 15)
self:changeAnimation("damage")
end \ No newline at end of file