local module = {}
local random = math.random

local texturePaths = {
	aquatic0 = "assets/Characters/Aquatic0.png",
	aquatic1 = "assets/Characters/Aquatic1.png",
	avian0 = "assets/Characters/Avian0.png",
	avian1 = "assets/Characters/Avian1.png",
	cat0 = "assets/Characters/Cat0.png",
	cat1 = "assets/Characters/Cat1.png",
	demon0 = "assets/Characters/Demon0.png",
	demon1 = "assets/Characters/Demon1.png",
	dog0 = "assets/Characters/Dog0.png",
	dog1 = "assets/Characters/Dog1.png",
	elemental0 = "assets/Characters/Elemental0.png",
	elemental1 = "assets/Characters/Elemental1.png",
	humanoid0 = "assets/Characters/Humanoid0.png",
	humanoid1 = "assets/Characters/Humanoid1.png",
	misc0 = "assets/Characters/Misc0.png",
	misc1 = "assets/Characters/Misc1.png",
	pest0 = "assets/Characters/Pest0.png",
	pest1 = "assets/Characters/Pest1.png",
	pant0 = "assets/Characters/Plant0.png",
	plant1 = "assets/Characters/Plant1.png",
	player0 = "assets/Characters/Player0.png",
	player1 = "assets/Characters/Player1.png",
	quadroped0 = "assets/Characters/Quadraped0.png",
	quadroped1 = "assets/Characters/Quadraped1.png",
	reptile0 = "assets/Characters/Reptile0.png",
	reptile1 = "assets/Characters/Reptile1.png",
	rodent0 = "assets/Characters/Rodent0.png",
	rodent1 = "assets/Characters/Rodent1.png",
	slime0 = "assets/Characters/Slime0.png",
	slime1 = "assets/Characters/Slime1.png",
	undead0 = "assets/Characters/Undead0.png",
	undead1 = "assets/Characters/Undead1.png",
}


local state = {
	passive = 0,
	agressive = 1,
	scared = 2,
}

