This commit is contained in:
parent
a42cf7953f
commit
33ade34886
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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]]
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
Loading…
Reference in New Issue