-- модуль реализует оранжевый тотем
totems_widget = totems_widget or {}
totems_widget._totem_effect_create_functions = totems_widget._totem_effect_create_functions or {}
totems_widget._totem_load_options_functions = totems_widget._totem_load_options_functions or {}

--настройки тотема
totems_widget._orange_totem_options = {
	start_fly_pos = sf.misc.FloatVector(0, 0), -- позиция откуда летят очки
	time_bonus_fly_speed = 300                  -- время полета бонуса
}

-- функция загрузки специфичных для тотема параметров
totems_widget._totem_load_options_functions[s11.CFieldCap.CapTypeOrange] = function (_totems_info)
	local options = totems_widget._orange_totem_options
	options.start_fly_pos = totems_widget.GetAbsOffset(StringToFloatVector(_totems_info.GetValue("start_fly_pos").c_str()))  
	options.time_bonus_fly_speed = tonumber(_totems_info.GetValue("time_bonus_fly_speed").c_str()) or 0
end

--- функция созданяи эффекта оранжевого тотемоа
totems_widget._totem_effect_create_functions[s11.CFieldCap.CapTypeOrange] = function ()
    local new_child_effect = 
    {
        _options = totems_widget._orange_totem_options,
		
		Init = function(_self, _work_info)
			_self._end_time = totems_widget._totem_work_time + totems_widget.effects_timer.Get().GetTime()
			-- в зависимости от настроек активации тотема 
			-- добавляем время
			if _work_info.perk1 > 0 then
				effects_widget.AddTimeBonus(_work_info.perk1, 
				                            _self._options.start_fly_pos,
											_self._options.time_bonus_fly_speed )
			end
        end,

        Draw = function(_self, _renderer)
        end,

        Update = function(_self, _time)
            if _time > _self._end_time then
                _self:InstantApply()
            end
        end,

        InstantApply = function(_self)
            _self._is_dead = true
        end,
		
		IsDead = function(_self)
			return _self._is_dead
		end,
    }
    return new_child_effect
end

