joshuaskelly / quake-cli-tools Goto Github PK
View Code? Open in Web Editor NEWCommand line tools for creating Quake content.
License: MIT License
Command line tools for creating Quake content.
License: MIT License
$ pip install quake-cli-tools
Collecting quake-cli-tools
Downloading quake-cli-tools-1.2.1.tar.gz (14 kB)
Collecting Pillow>=6.2.0
Downloading Pillow-7.1.2.tar.gz (38.9 MB)
|████████████████████████████████| 38.9 MB 8.1 MB/s
Collecting progress>=1.5
Downloading progress-1.5.tar.gz (5.8 kB)
Collecting vgio>=1.1.2
Downloading vgio-1.1.2.tar.gz (71 kB)
|████████████████████████████████| 71 kB 3.8 MB/s
Collecting svgwrite>=1.3.1
Downloading svgwrite-1.4-py3-none-any.whl (66 kB)
|████████████████████████████████| 66 kB 3.0 MB/s
Collecting tabulate>=0.8.3
Downloading tabulate-0.8.7-py3-none-any.whl (24 kB)
Collecting watchdog>=0.9.0
Downloading watchdog-0.10.2.tar.gz (95 kB)
|████████████████████████████████| 95 kB 2.8 MB/s
Collecting pathtools>=0.1.1
Downloading pathtools-0.1.2.tar.gz (11 kB)
Using legacy setup.py install for quake-cli-tools, since package 'wheel' is not installed.
Using legacy setup.py install for Pillow, since package 'wheel' is not installed.
Using legacy setup.py install for progress, since package 'wheel' is not installed.
Using legacy setup.py install for vgio, since package 'wheel' is not installed.
Using legacy setup.py install for watchdog, since package 'wheel' is not installed.
Using legacy setup.py install for pathtools, since package 'wheel' is not installed.
Installing collected packages: Pillow, progress, vgio, svgwrite, tabulate, pathtools, watchdog, quake-cli-tools
Running setup.py install for Pillow ... error
ERROR: Command errored out with exit status 1:
command: /usr/bin/python3.exe -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-fgmnhfy9/Pillow/setup.py'"'"'; __file__='"'"'/tmp/pip-install-fgmnhfy9/Pillow/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-v48y6w40/install-record.txt --single-version-externally-managed --compile --install-headers /usr/include/python3.8/Pillow
cwd: /tmp/pip-install-fgmnhfy9/Pillow/
Complete output (174 lines):
running install
running build
running build_py
creating build
creating build/lib.msys-3.1.4-x86_64-3.8
creating build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/BdfFontFile.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/BlpImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/BmpImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/BufrStubImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/ContainerIO.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/CurImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/DcxImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/DdsImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/EpsImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/ExifTags.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/features.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/FitsStubImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/FliImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/FontFile.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/FpxImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/FtexImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/GbrImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/GdImageFile.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/GifImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/GimpGradientFile.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/GimpPaletteFile.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/GribStubImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/Hdf5StubImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/IcnsImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/IcoImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/Image.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/ImageChops.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/ImageCms.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/ImageColor.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/ImageDraw.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/ImageDraw2.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/ImageEnhance.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/ImageFile.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/ImageFilter.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/ImageFont.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/ImageGrab.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/ImageMath.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/ImageMode.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/ImageMorph.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/ImageOps.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/ImagePalette.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/ImagePath.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/ImageQt.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/ImageSequence.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/ImageShow.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/ImageStat.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/ImageTk.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/ImageTransform.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/ImageWin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/ImImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/ImtImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/IptcImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/Jpeg2KImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/JpegImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/JpegPresets.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/McIdasImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/MicImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/MpegImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/MpoImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/MspImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/PaletteFile.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/PalmImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/PcdImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/PcfFontFile.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/PcxImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/PdfImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/PdfParser.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/PixarImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/PngImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/PpmImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/PsdImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/PSDraw.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/PyAccess.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/SgiImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/SpiderImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/SunImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/TarIO.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/TgaImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/TiffImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/TiffTags.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/WalImageFile.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/WebPImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/WmfImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/XbmImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/XpmImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/XVThumbImagePlugin.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/_binary.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/_tkinter_finder.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/_util.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/_version.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/__init__.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
copying src/PIL/__main__.py -> build/lib.msys-3.1.4-x86_64-3.8/PIL
running egg_info
writing src/Pillow.egg-info/PKG-INFO
writing dependency_links to src/Pillow.egg-info/dependency_links.txt
writing top-level names to src/Pillow.egg-info/top_level.txt
reading manifest file 'src/Pillow.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
warning: no files found matching '*.c'
warning: no files found matching '*.h'
warning: no files found matching '*.sh'
warning: no previously-included files found matching '.appveyor.yml'
warning: no previously-included files found matching '.coveragerc'
warning: no previously-included files found matching '.editorconfig'
warning: no previously-included files found matching '.readthedocs.yml'
warning: no previously-included files found matching 'azure-pipelines.yml'
warning: no previously-included files found matching 'codecov.yml'
warning: no previously-included files matching '.git*' found anywhere in distribution
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no previously-included files matching '*.so' found anywhere in distribution
no previously-included directories found matching '.azure-pipelines'
no previously-included directories found matching '.ci'
writing manifest file 'src/Pillow.egg-info/SOURCES.txt'
running build_ext
The headers or library files could not be found for zlib,
a required dependency when compiling Pillow from source.
Please see the install instructions at:
https://pillow.readthedocs.io/en/latest/installation.html
Traceback (most recent call last):
File "/tmp/pip-install-fgmnhfy9/Pillow/setup.py", line 860, in <module>
setup(
File "/usr/lib/python3.8/site-packages/setuptools/__init__.py", line 144, in setup
return distutils.core.setup(**attrs)
File "/usr/lib/python3.8/distutils/core.py", line 148, in setup
dist.run_commands()
File "/usr/lib/python3.8/distutils/dist.py", line 966, in run_commands
self.run_command(cmd)
File "/usr/lib/python3.8/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/usr/lib/python3.8/site-packages/setuptools/command/install.py", line 61, in run
return orig.install.run(self)
File "/usr/lib/python3.8/distutils/command/install.py", line 545, in run
self.run_command('build')
File "/usr/lib/python3.8/distutils/cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "/usr/lib/python3.8/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/usr/lib/python3.8/distutils/command/build.py", line 135, in run
self.run_command(cmd_name)
File "/usr/lib/python3.8/distutils/cmd.py", line 313, in run_command
self.distribution.run_command(command)
File "/usr/lib/python3.8/distutils/dist.py", line 985, in run_command
cmd_obj.run()
File "/usr/lib/python3.8/distutils/command/build_ext.py", line 340, in run
self.build_extensions()
File "/tmp/pip-install-fgmnhfy9/Pillow/setup.py", line 694, in build_extensions
raise RequiredDependencyException(f)
__main__.RequiredDependencyException: zlib
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-install-fgmnhfy9/Pillow/setup.py", line 914, in <module>
raise RequiredDependencyException(msg)
__main__.RequiredDependencyException:
The headers or library files could not be found for zlib,
a required dependency when compiling Pillow from source.
Please see the install instructions at:
https://pillow.readthedocs.io/en/latest/installation.html
----------------------------------------
ERROR: Command errored out with exit status 1: /usr/bin/python3.exe -u -c 'import sys, setuptools, tokenize; sys.argv[0] = '"'"'/tmp/pip-install-fgmnhfy9/Pillow/setup.py'"'"'; __file__='"'"'/tmp/pip-install-fgmnhfy9/Pillow/setup.py'"'"';f=getattr(tokenize, '"'"'open'"'"', open)(__file__);code=f.read().replace('"'"'\r\n'"'"', '"'"'\n'"'"');f.close();exec(compile(code, __file__, '"'"'exec'"'"'))' install --record /tmp/pip-record-v48y6w40/install-record.txt --single-version-externally-managed --compile --install-headers /usr/include/python3.8/Pillow Check the logs for full command output.
Hi Joshua! 👋
I've been looking into our tool names and thought of a more accurate naming scheme:
image2spr
to gif2spr
spr2image
to spr2gif
Both tools currently work exclusively with GIF files. Adopting these names would reflect their actual functionality and help us establish a clearer naming convention across our toolkit. Sounds like a win-win, right? 🚀
When trying to add PNG images with transparency/transparent pixels (e.g., ) I get a packing error:
$ wad ../afterglow.wad $(ls *.png)
Archive: afterglow.wad
adding: 01TEX078.png
adding: 04TEX008.png
adding: 04TEX009.png
adding: 05TEX004.png
adding: 10TEX002.png
adding: 10TEX005.png
adding: 10TEX007.png
adding: 10TEX017.png
adding: 12TEX038.png
adding: 12TEX039.png
adding: 12TEX040.png
adding: 12TEX042.png
adding: ACON11.png
adding: Action.png
wad error: pack expected 836 items for packing (got 821)
usage: wad [-h] [-t {LUMP,QPIC,MIPTEX}] [-q] [-v] file.wad [list ...]
Default action is to add or replace wad file entries from list.
If list is omitted, wad will use stdin.
positional arguments:
file.wad wad file to add entries to
list
options:
-h, --help show this help message and exit
-t {LUMP,QPIC,MIPTEX}
list data type [default: MIPTEX]
-q quiet mode
-v, --version show program's version number and exit
example:
wad tex.wad image.png => adds image.png to tex.wad
$ wad --version
wad version 1.2.1
Hi
I have tested your tool with the bsp maps from the Medal of Honor Allied Assault and he dont recognize him.
This is the screenshot with the error:
https://1drv.ms/u/s!Amcxw-24Aa3rn16QF8oKI2R2gSLF?e=F8h2cv
If you could fix this would be mutch apreciated.
Thanks
digg lumpr out of its grave
Add support for generating an svg from a user specified viewing vector. Should allow for side views, bottom views, etc.
The self-contained format in version 1.0.0 was very convenient for deployment i
Hi there! Thanks for working on these tools, it's a great alternative to the bitrotting Win95 era PAK editors out there. I've made a few changes that are very convenient for my goal of replacing PakExplorer and friends with qmount. I know there haven't been a ton of changes recently, so I didn't do a super thorough job with my changes, however I'm happy to work on improving the PR I made on #24 to polish it up. If there's no interest here, then I'll just continue using it as long as it Works On My Computer :)
Summary of changes:
Use tkinter to pop a file open dialog if a pak isn't specified on the commandline.
Rationale: If you double click on the exe on Windows, and probably Mac, you just get the usual flash of help and the terminal closing. This arguably goes against the spirit of quake-cli-tools, and it's not super necessary it does this, especially if you associate .pak files with qmount, but it's nice to have, and it requires no additional Python deps.
Swap --file-browser
to --no-file-browser
Rationale: If you're using file associations, you won't get an Explorer popup after you double click on a .pak, since it is invoked with qmount.exe file.pak
by Windows. Popping the file browser is more often what I want to do, since if I'm launching it, I probably want to edit it. If I'm invoking it through a script or for whatever non-interactive reason I can specify the switch to suppress this behavior.
Allow pressing Ctrl+S to save file without closing qmount
Rationale: If I'm iterating on files, I don't want to have to keep opening it. This is only implemented for win32 since I"m not sure what the Mac/Linux equivalent is here, I'm using the StackOverflow answer import msvcrt
to detect Ctrl+S. I'm sure there's a good cross platform way to do this. I just didn't do a ton of research.
There is one more bug I've been meaning to fix for my own needs: my Q drive is mounted with a network share by default, so qmount should find an empty drive letter is Q is taken, but I haven't done that yet.
These changes would be enough to allow qmount to be a much more powerful replacement for traditional PAK editing tools, since being on a drive letter allows you to use more powerful filesystem tools for manipulating PAKs than any custom UI could hope to ever implement. I haven't dogfooded these commits much yet to really test them, I just had the itch tonight to improve qmount and will start using it as part of my workflow.
Hello,
I look at the code a bit last night and made some progress but I ran into some issues on retrieving the map bounds, as Quake II's BSP format is different than Quake's. I attempted to use the vgio.quake2
library which got me further, but ultimately had to pause progress on it for now.
Minimally if we could have a Quake II-compatible bsp2svg, I think the Quake II mapping community would love it, as would myself, who is interested in creating heatmaps for map activity hotspots.
Thanks!
Not a rush on this one at all, but might be very cool to have sprite sheet support in the tool. I know a few people use Asperite and I am using Pixel FX Designer. They generate very clean sheets with alpha. Using Quake's index 255 (salmon color) for transparency via GIF limits some of the colors you can use - at least in my workflow. So would be great to move away from GIFs altogether.
Either new executable or extension to bsp2svg to allow for output to a png instead of svg.
Input commandline params:
I extracted the original id maps from the paks and fed them to bsp2svg. Every other map appears to process fine, except e2m3 which gives this error:
File "/usr/bin/bsp2svg", line 11, in <module>
load_entry_point('quake-cli-tools==1.1.0', 'console_scripts', 'bsp2svg')()
File "/usr/lib/python3.8/site-packages/qcli/bsp2svg/cli.py", line 73, in main
converter.convert(args.file, args.dest)
File "/usr/lib/python3.8/site-packages/qcli/bsp2svg/converter.py", line 31, in convert
bsp_file = Bsp.open(bsp_file)
File "/usr/lib/python3.8/site-packages/qcli/bsp2svg/api.py", line 127, in open
models = get_models()
File "/usr/lib/python3.8/site-packages/qcli/bsp2svg/api.py", line 38, in get_models
return [process_model(m) for m in bsp_file.models]
File "/usr/lib/python3.8/site-packages/qcli/bsp2svg/api.py", line 38, in <listcomp>
return [process_model(m) for m in bsp_file.models]
File "/usr/lib/python3.8/site-packages/qcli/bsp2svg/api.py", line 41, in process_model
faces = get_faces(bsp_model)
File "/usr/lib/python3.8/site-packages/qcli/bsp2svg/api.py", line 50, in get_faces
return [process_face(f) for f in face_range]
File "/usr/lib/python3.8/site-packages/qcli/bsp2svg/api.py", line 50, in <listcomp>
return [process_face(f) for f in face_range]
File "/usr/lib/python3.8/site-packages/qcli/bsp2svg/api.py", line 58, in process_face
texture_name = get_texture_name(face_index)
File "/usr/lib/python3.8/site-packages/qcli/bsp2svg/api.py", line 99, in get_texture_name
return miptex.name
AttributeError: 'NoneType' object has no attribute 'name'
I extracted the maps using SLADE, so just in case there's any discrepancy there my e2m3.bsp's md5 sum is 6b179e8cb4b844fbeba242893781dbb6
.
Add drag and drop support for image2spr
as a QoL improvement.
Hey!
What about creating a documentation platform, like ericw-tools
and TrenchBroom
, which have already been done, to explain the purpose of this project and how to use each of the provided tools in detail?
We can use GitHub Pages to host the website and a static website generator based on Markdown files to automatically generate the HTML/CSS files when we push the changes to the master
branch of the current repository.
This will help to:
I can take care of that and create a proof of concept if you are interested, a very simple one.
Currently on windows you must pipe in a list of filenames to wad
for it to add every file contained within a directory. For ease of use being able to specify a directory instead of individual filenames would be preferable.
This could be coupled with an argument to hard-replace an entire wad (deleting all entries before adding new ones). The use-case being maintaining a single folder of textures as a source directory, and using wad
to generate a new wad file after making changes in the directory.
Piping dir /b
into wad should work but currently I have not managed to get it working. If it did it would be possible to achieve this process with rm test.wad && dir /b test/*.png | wad test.wad
, but this is clunky, and relies on test.wad already existing, creating an extra hassle.
Hey Joshua! 🌟
I've got a cool suggestion to make the coding life a bit easier. How about bringing Black into this project?
Would love to hear your thoughts on this!
Steps to reproduce:
> wad test.wad test.png
> wad test.wad test.png
> unwad -l test.wad
Archive: test.wad
Length Type Name
-------- ------ -------
13810 MIPTEX test
13810 MIPTEX test
-------- ------ ------
27620 2 files
It would be really useful to specify whether fullbrights should be used when palettising images when importing into a wad. This would help avoid unintentional fullbright pixels on textures when compiling wads (instead of having to ensure fullbrights don't exist in the images in the first place)
Currently the wad
tool fails when attempting to add non-image files to a wad. The ability to do so would help with modifying the gfx.wad, for creating mods.
This could be enabled with an argument, maintaining the default behaviour of throwing an error with non-image files.
Quake path may contain characters that are invalid path characters on Windows. For example liquid miptextures are denoted by the *
prefix. E.g. *teleport
*slime
*
- liquid+
- animated-
/
{
- alpha maskedA declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.