This commit is contained in:
commit
0fa50c3324
|
@ -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
|
||||
|
||||
|
|
147
main.lua
147
main.lua
|
@ -1,3 +1,4 @@
|
|||
<<<<<<< HEAD
|
||||
function love.load()
|
||||
|
||||
do_pause = false
|
||||
|
@ -140,3 +141,149 @@ function love.draw()
|
|||
drawGame()
|
||||
end
|
||||
end
|
||||
=======
|
||||
function love.load()
|
||||
arrow = 0
|
||||
|
||||
do_pause = false
|
||||
|
||||
debug = false
|
||||
debug_collision = false
|
||||
editor_mode = false
|
||||
|
||||
textScale = 1
|
||||
fps_count = 0
|
||||
fps_second = 0
|
||||
fps_draw = 0
|
||||
fps_total = 0
|
||||
|
||||
love.graphics.setColor(1,1,1)
|
||||
love.keyboard.setKeyRepeat(true)
|
||||
love.graphics.setDefaultFilter("nearest") -- good pixel
|
||||
|
||||
game = {
|
||||
scale = 2,
|
||||
width = love.graphics.getWidth(),
|
||||
height = love.graphics.getHeight(),
|
||||
paused = false
|
||||
}
|
||||
|
||||
require "data/scripts"
|
||||
Canvas = {
|
||||
Darkness = CreateDarkness()
|
||||
}
|
||||
love.graphics.setCanvas(Canvas.Darkness)
|
||||
SetDarkness()
|
||||
love.graphics.setCanvas()
|
||||
|
||||
Camera.width = game.width
|
||||
Camera.height = game.height
|
||||
|
||||
levelList = {"level1","2","3","ewae","tileset"}
|
||||
levelNum = 1
|
||||
currLevel = levelList[levelNum]
|
||||
LoadedEntities = {}
|
||||
LevelLoadTiles()
|
||||
|
||||
main_Player = Player:New(75,50)
|
||||
|
||||
table.insert(LoadedEntities,main_Player)
|
||||
table.insert(LoadedEntities,Kupo:New(100,150))
|
||||
table.insert(LoadedEntities,Kupo:New(300,150))
|
||||
table.insert(LoadedEntities,Decoration:New(200,89,animation.decoration.candelabra,80))
|
||||
table.insert(LoadedEntities,Fairy:New(200,88))
|
||||
|
||||
gravity = 0.2
|
||||
end
|
||||
|
||||
function love.update(dt)
|
||||
-- fps counter
|
||||
if fps_second >= 1 then
|
||||
fps_second = fps_second - 1
|
||||
fps_draw = fps_count
|
||||
fps_count = 0
|
||||
fps_total = fps_total + 1
|
||||
end
|
||||
fps_second = fps_second + dt
|
||||
fps_count = fps_count + 1
|
||||
current_dt = dt
|
||||
|
||||
|
||||
if editor_mode then
|
||||
stepEditor()
|
||||
else
|
||||
stepGame()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function love.wheelmoved(_, y)
|
||||
if editor_mode then
|
||||
if palette then
|
||||
p_scroll = p_scroll + y or 0
|
||||
else
|
||||
local oscale = game.scale
|
||||
game.scale = math.max(0.1,game.scale + y/16)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function love.keypressed(key)
|
||||
if key == "escape" then
|
||||
if do_pause then
|
||||
do_pause = false
|
||||
else
|
||||
pausepage = 1
|
||||
do_pause = true
|
||||
end
|
||||
end
|
||||
|
||||
if key == "f1" then
|
||||
if debug then
|
||||
debug = false
|
||||
debug_collision = true
|
||||
elseif debug_collision then
|
||||
debug_collision = false
|
||||
else
|
||||
debug = true
|
||||
end
|
||||
end
|
||||
|
||||
if key == "f2" then
|
||||
if editor_mode then
|
||||
|
||||
else
|
||||
main_Player.pos.x, main_Player.pos.y = 16,-10
|
||||
end
|
||||
end
|
||||
|
||||
if key == "f3" then
|
||||
LoadLevel()
|
||||
end
|
||||
|
||||
if key == "f4" then
|
||||
if editor_mode then
|
||||
editor_mode = false
|
||||
else
|
||||
editor_mode = true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function love.draw()
|
||||
if game.width ~= love.graphics.getWidth() or game.height ~= love.graphics.getHeight() then
|
||||
game.width = love.graphics.getWidth()
|
||||
game.height = love.graphics.getHeight()
|
||||
game_resize = true
|
||||
else
|
||||
game_resize = false
|
||||
end
|
||||
|
||||
if editor_mode then
|
||||
drawEditor()
|
||||
else
|
||||
drawGame()
|
||||
end
|
||||
love.graphics.print(arrow,10,40)
|
||||
end
|
||||
>>>>>>> 5f0256e0afc22c4f091fb621b7ff06b7d3be79c7
|
||||
|
|
Loading…
Reference in New Issue