Compare commits

...

19 commits

Author SHA1 Message Date
5a6ec53b12 Tree growth: dedicated stage atlas + tuned WildGrowth rate
Sub-mature stages (0/1/2) now use FG_Tree_Stages.png (a 128×32 atlas
with 8 progressively-larger tree cells from the bundle's "Crops with
Stages 03" pack). Stage 0 = tiny sprout (col 0), Stage 1 = small
leaf (col 1), Stage 2 = small tree (col 3). Stage 3 (Mature) keeps
the existing 64×80 seasonal canopy atlases.

Visually distinct progression replaces the previous scale-down-the-
mature-texture placeholder + procedural sapling dots.

WildGrowth pacing tuned: INTERVAL 1200 → 3000, PROBABILITY 0.30 →
0.12, LIMIT 60 → 80. Previous values flooded the map with saplings
within ~30 seconds of 12× play. New rate gives a slow but visible
regrowth over a season at default speed.

_draw simplified: removed procedural sapling fallback (atlas handles
all stages now). Pending-plant ghosts get the alpha tint via
sprite.modulate.
2026-05-16 16:42:38 +01:00
d98d2c2425 Renewable resources: tree growth + WildGrowth + Quarry on BigRockNode
Trees: 4 growth stages (Sapling→Young→Growing→Mature), only Mature
yields wood. WildGrowth ticker fires every in-game hour; rejection-
samples grass tiles and plants a sapling with ~30% probability (capped
at MAP_TREE_LIMIT=60). New `paint_plant_tree` designation lets the
player manually plant — ghost sapling registered as a build_site that
ConstructionProvider fulfils. Stage round-trips through save/load.
Initial seed mixes 4 saplings + 6 mature so growth is visible day 1.

Quarry: new BigRockNode entity (2×2 permanent stone outcrop, never
depletes). 3 nodes seeded far from cabin. New QuarryWorkbench
(extends Workbench, auto-FOREVER `quarry_stone` bill, recipe drops
1 stone per 300 work-ticks). New `paint_quarry` designation only
accepts BigRockNode tiles. CraftingProvider now supports recipes
with `ingredient_count == 0` — skips ingredient-fetch and goes
straight to walk+craft toils. Recipe gains `ingredient_count` field
(defaults 0). Save/load layering: big_rock_node spawns at priority 0
(same as rock/tree), quarry_workbench at priority 2 (after the node).

UI: Plant tree + Build quarry buttons added to Build drawer.
build_drawer_thumb gains `plant_tree` (sapling sprout in dirt) and
`paint_quarry` (stone block + chisel + cut-stone pile) shapes.
inspect_tooltip recognises BigRockNode + shows tree growth stage on
hover.

Delegation: gdscript-refactor (Sonnet ×2) for trees full impl +
quarry skeleton; quick-edit (Haiku) for CraftingProvider no-ingredient
plumbing + TopBar polish; integration handled on Opus.
2026-05-16 16:36:16 +01:00
296894ff7a TopBar: emoji icons + tighter button sizing (less horizontal space) 2026-05-16 16:35:59 +01:00
53cb92041c UI pass: medieval-warm Theme + real Build drawer thumbnails
Theme (scenes/ui/medieval_theme.gd):
- Procedural builder for an app-wide Theme: parchment buttons on
  dark-wood border, tan panels, ink text, gold focus ring.
- Applied on the root Window in Main._ready, with a tree-walk that
  re-seeds every CanvasLayer's topmost Control (CanvasLayer
  interrupts the root-Window theme cascade in Godot 4).
- Late-mounting popups + modals get themed via a child_entered_tree
  hook on each CanvasLayer.

Build drawer thumbnails (scenes/ui/build_drawer_thumb.gd):
- New BuildDrawerThumb Control that dispatches on tool_id and draws
  a recognisable silhouette of the entity each tool builds. 17 tools
  covered: chop/mine/dig_grave/no_roof (Designate), stone+wood walls,
  wood+stone floors, door, crate, bed, torch, 5 workbenches
  (Carpenter/Smelter/Millstone/Hearth/Cremation Pyre), stockpile,
  graveyard.
- Replaces the flat ColorRect placeholder. _add_tool_btn signature
  changed from (label, color, callback) to (label, tool_id, callback).
