mirror of
https://github.com/Steffo99/flyingsnake.git
synced 2024-12-22 06:34:18 +00:00
Allow a better layer selection
This commit is contained in:
parent
9b8be6c812
commit
8cb0f522db
3 changed files with 68 additions and 13 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -5,3 +5,4 @@ settings.xml
|
|||
dist/
|
||||
**/__pycache__/
|
||||
setup/
|
||||
sample_world/
|
10
README.md
10
README.md
|
@ -41,7 +41,7 @@ In order, those are:
|
|||
|
||||
The background layer is made by coloring the Overworld, the Underground and the Caverns their respective background color.
|
||||
|
||||
It can be turned off with the `--no-background` flag.
|
||||
It can be selected with the `--background` flag, or turned off with the `--no-background` flag.
|
||||
|
||||
![The background layer](https://i.imgur.com/69qRLZX.png)
|
||||
|
||||
|
@ -49,7 +49,7 @@ It can be turned off with the `--no-background` flag.
|
|||
|
||||
The walls layer contains the colors of the walls present in the world.
|
||||
|
||||
It can be turned off with the `--no-walls` flag.
|
||||
It can be selected with the `--walls` flag, or turned off with the `--no-walls` flag.
|
||||
|
||||
![The wall layer](https://i.imgur.com/Grkq5PQ.png)
|
||||
|
||||
|
@ -57,7 +57,7 @@ It can be turned off with the `--no-walls` flag.
|
|||
|
||||
The liquids layer contains the colors of the liquids present in the world (water, lava, honey...)
|
||||
|
||||
It can be turned off with the `--no-liquids` flag.
|
||||
It can be selected with the `--liquids` flag, or turned off with the `--no-liquids` flag.
|
||||
|
||||
![The liquids layer](https://i.imgur.com/Pifjb4D.png)
|
||||
|
||||
|
@ -65,7 +65,7 @@ It can be turned off with the `--no-liquids` flag.
|
|||
|
||||
The blocks layer contains the colors of the blocks present in the world.
|
||||
|
||||
It can be turned off with the `--no-blocks` flag.
|
||||
It can be selected with the `--blocks` flag, or turned off with the `--no-blocks` flag.
|
||||
|
||||
![The blocks layer](https://i.imgur.com/E05kgOA.png)
|
||||
|
||||
|
@ -73,7 +73,7 @@ It can be turned off with the `--no-blocks` flag.
|
|||
|
||||
The wires layer is a semi-transparent overlay of the wires present in the world.
|
||||
|
||||
It can be turned off with the `--no-wires` flag.
|
||||
It can be selected with the `--wires` flag, or turned off with the `--no-wires` flag.
|
||||
|
||||
![The wires layer](https://i.imgur.com/XDLRCAE.png)
|
||||
|
||||
|
|
|
@ -11,15 +11,15 @@ from .default_colors import DEFAULT_COLORS
|
|||
@c.option("-c", "--colors", "colors_file",
|
||||
help="The json file to get the tile colors from.", type=c.Path(exists=True))
|
||||
@c.option("--background/--no-background", "draw_background",
|
||||
help="Draw the sky/underground/cavern wall beneath the tiles.", default=True)
|
||||
help="Draw the sky/underground/cavern wall beneath the tiles.", default=None)
|
||||
@c.option("--blocks/--no-blocks", "draw_blocks",
|
||||
help="Draw the blocks present in the world.", default=True)
|
||||
help="Draw the blocks present in the world.", default=None)
|
||||
@c.option("--walls/--no-walls", "draw_walls",
|
||||
help="Draw the walls present in the world.", default=True)
|
||||
help="Draw the walls present in the world.", default=None)
|
||||
@c.option("--liquids/--no-liquids", "draw_liquids",
|
||||
help="Draw the liquids present in the world.", default=True)
|
||||
help="Draw the liquids present in the world.", default=None)
|
||||
@c.option("--wires/--no-wires", "draw_wires",
|
||||
help="Draw the liquids present in the world.", default=True)
|
||||
help="Draw the liquids present in the world.", default=None)
|
||||
def flyingsnake(input_file: str,
|
||||
output_file: str,
|
||||
colors_file: str,
|
||||
|
@ -28,12 +28,66 @@ def flyingsnake(input_file: str,
|
|||
draw_walls: bool,
|
||||
draw_liquids: bool,
|
||||
draw_wires: bool):
|
||||
# If at least a draw flag is set to True, default everything else to False
|
||||
if draw_background is True \
|
||||
or draw_blocks is True \
|
||||
or draw_walls is True \
|
||||
or draw_liquids is True \
|
||||
or draw_wires is True:
|
||||
draw_background = False if (draw_background is None or draw_background is False) else True
|
||||
draw_blocks = False if (draw_blocks is None or draw_blocks is False) else True
|
||||
draw_walls = False if (draw_walls is None or draw_walls is False) else True
|
||||
draw_liquids = False if (draw_liquids is None or draw_liquids is False) else True
|
||||
draw_wires = False if (draw_wires is None or draw_wires is False) else True
|
||||
|
||||
# If at least a draw flag is set to False, default everything else to True
|
||||
if draw_background is False \
|
||||
or draw_blocks is False \
|
||||
or draw_walls is False \
|
||||
or draw_liquids is False \
|
||||
or draw_wires is False:
|
||||
draw_background = True if (draw_background is None or draw_background is True) else False
|
||||
draw_blocks = True if (draw_blocks is None or draw_blocks is True) else False
|
||||
draw_walls = True if (draw_walls is None or draw_walls is True) else False
|
||||
draw_liquids = True if (draw_liquids is None or draw_liquids is True) else False
|
||||
draw_wires = True if (draw_wires is None or draw_wires is True) else False
|
||||
|
||||
# If no flags are set, draw everything
|
||||
if draw_background is None \
|
||||
and draw_blocks is None \
|
||||
and draw_walls is None \
|
||||
and draw_liquids is None \
|
||||
and draw_wires is None:
|
||||
draw_background = True
|
||||
draw_blocks = True
|
||||
draw_walls = True
|
||||
draw_liquids = True
|
||||
draw_wires = True
|
||||
|
||||
# If all layers are disabled, raise an Error
|
||||
if draw_background is False \
|
||||
and draw_blocks is False \
|
||||
and draw_walls is False \
|
||||
and draw_liquids is False \
|
||||
and draw_wires is False:
|
||||
raise c.ClickException("All layers are disabled, nothing to render")
|
||||
|
||||
c.echo(f"Draw background layer: {draw_background}")
|
||||
c.echo(f"Draw blocks layer: {draw_blocks}")
|
||||
c.echo(f"Draw walls layer: {draw_walls}")
|
||||
c.echo(f"Draw liquids layer: {draw_liquids}")
|
||||
c.echo(f"Draw wires layer: {draw_wires}")
|
||||
if colors_file:
|
||||
c.echo(f"Colors: from {colors_file}")
|
||||
else:
|
||||
c.echo("Colors: TEdit defaults")
|
||||
c.echo("")
|
||||
|
||||
if colors_file:
|
||||
c.echo("Reading colors...")
|
||||
with open(colors_file) as file:
|
||||
colors = json.load(file)
|
||||
else:
|
||||
c.echo("No colors file specified, using default Terraria colors.")
|
||||
colors = DEFAULT_COLORS
|
||||
|
||||
to_merge = []
|
||||
|
@ -122,12 +176,12 @@ def flyingsnake(input_file: str,
|
|||
del draw
|
||||
to_merge.append(wires)
|
||||
|
||||
c.echo("Merging images...")
|
||||
c.echo("Merging layers...")
|
||||
final = Image.new("RGBA", (world.size.x, world.size.y))
|
||||
while to_merge:
|
||||
final = Image.alpha_composite(final, to_merge.pop(0))
|
||||
|
||||
c.echo("Saving file...")
|
||||
c.echo("Saving image...")
|
||||
final.save(output_file)
|
||||
|
||||
c.echo("Done!")
|
||||
|
|
Loading…
Reference in a new issue