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