Compare commits

...

2 Commits

Author SHA1 Message Date
fcf5e7933c fix little typo 2025-11-03 19:05:31 +03:00
c42749b8f8 turn order init 2025-11-03 18:24:54 +03:00
5 changed files with 51 additions and 1 deletions

View File

@ -35,6 +35,7 @@ local function spawn(name, spriteDir, position, size, level)
} }
Tree.level.characters[char.id] = char Tree.level.characters[char.id] = char
Tree.level.turnOrder:updateOrder()
return char return char
end end

View File

@ -7,6 +7,7 @@ local utils = require "lib.utils.utils"
--- @field selector Selector --- @field selector Selector
--- @field camera Camera --- @field camera Camera
--- @field tileGrid TileGrid --- @field tileGrid TileGrid
--- @field turnOrder TurnOrder
local level = {} local level = {}
level.__index = level level.__index = level
@ -24,6 +25,7 @@ local function new(type, template)
tileGrid = (require "lib.level.grid.tile_grid").new(type, template, size), tileGrid = (require "lib.level.grid.tile_grid").new(type, template, size),
selector = (require "lib.level.selector").new(), selector = (require "lib.level.selector").new(),
camera = (require "lib.level.camera").new(), camera = (require "lib.level.camera").new(),
turnOrder = (require "lib.level.turn_order").new(),
}, level) }, level)
end end

43
lib/level/turn_order.lua Normal file
View File

@ -0,0 +1,43 @@
--- @class TurnOrder
--- @field order Id[] возможно в будущем тут будет не айди персонажа, а айди фракции, в которой состоят несколько персонажей
local turnOrder = {}
turnOrder.__index = turnOrder
local function new()
return setmetatable({
order = {}
}, turnOrder)
end
function turnOrder:updateOrder()
local order = {}
local count = 1
for k, _ in ipairs(Tree.level.characters) do
order[count] = k
count = count + 1
end
self.order = order
print('[Level]: Turn order has been updated!')
for _, v in ipairs(self.order) do
print('[Level]: id:', v)
end
end
function turnOrder:next()
self.order[#self.order + 1] = self.order[1]
self.order[1] = nil
local order = {}
for i = 1, #self.order do
order[i] = self.order[i + 1]
end
self.order = order
print('[Level]: Triggered next turn')
for _, v in ipairs(self.order) do
print('[Level]: id:', v)
end
end
return { new = new }

View File

@ -52,6 +52,8 @@ function walk:cast(caster, target)
onEnd = function() caster:has(Tree.behaviors.spellcaster):endCast() end, onEnd = function() caster:has(Tree.behaviors.spellcaster):endCast() end,
}:run() }:run()
Tree.level.turnOrder:next()
return true return true
end end

View File

@ -12,6 +12,8 @@ end
function love.load() function love.load()
character.spawn("Foodor", Tree.assets.files.sprites.character) character.spawn("Foodor", Tree.assets.files.sprites.character)
character.spawn("Baris", Tree.assets.files.sprites.character, Vec3 { 3, 3 }) character.spawn("Baris", Tree.assets.files.sprites.character, Vec3 { 3, 3 })
character.spawn("Foodor Jr", Tree.assets.files.sprites.character, Vec3 { 0, 3 })
character.spawn("Baris Jr", Tree.assets.files.sprites.character, Vec3 { 0, 6 })
love.window.setMode(1080, 720, { resizable = true, msaa = 4, vsync = true }) love.window.setMode(1080, 720, { resizable = true, msaa = 4, vsync = true })
end end