Compare commits

...

2 Commits

Author SHA1 Message Date
b5fdf0cecc Efejty swietlen gwiazdy 2026-10-11 15:51:58 +02:00
dc9f97d1cc Zmiany we wrogach i panelu tubylców 2026-10-11 13:55:20 +02:00
108 changed files with 2230 additions and 131 deletions

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bg7ge8vql2xim"
path="res://.godot/imported/alien_ship.jpg-3d86c9c30f167a7cde62cfdb9e618039.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/Ships/alien_ship.jpg"
dest_files=["res://.godot/imported/alien_ship.jpg-3d86c9c30f167a7cde62cfdb9e618039.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@ -0,0 +1,19 @@
# Alien ships
Source: `assets/Ships/alien_ship.jpg` (40 ships, 8 columns × 5 rows).
`atlas.png` was prepared with the built-in ImageGen editor. Designs are adapted
from the original sheet; ImageGen may redraw small details.
Prompt: Remove the gray checkerboard and replace it with real transparent alpha;
preserve all 40 dark alien ship designs, red/magenta colors, original ordering,
and crisp silhouettes. Arrange exactly 8 columns × 5 rows with isolated craft,
transparent margins, no text, no shadows, no background. Face ships upward.
`extract_sprites.ps1` slices the returned atlas, trims transparent margins,
corrects remaining sideways/downward orientations, and centers each sprite
on a transparent 256 × 256 canvas with a maximum occupied dimension of 224.
Run this PowerShell script to rebuild `alien_01.png` through `alien_40.png`.
The catalog in `scripts/items/alien_ship_catalog.gd` is shared by the level
generator and game. Each system selects one design using its level and seed.
All enemy tiers use that design; elites retain their tint and bosses their size.

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cbnbo1tnmgrk"
path="res://.godot/imported/alien_01.png-be6de3b72a7b92055fe983d28a70ec33.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_01.png"
dest_files=["res://.godot/imported/alien_01.png-be6de3b72a7b92055fe983d28a70ec33.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ch1q50ycs3b88"
path="res://.godot/imported/alien_02.png-573fd544da4230a54f566c218aa2f6bb.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_02.png"
dest_files=["res://.godot/imported/alien_02.png-573fd544da4230a54f566c218aa2f6bb.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ceqwpcdg6ytsr"
path="res://.godot/imported/alien_03.png-fc13080e1eb9cbfcf8bdb637ef3ccc5f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_03.png"
dest_files=["res://.godot/imported/alien_03.png-fc13080e1eb9cbfcf8bdb637ef3ccc5f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dvxw45cc234fq"
path="res://.godot/imported/alien_04.png-08422063a1f190a13aaa53c043a0059b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_04.png"
dest_files=["res://.godot/imported/alien_04.png-08422063a1f190a13aaa53c043a0059b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dbl47chs6h8y7"
path="res://.godot/imported/alien_05.png-e4f794e8c5d408fe110f2bbf7f8482aa.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_05.png"
dest_files=["res://.godot/imported/alien_05.png-e4f794e8c5d408fe110f2bbf7f8482aa.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://mlgwc2cjmlp7"
path="res://.godot/imported/alien_06.png-568a354080e9555010b6e5baa3710174.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_06.png"
dest_files=["res://.godot/imported/alien_06.png-568a354080e9555010b6e5baa3710174.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://chphk2bvyk5v6"
path="res://.godot/imported/alien_07.png-cc4cc84d3c6686a1b65bb0cb98a0ee07.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_07.png"
dest_files=["res://.godot/imported/alien_07.png-cc4cc84d3c6686a1b65bb0cb98a0ee07.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dgeiwljvwg3xo"
path="res://.godot/imported/alien_08.png-79dc74c09683a0653187f9ba3f2ae0ed.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_08.png"
dest_files=["res://.godot/imported/alien_08.png-79dc74c09683a0653187f9ba3f2ae0ed.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://coj8qo2oodabe"
path="res://.godot/imported/alien_09.png-c70ce05aa1370c6b60e62a187f30ecf5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_09.png"
dest_files=["res://.godot/imported/alien_09.png-c70ce05aa1370c6b60e62a187f30ecf5.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c1au4o6gdqyl5"
path="res://.godot/imported/alien_10.png-be65d4f3f4c99a9d9fec274abf1264f0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_10.png"
dest_files=["res://.godot/imported/alien_10.png-be65d4f3f4c99a9d9fec274abf1264f0.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dtmd6ggiy5ikr"
path="res://.godot/imported/alien_11.png-4fa1eb7ed9ddcc033df1220cdc405221.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_11.png"
dest_files=["res://.godot/imported/alien_11.png-4fa1eb7ed9ddcc033df1220cdc405221.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dutromnln7bso"
path="res://.godot/imported/alien_12.png-9e1d33a5e7fe1fd4b24f7c5c073aee52.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_12.png"
dest_files=["res://.godot/imported/alien_12.png-9e1d33a5e7fe1fd4b24f7c5c073aee52.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cwddmvbqilp8r"
path="res://.godot/imported/alien_13.png-8c0ba224bf465312b4e9a53eead15c61.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_13.png"
dest_files=["res://.godot/imported/alien_13.png-8c0ba224bf465312b4e9a53eead15c61.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 101 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://p56nvuyl765"
path="res://.godot/imported/alien_14.png-3d8a0e0a2a5e0ba5864727b90f411122.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_14.png"
dest_files=["res://.godot/imported/alien_14.png-3d8a0e0a2a5e0ba5864727b90f411122.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ocgps02qc6ry"
path="res://.godot/imported/alien_15.png-5c231ed351dde549b7f3422fd95f99e9.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_15.png"
dest_files=["res://.godot/imported/alien_15.png-5c231ed351dde549b7f3422fd95f99e9.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cmrln20ri1mw3"
path="res://.godot/imported/alien_16.png-569cf208bd6bddaed52ccfaf76886539.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_16.png"
dest_files=["res://.godot/imported/alien_16.png-569cf208bd6bddaed52ccfaf76886539.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c6kp4dekxxbm8"
path="res://.godot/imported/alien_17.png-f99a76de912f0c27ae13245fce7c9f65.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_17.png"
dest_files=["res://.godot/imported/alien_17.png-f99a76de912f0c27ae13245fce7c9f65.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://defj3cotohgh6"
path="res://.godot/imported/alien_18.png-6ce97997eebfab9056f7276133257034.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_18.png"
dest_files=["res://.godot/imported/alien_18.png-6ce97997eebfab9056f7276133257034.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://brj8cohnssbjn"
path="res://.godot/imported/alien_19.png-a9e5ae73af6b88a7980ded5b6bc75991.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_19.png"
dest_files=["res://.godot/imported/alien_19.png-a9e5ae73af6b88a7980ded5b6bc75991.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://47evsvg5wylw"
path="res://.godot/imported/alien_20.png-21b1fd0d9b9a41bf705a0e81c818dd1a.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_20.png"
dest_files=["res://.godot/imported/alien_20.png-21b1fd0d9b9a41bf705a0e81c818dd1a.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b0xc060vi2mdr"
path="res://.godot/imported/alien_21.png-de83032cf6eea42b0c9efb27b2e96dda.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_21.png"
dest_files=["res://.godot/imported/alien_21.png-de83032cf6eea42b0c9efb27b2e96dda.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dr8w8f7ga61qb"
path="res://.godot/imported/alien_22.png-2e59a0089c865f40af07349bfa4a5b37.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_22.png"
dest_files=["res://.godot/imported/alien_22.png-2e59a0089c865f40af07349bfa4a5b37.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://rxdef4xtw37x"
path="res://.godot/imported/alien_23.png-ee1fd9bb1f8b678fa9637b0c4eb5ab82.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_23.png"
dest_files=["res://.godot/imported/alien_23.png-ee1fd9bb1f8b678fa9637b0c4eb5ab82.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dvuo6ksjej22h"
path="res://.godot/imported/alien_24.png-e06c6bddcf3ff35ac95ccc8dc90ae493.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_24.png"
dest_files=["res://.godot/imported/alien_24.png-e06c6bddcf3ff35ac95ccc8dc90ae493.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dlujfaed5b3on"
path="res://.godot/imported/alien_25.png-22ed40b0b2c18d1e9d9dc77e95505eb7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_25.png"
dest_files=["res://.godot/imported/alien_25.png-22ed40b0b2c18d1e9d9dc77e95505eb7.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cpbq4d035150t"
path="res://.godot/imported/alien_26.png-344cce72123e7683cfd257e6490d2772.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_26.png"
dest_files=["res://.godot/imported/alien_26.png-344cce72123e7683cfd257e6490d2772.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://blap10m5dja5p"
path="res://.godot/imported/alien_27.png-cf891fc94b8852124b018c9848808a96.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_27.png"
dest_files=["res://.godot/imported/alien_27.png-cf891fc94b8852124b018c9848808a96.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://e60gbegafju"
path="res://.godot/imported/alien_28.png-e349e996887716b9c8e3e1403849d07c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_28.png"
dest_files=["res://.godot/imported/alien_28.png-e349e996887716b9c8e3e1403849d07c.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://chfs8mnt4oaqq"
path="res://.godot/imported/alien_29.png-04a6fc0abde9a49257c91f70d5a9ec64.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_29.png"
dest_files=["res://.godot/imported/alien_29.png-04a6fc0abde9a49257c91f70d5a9ec64.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b2xygj3e50tsl"
path="res://.godot/imported/alien_30.png-4e2e27b681e081bbbf4a4e486273f0c1.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_30.png"
dest_files=["res://.godot/imported/alien_30.png-4e2e27b681e081bbbf4a4e486273f0c1.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cguq05a2fjtur"
path="res://.godot/imported/alien_31.png-a43d2af7832681413a7e9ebec5770f0d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_31.png"
dest_files=["res://.godot/imported/alien_31.png-a43d2af7832681413a7e9ebec5770f0d.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cvkc82qchhrnl"
path="res://.godot/imported/alien_32.png-364c255b141fd44ec0ec5f00aa984f5e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_32.png"
dest_files=["res://.godot/imported/alien_32.png-364c255b141fd44ec0ec5f00aa984f5e.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ci1bgyq7rbnku"
path="res://.godot/imported/alien_33.png-bd3ba2c88901b9b0b1cbfc14f7e0a33f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_33.png"
dest_files=["res://.godot/imported/alien_33.png-bd3ba2c88901b9b0b1cbfc14f7e0a33f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://d1ofv74aumkn"
path="res://.godot/imported/alien_34.png-49e57687cf3587a42a27ea361b36ab2c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_34.png"
dest_files=["res://.godot/imported/alien_34.png-49e57687cf3587a42a27ea361b36ab2c.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bide2ap7jjfnj"
path="res://.godot/imported/alien_35.png-7fadfb8de2c664d3367029b38c485f6f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_35.png"
dest_files=["res://.godot/imported/alien_35.png-7fadfb8de2c664d3367029b38c485f6f.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bhkp3fe05xhwh"
path="res://.godot/imported/alien_36.png-fbf69418b061d61539f01d65004c8fcd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_36.png"
dest_files=["res://.godot/imported/alien_36.png-fbf69418b061d61539f01d65004c8fcd.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c3h20xwdllxwc"
path="res://.godot/imported/alien_37.png-a93b529efe7993133e3db4a93bc10283.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_37.png"
dest_files=["res://.godot/imported/alien_37.png-a93b529efe7993133e3db4a93bc10283.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bnrbe3anhssd8"
path="res://.godot/imported/alien_38.png-8503a785560f6b3e34f5e08efe1455f1.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_38.png"
dest_files=["res://.godot/imported/alien_38.png-8503a785560f6b3e34f5e08efe1455f1.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c8qtvnt36svcs"
path="res://.godot/imported/alien_39.png-ef07c4802a264066394524862d8a9f3e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_39.png"
dest_files=["res://.godot/imported/alien_39.png-ef07c4802a264066394524862d8a9f3e.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 72 KiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dn8wgpprx6886"
path="res://.godot/imported/alien_40.png-6f2cadc2a7db4a0681edd0ff5ebe2d6b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/alien_40.png"
dest_files=["res://.godot/imported/alien_40.png-6f2cadc2a7db4a0681edd0ff5ebe2d6b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

View File

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://h2hk1uilrc6r"
path="res://.godot/imported/atlas.png-d901c7531d7e83f5c5d8947d195e52d3.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://assets/alien_ships/atlas.png"
dest_files=["res://.godot/imported/atlas.png-d901c7531d7e83f5c5d8947d195e52d3.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/uastc_level=0
compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/channel_remap/red=0
process/channel_remap/green=1
process/channel_remap/blue=2
process/channel_remap/alpha=3
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1

View File

@ -0,0 +1,43 @@
# Rebuild the game sprites from the transparent ImageGen atlas.
Add-Type -AssemblyName System.Drawing
$taskAtlas = [Drawing.Bitmap]::new((Join-Path $PSScriptRoot 'atlas.png'))
$taskRows = @(0, 220, 435, 615, 842, 1084)
try {
for ($taskRow = 0; $taskRow -lt 5; $taskRow++) {
for ($taskColumn = 0; $taskColumn -lt 8; $taskColumn++) {
$taskIndex = $taskRow * 8 + $taskColumn + 1
$taskLeft = [int][Math]::Round($taskColumn * $taskAtlas.Width / 8.0)
$taskRight = [int][Math]::Round(($taskColumn + 1) * $taskAtlas.Width / 8.0)
$taskRect = [Drawing.Rectangle]::new($taskLeft, $taskRows[$taskRow], $taskRight - $taskLeft, $taskRows[$taskRow + 1] - $taskRows[$taskRow])
$taskCell = $taskAtlas.Clone($taskRect, [Drawing.Imaging.PixelFormat]::Format32bppArgb)
# Find occupied bounds; ignore almost-transparent extraction fringe.
$taskMinX = $taskCell.Width; $taskMinY = $taskCell.Height
$taskMaxX = -1; $taskMaxY = -1
for ($taskY = 0; $taskY -lt $taskCell.Height; $taskY++) {
for ($taskX = 0; $taskX -lt $taskCell.Width; $taskX++) {
if ($taskCell.GetPixel($taskX, $taskY).A -gt 32) {
$taskMinX = [Math]::Min($taskMinX, $taskX); $taskMinY = [Math]::Min($taskMinY, $taskY)
$taskMaxX = [Math]::Max($taskMaxX, $taskX); $taskMaxY = [Math]::Max($taskMaxY, $taskY)
}
}
}
if ($taskMaxX -lt 0) { throw "Empty sprite $taskIndex" }
$taskBounds = [Drawing.Rectangle]::new($taskMinX, $taskMinY, $taskMaxX - $taskMinX + 1, $taskMaxY - $taskMinY + 1)
$taskSprite = $taskCell.Clone($taskBounds, [Drawing.Imaging.PixelFormat]::Format32bppArgb)
$taskCell.Dispose()
if ($taskIndex -in @(17, 21, 24)) { $taskSprite.RotateFlip([Drawing.RotateFlipType]::Rotate270FlipNone) }
if ($taskIndex -in @(9, 13, 14)) { $taskSprite.RotateFlip([Drawing.RotateFlipType]::Rotate180FlipNone) }
$taskOutput = [Drawing.Bitmap]::new(256, 256, [Drawing.Imaging.PixelFormat]::Format32bppArgb)
$taskGraphics = [Drawing.Graphics]::FromImage($taskOutput)
$taskGraphics.Clear([Drawing.Color]::Transparent)
$taskGraphics.InterpolationMode = [Drawing.Drawing2D.InterpolationMode]::HighQualityBicubic
$taskScale = 224.0 / [Math]::Max($taskSprite.Width, $taskSprite.Height)
$taskWidth = [int][Math]::Round($taskSprite.Width * $taskScale)
$taskHeight = [int][Math]::Round($taskSprite.Height * $taskScale)
$taskGraphics.DrawImage($taskSprite, [Drawing.Rectangle]::new([int]((256 - $taskWidth) / 2), [int]((256 - $taskHeight) / 2), $taskWidth, $taskHeight))
$taskOutput.Save((Join-Path $PSScriptRoot ('alien_{0:D2}.png' -f $taskIndex)), [Drawing.Imaging.ImageFormat]::Png)
$taskGraphics.Dispose(); $taskOutput.Dispose(); $taskSprite.Dispose()
}
}
} finally { $taskAtlas.Dispose() }
Write-Output 'Extracted 40 transparent sprites, 256 x 256 pixels.'

View File

@ -1,6 +1,7 @@
[gd_scene load_steps=3 format=3] [gd_scene load_steps=4 format=3]
[ext_resource type="Script" path="res://scripts/game/enemy_ship.gd" id="1_enemy"] [ext_resource type="Script" path="res://scripts/game/enemy_ship.gd" id="1_enemy"]
[ext_resource type="Script" path="res://scripts/game/enemy_health_bar.gd" id="2_health"]
[sub_resource type="CircleShape2D" id="EnemyCollision"] [sub_resource type="CircleShape2D" id="EnemyCollision"]
radius = 22.0 radius = 22.0
@ -15,3 +16,6 @@ texture_filter = 1
[node name="CollisionShape2D" type="CollisionShape2D" parent="."] [node name="CollisionShape2D" type="CollisionShape2D" parent="."]
shape = SubResource("EnemyCollision") shape = SubResource("EnemyCollision")
[node name="HealthBar" type="Node2D" parent="."]
script = ExtResource("2_health")

View File

@ -9,10 +9,10 @@ border_width_top = 1
border_width_right = 1 border_width_right = 1
border_width_bottom = 1 border_width_bottom = 1
border_color = Color(0.28, 0.63, 0.54, 1) border_color = Color(0.28, 0.63, 0.54, 1)
content_margin_left = 24.0 content_margin_left = 14.0
content_margin_top = 24.0 content_margin_top = 14.0
content_margin_right = 24.0 content_margin_right = 14.0
content_margin_bottom = 24.0 content_margin_bottom = 14.0
corner_radius_top_left = 8 corner_radius_top_left = 8
corner_radius_top_right = 8 corner_radius_top_right = 8
corner_radius_bottom_left = 8 corner_radius_bottom_left = 8
@ -20,22 +20,11 @@ corner_radius_bottom_right = 8
[node name="PlanetServicesMenu" type="Control"] [node name="PlanetServicesMenu" type="Control"]
visible = false visible = false
layout_mode = 3 layout_mode = 0
anchors_preset = 15 offset_right = 350.0
anchor_right = 1.0 offset_bottom = 250.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 0
script = ExtResource("1_services")
[node name="Dim" type="ColorRect" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
mouse_filter = 2 mouse_filter = 2
color = Color(0.01, 0.025, 0.045, 0.78) script = ExtResource("1_services")
[node name="Center" type="CenterContainer" parent="."] [node name="Center" type="CenterContainer" parent="."]
layout_mode = 1 layout_mode = 1
@ -45,32 +34,32 @@ anchor_bottom = 1.0
mouse_filter = 2 mouse_filter = 2
[node name="Panel" type="PanelContainer" parent="Center"] [node name="Panel" type="PanelContainer" parent="Center"]
custom_minimum_size = Vector2(460, 310) custom_minimum_size = Vector2(350, 250)
layout_mode = 2 layout_mode = 2
theme_override_styles/panel = SubResource("PanelStyle") theme_override_styles/panel = SubResource("PanelStyle")
[node name="Contents" type="VBoxContainer" parent="Center/Panel"] [node name="Contents" type="VBoxContainer" parent="Center/Panel"]
layout_mode = 2 layout_mode = 2
theme_override_constants/separation = 16 theme_override_constants/separation = 12
[node name="Title" type="Label" parent="Center/Panel/Contents"] [node name="Title" type="Label" parent="Center/Panel/Contents"]
layout_mode = 2 layout_mode = 2
theme_override_colors/font_color = Color(0.47, 0.91, 0.74, 1) theme_override_colors/font_color = Color(0.47, 0.91, 0.74, 1)
theme_override_font_sizes/font_size = 21 theme_override_font_sizes/font_size = 17
text = "USŁUGI CHRONIONEJ RASY" text = "USŁUGI TUBYLCÓW"
horizontal_alignment = 1 horizontal_alignment = 1
[node name="Status" type="Label" parent="Center/Panel/Contents"] [node name="Status" type="Label" parent="Center/Panel/Contents"]
layout_mode = 2 layout_mode = 2
theme_override_font_sizes/font_size = 14 theme_override_font_sizes/font_size = 12
text = "Układ jest bezpieczny. Mieszkańcy otwierają przejście." text = "Układ bezpieczny. Usługi dostępne."
horizontal_alignment = 1 horizontal_alignment = 1
[node name="Services" type="Label" parent="Center/Panel/Contents"] [node name="Services" type="Label" parent="Center/Panel/Contents"]
layout_mode = 2 layout_mode = 2
size_flags_vertical = 3 size_flags_vertical = 3
theme_override_colors/font_color = Color(0.59, 0.67, 0.75, 1) theme_override_colors/font_color = Color(0.59, 0.67, 0.75, 1)
theme_override_font_sizes/font_size = 14 theme_override_font_sizes/font_size = 12
text = "Kup amunicję do działka maszynowego." text = "Kup amunicję do działka maszynowego."
horizontal_alignment = 1 horizontal_alignment = 1
vertical_alignment = 1 vertical_alignment = 1
@ -78,17 +67,13 @@ vertical_alignment = 1
[node name="BuyAmmunitionButton" type="Button" parent="Center/Panel/Contents"] [node name="BuyAmmunitionButton" type="Button" parent="Center/Panel/Contents"]
custom_minimum_size = Vector2(0, 44) custom_minimum_size = Vector2(0, 44)
layout_mode = 2 layout_mode = 2
theme_override_font_sizes/font_size = 15 theme_override_font_sizes/font_size = 12
focus_mode = 0
text = "KUP 100 AMUNICJI — 100 KREDYTÓW" text = "KUP 100 AMUNICJI — 100 KREDYTÓW"
[node name="NextButton" type="Button" parent="Center/Panel/Contents"] [node name="NextButton" type="Button" parent="Center/Panel/Contents"]
custom_minimum_size = Vector2(0, 44) custom_minimum_size = Vector2(0, 44)
layout_mode = 2 layout_mode = 2
theme_override_font_sizes/font_size = 15 theme_override_font_sizes/font_size = 12
text = "PRZEJDŹ DO NASTĘPNEGO UKŁADU" focus_mode = 0
text = "IDŹ DO NASTĘPNEGO POZIOMU"
[node name="CloseButton" type="Button" parent="Center/Panel/Contents"]
custom_minimum_size = Vector2(0, 32)
layout_mode = 2
theme_override_font_sizes/font_size = 14
text = "WRÓĆ DO STATKU"

View File

@ -0,0 +1,30 @@
extends Node2D
var enemy: CharacterBody2D
func _ready() -> void:
enemy = get_parent() as CharacterBody2D
top_level = true
z_index = 30
light_mask = 4
_update_position()
func _process(_delta: float) -> void:
_update_position()
queue_redraw()
func _update_position() -> void:
global_position = enemy.global_position + Vector2(0, -enemy.get_visual_size() * 0.5 - 12.0)
func get_health_ratio() -> float:
return clampf(enemy.hull / maxf(enemy.max_hull, 0.001), 0.0, 1.0)
func _draw() -> void:
if not is_instance_valid(enemy) or enemy.hull <= 0.0:
return
var width := 72.0 if enemy.loot_tier == 2 else 44.0
var background := Rect2(-width * 0.5, -3.0, width, 6.0)
draw_rect(background.grow(1.0), Color("08111dee"))
draw_rect(background, Color("39232bee"))
var color := Color("ffac46") if enemy.loot_tier == 2 else Color("ef5967")
draw_rect(Rect2(background.position, Vector2(width * get_health_ratio(), 6.0)), color)

View File

@ -0,0 +1 @@
uid://cuubudnf0qe6k

View File

@ -34,22 +34,32 @@ func _ready() -> void:
func apply_level_settings(level: int, tier: int) -> void: func apply_level_settings(level: int, tier: int) -> void:
loot_tier = tier loot_tier = tier
var power := LEVEL_BALANCE.power_scale(level) var power := LEVEL_BALANCE.power_scale(level)
var hull_multiplier := 1.0 if tier == 0 else (2.0 if tier == 1 else 6.0) var boss_multiplier := 2.0 if tier == 2 else 1.0
var damage_bonus := 1.0 if tier == 0 else (1.3 if tier == 1 else 1.7) var hull_multiplier := 4.0 if tier == 2 else (2.0 if tier == 1 else 1.0)
var damage_bonus := 4.0 if tier == 2 else (1.3 if tier == 1 else 1.0)
max_hull = 50.0 * power * hull_multiplier max_hull = 50.0 * power * hull_multiplier
hull = max_hull hull = max_hull
weapon_damage = 8.0 * power * damage_bonus weapon_damage = 8.0 * power * damage_bonus
approach_speed = 62.0 * (1.0 + 0.0005 * (clampi(level, 1, 1000) - 1)) approach_speed = 62.0 * (1.0 + 0.0005 * (clampi(level, 1, 1000) - 1)) * boss_multiplier
weapon_cooldown = maxf(0.55, 1.5 / (1.0 + 0.001 * (clampi(level, 1, 1000) - 1))) approach_acceleration = 85.0 * boss_multiplier
turn_speed = 1.8 * boss_multiplier
activation_range = 760.0 * boss_multiplier
weapon_range = 680.0 * boss_multiplier
weapon_cooldown = maxf(0.55, 1.5 / (1.0 + 0.001 * (clampi(level, 1, 1000) - 1))) / boss_multiplier
$CollisionShape2D.scale = Vector2.ONE * boss_multiplier
func configure(player: CharacterBody2D, ship_texture: Texture2D) -> void: func configure(player: CharacterBody2D, ship_texture: Texture2D) -> void:
_player = player _player = player
_sprite = $Sprite2D _sprite = $Sprite2D
_sprite.texture = ship_texture _sprite.texture = ship_texture
var largest_dimension := maxf(ship_texture.get_width(), ship_texture.get_height()) var largest_dimension := maxf(ship_texture.get_width(), ship_texture.get_height())
var visual_size := 56.0 if loot_tier == 0 else (68.0 if loot_tier == 1 else 104.0) var visual_size := get_visual_size()
_sprite.scale = Vector2.ONE * (visual_size / largest_dimension) _sprite.scale = Vector2.ONE * (visual_size / largest_dimension)
_sprite.modulate = Color("ffc785") if loot_tier == 1 else Color.WHITE _sprite.modulate = Color("ffc785") if loot_tier == 1 else Color.WHITE
preload("res://scripts/game/ship_shadow.gd").attach_to(_sprite)
func get_visual_size() -> float:
return 112.0 if loot_tier == 2 else (68.0 if loot_tier == 1 else 56.0)
func _physics_process(delta: float) -> void: func _physics_process(delta: float) -> void:
if not is_instance_valid(_player): if not is_instance_valid(_player):
@ -83,7 +93,7 @@ func _check_player_collision() -> void:
func _fire_plasma(direction: Vector2) -> void: func _fire_plasma(direction: Vector2) -> void:
var projectile := PLASMA_PROJECTILE_SCENE.instantiate() as Area2D var projectile := PLASMA_PROJECTILE_SCENE.instantiate() as Area2D
projectile.call("configure", global_position + direction * 28.0, direction, weapon_damage) projectile.call("configure", global_position + direction * (get_visual_size() * 0.5), direction, weapon_damage)
get_parent().add_child(projectile) get_parent().add_child(projectile)
# Relative to the Plasma bus: enemy shots are 4 dB quieter than player shots. # Relative to the Plasma bus: enemy shots are 4 dB quieter than player shots.
WEAPON_AUDIO_SCRIPT.play(get_parent(), global_position, ItemDefinition.WeaponKind.PLASMA, -4.0) WEAPON_AUDIO_SCRIPT.play(get_parent(), global_position, ItemDefinition.WeaponKind.PLASMA, -4.0)

View File

@ -5,23 +5,13 @@ const LEVEL_BALANCE := preload("res://scripts/levels/level_balance.gd")
const CELESTIAL_BODY := preload("res://scripts/levels/celestial_body.gd") const CELESTIAL_BODY := preload("res://scripts/levels/celestial_body.gd")
const SERVICES_MENU := preload("res://scenes/ui/planet_services_menu.tscn") const SERVICES_MENU := preload("res://scenes/ui/planet_services_menu.tscn")
const PLANET_MARKER := preload("res://scripts/ui/protected_planet_marker.gd") const PLANET_MARKER := preload("res://scripts/ui/protected_planet_marker.gd")
const WORMHOLE_SCRIPT := preload("res://scripts/game/wormhole.gd")
const WORLD_SIZE := SYSTEM_GENERATOR.WORLD_SIZE const WORLD_SIZE := SYSTEM_GENERATOR.WORLD_SIZE
const SERVICE_APPROACH_DISTANCE := 180.0 const SERVICE_APPROACH_DISTANCE := 180.0
const BOSS_TEXTURE := preload("res://assets/alien ship/Mega_boss.png") const WORMHOLE_PLANET_DISTANCE := 620.0
const WORMHOLE_ENTRY_RADIUS := 48.0
const ENEMY_SCENE := preload("res://scenes/game/enemy_ship.tscn") const ENEMY_SCENE := preload("res://scenes/game/enemy_ship.tscn")
const ENEMY_TEXTURES: Array[Texture2D] = [ const ENEMY_TEXTURES: Array[Texture2D] = preload("res://scripts/items/alien_ship_catalog.gd").TEXTURES
preload("res://assets/alien ship/Ship_1.png"),
preload("res://assets/alien ship/Ship_2.png"),
preload("res://assets/alien ship/Ship_3.png"),
preload("res://assets/alien ship/Ship_4.png"),
preload("res://assets/alien ship/Ship_5.png"),
preload("res://assets/alien ship/Ship_6.png"),
preload("res://assets/alien ship/Ship_7.png"),
preload("res://assets/alien ship/Ship_8.png"),
preload("res://assets/alien ship/Ship_9.png"),
preload("res://assets/alien ship/Ship_10.png"),
preload("res://assets/alien ship/Ship_11.png"),
]
@onready var player: CharacterBody2D = $PlayerShip @onready var player: CharacterBody2D = $PlayerShip
@ -29,7 +19,7 @@ var system_data: Dictionary = {}
var protected_planet: Node2D var protected_planet: Node2D
var services_menu: Control var services_menu: Control
var system_cleared := false var system_cleared := false
var _services_dismissed := false var wormhole: Node2D
var _transitioning := false var _transitioning := false
func _ready() -> void: func _ready() -> void:
@ -54,9 +44,9 @@ func _ready() -> void:
$HUD/HUDRoot.add_child(marker) $HUD/HUDRoot.add_child(marker)
marker.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT) marker.set_anchors_and_offsets_preset(Control.PRESET_FULL_RECT)
services_menu = SERVICES_MENU.instantiate() as Control services_menu = SERVICES_MENU.instantiate() as Control
services_menu.set("planet", protected_planet)
$HUD/HUDRoot.add_child(services_menu) $HUD/HUDRoot.add_child(services_menu)
services_menu.connect("next_level_requested", advance_to_next_level) services_menu.connect("next_level_requested", open_wormhole)
services_menu.connect("closed", _on_services_closed)
func _spawn_celestial_bodies() -> void: func _spawn_celestial_bodies() -> void:
var bodies := Node2D.new() var bodies := Node2D.new()
@ -97,7 +87,7 @@ func _spawn_enemies() -> void:
enemy.position = data["position"] enemy.position = data["position"]
enemy.call("apply_level_settings", GameState.system_level, int(data["tier"])) enemy.call("apply_level_settings", GameState.system_level, int(data["tier"]))
add_child(enemy) add_child(enemy)
var texture := BOSS_TEXTURE if int(data["tier"]) == 2 else ENEMY_TEXTURES[int(data["texture_index"])] var texture: Texture2D = ENEMY_TEXTURES[int(data["texture_index"])]
enemy.call("configure", player, texture) enemy.call("configure", player, texture)
func get_remaining_enemies() -> int: func get_remaining_enemies() -> int:
@ -109,34 +99,61 @@ func get_remaining_enemies() -> int:
func _physics_process(_delta: float) -> void: func _physics_process(_delta: float) -> void:
if _transitioning or bool(player.get("_is_destroyed")): if _transitioning or bool(player.get("_is_destroyed")):
services_menu.call("hide_services")
return return
if not system_cleared and get_remaining_enemies() == 0: if not system_cleared and get_remaining_enemies() == 0:
system_cleared = true system_cleared = true
protected_planet.call("set_safe", true) protected_planet.call("set_safe", true)
var near_planet := is_near_protected_planet() if system_cleared and is_near_protected_planet():
if not near_planet: if not services_menu.visible:
_services_dismissed = false services_menu.call("show_services", GameState.system_level >= LEVEL_BALANCE.MAX_LEVEL, is_instance_valid(wormhole))
if system_cleared and near_planet and not _services_dismissed and not services_menu.visible: else:
player.velocity = Vector2.ZERO services_menu.call("hide_services")
player.set("angular_velocity", 0.0) if is_instance_valid(wormhole) and player.global_position.distance_to(wormhole.global_position) <= WORMHOLE_ENTRY_RADIUS:
player.set("is_docked", true) advance_to_next_level()
$HUD.call("close_inventory")
services_menu.call("show_services", GameState.system_level >= LEVEL_BALANCE.MAX_LEVEL)
func is_near_protected_planet() -> bool: func is_near_protected_planet() -> bool:
return player.global_position.distance_to(protected_planet.global_position) <= float(protected_planet.get("radius")) + SERVICE_APPROACH_DISTANCE return player.global_position.distance_to(protected_planet.global_position) <= float(protected_planet.get("radius")) + SERVICE_APPROACH_DISTANCE
func _on_services_closed() -> void: func open_wormhole() -> bool:
player.set("is_docked", false) if _transitioning or not system_cleared or not services_menu.visible or not is_near_protected_planet():
_services_dismissed = true return false
if bool(player.get("_is_destroyed")) or GameState.system_level >= LEVEL_BALANCE.MAX_LEVEL or is_instance_valid(wormhole):
return false
wormhole = Node2D.new()
wormhole.name = "Wormhole"
wormhole.set_script(WORMHOLE_SCRIPT)
wormhole.position = _find_wormhole_position()
add_child(wormhole)
services_menu.call("show_services", false, true)
return true
func _find_wormhole_position() -> Vector2:
var inward := -protected_planet.global_position.normalized()
for step in 16:
var candidate := protected_planet.global_position + inward.rotated(TAU * step / 16.0) * WORMHOLE_PLANET_DISTANCE
if absf(candidate.x) > WORLD_SIZE.x * 0.5 - 160.0 or absf(candidate.y) > WORLD_SIZE.y * 0.5 - 160.0:
continue
if candidate.length() < 260.0:
continue
var clear := true
for planet_data in system_data["planets"]:
if candidate.distance_to(planet_data["position"]) < float(planet_data["radius"]) + 130.0:
clear = false
break
if clear:
return candidate
return protected_planet.global_position + inward * WORMHOLE_PLANET_DISTANCE
func advance_to_next_level() -> bool: func advance_to_next_level() -> bool:
if _transitioning or not system_cleared or not services_menu.visible or not is_near_protected_planet(): if _transitioning or not system_cleared or not is_instance_valid(wormhole):
return false return false
if bool(player.get("_is_destroyed")) or GameState.system_level >= LEVEL_BALANCE.MAX_LEVEL: if bool(player.get("_is_destroyed")) or GameState.system_level >= LEVEL_BALANCE.MAX_LEVEL:
return false return false
if player.global_position.distance_to(wormhole.global_position) > WORMHOLE_ENTRY_RADIUS:
return false
_transitioning = true _transitioning = true
services_menu.get_node("Center/Panel/Contents/NextButton").set("disabled", true) services_menu.call("hide_services")
_load_next_level.call_deferred() _load_next_level.call_deferred()
return true return true
@ -152,5 +169,6 @@ func _load_next_level() -> void:
GameState.system_seed = previous_seed GameState.system_seed = previous_seed
GameState.restart_inventory.clear() GameState.restart_inventory.clear()
_transitioning = false _transitioning = false
services_menu.call("show_services", false) if is_near_protected_planet():
services_menu.call("show_services", false, true)
push_error("Could not enter next system: %s" % error_string(error)) push_error("Could not enter next system: %s" % error_string(error))

View File

@ -100,6 +100,7 @@ func _ready() -> void:
_sprite.texture = ship_texture _sprite.texture = ship_texture
var largest_dimension := maxf(ship_texture.get_width(), ship_texture.get_height()) var largest_dimension := maxf(ship_texture.get_width(), ship_texture.get_height())
_sprite.scale = Vector2.ONE * (64.0 / largest_dimension) _sprite.scale = Vector2.ONE * (64.0 / largest_dimension)
preload("res://scripts/game/ship_shadow.gd").attach_to(_sprite)
# Inventory children have already applied the restored equipment bonuses. # Inventory children have already applied the restored equipment bonuses.
hull = max_hull hull = max_hull
shields = max_shields shields = max_shields

View File

@ -0,0 +1,54 @@
extends RefCounted
# Cache one simplified silhouette per texture, shared by all ships of that type.
static var _silhouettes: Dictionary = {}
static func attach_to(sprite: Sprite2D) -> void:
if sprite.texture == null:
return
sprite.light_mask = 2
if sprite.has_node("ShipShadow"):
return
var texture := sprite.texture
var key := texture.get_instance_id()
if not _silhouettes.has(key):
var image := texture.get_image()
if image == null or image.is_empty():
return
if image.is_compressed():
image.decompress()
var original_size := Vector2(image.get_size())
var factor := minf(1.0, 128.0 / maxf(original_size.x, original_size.y))
image.resize(maxi(1, roundi(original_size.x * factor)), maxi(1, roundi(original_size.y * factor)), Image.INTERPOLATE_BILINEAR)
var bitmap := BitMap.new()
bitmap.create_from_image_alpha(image, 0.25)
var polygons := bitmap.opaque_to_polygons(Rect2i(Vector2i.ZERO, image.get_size()), 1.5)
var silhouette := PackedVector2Array()
var largest_area := 0.0
for polygon in polygons:
var area := _polygon_area(polygon)
if area > largest_area:
largest_area = area
silhouette = polygon
var image_scale := original_size / Vector2(image.get_size())
for index in silhouette.size():
silhouette[index] = silhouette[index] * image_scale - original_size * 0.5
_silhouettes[key] = silhouette
var points: PackedVector2Array = _silhouettes[key]
if points.size() < 3:
return
var polygon := OccluderPolygon2D.new()
polygon.polygon = points
polygon.cull_mode = OccluderPolygon2D.CULL_DISABLED
var occluder := LightOccluder2D.new()
occluder.name = "ShipShadow"
occluder.occluder = polygon
occluder.occluder_light_mask = 1
occluder.show_behind_parent = true
sprite.add_child(occluder)
static func _polygon_area(points: PackedVector2Array) -> float:
var area := 0.0
for index in points.size():
area += points[index].cross(points[(index + 1) % points.size()])
return absf(area) * 0.5

View File

@ -0,0 +1 @@
uid://b2jj0dueysvnp

View File

@ -0,0 +1,53 @@
extends RefCounted
const LIGHT_RADIUS := 3400.0
const LIGHT_ENERGY := 0.28
const SHIP_LIGHT_ENERGY := 0.16
const LIGHT_COLOR := Color(1.0, 0.93, 0.82)
static func attach_to(star: Node2D) -> void:
var gradient := Gradient.new()
gradient.offsets = PackedFloat32Array([0.0, 0.25, 0.65, 1.0])
gradient.colors = PackedColorArray([Color.WHITE, Color(1, 1, 1, 0.9), Color(1, 1, 1, 0.5), Color(1, 1, 1, 0)])
var texture := GradientTexture2D.new()
texture.gradient = gradient
texture.width = 512
texture.height = 512
texture.fill = GradientTexture2D.FILL_RADIAL
texture.fill_from = Vector2(0.5, 0.5)
texture.fill_to = Vector2(0.5, 0.0)
var light := PointLight2D.new()
light.name = "StarLight"
light.texture = texture
light.texture_scale = LIGHT_RADIUS * 2.0 / texture.width
light.color = LIGHT_COLOR
light.energy = LIGHT_ENERGY
light.range_item_cull_mask = 1
light.shadow_enabled = true
light.shadow_item_cull_mask = 1
light.shadow_filter = Light2D.SHADOW_FILTER_PCF5
light.shadow_filter_smooth = 2.0
star.add_child(light)
# A separate mask lights hulls without their own silhouettes darkening them.
var hull_light := PointLight2D.new()
hull_light.name = "HullLight"
hull_light.texture = texture
hull_light.texture_scale = light.texture_scale
hull_light.color = LIGHT_COLOR
hull_light.energy = SHIP_LIGHT_ENERGY
hull_light.range_item_cull_mask = 2
star.add_child(hull_light)
var glow := Sprite2D.new()
glow.name = "StarGlow"
glow.texture = texture
glow.scale = Vector2.ONE * (float(star.get("radius")) * 5.0 / texture.width)
glow.modulate = Color(LIGHT_COLOR, 0.09)
glow.z_index = -1
var material := CanvasItemMaterial.new()
material.blend_mode = CanvasItemMaterial.BLEND_MODE_ADD
material.light_mode = CanvasItemMaterial.LIGHT_MODE_UNSHADED
glow.material = material
star.add_child(glow)

View File

@ -0,0 +1 @@
uid://kmnxv1hp273t

33
scripts/game/wormhole.gd Normal file
View File

@ -0,0 +1,33 @@
extends Node2D
var _time := 0.0
func _ready() -> void:
z_index = -2
var label := Label.new()
label.text = "WORMHOLE\nWleć, aby przejść do następnego układu"
label.position = Vector2(-180, 72)
label.size = Vector2(360, 44)
label.horizontal_alignment = HORIZONTAL_ALIGNMENT_CENTER
label.mouse_filter = Control.MOUSE_FILTER_IGNORE
label.add_theme_font_size_override("font_size", 13)
label.add_theme_color_override("font_color", Color("89e8ff"))
add_child(label)
func _process(delta: float) -> void:
_time += delta
queue_redraw()
func _draw() -> void:
var pulse := 1.0 + sin(_time * 2.5) * 0.06
for ring in range(6, 0, -1):
draw_circle(Vector2.ZERO, (48.0 + ring * 4.0) * pulse, Color(0.28, 0.35, 0.95, 0.025 * (7 - ring)))
draw_circle(Vector2.ZERO, 43.0, Color("040917"))
for arm in 3:
var points := PackedVector2Array()
for segment in 65:
var progress := segment / 64.0
var angle := progress * TAU * 1.3 + _time * 1.6 + TAU * arm / 3.0
points.append(Vector2.RIGHT.rotated(angle) * (8.0 + progress * 44.0) * pulse)
draw_polyline(points, Color(0.35 + arm * 0.12, 0.55, 1.0, 0.8), 3.0, true)
draw_arc(Vector2.ZERO, 49.0 * pulse, 0, TAU, 96, Color("8beaff"), 2.0, true)

View File

@ -0,0 +1 @@
uid://dkii8te7jfiy4

View File

@ -0,0 +1,45 @@
extends RefCounted
# One transparent, upward-facing sprite per design in alien_ship.jpg.
const TEXTURES: Array[Texture2D] = [
preload("res://assets/alien_ships/alien_01.png"),
preload("res://assets/alien_ships/alien_02.png"),
preload("res://assets/alien_ships/alien_03.png"),
preload("res://assets/alien_ships/alien_04.png"),
preload("res://assets/alien_ships/alien_05.png"),
preload("res://assets/alien_ships/alien_06.png"),
preload("res://assets/alien_ships/alien_07.png"),
preload("res://assets/alien_ships/alien_08.png"),
preload("res://assets/alien_ships/alien_09.png"),
preload("res://assets/alien_ships/alien_10.png"),
preload("res://assets/alien_ships/alien_11.png"),
preload("res://assets/alien_ships/alien_12.png"),
preload("res://assets/alien_ships/alien_13.png"),
preload("res://assets/alien_ships/alien_14.png"),
preload("res://assets/alien_ships/alien_15.png"),
preload("res://assets/alien_ships/alien_16.png"),
preload("res://assets/alien_ships/alien_17.png"),
preload("res://assets/alien_ships/alien_18.png"),
preload("res://assets/alien_ships/alien_19.png"),
preload("res://assets/alien_ships/alien_20.png"),
preload("res://assets/alien_ships/alien_21.png"),
preload("res://assets/alien_ships/alien_22.png"),
preload("res://assets/alien_ships/alien_23.png"),
preload("res://assets/alien_ships/alien_24.png"),
preload("res://assets/alien_ships/alien_25.png"),
preload("res://assets/alien_ships/alien_26.png"),
preload("res://assets/alien_ships/alien_27.png"),
preload("res://assets/alien_ships/alien_28.png"),
preload("res://assets/alien_ships/alien_29.png"),
preload("res://assets/alien_ships/alien_30.png"),
preload("res://assets/alien_ships/alien_31.png"),
preload("res://assets/alien_ships/alien_32.png"),
preload("res://assets/alien_ships/alien_33.png"),
preload("res://assets/alien_ships/alien_34.png"),
preload("res://assets/alien_ships/alien_35.png"),
preload("res://assets/alien_ships/alien_36.png"),
preload("res://assets/alien_ships/alien_37.png"),
preload("res://assets/alien_ships/alien_38.png"),
preload("res://assets/alien_ships/alien_39.png"),
preload("res://assets/alien_ships/alien_40.png"),
]

View File

@ -0,0 +1 @@
uid://ciwu8mwco1rhr

Some files were not shown because too many files have changed in this diff Show More