--================= Tắt Ragdoll khi có NPC =================--
--Tự động tắt ragdoll khi có NPC xung quanh
--Đổi lại Ragdoll về chế độ trước khi gặp NPC
--==========================================================--

require "npc/vl_quest_npc_client"

assert(VLF.var, "Stack trace: Missing dependency: VLF.var - vl_ragdoll_switch.lua")

local IsMapTableEmpty = VLF.IsMapTableEmpty

--kiểm tra NPC còn tồn tại trên CLient không để set lại giá trị Ragdoll
local function EveryOneMinute_CheckRagdoll()
	--nếu Ragdoll tắt thì không cần check tiếp
	if getCore():getOptionUsePhysicsHitReaction() == false then return end
	
	--nếu VLF.var.npcUID là rỗng
	if type(VLF.var.npcUID) ~= "table" or IsMapTableEmpty(VLF.var.npcUID) then return end
	 
	--check tất cả zombie để xem NPC còn tồn tại không
    local zombies = getCell():getZombieList()
    local hasNPC = false
    for i = 0, zombies:size()-1 do
        local zombie = zombies:get(i)
        if zombie then
            local zUID = zombie:getUID()
            for _, uid in pairs(VLF.var.npcUID) do
                if uid == zUID then
                    hasNPC = true
					break
                end
            end
        end
		if hasNPC == true then break end
    end
    --nếu tất cả NPC không tồn tại thì chỉnh lại Ragdoll
    if hasNPC == false then
        --Chỉnh giá trị isRagdoll về lúc bắt đầu load NPC
		if VLF.var.ragdollOptionStart then 
			getCore():setOptionUsePhysicsHitReaction(VLF.var.ragdollOptionStart)
		end
		
		VLF.var.npcUID = {} 	--clear data
    end
end
Events.EveryOneMinute.Remove(EveryOneMinute_CheckRagdoll)
Events.EveryOneMinute.Add(EveryOneMinute_CheckRagdoll)
 
local function OnGameTimeLoaded_CheckRagdoll()
    VLF.var.ragdollOptionStart = getCore():getOptionUsePhysicsHitReaction()
    --print("--------------OnGameTimeLoaded_CheckRagdoll----------------= ", VLF.isRagdoll)
end
Events.OnGameTimeLoaded.Remove(OnGameTimeLoaded_CheckRagdoll)
Events.OnGameTimeLoaded.Add(OnGameTimeLoaded_CheckRagdoll)




