local cwd = (...):gsub('%.player$', '') .. "." local Parent = require(cwd .. "parent") local Player = Parent:extend() local Emblem = require "game.modules.gui.emblem" local TweenManager = require "game.modules.tweenmanager" function Player:new(world, x, y, id) Player.super.new(self, world, "player", x, y, 16, 16, true) self.charset:addTexture("perso") self.active = game.characters:getActiveCharacterData() self.emblems = {} for i, name in ipairs(game.characters.team) do game.characters:loadSprite(self.assets, name) self.emblems[i] = Emblem(game.characters.list[name], self.scene) end self.activeVisible = game.characters.active self.canChangeActive = true self.tweens = TweenManager(self) end function Player:isMoving() return ((math.abs(self.ysp) > 0.01) or (math.abs(self.xsp) > 0.01)) end function Player:updateStart(dt) self.xfrc, self.yfrc = 480*3, 480*3 if self.keys["up"].isDown then self.ysp = -120 self.charDir = "up" end if self.keys["down"].isDown then self.ysp = 120 self.charDir = "down" end if self.keys["left"].isDown then self.xsp = -120 self.charDir = "left" end if self.keys["right"].isDown then self.xsp = 120 self.charDir = "right" end if self.keys["select"].isPressed and self.canChangeActive then game.characters:setActiveCharacter() self.canChangeActive = false self.tweens:newTimer(0.3, "changeCharacter") self.tweens:newTween(0, 0.3, {activeVisible = self.activeVisible + 1}, "inQuad") end self.tweens:update(dt) end function Player:timerResponse(response) if (response == "changeCharacter") then self.canChangeActive = true self.activeVisible = game.characters.active self.active = game.characters:getActiveCharacterData() end end function Player:draw() if (self:isMoving()) then self.charset:draw(self.active.data.charset, self.active.data.charId, self.charDir, self.x, self.y) else self.charset:drawStanding(self.active.data.charset, self.active.data.charId, self.charDir, self.x, self.y) end end function Player:drawHUD(id) --love.graphics.print(id .. " test", 4, 4) self:drawEmblems(self.scene:getEmblemsPosition(), 24) end function Player:drawEmblems(x, y) for i,emblem in ipairs(self.emblems) do local angle = ((i-self.activeVisible) * (360/#self.emblems)) - 90 local rad = math.rad(angle) local emblemX, emblemY = utils.math.lengthdir(18, rad) emblem:draw(x + emblemX, y + emblemY) end end return Player