From b46097f735bf121f7aa4b7d6f49d7b7488d3c2a1 Mon Sep 17 00:00:00 2001 From: En Yi Date: Sat, 25 Jan 2025 17:00:32 +0800 Subject: [PATCH] Update preview rendering --- res/level_render.py | 10 +++++++--- res/pack_ldtk.sh | 6 +++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/res/level_render.py b/res/level_render.py index 38defeb..ac278f7 100644 --- a/res/level_render.py +++ b/res/level_render.py @@ -47,9 +47,10 @@ ENUMIDS_TILETYPE_MAPPING = { DANGER_COLOUR = (239,79,81,255) WCRATE_COLOUR = (160,117,48,255) MCRATE_COLOUR = (110,110,110,255) -WATER_COLOUR = (0,0,110,128) +WATER_COLOUR = (0,0,128,64) REC_DRAW_FUNCTION = lambda ctx,x,y,s,c : ctx.rectangle(((x,y), (x+s-1, y+s-1)), c) +RECLINE_DRAW_FUNCTION = lambda ctx,x,y,s,c : ctx.rectangle(((x,y), (x+s-1, y+s-1)), fill=None, outline=c) UPHALFREC_DRAW_FUNCTION = lambda ctx,x,y,s,c : ctx.rectangle(((x,y), (x+s-1, y+s//2-1)), c) DOWNHALFREC_DRAW_FUNCTION = lambda ctx,x,y,s,c : ctx.rectangle(((x, y+s//2), (x+s-1,y+s-1)), c) LEFTHALFREC_DRAW_FUNCTION = lambda ctx,x,y,s,c : ctx.rectangle(((x,y), (x+s//2-1, y+s-1)), c) @@ -82,7 +83,7 @@ def draw_urchin_tile(ctx, x, y, s, c): TILETYPE_SHAPE_MAP = { 'Solid': (REC_DRAW_FUNCTION, (0,0,0,255)), 'WoodenPlat': (UPHALFREC_DRAW_FUNCTION, (128,64,0,255)), - 'Ladder': (REC_DRAW_FUNCTION, (214,141,64,255)), + 'Ladder': (RECLINE_DRAW_FUNCTION, (214,141,64,255)), 'LSpike': (LEFTHALFREC_DRAW_FUNCTION, DANGER_COLOUR), 'RSpike': (RIGHTHALFREC_DRAW_FUNCTION, DANGER_COLOUR), 'USpike': (UPHALFREC_DRAW_FUNCTION, DANGER_COLOUR), @@ -165,7 +166,9 @@ FULL_IMG_HEIGHT = N_ROWS * IMG_HEIGHT # Then loop the levels. Read the layerIndstances lvl_render = Image.new("RGBA", (FULL_IMG_WIDTH, FULL_IMG_HEIGHT), (255,255,255,0)) +water_render = Image.new("RGBA", (FULL_IMG_WIDTH, FULL_IMG_HEIGHT), (255,255,255,0)) render_ctx = ImageDraw.Draw(lvl_render) +water_render_ctx = ImageDraw.Draw(water_render) for l, level in enumerate(all_levels): lx = (l % LEVELS_PER_ROW) * IMG_WIDTH ly = (l // LEVELS_PER_ROW) * IMG_HEIGHT @@ -247,7 +250,8 @@ for l, level in enumerate(all_levels): continue x, y = (i % width * TILE_SIZE + OFFSET[0], i // width * TILE_SIZE + OFFSET[1]) height = TILE_SIZE * water_level / 4 - render_ctx.rectangle(((x,y+TILE_SIZE-height), (x+TILE_SIZE-1, y+TILE_SIZE-1)), WATER_COLOUR) + water_render_ctx.rectangle(((x,y+TILE_SIZE-height), (x+TILE_SIZE-1, y+TILE_SIZE-1)), WATER_COLOUR) +lvl_render = Image.alpha_composite(lvl_render, water_render) lvl_render.save("preview.png") lvl_render.show() diff --git a/res/pack_ldtk.sh b/res/pack_ldtk.sh index 13255b5..e8b78a5 100755 --- a/res/pack_ldtk.sh +++ b/res/pack_ldtk.sh @@ -1,3 +1,3 @@ -#!/bin/sh - -python ldtk_repacker.py $1.ldtk && zstd $1.lvldata +#!/bin/bash +source venv/bin/activate +python ldtk_repacker.py $1.ldtk && zstd $1.lvldata && python level_render.py $1.ldtk