2026-05-16 16:09:56 +01:00
413054157a Distinct icons for wheat / corn / potato / strawberry harvests
Wheat + corn both produce TYPE_GRAIN; potato + strawberry both produce
TYPE_VEGETABLE. Until now they rendered identically (yellow stalks for
both grains, green-leafed root for both vegetables) since shape was
driven by item_type alone.

Added an Item.subtype field that carries the origin crop_kind through
harvest. draw_item_shape dispatches on subtype FIRST then falls back
to item_type — so storage filters (which match on item_type) still
treat wheat+corn as one Grain category and potato+strawberry as one
Vegetable category, but the visuals are now distinct.

New procedural shapes:
- wheat: 3 yellow stalks with grain-heads (same as existing grain)
- corn: yellow cob with kernel dots wrapped in green husk leaves
- potato: 2 brown overlapping lumps with sprout-eye dots
- strawberry: red heart-shape body with green calyx + yellow seeds

Crop.on_harvest_tick assigns subtype = crop_kind on spawn.
SaveSystem._spawn_item now round-trips subtype through saves.
Pawn carry indicator + Item._draw both pass subtype to draw_item_shape.
2026-05-16 15:52:31 +01:00
c7f97e2c7a Carry indicator: draw the actual item shape, scaled down
Pawns hauling items previously showed a 7×7 hue-coloured square — no
hint of what they were actually carrying. Now the carry indicator
calls Item.draw_item_shape(self, type) at 0.55× scale (~7px effective),
positioned at the pawn's upper-right (chest-height).

Refactor: _draw_item_shape (instance method) → Item.draw_item_shape
(static, takes a CanvasItem target). Item._draw() and Pawn._draw()
both call it. Also added shapes for the 5 atlas-backed types (wood /
stone / plank / iron_ore / gold) so the carry indicator works for
mining + carpenter outputs too — the on-floor visual still uses the
bundle atlas via the Sprite2D child.
2026-05-16 15:46:13 +01:00
ab4d62889b Procedural shapes for unmapped item types (no more magenta squares)
Items without an atlas entry were rendering as a hue-hashed coloured
square — bread/grain/vegetable hashed to pink-magenta, indistinguish-
able from a missing-texture placeholder.

Added _draw_item_shape() dispatcher with category-appropriate silhouettes
for: bread (brown loaf), grain (wheat stalks), vegetable (root with
leaves), flour (cream sack), meal (wooden bowl with steam), meat (red
steak with marbling), cloth (blue pleated bolt), medicine (white phial
with red cross), tool (hammer), weapon (sword), armor (helmet),
stone_block (pale brick), copper_ore (copper chunks), silver (silver
nuggets), ash (grey pile with smoke).

Hue-hashed fallback retained for safety but should be unreachable now
that every ALL_TYPES entry is handled by either _ITEM_SPRITES or
_draw_item_shape.
2026-05-16 15:38:45 +01:00
4bb00a798b Pawn labels: shift NameLabel above the 32×32 sprite
NameLabel was at y=-18 — sat right on top of the sprite head when
the body grew from 12px disc to 32×32 character sprite. Bumped to
y=-38 so the name floats above the sprite (which spans y=-24..+8).
StateLabel at y=+10 unchanged — already just below sprite bottom.

Also drop temporary atlas-idx audit log (debug-only, hash
distribution confirmed Bram=004 / Cora=013 / Edda=001).
2026-05-16 15:33:18 +01:00
6b32617328 Pawn sprite: show_behind_parent fix for invisible bodies
z_index=-1 was sinking the sprite below the floor TileMap (z=0), so
name labels rendered but bodies didn't. Using show_behind_parent=true
keeps the sprite at z=0 (above floor) while still drawing BEFORE the
parent's _draw() so selection ring + carry indicator overlay on top.
2026-05-16 15:28:49 +01:00
326fd84b90 memory.md: pawn reskin Slice 1 session log + 2 patterns 2026-05-16 15:23:51 +01:00
b4c9541eae Pawn reskin Slice 1 — peasant sprites replace coloured disc
Pawns now render as AnimatedSprite2D children sourced from ElvGames
"Farming Characters Pack" atlases (Pack 1, characters 001-015). Each
pawn picks one of 15 peasants deterministically from name hash:
Bram=004, Cora=013, Edda=001.

Animations: idle_down/left/right/up + walk_down/left/right/up (4 fps
idle, 8 fps walk, looped) + dead (single frame, no loop). Pawn picks
animation each _process tick from (is_downed, is_walking, facing).
Facing is now a Vector2i field updated in _advance_walk; round-trips
through save/load.

