added new constants about animations

refactor some comments
This commit is contained in:
Neckrat 2025-07-31 02:13:30 +03:00
parent 47647a5c8a
commit 7c36f73b8e

View File

@ -2,15 +2,30 @@ local anim8 = require "anim8"
local CHARACTER_SIZE = 64
--- Для anim8, представляет из себя с какого по какого представлены спрайты для анимации
local ANIMATION_SIZE = '1-8'
--- Скорость между кадрами в анимации
local ANIMATION_SPEED = 0.1
-- Константы ниже представляют из себя номер строки (с единицы), в которой находится та или иная анимация
local IDLE_ROW = 1
local RUN_ROW = 2
local ATTACK_ROW = 3
local Character = {}
Character.name = ""
--- мы должны определиться со спрайтшитами и подобным, всё что здесь написано лишь пример
---
--- предполагается, что у всех будет одинаковое кол-во кадров в анимации и их скорость произведения
Character.animationTable = {
idle = {},
run = {},
attack = {}
-- etc etc
}
--- чтобы не обновлять все анимации одновременно, храним нужную анимацию здесь
---
--- когда нужно сменить анимацию с idle на run например, меняем именно это поле
Character.animation = Character.animationTable.idle
Character.stats = {}
@ -19,14 +34,11 @@ Character.stats.initiative = 0
Character.player = {}
--- Обёртка над Character:Create
--- @param name string
--- @param imagePath string
--- @param initiative? integer
CreateCharacter = Character.create
-- ты клоун же
-- какого черта у тебя конструктор объекта принимает ссылку на объект
--
--
-- хз
-- ща я в душ
-- :clown:
@ -39,15 +51,11 @@ function Character:create(name, imagePath, initiative)
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 = anim8.newAnimation(animationGrid(ANIMATION_SIZE, IDLE_ROW), ANIMATION_SPEED),
run = anim8.newAnimation(animationGrid(ANIMATION_SIZE, RUN_ROW), ANIMATION_SPEED),
attack = anim8.newAnimation(animationGrid(ANIMATION_SIZE, ATTACK_ROW), ANIMATION_SPEED)
},
--- чтобы не обновлять все анимации одновременно, храним нужную анимацию здесь
---
--- когда нужно сменить анимацию с idle на run например, меняем именно это поле
animation = self.animationTable.idle,
stats = {
initiative = initiative or 10
@ -59,4 +67,4 @@ function Character:update(dt)
self.animation:update(dt)
end
local f = Character.create
local f = Character.create