Giter Club home page Giter Club logo

quake-cli-tools's People

Contributors

alexkiri avatar dependabot[bot] avatar joshuaskelly avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

quake-cli-tools's Issues

Trying to install using msys2 on win 10, got an error.

$ 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.

Chore request: Rename the existing image/sprite tools

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? 🚀

wad packing error on PNG with transparency

When trying to add PNG images with transparency/transparent pixels (e.g., Action) 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

qmount QOL changes

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.

Feature request: Quake II-compatible for bsp2svg, etc

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!

Feature Request - sprite sheets in image2spr

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.

Feature Request - bsp2png

Either new executable or extension to bsp2svg to allow for output to a png instead of svg.

Input commandline params:

  • width (default 4096)
  • height (default 4096)
  • linewidth (default 1 (in pixels))
  • linecolor (default 0 0 0 1(black))
  • bgcolor (default 1 1 1 1(white))
  • xray # (default 0, number of overlapping faces to see through and include lines from, -1 for full wireframe output)

bsp2svg fails on id pak1's e2m3

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.

Chore request: Documentation platform

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:

  • explain in detail how to use your tools, as the collection is going probably to grow up
  • improve the exposure of this project on the Internet (SEO)

I can take care of that and create a proof of concept if you are interested, a very simple one.

Feature Request: Add all files to wad in given directory

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.

Chore request: Add Black as source code formatter

Hey Joshua! 🌟

I've got a cool suggestion to make the coding life a bit easier. How about bringing Black into this project?

Why Black?

  • Consistent style: It's like having an auto-stylist for the code, making everything look clean and uniform.
  • Focus on what matters: Less time on formatting, more on coding the cool stuff.
  • Speedy reviews: Code reviews become a breeze when we're not nitpicking on style.
  • Easy-peasy setup: Integrates smoothly with tools we already use.

Plan of action

  1. Add Black to the toolbelt.
  2. Give the code a one-time style makeover.

Would love to hear your thoughts on this!

Bug: Files added with wad do not replace

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

Windows PowerShell pak files paths are mangled

Using Windows PowerShell pak app, creates wrong path structure resulting in quake games not being able to find certain resources like gfx/pop.lmp which are required to run the registered version of Quake. Added screenshot for comparison with correct (right side) pak file generated from same folder.
2020-07-15 17_28_13-PakScape

Fullbright control for wad tool

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)

Feature Request: Add non-image files to wad

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.