heroes-of-nerevelon/character.lua
Neckrat 47647a5c8a initial commit
Co-authored-by: Ivan Yuriev <ivanyr44@gmail.com>
2025-07-31 01:54:03 +03:00

62 lines
2.1 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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