local enemies = {

	-- PESTS
	{ texturePaths.pest0, texturePaths.pest1,   0, 0, "Beetle" },
	{ texturePaths.pest0, texturePaths.pest1,  16, 0, "Beetle" },
	{ texturePaths.pest0, texturePaths.pest1,  32, 0, "Beetle" },
	{ texturePaths.pest0, texturePaths.pest1,  48, 0, "Beetle" },
	{ texturePaths.pest0, texturePaths.pest1,  64, 0, "Large Grub" },
	{ texturePaths.pest0, texturePaths.pest1,  80, 0, "Small Grub" },
	{ texturePaths.pest0, texturePaths.pest1,  96, 0, "Slim Worm" },
	{ texturePaths.pest0, texturePaths.pest1, 112, 0, "Fat Worm" },

	--{ texturePaths.pest0, texturePaths.pest1,  0, 16, "Female Dragonfly" },
	{ texturePaths.pest0, texturePaths.pest1, 16, 16, "Fly" },
	{ texturePaths.pest0, texturePaths.pest1, 32, 16, "Larva" },
	{ texturePaths.pest0, texturePaths.pest1, 48, 16, "Moth" },
	--{ texturePaths.pest0, texturePaths.pest1, 64, 16 },
	{ texturePaths.pest0, texturePaths.pest1, 80, 16, "Gnat" },

	{ texturePaths.pest0, texturePaths.pest1,  0, 32, "Small Spider" },
	{ texturePaths.pest0, texturePaths.pest1, 16, 32, "Medium Spider" },
	{ texturePaths.pest0, texturePaths.pest1, 32, 32, "Large Spider" },
	{ texturePaths.pest0, texturePaths.pest1, 48, 32, "Small Scorpion" },
	{ texturePaths.pest0, texturePaths.pest1, 64, 32, "Medium Scorpion" },
	{ texturePaths.pest0, texturePaths.pest1, 80, 32, "Large Scorpion" },

	{ texturePaths.pest0, texturePaths.pest1,  0, 48, "Slug" },
	{ texturePaths.pest0, texturePaths.pest1, 16, 48, "Large Slug" },
	--{ texturePaths.pest0, texturePaths.pest1, 32, 48 },
	{ texturePaths.pest0, texturePaths.pest1, 48, 48, "Red Slug" },
	{ texturePaths.pest0, texturePaths.pest1, 64, 48, "Large Red Slug" },

	{ texturePaths.pest0, texturePaths.pest1,  0, 64, "Giant Brown Ant" },
	{ texturePaths.pest0, texturePaths.pest1, 16, 64, "Giant Black Ant" },
	{ texturePaths.pest0, texturePaths.pest1, 32, 64, "Giant Gold Ant" },
	{ texturePaths.pest0, texturePaths.pest1, 48, 64, "Giant Silver Ant" },

	--{ texturePaths.pest0, texturePaths.pest1,  0, 80 },
	--{ texturePaths.pest0, texturePaths.pest1, 16, 80 },
	--{ texturePaths.pest0, texturePaths.pest1, 32, 80 },
	--{ texturePaths.pest0, texturePaths.pest1, 48, 80 },

	--{ texturePaths.pest0, texturePaths.pest1,  0, 96 },
	--{ texturePaths.pest0, texturePaths.pest1, 16, 96 },
	--{ texturePaths.pest0, texturePaths.pest1, 32, 96 },

	--{ texturePaths.pest0, texturePaths.pest1,  0, 112 },
	--{ texturePaths.pest0, texturePaths.pest1, 16, 112 },
	--{ texturePaths.pest0, texturePaths.pest1, 32, 112 },
	--{ texturePaths.pest0, texturePaths.pest1, 48, 112 },

	-- UNDEAD
	--{ texturePaths.undead0, texturePaths.undead1,   0,  0, "", state.passive, state.agressive };
	--{ texturePaths.undead0, texturePaths.undead1,  16,  0, "", state.passive, state.agressive };
	--{ texturePaths.undead0, texturePaths.undead1,  32,  0, "", state.passive, state.agressive };
	--{ texturePaths.undead0, texturePaths.undead1,  48,  0, "", state.passive, state.agressive };
	--{ texturePaths.undead0, texturePaths.undead1,  64,  0, "", state.passive, state.agressive };
	--{ texturePaths.undead0, texturePaths.undead1,  80,  0, "", state.passive, state.agressive };
	--{ texturePaths.undead0, texturePaths.undead1,  96,  0, "", state.passive, state.agressive };
	--{ texturePaths.undead0, texturePaths.undead1, 112,  0, "", state.passive, state.agressive };

	--{ texturePaths.undead0, texturePaths.undead1,   0, 16, "", state.passive, state.agressive };
	--{ texturePaths.undead0, texturePaths.undead1,  16, 16, "", state.passive, state.agressive };
	--{ texturePaths.undead0, texturePaths.undead1,  32, 16, "", state.passive, state.agressive };
	--{ texturePaths.undead0, texturePaths.undead1,  48, 16, "", state.passive, state.agressive };
	--{ texturePaths.undead0, texturePaths.undead1,  64, 16, "", state.passive, state.agressive };
	--{ texturePaths.undead0, texturePaths.undead1,  80, 16, "", state.passive, state.agressive };
	--{ texturePaths.undead0, texturePaths.undead1,  96, 16, "", state.passive, state.agressive };
	--{ texturePaths.undead0, texturePaths.undead1, 112, 16, "", state.passive, state.agressive };

	{ texturePaths.undead0, texturePaths.undead1,   0, 32, "Skeleton", state.passive, state.agressive };
	{ texturePaths.undead0, texturePaths.undead1,  16, 32, "Umber Skeleton", state.passive, state.agressive };
	{ texturePaths.undead0, texturePaths.undead1,  32, 32, "Caustic Skeleton", state.passive, state.agressive };
	{ texturePaths.undead0, texturePaths.undead1,  48, 32, "Black Skeleton", state.passive, state.agressive };
	--{ texturePaths.undead0, texturePaths.undead1,  64, 32, "", state.passive, state.agressive };
	--{ texturePaths.undead0, texturePaths.undead1,  80, 32, "", state.passive, state.agressive };
	--{ texturePaths.undead0, texturePaths.undead1,  96, 32, "", state.passive, state.agressive };
	--{ texturePaths.undead0, texturePaths.undead1, 112, 32, "", state.passive, state.scared };
}

local function repack(data)
	return {
		texturePath1 	= data[1],
		texturePath2 	= data[2],
		clipX			= data[3],
		clipY			= data[4],
		label			= data[5] or "",
		nstate			= data[6] or state.passive,
		cstate			= data[7] or state.scared,
	}
end

function module.add_monster_to_room(map, roomx, roomy)
	local count = random(3)
	for i=0,count do
		local x = (roomx * 512) + (random(13) + 1) * 32
		local y = (roomy * 384) + (random(9) + 1) * 32
		add_monster(map, x, y, repack(enemies[random(#enemies)]));
	end
end

return module