16 Commits

Author SHA1 Message Date
darknight ae3530ad30 Merge pull request 'Migrate to Godot 4' (#1) from feature/godot-migration into main
Build Puzzle Quest / Validate GDScript (push) Successful in 25s
Build Puzzle Quest / Lint GDScript (push) Successful in 26s
Build Puzzle Quest / Export Windows (push) Successful in 6m19s
Build Puzzle Quest / Export Linux (push) Successful in 6m58s
Build Puzzle Quest / Export Android (push) Successful in 7m19s
Reviewed-on: #1
2026-05-17 21:32:25 +02:00
Vaillant Jeremy d7956ecdb4 chore(assets): re-import prop textures for ETC2/ASTC
Build Puzzle Quest / Validate GDScript (push) Successful in 27s
Build Puzzle Quest / Validate GDScript (pull_request) Successful in 37s
Build Puzzle Quest / Export Linux (push) Failing after 0s
Build Puzzle Quest / Export Windows (push) Failing after 0s
Build Puzzle Quest / Export Android (push) Failing after 0s
Build Puzzle Quest / Lint GDScript (push) Successful in 50s
Build Puzzle Quest / Lint GDScript (pull_request) Successful in 48s
Build Puzzle Quest / Export Linux (pull_request) Successful in 6m3s
Build Puzzle Quest / Export Windows (pull_request) Successful in 6m24s
Build Puzzle Quest / Export Android (pull_request) Successful in 7m8s
Adds the etc2 dest path + "etc2_astc" import format to every prop
texture sidecar. Generated by `godot --headless --import` after
flipping rendering/textures/vram_compression/import_etc2_astc to
true in project.godot (commit 46ab28f). Without these sidecars,
re-running --import on a clean checkout would regenerate them
anyway, but committing keeps imported_formats deterministic and
avoids spurious diffs on every CI / dev machine.

39 .import files touched, all under assets/props/. No texture
binaries changed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 21:19:05 +02:00
Vaillant Jeremy 4f9fa60fa0 ci(android): explicit apksigner step after Godot export
Build Puzzle Quest / Lint GDScript (push) Successful in 29s
Build Puzzle Quest / Validate GDScript (push) Successful in 35s
Build Puzzle Quest / Validate GDScript (pull_request) Successful in 39s
Build Puzzle Quest / Lint GDScript (pull_request) Successful in 23s
Build Puzzle Quest / Export Linux (push) Successful in 6m32s
Build Puzzle Quest / Export Windows (push) Successful in 6m44s
Build Puzzle Quest / Export Android (push) Successful in 7m41s
Build Puzzle Quest / Export Windows (pull_request) Successful in 5m30s
Build Puzzle Quest / Export Linux (pull_request) Successful in 6m10s
Build Puzzle Quest / Export Android (pull_request) Successful in 6m48s
Godot 4.6 produces an unsigned APK in headless mode on this
runner — verified by apksigner: "DOES NOT VERIFY, Missing
META-INF/MANIFEST.MF". The internal sign step seems to bail
silently (likely because the apksigner subprocess can't locate
java without inheriting JAVA_HOME). The export step still
reports success.

Sign the APK ourselves after the export with the same debug
keystore the workflow provisions. Idempotent if Godot ever
starts signing again; mandatory until then.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 20:59:33 +02:00
Vaillant Jeremy 46ab28f76f fix(android): enable ETC2/ASTC import + use versioned editor settings
Build Puzzle Quest / Validate GDScript (push) Successful in 25s
Build Puzzle Quest / Lint GDScript (push) Successful in 26s
Build Puzzle Quest / Lint GDScript (pull_request) Successful in 40s
Build Puzzle Quest / Validate GDScript (pull_request) Successful in 48s
Build Puzzle Quest / Export Linux (push) Successful in 6m18s
Build Puzzle Quest / Export Windows (push) Successful in 5m43s
Build Puzzle Quest / Export Android (push) Successful in 8m44s
Build Puzzle Quest / Export Linux (pull_request) Successful in 7m0s
Build Puzzle Quest / Export Windows (pull_request) Successful in 6m58s
Build Puzzle Quest / Export Android (pull_request) Successful in 5m34s
Two fixes that finally land the Android export. Verified locally
with godot 4.6.2-arch + downloaded 4.6 templates + Android SDK.

- project.godot: add
  rendering/textures/vram_compression/import_etc2_astc=true.
  Without it Godot refuses the Android export with "La plateforme
  cible nécessite une compression de texture « ETC2/ASTC »". In
  headless mode this surfaces as an *empty* configuration-errors
  block, which is what kept us stuck in CI.

- workflow: write Godot editor settings to
  editor_settings-${GODOT_VERSION}.tres (i.e. -4.6.tres on 4.6),
  not -4.tres. Godot 4.5+ uses a minor-version-suffixed settings
  file; the major-only name is ignored by 4.6, so our injected
  android_sdk_path / java_sdk_path / debug_keystore never reached
  the export plugin.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 20:35:58 +02:00
Vaillant Jeremy 918328c42a fix(android): set explicit package/unique_name for export
Build Puzzle Quest / Lint GDScript (push) Successful in 30s
Build Puzzle Quest / Validate GDScript (push) Successful in 32s
Build Puzzle Quest / Validate GDScript (pull_request) Successful in 37s
Build Puzzle Quest / Lint GDScript (pull_request) Successful in 19s
Build Puzzle Quest / Export Windows (push) Successful in 5m4s
Build Puzzle Quest / Export Android (push) Failing after 7m32s
Build Puzzle Quest / Export Linux (push) Successful in 8m21s
Build Puzzle Quest / Export Linux (pull_request) Successful in 4m35s
Build Puzzle Quest / Export Windows (pull_request) Successful in 4m34s
Build Puzzle Quest / Export Android (pull_request) Failing after 5m16s
The Android export preset relied on Godot's $genname placeholder
("org.godotengine.$genname"). With the project name "Puzzle
Quest" containing a space, Godot 4 refuses the headless export
with:

  The project name does not meet the requirement for the package
  name format and will be updated to "puzzlequest". Please
  explicitly specify the package name if needed.

Pin both Android presets (AndroidTesting, AndroidDebug) to
com.devcrea.puzzlequest — clean, follows reverse-DNS, matches
the DevCrea organization.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 20:06:40 +02:00
Vaillant Jeremy fbc2b9247a ci: comment macOS, empty Windows icon path, fix Android keystore preset
Build Puzzle Quest / Validate GDScript (push) Successful in 43s
Build Puzzle Quest / Lint GDScript (push) Successful in 32s
Build Puzzle Quest / Export Windows (pull_request) Has been skipped
Build Puzzle Quest / Export Linux (push) Failing after 0s
Build Puzzle Quest / Export Windows (push) Failing after 1s
Build Puzzle Quest / Export Android (push) Failing after 0s
Build Puzzle Quest / Validate GDScript (pull_request) Successful in 25s
Build Puzzle Quest / Lint GDScript (pull_request) Successful in 26s
Build Puzzle Quest / Export Linux (pull_request) Successful in 4m9s
Build Puzzle Quest / Export Android (pull_request) Failing after 5m2s
Three follow-ups from run #12:

- export-desktop: comment out the macOS matrix entry. The preset
  is still missing in export_presets.cfg; the entry can be
  uncommented once the macOS preset is added in the Godot editor.

- export Windows: `application/icon` referenced
  res://releases/windows/project.ico, which has never been in the
  repo (releases/windows/ holds only .keep). Godot rejected the
  export with "Invalid icon path". Cleared the field in both
  WindowsDebug and WindowsTesting presets — Godot falls back to
  its built-in icon.

- export-android: Godot validation requires all three of
  keystore/debug{,_user,_password} to be set together (or all
  empty). The keystore step only patched keystore/debug and left
  the other two empty, triggering
  "Either Debug Keystore, Debug User AND Debug Password must be
  configured OR none of them". Patch all three now.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 19:39:42 +02:00
Vaillant Jeremy 4e159b1065 ci: fix lint venv, drop artifact cache, fix Android sdkmanager pipe
Build Puzzle Quest / Lint GDScript (push) Successful in 33s
Build Puzzle Quest / Validate GDScript (pull_request) Successful in 33s
Build Puzzle Quest / Validate GDScript (push) Successful in 42s
Build Puzzle Quest / Lint GDScript (pull_request) Successful in 25s
Build Puzzle Quest / Export macOS (pull_request) Failing after 4m55s
Build Puzzle Quest / Export Linux (pull_request) Successful in 7m3s
Build Puzzle Quest / Export Windows (pull_request) Failing after 6m53s
Build Puzzle Quest / Export Android (pull_request) Failing after 6m16s
Build Puzzle Quest / Export macOS (push) Failing after 6m27s
Build Puzzle Quest / Export Linux (push) Successful in 6m44s
Build Puzzle Quest / Export Windows (push) Failing after 4m48s
Build Puzzle Quest / Export Android (push) Failing after 4m23s
Three follow-up fixes from the first non-container run (#10):

- lint: Ubuntu 24.04 / Python 3.12 enforces PEP 668, so
  `pip install --user` exits with externally-managed-environment.
  Install gdtoolkit into a throwaway venv at /tmp/gdlint-venv
  instead.

- exports: drop the .godot/ artifact cache shared between
  `validate` and the export jobs. Gitea's artifact service returns
  404 on actions/download-artifact@v3 (v3 protocol incomplete on
  this server). Each export job now runs its own
  `godot --headless --import` before exporting — costs ~30s but
  avoids the failing cross-job artifact dependency.

- export-android: `yes | sdkmanager --licenses` returned 141
  (SIGPIPE) under `set -o pipefail` because sdkmanager closes
  stdin after accepting all licenses while `yes` keeps writing.
  Feed a finite `printf 'y\n%.0s' {1..50}` instead.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 19:26:06 +02:00
Vaillant Jeremy db2460b9ee ci: drop container: for Godot jobs, install via composite action
Build Puzzle Quest / Lint GDScript (push) Failing after 15s
Build Puzzle Quest / Lint GDScript (pull_request) Failing after 16s
Build Puzzle Quest / Validate GDScript (push) Successful in 47s
Build Puzzle Quest / Validate GDScript (pull_request) Successful in 50s
Build Puzzle Quest / Export Linux (push) Failing after 6m5s
Build Puzzle Quest / Export macOS (push) Failing after 7m5s
Build Puzzle Quest / Export Windows (push) Failing after 7m14s
Build Puzzle Quest / Export Android (push) Failing after 5m45s
Build Puzzle Quest / Export Linux (pull_request) Failing after 7m10s
Build Puzzle Quest / Export macOS (pull_request) Failing after 7m24s
Build Puzzle Quest / Export Windows (pull_request) Failing after 4m7s
Build Puzzle Quest / Export Android (pull_request) Failing after 3m3s
The first Gitea Actions runs failed at actions/checkout@v4 because
barichello/godot-ci:4.6 ships without Node.js, which the JS-based
checkout action requires. Rather than chase a Godot CI image that
bundles Node, drop the container: blocks entirely: the default
catthehacker/ubuntu:act-latest runner image already has Node /
Python / git / JDK, and Godot is installed per-job from the
official GitHub release.

Pulled the install logic into a local composite action at
.gitea/actions/setup-godot/ to avoid duplicating 15 lines of wget +
unzip across the three Godot-using jobs. Inputs:
  - version  (default 4.6)
  - templates (default false — export jobs flip to true)

Other tweaks:
- export-android now puts $ANDROID_HOME under $GITHUB_WORKSPACE so
  no sudo is needed; editor_settings-4.tres interpolates that path.
- export-android writes the keystore under /tmp instead of /root
  (catthehacker runners don't run as root).

README updated: jobs table reflects the new "Tooling installed by the
job" column, prerequisites no longer mention the Docker image, and
known-issue #1 is closed out with the dated fix.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 18:30:57 +02:00
Vaillant Jeremy 734b5931e9 docs(ci): record first-run failures + URL prefix fix
Adds a "Known issues from first runs" section to the workflow
README capturing what broke on 2026-05-17:

- Container jobs (validate, export-*) fail at actions/checkout@v4
  with `node: not found` because barichello/godot-ci:4.6 has no Node.
  Workflow fix pending.
- The earlier `actions/checkout` URL-prefix problem (Gitea behind
  YunoHost at /gitea/) is now resolved server-side by moving Gitea
  to the root; the note records this for future reference.
- Default-branch mismatch (Gitea = main, CLAUDE.md says dev).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 18:22:16 +02:00
Vaillant Jeremy 2d8ca9dfbb ci: trigger workflow on feature/godot-migration too
Build Puzzle Quest / Lint GDScript (push) Failing after 28s
Build Puzzle Quest / Export Linux (push) Has been cancelled
Build Puzzle Quest / Export macOS (push) Has been cancelled
Build Puzzle Quest / Export Windows (push) Has been cancelled
Build Puzzle Quest / Export Android (push) Has been cancelled
Build Puzzle Quest / Validate GDScript (push) Has been cancelled
Build Puzzle Quest / Lint GDScript (pull_request) Failing after 21s
Build Puzzle Quest / Export macOS (pull_request) Has been skipped
Build Puzzle Quest / Export Windows (pull_request) Has been skipped
Build Puzzle Quest / Validate GDScript (pull_request) Failing after 4m14s
Build Puzzle Quest / Export Linux (pull_request) Has been skipped
Build Puzzle Quest / Export Android (pull_request) Has been skipped
Temporary addition so the workflow can run before the branch is
merged into dev. Remove this branch from the push: list once dev
has the workflow.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 16:38:19 +02:00
Vaillant Jeremy 238fccef95 Fix gdlint findings in Global / Database / Levels
- Global.gd: move @onready var animation below the regular vars
  (gdlint class-definitions-order expects onready vars after
  public/private vars).
- Database.gd::DB: move the three _*_PROPS constants above the vars
  (constants come before vars in a class body).
- Levels.gd:_search_button_to_use: drop the elif after a branch
  that returns (no-elif-return).
- Levels.gd:_gyroscope_changed_{down,up}: continuation lines of the
  multi-line return mixed two tabs + three spaces; normalised to
  pure tabs.

No semantic change: @onready is property-level so source ordering
doesn't affect init; elif after a return is equivalent to if; the
continuation indent is cosmetic.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 14:48:20 +02:00
Vaillant Jeremy e883d662f2 Add gdlint job + gdlintrc to Gitea CI
Lints scripts/, db/, scenes/ via gdtoolkit==4.* on ubuntu-latest
(Python, no Godot needed), in parallel with the validate job.
addons/ (third-party LOD plugin) and developers/ (sandbox) are
left out. Non-blocking for now: the export jobs still only need
validate, so a lint regression won't break builds while the
Godot-3 leftover code is being cleaned up.

gdlintrc bumps max-line-length from 100 to 140 because Godot
$-style node paths and typed signatures routinely push past 100
without that being a real readability problem.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 14:48:13 +02:00
Vaillant Jeremy 410c135870 Replace Drone CI with Gitea Actions workflow
Drone server is gone; CI now lives in .gitea/workflows/build.yml.
Three jobs: GDScript validation (godot --headless --import + error
grep), desktop matrix (Windows / Linux / macOS), and Android (JDK 17
+ SDK installed at runtime, keystore from ANDROID_KEYSTORE_BASE64
secret or generated). Build only — Butler / itch.io deploy not wired.

Notes in .gitea/workflows/README.md cover the Godot-4 pre-reqs
(macOS preset to add, Linux/X11Debug likely renamed on first 4.x
save, Docker image tag) and how to plug Butler back in later.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 12:36:34 +02:00
Vaillant Jeremy d61a0ffcb0 Add developers/.gdignore; let Godot 4 canonicalise saved scenes
The developers/aurelien sandbox scenes still reference legacy non-LOD
mesh paths (sm_book.mesh, sm_candlestick.mesh, ...) that don't exist
anymore — the production scenes were migrated to *_lod0/1/2.mesh.
Godot's full-project file scanner reads every .tscn at editor open
and emits 'Cannot open file' errors for each broken ext_resource,
even for scenes that the game never loads.

Mark developers/ as out-of-scope for Godot's filesystem walker with
a .gdignore at its root. The .import / .uid sidecars Godot had
generated for files inside (CheckLightmap.exr.import,
CheckLightmap.gd.uid) are auto-removed by the editor since they are
now orphaned metadata — only the source files (.tscn, .gd, .exr,
.lmbake) remain. Re-enabling the sandbox later just means deleting
the .gdignore; Godot will regenerate the sidecars.

The other diffs in this commit are Godot 4 canonicalising whatever
.tscn / .tres files were touched in the editor session that ran the
LightmapGI bake attempt: ext_resource uid= attributes added, format
bumped 2 -> 3, property order normalised. No behavioural change.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 22:24:19 +02:00
Vaillant Jeremy 6146d84b87 Fix Levels.gd type inference + Database integer-division warning + brighten scenes
- scenes/levels/Levels.gd: replace 'var level := Global.database
  .level_by_index(...)' with explicit 'var level: LevelEntry = ...'.
  Global.database is typed RefCounted so the parser can't see DB's
  return types through the walrus operator. Two callsites.
- scripts/Database.gd: annotate the two 'range(data.size() / W)'
  loops with @warning_ignore('integer_division'). The division is
  intentional (row count = bytes / row width); Godot 4 warns by
  default in case the slash was a typo.
- env: ambient_light_energy 0.4 -> 1.0 in WarCraft.tscn, Home.tscn
  and env_warcraft.tres. 0.4 left the floor pitch-black; 1.0 is a
  compromise between the original 1.55 (oversaturated) and this.
  Re-baking the lightmap in the editor is still the right fix —
  this commit just keeps the scene playable in the meantime.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 22:02:59 +02:00
Vaillant Jeremy c17769246f Replace M* table-wrapper classes with typed Resources; add type hints
Two related cleanups from the best-practice audit:

Task 3 — typed Resources instead of MBase / MScene / MLevel / MSetting

The old model classes wrapped the godot_db_manager Table API: each row
read went through table.get_data_at_row_idx(int), Cell.get_data(),
and 'as int' / 'as String' casts that don't actually parse anything
in Godot 4. m_value, m_lock, m_label, ... members shadowed the cell
indirection. Setters round-tripped through table.edit_data() +
Global.database.save_db(). That's a lot of plumbing for what is, in
the end, three flat tables of static strings.

Introduce three @export-typed Resources:
  db/scene_entry.gd     class_name SceneEntry
  db/level_entry.gd     class_name LevelEntry
  db/settings_data.gd   class_name SettingsData

Rewrite scripts/Database.gd so Database.DB holds:
  settings: SettingsData
  levels:   Array[LevelEntry]
  scenes:   Array[SceneEntry]

Build them once at startup from ahog.json, and serialise back to the
same JSON shape on save() so existing progress files keep working.
LevelEntry carries its own object_to_find / object_finding / reset
methods (talking to Global.database for cross-table lookups), and
SceneEntry carries its own mesh_path / audio_sound. Per-scene
dissolve state (value, tick_reference, dissolved) lives on
SceneEntry as non-exported runtime fields.

Delete db/MBase.gd / db/MScene.gd / db/MLevel.gd / db/MSetting.gd.

Update consumers:
- scripts/Setting.gd: read/write Global.database.settings directly,
  call Global.database.save() after each setter.
- scenes/levels/Levels.gd: iterate Global.database.scenes_for_level(
  current_scene_int) instead of mscene.new(i) for every row; scene
  state reads (scene.lock, scene.mesh, scene.counter, ...) replace
  scene.lock() / scene.mesh() / scene.counter() method calls; runtime
  dissolve state lives on the SceneEntry instance instead of mutable
  m_value / m_tick_reference members on MScene; 'dissolved' flag
  replaces set_mesh(null) signalling.
- scenes/UI/choose_scenes/ChooseScene.gd: iterate Global.database
  .levels; level.name / level.thumb property access in place of
  level.name() / level.thumbnail(). configure_reset() loses its
  redundant index argument (LevelEntry knows its own index).
- scripts/event.gd: _on_reset_level signature now takes LevelEntry,
  reset path drops index forwarding.

Task 2 — type hints across the remaining scripts

scripts/Global.gd, scenes/Main.gd, scenes/UI/ending/Ending.gd,
scenes/UI/loading/Loading.gd, scenes/UI/settings/Settings.gd: add
typed parameters and -> return annotations. current_scene_int is now
'int = -1' (sentinel) so callers don't fall into Variant comparisons;
event.gd:_on_reset_level resets it to -1 instead of null.
Settings.gd no longer wraps button_pressed in int() before passing to
the now-typed bool setters.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-16 21:58:11 +02:00
116 changed files with 1645 additions and 2038 deletions
+43
View File
@@ -0,0 +1,43 @@
name: Setup Godot
description: Download a Godot headless Linux binary and (optionally) export templates.
inputs:
version:
description: Godot version (e.g. 4.6). Templates land under <version>.stable.
required: false
default: "4.6"
templates:
description: Install export templates too. "true" / "false".
required: false
default: "false"
runs:
using: composite
steps:
- name: Install Godot ${{ inputs.version }}
shell: bash
run: |
set -euo pipefail
VER="${{ inputs.version }}"
URL="https://github.com/godotengine/godot/releases/download/${VER}-stable/Godot_v${VER}-stable_linux.x86_64.zip"
wget -q "$URL" -O /tmp/godot.zip
mkdir -p "$HOME/bin"
unzip -q /tmp/godot.zip -d /tmp
mv "/tmp/Godot_v${VER}-stable_linux.x86_64" "$HOME/bin/godot"
chmod +x "$HOME/bin/godot"
echo "$HOME/bin" >> "$GITHUB_PATH"
"$HOME/bin/godot" --version
- name: Install export templates
if: inputs.templates == 'true'
shell: bash
run: |
set -euo pipefail
VER="${{ inputs.version }}"
URL="https://github.com/godotengine/godot/releases/download/${VER}-stable/Godot_v${VER}-stable_export_templates.tpz"
wget -q "$URL" -O /tmp/templates.tpz
DEST="$HOME/.local/share/godot/export_templates/${VER}.stable"
mkdir -p "$DEST"
unzip -q /tmp/templates.tpz -d /tmp/templates_extracted
mv /tmp/templates_extracted/templates/* "$DEST/"
ls "$DEST" | head
+118
View File
@@ -0,0 +1,118 @@
# Gitea Actions CI
Workflow defined in [`build.yml`](./build.yml). Triggered on push / PR to
`dev` and `main`, or manually via `workflow_dispatch`.
## Jobs
All jobs run on the default `ubuntu-latest` runner image (which already
ships Node, Python, git, wget, unzip, etc.). Godot is installed per-job
via the local composite action [`.gitea/actions/setup-godot`](../actions/setup-godot/action.yml),
which downloads the official Linux binary from the godotengine GitHub
release and (optionally) export templates into `$HOME`.
| Job | Tooling installed by the job | Role |
|------------------|---------------------------------------------------------------------------|------------------------------------------------------------------------------------------|
| `validate` | Godot binary (no templates) | `godot --headless --import` then grep for `SCRIPT ERROR` / `Parse Error`. Uploads `.godot/` cache. |
| `lint` | `gdtoolkit==4.*` via `pip` | `gdlint scripts db scenes`. Parallel to `validate`; does not gate exports yet. |
| `export-desktop` | Godot binary + export templates | Matrix: Windows / Linux / macOS. Reuses the import cache, uploads each binary as artifact. |
| `export-android` | Godot binary + export templates + JDK 17 + Android SDK (under `$GITHUB_WORKSPACE/.android-sdk`) | Provisions keystore, writes `editor_settings-4.tres` with SDK / JDK paths, exports APK. |
Artifacts are kept 14 days, accessible from the Gitea run page.
## Prerequisites before the first successful run
1. **Godot version**`GODOT_VERSION` is set at the top of the workflow
(currently `4.6`). The setup action expects a stable release on the
godotengine GitHub releases page; bump in lockstep with the project.
2. **macOS preset missing** — add it in Godot Editor → Project → Export →
Add → macOS, name it exactly `macOS` (or change the matrix entry). The
`.zip` will be unsigned; on Mac it needs
`xattr -dr com.apple.quarantine` to launch.
3. **`Linux/X11Debug` preset** — Godot-3-era name. Reopen the project in
Godot 4 once and re-save the preset (the editor may rename it). Update
the matrix `preset:` field accordingly if it does.
4. **Gitea runner**`act_runner` with the default
`catthehacker/ubuntu:act-latest` image is enough; no Docker-in-Docker
needed now that no job uses `container:`. The runner must reach
`github.com` (for actions + Godot release downloads) and
`dl.google.com` (for the Android SDK).
5. **Optional secret** `ANDROID_KEYSTORE_BASE64``base64 -w0 debug.keystore`,
stored as a Gitea repo secret. Without it, a throwaway keystore is
generated per run, so the APK signature changes every build.
## Linting
`gdlint` (from Scony's `gdtoolkit`) runs in the `lint` job over `scripts/`,
`db/`, and `scenes/`. `addons/` (third-party LOD plugin) and `developers/`
(sandbox) are intentionally excluded.
The job is **non-blocking** today — the export jobs only depend on
`validate`, so a lint failure prints warnings but still produces binaries.
Once the codebase is clean, switch the export jobs' `needs: validate` to
`needs: [validate, lint]` to make lint a hard gate.
Suppress specific rules per-line with `# gdlint: disable=<rule>` or
project-wide with a `gdlintrc` file at the repo root (see
[gdtoolkit docs](https://github.com/Scony/godot-gdscript-toolkit/wiki)).
## Known issues from first runs
Captured from the first triggered runs on `feature/godot-migration`
(2026-05-17). Both must be resolved before the workflow can pass.
### 1. Container jobs failed with `node: not found` (resolved 2026-05-17)
The first runs used `container: barichello/godot-ci:4.6` for the Godot
jobs. That image does not ship Node.js, so `actions/checkout@v4` (a JS
action) crashed at startup with
`OCI runtime exec failed: exec: "node": executable file not found`.
Resolved by removing every `container:` block. The runner's default
`catthehacker/ubuntu:act-latest` image already has Node / Python / git /
JDK, and Godot is now installed at the start of each job via the local
composite action `.gitea/actions/setup-godot/`.
### 2. `actions/checkout` clones the wrong URL (resolved 2026-05-17)
The first runs failed at clone time because the runner asked for
`https://dev.stilobique.com/darknight/puzzle-quest/info/refs` while
Gitea was mounted under `/gitea/` behind YunoHost — the request was
intercepted by the YunoHost SSO at the root and redirected before
reaching Gitea.
Resolved by relocating Gitea to the root: it now serves at
`https://dev.stilobique.com/` directly (API at `/api/v1/...`,
`clone_url` at `/<owner>/<repo>.git`). The runner-injected
`GITHUB_SERVER_URL` and the actual Gitea base URL now agree.
If Gitea is ever moved back under a sub-path, the fix is `ROOT_URL` in
`app.ini` (`[server] ROOT_URL = https://<host>/<prefix>/`) or
re-registering `act_runner` with the full instance URL.
### 3. Default-branch mismatch
The Gitea API reports `default_branch: main` for the repo, but
`CLAUDE.md` describes `dev` as the default. The workflow listens to both,
so jobs trigger correctly either way, but the "Workflows" sidebar in the
Gitea UI reads from whatever the actual default branch is. If you intend
`dev` to be the default, update it under repo Settings → Branches.
## Differences from the old `.drone.yml`
- No more Drone, no more Butler — build only, artifacts downloadable from
the Gitea UI.
- GDScript validation step before export (didn't exist).
- `.godot/` import cache shared between jobs (faster reruns).
- Keystore via Gitea secret instead of a public pCloud link.
- macOS target added (preset still to be created in Godot).
- `master` / empty `ReleaseVersion` pipeline → replaced by triggers on
`main` (release branch per `CLAUDE.md`).
## Future: itch.io deploy via Butler
Not wired. When you want it back, add a `deploy-itch` job gated on tag
push (`v*`) that downloads the artifacts and runs
`butler push <dir> dev-crea/ahog:<channel>` with `BUTLER_API_KEY` from
secrets. Channels used historically:
`windows`, `linux`, `android`, `mac`.
+217
View File
@@ -0,0 +1,217 @@
name: Build Puzzle Quest
on:
push:
branches: [dev, main, feature/godot-migration]
pull_request:
branches: [dev, main]
workflow_dispatch:
env:
GODOT_VERSION: "4.6"
jobs:
# ---------------------------------------------------------------------------
# 1. GDScript validation — parse every script and fail on errors / warnings.
# ---------------------------------------------------------------------------
validate:
name: Validate GDScript
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: ./.gitea/actions/setup-godot
with:
version: ${{ env.GODOT_VERSION }}
- name: Import project (parses every .gd / .tscn)
run: |
godot --headless --import 2>&1 | tee /tmp/godot-import.log || true
- name: Fail on parse / script errors
run: |
if grep -qE "SCRIPT ERROR|Parse Error|ERROR: .*\.gd" /tmp/godot-import.log; then
echo "::error::GDScript errors detected during import"
grep -E "SCRIPT ERROR|Parse Error|ERROR: .*\.gd" /tmp/godot-import.log
exit 1
fi
# ---------------------------------------------------------------------------
# 2. Static analysis — gdlint from Scony's gdtoolkit (Python, no Godot).
# Runs in parallel with `validate`. Exports do NOT depend on this job,
# so a lint failure does not block builds while the Godot-3 leftovers
# are still being cleaned up. Once the tree is clean, add this job to
# the `needs:` of the export jobs to make it a hard gate.
# ---------------------------------------------------------------------------
lint:
name: Lint GDScript
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install gdtoolkit
run: |
python3 -m venv /tmp/gdlint-venv
/tmp/gdlint-venv/bin/pip install --quiet "gdtoolkit==4.*"
echo "/tmp/gdlint-venv/bin" >> "$GITHUB_PATH"
- name: Run gdlint
run: gdlint scripts db scenes
# ---------------------------------------------------------------------------
# 3. Desktop exports — runs in parallel.
# macOS is commented out until a preset is added in the Godot editor
# (export_presets.cfg has none today). Restore the entry once the preset
# exists; the matrix is otherwise ready to take it.
# ---------------------------------------------------------------------------
export-desktop:
name: Export ${{ matrix.platform }}
needs: validate
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
include:
- platform: Windows
preset: WindowsDebug
output: releases/windows/Puzzle-Quest.exe
artifact_path: releases/windows
- platform: Linux
preset: Linux/X11Debug
output: releases/linux/Puzzle-Quest.x86_64
artifact_path: releases/linux
# - platform: macOS
# preset: macOS
# output: releases/macos/Puzzle-Quest.zip
# artifact_path: releases/macos
steps:
- uses: actions/checkout@v4
- uses: ./.gitea/actions/setup-godot
with:
version: ${{ env.GODOT_VERSION }}
templates: "true"
- name: Import project
run: godot --headless --import || true
- name: Prepare output dir
run: mkdir -p "${{ matrix.artifact_path }}"
- name: Export ${{ matrix.platform }}
run: godot --headless --export-debug "${{ matrix.preset }}" "${{ matrix.output }}"
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: PuzzleQuest-${{ matrix.platform }}
path: ${{ matrix.artifact_path }}
if-no-files-found: error
retention-days: 14
# ---------------------------------------------------------------------------
# 4. Android export — Godot + JDK 17 + Android SDK installed in $HOME.
# Provide ANDROID_KEYSTORE_BASE64 as a Gitea secret for a stable signature;
# otherwise a fresh debug keystore is generated on each run.
# ---------------------------------------------------------------------------
export-android:
name: Export Android
needs: validate
runs-on: ubuntu-latest
env:
ANDROID_HOME: ${{ github.workspace }}/.android-sdk
steps:
- uses: actions/checkout@v4
- uses: ./.gitea/actions/setup-godot
with:
version: ${{ env.GODOT_VERSION }}
templates: "true"
- name: Install JDK 17
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends openjdk-17-jdk
echo "JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64" >> "$GITHUB_ENV"
- name: Install Android command-line tools + SDK
run: |
set -euo pipefail
mkdir -p "$ANDROID_HOME/cmdline-tools"
wget -q https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip -O /tmp/cmdline.zip
unzip -q /tmp/cmdline.zip -d "$ANDROID_HOME/cmdline-tools"
mv "$ANDROID_HOME/cmdline-tools/cmdline-tools" "$ANDROID_HOME/cmdline-tools/latest"
# `yes |` returns 141 (SIGPIPE) under `set -o pipefail` once sdkmanager
# closes its stdin — feed a finite stream of "y" answers instead.
printf 'y\n%.0s' {1..50} | "$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" --licenses >/dev/null
"$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" \
"platform-tools" "platforms;android-34" "build-tools;34.0.0" >/dev/null
- name: Provision debug keystore
env:
ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }}
run: |
if [ -n "${ANDROID_KEYSTORE_BASE64:-}" ]; then
echo "$ANDROID_KEYSTORE_BASE64" | base64 -d > /tmp/debug.keystore
else
keytool -keyalg RSA -genkeypair -alias androiddebugkey -keypass android \
-keystore /tmp/debug.keystore -storepass android \
-dname "CN=Android Debug,O=Android,C=US" -validity 9999
fi
# Godot rejects exports unless all three keystore/debug{,_user,_password}
# are set together (or all three empty) — patch every one.
sed -i 's@keystore/debug=".*"@keystore/debug="/tmp/debug.keystore"@g' export_presets.cfg
sed -i 's@keystore/debug_user=".*"@keystore/debug_user="androiddebugkey"@g' export_presets.cfg
sed -i 's@keystore/debug_password=".*"@keystore/debug_password="android"@g' export_presets.cfg
- name: Write Godot editor settings (Android SDK / JDK paths)
run: |
mkdir -p ~/.config/godot
# Godot 4.5+ uses a minor-version-suffixed settings file
# (editor_settings-4.6.tres for 4.6), not the major-only -4.tres.
cat > ~/.config/godot/editor_settings-${GODOT_VERSION}.tres <<EOF
[gd_resource type="EditorSettings" format=3]
[resource]
export/android/android_sdk_path = "${ANDROID_HOME}"
export/android/java_sdk_path = "/usr/lib/jvm/java-17-openjdk-amd64"
export/android/debug_keystore = "/tmp/debug.keystore"
export/android/debug_keystore_user = "androiddebugkey"
export/android/debug_keystore_pass = "android"
EOF
- name: Import project
run: godot --headless --import || true
- name: Prepare output dir
run: mkdir -p releases/android
- name: Export Android APK
run: godot --headless --export-debug "AndroidDebug" "releases/android/Puzzle-Quest.apk"
- name: Sign + verify APK
run: |
set -euo pipefail
APK="releases/android/Puzzle-Quest.apk"
APKSIGNER="$ANDROID_HOME/build-tools/34.0.0/apksigner"
# Godot 4.6 sometimes ships an unsigned APK from the headless
# export (sign step skips silently when its internal apksigner
# call can't locate java). Re-sign unconditionally — idempotent
# if Godot did sign, and guarantees a valid APK if it didn't.
"$APKSIGNER" sign \
--ks /tmp/debug.keystore \
--ks-pass pass:android \
--ks-key-alias androiddebugkey \
--key-pass pass:android \
--v1-signing-enabled true \
--v2-signing-enabled true \
--v3-signing-enabled true \
"$APK"
"$APKSIGNER" verify --verbose "$APK"
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: PuzzleQuest-Android
path: releases/android
if-no-files-found: error
retention-days: 14
+6 -4
View File
@@ -149,10 +149,12 @@ re-author it with Godot 4's built-in `theme_override_constants/outline_size`
## CI ## CI
Build pipeline is in `releases/.drone.yml`. The Docker images still pin Gitea Actions workflow at `.gitea/workflows/build.yml`, documented in
`barichello/godot-ci:3.3.2` and a custom `devcrea/godot-ci:3.3.2-android` `.gitea/workflows/README.md`. Three jobs: GDScript validation
— **bump these to a 4.x image** before relying on CI builds again. Butler (`godot --headless --import` + error grep), desktop matrix
push targets `dev-crea/ahog:windows|android|linux|mac` on itch.io. (Windows / Linux / macOS), and Android. Build only — no Butler / itch.io
deploy currently wired (channels used historically were
`dev-crea/ahog:windows|android|linux|mac`). Drone pipeline removed.
Branches: default `dev`, releases from `main`. Long-running migration work Branches: default `dev`, releases from `main`. Long-running migration work
on `feature/godot-migration`. on `feature/godot-migration`.
-2
View File
@@ -1,5 +1,3 @@
[![Build Status](https://drone.dev-crea.com/api/badges/Athena/game-source/status.svg)](https://drone.dev-crea.com/Athena/game-source)
- Hidden Object - Hidden Object
- Tips - Tips
- Log on Android - Log on Android
+7 -18
View File
@@ -1,28 +1,17 @@
[gd_resource type="Environment" load_steps=3 format=2] [gd_resource type="Environment" format=3 uid="uid://cosbxx1qhfx35"]
[ext_resource path="res://assets/hdri/tx_night_place.hdr" type="Texture2D" id=1] [sub_resource type="Sky" id="2"]
[sub_resource type="Sky" id=2]
panorama = ExtResource( 1 )
[resource] [resource]
background_mode = 3 background_mode = 3
background_sky = SubResource( 2 )
background_color = Color(0.188235, 0.133333, 0.133333, 1) background_color = Color(0.188235, 0.133333, 0.133333, 1)
background_energy = 0.6 sky = SubResource("2")
ambient_light_color = Color(0.694118, 0.168627, 0.67451, 1) ambient_light_color = Color(0.694118, 0.168627, 0.67451, 1)
ambient_light_energy = 1.55
ambient_light_sky_contribution = 0.5 ambient_light_sky_contribution = 0.5
ambient_light_energy = 1.55
tonemap_mode = 2
glow_enabled = true
fog_enabled = true fog_enabled = true
fog_color = Color( 0.562167, 0.29, 1, 0.941176 ) fog_depth_curve = 1.10957
fog_depth_begin = 0.0 fog_depth_begin = 0.0
fog_depth_end = 60.0 fog_depth_end = 60.0
fog_depth_curve = 1.10957
fog_height_enabled = true
fog_height_min = 2.0
fog_height_max = -20.0
fog_height_curve = 0.965936
tonemap_mode = 2
ss_reflections_enabled = true
dof_blur_far_distance = 2.0
glow_enabled = true
+2 -2
View File
@@ -1,6 +1,6 @@
[gd_resource type="FontVariation" load_steps=2 format=3] [gd_resource type="FontVariation" format=3 uid="uid://ehvxks08bpr"]
[ext_resource type="FontFile" path="res://assets/fonts/MKX Title.ttf" id="1"] [ext_resource type="FontFile" uid="uid://c7ps8q01ej5du" path="res://assets/fonts/MKX Title.ttf" id="1"]
[resource] [resource]
base_font = ExtResource("1") base_font = ExtResource("1")
+2 -2
View File
@@ -1,6 +1,6 @@
[gd_resource type="FontVariation" load_steps=2 format=3] [gd_resource type="FontVariation" format=3 uid="uid://inv1rofq17xy"]
[ext_resource type="FontFile" path="res://assets/fonts/kirsty/kirsty rg.otf" id="1"] [ext_resource type="FontFile" uid="uid://c0gq63h6u1c0f" path="res://assets/fonts/kirsty/kirsty rg.otf" id="1"]
[resource] [resource]
base_font = ExtResource("1") base_font = ExtResource("1")
+2 -2
View File
@@ -1,6 +1,6 @@
[gd_resource type="FontVariation" load_steps=2 format=3] [gd_resource type="FontVariation" format=3 uid="uid://dxs8032ya4bwr"]
[ext_resource type="FontFile" path="res://assets/fonts/kirsty/kirsty rg.otf" id="1"] [ext_resource type="FontFile" uid="uid://c0gq63h6u1c0f" path="res://assets/fonts/kirsty/kirsty rg.otf" id="1"]
[resource] [resource]
base_font = ExtResource("1") base_font = ExtResource("1")
+2 -2
View File
@@ -1,6 +1,6 @@
[gd_resource type="FontVariation" load_steps=2 format=3] [gd_resource type="FontVariation" format=3 uid="uid://bqx3uv23bwjul"]
[ext_resource type="FontFile" path="res://assets/fonts/kirsty/kirsty bd.otf" id="1"] [ext_resource type="FontFile" uid="uid://bgrwp4g3d0ywx" path="res://assets/fonts/kirsty/kirsty bd.otf" id="1"]
[resource] [resource]
base_font = ExtResource("1") base_font = ExtResource("1")
+3 -6
View File
@@ -1,10 +1,7 @@
[gd_resource type="Environment" load_steps=3 format=2] [gd_resource type="Environment" format=3 uid="uid://b4goeb432cjl4"]
[ext_resource path="res://assets/hdri/tx_night_place.hdr" type="Texture2D" id=1] [sub_resource type="Sky" id="1"]
[sub_resource type="Sky" id=1]
panorama = ExtResource( 1 )
[resource] [resource]
background_mode = 3 background_mode = 3
background_sky = SubResource( 1 ) sky = SubResource("1")
+1 -1
View File
@@ -1,4 +1,4 @@
[gd_resource type="ShaderMaterial" format=3] [gd_resource type="ShaderMaterial" format=3 uid="uid://vj5s8nwv5ac7"]
[sub_resource type="Shader" id="Shader_6qnue"] [sub_resource type="Shader" id="Shader_6qnue"]
code = "shader_type spatial; code = "shader_type spatial;
+1 -1
View File
@@ -1,4 +1,4 @@
[gd_resource type="ShaderMaterial" format=3] [gd_resource type="ShaderMaterial" format=3 uid="uid://8cbl1rknioqx"]
[sub_resource type="Shader" id="Shader_iwepy"] [sub_resource type="Shader" id="Shader_iwepy"]
code = "shader_type spatial; code = "shader_type spatial;
+1 -1
View File
@@ -1,4 +1,4 @@
[gd_resource type="ShaderMaterial" format=3] [gd_resource type="ShaderMaterial" format=3 uid="uid://dj27bh8fh6g7f"]
[sub_resource type="Shader" id="Shader_b630w"] [sub_resource type="Shader" id="Shader_b630w"]
code = "shader_type spatial; code = "shader_type spatial;
+5 -7
View File
@@ -1,10 +1,8 @@
[gd_scene load_steps=2 format=2] [gd_scene format=3 uid="uid://lt8fwag3uivj"]
[ext_resource path="res://assets/props/book/sm_book_lod1.mesh" type="ArrayMesh" id=2] [ext_resource type="ArrayMesh" path="res://assets/props/book/sm_book_lod1.mesh" id="2"]
[node name="sm_book" type="Node3D"] [node name="sm_book" type="Node3D" unique_id=1509736704]
[node name="sm_book-lod1" type="MeshInstance3D" parent="."] [node name="sm_book-lod1" type="MeshInstance3D" parent="." unique_id=56438111]
use_in_baked_light = true mesh = ExtResource("2")
mesh = ExtResource( 2 )
surface_material_override/0 = null
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://dfbfbwe12r27y" uid="uid://dfbfbwe12r27y"
path.s3tc="res://.godot/imported/tx_Paper_BC.tga-9fb9e97b4fb771cff15e05495d90bcc1.s3tc.ctex" path.s3tc="res://.godot/imported/tx_Paper_BC.tga-9fb9e97b4fb771cff15e05495d90bcc1.s3tc.ctex"
path.etc2="res://.godot/imported/tx_Paper_BC.tga-9fb9e97b4fb771cff15e05495d90bcc1.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/book/textures/tx_Paper_BC.tga" source_file="res://assets/props/book/textures/tx_Paper_BC.tga"
dest_files=["res://.godot/imported/tx_Paper_BC.tga-9fb9e97b4fb771cff15e05495d90bcc1.s3tc.ctex"] dest_files=["res://.godot/imported/tx_Paper_BC.tga-9fb9e97b4fb771cff15e05495d90bcc1.s3tc.ctex", "res://.godot/imported/tx_Paper_BC.tga-9fb9e97b4fb771cff15e05495d90bcc1.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bhi4c5xbbstve" uid="uid://bhi4c5xbbstve"
path.s3tc="res://.godot/imported/tx_Paper_NM.tga-7aae76ce0f4f9f4c3299047ca15922dc.s3tc.ctex" path.s3tc="res://.godot/imported/tx_Paper_NM.tga-7aae76ce0f4f9f4c3299047ca15922dc.s3tc.ctex"
path.etc2="res://.godot/imported/tx_Paper_NM.tga-7aae76ce0f4f9f4c3299047ca15922dc.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/book/textures/tx_Paper_NM.tga" source_file="res://assets/props/book/textures/tx_Paper_NM.tga"
dest_files=["res://.godot/imported/tx_Paper_NM.tga-7aae76ce0f4f9f4c3299047ca15922dc.s3tc.ctex"] dest_files=["res://.godot/imported/tx_Paper_NM.tga-7aae76ce0f4f9f4c3299047ca15922dc.s3tc.ctex", "res://.godot/imported/tx_Paper_NM.tga-7aae76ce0f4f9f4c3299047ca15922dc.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://dpnkeyvi4nm1y" uid="uid://dpnkeyvi4nm1y"
path.s3tc="res://.godot/imported/tx_Paper_ORM.tga-a4c3a5f60558aeb291283587e6bb15df.s3tc.ctex" path.s3tc="res://.godot/imported/tx_Paper_ORM.tga-a4c3a5f60558aeb291283587e6bb15df.s3tc.ctex"
path.etc2="res://.godot/imported/tx_Paper_ORM.tga-a4c3a5f60558aeb291283587e6bb15df.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/book/textures/tx_Paper_ORM.tga" source_file="res://assets/props/book/textures/tx_Paper_ORM.tga"
dest_files=["res://.godot/imported/tx_Paper_ORM.tga-a4c3a5f60558aeb291283587e6bb15df.s3tc.ctex"] dest_files=["res://.godot/imported/tx_Paper_ORM.tga-a4c3a5f60558aeb291283587e6bb15df.s3tc.ctex", "res://.godot/imported/tx_Paper_ORM.tga-a4c3a5f60558aeb291283587e6bb15df.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bwh77ikekvh78" uid="uid://bwh77ikekvh78"
path.s3tc="res://.godot/imported/tx_book_BC.tga-043df0783ead34530de9f256a143cacb.s3tc.ctex" path.s3tc="res://.godot/imported/tx_book_BC.tga-043df0783ead34530de9f256a143cacb.s3tc.ctex"
path.etc2="res://.godot/imported/tx_book_BC.tga-043df0783ead34530de9f256a143cacb.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/book/textures/tx_book_BC.tga" source_file="res://assets/props/book/textures/tx_book_BC.tga"
dest_files=["res://.godot/imported/tx_book_BC.tga-043df0783ead34530de9f256a143cacb.s3tc.ctex"] dest_files=["res://.godot/imported/tx_book_BC.tga-043df0783ead34530de9f256a143cacb.s3tc.ctex", "res://.godot/imported/tx_book_BC.tga-043df0783ead34530de9f256a143cacb.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://d1vrxpmwvdpnk" uid="uid://d1vrxpmwvdpnk"
path.s3tc="res://.godot/imported/tx_book_MK.tga-8a7c0fa94467fd29a69c4f5b665eec9c.s3tc.ctex" path.s3tc="res://.godot/imported/tx_book_MK.tga-8a7c0fa94467fd29a69c4f5b665eec9c.s3tc.ctex"
path.etc2="res://.godot/imported/tx_book_MK.tga-8a7c0fa94467fd29a69c4f5b665eec9c.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/book/textures/tx_book_MK.tga" source_file="res://assets/props/book/textures/tx_book_MK.tga"
dest_files=["res://.godot/imported/tx_book_MK.tga-8a7c0fa94467fd29a69c4f5b665eec9c.s3tc.ctex"] dest_files=["res://.godot/imported/tx_book_MK.tga-8a7c0fa94467fd29a69c4f5b665eec9c.s3tc.ctex", "res://.godot/imported/tx_book_MK.tga-8a7c0fa94467fd29a69c4f5b665eec9c.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://dhsjp8ba7b5hp" uid="uid://dhsjp8ba7b5hp"
path.s3tc="res://.godot/imported/tx_book_NM.tga-76afe8f7bcf6cb8cc6055b785f89befe.s3tc.ctex" path.s3tc="res://.godot/imported/tx_book_NM.tga-76afe8f7bcf6cb8cc6055b785f89befe.s3tc.ctex"
path.etc2="res://.godot/imported/tx_book_NM.tga-76afe8f7bcf6cb8cc6055b785f89befe.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/book/textures/tx_book_NM.tga" source_file="res://assets/props/book/textures/tx_book_NM.tga"
dest_files=["res://.godot/imported/tx_book_NM.tga-76afe8f7bcf6cb8cc6055b785f89befe.s3tc.ctex"] dest_files=["res://.godot/imported/tx_book_NM.tga-76afe8f7bcf6cb8cc6055b785f89befe.s3tc.ctex", "res://.godot/imported/tx_book_NM.tga-76afe8f7bcf6cb8cc6055b785f89befe.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://dq6s5nt1pko83" uid="uid://dq6s5nt1pko83"
path.s3tc="res://.godot/imported/tx_book_ORM.tga-314f28a993b713578d4773124db322ff.s3tc.ctex" path.s3tc="res://.godot/imported/tx_book_ORM.tga-314f28a993b713578d4773124db322ff.s3tc.ctex"
path.etc2="res://.godot/imported/tx_book_ORM.tga-314f28a993b713578d4773124db322ff.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/book/textures/tx_book_ORM.tga" source_file="res://assets/props/book/textures/tx_book_ORM.tga"
dest_files=["res://.godot/imported/tx_book_ORM.tga-314f28a993b713578d4773124db322ff.s3tc.ctex"] dest_files=["res://.godot/imported/tx_book_ORM.tga-314f28a993b713578d4773124db322ff.s3tc.ctex", "res://.godot/imported/tx_book_ORM.tga-314f28a993b713578d4773124db322ff.etc2.ctex"]
[params] [params]
+11 -15
View File
@@ -1,29 +1,25 @@
[gd_scene load_steps=4 format=2] [gd_scene format=3 uid="uid://tlua1pg4ro8u"]
[ext_resource path="res://assets/props/candle/sm_candlestick_lod1.mesh" type="ArrayMesh" id=1] [ext_resource type="ArrayMesh" path="res://assets/props/candle/sm_candlestick_lod1.mesh" id="1"]
[ext_resource path="res://assets/props/candle/candle.gd" type="Script" id=2] [ext_resource type="Script" uid="uid://0v7yafm2dil" path="res://assets/props/candle/candle.gd" id="2"]
[ext_resource path="res://assets/props/candle/sm_candle_top_lod1.mesh" type="ArrayMesh" id=3] [ext_resource type="ArrayMesh" path="res://assets/props/candle/sm_candle_top_lod1.mesh" id="3"]
[node name="sm_candlestick" type="Node3D"] [node name="sm_candlestick" type="Node3D" unique_id=158803858]
script = ExtResource( 2 ) script = ExtResource("2")
[node name="sm_candlestick_lod1" type="MeshInstance3D" parent="."] [node name="sm_candlestick_lod1" type="MeshInstance3D" parent="." unique_id=93495968]
mesh = ExtResource( 1 ) mesh = ExtResource("1")
surface_material_override/0 = null
[node name="candles" type="MeshInstance3D" parent="sm_candlestick_lod1"] [node name="candles" type="MeshInstance3D" parent="sm_candlestick_lod1" unique_id=1542964088]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.000981584, 0.150082, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.000981584, 0.150082, 0)
use_in_baked_light = true mesh = ExtResource("3")
mesh = ExtResource( 3 )
surface_material_override/0 = null
[node name="OmniLight3D" type="OmniLight3D" parent="sm_candlestick_lod1/candles"] [node name="OmniLight3D" type="OmniLight3D" parent="sm_candlestick_lod1/candles" unique_id=1368663821]
transform = Transform3D(1, 5.5022e-09, 1.96774e-13, -5.5022e-09, 1, 1.08271e-21, -1.96774e-13, -2.1654e-21, 1, 1.3737e-08, 0.0619183, -2.98023e-08) transform = Transform3D(1, 5.5022e-09, 1.96774e-13, -5.5022e-09, 1, 1.08271e-21, -1.96774e-13, -2.1654e-21, 1, 1.3737e-08, 0.0619183, -2.98023e-08)
visible = false visible = false
light_color = Color(0.960784, 0.611765, 0.00784314, 1) light_color = Color(0.960784, 0.611765, 0.00784314, 1)
light_energy = 12.0 light_energy = 12.0
light_indirect_energy = 1.4 light_indirect_energy = 1.4
light_bake_mode = 2
editor_only = true editor_only = true
omni_range = 1.6 omni_range = 1.6
omni_attenuation = 2.73208 omni_attenuation = 2.73208
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bmfepyv5gimbe" uid="uid://bmfepyv5gimbe"
path.s3tc="res://.godot/imported/tx_candle_BCS.tga-8a28bd77a964ef96f453c0c2c4de7ed9.s3tc.ctex" path.s3tc="res://.godot/imported/tx_candle_BCS.tga-8a28bd77a964ef96f453c0c2c4de7ed9.s3tc.ctex"
path.etc2="res://.godot/imported/tx_candle_BCS.tga-8a28bd77a964ef96f453c0c2c4de7ed9.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/candle/textures/tx_candle_BCS.tga" source_file="res://assets/props/candle/textures/tx_candle_BCS.tga"
dest_files=["res://.godot/imported/tx_candle_BCS.tga-8a28bd77a964ef96f453c0c2c4de7ed9.s3tc.ctex"] dest_files=["res://.godot/imported/tx_candle_BCS.tga-8a28bd77a964ef96f453c0c2c4de7ed9.s3tc.ctex", "res://.godot/imported/tx_candle_BCS.tga-8a28bd77a964ef96f453c0c2c4de7ed9.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://dco3vmw0jdw7t" uid="uid://dco3vmw0jdw7t"
path.s3tc="res://.godot/imported/tx_candle_NM.tga-0d1354b171e73543cc7b627d3a46536f.s3tc.ctex" path.s3tc="res://.godot/imported/tx_candle_NM.tga-0d1354b171e73543cc7b627d3a46536f.s3tc.ctex"
path.etc2="res://.godot/imported/tx_candle_NM.tga-0d1354b171e73543cc7b627d3a46536f.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/candle/textures/tx_candle_NM.tga" source_file="res://assets/props/candle/textures/tx_candle_NM.tga"
dest_files=["res://.godot/imported/tx_candle_NM.tga-0d1354b171e73543cc7b627d3a46536f.s3tc.ctex"] dest_files=["res://.godot/imported/tx_candle_NM.tga-0d1354b171e73543cc7b627d3a46536f.s3tc.ctex", "res://.godot/imported/tx_candle_NM.tga-0d1354b171e73543cc7b627d3a46536f.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://baqeh5ceph0e" uid="uid://baqeh5ceph0e"
path.s3tc="res://.godot/imported/tx_candle_ORM.tga-3575951580ec8d12904f46fd8f10069c.s3tc.ctex" path.s3tc="res://.godot/imported/tx_candle_ORM.tga-3575951580ec8d12904f46fd8f10069c.s3tc.ctex"
path.etc2="res://.godot/imported/tx_candle_ORM.tga-3575951580ec8d12904f46fd8f10069c.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/candle/textures/tx_candle_ORM.tga" source_file="res://assets/props/candle/textures/tx_candle_ORM.tga"
dest_files=["res://.godot/imported/tx_candle_ORM.tga-3575951580ec8d12904f46fd8f10069c.s3tc.ctex"] dest_files=["res://.godot/imported/tx_candle_ORM.tga-3575951580ec8d12904f46fd8f10069c.s3tc.ctex", "res://.godot/imported/tx_candle_ORM.tga-3575951580ec8d12904f46fd8f10069c.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bfuna15etfwhg" uid="uid://bfuna15etfwhg"
path.s3tc="res://.godot/imported/tx_candle_scatter.tga-bc0a35b3e6c5b6443faff3a90e4ee73d.s3tc.ctex" path.s3tc="res://.godot/imported/tx_candle_scatter.tga-bc0a35b3e6c5b6443faff3a90e4ee73d.s3tc.ctex"
path.etc2="res://.godot/imported/tx_candle_scatter.tga-bc0a35b3e6c5b6443faff3a90e4ee73d.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/candle/textures/tx_candle_scatter.tga" source_file="res://assets/props/candle/textures/tx_candle_scatter.tga"
dest_files=["res://.godot/imported/tx_candle_scatter.tga-bc0a35b3e6c5b6443faff3a90e4ee73d.s3tc.ctex"] dest_files=["res://.godot/imported/tx_candle_scatter.tga-bc0a35b3e6c5b6443faff3a90e4ee73d.s3tc.ctex", "res://.godot/imported/tx_candle_scatter.tga-bc0a35b3e6c5b6443faff3a90e4ee73d.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://dvoars6va7511" uid="uid://dvoars6va7511"
path.s3tc="res://.godot/imported/dagger_Dagger_BC.png-6deff32a41940f92bbdb14bc9b47beb3.s3tc.ctex" path.s3tc="res://.godot/imported/dagger_Dagger_BC.png-6deff32a41940f92bbdb14bc9b47beb3.s3tc.ctex"
path.etc2="res://.godot/imported/dagger_Dagger_BC.png-6deff32a41940f92bbdb14bc9b47beb3.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/dagger/dagger_Dagger_BC.png" source_file="res://assets/props/dagger/dagger_Dagger_BC.png"
dest_files=["res://.godot/imported/dagger_Dagger_BC.png-6deff32a41940f92bbdb14bc9b47beb3.s3tc.ctex"] dest_files=["res://.godot/imported/dagger_Dagger_BC.png-6deff32a41940f92bbdb14bc9b47beb3.s3tc.ctex", "res://.godot/imported/dagger_Dagger_BC.png-6deff32a41940f92bbdb14bc9b47beb3.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://cfhmpp3pitqbi" uid="uid://cfhmpp3pitqbi"
path.s3tc="res://.godot/imported/dagger_Dagger_NM.png-16adfa9ec4fd4455ed9dd788fbba2519.s3tc.ctex" path.s3tc="res://.godot/imported/dagger_Dagger_NM.png-16adfa9ec4fd4455ed9dd788fbba2519.s3tc.ctex"
path.etc2="res://.godot/imported/dagger_Dagger_NM.png-16adfa9ec4fd4455ed9dd788fbba2519.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/dagger/dagger_Dagger_NM.png" source_file="res://assets/props/dagger/dagger_Dagger_NM.png"
dest_files=["res://.godot/imported/dagger_Dagger_NM.png-16adfa9ec4fd4455ed9dd788fbba2519.s3tc.ctex"] dest_files=["res://.godot/imported/dagger_Dagger_NM.png-16adfa9ec4fd4455ed9dd788fbba2519.s3tc.ctex", "res://.godot/imported/dagger_Dagger_NM.png-16adfa9ec4fd4455ed9dd788fbba2519.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://b5jfvsejxruax" uid="uid://b5jfvsejxruax"
path.s3tc="res://.godot/imported/dagger_dagger_E.png-f59a7c6d2e36ce0df3488a3ad845f982.s3tc.ctex" path.s3tc="res://.godot/imported/dagger_dagger_E.png-f59a7c6d2e36ce0df3488a3ad845f982.s3tc.ctex"
path.etc2="res://.godot/imported/dagger_dagger_E.png-f59a7c6d2e36ce0df3488a3ad845f982.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/dagger/dagger_dagger_E.png" source_file="res://assets/props/dagger/dagger_dagger_E.png"
dest_files=["res://.godot/imported/dagger_dagger_E.png-f59a7c6d2e36ce0df3488a3ad845f982.s3tc.ctex"] dest_files=["res://.godot/imported/dagger_dagger_E.png-f59a7c6d2e36ce0df3488a3ad845f982.s3tc.ctex", "res://.godot/imported/dagger_dagger_E.png-f59a7c6d2e36ce0df3488a3ad845f982.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://b2yaxbeog0iiq" uid="uid://b2yaxbeog0iiq"
path.s3tc="res://.godot/imported/dagger_dagger_ORM.png-d6cee18aee3cb84d78327e37eda49e85.s3tc.ctex" path.s3tc="res://.godot/imported/dagger_dagger_ORM.png-d6cee18aee3cb84d78327e37eda49e85.s3tc.ctex"
path.etc2="res://.godot/imported/dagger_dagger_ORM.png-d6cee18aee3cb84d78327e37eda49e85.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/dagger/dagger_dagger_ORM.png" source_file="res://assets/props/dagger/dagger_dagger_ORM.png"
dest_files=["res://.godot/imported/dagger_dagger_ORM.png-d6cee18aee3cb84d78327e37eda49e85.s3tc.ctex"] dest_files=["res://.godot/imported/dagger_dagger_ORM.png-d6cee18aee3cb84d78327e37eda49e85.s3tc.ctex", "res://.godot/imported/dagger_dagger_ORM.png-d6cee18aee3cb84d78327e37eda49e85.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://cos4nywdtkchr" uid="uid://cos4nywdtkchr"
path.s3tc="res://.godot/imported/dagger_BC.tga-8c56f407df61bdb7c529101388df0d01.s3tc.ctex" path.s3tc="res://.godot/imported/dagger_BC.tga-8c56f407df61bdb7c529101388df0d01.s3tc.ctex"
path.etc2="res://.godot/imported/dagger_BC.tga-8c56f407df61bdb7c529101388df0d01.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/dagger/textures/dagger_BC.tga" source_file="res://assets/props/dagger/textures/dagger_BC.tga"
dest_files=["res://.godot/imported/dagger_BC.tga-8c56f407df61bdb7c529101388df0d01.s3tc.ctex"] dest_files=["res://.godot/imported/dagger_BC.tga-8c56f407df61bdb7c529101388df0d01.s3tc.ctex", "res://.godot/imported/dagger_BC.tga-8c56f407df61bdb7c529101388df0d01.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bn2pvfwupk616" uid="uid://bn2pvfwupk616"
path.s3tc="res://.godot/imported/dagger_NM.tga-02457e4299815720542e6c6827c3099f.s3tc.ctex" path.s3tc="res://.godot/imported/dagger_NM.tga-02457e4299815720542e6c6827c3099f.s3tc.ctex"
path.etc2="res://.godot/imported/dagger_NM.tga-02457e4299815720542e6c6827c3099f.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/dagger/textures/dagger_NM.tga" source_file="res://assets/props/dagger/textures/dagger_NM.tga"
dest_files=["res://.godot/imported/dagger_NM.tga-02457e4299815720542e6c6827c3099f.s3tc.ctex"] dest_files=["res://.godot/imported/dagger_NM.tga-02457e4299815720542e6c6827c3099f.s3tc.ctex", "res://.godot/imported/dagger_NM.tga-02457e4299815720542e6c6827c3099f.etc2.ctex"]
[params] [params]
+5 -7
View File
@@ -1,10 +1,8 @@
[gd_scene load_steps=2 format=2] [gd_scene format=3 uid="uid://cgi8sru6qky81"]
[ext_resource path="res://assets/props/godet/sm_godet_lod1.mesh" type="ArrayMesh" id=1] [ext_resource type="ArrayMesh" path="res://assets/props/godet/sm_godet_lod1.mesh" id="1"]
[node name="sm_godet" type="Node3D"] [node name="sm_godet" type="Node3D" unique_id=2120062082]
[node name="sm_godet_lod1" type="MeshInstance3D" parent="."] [node name="sm_godet_lod1" type="MeshInstance3D" parent="." unique_id=2083222404]
use_in_baked_light = true mesh = ExtResource("1")
mesh = ExtResource( 1 )
surface_material_override/0 = null
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://cxid6xyfqv6bv" uid="uid://cxid6xyfqv6bv"
path.s3tc="res://.godot/imported/tx_godet_BC.tga-0e7c29ed5a0f4c80e30557e304a14e49.s3tc.ctex" path.s3tc="res://.godot/imported/tx_godet_BC.tga-0e7c29ed5a0f4c80e30557e304a14e49.s3tc.ctex"
path.etc2="res://.godot/imported/tx_godet_BC.tga-0e7c29ed5a0f4c80e30557e304a14e49.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/godet/textures/tx_godet_BC.tga" source_file="res://assets/props/godet/textures/tx_godet_BC.tga"
dest_files=["res://.godot/imported/tx_godet_BC.tga-0e7c29ed5a0f4c80e30557e304a14e49.s3tc.ctex"] dest_files=["res://.godot/imported/tx_godet_BC.tga-0e7c29ed5a0f4c80e30557e304a14e49.s3tc.ctex", "res://.godot/imported/tx_godet_BC.tga-0e7c29ed5a0f4c80e30557e304a14e49.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://byv10yo0gvfju" uid="uid://byv10yo0gvfju"
path.s3tc="res://.godot/imported/tx_godet_NM.tga-9410c62c3e8f99e54c6df8c71e04ecff.s3tc.ctex" path.s3tc="res://.godot/imported/tx_godet_NM.tga-9410c62c3e8f99e54c6df8c71e04ecff.s3tc.ctex"
path.etc2="res://.godot/imported/tx_godet_NM.tga-9410c62c3e8f99e54c6df8c71e04ecff.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/godet/textures/tx_godet_NM.tga" source_file="res://assets/props/godet/textures/tx_godet_NM.tga"
dest_files=["res://.godot/imported/tx_godet_NM.tga-9410c62c3e8f99e54c6df8c71e04ecff.s3tc.ctex"] dest_files=["res://.godot/imported/tx_godet_NM.tga-9410c62c3e8f99e54c6df8c71e04ecff.s3tc.ctex", "res://.godot/imported/tx_godet_NM.tga-9410c62c3e8f99e54c6df8c71e04ecff.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://cpi12be1h168j" uid="uid://cpi12be1h168j"
path.s3tc="res://.godot/imported/tx_godet_ORM.tga-d01c51d4f8d8c261e86184c55282ab2b.s3tc.ctex" path.s3tc="res://.godot/imported/tx_godet_ORM.tga-d01c51d4f8d8c261e86184c55282ab2b.s3tc.ctex"
path.etc2="res://.godot/imported/tx_godet_ORM.tga-d01c51d4f8d8c261e86184c55282ab2b.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/godet/textures/tx_godet_ORM.tga" source_file="res://assets/props/godet/textures/tx_godet_ORM.tga"
dest_files=["res://.godot/imported/tx_godet_ORM.tga-d01c51d4f8d8c261e86184c55282ab2b.s3tc.ctex"] dest_files=["res://.godot/imported/tx_godet_ORM.tga-d01c51d4f8d8c261e86184c55282ab2b.s3tc.ctex", "res://.godot/imported/tx_godet_ORM.tga-d01c51d4f8d8c261e86184c55282ab2b.etc2.ctex"]
[params] [params]
+5 -7
View File
@@ -1,10 +1,8 @@
[gd_scene load_steps=2 format=2] [gd_scene format=3 uid="uid://ceyvbjwaca6gl"]
[ext_resource path="res://assets/props/growler/sm_growler_lod1.mesh" type="ArrayMesh" id=1] [ext_resource type="ArrayMesh" path="res://assets/props/growler/sm_growler_lod1.mesh" id="1"]
[node name="sm_growler" type="Node3D"] [node name="sm_growler" type="Node3D" unique_id=1516724524]
[node name="sm_growler_lod1" type="MeshInstance3D" parent="."] [node name="sm_growler_lod1" type="MeshInstance3D" parent="." unique_id=358704487]
use_in_baked_light = true mesh = ExtResource("1")
mesh = ExtResource( 1 )
surface_material_override/0 = null
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://crk5i2qr13hme" uid="uid://crk5i2qr13hme"
path.s3tc="res://.godot/imported/tx_growler_BC.tga-aa118cf1c458a342a6a74017661c1ae7.s3tc.ctex" path.s3tc="res://.godot/imported/tx_growler_BC.tga-aa118cf1c458a342a6a74017661c1ae7.s3tc.ctex"
path.etc2="res://.godot/imported/tx_growler_BC.tga-aa118cf1c458a342a6a74017661c1ae7.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/growler/textures/tx_growler_BC.tga" source_file="res://assets/props/growler/textures/tx_growler_BC.tga"
dest_files=["res://.godot/imported/tx_growler_BC.tga-aa118cf1c458a342a6a74017661c1ae7.s3tc.ctex"] dest_files=["res://.godot/imported/tx_growler_BC.tga-aa118cf1c458a342a6a74017661c1ae7.s3tc.ctex", "res://.godot/imported/tx_growler_BC.tga-aa118cf1c458a342a6a74017661c1ae7.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://rc3kqnqss1u" uid="uid://rc3kqnqss1u"
path.s3tc="res://.godot/imported/tx_growler_NM.tga-2a1c81bcbfbece34756c1cdbc715b7f4.s3tc.ctex" path.s3tc="res://.godot/imported/tx_growler_NM.tga-2a1c81bcbfbece34756c1cdbc715b7f4.s3tc.ctex"
path.etc2="res://.godot/imported/tx_growler_NM.tga-2a1c81bcbfbece34756c1cdbc715b7f4.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/growler/textures/tx_growler_NM.tga" source_file="res://assets/props/growler/textures/tx_growler_NM.tga"
dest_files=["res://.godot/imported/tx_growler_NM.tga-2a1c81bcbfbece34756c1cdbc715b7f4.s3tc.ctex"] dest_files=["res://.godot/imported/tx_growler_NM.tga-2a1c81bcbfbece34756c1cdbc715b7f4.s3tc.ctex", "res://.godot/imported/tx_growler_NM.tga-2a1c81bcbfbece34756c1cdbc715b7f4.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://ctls0ywsxpmr7" uid="uid://ctls0ywsxpmr7"
path.s3tc="res://.godot/imported/tx_growler_ORM.tga-de03bcfefddaf9accd2e00b4472eb37d.s3tc.ctex" path.s3tc="res://.godot/imported/tx_growler_ORM.tga-de03bcfefddaf9accd2e00b4472eb37d.s3tc.ctex"
path.etc2="res://.godot/imported/tx_growler_ORM.tga-de03bcfefddaf9accd2e00b4472eb37d.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/growler/textures/tx_growler_ORM.tga" source_file="res://assets/props/growler/textures/tx_growler_ORM.tga"
dest_files=["res://.godot/imported/tx_growler_ORM.tga-de03bcfefddaf9accd2e00b4472eb37d.s3tc.ctex"] dest_files=["res://.godot/imported/tx_growler_ORM.tga-de03bcfefddaf9accd2e00b4472eb37d.s3tc.ctex", "res://.godot/imported/tx_growler_ORM.tga-de03bcfefddaf9accd2e00b4472eb37d.etc2.ctex"]
[params] [params]
+10 -14
View File
@@ -1,19 +1,15 @@
[gd_scene load_steps=4 format=2] [gd_scene format=3 uid="uid://ck15k8nlgsgyw"]
[ext_resource path="res://assets/props/parchment/sm_wood_parchment_lod1.mesh" type="ArrayMesh" id=1] [ext_resource type="ArrayMesh" path="res://assets/props/parchment/sm_wood_parchment_lod1.mesh" id="1"]
[ext_resource path="res://assets/props/parchment/parchment.gd" type="Script" id=2] [ext_resource type="Script" uid="uid://ckf1nh8pcemh1" path="res://assets/props/parchment/parchment.gd" id="2"]
[ext_resource path="res://assets/props/parchment/sm_paperparchment_lod0.mesh" type="ArrayMesh" id=3] [ext_resource type="ArrayMesh" path="res://assets/props/parchment/sm_paperparchment_lod0.mesh" id="3"]
[node name="sm_parchment" type="Node3D"] [node name="sm_parchment" type="Node3D" unique_id=1182674480]
script = ExtResource( 2 ) script = ExtResource("2")
[node name="sm_wood_parchment_lod1" type="MeshInstance3D" parent="."] [node name="sm_wood_parchment_lod1" type="MeshInstance3D" parent="." unique_id=875384535]
use_in_baked_light = true mesh = ExtResource("1")
mesh = ExtResource( 1 )
surface_material_override/0 = null
[node name="paper" type="MeshInstance3D" parent="."] [node name="paper" type="MeshInstance3D" parent="." unique_id=1202959838]
visible = false visible = false
use_in_baked_light = true mesh = ExtResource("3")
mesh = ExtResource( 3 )
surface_material_override/0 = null
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://cbljeqhj8iqby" uid="uid://cbljeqhj8iqby"
path.s3tc="res://.godot/imported/tx_paperParchment_BC.tga-371a74b1da16911de64c30179b65a0c9.s3tc.ctex" path.s3tc="res://.godot/imported/tx_paperParchment_BC.tga-371a74b1da16911de64c30179b65a0c9.s3tc.ctex"
path.etc2="res://.godot/imported/tx_paperParchment_BC.tga-371a74b1da16911de64c30179b65a0c9.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/parchment/textures/tx_paperParchment_BC.tga" source_file="res://assets/props/parchment/textures/tx_paperParchment_BC.tga"
dest_files=["res://.godot/imported/tx_paperParchment_BC.tga-371a74b1da16911de64c30179b65a0c9.s3tc.ctex"] dest_files=["res://.godot/imported/tx_paperParchment_BC.tga-371a74b1da16911de64c30179b65a0c9.s3tc.ctex", "res://.godot/imported/tx_paperParchment_BC.tga-371a74b1da16911de64c30179b65a0c9.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://eklcrlw4d7hq" uid="uid://eklcrlw4d7hq"
path.s3tc="res://.godot/imported/tx_paperParchment_NM.tga-88d19a5247cd983c1308683b6549f639.s3tc.ctex" path.s3tc="res://.godot/imported/tx_paperParchment_NM.tga-88d19a5247cd983c1308683b6549f639.s3tc.ctex"
path.etc2="res://.godot/imported/tx_paperParchment_NM.tga-88d19a5247cd983c1308683b6549f639.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/parchment/textures/tx_paperParchment_NM.tga" source_file="res://assets/props/parchment/textures/tx_paperParchment_NM.tga"
dest_files=["res://.godot/imported/tx_paperParchment_NM.tga-88d19a5247cd983c1308683b6549f639.s3tc.ctex"] dest_files=["res://.godot/imported/tx_paperParchment_NM.tga-88d19a5247cd983c1308683b6549f639.s3tc.ctex", "res://.godot/imported/tx_paperParchment_NM.tga-88d19a5247cd983c1308683b6549f639.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://bqjkf6nvgwe27" uid="uid://bqjkf6nvgwe27"
path.s3tc="res://.godot/imported/tx_paperParchment_ORM.tga-e02245062d00dd9799c11ab6ea7a5ec6.s3tc.ctex" path.s3tc="res://.godot/imported/tx_paperParchment_ORM.tga-e02245062d00dd9799c11ab6ea7a5ec6.s3tc.ctex"
path.etc2="res://.godot/imported/tx_paperParchment_ORM.tga-e02245062d00dd9799c11ab6ea7a5ec6.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/parchment/textures/tx_paperParchment_ORM.tga" source_file="res://assets/props/parchment/textures/tx_paperParchment_ORM.tga"
dest_files=["res://.godot/imported/tx_paperParchment_ORM.tga-e02245062d00dd9799c11ab6ea7a5ec6.s3tc.ctex"] dest_files=["res://.godot/imported/tx_paperParchment_ORM.tga-e02245062d00dd9799c11ab6ea7a5ec6.s3tc.ctex", "res://.godot/imported/tx_paperParchment_ORM.tga-e02245062d00dd9799c11ab6ea7a5ec6.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://edlmgnuher5f" uid="uid://edlmgnuher5f"
path.s3tc="res://.godot/imported/tx_woodParchment_BC.tga-69f35503d987626688d47d91eb9c49de.s3tc.ctex" path.s3tc="res://.godot/imported/tx_woodParchment_BC.tga-69f35503d987626688d47d91eb9c49de.s3tc.ctex"
path.etc2="res://.godot/imported/tx_woodParchment_BC.tga-69f35503d987626688d47d91eb9c49de.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/parchment/textures/tx_woodParchment_BC.tga" source_file="res://assets/props/parchment/textures/tx_woodParchment_BC.tga"
dest_files=["res://.godot/imported/tx_woodParchment_BC.tga-69f35503d987626688d47d91eb9c49de.s3tc.ctex"] dest_files=["res://.godot/imported/tx_woodParchment_BC.tga-69f35503d987626688d47d91eb9c49de.s3tc.ctex", "res://.godot/imported/tx_woodParchment_BC.tga-69f35503d987626688d47d91eb9c49de.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://k0ddnhdpe7bc" uid="uid://k0ddnhdpe7bc"
path.s3tc="res://.godot/imported/tx_woodParchment_NM.tga-a492317fe890e2cdeae4430bfc4ab057.s3tc.ctex" path.s3tc="res://.godot/imported/tx_woodParchment_NM.tga-a492317fe890e2cdeae4430bfc4ab057.s3tc.ctex"
path.etc2="res://.godot/imported/tx_woodParchment_NM.tga-a492317fe890e2cdeae4430bfc4ab057.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/parchment/textures/tx_woodParchment_NM.tga" source_file="res://assets/props/parchment/textures/tx_woodParchment_NM.tga"
dest_files=["res://.godot/imported/tx_woodParchment_NM.tga-a492317fe890e2cdeae4430bfc4ab057.s3tc.ctex"] dest_files=["res://.godot/imported/tx_woodParchment_NM.tga-a492317fe890e2cdeae4430bfc4ab057.s3tc.ctex", "res://.godot/imported/tx_woodParchment_NM.tga-a492317fe890e2cdeae4430bfc4ab057.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://ttbygsi4v5mu" uid="uid://ttbygsi4v5mu"
path.s3tc="res://.godot/imported/tx_woodParchment_ORM.tga-23f5c64c06128376cd6c2d3fb1581bfb.s3tc.ctex" path.s3tc="res://.godot/imported/tx_woodParchment_ORM.tga-23f5c64c06128376cd6c2d3fb1581bfb.s3tc.ctex"
path.etc2="res://.godot/imported/tx_woodParchment_ORM.tga-23f5c64c06128376cd6c2d3fb1581bfb.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/parchment/textures/tx_woodParchment_ORM.tga" source_file="res://assets/props/parchment/textures/tx_woodParchment_ORM.tga"
dest_files=["res://.godot/imported/tx_woodParchment_ORM.tga-23f5c64c06128376cd6c2d3fb1581bfb.s3tc.ctex"] dest_files=["res://.godot/imported/tx_woodParchment_ORM.tga-23f5c64c06128376cd6c2d3fb1581bfb.s3tc.ctex", "res://.godot/imported/tx_woodParchment_ORM.tga-23f5c64c06128376cd6c2d3fb1581bfb.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://d4bfqers6w8pw" uid="uid://d4bfqers6w8pw"
path.s3tc="res://.godot/imported/tx_rock_floor_bc.tga-4b77fe3e94f9498cc82b83553dd20905.s3tc.ctex" path.s3tc="res://.godot/imported/tx_rock_floor_bc.tga-4b77fe3e94f9498cc82b83553dd20905.s3tc.ctex"
path.etc2="res://.godot/imported/tx_rock_floor_bc.tga-4b77fe3e94f9498cc82b83553dd20905.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/rock floor/textures/tx_rock_floor_bc.tga" source_file="res://assets/props/rock floor/textures/tx_rock_floor_bc.tga"
dest_files=["res://.godot/imported/tx_rock_floor_bc.tga-4b77fe3e94f9498cc82b83553dd20905.s3tc.ctex"] dest_files=["res://.godot/imported/tx_rock_floor_bc.tga-4b77fe3e94f9498cc82b83553dd20905.s3tc.ctex", "res://.godot/imported/tx_rock_floor_bc.tga-4b77fe3e94f9498cc82b83553dd20905.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://c1vobch2kuype" uid="uid://c1vobch2kuype"
path.s3tc="res://.godot/imported/tx_rock_floor_nm.tga-cf4c027feec7068c5fb11d217fde401b.s3tc.ctex" path.s3tc="res://.godot/imported/tx_rock_floor_nm.tga-cf4c027feec7068c5fb11d217fde401b.s3tc.ctex"
path.etc2="res://.godot/imported/tx_rock_floor_nm.tga-cf4c027feec7068c5fb11d217fde401b.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/rock floor/textures/tx_rock_floor_nm.tga" source_file="res://assets/props/rock floor/textures/tx_rock_floor_nm.tga"
dest_files=["res://.godot/imported/tx_rock_floor_nm.tga-cf4c027feec7068c5fb11d217fde401b.s3tc.ctex"] dest_files=["res://.godot/imported/tx_rock_floor_nm.tga-cf4c027feec7068c5fb11d217fde401b.s3tc.ctex", "res://.godot/imported/tx_rock_floor_nm.tga-cf4c027feec7068c5fb11d217fde401b.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://dkr2vtaja5y3t" uid="uid://dkr2vtaja5y3t"
path.s3tc="res://.godot/imported/tx_rock_floor_orm.tga-5c074f32ecfa0079bda63b1b17f8ddda.s3tc.ctex" path.s3tc="res://.godot/imported/tx_rock_floor_orm.tga-5c074f32ecfa0079bda63b1b17f8ddda.s3tc.ctex"
path.etc2="res://.godot/imported/tx_rock_floor_orm.tga-5c074f32ecfa0079bda63b1b17f8ddda.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/rock floor/textures/tx_rock_floor_orm.tga" source_file="res://assets/props/rock floor/textures/tx_rock_floor_orm.tga"
dest_files=["res://.godot/imported/tx_rock_floor_orm.tga-5c074f32ecfa0079bda63b1b17f8ddda.s3tc.ctex"] dest_files=["res://.godot/imported/tx_rock_floor_orm.tga-5c074f32ecfa0079bda63b1b17f8ddda.s3tc.ctex", "res://.godot/imported/tx_rock_floor_orm.tga-5c074f32ecfa0079bda63b1b17f8ddda.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://dw5se51drseh3" uid="uid://dw5se51drseh3"
path.s3tc="res://.godot/imported/tx_spyglass_BC.tga-080121e58687a7d1d090161e35b03182.s3tc.ctex" path.s3tc="res://.godot/imported/tx_spyglass_BC.tga-080121e58687a7d1d090161e35b03182.s3tc.ctex"
path.etc2="res://.godot/imported/tx_spyglass_BC.tga-080121e58687a7d1d090161e35b03182.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/spyglass/textures/tx_spyglass_BC.tga" source_file="res://assets/props/spyglass/textures/tx_spyglass_BC.tga"
dest_files=["res://.godot/imported/tx_spyglass_BC.tga-080121e58687a7d1d090161e35b03182.s3tc.ctex"] dest_files=["res://.godot/imported/tx_spyglass_BC.tga-080121e58687a7d1d090161e35b03182.s3tc.ctex", "res://.godot/imported/tx_spyglass_BC.tga-080121e58687a7d1d090161e35b03182.etc2.ctex"]
[params] [params]
+5 -7
View File
@@ -1,10 +1,8 @@
[gd_scene load_steps=2 format=2] [gd_scene format=3 uid="uid://8v3e4xmvehhx"]
[ext_resource path="res://assets/props/stool b/sm_stool_2_lod1.mesh" type="ArrayMesh" id=1] [ext_resource type="ArrayMesh" path="res://assets/props/stool b/sm_stool_2_lod1.mesh" id="1"]
[node name="sm_stool_b" type="Node3D"] [node name="sm_stool_b" type="Node3D" unique_id=782579931]
[node name="sm_stool_2_lod1" type="MeshInstance3D" parent="."] [node name="sm_stool_2_lod1" type="MeshInstance3D" parent="." unique_id=873563256]
use_in_baked_light = true mesh = ExtResource("1")
mesh = ExtResource( 1 )
surface_material_override/0 = null
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://82om745ll3o4" uid="uid://82om745ll3o4"
path.s3tc="res://.godot/imported/tx_stool_b_BC.tga-c20ef1a25a6be0cf3846b66cd1fa3713.s3tc.ctex" path.s3tc="res://.godot/imported/tx_stool_b_BC.tga-c20ef1a25a6be0cf3846b66cd1fa3713.s3tc.ctex"
path.etc2="res://.godot/imported/tx_stool_b_BC.tga-c20ef1a25a6be0cf3846b66cd1fa3713.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/stool b/textures/tx_stool_b_BC.tga" source_file="res://assets/props/stool b/textures/tx_stool_b_BC.tga"
dest_files=["res://.godot/imported/tx_stool_b_BC.tga-c20ef1a25a6be0cf3846b66cd1fa3713.s3tc.ctex"] dest_files=["res://.godot/imported/tx_stool_b_BC.tga-c20ef1a25a6be0cf3846b66cd1fa3713.s3tc.ctex", "res://.godot/imported/tx_stool_b_BC.tga-c20ef1a25a6be0cf3846b66cd1fa3713.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://cmovui88gnkjk" uid="uid://cmovui88gnkjk"
path.s3tc="res://.godot/imported/tx_stool_b_NM.tga-14bca954eb46468eb8701891808e689d.s3tc.ctex" path.s3tc="res://.godot/imported/tx_stool_b_NM.tga-14bca954eb46468eb8701891808e689d.s3tc.ctex"
path.etc2="res://.godot/imported/tx_stool_b_NM.tga-14bca954eb46468eb8701891808e689d.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/stool b/textures/tx_stool_b_NM.tga" source_file="res://assets/props/stool b/textures/tx_stool_b_NM.tga"
dest_files=["res://.godot/imported/tx_stool_b_NM.tga-14bca954eb46468eb8701891808e689d.s3tc.ctex"] dest_files=["res://.godot/imported/tx_stool_b_NM.tga-14bca954eb46468eb8701891808e689d.s3tc.ctex", "res://.godot/imported/tx_stool_b_NM.tga-14bca954eb46468eb8701891808e689d.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://ctpow28mmgklb" uid="uid://ctpow28mmgklb"
path.s3tc="res://.godot/imported/tx_stool_b_ORM.tga-1eb1e85bdcccbfcf4a8b9de490c1f5a5.s3tc.ctex" path.s3tc="res://.godot/imported/tx_stool_b_ORM.tga-1eb1e85bdcccbfcf4a8b9de490c1f5a5.s3tc.ctex"
path.etc2="res://.godot/imported/tx_stool_b_ORM.tga-1eb1e85bdcccbfcf4a8b9de490c1f5a5.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/stool b/textures/tx_stool_b_ORM.tga" source_file="res://assets/props/stool b/textures/tx_stool_b_ORM.tga"
dest_files=["res://.godot/imported/tx_stool_b_ORM.tga-1eb1e85bdcccbfcf4a8b9de490c1f5a5.s3tc.ctex"] dest_files=["res://.godot/imported/tx_stool_b_ORM.tga-1eb1e85bdcccbfcf4a8b9de490c1f5a5.s3tc.ctex", "res://.godot/imported/tx_stool_b_ORM.tga-1eb1e85bdcccbfcf4a8b9de490c1f5a5.etc2.ctex"]
[params] [params]
+5 -7
View File
@@ -1,10 +1,8 @@
[gd_scene load_steps=2 format=2] [gd_scene format=3 uid="uid://deg2or4d7j3ra"]
[ext_resource path="res://assets/props/table/sm_table_lod2.mesh" type="ArrayMesh" id=1] [ext_resource type="ArrayMesh" path="res://assets/props/table/sm_table_lod2.mesh" id="1"]
[node name="sm_table" type="Node3D"] [node name="sm_table" type="Node3D" unique_id=1717889315]
[node name="sm_table_lod1" type="MeshInstance3D" parent="."] [node name="sm_table_lod1" type="MeshInstance3D" parent="." unique_id=204112634]
use_in_baked_light = true mesh = ExtResource("1")
mesh = ExtResource( 1 )
surface_material_override/0 = null
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://c7tyh6ft758b8" uid="uid://c7tyh6ft758b8"
path.s3tc="res://.godot/imported/tx_table_BC.tga-c2cc5361dfcaa9d2b24897fe31e957a9.s3tc.ctex" path.s3tc="res://.godot/imported/tx_table_BC.tga-c2cc5361dfcaa9d2b24897fe31e957a9.s3tc.ctex"
path.etc2="res://.godot/imported/tx_table_BC.tga-c2cc5361dfcaa9d2b24897fe31e957a9.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/table/textures/tx_table_BC.tga" source_file="res://assets/props/table/textures/tx_table_BC.tga"
dest_files=["res://.godot/imported/tx_table_BC.tga-c2cc5361dfcaa9d2b24897fe31e957a9.s3tc.ctex"] dest_files=["res://.godot/imported/tx_table_BC.tga-c2cc5361dfcaa9d2b24897fe31e957a9.s3tc.ctex", "res://.godot/imported/tx_table_BC.tga-c2cc5361dfcaa9d2b24897fe31e957a9.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://djinbk1nowap7" uid="uid://djinbk1nowap7"
path.s3tc="res://.godot/imported/tx_table_NM.tga-88d93479c1910b48a99728e039a1ce54.s3tc.ctex" path.s3tc="res://.godot/imported/tx_table_NM.tga-88d93479c1910b48a99728e039a1ce54.s3tc.ctex"
path.etc2="res://.godot/imported/tx_table_NM.tga-88d93479c1910b48a99728e039a1ce54.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/table/textures/tx_table_NM.tga" source_file="res://assets/props/table/textures/tx_table_NM.tga"
dest_files=["res://.godot/imported/tx_table_NM.tga-88d93479c1910b48a99728e039a1ce54.s3tc.ctex"] dest_files=["res://.godot/imported/tx_table_NM.tga-88d93479c1910b48a99728e039a1ce54.s3tc.ctex", "res://.godot/imported/tx_table_NM.tga-88d93479c1910b48a99728e039a1ce54.etc2.ctex"]
[params] [params]
@@ -4,15 +4,16 @@ importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://d2e8oknb1eptw" uid="uid://d2e8oknb1eptw"
path.s3tc="res://.godot/imported/tx_table_ORM.tga-d97a9c639551b7056b3d96bfec9c2511.s3tc.ctex" path.s3tc="res://.godot/imported/tx_table_ORM.tga-d97a9c639551b7056b3d96bfec9c2511.s3tc.ctex"
path.etc2="res://.godot/imported/tx_table_ORM.tga-d97a9c639551b7056b3d96bfec9c2511.etc2.ctex"
metadata={ metadata={
"imported_formats": ["s3tc_bptc"], "imported_formats": ["s3tc_bptc", "etc2_astc"],
"vram_texture": true "vram_texture": true
} }
[deps] [deps]
source_file="res://assets/props/table/textures/tx_table_ORM.tga" source_file="res://assets/props/table/textures/tx_table_ORM.tga"
dest_files=["res://.godot/imported/tx_table_ORM.tga-d97a9c639551b7056b3d96bfec9c2511.s3tc.ctex"] dest_files=["res://.godot/imported/tx_table_ORM.tga-d97a9c639551b7056b3d96bfec9c2511.s3tc.ctex", "res://.godot/imported/tx_table_ORM.tga-d97a9c639551b7056b3d96bfec9c2511.etc2.ctex"]
[params] [params]
-11
View File
@@ -1,11 +0,0 @@
extends Node
var table = null
func _get_data(datas, index):
return datas[index].get_data()
func _set_data(prop_id, row_id, data):
table.edit_data(prop_id, row_id, str(data))
Global.database.save_db()
return data
-1
View File
@@ -1 +0,0 @@
uid://bbyxkqilmfqeh
-57
View File
@@ -1,57 +0,0 @@
extends "res://db/MBase.gd"
var m_name = null
var m_thumb = null
var m_level = null
var mscene = load("res://db/MScene.gd")
func _init(row_idx):
m_level = row_idx
table = Global.database.get_table_by_name("levels")
var datas = table.get_data_at_row_idx(m_level)
m_name = _get_name(datas)
m_thumb = _get_thumb(datas)
func object_to_find():
var count = 0
var datas = _scenes().get_data_by_prop_name_and_data("level", str(m_level))
if datas.size() != 0:
count = datas.size()
return str(count)
func reset():
var scene_detail = null
var t = Global.database.get_table_by_name("scenes")
for row_index in range(0, t.m_rows_count):
scene_detail = mscene.new(row_index)
if scene_detail.label() != null:
scene_detail.set_lock(int(false))
func _scenes():
return Global.database.get_table_by_name("scenes")
func object_finding():
var count = 0
for datas in _scenes().get_dictionary_by_prop_name_and_data("level", str(m_level)):
if int(datas['lock']) == 1:
count = count + 1
return str(count)
func name():
return m_name
func thumbnail():
return m_thumb
## PRIVATE
func _get_name(datas):
return str(_get_data(datas, 0))
func _get_thumb(datas):
return str(_get_data(datas, 1))
-1
View File
@@ -1 +0,0 @@
uid://dtjnnc3165bhc
-99
View File
@@ -1,99 +0,0 @@
extends "res://db/MBase.gd"
var m_value = 0
var m_lock = null
var m_label = null
var m_label_counter = null
var m_tick_reference = 0
var m_key = null
var m_level = null
var m_mesh = null
var m_counter = null
var m_row_id = null
const LOCK_ID = 0
const LABEL_ID = 1
const KEY_ID = 2
const LEVEL_ID = 3
const MESH_ID = 4
const LABEL_COUNTER = 5
const COUNTER_ID = 6
func _init(row_index):
table = Global.database.get_table_by_name("scenes")
m_row_id = row_index
var datas = table.get_data_at_row_idx(m_row_id)
if _get_level(datas) == Global.current_scene_int:
m_key = _get_key(datas)
m_lock = _get_lock(datas)
m_label = _get_label(datas)
m_label_counter = _get_label_counter(datas)
m_mesh = _get_mesh(datas)
m_counter = _get_counter(datas)
func key():
return m_key
func label():
return m_label
func label_counter():
return m_label_counter
func lock():
return m_lock
func set_lock(p_value):
m_lock = _set_data(LOCK_ID, m_row_id, p_value)
func mesh():
return m_mesh
func tween():
return m_mesh + "/Tween"
func set_mesh(p_value):
m_mesh = p_value
func tick_reference():
return m_tick_reference
func set_tick_reference(p_value):
m_tick_reference = p_value
func value():
return m_value
func set_value(p_value):
m_value = p_value
func audio_sound():
var stream = load("res://assets/sounds/objects/" + label() + ".ogg")
stream.set_loop(false)
return stream
func counter():
return m_counter
## PRIVATE
func _get_lock(datas):
return bool(int(_get_data(datas, LOCK_ID)))
func _get_label(datas):
return str(_get_data(datas, LABEL_ID))
func _get_key(datas):
return str(_get_data(datas, KEY_ID))
func _get_level(datas):
return int(_get_data(datas, LEVEL_ID))
func _get_mesh(datas):
return "HiddenObjectsItems/" + str(_get_data(datas, MESH_ID))
func _get_label_counter(datas):
return str(_get_data(datas, LABEL_COUNTER))
func _get_counter(datas):
return int(_get_data(datas, COUNTER_ID))
-1
View File
@@ -1 +0,0 @@
uid://cntdl3tocn0tv
-70
View File
@@ -1,70 +0,0 @@
extends "res://db/MBase.gd"
var m_langue = null
var m_gyroscope = null
var m_ambient_sound = null
var m_resolution = null
var m_fullscreen = null
var m_version = null
const ROW_ID = 0
const LANGUE_ID = 0
const GYRSOCPE_ID = 1
const AMBIENT_SOUND = 2
const RESOLUTION = 3
const FULLSCREEN = 4
const VERSION = 5
func _init():
table = Global.database.get_table_by_name("settings")
var datas = table.get_data_at_row_idx(ROW_ID)
m_langue = _get_data(datas, LANGUE_ID)
m_gyroscope = _get_data(datas, GYRSOCPE_ID)
m_ambient_sound = _get_data(datas, AMBIENT_SOUND)
m_resolution = _get_data(datas, RESOLUTION)
m_fullscreen = _get_data(datas, FULLSCREEN)
m_version = _get_data(datas, VERSION)
func get_langue():
return int(m_langue)
func get_gyroscope():
return bool(int(m_gyroscope))
func get_ambient_sound():
return bool(int(m_ambient_sound))
func get_resolution():
return m_resolution.split(" x ")
func get_fullscreen():
return bool(int(m_fullscreen))
func get_version():
return "v" + str(m_version)
func set_langue(value):
m_langue = _set_data(LANGUE_ID, ROW_ID, value)
return get_langue()
func set_gyroscope(value):
m_gyroscope = _set_data(GYRSOCPE_ID, ROW_ID, value)
return get_gyroscope()
func set_ambient_sound(value):
m_ambient_sound = _set_data(AMBIENT_SOUND, ROW_ID, value)
return get_ambient_sound()
func set_resolution(value):
m_resolution = _set_data(RESOLUTION, ROW_ID, value)
return get_resolution()
func set_fullscreen(value):
m_fullscreen = _set_data(FULLSCREEN, ROW_ID, value)
return get_fullscreen()
-1
View File
@@ -1 +0,0 @@
uid://bf50wtagbmftd
+22
View File
@@ -0,0 +1,22 @@
class_name LevelEntry extends Resource
# A single row from the 'levels' table of ahog.json.
@export var index: int = -1
@export var name: String = ""
@export var thumb: String = ""
func object_to_find() -> String:
return str(Global.database.scenes_for_level(index).size())
func object_finding() -> String:
var count := 0
for s in Global.database.scenes_for_level(index):
if s.lock:
count += 1
return str(count)
func reset() -> void:
for s in Global.database.scenes_for_level(index):
s.lock = false
Global.database.save()
+1
View File
@@ -0,0 +1 @@
uid://dp7cvr2c75gj5
+25
View File
@@ -0,0 +1,25 @@
class_name SceneEntry extends Resource
# A single hidden-object row from the 'scenes' table of ahog.json.
@export var lock: bool = false
@export var label: String = ""
@export var key: String = ""
@export var level: int = -1
@export var mesh: String = ""
@export var label_counter: String = ""
@export var counter: int = 1
# Runtime-only state for the dissolve animation tracker (not persisted).
var dissolve_value: float = 0.0
var dissolve_tick_reference: int = 0
var dissolved: bool = false
func mesh_path() -> String:
return "HiddenObjectsItems/" + mesh
func audio_sound() -> AudioStream:
var stream: AudioStream = load("res://assets/sounds/objects/%s.ogg" % label)
if stream is AudioStreamOggVorbis:
stream.loop = false
return stream
+1
View File
@@ -0,0 +1 @@
uid://ciro4yspcb6bi
+13
View File
@@ -0,0 +1,13 @@
class_name SettingsData extends Resource
# Single-row 'settings' table from ahog.json.
@export var langue: int = 0
@export var gyroscope: bool = false
@export var ambient_sound: bool = false
@export var resolution: String = "1280 x 720"
@export var fullscreen: bool = false
@export var version: String = "1.0.0"
func resolution_split() -> PackedStringArray:
return resolution.split(" x ")
+1
View File
@@ -0,0 +1 @@
uid://dbgb8gs3fddt0
View File
@@ -1,40 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://coiv0mhlykb6o"
path="res://.godot/imported/CheckLightmap.exr-a30cb7f4507712e4e8789c79b715eefb.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://developers/aurelien/CheckLightmap.exr"
dest_files=["res://.godot/imported/CheckLightmap.exr-a30cb7f4507712e4e8789c79b715eefb.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
-1
View File
@@ -1 +0,0 @@
uid://pwnyre6lidoy
+55 -112
View File
@@ -1,45 +1,38 @@
[gd_scene format=2] [gd_scene format=3 uid="uid://bd3s4000bmco5"]
[node name="Control" type="Control"] [node name="Control" type="Control" unique_id=1050222790]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
__meta__ = {
"_edit_use_anchors_": false
}
[node name="GridContainer" type="GridContainer" parent="."] [node name="GridContainer" type="GridContainer" parent="." unique_id=1135032533]
layout_mode = 0
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
theme_override_constants/v_separation = 10
theme_override_constants/h_separation = 10 theme_override_constants/h_separation = 10
theme_override_constants/v_separation = 10
columns = 2 columns = 2
__meta__ = {
"_edit_use_anchors_": false
}
[node name="TabContainerGeneral" type="TabContainer" parent="GridContainer"] [node name="TabContainerGeneral" type="TabContainer" parent="GridContainer" unique_id=577267571]
offset_right = 635.0 layout_mode = 2
offset_bottom = 233.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
tab_alignment = 0 current_tab = 0
[node name="Generale" type="TabBar" parent="GridContainer/TabContainerGeneral"] [node name="Generale" type="TabBar" parent="GridContainer/TabContainerGeneral" unique_id=938207251]
anchor_right = 1.0 layout_mode = 2
anchor_bottom = 1.0
offset_left = 4.0
offset_top = 32.0
offset_right = 36.0
offset_bottom = 20.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
scrolling_enabled = false scrolling_enabled = false
metadata/_tab_index = 0
[node name="RichTextLabel" type="RichTextLabel" parent="GridContainer/TabContainerGeneral/Generale"] [node name="RichTextLabel" type="RichTextLabel" parent="GridContainer/TabContainerGeneral/Generale" unique_id=75607507]
layout_mode = 0
offset_right = 624.0 offset_right = 624.0
offset_bottom = 221.0 offset_bottom = 221.0
size_flags_horizontal = 3 size_flags_horizontal = 3
@@ -49,86 +42,58 @@ text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus.
Ut velit mauris, egestas sed, gravida nec, ornare ut, mi. Aenean ut orci vel massa suscipit pulvinar. Nulla sollicitudin. Fusce varius, ligula non tempus aliquam, nunc turpis ullamcorper nibh, in tempus sapien eros vitae ligula. Pellentesque rhoncus nunc et augue. Integer id felis. Curabitur aliquet pellentesque diam. Integer quis metus vitae elit lobortis egestas. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi vel erat non mauris convallis vehicula. Nulla et sapien. Integer tortor tellus, aliquam faucibus, convallis id, congue eu, quam. Mauris ullamcorper felis vitae erat. Proin feugiat, augue non elementum posuere, metus purus iaculis lectus, et tristique ligula justo vitae magna. Ut velit mauris, egestas sed, gravida nec, ornare ut, mi. Aenean ut orci vel massa suscipit pulvinar. Nulla sollicitudin. Fusce varius, ligula non tempus aliquam, nunc turpis ullamcorper nibh, in tempus sapien eros vitae ligula. Pellentesque rhoncus nunc et augue. Integer id felis. Curabitur aliquet pellentesque diam. Integer quis metus vitae elit lobortis egestas. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi vel erat non mauris convallis vehicula. Nulla et sapien. Integer tortor tellus, aliquam faucibus, convallis id, congue eu, quam. Mauris ullamcorper felis vitae erat. Proin feugiat, augue non elementum posuere, metus purus iaculis lectus, et tristique ligula justo vitae magna.
Aliquam convallis sollicitudin purus. Praesent aliquam, enim at fermentum mollis, ligula massa adipiscing nisl, ac euismod nibh nisl eu lectus. Fusce vulputate sem at sapien. Vivamus leo. Aliquam euismod libero eu enim. Nulla nec felis sed leo placerat imperdiet. Aenean suscipit nulla in justo. Suspendisse cursus rutrum augue. Nulla tincidunt tincidunt mi. Curabitur iaculis, lorem vel rhoncus faucibus, felis magna fermentum augue, et ultricies lacus lorem varius purus. Curabitur eu amet." Aliquam convallis sollicitudin purus. Praesent aliquam, enim at fermentum mollis, ligula massa adipiscing nisl, ac euismod nibh nisl eu lectus. Fusce vulputate sem at sapien. Vivamus leo. Aliquam euismod libero eu enim. Nulla nec felis sed leo placerat imperdiet. Aenean suscipit nulla in justo. Suspendisse cursus rutrum augue. Nulla tincidunt tincidunt mi. Curabitur iaculis, lorem vel rhoncus faucibus, felis magna fermentum augue, et ultricies lacus lorem varius purus. Curabitur eu amet."
scroll_active = false scroll_active = false
__meta__ = {
"_edit_use_anchors_": false
}
[node name="TabContainerMobile" type="TabContainer" parent="GridContainer"] [node name="TabContainerMobile" type="TabContainer" parent="GridContainer" unique_id=1137178016]
offset_left = 645.0 layout_mode = 2
offset_right = 1280.0
offset_bottom = 233.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
tab_alignment = 0 current_tab = 0
[node name="Mobile" type="TabBar" parent="GridContainer/TabContainerMobile"] [node name="Mobile" type="TabBar" parent="GridContainer/TabContainerMobile" unique_id=1349664801]
anchor_right = 1.0 layout_mode = 2
anchor_bottom = 1.0 metadata/_tab_index = 0
offset_left = 4.0
offset_top = 32.0
offset_right = -4.0
offset_bottom = -4.0
tab_alignment = 0
[node name="RichTextLabel" type="RichTextLabel" parent="GridContainer/TabContainerMobile/Mobile"] [node name="RichTextLabel" type="RichTextLabel" parent="GridContainer/TabContainerMobile/Mobile" unique_id=1140109331]
layout_mode = 0
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
text = "Quis autem vel eum iure reprehenderit, qui in ea voluptate velit esse, quam nihil molestiae consequatur, vel illum, qui dolorem eum fugiat, quo voluptas nulla pariatur?" text = "Quis autem vel eum iure reprehenderit, qui in ea voluptate velit esse, quam nihil molestiae consequatur, vel illum, qui dolorem eum fugiat, quo voluptas nulla pariatur?"
scroll_active = false scroll_active = false
__meta__ = {
"_edit_use_anchors_": false
}
[node name="TabContainerSound" type="TabContainer" parent="GridContainer"] [node name="TabContainerSound" type="TabContainer" parent="GridContainer" unique_id=1476221752]
offset_top = 243.0 layout_mode = 2
offset_right = 635.0
offset_bottom = 476.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
tab_alignment = 0 current_tab = 0
[node name="Sound" type="TabBar" parent="GridContainer/TabContainerSound"] [node name="Sound" type="TabBar" parent="GridContainer/TabContainerSound" unique_id=1892732599]
anchor_right = 1.0 layout_mode = 2
anchor_bottom = 1.0 metadata/_tab_index = 0
offset_left = 4.0
offset_top = 32.0
offset_right = -4.0
offset_bottom = -4.0
tab_alignment = 0
[node name="RichTextLabel2" type="RichTextLabel" parent="GridContainer/TabContainerSound/Sound"] [node name="RichTextLabel2" type="RichTextLabel" parent="GridContainer/TabContainerSound/Sound" unique_id=1420180720]
layout_mode = 0
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
text = "Quis autem vel eum iure reprehenderit, qui in ea voluptate velit esse, quam nihil molestiae consequatur, vel illum, qui dolorem eum fugiat, quo voluptas nulla pariatur?" text = "Quis autem vel eum iure reprehenderit, qui in ea voluptate velit esse, quam nihil molestiae consequatur, vel illum, qui dolorem eum fugiat, quo voluptas nulla pariatur?"
scroll_active = false scroll_active = false
__meta__ = {
"_edit_use_anchors_": false
}
[node name="TabContainerGraphisme" type="TabContainer" parent="GridContainer"] [node name="TabContainerGraphisme" type="TabContainer" parent="GridContainer" unique_id=180951967]
offset_left = 645.0 layout_mode = 2
offset_top = 243.0
offset_right = 1280.0
offset_bottom = 476.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
tab_alignment = 0 current_tab = 0
[node name="Graphisme" type="TabBar" parent="GridContainer/TabContainerGraphisme"] [node name="Graphisme" type="TabBar" parent="GridContainer/TabContainerGraphisme" unique_id=1708425172]
anchor_right = 1.0 layout_mode = 2
anchor_bottom = 1.0
offset_left = 4.0
offset_top = 32.0
offset_right = -4.0
offset_bottom = -4.0
tab_alignment = 0
scrolling_enabled = false scrolling_enabled = false
metadata/_tab_index = 0
[node name="RichTextLabel" type="RichTextLabel" parent="GridContainer/TabContainerGraphisme/Graphisme"] [node name="RichTextLabel" type="RichTextLabel" parent="GridContainer/TabContainerGraphisme/Graphisme" unique_id=943610410]
layout_mode = 0
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
text = "« Pour vous faire mieux connaitre doù vient lerreur de ceux qui blâment la volupté, et qui louent en quelque sorte la douleur, je vais entrer dans une explication plus étendue, et vous faire voir tout ce qui a été dit là-dessus par linventeur de la vérité, et, pour ainsi dire, par larchitecte de la vie heureuse. text = "« Pour vous faire mieux connaitre doù vient lerreur de ceux qui blâment la volupté, et qui louent en quelque sorte la douleur, je vais entrer dans une explication plus étendue, et vous faire voir tout ce qui a été dit là-dessus par linventeur de la vérité, et, pour ainsi dire, par larchitecte de la vie heureuse.
@@ -141,58 +106,39 @@ Jen dis autant de ceux qui, par mollesse desprit, cest-à-dire par la c
La règle que suit en cela un homme sage, cest de renoncer à de légères voluptés pour en avoir de plus grandes, et de savoir supporter des douleurs légères pour en éviter de plus fâcheuses. »" La règle que suit en cela un homme sage, cest de renoncer à de légères voluptés pour en avoir de plus grandes, et de savoir supporter des douleurs légères pour en éviter de plus fâcheuses. »"
scroll_active = false scroll_active = false
__meta__ = {
"_edit_use_anchors_": false
}
[node name="TabContainerSound2" type="TabContainer" parent="GridContainer"] [node name="TabContainerSound2" type="TabContainer" parent="GridContainer" unique_id=303482291]
offset_top = 486.0 layout_mode = 2
offset_right = 635.0
offset_bottom = 719.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
tab_alignment = 0 current_tab = 0
[node name="Sound" type="TabBar" parent="GridContainer/TabContainerSound2"] [node name="Sound" type="TabBar" parent="GridContainer/TabContainerSound2" unique_id=1588376455]
anchor_right = 1.0 layout_mode = 2
anchor_bottom = 1.0 metadata/_tab_index = 0
offset_left = 4.0
offset_top = 32.0
offset_right = -4.0
offset_bottom = -4.0
tab_alignment = 0
[node name="RichTextLabel2" type="RichTextLabel" parent="GridContainer/TabContainerSound2/Sound"] [node name="RichTextLabel2" type="RichTextLabel" parent="GridContainer/TabContainerSound2/Sound" unique_id=1866823306]
layout_mode = 0
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
text = "Quis autem vel eum iure reprehenderit, qui in ea voluptate velit esse, quam nihil molestiae consequatur, vel illum, qui dolorem eum fugiat, quo voluptas nulla pariatur?" text = "Quis autem vel eum iure reprehenderit, qui in ea voluptate velit esse, quam nihil molestiae consequatur, vel illum, qui dolorem eum fugiat, quo voluptas nulla pariatur?"
scroll_active = false scroll_active = false
__meta__ = {
"_edit_use_anchors_": false
}
[node name="TabContainerGraphisme2" type="TabContainer" parent="GridContainer"] [node name="TabContainerGraphisme2" type="TabContainer" parent="GridContainer" unique_id=1071745587]
offset_left = 645.0 layout_mode = 2
offset_top = 486.0
offset_right = 1280.0
offset_bottom = 719.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
tab_alignment = 0 current_tab = 0
[node name="Graphisme" type="TabBar" parent="GridContainer/TabContainerGraphisme2"] [node name="Graphisme" type="TabBar" parent="GridContainer/TabContainerGraphisme2" unique_id=704932079]
anchor_right = 1.0 layout_mode = 2
anchor_bottom = 1.0
offset_left = 4.0
offset_top = 32.0
offset_right = -4.0
offset_bottom = -4.0
tab_alignment = 0
scrolling_enabled = false scrolling_enabled = false
metadata/_tab_index = 0
[node name="RichTextLabel" type="RichTextLabel" parent="GridContainer/TabContainerGraphisme2/Graphisme"] [node name="RichTextLabel" type="RichTextLabel" parent="GridContainer/TabContainerGraphisme2/Graphisme" unique_id=1701535678]
layout_mode = 0
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
text = "« Pour vous faire mieux connaitre doù vient lerreur de ceux qui blâment la volupté, et qui louent en quelque sorte la douleur, je vais entrer dans une explication plus étendue, et vous faire voir tout ce qui a été dit là-dessus par linventeur de la vérité, et, pour ainsi dire, par larchitecte de la vie heureuse. text = "« Pour vous faire mieux connaitre doù vient lerreur de ceux qui blâment la volupté, et qui louent en quelque sorte la douleur, je vais entrer dans une explication plus étendue, et vous faire voir tout ce qui a été dit là-dessus par linventeur de la vérité, et, pour ainsi dire, par larchitecte de la vie heureuse.
@@ -205,6 +151,3 @@ Jen dis autant de ceux qui, par mollesse desprit, cest-à-dire par la c
La règle que suit en cela un homme sage, cest de renoncer à de légères voluptés pour en avoir de plus grandes, et de savoir supporter des douleurs légères pour en éviter de plus fâcheuses. »" La règle que suit en cela un homme sage, cest de renoncer à de légères voluptés pour en avoir de plus grandes, et de savoir supporter des douleurs légères pour en éviter de plus fâcheuses. »"
scroll_active = false scroll_active = false
__meta__ = {
"_edit_use_anchors_": false
}
+15 -28
View File
@@ -1,46 +1,36 @@
[gd_scene format=2] [gd_scene format=3 uid="uid://dbplgs43pk2ud"]
[node name="Control" type="ScrollContainer"] [node name="Control" type="ScrollContainer" unique_id=1602493395]
anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
scroll_vertical_enabled = false
__meta__ = {
"_edit_use_anchors_": false
}
[node name="MarginContainer" type="MarginContainer" parent="."] [node name="MarginContainer" type="MarginContainer" parent="." unique_id=2140982364]
offset_right = 1280.0
offset_bottom = 1280.0
custom_minimum_size = Vector2(1280, 1280) custom_minimum_size = Vector2(1280, 1280)
layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
theme_override_constants/margin_right = 10
theme_override_constants/margin_top = 10
theme_override_constants/margin_left = 10 theme_override_constants/margin_left = 10
theme_override_constants/margin_top = 10
theme_override_constants/margin_right = 10
theme_override_constants/margin_bottom = 10 theme_override_constants/margin_bottom = 10
[node name="TabContainerGeneral" type="TabContainer" parent="MarginContainer"] [node name="TabContainerGeneral" type="TabContainer" parent="MarginContainer" unique_id=1768198311]
offset_left = 10.0
offset_top = 10.0
offset_right = 1270.0
offset_bottom = 1270.0
custom_minimum_size = Vector2(0, 1080) custom_minimum_size = Vector2(0, 1080)
layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
tab_alignment = 0 current_tab = 0
[node name="Generale" type="TabBar" parent="MarginContainer/TabContainerGeneral"] [node name="Generale" type="TabBar" parent="MarginContainer/TabContainerGeneral" unique_id=2056320346]
anchor_right = 1.0 layout_mode = 2
anchor_bottom = 1.0
offset_left = 4.0
offset_top = 32.0
offset_right = -4.0
offset_bottom = -4.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
scrolling_enabled = false scrolling_enabled = false
metadata/_tab_index = 0
[node name="RichTextLabel" type="RichTextLabel" parent="MarginContainer/TabContainerGeneral/Generale"] [node name="RichTextLabel" type="RichTextLabel" parent="MarginContainer/TabContainerGeneral/Generale" unique_id=1728656187]
layout_mode = 0
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
size_flags_horizontal = 3 size_flags_horizontal = 3
@@ -69,6 +59,3 @@ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendi
Ut velit mauris, egestas sed, gravida nec, ornare ut, mi. Aenean ut orci vel massa suscipit pulvinar. Nulla sollicitudin. Fusce varius, ligula non tempus aliquam, nunc turpis ullamcorper nibh, in tempus sapien eros vitae ligula. Pellentesque rhoncus nunc et augue. Integer id felis. Curabitur aliquet pellentesque diam. Integer quis metus vitae elit lobortis egestas. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi vel erat non mauris convallis vehicula. Nulla et sapien. Integer tortor tellus, aliquam faucibus, convallis id, congue eu, quam. Mauris ullamcorper felis vitae erat. Proin feugiat, augue non elementum posuere, metus purus iaculis lectus, et tristique ligula justo vitae magna. Ut velit mauris, egestas sed, gravida nec, ornare ut, mi. Aenean ut orci vel massa suscipit pulvinar. Nulla sollicitudin. Fusce varius, ligula non tempus aliquam, nunc turpis ullamcorper nibh, in tempus sapien eros vitae ligula. Pellentesque rhoncus nunc et augue. Integer id felis. Curabitur aliquet pellentesque diam. Integer quis metus vitae elit lobortis egestas. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi vel erat non mauris convallis vehicula. Nulla et sapien. Integer tortor tellus, aliquam faucibus, convallis id, congue eu, quam. Mauris ullamcorper felis vitae erat. Proin feugiat, augue non elementum posuere, metus purus iaculis lectus, et tristique ligula justo vitae magna.
Aliquam convallis sollicitudin purus. Praesent aliquam, enim at fermentum mollis, ligula massa adipiscing nisl, ac euismod nibh nisl eu lectus. Fusce vulputate sem at sapien. Vivamus leo. Aliquam euismod libero eu enim. Nulla nec felis sed leo placerat imperdiet. Aenean suscipit nulla in justo. Suspendisse cursus rutrum augue. Nulla tincidunt tincidunt mi. Curabitur iaculis, lorem vel rhoncus faucibus, felis magna fermentum augue, et ultricies lacus lorem varius purus. Curabitur eu amet." Aliquam convallis sollicitudin purus. Praesent aliquam, enim at fermentum mollis, ligula massa adipiscing nisl, ac euismod nibh nisl eu lectus. Fusce vulputate sem at sapien. Vivamus leo. Aliquam euismod libero eu enim. Nulla nec felis sed leo placerat imperdiet. Aenean suscipit nulla in justo. Suspendisse cursus rutrum augue. Nulla tincidunt tincidunt mi. Curabitur iaculis, lorem vel rhoncus faucibus, felis magna fermentum augue, et ultricies lacus lorem varius purus. Curabitur eu amet."
scroll_active = false scroll_active = false
__meta__ = {
"_edit_use_anchors_": false
}
+34 -59
View File
@@ -1,11 +1,13 @@
[gd_scene load_steps=5 format=2] [gd_scene format=3 uid="uid://v0uklmwi4vrx"]
[ext_resource path="res://assets/ui/themes/tab_select/UI-level-btn-leather.png" type="Texture2D" id=1] [ext_resource type="Texture2D" uid="uid://g8iyo0t47j30" path="res://assets/ui/themes/tab_select/UI-level-btn-leather.png" id="1"]
[ext_resource path="res://assets/ui/themes/tab_select/UI-Button-Count.png" type="Texture2D" id=2] [ext_resource type="Texture2D" uid="uid://bs22t34m61as7" path="res://assets/ui/themes/tab_select/UI-Button-Count.png" id="2"]
[ext_resource path="res://assets/ui/themes/tab_select/UI-level-btn-shadow.png" type="Texture2D" id=3] [ext_resource type="Texture2D" uid="uid://dqoumo46armbe" path="res://assets/ui/themes/tab_select/UI-level-btn-shadow.png" id="3"]
[ext_resource path="res://assets/ui/themes/tab_select/UI-Button-Reset.png" type="Texture2D" id=4] [ext_resource type="Texture2D" uid="uid://bsrpumg1bhtas" path="res://assets/ui/themes/tab_select/UI-Button-Reset.png" id="4"]
[node name="Control" type="Control"] [node name="Control" type="Control" unique_id=1768959998]
layout_mode = 3
anchors_preset = 5
anchor_left = 0.5 anchor_left = 0.5
anchor_right = 0.5 anchor_right = 0.5
offset_left = -639.646 offset_left = -639.646
@@ -14,88 +16,61 @@ offset_right = 640.354
offset_bottom = 720.707 offset_bottom = 720.707
size_flags_horizontal = 0 size_flags_horizontal = 0
size_flags_vertical = 0 size_flags_vertical = 0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="BckShadow" type="TextureRect" parent="."] [node name="BckShadow" type="TextureRect" parent="." unique_id=1945468253]
layout_mode = 0
anchor_left = 0.5 anchor_left = 0.5
anchor_right = 0.5 anchor_right = 0.5
offset_left = -227.0 offset_left = -227.0
offset_right = 228.0 offset_right = 228.0
offset_bottom = 720.0 offset_bottom = 720.0
texture = ExtResource( 3 ) texture = ExtResource("3")
__meta__ = {
"_edit_use_anchors_": false
}
[node name="MarginContainer" type="MarginContainer" parent="."] [node name="MarginContainer" type="MarginContainer" parent="." unique_id=1876727334]
layout_mode = 0
anchor_left = 0.5 anchor_left = 0.5
anchor_right = 0.5 anchor_right = 0.5
offset_left = -228.5 offset_left = -228.5
offset_right = 228.5 offset_right = 228.5
offset_bottom = 436.0 offset_bottom = 436.0
theme_override_constants/margin_right = 20
theme_override_constants/margin_top = 20
theme_override_constants/margin_left = 20 theme_override_constants/margin_left = 20
theme_override_constants/margin_top = 20
theme_override_constants/margin_right = 20
theme_override_constants/margin_bottom = 0 theme_override_constants/margin_bottom = 0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="AlignColumn" type="VBoxContainer" parent="MarginContainer"] [node name="AlignColumn" type="VBoxContainer" parent="MarginContainer" unique_id=935049544]
offset_left = 20.0 layout_mode = 2
offset_top = 20.0
offset_right = 437.0
offset_bottom = 549.0
theme_override_constants/separation = 0 theme_override_constants/separation = 0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="TextureRect" type="TextureRect" parent="MarginContainer/AlignColumn"] [node name="TextureRect" type="TextureRect" parent="MarginContainer/AlignColumn" unique_id=1700077512]
offset_right = 417.0 layout_mode = 2
offset_bottom = 416.0 texture = ExtResource("1")
texture = ExtResource( 1 )
[node name="VBoxContainer" type="HBoxContainer" parent="MarginContainer/AlignColumn"] [node name="VBoxContainer" type="HBoxContainer" parent="MarginContainer/AlignColumn" unique_id=1865804251]
offset_top = 416.0 layout_mode = 2
offset_right = 417.0
offset_bottom = 529.0
theme_override_constants/separation = 0 theme_override_constants/separation = 0
alignment = 1 alignment = 1
[node name="TextureRect2" type="TextureRect" parent="MarginContainer/AlignColumn/VBoxContainer"] [node name="TextureRect2" type="TextureRect" parent="MarginContainer/AlignColumn/VBoxContainer" unique_id=1437024102]
offset_left = 7.0 layout_mode = 2
offset_right = 185.0
offset_bottom = 113.0
size_flags_horizontal = 0 size_flags_horizontal = 0
texture = ExtResource( 4 ) texture = ExtResource("4")
[node name="TextureRect3" type="TextureRect" parent="MarginContainer/AlignColumn/VBoxContainer"] [node name="TextureRect3" type="TextureRect" parent="MarginContainer/AlignColumn/VBoxContainer" unique_id=360483509]
offset_left = 185.0 layout_mode = 2
offset_right = 410.0
offset_bottom = 113.0
pivot_offset = Vector2( -231.224, -72.2715 )
size_flags_horizontal = 0 size_flags_horizontal = 0
texture = ExtResource( 2 ) texture = ExtResource("2")
[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/AlignColumn/VBoxContainer/TextureRect3"] [node name="MarginContainer" type="MarginContainer" parent="MarginContainer/AlignColumn/VBoxContainer/TextureRect3" unique_id=1743053910]
layout_mode = 0
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
theme_override_constants/margin_bottom = 10 theme_override_constants/margin_bottom = 10
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Label" type="Label" parent="MarginContainer/AlignColumn/VBoxContainer/TextureRect3/MarginContainer"] [node name="Label" type="Label" parent="MarginContainer/AlignColumn/VBoxContainer/TextureRect3/MarginContainer" unique_id=1067435383]
offset_right = 225.0 layout_mode = 2
offset_bottom = 103.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 7 size_flags_vertical = 7
text = "X / 10" text = "X / 10"
align = 1 horizontal_alignment = 1
valign = 1 vertical_alignment = 1
__meta__ = {
"_edit_use_anchors_": false
}
+4 -4
View File
@@ -30,7 +30,7 @@ keystore/release_password=""
one_click_deploy/clear_previous_install=true one_click_deploy/clear_previous_install=true
version/code=1 version/code=1
version/name="1.0" version/name="1.0"
package/unique_name="org.godotengine.$genname" package/unique_name="com.devcrea.puzzlequest"
package/name="" package/name=""
package/signed=false package/signed=false
launcher_icons/main_192x192="" launcher_icons/main_192x192=""
@@ -230,7 +230,7 @@ codesign/timestamp_server_url=""
codesign/digest_algorithm=1 codesign/digest_algorithm=1
codesign/description="" codesign/description=""
codesign/custom_options=PoolStringArray( ) codesign/custom_options=PoolStringArray( )
application/icon="res://releases/windows/project.ico" application/icon=""
application/file_version="" application/file_version=""
application/product_version="" application/product_version=""
application/company_name="" application/company_name=""
@@ -296,7 +296,7 @@ codesign/timestamp_server_url=""
codesign/digest_algorithm=1 codesign/digest_algorithm=1
codesign/description="" codesign/description=""
codesign/custom_options=PoolStringArray( ) codesign/custom_options=PoolStringArray( )
application/icon="res://releases/windows/project.ico" application/icon=""
application/file_version="" application/file_version=""
application/product_version="" application/product_version=""
application/company_name="" application/company_name=""
@@ -337,7 +337,7 @@ keystore/release_password=""
one_click_deploy/clear_previous_install=false one_click_deploy/clear_previous_install=false
version/code=1 version/code=1
version/name="1.0" version/name="1.0"
package/unique_name="org.godotengine.$genname" package/unique_name="com.devcrea.puzzlequest"
package/name="" package/name=""
package/signed=false package/signed=false
launcher_icons/main_192x192="" launcher_icons/main_192x192=""
+7
View File
@@ -0,0 +1,7 @@
# gdtoolkit / gdlint config
# https://github.com/Scony/godot-gdscript-toolkit/wiki
# Godot $-paths and typed signatures push lines well past 100 cols routinely;
# 140 keeps the rule as a "no absurdly long line" safety net without forcing
# constant manual wrapping of node paths.
max-line-length: 140
+1
View File
@@ -67,4 +67,5 @@ locale/translations=PackedStringArray("res://locales/fr.po", "res://locales/en.p
[rendering] [rendering]
textures/vram_compression/import_etc2_astc=true
environment/defaults/default_environment="res://default_env.tres" environment/defaults/default_environment="res://default_env.tres"
-134
View File
@@ -1,134 +0,0 @@
---
# Windows Development version
kind: pipeline
type: docker
name: WindowsDebugVersion
platform:
os: linux
arch: amd64
clone:
depth: 1
steps:
- name: WindowsDebug
image: barichello/godot-ci:3.3.2
volumes:
- name: binary
path: releases/windows
commands:
- godot --export "WindowsDebug" "releases/windows/Puzzle Quest.exe"
- name: WindowsDeploy
image: barichello/godot-ci:3.3.2
volumes:
- name: binary
path: releases/windows
environment:
BUTLER_API_KEY:
from_secret: BUTLER_API_KEY
commands:
- butler push --if-changed --ignore '.keep' "releases/windows" "dev-crea/ahog:windows"
trigger:
branch:
- dev
---
# Android Development version
kind: pipeline
type: docker
name: AndroidDebugVersion
platform:
os: linux
arch: amd64
clone:
depth: 1
steps:
- name: AndroidDebug
image: devcrea/godot-ci:3.3.2-android
volumes:
- name: binary
path: releases/android
commands:
- apt-get update
- apt-get install -y wget
- wget -O /root/debug.keystore https://u.pcloud.link/publink/show?code=XZD8dxXZSdXUyze6UHXxhssGJXHfUBI730Gk
- sed 's@keystore/debug=".*"@keystore/debug="'/root/debug.keystore'"@g' -i export_presets.cfg
# - sed 's@keystore/release_user=".*"@keystore/release_user="'$SECRET_RELEASE_KEYSTORE_USER'"@g' -i export_presets.cfg
# - sed 's@keystore/release_password=".*"@keystore/release_password="'$SECRET_RELEASE_KEYSTORE_PASSWORD'"@g' -i export_presets.cfg
- godot --export "AndroidDebug" "releases/android/Puzzle Quest.apk"
- name: AndroidDeploy
image: barichello/godot-ci:3.3.2
volumes:
- name: binary
path: releases/android
environment:
BUTLER_API_KEY:
from_secret: BUTLER_API_KEY
commands:
- butler push --if-changed --ignore '.keep' "releases/android" "dev-crea/ahog:android"
trigger:
branch:
- dev
---
# Linux Development version
kind: pipeline
type: docker
name: LinuxDebugVersion
platform:
os: linux
arch: amd64
clone:
depth: 1
steps:
- name: LinuxDebug
image: barichello/godot-ci:3.3.2
volumes:
- name: binary
path: releases/linux
commands:
- godot --export "Linux/X11Debug" "releases/linux/Puzzle Quest.x86_64"
- name: LinuxDeploy
image: barichello/godot-ci:3.3.2
volumes:
- name: binary
path: releases/linux
environment:
BUTLER_API_KEY:
from_secret: BUTLER_API_KEY
commands:
- butler push --if-changed --ignore '.keep' "releases/linux" "dev-crea/ahog:linux"
trigger:
branch:
- dev
---
# For Production version
kind: pipeline
type: docker
name: ReleaseVersion
platform:
os: linux
arch: amd64
clone:
depth: 1
trigger:
branch:
- master
+15 -21
View File
@@ -4,55 +4,49 @@ extends Node
@export var setting: PackedScene = load("res://scenes/UI/settings/Settings.tscn") @export var setting: PackedScene = load("res://scenes/UI/settings/Settings.tscn")
@export var choose_scene: PackedScene = load("res://scenes/UI/choose_scenes/ChooseScene.tscn") @export var choose_scene: PackedScene = load("res://scenes/UI/choose_scenes/ChooseScene.tscn")
@onready var current_scene = "title" @onready var stream_button: AudioStream = preload("res://assets/sounds/click-button.ogg")
@onready var stream_button = preload("res://assets/sounds/click-button.ogg") @onready var home: TextureButton = $MarginContainer/HBoxContainer/UI_summary/PanelWood/VBoxContainer/CenterContainer/TextureRect
@onready var home = $MarginContainer/HBoxContainer/UI_summary/PanelWood/VBoxContainer/CenterContainer/TextureRect
func _ready(): func _ready() -> void:
_translation() _translation()
home.set_focus_mode(2) home.focus_mode = Control.FOCUS_ALL
home.grab_focus() home.grab_focus()
_apply_scene(title) _apply_scene(title)
_configure_sound() _configure_sound()
func _configure_sound(): func _configure_sound() -> void:
stream_button.set_loop(false) if stream_button is AudioStreamOggVorbis:
stream_button.loop = false
$MarginContainer/HBoxContainer/UI_summary/ClickButton.stream = stream_button $MarginContainer/HBoxContainer/UI_summary/ClickButton.stream = stream_button
## PRIVATE ## PRIVATE
func _translation(): func _translation() -> void:
$MarginContainer/HBoxContainer/UI_summary/PanelWood/VBoxContainer/ButtonPuzzle/Label.text = tr("MAIN_BUTTON_PUZZLES") $MarginContainer/HBoxContainer/UI_summary/PanelWood/VBoxContainer/ButtonPuzzle/Label.text = tr("MAIN_BUTTON_PUZZLES")
$MarginContainer/HBoxContainer/UI_summary/PanelWood/VBoxContainer/ButtonSetting/Label.text = tr("MAIN_BUTTON_SETTINGS") $MarginContainer/HBoxContainer/UI_summary/PanelWood/VBoxContainer/ButtonSetting/Label.text = tr("MAIN_BUTTON_SETTINGS")
$MarginContainer/HBoxContainer/UI_summary/PanelWood/VBoxContainer/ButtonQuit/Label.text = tr("MAIN_BUTTON_QUIT") $MarginContainer/HBoxContainer/UI_summary/PanelWood/VBoxContainer/ButtonQuit/Label.text = tr("MAIN_BUTTON_QUIT")
$MarginContainer/HBoxContainer/UI_summary/PanelWood/VBoxContainer/ContainerVersion/LabelVersion.text = Setting.get_setting_version() $MarginContainer/HBoxContainer/UI_summary/PanelWood/VBoxContainer/ContainerVersion/LabelVersion.text = Setting.get_setting_version()
func _apply_scene(actual_scene): func _apply_scene(actual_scene: PackedScene) -> void:
var node = get_node("MarginContainer/HBoxContainer/MarginContainer/") var node := get_node("MarginContainer/HBoxContainer/MarginContainer/")
if node.get_child_count() != 0: if node.get_child_count() != 0:
node.get_child(0).queue_free() node.get_child(0).queue_free()
node.add_child(actual_scene.instantiate()) node.add_child(actual_scene.instantiate())
# Load scene for select game func _on_ButtonPuzzle_pressed() -> void:
func _on_ButtonPuzzle_pressed():
_sound_button() _sound_button()
_apply_scene(choose_scene) _apply_scene(choose_scene)
# Load scene settings func _on_ButtonSetting_pressed() -> void:
func _on_ButtonSetting_pressed():
_sound_button() _sound_button()
_apply_scene(setting) _apply_scene(setting)
# Click to icon game func _on_TextureRect_pressed() -> void:
func _on_TextureRect_pressed():
_sound_button() _sound_button()
_apply_scene(title) _apply_scene(title)
# Quit the game func _on_ButtonQuit_pressed() -> void:
func _on_ButtonQuit_pressed():
_sound_button() _sound_button()
get_tree().quit(0) get_tree().quit(0)
func _sound_button(): func _sound_button() -> void:
$MarginContainer/HBoxContainer/UI_summary/ClickButton.play() $MarginContainer/HBoxContainer/UI_summary/ClickButton.play()
+5 -57
View File
@@ -1,8 +1,8 @@
[gd_scene format=3] [gd_scene format=3 uid="uid://bwkk5khc1y210"]
[ext_resource type="Script" path="res://scenes/Main.gd" id="1"] [ext_resource type="Script" uid="uid://by2coyg8u0u67" path="res://scenes/Main.gd" id="1"]
[ext_resource type="PackedScene" path="res://scenes/UI/background/Background.tscn" id="5"] [ext_resource type="PackedScene" uid="uid://edbpygl0vh8c" path="res://scenes/UI/background/Background.tscn" id="5"]
[ext_resource type="PackedScene" path="res://scenes/UI/summary/Summary.tscn" id="8"] [ext_resource type="PackedScene" uid="uid://bjrsudbbriijh" path="res://scenes/UI/summary/Summary.tscn" id="8"]
[node name="Main" type="Control" unique_id=1146227135] [node name="Main" type="Control" unique_id=1146227135]
layout_mode = 3 layout_mode = 3
@@ -15,7 +15,6 @@ script = ExtResource("1")
[node name="BackgroundPicture" parent="." unique_id=1341502133 instance=ExtResource("5")] [node name="BackgroundPicture" parent="." unique_id=1341502133 instance=ExtResource("5")]
layout_mode = 1 layout_mode = 1
anchors_preset = 15
grow_horizontal = 2 grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
@@ -32,61 +31,10 @@ layout_mode = 2
size_flags_horizontal = 0 size_flags_horizontal = 0
size_flags_vertical = 3 size_flags_vertical = 3
[node name="PanelWood" parent="MarginContainer/HBoxContainer/UI_summary" index="0"] [node name="VBoxContainer" parent="MarginContainer/HBoxContainer/UI_summary/PanelWood" parent_id_path=PackedInt32Array(1690362681, 1864179308) index="0" unique_id=1602451066]
layout_mode = 2
[node name="VBoxContainer" parent="MarginContainer/HBoxContainer/UI_summary/PanelWood" index="0"]
layout_mode = 0
anchor_right = 0.0 anchor_right = 0.0
anchor_bottom = 0.0 anchor_bottom = 0.0
[node name="CenterContainer" parent="MarginContainer/HBoxContainer/UI_summary/PanelWood/VBoxContainer" index="0"]
layout_mode = 2
[node name="TextureRect" parent="MarginContainer/HBoxContainer/UI_summary/PanelWood/VBoxContainer/CenterContainer" index="0"]
layout_mode = 2
[node name="ButtonPuzzle" parent="MarginContainer/HBoxContainer/UI_summary/PanelWood/VBoxContainer" index="1"]
layout_mode = 2
[node name="Label" parent="MarginContainer/HBoxContainer/UI_summary/PanelWood/VBoxContainer/ButtonPuzzle" index="0"]
[node name="ButtonSetting" parent="MarginContainer/HBoxContainer/UI_summary/PanelWood/VBoxContainer" index="2"]
layout_mode = 2
[node name="Label" parent="MarginContainer/HBoxContainer/UI_summary/PanelWood/VBoxContainer/ButtonSetting" index="0"]
[node name="ButtonCredits" parent="MarginContainer/HBoxContainer/UI_summary/PanelWood/VBoxContainer" index="3"]
layout_mode = 2
[node name="Label" parent="MarginContainer/HBoxContainer/UI_summary/PanelWood/VBoxContainer/ButtonCredits" index="0"]
[node name="MarginContainer" parent="MarginContainer/HBoxContainer/UI_summary/PanelWood/VBoxContainer" index="4"]
layout_mode = 2
[node name="ButtonQuit" parent="MarginContainer/HBoxContainer/UI_summary/PanelWood/VBoxContainer" index="5"]
layout_mode = 2
[node name="Label" parent="MarginContainer/HBoxContainer/UI_summary/PanelWood/VBoxContainer/ButtonQuit" index="0"]
[node name="ContainerVersion" parent="MarginContainer/HBoxContainer/UI_summary/PanelWood/VBoxContainer" index="6"]
layout_mode = 2
[node name="MarginLeft" parent="MarginContainer/HBoxContainer/UI_summary/PanelWood/VBoxContainer/ContainerVersion" index="0"]
layout_mode = 2
[node name="LabelVersion" parent="MarginContainer/HBoxContainer/UI_summary/PanelWood/VBoxContainer/ContainerVersion" index="1"]
layout_mode = 2
[node name="MarginRight" parent="MarginContainer/HBoxContainer/UI_summary/PanelWood/VBoxContainer/ContainerVersion" index="2"]
layout_mode = 2
[node name="MarginContainerBottom" parent="MarginContainer/HBoxContainer/UI_summary/PanelWood/VBoxContainer" index="7"]
layout_mode = 2
[node name="TextureRect" parent="MarginContainer/HBoxContainer/UI_summary" index="1"]
layout_mode = 2
[node name="MarginContainer" type="MarginContainer" parent="MarginContainer/HBoxContainer" unique_id=1017122368] [node name="MarginContainer" type="MarginContainer" parent="MarginContainer/HBoxContainer" unique_id=1017122368]
layout_mode = 2 layout_mode = 2
size_flags_horizontal = 7 size_flags_horizontal = 7
+4 -3
View File
@@ -1,8 +1,9 @@
[gd_scene format=3] [gd_scene format=3 uid="uid://edbpygl0vh8c"]
[ext_resource type="Texture2D" path="res://assets/ui/themes/bck.jpg" id="1"] [ext_resource type="Texture2D" uid="uid://ypy03afi81pt" path="res://assets/ui/themes/bck.jpg" id="1"]
[node name="BackgroundPicture" type="TextureRect"] [node name="BackgroundPicture" type="TextureRect" unique_id=42074458]
anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
texture = ExtResource("1") texture = ExtResource("1")
+28 -39
View File
@@ -2,68 +2,57 @@ extends Control
@export var template: PackedScene = load("res://scenes/UI/choose_scenes/parts/Template.tscn") @export var template: PackedScene = load("res://scenes/UI/choose_scenes/parts/Template.tscn")
func _ready(): func _ready() -> void:
_load_button_access_scenes() for level in Global.database.levels:
_apply_scene(level)
## PRIVATE ## PRIVATE
func _load_button_access_scenes(): func _apply_scene(level: LevelEntry) -> void:
for row_index in range(0, Global.database.get_table_by_name("levels").m_rows_count): $MarginContainer.add_child(_load_scene(level.name))
_apply_scene(load("res://db/MLevel.gd").new(row_index), row_index) var node := _build_path(level.name)
func _apply_scene(level, index):
$MarginContainer.add_child(_load_scene(level.name()))
var node = _build_path(level.name())
_configure_select(level, node) _configure_select(level, node)
configure_reset(level, node, index, false) configure_reset(level, node, false)
configure_counter(level, node) configure_counter(level, node)
func _load_scene(p_name): func _load_scene(p_name: String) -> Node:
var template_instance = template.instantiate() var template_instance := template.instantiate()
template_instance.set_name(p_name) template_instance.set_name(p_name)
return template_instance return template_instance
func _build_path(p_name): func _build_path(p_name: String) -> String:
return "MarginContainer/" + p_name return "MarginContainer/" + p_name
func _load_texture(thumbnail): func _configure_select(level: LevelEntry, node: String) -> void:
return load(thumbnail) var selector := get_node(node + "/MarginContainer/CenterAlign/MainButton")
var thumbnail: TextureRect = get_node(node + "/MarginContainer/CenterAlign/MainButton/MarginStich/ThumbnailLevel")
func _configure_select(level, node): thumbnail.texture = load(level.thumb)
var selector = get_node(node+"/MarginContainer/CenterAlign/MainButton") var handler := Event.level_pressed(level.name)
var thumbnail = get_node(node+"/MarginContainer/CenterAlign/MainButton/MarginStich/ThumbnailLevel")
thumbnail.set_texture(_load_texture(level.thumbnail()))
var handler = Event.level_pressed(level.name())
if handler.is_valid(): if handler.is_valid():
selector.pressed.connect(handler) selector.pressed.connect(handler)
func configure_reset(level, node, index, animate): func configure_reset(level: LevelEntry, node: String, animate: bool) -> void:
var reset = get_node(node+"/MarginContainer/CenterAlign/MainButton/TabAlign/ButtonReset") var reset: BaseButton = get_node(node + "/MarginContainer/CenterAlign/MainButton/TabAlign/ButtonReset")
var animation = get_node(node+"/AnimationPlayer") var animation: AnimationPlayer = get_node(node + "/AnimationPlayer")
if int(level.object_finding()) == 0: if int(level.object_finding()) == 0:
_configure_reset_disable(animation, reset, animate) _configure_reset_disable(animation, reset, animate)
else: else:
_configure_reset_enable(animation, reset, level, node, index) _configure_reset_enable(animation, reset, level, node)
func _configure_reset_disable(animation, reset, animate = false): func _configure_reset_disable(animation: AnimationPlayer, reset: BaseButton, animate: bool = false) -> void:
animation.play("SlideReset") animation.play("SlideReset")
if !animate: if not animate:
animation.seek(1, false) animation.seek(1, false)
reset.set_disabled(true) reset.set_disabled(true)
reset.set_default_cursor_shape(CURSOR_ARROW) reset.mouse_default_cursor_shape = CURSOR_ARROW
for c in reset.pressed.get_connections(): for c in reset.pressed.get_connections():
reset.pressed.disconnect(c["callable"]) reset.pressed.disconnect(c["callable"])
func _configure_reset_enable(animation, reset, level, node, index): func _configure_reset_enable(animation: AnimationPlayer, reset: BaseButton, level: LevelEntry, node: String) -> void:
animation.play_backwards("SlideReset") animation.play_backwards("SlideReset")
reset.set_disabled(false) reset.set_disabled(false)
reset.set_default_cursor_shape(CURSOR_POINTING_HAND) reset.mouse_default_cursor_shape = CURSOR_POINTING_HAND
reset.pressed.connect(Event._on_reset_level.bind(level, node, index, self)) reset.pressed.connect(Event._on_reset_level.bind(level, node, level.index, self))
func configure_counter(level, node): func configure_counter(level: LevelEntry, node: String) -> void:
var count = get_node(node+"/MarginContainer/CenterAlign/MainButton/TabAlign/ButtonCount/MarginBottom/Label") var count: Label = get_node(node + "/MarginContainer/CenterAlign/MainButton/TabAlign/ButtonCount/MarginBottom/Label")
count.text = level.object_finding() + " / " + level.object_to_find()
count.set_text(level.object_finding()+" / "+level.object_to_find())
+7 -10
View File
@@ -1,25 +1,22 @@
[gd_scene format=3] [gd_scene format=3 uid="uid://b1np8c74w5sea"]
[ext_resource type="Script" path="res://scenes/UI/choose_scenes/ChooseScene.gd" id="1"] [ext_resource type="Script" uid="uid://bcfdw1mmwinhn" path="res://scenes/UI/choose_scenes/ChooseScene.gd" id="1"]
[sub_resource type="StyleBoxEmpty" id="EmptyPanel"] [sub_resource type="StyleBoxEmpty" id="EmptyPanel"]
[node name="ChooseScene" type="ScrollContainer"] [node name="ChooseScene" type="ScrollContainer" unique_id=1732973661]
anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
theme_override_styles/panel = SubResource("EmptyPanel")
horizontal_scroll_mode = 0 horizontal_scroll_mode = 0
vertical_scroll_mode = 0 vertical_scroll_mode = 0
theme_override_styles/panel = SubResource("EmptyPanel")
script = ExtResource("1") script = ExtResource("1")
__meta__ = {
"_edit_use_anchors_": false
}
[node name="MarginContainer" type="GridContainer" parent="."] [node name="MarginContainer" type="GridContainer" parent="." unique_id=469264802]
offset_right = 1280.0 layout_mode = 2
offset_bottom = 720.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
columns = 3 columns = 3
+52 -81
View File
@@ -1,13 +1,13 @@
[gd_scene format=3] [gd_scene format=3 uid="uid://bdv2y5ciy4xpo"]
[ext_resource type="FontVariation" path="res://assets/fonts/kirsty/kirsty_base.tres" id="1"] [ext_resource type="FontVariation" uid="uid://inv1rofq17xy" path="res://assets/fonts/kirsty/kirsty_base.tres" id="1"]
[ext_resource type="Texture2D" path="res://assets/ui/themes/tab_select/UI-Button-Reset-hover.png" id="2"] [ext_resource type="Texture2D" uid="uid://fi0dokesq6bq" path="res://assets/ui/themes/tab_select/UI-Button-Reset-hover.png" id="2"]
[ext_resource type="Texture2D" path="res://assets/ui/themes/tab_select/UI-Button-Reset-disabled.png" id="3"] [ext_resource type="Texture2D" uid="uid://550rkcq2ihsj" path="res://assets/ui/themes/tab_select/UI-Button-Reset-disabled.png" id="3"]
[ext_resource type="Texture2D" path="res://assets/ui/themes/tab_select/UI-Button-Count-hover.png" id="4"] [ext_resource type="Texture2D" uid="uid://bddr54amp71fv" path="res://assets/ui/themes/tab_select/UI-Button-Count-hover.png" id="4"]
[ext_resource type="Texture2D" path="res://assets/ui/themes/tab_select/UI-Button-Reset.png" id="5"] [ext_resource type="Texture2D" uid="uid://bsrpumg1bhtas" path="res://assets/ui/themes/tab_select/UI-Button-Reset.png" id="5"]
[ext_resource type="Texture2D" path="res://assets/ui/themes/tab_select/UI-Button-Count.png" id="6"] [ext_resource type="Texture2D" uid="uid://bs22t34m61as7" path="res://assets/ui/themes/tab_select/UI-Button-Count.png" id="6"]
[ext_resource type="Texture2D" path="res://assets/ui/themes/tab_select/UI-level-btn-shadow.png" id="7"] [ext_resource type="Texture2D" uid="uid://dqoumo46armbe" path="res://assets/ui/themes/tab_select/UI-level-btn-shadow.png" id="7"]
[ext_resource type="Texture2D" path="res://assets/ui/themes/tab_select/UI-level-btn-leather.png" id="8"] [ext_resource type="Texture2D" uid="uid://g8iyo0t47j30" path="res://assets/ui/themes/tab_select/UI-level-btn-leather.png" id="8"]
[sub_resource type="Animation" id="1"] [sub_resource type="Animation" id="1"]
resource_name = "SlideReset" resource_name = "SlideReset"
@@ -23,69 +23,67 @@ tracks/0/keys = {
"times": PackedFloat32Array(0, 1) "times": PackedFloat32Array(0, 1)
} }
[node name="TilePuzzle" type="Control"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_oblr1"]
_data = {
&"SlideReset": SubResource("1")
}
[node name="TilePuzzle" type="Control" unique_id=1136813254]
layout_mode = 3
anchors_preset = 0
offset_left = 320.0 offset_left = 320.0
offset_right = 1600.0 offset_right = 1600.0
offset_bottom = 720.0 offset_bottom = 720.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
__meta__ = {
"_edit_use_anchors_": false
}
[node name="BackgroundTile" type="TextureRect" parent="."] [node name="BackgroundTile" type="TextureRect" parent="." unique_id=1429542932]
visible = false visible = false
layout_mode = 0
anchor_left = 0.5 anchor_left = 0.5
anchor_right = 0.5 anchor_right = 0.5
offset_left = -114.0 offset_left = -114.0
offset_right = 115.0 offset_right = 115.0
offset_bottom = 456.0 offset_bottom = 456.0
texture = ExtResource("7") texture = ExtResource("7")
__meta__ = {
"_edit_use_anchors_": false
}
[node name="MarginContainer" type="MarginContainer" parent="."] [node name="MarginContainer" type="MarginContainer" parent="." unique_id=509628273]
layout_mode = 0
anchor_left = 0.5 anchor_left = 0.5
anchor_right = 0.5 anchor_right = 0.5
offset_left = -114.0 offset_left = -114.0
offset_right = 115.0 offset_right = 115.0
offset_bottom = 720.0 offset_bottom = 720.0
theme_override_constants/margin_right = 10
theme_override_constants/margin_top = 10
theme_override_constants/margin_left = 10 theme_override_constants/margin_left = 10
__meta__ = { theme_override_constants/margin_top = 10
"_edit_use_anchors_": false theme_override_constants/margin_right = 10
}
[node name="CenterAlign" type="VBoxContainer" parent="MarginContainer"] [node name="CenterAlign" type="VBoxContainer" parent="MarginContainer" unique_id=314766412]
offset_left = 10.0 layout_mode = 2
offset_top = 10.0
offset_right = 219.0
offset_bottom = 720.0
theme_override_constants/separation = 0 theme_override_constants/separation = 0
[node name="MainButton" type="TextureButton" parent="MarginContainer/CenterAlign"] [node name="MainButton" type="TextureButton" parent="MarginContainer/CenterAlign" unique_id=1876585747]
offset_right = 209.0 layout_mode = 2
offset_bottom = 208.0
mouse_default_cursor_shape = 2 mouse_default_cursor_shape = 2
texture_normal = ExtResource("8") texture_normal = ExtResource("8")
__meta__ = {
"_edit_use_anchors_": false
}
[node name="MarginStich" type="MarginContainer" parent="MarginContainer/CenterAlign/MainButton"] [node name="MarginStich" type="MarginContainer" parent="MarginContainer/CenterAlign/MainButton" unique_id=2061086300]
layout_mode = 0
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
theme_override_constants/margin_right = 5
theme_override_constants/margin_top = 5
theme_override_constants/margin_left = 5 theme_override_constants/margin_left = 5
theme_override_constants/margin_top = 5
theme_override_constants/margin_right = 5
theme_override_constants/margin_bottom = 5 theme_override_constants/margin_bottom = 5
__meta__ = {
"_edit_use_anchors_": false
}
[node name="ThumbnailLevel" type="TextureRect" parent="MarginContainer/CenterAlign/MainButton/MarginStich"] [node name="ThumbnailLevel" type="TextureRect" parent="MarginContainer/CenterAlign/MainButton/MarginStich" unique_id=1401509555]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
expand_mode = 1
[node name="ThumbnailLevel" type="TextureRect" parent="MarginContainer/CenterAlign/MainButton" unique_id=330142441]
layout_mode = 0
offset_left = 5.0 offset_left = 5.0
offset_top = 5.0 offset_top = 5.0
offset_right = 204.0 offset_right = 204.0
@@ -93,74 +91,47 @@ offset_bottom = 203.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
expand_mode = 1 expand_mode = 1
__meta__ = {
"_edit_use_anchors_": false
}
[node name="ThumbnailLevel" type="TextureRect" parent="MarginContainer/CenterAlign/MainButton"] [node name="TabAlign" type="HBoxContainer" parent="MarginContainer/CenterAlign/MainButton" unique_id=820994914]
offset_left = 5.0
offset_top = 5.0
offset_right = 204.0
offset_bottom = 203.0
size_flags_horizontal = 3
size_flags_vertical = 3
expand_mode = 1
__meta__ = {
"_edit_use_anchors_": false
}
[node name="TabAlign" type="HBoxContainer" parent="MarginContainer/CenterAlign/MainButton"]
show_behind_parent = true show_behind_parent = true
layout_mode = 0
offset_top = 208.0 offset_top = 208.0
offset_right = 209.0 offset_right = 209.0
offset_bottom = 710.0 offset_bottom = 710.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
alignment = 1 alignment = 1
__meta__ = {
"_edit_use_anchors_": false
}
[node name="ButtonReset" type="TextureButton" parent="MarginContainer/CenterAlign/MainButton/TabAlign"] [node name="ButtonReset" type="TextureButton" parent="MarginContainer/CenterAlign/MainButton/TabAlign" unique_id=42918781]
show_behind_parent = true show_behind_parent = true
offset_left = 1.0 layout_mode = 2
offset_right = 90.0
offset_bottom = 57.0
size_flags_vertical = 0 size_flags_vertical = 0
texture_normal = ExtResource("5") texture_normal = ExtResource("5")
texture_hover = ExtResource("2") texture_hover = ExtResource("2")
texture_disabled = ExtResource("3") texture_disabled = ExtResource("3")
[node name="ButtonCount" type="TextureButton" parent="MarginContainer/CenterAlign/MainButton/TabAlign"] [node name="ButtonCount" type="TextureButton" parent="MarginContainer/CenterAlign/MainButton/TabAlign" unique_id=192493579]
offset_left = 94.0 layout_mode = 2
offset_right = 207.0
offset_bottom = 57.0
mouse_default_cursor_shape = 2
size_flags_vertical = 0 size_flags_vertical = 0
mouse_default_cursor_shape = 2
texture_normal = ExtResource("6") texture_normal = ExtResource("6")
texture_hover = ExtResource("4") texture_hover = ExtResource("4")
texture_focused = ExtResource("4") texture_focused = ExtResource("4")
[node name="MarginBottom" type="MarginContainer" parent="MarginContainer/CenterAlign/MainButton/TabAlign/ButtonCount"] [node name="MarginBottom" type="MarginContainer" parent="MarginContainer/CenterAlign/MainButton/TabAlign/ButtonCount" unique_id=944673833]
layout_mode = 0
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
theme_override_constants/margin_bottom = 10 theme_override_constants/margin_bottom = 10
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Label" type="Label" parent="MarginContainer/CenterAlign/MainButton/TabAlign/ButtonCount/MarginBottom"] [node name="Label" type="Label" parent="MarginContainer/CenterAlign/MainButton/TabAlign/ButtonCount/MarginBottom" unique_id=1766311049]
offset_right = 113.0 layout_mode = 2
offset_bottom = 47.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 7 size_flags_vertical = 7
theme_override_fonts/font = ExtResource("1") theme_override_fonts/font = ExtResource("1")
text = "X / 10" text = "X / 10"
horizontal_alignment = 1 horizontal_alignment = 1
vertical_alignment = 1 vertical_alignment = 1
__meta__ = {
"_edit_use_anchors_": false
}
[node name="AnimationPlayer" type="AnimationPlayer" parent="."] [node name="AnimationPlayer" type="AnimationPlayer" parent="." unique_id=922689445]
anims/SlideReset = SubResource("1") libraries/ = SubResource("AnimationLibrary_oblr1")
+2 -4
View File
@@ -1,9 +1,7 @@
extends CenterContainer extends CenterContainer
func _ready(): func _ready() -> void:
print("[ending_#ready]")
$AudioStreamPlayer.play() $AudioStreamPlayer.play()
func _on_Timer_timeout(): func _on_Timer_timeout() -> void:
print("[ending#_on_Timer_timeout]")
Global.goto_scene("res://scenes/Main.tscn") Global.goto_scene("res://scenes/Main.tscn")
+13 -23
View File
@@ -1,8 +1,8 @@
[gd_scene format=3] [gd_scene format=3 uid="uid://c8sg2clnv7eld"]
[ext_resource type="Script" path="res://scenes/UI/ending/Ending.gd" id="1"] [ext_resource type="Script" uid="uid://cqqhb0tct4m01" path="res://scenes/UI/ending/Ending.gd" id="1"]
[ext_resource type="AudioStream" path="res://assets/sounds/victory.ogg" id="2"] [ext_resource type="AudioStream" uid="uid://b76kuq712ix8k" path="res://assets/sounds/victory.ogg" id="2"]
[ext_resource type="FontFile" path="res://assets/fonts/MKX Title.ttf" id="3"] [ext_resource type="FontFile" uid="uid://c7ps8q01ej5du" path="res://assets/fonts/MKX Title.ttf" id="3"]
[sub_resource type="FontFile" id="1"] [sub_resource type="FontFile" id="1"]
fallbacks = Array[Font]([ExtResource("3")]) fallbacks = Array[Font]([ExtResource("3")])
@@ -21,42 +21,32 @@ cache/0/16/0/underline_position = 0.0
cache/0/16/0/underline_thickness = 0.0 cache/0/16/0/underline_thickness = 0.0
cache/0/16/0/scale = 1.0 cache/0/16/0/scale = 1.0
[node name="CenterContainer" type="CenterContainer"] [node name="CenterContainer" type="CenterContainer" unique_id=2065892859]
anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
script = ExtResource("1") script = ExtResource("1")
__meta__ = {
"_edit_use_anchors_": false
}
[node name="ColorRect" type="ColorRect" parent="."] [node name="ColorRect" type="ColorRect" parent="." unique_id=1128227116]
offset_left = 640.0 layout_mode = 2
offset_top = 360.0
offset_right = 640.0
offset_bottom = 360.0
grow_horizontal = 0
grow_vertical = 0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
color = Color(0, 0, 0, 1) color = Color(0, 0, 0, 1)
[node name="Timer" type="Timer" parent="."] [node name="Timer" type="Timer" parent="." unique_id=1372711213]
wait_time = 4.31 wait_time = 4.31
autostart = true autostart = true
[node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="." unique_id=780977400]
stream = ExtResource("2") stream = ExtResource("2")
volume_db = -29.411 volume_db = -29.411
[node name="Label" type="Label" parent="."] [node name="Label" type="Label" parent="." unique_id=1880017385]
offset_left = 477.0 layout_mode = 2
offset_top = 275.0
offset_right = 802.0
offset_bottom = 444.0
theme_override_fonts/font = SubResource("1")
theme_override_colors/font_color = Color(1, 1, 1, 1) theme_override_colors/font_color = Color(1, 1, 1, 1)
theme_override_fonts/font = SubResource("1")
text = "aHog !!! text = "aHog !!!
+1 -1
View File
@@ -1,4 +1,4 @@
extends Control extends Control
func _ready(): func _ready() -> void:
get_node("LabelLoading").text = tr("LOADING") get_node("LabelLoading").text = tr("LOADING")
+30 -16
View File
@@ -1,8 +1,8 @@
[gd_scene format=3] [gd_scene format=3 uid="uid://cyxlaf1u2nhjn"]
[ext_resource type="PackedScene" path="res://scenes/UI/loading/parts/LoadingBare.tscn" id="1"] [ext_resource type="PackedScene" uid="uid://t4bee0w11cj2" path="res://scenes/UI/loading/parts/LoadingBare.tscn" id="1"]
[ext_resource type="PackedScene" path="res://scenes/UI/loading/parts/TopPart.tscn" id="2"] [ext_resource type="PackedScene" uid="uid://dxvg52gd5h1kh" path="res://scenes/UI/loading/parts/TopPart.tscn" id="2"]
[ext_resource type="PackedScene" path="res://scenes/UI/background/Background.tscn" id="3"] [ext_resource type="PackedScene" uid="uid://edbpygl0vh8c" path="res://scenes/UI/background/Background.tscn" id="3"]
[sub_resource type="Animation" id="1"] [sub_resource type="Animation" id="1"]
resource_name = "BorderAnim" resource_name = "BorderAnim"
@@ -29,26 +29,40 @@ tracks/1/keys = {
"times": PackedFloat32Array(0, 0.4) "times": PackedFloat32Array(0, 0.4)
} }
[node name="Control" type="Control"] [sub_resource type="AnimationLibrary" id="AnimationLibrary_ygatp"]
anchor_right = 1.0 _data = {
anchor_bottom = 1.0 &"BorderAnim": SubResource("1")
__meta__ = {
"_edit_use_anchors_": false
} }
[node name="BackgroundPicture" parent="." instance=ExtResource("3")] [node name="Control" type="Control" unique_id=1398968538]
layout_mode = 1 layout_mode = 3
anchors_preset = 15 anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="LoadingTopBorder" parent="." instance=ExtResource("2")] [node name="BackgroundPicture" parent="." unique_id=2027281585 instance=ExtResource("3")]
layout_mode = 1
grow_horizontal = 2
grow_vertical = 2
[node name="LoadingTopBorder" parent="." unique_id=218348086 instance=ExtResource("2")]
layout_mode = 0
anchors_preset = 0
anchor_right = 0.0
anchor_bottom = 0.0
offset_top = 0.362091 offset_top = 0.362091
offset_bottom = 0.362061 offset_bottom = 0.362061
grow_vertical = 1
[node name="LoadingBare" parent="." instance=ExtResource("1")] [node name="LoadingBare" parent="." unique_id=1550577651 instance=ExtResource("1")]
layout_mode = 0
anchors_preset = 0
anchor_right = 0.0
anchor_bottom = 0.0
offset_top = 360.0 offset_top = 360.0
[node name="AnimLoading" type="AnimationPlayer" parent="."] [node name="AnimLoading" type="AnimationPlayer" parent="." unique_id=1450388645]
method_call_mode = 1 callback_mode_method = 1
anims/BorderAnim = SubResource("1") libraries/ = SubResource("AnimationLibrary_ygatp")
+9 -13
View File
@@ -1,28 +1,24 @@
[gd_scene format=3] [gd_scene format=3 uid="uid://c8wq3txgsbayx"]
[node name="Tile" type="VBoxContainer"] [node name="Tile" type="VBoxContainer" unique_id=689859814]
anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
size_flags_horizontal = 3 size_flags_horizontal = 3
[node name="MarginContainer" type="MarginContainer" parent="."] [node name="MarginContainer" type="MarginContainer" parent="." unique_id=2052541719]
offset_right = 1280.0 layout_mode = 2
offset_bottom = 237.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
[node name="BorderLeft" type="ColorRect" parent="."] [node name="BorderLeft" type="ColorRect" parent="." unique_id=1201756514]
offset_top = 241.0
offset_right = 1280.0
offset_bottom = 478.0
custom_minimum_size = Vector2(0, 8) custom_minimum_size = Vector2(0, 8)
layout_mode = 2
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
color = Color(0.74902, 0.701961, 0.65098, 1) color = Color(0.74902, 0.701961, 0.65098, 1)
[node name="MarginContainer2" type="MarginContainer" parent="."] [node name="MarginContainer2" type="MarginContainer" parent="." unique_id=31910865]
offset_top = 482.0 layout_mode = 2
offset_right = 1280.0
offset_bottom = 720.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
+8 -11
View File
@@ -1,9 +1,10 @@
[gd_scene format=3] [gd_scene format=3 uid="uid://ct7qxiscklbm8"]
[ext_resource type="FontVariation" path="res://assets/fonts/kirsty/kirsty_title.tres" id="1"] [ext_resource type="FontVariation" uid="uid://bqx3uv23bwjul" path="res://assets/fonts/kirsty/kirsty_title.tres" id="1"]
[ext_resource type="Script" path="res://scenes/UI/loading/Loading.gd" id="2"] [ext_resource type="Script" uid="uid://dsma7tpjx5f65" path="res://scenes/UI/loading/Loading.gd" id="2"]
[node name="VBoxLoading" type="VBoxContainer"] [node name="VBoxLoading" type="VBoxContainer" unique_id=854342834]
anchors_preset = 8
anchor_left = 0.5 anchor_left = 0.5
anchor_top = 0.5 anchor_top = 0.5
anchor_right = 0.5 anchor_right = 0.5
@@ -17,16 +18,12 @@ size_flags_vertical = 0
theme_override_constants/separation = 0 theme_override_constants/separation = 0
alignment = 1 alignment = 1
script = ExtResource("2") script = ExtResource("2")
__meta__ = {
"_edit_use_anchors_": false
}
[node name="LabelLoading" type="Label" parent="."] [node name="LabelLoading" type="Label" parent="." unique_id=673745546]
offset_right = 193.0 layout_mode = 2
offset_bottom = 56.0 theme_override_colors/font_color = Color(0.74902, 0.701961, 0.65098, 1)
theme_override_fonts/font = ExtResource("1") theme_override_fonts/font = ExtResource("1")
theme_override_font_sizes/font_size = 46 theme_override_font_sizes/font_size = 46
theme_override_colors/font_color = Color(0.74902, 0.701961, 0.65098, 1)
text = "loading" text = "loading"
horizontal_alignment = 1 horizontal_alignment = 1
vertical_alignment = 2 vertical_alignment = 2
+20 -31
View File
@@ -1,44 +1,37 @@
[gd_scene format=3] [gd_scene format=3 uid="uid://t4bee0w11cj2"]
[ext_resource type="Theme" path="res://assets/ui/themes/leather.theme" id="1"] [ext_resource type="Theme" path="res://assets/ui/themes/leather.theme" id="1"]
[node name="LoadingBare" type="Control"] [node name="LoadingBare" type="Control" unique_id=1614726848]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
__meta__ = { grow_horizontal = 2
"_edit_use_anchors_": false grow_vertical = 2
}
[node name="VBoxContainer" type="VBoxContainer" parent="."] [node name="VBoxContainer" type="VBoxContainer" parent="." unique_id=1258548453]
layout_mode = 0
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer"] [node name="MarginContainer" type="MarginContainer" parent="VBoxContainer" unique_id=144824491]
offset_right = 1280.0 layout_mode = 2
offset_bottom = 237.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer"] [node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer" unique_id=1257929124]
offset_top = 241.0 layout_mode = 2
offset_right = 1280.0
offset_bottom = 478.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
[node name="HSplitContainer" type="HSplitContainer" parent="VBoxContainer/HBoxContainer"] [node name="HSplitContainer" type="HSplitContainer" parent="VBoxContainer/HBoxContainer" unique_id=1650805636]
offset_right = 238.0 layout_mode = 2
offset_bottom = 237.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_stretch_ratio = 0.3 size_flags_stretch_ratio = 0.3
[node name="ProgressBar" type="ProgressBar" parent="VBoxContainer/HBoxContainer"] [node name="ProgressBar" type="ProgressBar" parent="VBoxContainer/HBoxContainer" unique_id=2054750986]
offset_left = 242.0 layout_mode = 2
offset_right = 1037.0
offset_bottom = 237.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
theme = ExtResource("1") theme = ExtResource("1")
@@ -46,16 +39,12 @@ max_value = 1.0
step = 0.1 step = 0.1
rounded = true rounded = true
[node name="HSplitContainer2" type="HSplitContainer" parent="VBoxContainer/HBoxContainer"] [node name="HSplitContainer2" type="HSplitContainer" parent="VBoxContainer/HBoxContainer" unique_id=462638225]
offset_left = 1041.0 layout_mode = 2
offset_right = 1280.0
offset_bottom = 237.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_stretch_ratio = 0.3 size_flags_stretch_ratio = 0.3
[node name="MarginContainer2" type="MarginContainer" parent="VBoxContainer"] [node name="MarginContainer2" type="MarginContainer" parent="VBoxContainer" unique_id=371664312]
offset_top = 482.0 layout_mode = 2
offset_right = 1280.0
offset_bottom = 720.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
+26 -52
View File
@@ -1,87 +1,61 @@
[gd_scene format=3] [gd_scene format=3 uid="uid://dxvg52gd5h1kh"]
[ext_resource type="PackedScene" path="res://scenes/UI/loading/parts/LabelLoading.tscn" id="1"] [ext_resource type="PackedScene" uid="uid://ct7qxiscklbm8" path="res://scenes/UI/loading/parts/LabelLoading.tscn" id="1"]
[ext_resource type="PackedScene" path="res://scenes/UI/loading/parts/BorderColor.tscn" id="2"] [ext_resource type="PackedScene" uid="uid://c8wq3txgsbayx" path="res://scenes/UI/loading/parts/BorderColor.tscn" id="2"]
[ext_resource type="Texture2D" path="res://assets/ui/themes/bck-hrz-grd.png" id="3"] [ext_resource type="Texture2D" uid="uid://c0ddrujen604n" path="res://assets/ui/themes/bck-hrz-grd.png" id="3"]
[node name="LoadingBorder" type="Control"] [node name="LoadingBorder" type="Control" unique_id=167487990]
clip_contents = true
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2 grow_vertical = 2
clip_contents = true
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
__meta__ = {
"_edit_use_anchors_": false
}
[node name="BackgroundGradient" type="VBoxContainer" parent="."] [node name="BackgroundGradient" type="VBoxContainer" parent="." unique_id=1476252897]
layout_mode = 0
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
theme_override_constants/separation = 0 theme_override_constants/separation = 0
__meta__ = {
"_edit_use_anchors_": false
}
[node name="BlackColor" type="ColorRect" parent="BackgroundGradient"] [node name="BlackColor" type="ColorRect" parent="BackgroundGradient" unique_id=1692081529]
offset_right = 1280.0 layout_mode = 2
offset_bottom = 240.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
color = Color(0, 0, 0, 1) color = Color(0, 0, 0, 1)
[node name="ColorRect" type="TextureRect" parent="BackgroundGradient"] [node name="ColorRect" type="TextureRect" parent="BackgroundGradient" unique_id=1221457874]
offset_top = 240.0 layout_mode = 2
offset_right = 1280.0
offset_bottom = 480.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
texture = ExtResource("3") texture = ExtResource("3")
expand_mode = 1 expand_mode = 1
__meta__ = {
"_edit_use_anchors_": false
}
[node name="MarginContainer" type="MarginContainer" parent="BackgroundGradient"] [node name="MarginContainer" type="MarginContainer" parent="BackgroundGradient" unique_id=658862845]
offset_top = 480.0 layout_mode = 2
offset_right = 1280.0
offset_bottom = 720.0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
[node name="LabelAndBorder" type="HBoxContainer" parent="."] [node name="LabelAndBorder" type="HBoxContainer" parent="." unique_id=1120691617]
clip_contents = true
layout_mode = 0
anchor_top = 0.5 anchor_top = 0.5
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 0.5 anchor_bottom = 0.5
offset_top = -30.0 offset_top = -30.0
offset_bottom = 30.0 offset_bottom = 30.0
clip_contents = true
size_flags_vertical = 5 size_flags_vertical = 5
theme_override_constants/separation = 20 theme_override_constants/separation = 20
alignment = 1 alignment = 1
__meta__ = {
"_edit_use_anchors_": false
}
[node name="BorderLeft" parent="LabelAndBorder" instance=ExtResource("2")] [node name="BorderLeft" parent="LabelAndBorder" unique_id=492130723 instance=ExtResource("2")]
anchor_right = 0.0 layout_mode = 2
anchor_bottom = 0.0
offset_right = 523.0
offset_bottom = 60.0
[node name="LabelLoading" parent="LabelAndBorder" instance=ExtResource("1")] [node name="LabelLoading" parent="LabelAndBorder" unique_id=1883632327 instance=ExtResource("1")]
anchor_left = 0.0 layout_mode = 2
anchor_top = 0.0
anchor_right = 0.0
anchor_bottom = 0.0
offset_left = 543.0
offset_top = 0.0
offset_right = 736.0
offset_bottom = 56.0
[node name="BorderRight" parent="LabelAndBorder" instance=ExtResource("2")] [node name="BorderRight" parent="LabelAndBorder" unique_id=1411830674 instance=ExtResource("2")]
anchor_right = 0.0 layout_mode = 2
anchor_bottom = 0.0
offset_left = 756.0
offset_right = 1280.0
offset_bottom = 60.0
+22 -26
View File
@@ -1,6 +1,6 @@
extends Node extends Node
func _ready(): func _ready() -> void:
_apply_translation() _apply_translation()
_apply_settings_language() _apply_settings_language()
_apply_settings_gyroscope() _apply_settings_gyroscope()
@@ -9,50 +9,46 @@ func _ready():
_apply_settings_fullscreen() _apply_settings_fullscreen()
## PRIVATE ## PRIVATE
func _apply_translation(): func _apply_translation() -> void:
$VBoxContainer/langue/VBoxContainer/Label.text = tr("SETTINGS_LABEL_LANGUE") $VBoxContainer/langue/VBoxContainer/Label.text = tr("SETTINGS_LABEL_LANGUE")
$VBoxContainer/gyroscope/HBoxContainer/Label.text = tr("SETTINGS_LABEL_GYROSCOPE") $VBoxContainer/gyroscope/HBoxContainer/Label.text = tr("SETTINGS_LABEL_GYROSCOPE")
func _apply_settings_language(): func _apply_settings_language() -> void:
var data = $VBoxContainer/langue/VBoxContainer/data var data: ItemList = $VBoxContainer/langue/VBoxContainer/data
data.add_item("English", load("res://assets/ui/flags/english.png"), true) # id : 0 data.add_item("English", load("res://assets/ui/flags/english.png"), true) # id : 0
data.add_item("Français", load("res://assets/ui/flags/french.png"), true) # id : 1 data.add_item("Français", load("res://assets/ui/flags/french.png"), true) # id : 1
data.select(Setting.get_setting_language()) data.select(Setting.get_setting_language())
func _apply_settings_gyroscope(): func _apply_settings_gyroscope() -> void:
$VBoxContainer/gyroscope/HBoxContainer/data.button_pressed = Setting.get_setting_gyrosocpe() $VBoxContainer/gyroscope/HBoxContainer/data.button_pressed = Setting.get_setting_gyrosocpe()
func _apply_settings_sound_ambient(): func _apply_settings_sound_ambient() -> void:
$VBoxContainer/ambient_sound/HBoxContainer/data.button_pressed = Setting.get_setting_ambient_sound() $VBoxContainer/ambient_sound/HBoxContainer/data.button_pressed = Setting.get_setting_ambient_sound()
func _apply_settings_resolution(): func _apply_settings_resolution() -> void:
var data = $VBoxContainer/resolution/VBoxContainer/data var data: ItemList = $VBoxContainer/resolution/VBoxContainer/data
data.add_item("2560 x 1440", null, true)
data.add_item("2560 x 1440", null, true) # id : 0 data.add_item("1920 x 1080", null, true)
data.add_item("1920 x 1080", null, true) # id : 1 data.add_item("1280 x 720", null, true)
data.add_item("1280 x 720", null, true) # id : 2 data.add_item("854 x 576", null, true)
data.add_item("854 x 576", null, true) # id : 3
for index in range(4): for index in range(4):
if data.get_item_text(index).split(' x ') == Setting.get_setting_resolution(): if data.get_item_text(index).split(" x ") == Setting.get_setting_resolution():
data.select(index) data.select(index)
func _apply_settings_fullscreen(): func _apply_settings_fullscreen() -> void:
$VBoxContainer/fullscreen/HBoxContainer/data.button_pressed = Setting.get_setting_fullscreen() $VBoxContainer/fullscreen/HBoxContainer/data.button_pressed = Setting.get_setting_fullscreen()
func _on_gyroscope_pressed(): func _on_gyroscope_pressed() -> void:
Setting.set_setting_gyroscope(int($VBoxContainer/gyroscope/HBoxContainer/data.button_pressed)) Setting.set_setting_gyroscope($VBoxContainer/gyroscope/HBoxContainer/data.button_pressed)
func _on_ambient_sound_pressed(): func _on_ambient_sound_pressed() -> void:
Setting.set_setting_ambient_sound(int($VBoxContainer/ambient_sound/HBoxContainer/data.button_pressed)) Setting.set_setting_ambient_sound($VBoxContainer/ambient_sound/HBoxContainer/data.button_pressed)
func _on_langue_item_selected(index): func _on_langue_item_selected(index: int) -> void:
Setting.set_setting_language(index) Setting.set_setting_language(index)
func _on_resolution_item_selected(index): func _on_resolution_item_selected(index: int) -> void:
Setting.set_setting_resolution($VBoxContainer/resolution/VBoxContainer/data.get_item_text(index)) Setting.set_setting_resolution($VBoxContainer/resolution/VBoxContainer/data.get_item_text(index))
func _on_fullscreen_item_selected(): func _on_fullscreen_item_selected() -> void:
Setting.set_setting_fullscreen(int($VBoxContainer/fullscreen/HBoxContainer/data.button_pressed)) Setting.set_setting_fullscreen($VBoxContainer/fullscreen/HBoxContainer/data.button_pressed)
+50 -98
View File
@@ -1,145 +1,97 @@
[gd_scene format=3] [gd_scene format=3 uid="uid://ccc65743enkt6"]
[ext_resource type="Script" path="res://scenes/UI/settings/Settings.gd" id="1"] [ext_resource type="Script" uid="uid://4r5k5evs8p4" path="res://scenes/UI/settings/Settings.gd" id="1"]
[node name="Settings" type="CenterContainer"] [node name="Settings" type="CenterContainer" unique_id=699546480]
anchors_preset = 15
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
offset_left = -1.12244 offset_left = -1.12244
offset_right = -1.12244 offset_right = -1.12244
script = ExtResource("1") script = ExtResource("1")
__meta__ = {
"_edit_use_anchors_": false
}
[node name="VBoxContainer" type="VBoxContainer" parent="."] [node name="VBoxContainer" type="VBoxContainer" parent="." unique_id=302387473]
offset_left = 547.0 layout_mode = 2
offset_top = 265.0
offset_right = 732.0
offset_bottom = 455.0
alignment = 1 alignment = 1
[node name="langue" type="CenterContainer" parent="VBoxContainer"] [node name="langue" type="CenterContainer" parent="VBoxContainer" unique_id=282359486]
offset_right = 185.0 layout_mode = 2
offset_bottom = 27.0
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/langue"] [node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/langue" unique_id=1667789483]
offset_left = 67.0 layout_mode = 2
offset_right = 117.0
offset_bottom = 27.0
__meta__ = {
"_editor_description_": ""
}
[node name="Label" type="Label" parent="VBoxContainer/langue/VBoxContainer"] [node name="Label" type="Label" parent="VBoxContainer/langue/VBoxContainer" unique_id=1488070578]
offset_right = 50.0 layout_mode = 2
offset_bottom = 14.0
text = "langue :" text = "langue :"
horizontal_alignment = 1 horizontal_alignment = 1
[node name="data" type="ItemList" parent="VBoxContainer/langue/VBoxContainer"] [node name="data" type="ItemList" parent="VBoxContainer/langue/VBoxContainer" unique_id=1488206371]
offset_top = 18.0 layout_mode = 2
offset_right = 50.0
offset_bottom = 27.0
focus_mode = 0 focus_mode = 0
auto_height = true auto_height = true
max_columns = 2 max_columns = 2
same_column_width = true same_column_width = true
fixed_icon_size = Vector2(32, 32) fixed_icon_size = Vector2i(32, 32)
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/langue"] [node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/langue" unique_id=1459762193]
offset_left = 92.0 layout_mode = 2
offset_top = 13.0
offset_right = 92.0
offset_bottom = 13.0
[node name="gyroscope" type="CenterContainer" parent="VBoxContainer"] [node name="gyroscope" type="CenterContainer" parent="VBoxContainer" unique_id=1525036037]
offset_top = 31.0 layout_mode = 2
offset_right = 185.0
offset_bottom = 71.0
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/gyroscope"] [node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/gyroscope" unique_id=1912659566]
offset_left = 16.0 layout_mode = 2
offset_right = 169.0
offset_bottom = 40.0
[node name="Label" type="Label" parent="VBoxContainer/gyroscope/HBoxContainer"] [node name="Label" type="Label" parent="VBoxContainer/gyroscope/HBoxContainer" unique_id=1359372643]
offset_top = 13.0 layout_mode = 2
offset_right = 73.0
offset_bottom = 27.0
text = "gyroscope :" text = "gyroscope :"
[node name="data" type="CheckButton" parent="VBoxContainer/gyroscope/HBoxContainer"] [node name="data" type="CheckButton" parent="VBoxContainer/gyroscope/HBoxContainer" unique_id=1589233703]
offset_left = 77.0 layout_mode = 2
offset_right = 153.0
offset_bottom = 40.0
horizontal_alignment = 1
[node name="ambient_sound" type="CenterContainer" parent="VBoxContainer"] [node name="ambient_sound" type="CenterContainer" parent="VBoxContainer" unique_id=633296278]
offset_top = 75.0 layout_mode = 2
offset_right = 185.0
offset_bottom = 115.0
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/ambient_sound"] [node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/ambient_sound" unique_id=1092892428]
offset_right = 185.0 layout_mode = 2
offset_bottom = 40.0
[node name="Label" type="Label" parent="VBoxContainer/ambient_sound/HBoxContainer"] [node name="Label" type="Label" parent="VBoxContainer/ambient_sound/HBoxContainer" unique_id=488463942]
offset_top = 13.0 layout_mode = 2
offset_right = 105.0
offset_bottom = 27.0
text = "Ambiant sound :" text = "Ambiant sound :"
[node name="data" type="CheckButton" parent="VBoxContainer/ambient_sound/HBoxContainer"] [node name="data" type="CheckButton" parent="VBoxContainer/ambient_sound/HBoxContainer" unique_id=273527408]
offset_left = 109.0 layout_mode = 2
offset_right = 185.0
offset_bottom = 40.0
[node name="resolution" type="CenterContainer" parent="VBoxContainer"] [node name="resolution" type="CenterContainer" parent="VBoxContainer" unique_id=1502344262]
offset_top = 119.0 layout_mode = 2
offset_right = 185.0
offset_bottom = 146.0
[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/resolution"] [node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/resolution" unique_id=2142236831]
offset_left = 54.0 layout_mode = 2
offset_right = 130.0
offset_bottom = 27.0
[node name="Label" type="Label" parent="VBoxContainer/resolution/VBoxContainer"] [node name="Label" type="Label" parent="VBoxContainer/resolution/VBoxContainer" unique_id=1803587554]
offset_right = 76.0 layout_mode = 2
offset_bottom = 14.0
text = "Resolution :" text = "Resolution :"
[node name="data" type="ItemList" parent="VBoxContainer/resolution/VBoxContainer"] [node name="data" type="ItemList" parent="VBoxContainer/resolution/VBoxContainer" unique_id=2020766411]
offset_top = 18.0 layout_mode = 2
offset_right = 76.0
offset_bottom = 27.0
focus_mode = 0
size_flags_horizontal = 3 size_flags_horizontal = 3
size_flags_vertical = 3 size_flags_vertical = 3
focus_mode = 0
auto_height = true auto_height = true
same_column_width = true same_column_width = true
[node name="fullscreen" type="CenterContainer" parent="VBoxContainer"] [node name="fullscreen" type="CenterContainer" parent="VBoxContainer" unique_id=1761837864]
offset_top = 150.0 layout_mode = 2
offset_right = 185.0
offset_bottom = 190.0
[node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/fullscreen"] [node name="HBoxContainer" type="HBoxContainer" parent="VBoxContainer/fullscreen" unique_id=1642161546]
offset_left = 15.0 layout_mode = 2
offset_right = 169.0
offset_bottom = 40.0
[node name="Label" type="Label" parent="VBoxContainer/fullscreen/HBoxContainer"] [node name="Label" type="Label" parent="VBoxContainer/fullscreen/HBoxContainer" unique_id=89060107]
offset_top = 13.0 layout_mode = 2
offset_right = 74.0
offset_bottom = 27.0
text = "Fullscreen :" text = "Fullscreen :"
[node name="data" type="CheckButton" parent="VBoxContainer/fullscreen/HBoxContainer"] [node name="data" type="CheckButton" parent="VBoxContainer/fullscreen/HBoxContainer" unique_id=741966003]
offset_left = 78.0 layout_mode = 2
offset_right = 154.0
offset_bottom = 40.0
[connection signal="item_selected" from="VBoxContainer/langue/VBoxContainer/data" to="." method="_on_langue_item_selected"] [connection signal="item_selected" from="VBoxContainer/langue/VBoxContainer/data" to="." method="_on_langue_item_selected"]
[connection signal="pressed" from="VBoxContainer/gyroscope/HBoxContainer/data" to="." method="_on_gyroscope_pressed"] [connection signal="pressed" from="VBoxContainer/gyroscope/HBoxContainer/data" to="." method="_on_gyroscope_pressed"]

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