tools/hwmap2lua.sh
author Pekka Ristola <pekkarr@protonmail.com>
Mon, 27 Jan 2025 19:08:05 +0100
changeset 16067 dbdb98dafd80
parent 13064 6766b900ab13
permissions -rwxr-xr-x
Add support for ffmpeg 6.0 - Use the new send_frame/receive_packet API for encoding - Use the new channel layout API for audio - Fix audio recording - Copy codec parameters to the stream parameters - Set correct pts for audio frames - Read audio samples from file directly to the refcounted AVFrame buffer instead of the `g_pSamples` buffer - Use global AVPackets allocated with `av_packet_alloc` - Stop trying to write more audio frames when `WriteAudioFrame` fails with a negative error code - Fix segfault with `g_pContainer->url`. The field has to be allocated with `av_malloc` before writing to it. It's set to `NULL` by default. - Properly free allocations with `avcodec_free_context` and `avformat_free_context`

#!/bin/sh -
# === HWMAP-to-Lua converter ===
# This script allows you to put arbitrary HWMAPs into your missions!
#
# Usage:
# It expects a .hwmap file of name "map.hwmap" to be in
# its directory and creates a Lua file (map.lua) containing code to
# draw the map.
# In Lua, call drawMap() in onGameInit. And don't forget
# to set MapGen to mgDrawn. Then your map should be ready to go! :-)

# FILE NAMES 
IN="./map.hwmap";
OUT="./map.lua";

# TEMPORARY FILES
TEMP_UNBASE=$(mktemp);
TEMP_GZIP=$(mktemp);
TEMP_OCTETS=$(mktemp);
base64 -d $IN | tail -c +7 | head -c -4 > $TEMP_UNBASE;
echo -ne "\x1f\x8b\x08\0\0\0\0\0\x02\xff" > $TEMP_GZIP;
# Suppress gunzip warning: "gzip: stdin: unexpected end of file"
cat $TEMP_GZIP $TEMP_UNBASE | gunzip 2> /dev/null > $TEMP_OCTETS;
C=0;
echo -n '-- Map definition automatically converted from HWMAP file by hwmap2lua.sh
local map = {' > $OUT;
od -w240 -t u1 $TEMP_OCTETS | grep -Ev "^[0-9]*[[:space:]]*$" | while read f;
do C=$((C+1));
	if ((C!=1));
	then
		echo "," >> $OUT;
	fi;
	echo -n $f | sed "s/^......./'/;s/  */\\\\/g;s/$/'/" >> $OUT;
done;
echo '}

local function drawMap()
	for m=1, #map do
		ParseCommand("draw "..map[m])
	end
end' >> $OUT;
rm $TEMP_UNBASE $TEMP_GZIP $TEMP_OCTETS;