moved characters into the global tree
This commit is contained in:
parent
9abb55dd1d
commit
1be19bfb46
@ -14,15 +14,16 @@ local RUN_ROW = 2
|
|||||||
local ATTACK_ROW = 3
|
local ATTACK_ROW = 3
|
||||||
|
|
||||||
--- @class Character
|
--- @class Character
|
||||||
local Character = {}
|
local character = {}
|
||||||
Character.name = ""
|
character.__index = character
|
||||||
|
character.name = ""
|
||||||
|
|
||||||
---------- Animations -----
|
---------- Animations -----
|
||||||
|
|
||||||
--- мы должны определиться со спрайтшитами и подобным, всё что здесь написано лишь пример
|
--- мы должны определиться со спрайтшитами и подобным, всё что здесь написано лишь пример
|
||||||
---
|
---
|
||||||
--- предполагается, что у всех будет одинаковое кол-во кадров в анимации и их скорость произведения
|
--- предполагается, что у всех будет одинаковое кол-во кадров в анимации и их скорость произведения
|
||||||
Character.animationTable = {
|
character.animationTable = {
|
||||||
idle = {},
|
idle = {},
|
||||||
run = {},
|
run = {},
|
||||||
attack = {}
|
attack = {}
|
||||||
@ -31,10 +32,10 @@ Character.animationTable = {
|
|||||||
--- чтобы не обновлять все анимации одновременно, храним нужную анимацию здесь
|
--- чтобы не обновлять все анимации одновременно, храним нужную анимацию здесь
|
||||||
|
|
||||||
--- меняем вместе с Character.animation
|
--- меняем вместе с Character.animation
|
||||||
Character.state = "idle"
|
character.state = "idle"
|
||||||
--- когда нужно сменить анимацию с idle на run например, меняем именно это поле
|
--- когда нужно сменить анимацию с idle на run например, меняем именно это поле
|
||||||
|
|
||||||
Character.spriteSheet = {
|
character.spriteSheet = {
|
||||||
animationSpeed = 0.1,
|
animationSpeed = 0.1,
|
||||||
width = 96,
|
width = 96,
|
||||||
height = 64,
|
height = 64,
|
||||||
@ -47,16 +48,16 @@ Character.spriteSheet = {
|
|||||||
|
|
||||||
---------- Statistics -----
|
---------- Statistics -----
|
||||||
|
|
||||||
Character.stats = {}
|
character.stats = {}
|
||||||
--- TODO: придумать формулу расчёта статов относительно уровня
|
--- TODO: придумать формулу расчёта статов относительно уровня
|
||||||
Character.stats.level = 1
|
character.stats.level = 1
|
||||||
|
|
||||||
Character.stats.initiative = 10
|
character.stats.initiative = 10
|
||||||
Character.stats.damage = 5
|
character.stats.damage = 5
|
||||||
Character.stats.defence = 0
|
character.stats.defence = 0
|
||||||
Character.stats.hp = 30
|
character.stats.hp = 30
|
||||||
|
|
||||||
Character.player = {}
|
character.player = {}
|
||||||
|
|
||||||
--- TODO: мнимая надежда на спеллмейкинг
|
--- TODO: мнимая надежда на спеллмейкинг
|
||||||
---
|
---
|
||||||
@ -64,11 +65,11 @@ Character.player = {}
|
|||||||
--- в контексте рогалика, но посмотрим
|
--- в контексте рогалика, но посмотрим
|
||||||
---
|
---
|
||||||
--- мб это будет метаспеллмейкинг на овощах
|
--- мб это будет метаспеллмейкинг на овощах
|
||||||
Character.skills = {}
|
character.skills = {}
|
||||||
|
|
||||||
Character.class = ""
|
character.class = ""
|
||||||
|
|
||||||
Character.position = Vec3({})
|
character.position = Vec3({})
|
||||||
|
|
||||||
--- Обёртка над Character:Create
|
--- Обёртка над Character:Create
|
||||||
-- CreateCharacter = Character.create
|
-- CreateCharacter = Character.create
|
||||||
@ -77,7 +78,7 @@ Character.position = Vec3({})
|
|||||||
--- @param name string
|
--- @param name string
|
||||||
--- @param spriteDir table
|
--- @param spriteDir table
|
||||||
--- @param level? integer
|
--- @param level? integer
|
||||||
function CreateCharacter(name, spriteDir, level) -- aka Character.create(self, name, imagePath, level)
|
local function spawn(name, spriteDir, level) -- aka Character.create(self, name, imagePath, level)
|
||||||
-- TODO: добавить asset_loader, где все необходимые ассеты будут грузиться в одном месте,
|
-- TODO: добавить asset_loader, где все необходимые ассеты будут грузиться в одном месте,
|
||||||
-- а здесь мы добавляем ассет на загрузку в очередь
|
-- а здесь мы добавляем ассет на загрузку в очередь
|
||||||
-- local image = love.graphics.newImage(imagePath)
|
-- local image = love.graphics.newImage(imagePath)
|
||||||
@ -102,11 +103,12 @@ function CreateCharacter(name, spriteDir, level) -- aka Character.create(self, n
|
|||||||
char.animationTable.hurt = anim8.newAnimation(animationGrid["hurt"], ANIMATION_SPEED, function()
|
char.animationTable.hurt = anim8.newAnimation(animationGrid["hurt"], ANIMATION_SPEED, function()
|
||||||
char.state = "idle"
|
char.state = "idle"
|
||||||
end)
|
end)
|
||||||
|
char = setmetatable(char, character)
|
||||||
return setmetatable(char, { __index = Character })
|
table.insert(Tree.level.characters, char)
|
||||||
|
return char
|
||||||
end
|
end
|
||||||
|
|
||||||
function Character:update(dt)
|
function character:update(dt)
|
||||||
if love.keyboard.isDown("r") then
|
if love.keyboard.isDown("r") then
|
||||||
self.state = "run"
|
self.state = "run"
|
||||||
end
|
end
|
||||||
@ -122,8 +124,10 @@ function Character:update(dt)
|
|||||||
self.animationTable[self.state]:update(dt)
|
self.animationTable[self.state]:update(dt)
|
||||||
end
|
end
|
||||||
|
|
||||||
function Character:draw()
|
function character:draw()
|
||||||
local camera = Tree.level.camera
|
local ppm = Tree.level.camera.pixelsPerMeter
|
||||||
self.animationTable[self.state]:draw(AssetBundle.files.sprites.character[self.state], self.position.x,
|
self.animationTable[self.state]:draw(Tree.assets.files.sprites.character[self.state], self.position.x,
|
||||||
self.position.y, nil, 1 / camera.pixelsPerMeter, 1 / camera.pixelsPerMeter, 38, 47)
|
self.position.y, nil, 1 / ppm, 1 / ppm, 38, 47)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
return { spawn = spawn }
|
||||||
|
|||||||
@ -21,6 +21,12 @@ function level:update(dt)
|
|||||||
self.camera:update(dt)
|
self.camera:update(dt)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function level:draw()
|
||||||
|
utils.each(self.characters, function(el)
|
||||||
|
el:draw()
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
return {
|
return {
|
||||||
new = new
|
new = new
|
||||||
}
|
}
|
||||||
|
|||||||
14
main.lua
14
main.lua
@ -1,6 +1,6 @@
|
|||||||
-- CameraLoader = require 'lib/camera'
|
-- CameraLoader = require 'lib/camera'
|
||||||
|
|
||||||
require "character"
|
local character = require "character"
|
||||||
require "lib/tree"
|
require "lib/tree"
|
||||||
|
|
||||||
function love.conf(t)
|
function love.conf(t)
|
||||||
@ -8,12 +8,9 @@ function love.conf(t)
|
|||||||
end
|
end
|
||||||
|
|
||||||
function love.load()
|
function love.load()
|
||||||
-- PlayerFaction = Faction
|
character.spawn("Hero", Tree.assets.files.sprites.character)
|
||||||
|
local hero2 = character.spawn("Hero2", Tree.assets.files.sprites.character)
|
||||||
-- Hero1 = Character:create("Petya", 10)
|
hero2.position = Vec3 { 1, 1 }; -- вообще-то мы вообще не хотим как-то взаимодействовать с персонажем за пределами update, но это удобно для тестов
|
||||||
-- Hero2 = Character:create("Andrysha", 12)
|
|
||||||
|
|
||||||
Hero = CreateCharacter("Hero", Tree.assets.files.sprites.character)
|
|
||||||
|
|
||||||
-- PlayerFaction.characters = { Hero1, Hero2 }
|
-- PlayerFaction.characters = { Hero1, Hero2 }
|
||||||
love.window.setMode(1080, 720, { resizable = true, msaa = 4, vsync = true })
|
love.window.setMode(1080, 720, { resizable = true, msaa = 4, vsync = true })
|
||||||
@ -22,7 +19,6 @@ end
|
|||||||
function love.update(dt)
|
function love.update(dt)
|
||||||
Tree.panning:update(dt)
|
Tree.panning:update(dt)
|
||||||
Tree.level:update(dt)
|
Tree.level:update(dt)
|
||||||
Hero:update(dt)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function love.draw()
|
function love.draw()
|
||||||
@ -37,7 +33,7 @@ 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)
|
||||||
Hero:draw()
|
|
||||||
|
|
||||||
|
Tree.level:draw()
|
||||||
Tree.level.camera:detach()
|
Tree.level.camera:detach()
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user