
is_game_started = false
is_game_finished = false

function ending()

end
function begining()
	--- Teleport player to 0,0,0
	-- create 4 page dialog using formspec
	-- 1st page: welcome
	-- 2nd page: Story about eating pickles with milk and beans
	-- 3rd page: Started pooping on the center of the park!
	-- 4th page: Teleport player to 10 9.5 18

	-- set is_game_started to true

end

destruction_counter = {}
destruction_counter.nodesDestroyed = 0
local nodesDestroyedByHand = 0

local idText
local idMeter
minetest.register_on_joinplayer(function(player)
    meta = player:get_meta()
    

    idText = player:hud_add({
        hud_elem_type = "text",
        position      = {x = .5, y = .5},
        offset        = {x = 0,   y = 0},
        text          = nodesDestroyed,
        alignment     = {x = 0, y = 0},  -- center aligned
        scale         = {x = 100, y = 100}, -- covered later
    })
    
    player:hud_add({
        hud_elem_type = "image",
        position  = {x = 1, y = .5},
        offset    = {x = -515, y = 23},
        text      = "destruction_counter_meter_empty.png",
        scale     = {x = 4, y = 4},
        alignment = {x = 1, y = 0},
    })

    idMeter = player:hud_add({
        hud_elem_type = "image",
        position  = {x = 1, y = .5},
        offset    = {x = -510, y = 23},
        text      = "destruction_counter_meter_full.png",
        scale     = {x = 0, y = 4},
        alignment = {x = 1, y = 0},
    })
end)

function destruction_counter.updateCounter(player)
    if not player then
        return
    end
    
    local totalDestruction = destruction_counter.nodesDestroyed + math.floor(nodesDestroyedByHand / 10)
    local percentage = (totalDestruction / 100 * 4)
    if percentage > 100 then
        percentage = 100
    end
    player:hud_change(idText, "text", "Shitting & Packing Meter: " .. totalDestruction)
    player:hud_change(idMeter, "scale", {x = percentage, y = 4})
end

