import "Globals" class ("highscoretable").extends(gfx.sprite) function dialog:init() dialog.super.init(self,nil) gfx.sprite.addSprite(self) self:setSize(307,47) self.frames = dialogTable self.numFrames = self.frames:getLength() --self:setImage(self.frames[1]) --self.frames = {} self.anims = {} self.currentAnim = nil self.renderAnim = false self.animFrame = 1 self.animFrameIndex = 1 self.currentFrame = 1 self.animCounter = 0 self.renderAnim = true self:addAnim("open", {1,2,3,4,5,6,7},10,false) self:addAnim("idle", {1,1,1},10,false) self:addAnim("close", {7,6,5,4,3,2,1},10,false) self:playAnim("idle") self.faces = { gfx.image.new("Images/playerface"), gfx.image.new("Images/swordface"), gfx.image.new("Images/pikeface"), gfx.image.new("Images/ninjaface"), gfx.image.new("Images/twinstepface") } self:moveTo(1,1) self:setZIndex(200) self:setCenter(0,0) self.currentFace = kPlayer+1; self.currentText = "You move quickly, but my defence is impenetrable." end function dialog:setFrame(n) --self:setImage(self.frames[n]) self.currentFrame = n end function dialog:addAnim(name, actualframes, fps, loop) self.anims[name] = {actualframes, 1.0/fps, loop} end function dialog:playAnim(name) self.currentAnim = self.anims[name] if self.currentAnim then self.animFrameIndex = 1 self.animFrame = self.currentAnim[1][self.animFrameIndex] self.animCounter = self.currentAnim[2] end end function dialog:show(text,face, delay) self:playAnim("open") self.animCounter += delay self.currentFace = face+1 self.currentText = text gameState = kGameDialogState ticks = 0 end function dialog:hide() self:playAnim("close") gameState = kGamePlayingState end function dialog:update() if self.renderAnim and self.currentAnim then self.animCounter -= deltaTime if self.animCounter <= 0 then self.animFrameIndex += 1 gfx.sprite.addDirtyRect(self.x, self.y, self.width, self.height) if self.currentAnim[1][self.animFrameIndex] == nil then if self.currentAnim[3] then self.animFrameIndex = 1 else self.currentAnim = nil self:animationFinished() return end end self.animFrame = self.currentAnim[1][self.animFrameIndex] self.animCounter = self.currentAnim[2] end end self:setFrame(self.animFrame) --gfx.sprite.addDirtyRect(self.x, self.y, self.width, self.height) end function dialog:animationFinished() end function dialog:draw() -- dialog.super.draw(self) self.frames[self.currentFrame]:draw(self.x, self.y) --self.zipWord:draw(self.x + 26, self.y + 3) if self.currentFrame < 4 then return end self.faces[self.currentFace]:draw(self.x + 8, self.y + 7) if self.currentFrame < 6 then return end gfx.setFont(whitefont) gfx.setFontTracking(1) gfx.drawTextInRect(self.currentText, self.x + 80, self.y + 7, 200, 28, -1) -- local bounds = self:getBounds() -- self.image:draw(bounds.x, bounds.y) -- self.frames[1]:draw(math.floor(self.x), math.floor(self.y)) -- gfx.setImageDrawMode(gfx.kDrawModeCopy) end