expanded character definition

This commit is contained in:
Neckrat 2025-07-31 06:05:35 +03:00
parent b02a921a81
commit 0c0c1cd54b
2 changed files with 34 additions and 8 deletions

View File

@ -14,6 +14,8 @@ local ATTACK_ROW = 3
local Character = {}
Character.name = ""
---------- Animations -----
--- мы должны определиться со спрайтшитами и подобным, всё что здесь написано лишь пример
---
--- предполагается, что у всех будет одинаковое кол-во кадров в анимации и их скорость произведения
@ -28,11 +30,30 @@ Character.animationTable = {
--- когда нужно сменить анимацию с idle на run например, меняем именно это поле
Character.animation = Character.animationTable.idle
---------- Statistics -----
Character.stats = {}
Character.stats.initiative = 0
--- TODO: придумать формулу расчёта статов относительно уровня
Character.stats.level = 1
Character.stats.initiative = 10
Character.stats.damage = 5
Character.stats.defence = 0
Character.stats.hp = 30
Character.player = {}
--- TODO: мнимая надежда на спеллмейкинг
---
--- правда я абсолютно хз, как он будет смотреться
--- в контексте рогалика, но посмотрим
---
--- мб это будет метаспеллмейкинг на овощах
Character.skills = {}
--- а надо ли оно?
Character.class = ""
--- Обёртка над Character:Create
CreateCharacter = Character.create
@ -45,8 +66,8 @@ CreateCharacter = Character.create
--- Создаёт персонажа, которым будет управлять или игрок или компьютер
--- @param name string
--- @param imagePath string
--- @param initiative? integer
function Character:create(name, imagePath, initiative)
--- @param level? integer
function Character:create(name, imagePath, level)
-- TODO: добавить asset_loader, где все необходимые ассеты будут грузиться в одном месте,
-- а здесь мы добавляем ассет на загрузку в очередь
local image = love.graphics.newImage(imagePath)
@ -58,10 +79,7 @@ function Character:create(name, imagePath, initiative)
run = anim8.newAnimation(animationGrid(ANIMATION_SIZE, RUN_ROW), ANIMATION_SPEED),
attack = anim8.newAnimation(animationGrid(ANIMATION_SIZE, ATTACK_ROW), ANIMATION_SPEED)
},
animation = self.animationTable.idle,
stats = {
initiative = initiative or 10
}
animation = self.animationTable.idle
}
end

View File

@ -1,5 +1,13 @@
Faction = {}
local Faction = {}
Faction.name = ""
Faction.characters = {}
Faction.style = {}
--- some sort of global variable :clown:
FactionList = {}
function addFaction(name)
FactionList[name] = {}
end