added draw functions for setScale, rehandled scale, animations now have multiple frame times (this breaks some minor stuff)

This commit is contained in:
lustlion 2022-02-24 04:15:35 +01:00
parent 00cec59351
commit 54f6a46428
19 changed files with 139 additions and 53 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 B

After

Width:  |  Height:  |  Size: 146 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 B

After

Width:  |  Height:  |  Size: 120 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 146 B

After

Width:  |  Height:  |  Size: 143 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 B

After

Width:  |  Height:  |  Size: 137 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 B

After

Width:  |  Height:  |  Size: 120 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 143 B

After

Width:  |  Height:  |  Size: 146 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 203 B

After

Width:  |  Height:  |  Size: 310 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 198 B

After

Width:  |  Height:  |  Size: 295 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 201 B

After

Width:  |  Height:  |  Size: 304 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 199 B

After

Width:  |  Height:  |  Size: 291 B

View File

@ -5,7 +5,6 @@ function Animation:New(anim_data)
o.path = anim_data.path
o.frames = anim_data.frames
o.speed = anim_data.speed
o.imgs = anim_data.imgs
o.subframe = 0
o.frame = 1
@ -26,8 +25,8 @@ end
-- to manually handle what frame
function Animation:DrawFrame(frame, x, y, rotate, sx, sy)
if frame > self.frames then
frame = self.frames
if frame > #self.frames then
frame = #self.frames
end
local x = x or 0
local y = y or 0
@ -45,18 +44,18 @@ end
-- to linearly animate
function Animation:Animate()
if self.speed ~= 0 then
if self.frames[self.frame] ~= 0 then
-- try to animate
self.subframe = self.subframe + current_dt
if self.subframe > self.speed then
if self.subframe > self.frames[self.frame] then
self.subframe = self.subframe - self.frames[self.frame]
self.frame = self.frame + 1
self.subframe = self.subframe - self.speed
end
-- cycle
if self.frame >= self.frames+1 then
self.frame = self.frame - self.frames
if self.frame >= #self.frames+1 then
self.frame = self.frame - #self.frames
end
end
end

View File

@ -14,7 +14,7 @@ end
function Canvas:Recreate()
self.canvas:release()
self = Canvas:New()
self = Canvas:New(self.name)
end
function Canvas:Reset()

View File

@ -1,4 +1,6 @@
function DebugUI()
love.graphics.setScale()
local mouse_x, mouse_y = love.mouse.getPosition()
for _, light in pairs(LoadedObjects.Lights) do
love.graphics.print(light.pos.x,light.pos.x,light.pos.y)
@ -24,11 +26,13 @@ function DebugUI()
end
function DebugColisions()
love.graphics.setScale(game.scale)
-- DrawColisionTable()
LoadedObjects.DrawCollisions()
end
function DebugEntities()
love.graphics.setScale(game.scale)
for _, particle in pairs(LoadedParticles) do
particle:Debug()
end

6
code/draw.lua Normal file
View File

@ -0,0 +1,6 @@
function love.graphics.setScale(scale_x, scale_y)
local scale_x = scale_x or 1
local scale_y = scale_y or scale_x
love.graphics.origin()
love.graphics.scale(scale_x,scale_y)
end

View File

@ -87,7 +87,7 @@ function GameDraw()
GameworldDrawEnd()
-- hud
textScale = 0.5
textScale = 1
-- debug
if debug then DebugUI() end

View File

@ -5,7 +5,7 @@ function GameworldDrawPrepare()
Canvas.Darkness.Recreate()
end
pcr, pcg, pcb, pca = love.graphics.getColor()
love.graphics.scale(game.scale,game.scale)
love.graphics.setScale(game.scale,game.scale)
love.graphics.setColor(1,1,1,1)
end

View File

@ -1,8 +1,9 @@
function MenuDraw(menu)
local font = love.graphics.getFont()
love.graphics.setFont(LocaleFont)
-- Set scale to 1
love.graphics.scale(0.5,0.5)
-- reset scale
love.graphics.setScale()
if menu == "pause" then
MenuDrawPauseScreen()
@ -13,8 +14,7 @@ function MenuDraw(menu)
for _, element in pairs(UIElement) do
element:Draw()
end
-- Reset scale
love.graphics.scale(2,2)
love.graphics.setFont(font)
end

