This commit is contained in:
commit
0fa50c3324
|
@ -2,7 +2,7 @@ Arrow = Entity:New(x,y)
|
||||||
|
|
||||||
function Arrow:New(x,y,rotation,speed)
|
function Arrow:New(x,y,rotation,speed)
|
||||||
local o = Entity:New(x,y)
|
local o = Entity:New(x,y)
|
||||||
|
arrow = arrow + 1
|
||||||
o.pos = {x = x, y = y}
|
o.pos = {x = x, y = y}
|
||||||
o.speed = speed or 0
|
o.speed = speed or 0
|
||||||
o.sprite_rotation = rotation or 0
|
o.sprite_rotation = rotation or 0
|
||||||
|
@ -32,45 +32,47 @@ function Arrow:HandleAnimation()
|
||||||
end
|
end
|
||||||
|
|
||||||
function Arrow:DoPhysics()
|
function Arrow:DoPhysics()
|
||||||
-- horizontal collisions
|
if not self.stuck then
|
||||||
if not isThereAnyCollisionAt(
|
-- horizontal collisions
|
||||||
self.pos.x + self.vel.x,
|
if not isThereAnyCollisionAt(
|
||||||
self.pos.y
|
self.pos.x + self.vel.x,
|
||||||
) then
|
self.pos.y
|
||||||
self.pos.x = self.pos.x + self.vel.x
|
) then
|
||||||
else
|
self.pos.x = self.pos.x + self.vel.x
|
||||||
while not isThereObjectAt(
|
else
|
||||||
self.pos.x + math.sign(self.vel.x),
|
while not isThereObjectAt(
|
||||||
self.pos.y,
|
self.pos.x + math.sign(self.vel.x),
|
||||||
objects.collisions
|
self.pos.y,
|
||||||
) do
|
objects.collisions
|
||||||
self.pos.x = self.pos.x + math.sign(self.vel.x)
|
) do
|
||||||
|
self.pos.x = self.pos.x + math.sign(self.vel.x)
|
||||||
|
end
|
||||||
|
self.stuck = true
|
||||||
end
|
end
|
||||||
self.stuck = true
|
-- vertical collision
|
||||||
end
|
if not isThereAnyCollisionAt(
|
||||||
-- 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(
|
|
||||||
self.pos.x,
|
self.pos.x,
|
||||||
self.pos.y + math.sign(self.vel.y),
|
self.pos.y + self.vel.y
|
||||||
objects.collisions
|
) then
|
||||||
) do
|
self.pos.y = self.pos.y + self.vel.y
|
||||||
self.pos.y = self.pos.y + math.sign(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
|
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
|
||||||
end
|
end
|
||||||
|
|
|
@ -50,8 +50,8 @@ end
|
||||||
|
|
||||||
function Fairy:DoPhysics()
|
function Fairy:DoPhysics()
|
||||||
|
|
||||||
local random_x = math.random(-0.04,0.04)
|
local random_x = math.random(-4, 4)/100
|
||||||
local random_y = math.random(-0.04,0.04)
|
local random_y = math.random(-4, 4)/100
|
||||||
self.vel.x = self.vel.x + random_x
|
self.vel.x = self.vel.x + random_x
|
||||||
self.vel.y = self.vel.y + random_y
|
self.vel.y = self.vel.y + random_y
|
||||||
-- move
|
-- move
|
||||||
|
|
|
@ -69,9 +69,9 @@ function Kupo:Smart()
|
||||||
self.bow_rotation = angle
|
self.bow_rotation = angle
|
||||||
end
|
end
|
||||||
|
|
||||||
-- holding tight dispersion -- also affets arrows
|
-- holding tight dispersion -- also affects arrows
|
||||||
if self.bow_rotation == angle then
|
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
|
end
|
||||||
|
|
||||||
-- AIMING AI
|
-- AIMING AI
|
||||||
|
|
|
@ -1,5 +1,12 @@
|
||||||
function stepEditor()
|
function stepEditor()
|
||||||
|
palette = palette or false
|
||||||
AnimateTiles()
|
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
|
end
|
||||||
|
|
||||||
function stepGame()
|
function stepGame()
|
||||||
|
@ -28,6 +35,9 @@ function drawEditor()
|
||||||
end
|
end
|
||||||
|
|
||||||
gameworldDraw()
|
gameworldDraw()
|
||||||
|
if palette then
|
||||||
|
paletteDraw()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function drawGame()
|
function drawGame()
|
||||||
|
@ -91,3 +101,66 @@ function gameworldLighting()
|
||||||
love.graphics.scale(1,1)
|
love.graphics.scale(1,1)
|
||||||
DrawDarkness()
|
DrawDarkness()
|
||||||
end
|
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_speed = flicker_speed or 60/12
|
||||||
o.flicker_time = 0
|
o.flicker_time = 0
|
||||||
table.insert(Lights,o)
|
table.insert(Lights,o)
|
||||||
|
|
||||||
return o
|
return o
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
147
main.lua
147
main.lua
|
@ -1,3 +1,4 @@
|
||||||
|
<<<<<<< HEAD
|
||||||
function love.load()
|
function love.load()
|
||||||
|
|
||||||
do_pause = false
|
do_pause = false
|
||||||
|
@ -140,3 +141,149 @@ function love.draw()
|
||||||
drawGame()
|
drawGame()
|
||||||
end
|
end
|
||||||
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