effects too hard i dont understand
This commit is contained in:
parent
8292a20ae0
commit
e3d9cafdd3
@ -3,7 +3,8 @@
|
||||
|
||||
--- behavior thats holds all effects that we applied
|
||||
--- @class EffectsBehavior : Behavior
|
||||
--- @field effects table<Effect, integer>
|
||||
--- @field effectsPriority Effect[] хранит эффекты в порядке их применения
|
||||
--- @field effectsStacks table<Effect, integer> хранит стаки эффектов
|
||||
local behavior = {}
|
||||
behavior.__index = behavior
|
||||
behavior.id = "effects"
|
||||
@ -17,8 +18,9 @@ end
|
||||
--- @param effect Effect
|
||||
--- @param stacks integer
|
||||
function behavior:addEffect(effect, stacks)
|
||||
if not effect:beforeBirth() then return end
|
||||
-- проверяем эффект на возможности суммирования (aka противоречия)
|
||||
for ef, st in pairs(self.effects) do
|
||||
for i, ef in ipairs(self.effectsPriority) do
|
||||
local effectSum = effect:sum(ef)
|
||||
if effectSum then
|
||||
-- применяем результат суммы и удаляем эффект
|
||||
@ -26,23 +28,22 @@ function behavior:addEffect(effect, stacks)
|
||||
end
|
||||
end
|
||||
|
||||
self.effects[effect] = stacks
|
||||
effect:onBirth(self.owner)
|
||||
self.effectsPriority[#self.effectsPriority + 1] = effect
|
||||
self.effectsStacks[effect] = stacks
|
||||
effect:afterBirth()
|
||||
end
|
||||
|
||||
--- должен вызываться в начале хода
|
||||
---
|
||||
--- @todo надо написать применение всех эффектов так, чтобы они применялись одновременно
|
||||
function behavior:onStartTurn()
|
||||
for ef, st in pairs(self.effects) do
|
||||
ef:onStartTurn(self.owner)
|
||||
function behavior:beforeTurn()
|
||||
for i, ef in ipairs(self.effectsPriority) do
|
||||
ef:beforeTurn()
|
||||
end
|
||||
end
|
||||
|
||||
--- должен вызываться в конце хода
|
||||
function behavior:onEndTurn()
|
||||
for ef, st in pairs(self.effects) do
|
||||
ef:onEndTurn(self.owner)
|
||||
function behavior:afterTurn()
|
||||
for i, ef in pairs(self.effectsPriority) do
|
||||
ef:afterTurn()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@ -29,8 +29,8 @@ function effect:beforeDamage(damage) end
|
||||
|
||||
function effect:afterDamage() end
|
||||
|
||||
--- @param damage integer
|
||||
function effect:beforeRegeneration(damage) end
|
||||
--- @param amountHp integer кол-во хп для регена
|
||||
function effect:beforeRegeneration(amountHp) end
|
||||
|
||||
function effect:afterRegeneration() end
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user