This commit is contained in:
bizcochito 2022-01-18 21:08:58 +01:00
parent a42cf7953f
commit 33ade34886
5 changed files with 118 additions and 42 deletions

View File

@ -2,7 +2,7 @@ Arrow = Entity:New(x,y)
function Arrow:New(x,y,rotation,speed)
local o = Entity:New(x,y)
arrow = arrow + 1
o.pos = {x = x, y = y}
o.speed = speed or 0
o.sprite_rotation = rotation or 0
@ -32,45 +32,47 @@ function Arrow:HandleAnimation()
end
function Arrow:DoPhysics()
-- horizontal collisions
if not isThereAnyCollisionAt(
self.pos.x + self.vel.x,
self.pos.y
) then
self.pos.x = self.pos.x + self.vel.x
else
while not isThereObjectAt(
self.pos.x + math.sign(self.vel.x),
self.pos.y,
objects.collisions
) do
self.pos.x = self.pos.x + math.sign(self.vel.x)
if not self.stuck then
-- horizontal collisions
if not isThereAnyCollisionAt(
self.pos.x + self.vel.x,
self.pos.y
) then
self.pos.x = self.pos.x + self.vel.x
else
while not isThereObjectAt(
self.pos.x + math.sign(self.vel.x),
self.pos.y,
objects.collisions
) do
self.pos.x = self.pos.x + math.sign(self.vel.x)
end
self.stuck = true
end
self.stuck = true
end
-- vertical collision
if not isThereAnyCollisionAt(
self.pos.x,
self.pos.y + self.vel.y
) then
self.pos.y = self.pos.y + self.vel.y
else
while not isThereObjectAt(
-- vertical collision
if not isThereAnyCollisionAt(
self.pos.x,
self.pos.y + math.sign(self.vel.y),
objects.collisions
) do
self.pos.y = self.pos.y + math.sign(self.vel.y)
self.pos.y + self.vel.y
) then
self.pos.y = self.pos.y + self.vel.y
else
while not isThereObjectAt(
self.pos.x,
self.pos.y + math.sign(self.vel.y),
objects.collisions
) do
self.pos.y = self.pos.y + math.sign(self.vel.y)
end
self.stuck = true
end
-- stuck into collisions
if self.stuck then
--lets allow the arrow to tip a bit into the thing
self.pos.x = self.pos.x + self.vel.x / 5
self.pos.y = self.pos.y + self.vel.y / 5
self.vel.x = 0
self.vel.y = 0
self.illuminated = false
end
self.stuck = true
end
-- stuck into collisions
if self.stuck then
--lets allow the arrow to tip a bit into the thing
self.pos.x = self.pos.x + self.vel.x / 5
self.pos.y = self.pos.y + self.vel.y / 5
self.vel.x = 0
self.vel.y = 0
self.illuminated = false
end
end

View File

@ -50,8 +50,8 @@ end
function Fairy:DoPhysics()
local random_x = math.random(-0.04,0.04)
local random_y = math.random(-0.04,0.04)
local random_x = math.random(-4, 4)/100
local random_y = math.random(-4, 4)/100
self.vel.x = self.vel.x + random_x
self.vel.y = self.vel.y + random_y
-- move

View File

@ -69,9 +69,9 @@ function Kupo:Smart()
self.bow_rotation = angle
end
-- holding tight dispersion -- also affets arrows
-- holding tight dispersion -- also affects arrows
if self.bow_rotation == angle then
self.bow_rotation = self.bow_rotation + math.rad(math.random(math.abs(self.bow_frame-self.bow_aim_frames-self.bow_frames)/2))
self.bow_rotation = self.bow_rotation + math.rad(math.random(math.abs(math.floor(self.bow_frame-self.bow_aim_frames-self.bow_frames)/2)))
end
-- AIMING AI

View File

@ -1,5 +1,12 @@
function stepEditor()
palette = palette or false
AnimateTiles()
if love.keyboard.isDown("tab") and not pressed then
if palette then palette = false else palette = true end
local pressed = true
else
pressed = false
end
end
function stepGame()
@ -28,6 +35,9 @@ function drawEditor()
end
gameworldDraw()
if palette then
paletteDraw()
end
end
function drawGame()
@ -91,3 +101,66 @@ function gameworldLighting()
love.graphics.scale(1,1)
DrawDarkness()
end
function paletteDraw()
local width = LevelData.tileset:getPixelWidth()/tileProperties.width
local height = LevelData.tileset:getPixelHeight()/tileProperties.height
local position_x = 1
local position_y = 1
for i = 1, #TileIndex-width-1 do
love.graphics.draw(
LevelData.tileset,
TileIndex[i],
position_x * tileProperties.width*2,
(--[[p_scroll +]]position_y) * tileProperties.height*2,
0,
2,
2
)
position_x = position_x + 1
if position_x > width then
position_x = position_x - width
position_y = position_y + 1
end
end
love.graphics.rectangle(
"line",
tileProperties.width*2,
(--[[p_scroll +]] 1) * tileProperties.height*2,
2*LevelData.tileset:getPixelWidth(),
2*LevelData.tileset:getPixelHeight()
)
end
--[[
function DrawSelectingPaletteTile()
if selecting_tile ~= nil then
local width = TileProperties.tileset:getPixelWidth()/TileProperties.width
local height = TileProperties.tileset:getPixelHeight()/TileProperties.height
local positionx = 1
local positiony = 1
for i = 1, #Tile-12 do
if i == selecting_tile then
love.graphics.rectangle(
"line",
positionx * TileProperties.width*2,
(p_scroll + positiony) * TileProperties.height*2,
TileProperties.width*2-1,
TileProperties.height*2-1
)
end
positionx = positionx + 1
if positionx > width then
positionx = positionx - width
positiony = positiony + 1
end
end
end
end]]

View File

@ -19,6 +19,7 @@ function CreateLight(x,y,range,lum,flicker)
o.flicker_speed = flicker_speed or 60/12
o.flicker_time = 0
table.insert(Lights,o)
return o
end