function sraj_dzwiek()
	--make random sound
	local sounds = {
		"shitting1",
		"shitting2",
		"shitting3"}
	local sound = sounds[math.random(1, #sounds)]
	minetest.sound_play(sound, {pos = pos, gain = 2.0, max_hear_distance = 10})

end
function pakuj_guwno()
	local sounds = {
		"shit_packing1",
		"shit_packing2",
		"shit_packing3"}
	local sound = sounds[math.random(1, #sounds)]
	minetest.sound_play(sound, {pos = pos, gain = 2.0, max_hear_distance = 10})
end
minetest.register_node("poop:box", {
	description = "cardboard box",
	tiles = {"box_top_closed.png","box_top_closed.png", "box_long_side.png", "box_long_side.png", "box_long_side.png", "box_long_side.png"},
	
	drop = 'poop:box',
	legacy_mineral = true,
	drawtype = "nodebox",
	paramtype = "light",
	node_box = {
		type = "fixed",
		fixed = {
			{-0.3125, -0.5, -0.375, 0.3125, -0.0625, 0.375}, -- NodeBox1
		}
	}
})

-- make a tool called flashlight that can be used to light up the world
minetest.register_tool("poop:flashlight", {
	description = "Flashlight",
	inventory_image = "flashlight.png",
	wield_image = "flashlight.png",
	wield_scale = {x=1,y=1,z=1},
	tool_capabilities = {
		full_punch_interval = 1.0,
		max_drop_level=0,
		groupcaps={
			cracky = {times={[1]=3.00, [2]=0.70, [3]=0.40}, uses=20, maxlevel=1},
		},
		damage_groups = {fleshy=2},
	},
	light_source = 14,
})

minetest.register_tool("poop:tool", {
    description = "My Tool",
    inventory_image = "flux_capacitor.png",
    tool_capabilities = {
        full_punch_interval = 1.5,
        max_drop_level = 1,
        groupcaps = {
            crumbly = {
                maxlevel = 2,
                uses = 20,
                times = { [1]=1.60, [2]=1.20, [3]=0.80 }
            },
        },
        damage_groups = {fleshy=2},
    },
})
minetest.register_node("poop:floor", {
	description = "Floor",
	tiles = {"floor.png"},
	
	drop = 'poop:floor',
	legacy_mineral = true, groups = {cracky=3, stone=1},
})

minetest.register_node("poop:Poop", {
	description = "Just Shit",
	tiles = {"Poop.png"},
	drop = 'poop:PoopItem', groups = {cracky=3, stone=1},
})

minetest.register_node("poop:tv", {
	description = "CRT TV",
	tiles = {"PC2.png", "PC2.png","PC2.png","PC.png","PC2.png","PC2.png"},
	
	drop = 'poop:Poop', groups = {cracky=3, stone=1},
})

minetest.register_node("poop:bricks", {
	description = "Bricks",
	tiles = {"Bricks.png"},
	
	drop = 'poop:grey_bricks', groups = {cracky=3, stone=1},
})
minetest.register_node("poop:grey_bricks", {
	description = "Bricks 2",
	tiles = {"Bricks2.png"}, groups = {cracky=3, stone=1},
	
	drop = 'poop:grey_bricks', groups = {cracky=3, stone=1},
})
minetest.register_node("poop:planks", {
	description = "Planks",
	tiles = {"Planks.png"},
	
	drop = 'poop:planks', groups = {cracky=3, stone=1},
})
minetest.register_node("poop:purpleblock", {
	description = "Purple Block",
	tiles = {"purpleblock.png"},
	
	drop = 'poop:purpleblock', groups = {cracky=3, stone=1},
})
minetest.register_node("poop:purpleblock", {
	description = "Purple Block",
	tiles = {"purpleblock.png"},
	
	drop = 'poop:purpleblock', groups = {cracky=3, stone=1},
})
minetest.register_node("poop:redblock", {
	description = "Red Block",
	tiles = {"redblock.png"},
	
	drop = 'poop:redblock', groups = {cracky=3, stone=1},
})

minetest.register_node("poop:aquablock", {
	description = "Aqua Block",
	tiles = {"aquablock.png"},
	
	drop = 'poop:aquablock', groups = {cracky=3, stone=1},
})
minetest.register_node("poop:glass", {
	description = "Glass",
	tiles = {"glass.png"},
	
	drop = 'poop:glass', groups = {cracky=3, stone=1},
})
minetest.register_node("poop:Poop2", {
	description = "Poop with more density", 
	tiles = {"sraka.png"},
	
	drop = 'poop:Poop', groups = {cracky=3, stone=1},
})

minetest.register_node("poop:flux_capacitor", {
	description = "Flux Capacitor from Back to the Future",
	tiles = {"fluxcap2.png", "fluxcap2.png","fluxcap2.png","fluxcap.png","fluxcap2.png","fluxcap2.png"},
	
	drop = 'poop:Poop', groups = {cracky=3, stone=1},
})
minetest.register_alias("mapgen_stone", "poop:floor")

local pooped_things = 0

minetest.register_craftitem("poop:plumba", {
	description = "Plumba",
	inventory_image = "plumba.png",
	on_use = function(itemstack, user, pointed_thing)
		-- check if pointing at a node
		if pointed_thing.type ~= "node" then
			return
		end
		if pooped_things >= 100 then
			is_game_finished = true

			return
		end
		-- get node at pointed thing position
		local node = minetest.get_node(pointed_thing.under)
		-- check if node is poop
		if node.name == "poop:Poop" then
			minetest.remove_node(pointed_thing.under)
			minetest.add_node(pointed_thing.under, {name="poop:box"})			
			minetest.chat_send_player(user:get_player_name(), "You packed "..pooped_things.." shits!")
			pooped_things = pooped_things + 1
			destruction_counter.nodesDestroyed = pooped_things
			destruction_counter.updateCounter(user)
			pakuj_guwno()
			return itemstack
		else if node.name == "poop:Poop2" then
			minetest.remove_node(pointed_thing.under)
			minetest.add_node(pointed_thing.under, {name="poop:box"})
			minetest.chat_send_player(user:get_player_name(), "You packed "..pooped_things.." shits!")
			pakuj_guwno()
			pooped_things = pooped_things + 1
			destruction_counter.nodesDestroyed = pooped_things
			destruction_counter.updateCounter(user)
			return itemstack
		end

		end
		end
	})


minetest.register_craftitem("poop:pooper", {
	description = "Pooper",
	inventory_image = "SHITitem.png",
	on_use = function(itemstack, user, pointed_thing)
		-- check if pointing at a node
		if pointed_thing.type ~= "node" then
			return
		end
		-- make a random number between 1 and 10
		local random_number = math.random(1, 10)
		if random_number < 5 then
			local node = minetest.get_node(pointed_thing.above)
			if node.name == "air" then
				minetest.add_node(pointed_thing.above, {name="poop:Poop"})
			else
				minetest.add_node(pointed_thing.under, {name="poop:Poop"})
			end
		else 
			local node = minetest.get_node(pointed_thing.above)
			if node.name == "air" then
				minetest.add_node(pointed_thing.above, {name="poop:Poop2"})
			else
				minetest.add_node(pointed_thing.under, {name="poop:Poop2"})
			end
		end
		sraj_dzwiek()
		return itemstack
	end,
})

minetest.register_on_joinplayer(function(player) 
	player:get_inventory():set_list("main", {})

	player:setpos({x=0, y=10, z=0})
	-- set time to day
	minetest.set_timeofday(0.5)
	minetest.sound_play("pooping_together", {
		gain = 1, 
		pitch = 1,
		loop = true,
	})
	player:get_inventory():add_item("main", "poop:plumba")
	player:get_inventory():add_item("main", "poop:pooper")

	begining()
end)