View File

@ -8,6 +8,7 @@ require "code/locale"
-- support functions
require "code/math"
require "code/draw"
require "code/hex"
require "code/in_out"

View File

@ -5,118 +5,194 @@ animation = {}
animation.cursed_book = {}
animation.cursed_book.attack_loop = {
path = "assets/entities/cursed_book/attack_loop",
frames = 1,
speed = 0
frames = {
0
}
}
animation.cursed_book.attack_transition = {
path = "assets/entities/cursed_book/attack_transition",
frames = 5,
speed = 1/16
frames = {
1/16,
1/16,
1/16,
1/16,
1/16
}
}
animation.cursed_book.flying = {
path = "assets/entities/cursed_book/flying",
frames = 11,
speed = 1/16
frames = {
2/16,
2/16,
1/16,
1/16,
1/16,
1/16,
1/16,
2/16
}
}
animation.cursed_book.spawn = {
path = "assets/entities/cursed_book/spawn",
frames = 5,
speed = 0
frames = {
0,
0,
0,
0,
0
}
}
-- particles
animation.particle = {}
animation.particle.simple = {
path = "assets/entities/particle/simple",
frames = 4,
speed = 1/4
frames = {
1/4,
1/4,
1/4,
1/4
}
}
-- fairy
animation.fairy = {}
animation.fairy.flying = {
path = "assets/entities/fairy/flying",
frames = 2,
speed = 1/30
frames = {
1/32,
1/32
}
}
-- decoration
animation.decoration = {}
animation.decoration.candelabra = {
path = "assets/entities/decoration/candelabra",
frames = 8,
speed = 1/6
frames = {
1/8,
1/8,
1/8,
1/8,
1/8,
1/8,
1/8,
1/8
}
}
-- kupo
animation.kupo = {}
animation.kupo.body = {
path = "assets/entities/kupo/kupo",
frames = 4,
speed = 1/8
frames = {
1/8,
1/8,
1/8,
1/8
}
}
animation.kupo.bow = {
path = "assets/entities/kupo/kupo_bow",
frames = 6,
speed = 1/10
frames = {
1/10,
1/10,
1/10,
1/10,
1/10,
1/10
}
}
animation.kupo.arrow = {
path = "assets/entities/kupo/kupo_arrow",
frames = 1,
speed = 0
frames = {
0
}
}
-- moth mask
animation.moth_mask = {}
animation.moth_mask.idle = {
path = "assets/entities/nancy/moth_mask/idle",
frames = 4,
speed = 1/8
frames = {
1/8,
1/8,
1/8,
1/8
}
}
animation.moth_mask.run = {
path = "assets/entities/nancy/moth_mask/run",
frames = 6,
speed = 1/8
frames = {
1/8,
1/8,
1/8,
1/8,
1/8,
1/8
}
}
animation.moth_mask.fall = {
path = "assets/entities/nancy/moth_mask/fall",
frames = 3,
speed = 1/8
frames = {
1/8,
1/8,
1/8
}
}
animation.moth_mask.jump = {
path = "assets/entities/nancy/moth_mask/jump",
frames = 3,
speed = 1/8
frames = {
1/8,
1/8,
1/8
}
}
-- nancy
animation.nancy = {}
animation.nancy.idle = {
path = "assets/entities/nancy/idle",
frames = 4,
speed = 1/8
frames = {
1/8,
1/8,
1/8,
1/8
}
}
animation.nancy.run = {
path = "assets/entities/nancy/run",
frames = 6,
speed = 1/8
frames = {
1/8,
1/8,
1/8,
1/8,
1/8,
1/8
}
}
animation.nancy.fall = {
path = "assets/entities/nancy/fall",
frames = 3,
speed = 1/8
frames = {
1/8,
1/8,
1/8
}
}
animation.nancy.jump = {
path = "assets/entities/nancy/jump",
frames = 3,
speed = 1/8
frames = {
1/8,
1/8,
1/8
}
}
-- animation initializer
for _, object in pairs(animation) do
for _, anim in pairs(object) do
anim.imgs = {}
for i = 1, anim.frames do
for i = 1, #anim.frames do
table.insert(anim.imgs,love.graphics.newImage(anim.path..tostring(i)..".png"))
end
end