PeaAshMeter 324856b26c - grid rework (the simplest solution)
- checkerboard tile testing
- character centering
2025-08-10 05:18:41 +03:00

55 lines
1.5 KiB
Lua

local anim8 = require "lib/anim8"
require 'lib/vec3'
--- @alias Id integer
--- @type Id
local characterId = 1
--- @todo Композиция лучше наследования, но не до такой же степени! Надо отрефакторить и избавиться от сотни полей в таблице
--- @class Character
--- @field id Id
--- @field info Info
--- @field graphics Graphics
--- @field logic Logic
local character = {}
character.__index = character
--- Создаёт персонажа, которым будет управлять или игрок или компьютер
--- @param name string
--- @param template ClassTemplate
--- @param spriteDir table
--- @param position? Vec3
--- @param size? Vec3
--- @param level? integer
local function spawn(name, template, spriteDir, position, size, level)
local char = {}
char.id = characterId
characterId = characterId + 1
char.logic = (require 'lib.character.logic').new(char.id, position, size)
char.graphics = (require 'lib.character.graphics').new(char.id, spriteDir)
char.info = (require "lib/character/info").new(name, template, level)
char = setmetatable(char, character)
Tree.level.characters[char.id] = char
return char
end
--- @param target Vec3
function character:runTo(target)
self.logic:runTo(target)
end
function character:update(dt)
self.logic:update(dt)
self.graphics:update(dt)
end
function character:draw()
self.graphics:draw()
end
return { spawn = spawn }