update grid🤡🤡🤡:clown:
Co-authored-by: Ivan Yuriev <ivanyr44@gmail.com>
This commit is contained in:
parent
7587395d2c
commit
0cf74b0eff
@ -73,6 +73,16 @@ function camera:attach()
|
|||||||
love.graphics.translate(-self.position.x, -self.position.y)
|
love.graphics.translate(-self.position.x, -self.position.y)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- @param position Vec3
|
||||||
|
function camera:toWorldPosition(position)
|
||||||
|
local wx, wy = love.window.getMode()
|
||||||
|
position = Vec3 {
|
||||||
|
(position.x - wx / 2) / Tree.level.camera.pixelsPerMeter / Tree.level.camera.scale + Tree.level.camera.position.x,
|
||||||
|
(position.y - wy / 2) / Tree.level.camera.pixelsPerMeter / Tree.level.camera.scale + Tree.level.camera.position.y
|
||||||
|
}
|
||||||
|
return position
|
||||||
|
end
|
||||||
|
|
||||||
function camera:detach()
|
function camera:detach()
|
||||||
love.graphics.pop()
|
love.graphics.pop()
|
||||||
end
|
end
|
||||||
|
|||||||
@ -4,7 +4,10 @@ require 'lib/vec3'
|
|||||||
--- Скорость между кадрами в анимации
|
--- Скорость между кадрами в анимации
|
||||||
local ANIMATION_SPEED = 0.1
|
local ANIMATION_SPEED = 0.1
|
||||||
|
|
||||||
|
local characterId = 1
|
||||||
|
|
||||||
--- @class Character
|
--- @class Character
|
||||||
|
--- @field id integer
|
||||||
--- @field name string
|
--- @field name string
|
||||||
--- @field animationTable table<string, table>
|
--- @field animationTable table<string, table>
|
||||||
--- @field state "idle"|"run"|"attack"|"hurt"
|
--- @field state "idle"|"run"|"attack"|"hurt"
|
||||||
@ -35,8 +38,11 @@ local function spawn(name, spriteDir, level)
|
|||||||
animationTable = {}
|
animationTable = {}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char.id = characterId
|
||||||
|
characterId = characterId + 1
|
||||||
|
|
||||||
char.position = Vec3({})
|
char.position = Vec3({})
|
||||||
char.size = Vec3({})
|
char.size = Vec3({ 1, 1 })
|
||||||
|
|
||||||
char.state = "idle"
|
char.state = "idle"
|
||||||
|
|
||||||
@ -58,10 +64,8 @@ local function spawn(name, spriteDir, level)
|
|||||||
char.stats.defence = 0
|
char.stats.defence = 0
|
||||||
char.stats.hp = 30
|
char.stats.hp = 30
|
||||||
|
|
||||||
print(char)
|
|
||||||
|
|
||||||
char = setmetatable(char, character)
|
char = setmetatable(char, character)
|
||||||
table.insert(Tree.level.characters, char)
|
Tree.level.characters[char.id] = char
|
||||||
return char
|
return char
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -8,7 +8,6 @@ local function control(device, key)
|
|||||||
return t
|
return t
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
local keymap = {
|
local keymap = {
|
||||||
cameraMoveUp = control("key", "w"),
|
cameraMoveUp = control("key", "w"),
|
||||||
cameraMoveLeft = control("key", "a"),
|
cameraMoveLeft = control("key", "a"),
|
||||||
|
|||||||
47
lib/grid.lua
47
lib/grid.lua
@ -1,14 +1,47 @@
|
|||||||
local utils = require "lib/utils"
|
local utils = require "lib/utils"
|
||||||
|
|
||||||
---Generates an empty grid
|
--- @class Grid
|
||||||
---@param width number
|
local grid = {}
|
||||||
---@param height number
|
grid.__index = grid
|
||||||
|
|
||||||
|
--- Adds a character id to the grid
|
||||||
|
--- @param character Character
|
||||||
|
function grid:add(character)
|
||||||
|
local centerX, centerY = character.position.x, character.position.y
|
||||||
|
local sizeX, sizeY = character.size.x, character.size.y
|
||||||
|
|
||||||
|
for y = centerY, centerY + sizeY - 1 do
|
||||||
|
for x = centerX, centerX + sizeX - 1 do
|
||||||
|
grid[x][y] = character.id
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Removes a character id from the grid
|
||||||
|
--- @param character Character
|
||||||
|
function grid:remove(character)
|
||||||
|
local centerX, centerY = character.position.x, character.position.y
|
||||||
|
local sizeX, sizeY = character.size.x, character.size.y
|
||||||
|
|
||||||
|
for y = centerY, centerY + sizeY - 1 do
|
||||||
|
for x = centerX, centerX + sizeX - 1 do
|
||||||
|
grid[x][y] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Generates an empty grid
|
||||||
|
--- @param width number
|
||||||
|
--- @param height number
|
||||||
|
--- @return Grid
|
||||||
local function generateGrid(width, height)
|
local function generateGrid(width, height)
|
||||||
local grid = utils.generateList(width, function(i)
|
local g = utils.generateList(width, function(_)
|
||||||
return utils.generateList(height, function(i)
|
return utils.generateList(height, function(_)
|
||||||
return {}
|
return nil
|
||||||
end)
|
end)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
return grid
|
return setmetatable(g, grid)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
return { new = generateGrid }
|
||||||
|
|||||||
@ -1,8 +1,9 @@
|
|||||||
local utils = require "lib/utils"
|
local utils = require "lib/utils"
|
||||||
local camera = require "lib/camera"
|
|
||||||
|
|
||||||
--- @class Level
|
--- @class Level
|
||||||
--- @field characters Character[]
|
--- @field characters Character[]
|
||||||
|
--- @field positionGrid Grid
|
||||||
|
--- @field selected table
|
||||||
--- @field camera Camera
|
--- @field camera Camera
|
||||||
local level = {}
|
local level = {}
|
||||||
level.__index = level
|
level.__index = level
|
||||||
@ -10,7 +11,8 @@ level.__index = level
|
|||||||
local function new()
|
local function new()
|
||||||
return setmetatable({
|
return setmetatable({
|
||||||
characters = {},
|
characters = {},
|
||||||
camera = camera.new()
|
positionGrid = (require "lib/grid").new(30, 30), -- magic numbers for testing purposes only
|
||||||
|
camera = (require "lib/camera").new()
|
||||||
}, level)
|
}, level)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
1
main.lua
1
main.lua
@ -33,7 +33,6 @@ function love.draw()
|
|||||||
love.graphics.setColor(244 / 255, 67 / 255, 54 / 255, 1)
|
love.graphics.setColor(244 / 255, 67 / 255, 54 / 255, 1)
|
||||||
love.graphics.rectangle('fill', 0, 0, 1, 1)
|
love.graphics.rectangle('fill', 0, 0, 1, 1)
|
||||||
love.graphics.setColor(1, 1, 1, 1)
|
love.graphics.setColor(1, 1, 1, 1)
|
||||||
|
|
||||||
Tree.level:draw()
|
Tree.level:draw()
|
||||||
Tree.level.camera:detach()
|
Tree.level.camera:detach()
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user