diff --git a/character.lua b/character.lua index b301033..c189730 100644 --- a/character.lua +++ b/character.lua @@ -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 \ No newline at end of file +local f = Character.create