62 lines
2.1 KiB
Lua
62 lines
2.1 KiB
Lua
local anim8 = require "anim8"
|
||
|
||
local CHARACTER_SIZE = 64
|
||
|
||
local Character = {}
|
||
Character.name = ""
|
||
|
||
Character.animationTable = {
|
||
idle = {},
|
||
run = {},
|
||
attack = {}
|
||
-- etc etc
|
||
}
|
||
Character.animation = Character.animationTable.idle
|
||
|
||
Character.stats = {}
|
||
Character.stats.initiative = 0
|
||
|
||
Character.player = {}
|
||
|
||
--- Обёртка над Character:Create
|
||
--- @param name string
|
||
--- @param imagePath string
|
||
--- @param initiative? integer
|
||
CreateCharacter = Character.create
|
||
|
||
-- ты клоун же
|
||
-- какого черта у тебя конструктор объекта принимает ссылку на объект
|
||
--
|
||
-- хз
|
||
-- ща я в душ
|
||
-- :clown:
|
||
--- Создаёт персонажа, которым будет управлять или игрок или компьютер
|
||
--- @param name string
|
||
--- @param imagePath string
|
||
--- @param initiative? integer
|
||
function Character:create(name, imagePath, initiative)
|
||
local image = love.graphics.newImage(imagePath)
|
||
local animationGrid = anim8.newGrid(CHARACTER_SIZE, CHARACTER_SIZE, image:getWidth(), image:getHeight())
|
||
return Character {
|
||
name = name,
|
||
--- мы должны определиться со спрайтшитами и подобным, всё что здесь написано лишь пример
|
||
---
|
||
--- предполагается, что у всех будет одинаковое кол-во кадров в анимации и их скорость произведения
|
||
animationTable = {
|
||
idle = anim8.newAnimation(animationGrid('1-8', 1), 0.2)
|
||
},
|
||
--- чтобы не обновлять все анимации одновременно, храним нужную анимацию здесь
|
||
---
|
||
--- когда нужно сменить анимацию с idle на run например, меняем именно это поле
|
||
animation = self.animationTable.idle,
|
||
stats = {
|
||
initiative = initiative or 10
|
||
}
|
||
}
|
||
end
|
||
|
||
function Character:update(dt)
|
||
self.animation:update(dt)
|
||
end
|
||
|
||
local f = Character.create |