From 72533c0efb9d5659cd2c1fb0e9f067696d759812 Mon Sep 17 00:00:00 2001 From: Aki Date: Sun, 26 Feb 2017 05:04:34 +0100 Subject: Initial commit, after jam --- player.lua | 85 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 player.lua (limited to 'player.lua') diff --git a/player.lua b/player.lua new file mode 100644 index 0000000..e4ef8f6 --- /dev/null +++ b/player.lua @@ -0,0 +1,85 @@ +-- Metatable. +local Player = { + x = 14, + y = 12, + frame = 1, + animation = "idle", + moved = false, + target_x = 14, + call, +} +Player.__index = Player + +-- Craete new empty Player object. +local function newPlayer() + return setmetatable({}, Player) +end + +-- Position related functions. +function Player:getPosition() + return self.x, self.y +end +function Player:setPosition(x, y) + self.x, self.y = x, y + return self +end + +-- Facing. +function Player:getFacing() + if self.animation == "walk" then + if (self.target_x - self.x) < 0 then + return -1 + end + end + return 1 +end + +-- Target. +function Player:setTarget(x, y, prop) + if Game.inRange(x, y) then + self.target_x = x + self.prop = prop + end +end + +-- Change animation. +function Player:changeAnimation(name) + if self.animation ~= name then + self.animation = name + self.frame = 1 + end + return self +end + +-- LÖVE2D callbacks. +function Player:update() + -- Animation. + local frames = #Game.quads.player[self.animation] + self.frame = (self.frame%frames)+1 + -- Movement towards target. + self.moved = false + if math.abs(self.x - self.target_x) > 2 then + self:changeAnimation("walk") + else + self:changeAnimation("idle") + if self.prop then + print("Using prop...") + self.prop:use() + self.prop = nil + end + end + -- Walking. + if self.animation == "walk" and not self.moved and (self.frame == 1 or self.frame == 3 or self.frame == 5) then + self.x = self.x + self:getFacing() + self.moved = true + end +end +function Player:draw(scale) + local quad = Game.quads.player[self.animation][self.frame] + local sprite = Game.sprites.player + local x, y = self:getPosition() + love.graphics.setColor(255,255,255) + love.graphics.draw(sprite, quad, (x)*scale, (y)*scale, 0, scale*self:getFacing(), scale, 4) +end + +return newPlayer \ No newline at end of file -- cgit v1.1