Sprite mounting is deferred from _ready() to setup() / from_dict()
because the atlas pick depends on pawn_name, which isn't assigned at
_ready time.  _mount_sprite() is idempotent for the save-load chain.

_atlas_for_pawn(pawn) is the single Slice-2 extension point —
swapping atlases based on equipped armor in a future sprint is a
one-function change.

_draw() stripped of body disc + downed-rotation; now overlay-only
(selection ring + carry indicator). AnimatedSprite2D child uses
z_index=-1 so the overlays stay on top.

45 PNGs copied into art/sprites/characters/ + 45 .import companions.
2026-05-16 15:23:18 +01:00
da55bf312c memory.md: record 'never free widget from own signal callback' pattern 2026-05-16 00:35:59 +01:00
4e09dea03a Fix bill-editor crash on mode-change and remove
The mode OptionButton and remove Button both called _populate_bills()
from inside their own signal callbacks. _populate_bills() rebuilds the
bill list — freeing the very widget mid-emit, which crashes Godot.

Defer the rebuild via call_deferred("_populate_bills") so it runs
after the signal frame completes. Reproduced by user changing a bill
from FOREVER → "Do until 10".
2026-05-16 00:35:42 +01:00
aba8476285 docs: mark Phase 17 'Bill UI for workbenches' as shipped 2026-05-16 00:30:20 +01:00
bdd435202d Workbench bill editor — tap a workbench, see/edit bills
Tap-to-select chain extended to workbenches (pawn always wins on shared
tile). Mutually exclusive with pawn selection via EventBus —
selecting one clears the other.

New WorkbenchPanel (scenes/ui/workbench_panel.gd, ~432 LOC, layer 18,
right-anchored 360 px) mirrors PawnDetailPanel shape. Bill rows expose
recipe name, mode (FOREVER / COUNT / UNTIL_N), target count, completed
progress, pause, and remove. Add-bill popup filters RecipeCatalog.all()
by accepted_skill so a Hearth only offers cooking recipes.

Supporting plumbing:
- EventBus.workbench_selected / workbench_deselected signals.
- Workbench.remove_bill() — interrupts mid-craft cleanly via
  on_craft_interrupted() before erasing.
- RecipeCatalog.all() static enumerator + Recipe.display_name() helper.
- World.workbench_at_tile() lookup.
- i18n keys ui.bill.* and ui.workbench.* in strings.gd.

Closes the deferred Phase 17 "Bill UI for workbenches" item. Player-
built workbenches are now functionally configurable; before this
landed, only world.gd-hardcoded bills worked.
2026-05-16 00:29:46 +01:00
e5f3693ad9 Workbench bill UI plan + 05-15 polish session log 2026-05-16 00:23:10 +01:00
c81e81723c Remove SW pre-made stockpiles + crates: items sit until player paints storage 2026-05-15 22:01:44 +01:00
61d3a6bd64 memory.md: workbench procedural redraws + tree 3-season variety 2026-05-15 20:23:51 +01:00
c97ada80d7 Procedural workbench redraws + 3-season tree variety
Workbenches: replace atlas sprites (which read as chest-of-drawers,
candle base, kitchen stove, cushion stack) with procedural _draw_ methods
following CremationPyre._draw_pyre's pattern. Carpenter shows a wood bench
with saw + log slabs; Smelter a stone furnace with smoking chimney; Hearth
a tall h=2 stone fireplace with arched opening + log fire; Millstone a
wood frame supporting a round grindstone wheel.

