turn-order #17
@ -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
|
||||||
|
|
||||||
|
|||||||
@ -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
43
lib/level/turn_order.lua
Normal 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 order')
|
||||||
|
for _, v in ipairs(self.order) do
|
||||||
|
print('[Level]: id:', v)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return { new = new }
|
||||||
@ -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
|
||||||
|
|
||||||
|
|||||||
2
main.lua
2
main.lua
@ -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
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user