{-# LANGUAGE RecordWildCards #-} {-# LANGUAGE OverloadedStrings #-} -------------------------------------------------------------------------- -- | -- Module: Game.Waddle -- Copyright: (c) 2015 Martin Grabmueller -- License: BSD3 -- -- Maintainer: martin@grabmueller.de -- Stability: provisional -- Portability: portable -- -- Waddle is a library of WAD file utilities. -- -- This is a convenience module which re-exports the modules which are -- essential for using Waddle. ---------------------------------------------------------------------------- module Game.Waddle (module Game.Waddle.Types, module Game.Waddle.Load, module Game.Waddle.ExportJS, mergeWads ) where import Game.Waddle.Types import Game.Waddle.Load import Game.Waddle.ExportJS import qualified Data.Map as Map -- FIXME: This is not correct yet. We have to figure out how to -- properly merge WAD files. -- mergeWads :: [Wad] -> Wad mergeWads wads = foldl1 mrg wads where mrg wad1 wad2 = Wad { wadHeader = wadHeader wad2, wadDirectory = wadDirectory wad1 ++ wadDirectory wad2, wadLumps = wadLumps wad1 ++ wadLumps wad2, -- Later WADs override earlier ones. wadLumpLookup = Map.union (wadLumpLookup wad2) (wadLumpLookup wad1), wadFlats = Map.union (wadFlats wad2) (wadFlats wad1), wadSprites = Map.union (wadSprites wad2) (wadSprites wad1), wadPatches = wadPatches wad2, wadTextures = Map.union (wadTextures wad2) (wadTextures wad1), wadLevels = Map.union (wadLevels wad2) (wadLevels wad1), wadPNames = wadPNames wad2, wadColormap = wadColormap wad2, wadPalettes = wadPalettes wad2 }