Trees: add Summer + Fall atlases alongside Spring (12 visual variants
from 4 silhouettes × 3 seasons). Selection hash mixes season independently
so neighbouring tiles don't all share the same palette.
2026-05-15 20:22:55 +01:00
133 changed files with 4521 additions and 274 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://qen8u4g1oee4"
path="res://.godot/imported/FG_Tree_Fall.png-63225671846c6354f20ce0b5e0a5e31e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/FG_Tree_Fall.png"
dest_files=["res://.godot/imported/FG_Tree_Fall.png-63225671846c6354f20ce0b5e0a5e31e.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: 636 B

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bws0uhalpfbln"
path="res://.godot/imported/FG_Tree_Stages.png-620ce94d31b96e88794dc081cb63ea2e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/FG_Tree_Stages.png"
dest_files=["res://.godot/imported/FG_Tree_Stages.png-620ce94d31b96e88794dc081cb63ea2e.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: 3.1 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cepguvswk8ecj"
path="res://.godot/imported/FG_Tree_Summer.png-1bc1b92f64d4677ada2e125e991dc553.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/FG_Tree_Summer.png"
dest_files=["res://.godot/imported/FG_Tree_Summer.png-1bc1b92f64d4677ada2e125e991dc553.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: 956 B

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dl5678nw0ak4q"
path="res://.godot/imported/Character_001_Dead.png-53f8a2c7c9d21301ad6ecc32b2e18e90.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_001_Dead.png"
dest_files=["res://.godot/imported/Character_001_Dead.png-53f8a2c7c9d21301ad6ecc32b2e18e90.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.8 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://vdtgxefdrv6h"
path="res://.godot/imported/Character_001_Idle.png-949c25bb7badfcc54ea7b50733e40589.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_001_Idle.png"
dest_files=["res://.godot/imported/Character_001_Idle.png-949c25bb7badfcc54ea7b50733e40589.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: 3.4 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bx7dgdvihp3kj"
path="res://.godot/imported/Character_001_Walk.png-84dbf748230688d019f76cc700c71c17.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_001_Walk.png"
dest_files=["res://.godot/imported/Character_001_Walk.png-84dbf748230688d019f76cc700c71c17.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: 876 B

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bvyms2xddxkky"
path="res://.godot/imported/Character_002_Dead.png-6e0015f8f83360b89fdd2ea19f2e0a7c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_002_Dead.png"
dest_files=["res://.godot/imported/Character_002_Dead.png-6e0015f8f83360b89fdd2ea19f2e0a7c.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.5 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://docwang41u716"
path="res://.godot/imported/Character_002_Idle.png-6255c26c24043e08900d4ae605cfeb76.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_002_Idle.png"
dest_files=["res://.godot/imported/Character_002_Idle.png-6255c26c24043e08900d4ae605cfeb76.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.9 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bris5vy0xmie6"
path="res://.godot/imported/Character_002_Walk.png-2734f78de0275bc238cdbc3320fddda0.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_002_Walk.png"
dest_files=["res://.godot/imported/Character_002_Walk.png-2734f78de0275bc238cdbc3320fddda0.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: 846 B

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dqdudpnru30hk"
path="res://.godot/imported/Character_003_Dead.png-1d1221ee02cee53c8990f3b4ff17debf.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_003_Dead.png"
dest_files=["res://.godot/imported/Character_003_Dead.png-1d1221ee02cee53c8990f3b4ff17debf.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.6 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cmirhu1042dd2"
path="res://.godot/imported/Character_003_Idle.png-a766339ea476ee9c81ef530027361cec.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_003_Idle.png"
dest_files=["res://.godot/imported/Character_003_Idle.png-a766339ea476ee9c81ef530027361cec.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: 3.1 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://qqwwf465ak8y"
path="res://.godot/imported/Character_003_Walk.png-00de2bb6ade98a02f8b195e4d53e072f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_003_Walk.png"
dest_files=["res://.godot/imported/Character_003_Walk.png-00de2bb6ade98a02f8b195e4d53e072f.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: 860 B

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cusg1ywjaxe38"
path="res://.godot/imported/Character_004_Dead.png-981400b980c80c3710e64738bd1cf562.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_004_Dead.png"
dest_files=["res://.godot/imported/Character_004_Dead.png-981400b980c80c3710e64738bd1cf562.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.6 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bgke8dpxels81"
path="res://.godot/imported/Character_004_Idle.png-342dbbc4500cc6871b75d10b5a4fc95f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_004_Idle.png"
dest_files=["res://.godot/imported/Character_004_Idle.png-342dbbc4500cc6871b75d10b5a4fc95f.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.9 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cm05cheuxkrtm"
path="res://.godot/imported/Character_004_Walk.png-d111e552e0083c96124a1b00f2599f41.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_004_Walk.png"
dest_files=["res://.godot/imported/Character_004_Walk.png-d111e552e0083c96124a1b00f2599f41.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: 922 B

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c1kkoepbenudx"
path="res://.godot/imported/Character_005_Dead.png-71cd93adab35964081cdb8b40879e3f1.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_005_Dead.png"
dest_files=["res://.godot/imported/Character_005_Dead.png-71cd93adab35964081cdb8b40879e3f1.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.6 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://doq7u1lurebfx"
path="res://.godot/imported/Character_005_Idle.png-26dd621a4b4777f2380bc2c5b6138d38.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_005_Idle.png"
dest_files=["res://.godot/imported/Character_005_Idle.png-26dd621a4b4777f2380bc2c5b6138d38.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: 3 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://btabpxr6tfheg"
path="res://.godot/imported/Character_005_Walk.png-3f89560bbea7fdef9a96610b7ac147fa.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_005_Walk.png"
dest_files=["res://.godot/imported/Character_005_Walk.png-3f89560bbea7fdef9a96610b7ac147fa.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: 952 B

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b4o73ivsxbg75"
path="res://.godot/imported/Character_006_Dead.png-8aed15fa6599b13181065136d33bde6f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_006_Dead.png"
dest_files=["res://.godot/imported/Character_006_Dead.png-8aed15fa6599b13181065136d33bde6f.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.9 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c2vhpfcn6ayla"
path="res://.godot/imported/Character_006_Idle.png-87c1a57347f63318a7da74a3696653fd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_006_Idle.png"
dest_files=["res://.godot/imported/Character_006_Idle.png-87c1a57347f63318a7da74a3696653fd.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: 3.4 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bq5ba7puv8mx1"
path="res://.godot/imported/Character_006_Walk.png-751a8de1d914918d6e78a313db34ee8e.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_006_Walk.png"
dest_files=["res://.godot/imported/Character_006_Walk.png-751a8de1d914918d6e78a313db34ee8e.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: 891 B

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://fvs0homlm10v"
path="res://.godot/imported/Character_007_Dead.png-5786612961751424d5bf62e4dbe77874.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_007_Dead.png"
dest_files=["res://.godot/imported/Character_007_Dead.png-5786612961751424d5bf62e4dbe77874.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.5 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://xc2nntg87xji"
path="res://.godot/imported/Character_007_Idle.png-0fa929882b6b9f3c123a27843c440ecd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_007_Idle.png"
dest_files=["res://.godot/imported/Character_007_Idle.png-0fa929882b6b9f3c123a27843c440ecd.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: 3.1 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dkojdn2l3jl0n"
path="res://.godot/imported/Character_007_Walk.png-34af3247b8cb2b63fd059aac5242294c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_007_Walk.png"
dest_files=["res://.godot/imported/Character_007_Walk.png-34af3247b8cb2b63fd059aac5242294c.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: 870 B

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://di1brsgcgwscn"
path="res://.godot/imported/Character_008_Dead.png-fd70bff68e81ace60033e4d24809d9fe.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_008_Dead.png"
dest_files=["res://.godot/imported/Character_008_Dead.png-fd70bff68e81ace60033e4d24809d9fe.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.2 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cvvpak354pxb7"
path="res://.godot/imported/Character_008_Idle.png-3f55478f0d4f6dabc7b8b70c3d3a37cd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_008_Idle.png"
dest_files=["res://.godot/imported/Character_008_Idle.png-3f55478f0d4f6dabc7b8b70c3d3a37cd.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.7 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c8stsomyh2rq7"
path="res://.godot/imported/Character_008_Walk.png-2275a9017262a05b52e927ec771e2094.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_008_Walk.png"
dest_files=["res://.godot/imported/Character_008_Walk.png-2275a9017262a05b52e927ec771e2094.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: 918 B

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bnq8iug5dhdag"
path="res://.godot/imported/Character_009_Dead.png-72043e0166ec8cec41355a2e3a00d7bd.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_009_Dead.png"
dest_files=["res://.godot/imported/Character_009_Dead.png-72043e0166ec8cec41355a2e3a00d7bd.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.5 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dhcaxufn8awxr"
path="res://.godot/imported/Character_009_Idle.png-0ab1c95e4e42dd0240b47ad8441fa4c7.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_009_Idle.png"
dest_files=["res://.godot/imported/Character_009_Idle.png-0ab1c95e4e42dd0240b47ad8441fa4c7.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.9 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://c6ytplnnfb3ou"
path="res://.godot/imported/Character_009_Walk.png-6cd650d24ac756f6bfd224f999d84b8f.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_009_Walk.png"
dest_files=["res://.godot/imported/Character_009_Walk.png-6cd650d24ac756f6bfd224f999d84b8f.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: 859 B

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://wjckyu6cd8v6"
path="res://.godot/imported/Character_010_Dead.png-89846b459c078f30bee90118f78a0755.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_010_Dead.png"
dest_files=["res://.godot/imported/Character_010_Dead.png-89846b459c078f30bee90118f78a0755.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.5 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cn7ar2h01prir"
path="res://.godot/imported/Character_010_Idle.png-dbb1408fdad0da2fd24a4c1fe75ae620.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_010_Idle.png"
dest_files=["res://.godot/imported/Character_010_Idle.png-dbb1408fdad0da2fd24a4c1fe75ae620.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.9 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dkfceshiwp5jt"
path="res://.godot/imported/Character_010_Walk.png-420aca922b9f619ed9216c39355318ab.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_010_Walk.png"
dest_files=["res://.godot/imported/Character_010_Walk.png-420aca922b9f619ed9216c39355318ab.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: 799 B

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://doa0vm7xo5f1b"
path="res://.godot/imported/Character_011_Dead.png-c52196730c14299395595c4ef3547c34.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_011_Dead.png"
dest_files=["res://.godot/imported/Character_011_Dead.png-c52196730c14299395595c4ef3547c34.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 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dgm07ylwoxuqr"
path="res://.godot/imported/Character_011_Idle.png-079aba020f914b64188e3e11000d6489.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_011_Idle.png"
dest_files=["res://.godot/imported/Character_011_Idle.png-079aba020f914b64188e3e11000d6489.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.6 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://caxnji7qtoftv"
path="res://.godot/imported/Character_011_Walk.png-e30d6c424901068d6cb1d62875371473.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_011_Walk.png"
dest_files=["res://.godot/imported/Character_011_Walk.png-e30d6c424901068d6cb1d62875371473.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: 866 B

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://pq2m7142tryg"
path="res://.godot/imported/Character_012_Dead.png-603daed2c7a3b9483442a2b9603dea68.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_012_Dead.png"
dest_files=["res://.godot/imported/Character_012_Dead.png-603daed2c7a3b9483442a2b9603dea68.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.6 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://y6bkvxi65e7v"
path="res://.godot/imported/Character_012_Idle.png-06d2acb1777ac4e3d84cc727341dcae5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_012_Idle.png"
dest_files=["res://.godot/imported/Character_012_Idle.png-06d2acb1777ac4e3d84cc727341dcae5.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: 3.1 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://bsekmrv5pihek"
path="res://.godot/imported/Character_012_Walk.png-716625a565eca83c3c36b0419ddd28f1.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_012_Walk.png"
dest_files=["res://.godot/imported/Character_012_Walk.png-716625a565eca83c3c36b0419ddd28f1.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: 893 B

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://daukgomwycsgk"
path="res://.godot/imported/Character_013_Dead.png-49b06f46b7fa82025b0265b91dca90b2.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_013_Dead.png"
dest_files=["res://.godot/imported/Character_013_Dead.png-49b06f46b7fa82025b0265b91dca90b2.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.7 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://ddkfrmcwb11bp"
path="res://.godot/imported/Character_013_Idle.png-7a5d4c80884c699f3b7a04bcfdddcc2b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_013_Idle.png"
dest_files=["res://.godot/imported/Character_013_Idle.png-7a5d4c80884c699f3b7a04bcfdddcc2b.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: 3.1 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://be4twnnlpy6m2"
path="res://.godot/imported/Character_013_Walk.png-03bdbadd3a5e3963af2bea56f7d34b60.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_013_Walk.png"
dest_files=["res://.godot/imported/Character_013_Walk.png-03bdbadd3a5e3963af2bea56f7d34b60.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: 859 B

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://cvwe1xf2f73y3"
path="res://.godot/imported/Character_014_Dead.png-23c4d06b6e3863989e695afff750ed5c.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_014_Dead.png"
dest_files=["res://.godot/imported/Character_014_Dead.png-23c4d06b6e3863989e695afff750ed5c.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.5 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://b777g0yu7owor"
path="res://.godot/imported/Character_014_Idle.png-8314784856576367ed93bcb8e4cc27aa.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_014_Idle.png"
dest_files=["res://.godot/imported/Character_014_Idle.png-8314784856576367ed93bcb8e4cc27aa.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: 3 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://vpdry2yyekvo"
path="res://.godot/imported/Character_014_Walk.png-bab0cfac7c66a94dcc7be5d5366bb948.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_014_Walk.png"
dest_files=["res://.godot/imported/Character_014_Walk.png-bab0cfac7c66a94dcc7be5d5366bb948.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: 845 B

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://n71lbmxkvioh"
path="res://.godot/imported/Character_015_Dead.png-b074949bcb971d96a392e2128c495ea5.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_015_Dead.png"
dest_files=["res://.godot/imported/Character_015_Dead.png-b074949bcb971d96a392e2128c495ea5.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.6 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://26c1bs1sbswi"
path="res://.godot/imported/Character_015_Idle.png-60b87cac6c8d2f27723308ffa4335d7d.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_015_Idle.png"
dest_files=["res://.godot/imported/Character_015_Idle.png-60b87cac6c8d2f27723308ffa4335d7d.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.8 KiB

View file

@ -0,0 +1,40 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://by474ej7lcv2q"
path="res://.godot/imported/Character_015_Walk.png-460f8657e875d12969b60f14c3147049.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://art/sprites/characters/Character_015_Walk.png"
dest_files=["res://.godot/imported/Character_015_Walk.png-460f8657e875d12969b60f14c3147049.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

@ -55,6 +55,8 @@ signal load_finished(slot: StringName, ok: bool, real_seconds_away: int) ## Emit
# Phase 17 — Touch UX completion.
signal pawn_selected(pawn) ## Emitted when Selection picks a pawn — opens PawnDetailPanel.
signal pawn_deselected ## Emitted when Selection clears — closes PawnDetailPanel.
signal workbench_selected(workbench)
signal workbench_deselected
signal pawn_priority_changed(pawn, category: StringName, level: int) ## Emitted when priority matrix updates a cell.
signal alert_added(severity: StringName, text: String, focus_tile: Vector2i) ## Emitted by gameplay subsystems to surface a player notice. severity = info | warn | danger.
signal request_wolf_spawn(count: int) ## Phase 15 EventCatalog → WolfSpawner. Decouples threat-event effects from spawner.

View file

@ -29,6 +29,7 @@ const _PAWN_SCENE: PackedScene = preload("res://scenes/pawn/pawn.tscn")
const _TREE_SCENE: PackedScene = preload("res://scenes/entities/tree.tscn")
const _ROCK_SCENE: PackedScene = preload("res://scenes/entities/rock.tscn")
const _BIG_ROCK_SCENE: PackedScene = preload("res://scenes/entities/big_rock.tscn")
const _BIG_ROCK_NODE_SCENE: PackedScene = preload("res://scenes/entities/big_rock_node.tscn")
const _ITEM_SCENE: PackedScene = preload("res://scenes/entities/item.tscn")
const _WALL_SCENE: PackedScene = preload("res://scenes/entities/wall.tscn")
const _FLOOR_SCENE: PackedScene = preload("res://scenes/entities/floor.tscn")
@ -276,6 +277,7 @@ func _collect_entities() -> Array:
var registries: Array = [
World.trees,
World.rocks,
World.big_rock_nodes,
World.items,
World.build_queue, # ghost walls / floors / doors / grave_slots
World.doors,
@ -316,6 +318,7 @@ const _SPAWN_PRIORITY: Dictionary = {
&"tree": 0,
&"rock": 0,
&"big_rock": 0,
&"big_rock_node": 0,
&"wall": 0,
&"floor": 0,
&"door": 1,
@ -351,6 +354,7 @@ func _register_factories() -> void:
_factories[&"tree"] = _spawn_tree
_factories[&"rock"] = _spawn_rock
_factories[&"big_rock"] = _spawn_big_rock
_factories[&"big_rock_node"] = _spawn_big_rock_node
_factories[&"item"] = _spawn_item
_factories[&"wall"] = _spawn_wall
_factories[&"floor"] = _spawn_floor
@ -377,8 +381,18 @@ func _register_factories() -> void:
func _spawn_tree(world_scene: Node, d: Dictionary) -> void:
var ent = _TREE_SCENE.instantiate()
world_scene.add_child(ent)
ent.setup(Vector2i(int(d.get("tile_x", 0)), int(d.get("tile_y", 0))))
# Pass growth_stage to setup() so _refresh_sprite() picks the right visual.
# Default 3 (STAGE_MATURE) so pre-growth-system saves load as mature trees.
var gs: int = int(d.get("growth_stage", 3))
ent.setup(Vector2i(int(d.get("tile_x", 0)), int(d.get("tile_y", 0))), gs)
ent.chop_progress = int(d.get("chop_progress", 0))
ent.growth_progress = int(d.get("growth_progress", 0))
ent.chop_designated = bool(d.get("chop_designated", false))
ent.pending_plant = bool(d.get("pending_plant", false))
ent._plant_progress = int(d.get("plant_progress", 0))
# Re-register as build site if planting is still in progress.
if ent.pending_plant:
World.register_build_site(ent)
ent.queue_redraw()
@ -398,6 +412,14 @@ func _spawn_big_rock(world_scene: Node, d: Dictionary) -> void:
ent.queue_redraw()
func _spawn_big_rock_node(world_scene: Node, d: Dictionary) -> void:
var ent = _BIG_ROCK_NODE_SCENE.instantiate()
world_scene.add_child(ent)
ent.setup(Vector2i(int(d.get("tile_x", 0)), int(d.get("tile_y", 0))))
ent.is_quarry_site = bool(d.get("is_quarry_site", false))
ent.queue_redraw()
func _spawn_item(world_scene: Node, d: Dictionary) -> void:
var ent = _ITEM_SCENE.instantiate()
world_scene.add_child(ent)
@ -407,6 +429,8 @@ func _spawn_item(world_scene: Node, d: Dictionary) -> void:
Vector2i(int(d.get("tile_x", 0)), int(d.get("tile_y", 0)))
)
ent.quality = int(d.get("quality", 1)) as Item.Quality
ent.subtype = StringName(d.get("subtype", ""))
ent.queue_redraw()
func _spawn_wall(world_scene: Node, d: Dictionary) -> void:

View file

@ -194,8 +194,27 @@ const TABLE: Dictionary = {
&"tool.workbench_millstone": "Millstone",
&"tool.workbench_hearth": "Hearth",
&"tool.workbench_cremation_pyre": "Cremation Pyre",
&"tool.paint_quarry": "Build quarry",
&"tool.stockpile_general": "Stockpile",
&"tool.graveyard": "Graveyard",
&"tool.plant_tree": "Plant tree",
# Tree growth stage names (shown in inspect tooltip).
&"tree.stage.sapling": "Sapling",
&"tree.stage.young": "Young tree",
&"tree.stage.growing": "Growing tree",
&"tree.stage.mature": "Mature tree",
&"ui.bill.mode_forever": "Forever",
&"ui.bill.mode_count": "Do X times",
&"ui.bill.mode_until_n": "Do until X",
&"ui.bill.target": "Target",
&"ui.bill.until_count": "Until count",
&"ui.bill.completed": "Done",
&"ui.bill.pause": "Pause",
&"ui.bill.remove": "Remove",
&"ui.bill.add_button": "Add bill",
&"ui.bill.no_bills_hint": "No bills. Add one to start crafting.",
&"ui.workbench.current_bill": "Current",
&"ui.workbench.idle": "Idle",
}

View file

@ -19,6 +19,7 @@ var work_providers: Array = []
# from their _ready/_exit_tree. Phase 16 will add stable IDs and persistence wiring.
var trees: Array = [] # Array of Tree
var rocks: Array = [] # Array of Rock
var big_rock_nodes: Array = [] # Array of BigRockNode (permanent stone outcrops)
var items: Array = [] # Array of Item (on-floor stacks)
var stockpiles: Array = [] # Array of StorageDestination (StockpileZone for now; containers Phase 5)
@ -124,6 +125,15 @@ func pawn_at_tile(tile: Vector2i) -> Pawn:
return null
## Returns the Workbench occupying `tile`, or null if none. Used by Selection
## to route taps on a workbench to the bill-editor panel.
func workbench_at_tile(tile: Vector2i):
for w in workbenches:
if w.tile == tile:
return w
return null
func clear_pawns() -> void:
# For save-load / new-game flow in Phase 16.
pawns.clear()
@ -198,6 +208,24 @@ func unregister_rock(r) -> void:
rocks.erase(r)
func register_big_rock_node(n) -> void:
if not big_rock_nodes.has(n):
big_rock_nodes.append(n)
func unregister_big_rock_node(n) -> void:
big_rock_nodes.erase(n)
## Returns the BigRockNode whose 2×2 footprint covers `tile`, or null.
## Used by `paint_quarry` designation to validate the build site.
func big_rock_node_at_tile(tile: Vector2i):
for n in big_rock_nodes:
if n.is_at(tile):
return n
return null
func register_item(it) -> void:
if items.has(it):
return

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