From 4f2ad98915518b4218524f383f1536337bc887cc Mon Sep 17 00:00:00 2001 From: Erik Date: Tue, 23 Jun 2026 08:40:48 +0200 Subject: [PATCH 01/51] =?UTF-8?q?docs(D.2b):=20Slice=202=20design=20?= =?UTF-8?q?=E2=80=94=20paperdoll=20doll=20viewport=20+=20Slots=20toggle=20?= =?UTF-8?q?(RTT)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Brainstorm-approved design for Sub-phase C Slice 2: the 3-D doll UiViewport (dat Type 0xD) + the "Slots" toggle, extending the shipped PaperdollController. Key decisions settled in the brainstorm: - Compositing = render-to-texture (reuse ManagedGLFramebuffer + GLStateScope): the doll renders to an off-screen buffer in a pre-UI hook, then the UiViewport widget blits it as a normal sprite -> correct painter order for free, fully sealed 3-D pass. - The armor/non-armor partition is the decomp-exact 9-slot set that ListenToElementMessage (idMessage==1, 0x100005be) flips, not an EquipMask heuristic. - Doll = a dedicated WorldEntity cloned from the local player's Setup + current ObjDesc (the player IS a WorldEntity -- corrects the handoff), re-dressed on ObjDescEvent 0xF625; reuses EntitySpawnAdapter/ AnimatedEntityState. - Seam IUiViewportRenderer lives in AcDream.App.UI (intra-App decoupling), not Core -- user-approved divergence from the handoff's "Core interface". Recovered the corrupted light immediate ("ff&?" = 0x3f266666 ~= 0.65). AP-66 reworded: empty-slot frame stays (slots ring the doll, no overlay). Co-Authored-By: Claude Opus 4.8 (1M context) --- .../2026-06-23-d2b-paperdoll-slice2-design.md | 251 ++++++++++++++++++ 1 file changed, 251 insertions(+) create mode 100644 docs/superpowers/specs/2026-06-23-d2b-paperdoll-slice2-design.md diff --git a/docs/superpowers/specs/2026-06-23-d2b-paperdoll-slice2-design.md b/docs/superpowers/specs/2026-06-23-d2b-paperdoll-slice2-design.md new file mode 100644 index 00000000..ed7defbf --- /dev/null +++ b/docs/superpowers/specs/2026-06-23-d2b-paperdoll-slice2-design.md @@ -0,0 +1,251 @@ +# D.2b Sub-phase C, Slice 2 — paperdoll 3-D doll + the "Slots" toggle (design) + +**Date:** 2026-06-23 +**Branch:** `claude/hopeful-maxwell-214a12` (Slice 1 shipped; `main` ff-merged to tip). +**Status:** APPROVED design (brainstorm complete). Next: writing-plans → subagent-driven implementation → visual gate. +**Predecessor:** `docs/research/2026-06-23-paperdoll-slice2-handoff.md`; Slice-1 spec `2026-06-22-d2b-paperdoll-slice1-equip-slots-design.md`. +**Read with:** the corrected model in the D.2b SSOT (`claude-memory/project_d2b_retail_ui.md`, the SLICE 1 entry) + `docs/research/2026-06-16-equipment-paperdoll-deep-dive.md` §5. + +--- + +## 1. Goal + corrected model (user axiom) + +The paperdoll panel has **two mutually-exclusive views** toggled by the **"Slots" button** +(`0x100005BE` = `m_SlotCheckbox`): + +- **Doll-view (default, button OFF):** the **live 3-D character** (the "doll" — naked if nothing + equipped) + the **12 non-armor** equip slots. The 9 armor slots are hidden. +- **Slot-view (button ON):** the doll disappears; the **9 armor slots** become visible. + +The "figure" **IS** the live 3-D character (a re-dressed clone of the local player), **not** per-slot +silhouette sprites. Slice 1 already shipped the 21 equip slots + wield/unwield + visible empty-slot +frames, showing all slots at once. **Slice 2 adds (A) the toggle and (B) the 3-D doll viewport on top, +extending — never rewriting — `PaperdollController`.** + +### Scope + +**In:** the Slots toggle; the `UiViewport` (dat Type `0xD`) hosting a re-dressed player clone; +render-to-texture compositing; live re-dress on equip/unequip (ObjDescEvent `0xF625`); fixed camera, +one distant light, heading 191.37°, idle animation. + +**Deferred to polish (NOT this slice):** per-race camera framing (`UpdateForRace`), part-selection +lighting ("which piece is this?" highlight), click-to-rotate, the doll click-map (`m_paperDollDragMask` +interactivity), Aetheria sigil slots. + +--- + +## 2. Decomp anchors (named-retail `acclient_2013_pseudo_c.txt`) — do not re-derive + +| What | Function / addr | Lines | Facts | +|---|---|---|---| +| **The toggle** | `gmPaperDollUI::ListenToElementMessage` `0x004a5c30` | 175674-175706 | `idMessage==1 && idElement==0x100005be`: read checkbox attr `0xe`. **Checked → slot-view:** `m_pPaperDoll.SetVisible(0)`, `m_paperDollDragMask.SetVisible(0)`, then `SetVisible(1)` on the 9 armor slots. **Unchecked → doll-view:** the inverse. | +| **The 9 armor slots** | `gmPaperDollUI::PostInit` `0x004a5360` | 175412-175508 | The exact set `PostInit` calls `SetVisible(0)` on AND the toggle flips: head `0x100005ab`, chest(armor) `0x100005ac`, abdomen `0x100005ad`, upper-arm `0x100005ae`, lower-arm `0x100005af`, hand `0x100005b0`, upper-leg(armor) `0x100005b1`, lower-leg(armor) `0x100005b2`, foot `0x100005b3`. The other 12 slots are **never** hidden at init. | +| **Viewport init** | `gmPaperDollUI::PostInit` | 175509-175535 | Find `0x100001d5` → cast Type `0xd`; `SetCamera(&dir,&pos)`; `SetLight(DISTANT_LIGHT, 2.0, &dir)`; `CreatureMode::UseSharpMode`; `RedressCreature`. | +| **Camera immediates** | `PostInit` | 175521-175527 | cam pos `(0x3df5c28f, 0xc019999a, 0x3f6147ae)` = **(0.12, −2.4, 0.88)**; target/look `(0,0,0)`. (Arg order pos-vs-dir confirmed at impl via `UIElement_Viewport::SetCamera`.) | +| **Light immediates** | `PostInit` | 175529-175533 | dir `(0x3e99999a, 0x3ff33333, 0x3f266666)` = **(0.3, 1.9, 0.65)**; intensity **2.0**; type `DISTANT_LIGHT`. (3rd float recovered from the `"ff&?"` strncpy artifact = `0x3f266666`.) | +| **The checkbox default** | `PostInit` | 175585 | `SetAttribute_Bool(m_SlotCheckbox, 0xe, 0)` → start unchecked = doll-view. | +| **Re-dress** | `gmPaperDollUI::RedressCreature` `0x004a3bc0` | 173997-174012 | Built **once** (lazy): `makeObject(player)` clone → `set_heading(191.367905°)` → `set_sequence_animation(m_didAnimation.id, 1,1,0)` → `CreatureMode::AddObject`. **Every call:** `DoObjDescChangesFromDefault(clone, get_player_visualdesc())` = re-dress with the same ObjDesc apply the in-world renderer uses. | +| **Per-race camera (DEFERRED)** | `gmPaperDollUI::UpdateForRace` `0x004a3ed0` | 174138-174180 | Camera distance varies per body-type: case 6/7 y=`0xc0400000`=−3.0; case 8 y=`0xc059999a`=−3.4, z=`0x3f800000`=1.0; etc. Polish. | + +--- + +## 3. acdream seams (verified against source this session) + +- **Render order:** `GameWindow.OnRender` runs all 3-D world passes, then `_uiHost.Tick()`/`_uiHost.Draw()` + at **GameWindow.cs:9009-9012**. The doll RTT pass slots in after the world passes, before the UI pass. +- **Single-entity draw:** `WbDrawDispatcher.Draw(ICamera camera, IEnumerable<(LandblockId, AabbMin, + AabbMax, IReadOnlyList Entities, IReadOnlyDictionary? AnimatedById)>, + …, HashSet? animatedEntityIds, …)` (WbDrawDispatcher.cs:881). Sets `uViewProjection` from + `camera.View*camera.Projection` (`:894`) and `uLightingMode=0` (Lambert sun + per-entity point sets, + `:898`). **A second pass with a doll camera + a one-entry landblock tuple is supported.** +- **Camera:** `ICamera` is `{ Matrix4x4 View; Matrix4x4 Projection; float Aspect; }` (ICamera.cs:5). + A fixed `DollCamera` impl is trivial. +- **RTT infra exists:** `ManagedGLFramebuffer` (color `ITexture` + Depth24Stencil8 renderbuffer, + completeness-checked, `GpuMemoryTracker`-tracked) and `GLStateScope` (RAII save/restore of viewport, + scissor, depth, cull, blend, program, VAO, FBO bindings, UBO binding 0, …). Both in + `src/AcDream.App/Rendering/Wb/`. +- **Animated-char pipeline:** `EntitySpawnAdapter.OnCreate(WorldEntity)` (EntitySpawnAdapter.cs:100) + requires `ServerGuid != 0`, builds `AnimatedEntityState` via the injected sequencer factory, applies + `HiddenPartsMask` + `PartOverrides`, registers each `MeshRef.GfxObjId` + override GfxObj with the mesh + adapter (so meshes background-load), and stores `_stateByGuid[ServerGuid]`. +- **Player model data is available:** the local player **does** get a fully-resolved `WorldEntity` + (`_entitiesByServerGuid[_playerServerGuid]`, GameWindow.cs:12700) with MeshRefs/PaletteOverride/ + PartOverrides AND an `AnimatedEntityState` (`_animatedEntities[playerEntity.Id]`, `:12805`); its spawn + is cached in `_lastSpawnByGuid[_playerServerGuid]`. **(Corrects the handoff's "the local player isn't a + WorldEntity" — it is.)** The WorldEntity build template is GameWindow.cs:3390-3431. Appearance updates + flow through `OnLiveAppearanceUpdated` (ObjDescEvent `0xF625`, GameWindow.cs:3733). + +--- + +## 4. Design + +### A. The Slots toggle — `PaperdollController` extension + +Extend `PaperdollController` (`src/AcDream.App/UI/Layout/PaperdollController.cs`); do not rewrite the +slot bindings / wield / unwield. + +- **Partition the existing `SlotMap` by element-id** into the decomp's **9 armor** ids + (`0x100005ab/ac/ad/ae/af/b0/b1/b2/b3`) vs the **12 non-armor** ids. (Keyed by element-id, exactly the + set the decomp toggles — NOT an `EquipMask` heuristic; HeadWear/HandWear/FootWear are in the armor set, + ChestWear/UpperLegWear (shirt/pants) are non-armor.) +- Keep refs to the 9 armor-slot `UiItemList`s + the `UiViewport` widget. +- Find the Slots button (`0x100005BE`, a `UiButton`) via `layout.FindElement`. On click, flip + `_slotView` and apply: doll-view → `viewport.Visible=true`, 9 armor `.Visible=false`; slot-view → + `viewport.Visible=false`, 9 armor `.Visible=true`. Non-armor slots untouched. +- Default `_slotView=false` (doll-view), mirroring `SetAttribute_Bool(0xe,0)`. + +**AP-66 resolved:** the Slice-1 empty-slot frame **stays** in both views. The corrected model arranges +the slots *beside* the doll (the viewport is a ~100-px column), so nothing overlays the doll and nothing +flips to transparent. The toggle only changes `Visible`, never the empty-cell art. Reword the AP-66 row. + +### B. The `UiViewport` widget (Type `0xD`) + +New leaf widget `UiViewport : UiElement` (`src/AcDream.App/UI/UiViewport.cs`): + +- Register in `DatWidgetFactory` (`src/AcDream.App/UI/Layout/DatWidgetFactory.cs`, the Type switch): + `0xD => new UiViewport(...)`. `ConsumesDatChildren => true` (leaf). +- Holds a reference to its **doll scene** (a `UiViewportScene` handle, §C) and the latest rendered + color-texture handle. In `OnDraw(UiRenderContext)` it simply **blits that cached handle** as one sprite + at its own `ScreenPosition`/`Width`/`Height`. The 3-D render itself happens in the pre-UI hook (§E), + *not* in `OnDraw` (which only has a 2-D context). Because the blit is an ordinary sprite in the 2-D + pass, it lands in correct painter order (backdrop behind, slots/chrome in front). +- When `Visible == false` (slot-view), it draws nothing and the pre-UI hook skips its 3-D pass. + +### C. RTT path + the `IUiViewportRenderer` seam (the crux) + +The 3-D doll renders into an off-screen buffer in the **pre-UI hook** (GameWindow, after the world +passes, before `_uiHost.Draw`); the `UiViewport` widget then blits the result during the 2-D UI pass. + +**Seam (layering decision — diverges from the handoff's "Core interface", with user approval):** +define `IUiViewportRenderer` in the **`AcDream.App.UI` namespace** (where `UiViewport` lives), +implemented by `PaperdollViewportRenderer` in `AcDream.App.Rendering`. `App.UI` is a namespace **within +the `AcDream.App` project**, not a separate project — so this is an **intra-App decoupling** (keep the UI +widget from depending directly on `WbDrawDispatcher`/`GameWindow`), not a cross-project seam. +Code-Structure Rule 2 keeps **Core** free of GL; Core has no consumer for "render an entity into a rect", +so a Core interface would over-apply the rule. Narrow surface: + +```csharp +// AcDream.App.UI +public interface IUiViewportRenderer +{ + // Renders the scene into an internal FBO sized (w,h); returns the GL color-texture handle. + // Called by the per-frame pre-UI hook, NOT from UiViewport.OnDraw. + uint Render(UiViewportScene scene, int width, int height); +} +``` + +`UiViewportScene` carries the doll entity ref + camera params (plain data; no GL). The pre-UI hook calls +`Render` and stores the returned handle on the widget; `UiViewport.OnDraw` blits that handle (§B). + +**`PaperdollViewportRenderer` (App rendering layer)** owns: +1. A `ManagedGLFramebuffer` sized to the widget rect, recreated when the rect changes. +2. The doll `DollCamera` (`ICamera`): eye `(0.12, −2.4, 0.88)`, look-at origin, perspective with the + rect's aspect. Decode/confirm the exact float→matrix mapping against `UIElement_Viewport::SetCamera`. +3. Per frame, gated on **inventory-open ∧ doll-view**: open a `GLStateScope`; bind the FBO; set viewport + to (w,h); clear color to transparent `(0,0,0,0)` + clear depth; write a **doll lighting UBO** (one + `DISTANT_LIGHT` = retail `(0.3,1.9,0.65)`@2.0, fixed ambient) reusing the scene-lighting UBO builder + (GameWindow ~8289); call `WbDrawDispatcher.Draw(DollCamera, [dollLandblockTuple], + animatedEntityIds:{dollGuid})`; dispose the scope (restores all GL state). Overwriting the shared + lighting UBO is safe — nothing 3-D draws after the doll this frame, and GameWindow rebuilds it next + frame. + +### D. The doll entity — build, re-dress, animate + +The doll is a **dedicated `WorldEntity`** (retail's `makeObject(player)` clone), distinct from the live +player entity (that one is posed/animated in the world): + +- **Build** from `_lastSpawnByGuid[_playerServerGuid]` + `_entitiesByServerGuid[_playerServerGuid]`: same + Setup id, `MeshRefs`, `PaletteOverride`, `PartOverrides` — but at the **scene origin**, heading + **191.37°**. Assign a **reserved synthetic `ServerGuid`** (non-zero, distinct from every real guid) so + `EntitySpawnAdapter.OnCreate` accepts it and registers its meshes. Extract the WorldEntity-build + helper from GameWindow.cs:3390-3431 so both paths share it. +- **Animate:** route the doll through `EntitySpawnAdapter.OnCreate(dollEntity)` to get a private + `AnimatedEntityState`; play the idle animation (`m_didAnimation` analog — the Setup's idle motion). + Tick the doll sequencer each frame the doll is visible. Draw via a synthetic one-entry landblock tuple + `(dollLandblockId, aabb, [dollEntity], {dollGuid: dollEntity})`. +- **Re-dress** (C# `RedressCreature`): hook `OnLiveAppearanceUpdated` for `update.Guid == + _playerServerGuid` to rebuild the doll entity's `PaletteOverride`/`PartOverrides` from the new spawn + + refresh the adapter state + re-register meshes. Naked when nothing equipped; re-geared on wield. + +**Idle animation source:** confirm the Setup's idle motion id at impl (retail `m_didAnimation` set by +`UpdateForRace` via `DBObj::GetDIDByEnum` per body-type). MVP may use the Setup's default idle; per-race +idle DID swap is polish. + +### E. Wiring + lifecycle (GameWindow) + +- Extend the existing `PaperdollController.Bind` call site: also `FindElement(0x100001d5)` for the + `UiViewport`, construct `PaperdollViewportRenderer` (closing over `WbDrawDispatcher`, the + `EntitySpawnAdapter`, the player spawn/entity accessors, the lighting-UBO builder), give the controller + the viewport ref for the toggle, and register the viewport with the per-frame doll-render hook. +- **Per-frame:** drive the doll RTT pass only when the **inventory window is open** AND the paperdoll is + in **doll-view** AND the player spawn is available. Otherwise no FBO work. +- **Teardown:** dispose the FBO + the doll entity's adapter state on logout/teleport (`Clear()`), and + rebuild lazily on next show. + +### F. Testing + gate + +- **Unit (App.UI / App.Tests, no GL/dat):** the armor partition is exactly the decomp's 9 ids; toggling + flips the correct `Visible` set on {viewport, 9 armor slots} and leaves the 12 non-armor untouched; + default = doll-view. `DollCamera` golden View/Projection values. FBO-resize recreation logic + (rect-change → new framebuffer). The WorldEntity-build helper produces the expected + Setup/PaletteOverride/PartOverrides from a player spawn fixture. +- **Visual gate (the acceptance test):** user compares to retail — the doll renders the re-dressed local + player (correct race/gender/gear, naked if bare), faces the viewer, idles; the Slots button toggles + doll-view ↔ armor-slots; live re-dress on wield/unwield via `0xF625`. +- **Full suite green** (Core / Core.Net / App / UI) at the phase boundary, not just filtered subsets + ([[feedback-ui-resolve-zero-magenta]] process lesson). + +--- + +## 5. Component boundaries + +| Unit | Project / file | Responsibility | Depends on | +|---|---|---|---| +| `PaperdollController` (extend) | `AcDream.App.UI.Layout` | armor/non-armor partition; Slots-button click → toggle `Visible`; hold the viewport ref | `UiButton`, `UiViewport`, `UiItemList` | +| `UiViewport` | `AcDream.App.UI` | leaf widget; blit its scene texture at its rect; gate the 3-D pass on `Visible` | `IUiViewportRenderer`, `UiRenderContext` | +| `IUiViewportRenderer` + `UiViewportScene` | `AcDream.App.UI` | the narrow UI↔3-D seam (data in, texture handle out) | BCL + Core `WorldEntity` only | +| `PaperdollViewportRenderer` | `AcDream.App.Rendering` | own the FBO + `DollCamera` + lighting; run the scissor-free RTT pass via `WbDrawDispatcher` inside a `GLStateScope` | `ManagedGLFramebuffer`, `GLStateScope`, `WbDrawDispatcher`, `EntitySpawnAdapter` | +| `DollCamera` | `AcDream.App.Rendering` | fixed `ICamera` from the retail immediates | `ICamera` | +| Doll-entity builder | `AcDream.App.Rendering` (shared helper) | build/refresh the doll `WorldEntity` from the player spawn | `WorldEntity`, player spawn/entity accessors | +| `DatWidgetFactory` (extend) | `AcDream.App.UI.Layout` | register Type `0xD → UiViewport` | — | + +--- + +## 6. Divergence register impact + +- **Reword AP-66** (empty-slot frame): stays in both views (no doll-through / transparent); the toggle + changes `Visible` only. +- **New rows (as applicable):** per-race camera framing deferred (single default camera); idle-DID + per-race swap deferred; the `IUiViewportRenderer` seam placed in App.UI rather than Core (intentional + adaptation, with rationale §4C); doll lighting = one distant light written to the shared UBO + (approximation iff it differs from retail's `CreatureMode` lighting). +- **Gate-verify AP-62** (MissileAmmo `0x100001E0` mask) carried from Slice 1 — opportunistic. + +--- + +## 7. Items to pin during the plan (scoped, not open-ended) + +1. `UiButton` click/checkbox API — how `PaperdollController` subscribes to the Slots-button click and + reads/sets its checked state. +2. The inventory window's **open/closed** query for the per-frame gate (the F12 window manager / the + frame's `Visible`). +3. The exact `WbDrawDispatcher.Draw` animation contract for a single entity — whether `animatedEntityIds` + + the `AnimatedById` tuple is sufficient, or the doll's `AnimatedEntityState` must also be reachable + via the shared `_animatedEntities`/sequencer-tick path; and where the doll sequencer is ticked. +4. The scene-lighting UBO layout at GameWindow ~8289 — to write the doll's single distant light. +5. `UIElement_Viewport::SetCamera` arg order (pos vs dir) + the exact float→view-matrix construction, so + `DollCamera` frames the doll like retail. +6. The idle motion id for the player Setup (MVP default vs per-race DID). + +These are mechanism confirmations with identified sources — not unresolved requirements. + +--- + +## 8. Acceptance criteria + +- Slots button toggles doll-view (3-D character + 12 non-armor slots) ↔ slot-view (9 armor slots), + matching the user's two retail screenshots. +- The doll renders the re-dressed local player (race/gender/equipped gear; naked if bare), faces the + viewer, idles; updates live on equip/unequip via `0xF625`. +- Build + full suite green; **visual gate** passed (user). Divergence rows updated; the seam respects + the layering decision in §4C. From 1c7f20fd0874a46a3217f2d14b8342e1bf58a464 Mon Sep 17 00:00:00 2001 From: Erik Date: Tue, 23 Jun 2026 08:53:12 +0200 Subject: [PATCH 02/51] =?UTF-8?q?docs(D.2b):=20Slice=202=20implementation?= =?UTF-8?q?=20plan=20=E2=80=94=20paperdoll=20doll=20+=20Slots=20toggle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 8-task plan. Tasks 1-4 isolated/TDD (partition+toggle, DollCamera, UiViewport+Type-0xD, DollEntityBuilder) -> safe for subagents. Tasks 5-7 GL/animation/GameWindow integration -> INLINE per the CLAUDE.md "no integrate-via-subagent without full context" rule, static-doll-first then animate, verified at build + visual gate. Task 8 wrap-up + gate. Concrete API refs pinned this session: WbDrawDispatcher.Draw call site (8756), animatedIds assembly (8369), SetCycle idle (3514-3571), WorldEntity build template (3390-3431), SceneLightingUbo/Binding, ManagedGLFramebuffer + GLStateScope, UiButton.OnClick, inventory frame .Visible. Flagged the second-Draw-per-frame dispatcher caveat (951-959). Co-Authored-By: Claude Opus 4.8 (1M context) --- .../plans/2026-06-23-d2b-paperdoll-slice2.md | 671 ++++++++++++++++++ 1 file changed, 671 insertions(+) create mode 100644 docs/superpowers/plans/2026-06-23-d2b-paperdoll-slice2.md diff --git a/docs/superpowers/plans/2026-06-23-d2b-paperdoll-slice2.md b/docs/superpowers/plans/2026-06-23-d2b-paperdoll-slice2.md new file mode 100644 index 00000000..12c04dd0 --- /dev/null +++ b/docs/superpowers/plans/2026-06-23-d2b-paperdoll-slice2.md @@ -0,0 +1,671 @@ +# D.2b Sub-phase C Slice 2 — Paperdoll Doll + Slots Toggle — Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. +> +> **⚠ Execution split (project rule — CLAUDE.md "Do not integrate via subagent unless the subagent has full context"):** Tasks 1-4 are isolated/testable → safe for fresh subagents. **Tasks 5-7 are GL/animation/GameWindow integration → do INLINE** (the session that has the render-pipeline context), build **static-doll-first then animate**, verify at build + screenshot/visual-gate. Task 8 is wrap-up. + +**Goal:** Render the local player as a live 3-D "doll" inside the inventory paperdoll panel and wire the "Slots" button to toggle between doll-view (doll + 12 non-armor slots) and slot-view (9 armor slots). + +**Architecture:** Render-to-texture — a `PaperdollViewportRenderer` draws a re-dressed clone of the player (a dedicated `WorldEntity`) through the existing `WbDrawDispatcher` into an off-screen `ManagedGLFramebuffer` with a fixed doll camera + one distant light, inside a `GLStateScope`; the new `UiViewport` widget (dat Type `0xD`) blits that texture as a normal 2-D sprite so it lands in correct painter order. The shipped `PaperdollController` is extended (not rewritten) with the armor/non-armor partition + the toggle. + +**Tech Stack:** C# .NET 10, Silk.NET OpenGL, the acdream `AcDream.App.UI` retained-mode toolkit + `AcDream.App.Rendering.Wb` mesh pipeline. + +**Spec:** `docs/superpowers/specs/2026-06-23-d2b-paperdoll-slice2-design.md`. Read it first. + +**Reference call sites (verified this session — line numbers drift, grep the symbol):** +- World single-entity draw to mirror: `GameWindow.cs:8756` `_wbDrawDispatcher.Draw(camera, _worldState.LandblockEntries, frustum, neverCullLandblockId: playerLb, visibleCellIds: null, animatedEntityIds: animatedIds)`. +- `animatedIds` built from `_animatedEntities.Keys`: `GameWindow.cs:8369-8375`. +- Spawn animation idle setup (`SetCycle`): `GameWindow.cs:3514-3588`. `MotionCommand.Ready = 0x41000003u` (`AcDream.Core.Physics.MotionInterpreter`). +- `WorldEntity` build template (palette/part overrides): `GameWindow.cs:3390-3431`. +- Player data: `_entitiesByServerGuid[_playerServerGuid]` (live entity), `_lastSpawnByGuid[_playerServerGuid]` (spawn). Player appearance update hook: `OnLiveAppearanceUpdated` `GameWindow.cs:3733`. +- Lighting UBO: `AcDream.Core.Lighting.SceneLightingUbo` + `AcDream.App.Rendering.SceneLightingUboBinding.Upload` (binding=1); world build at `GameWindow.cs:8306`. +- FBO: `AcDream.App.Rendering.Wb.ManagedGLFramebuffer` (ctor `(OpenGLGraphicsDevice, ITexture, w, h, hasDepthStencil)`). GL save/restore: `AcDream.App.Rendering.Wb.GLStateScope` (RAII). +- `WbDrawDispatcher.Draw` signature: `WbDrawDispatcher.cs:881`. `ICamera`: `ICamera.cs:5` (`View`, `Projection`, `Aspect`). +- `EntitySpawnAdapter.OnCreate(WorldEntity)`: `EntitySpawnAdapter.cs:100` (requires `ServerGuid != 0`). +- `UiButton.OnClick` (Action): `UiButton.cs:39`; wiring pattern `ChatWindowController.cs:283-289,322`. +- Window register: `_uiHost.RegisterWindow(WindowNames.Inventory, inventoryFrame)` `GameWindow.cs:2214`; `WindowNames.Inventory = "inventory"`. +- `DatWidgetFactory` Type switch: `DatWidgetFactory.cs:~63`. +- `PaperdollController.Bind` call site in GameWindow: grep `PaperdollController.Bind`. +- Camera convention to mirror: `src/AcDream.App/Rendering/ChaseCamera.cs` (`View`/`Projection` construction). + +**Decomp anchors:** spec §2. The 9 armor element-ids (the toggle set): `0x100005ab, 0x100005ac, 0x100005ad, 0x100005ae, 0x100005af, 0x100005b0, 0x100005b1, 0x100005b2, 0x100005b3`. Camera eye `(0.12, −2.4, 0.88)` → origin. Light `DISTANT_LIGHT` dir `(0.3, 1.9, 0.65)` intensity `2.0`. Heading `191.367905°`. + +--- + +## Task 1: Armor/non-armor partition + Slots toggle (`PaperdollController`) + +**Files:** +- Modify: `src/AcDream.App/UI/Layout/PaperdollController.cs` +- Test: `tests/AcDream.App.Tests/UI/Layout/PaperdollToggleTests.cs` (create) + +This task is pure logic. The doll viewport is injected as a plain `UiElement?` (the concrete `UiViewport` arrives in Task 3/6); the toggle just flips `Visible`. + +- [ ] **Step 1: Write the failing test** + +```csharp +// tests/AcDream.App.Tests/UI/Layout/PaperdollToggleTests.cs +using AcDream.App.UI; +using AcDream.App.UI.Layout; +using Xunit; + +public class PaperdollToggleTests +{ + // The 9 armor element-ids that gmPaperDollUI::ListenToElementMessage flips + // (decomp 175674-175706). Doll-view hides these; slot-view shows them. + private static readonly uint[] ArmorIds = + { + 0x100005abu, 0x100005acu, 0x100005adu, 0x100005aeu, 0x100005afu, + 0x100005b0u, 0x100005b1u, 0x100005b2u, 0x100005b3u, + }; + + [Fact] + public void ArmorSlotIds_match_the_decomp_nine() + { + Assert.Equal(ArmorIds, PaperdollController.ArmorSlotElementIds); + } + + [Fact] + public void DollView_default_shows_doll_hides_armor() + { + var v = new PaperdollViewState(); + // default = doll-view (checkbox attr 0xe = 0) + Assert.False(v.SlotView); + Assert.True(v.DollVisible); + Assert.False(v.ArmorSlotsVisible); + } + + [Fact] + public void Toggle_to_slotview_hides_doll_shows_armor_and_back() + { + var v = new PaperdollViewState(); + v.Toggle(); + Assert.True(v.SlotView); + Assert.False(v.DollVisible); + Assert.True(v.ArmorSlotsVisible); + v.Toggle(); + Assert.False(v.SlotView); + Assert.True(v.DollVisible); + Assert.False(v.ArmorSlotsVisible); + } +} +``` + +- [ ] **Step 2: Run test to verify it fails** + +Run: `dotnet test tests/AcDream.App.Tests/AcDream.App.Tests.csproj --filter PaperdollToggleTests` +Expected: FAIL — `PaperdollController.ArmorSlotElementIds` and `PaperdollViewState` don't exist. + +- [ ] **Step 3: Add the partition + a testable view-state struct to `PaperdollController.cs`** + +Add the armor-id set as a public static (the test pins it). Add a small `PaperdollViewState` class that holds the boolean state + `Toggle()` (testable without UI). The controller will own a `PaperdollViewState` and project it onto the real widgets in `ApplyView`. + +```csharp +// In PaperdollController.cs, inside the AcDream.App.UI.Layout namespace. + +/// The 9 equip slots the Slots button toggles — the body-covering set that +/// gmPaperDollUI::PostInit starts hidden and ListenToElementMessage (idMessage==1, +/// 0x100005be) flips (decomp 175412-175508 / 175674-175706). NOTE: this is the exact +/// element-id set, NOT an EquipMask heuristic — it includes HeadWear/HandWear/FootWear +/// and excludes the shirt/pants clothing slots. +public static readonly uint[] ArmorSlotElementIds = +{ + 0x100005abu, 0x100005acu, 0x100005adu, 0x100005aeu, 0x100005afu, + 0x100005b0u, 0x100005b1u, 0x100005b2u, 0x100005b3u, +}; + +/// Pure boolean view-state for the doll/slot toggle (testable without widgets). +/// Default = doll-view, mirroring retail SetAttribute_Bool(m_SlotCheckbox, 0xe, 0). +public sealed class PaperdollViewState +{ + public bool SlotView { get; private set; } // false = doll-view (default) + public bool DollVisible => !SlotView; // doll shown only in doll-view + public bool ArmorSlotsVisible => SlotView; // 9 armor slots shown only in slot-view + public void Toggle() => SlotView = !SlotView; +} +``` + +- [ ] **Step 4: Run test to verify it passes** + +Run: `dotnet test tests/AcDream.App.Tests/AcDream.App.Tests.csproj --filter PaperdollToggleTests` +Expected: PASS. + +- [ ] **Step 5: Wire the state onto the real widgets (find armor slots + button + viewport, apply on click)** + +In `PaperdollController`, after the existing slot-binding loop in the constructor: collect the 9 armor-slot `UiItemList`s by element-id; find the Slots button (`0x100005BE`) and the doll viewport element (`0x100001D5`); store a `PaperdollViewState`; on button click, `Toggle()` then `ApplyView()`. `ApplyView()` sets `viewport.Visible = state.DollVisible` and each armor slot `.Visible = state.ArmorSlotsVisible`. Apply once at the end of construction so the initial state matches default (doll-view). + +```csharp +// Fields: +private readonly PaperdollViewState _viewState = new(); +private readonly List _armorSlots = new(); +private AcDream.App.UI.UiElement? _dollViewport; // set in ctor; the UiViewport (Task 3/6) + +// In the constructor, after the SlotMap binding loop: +foreach (var id in ArmorSlotElementIds) + if (layout.FindElement(id) is UiItemList armor) _armorSlots.Add(armor); + +_dollViewport = layout.FindElement(0x100001D5u); // the UiViewport widget (may be null pre-Task 6) + +if (layout.FindElement(0x100005BEu) is AcDream.App.UI.UiButton slotsBtn) + slotsBtn.OnClick = () => { _viewState.Toggle(); ApplyView(); }; + +ApplyView(); // initial: doll-view + +// Method: +private void ApplyView() +{ + if (_dollViewport is not null) _dollViewport.Visible = _viewState.DollVisible; + foreach (var a in _armorSlots) a.Visible = _viewState.ArmorSlotsVisible; +} +``` + +- [ ] **Step 6: Build + commit** + +```bash +dotnet build src/AcDream.App/AcDream.App.csproj +git add src/AcDream.App/UI/Layout/PaperdollController.cs tests/AcDream.App.Tests/UI/Layout/PaperdollToggleTests.cs +git commit -m "feat(D.2b): Slice 2 — paperdoll armor/non-armor partition + Slots toggle state" +``` + +--- + +## Task 2: `DollCamera` — the fixed `ICamera` + +**Files:** +- Create: `src/AcDream.App/Rendering/DollCamera.cs` +- Test: `tests/AcDream.App.Tests/Rendering/DollCameraTests.cs` (create) + +Mirror `ChaseCamera`'s `View`/`Projection` construction convention (read `src/AcDream.App/Rendering/ChaseCamera.cs` first) so winding/culling match the world. Fixed eye/target from the decomp; up = AC `+Z`. + +- [ ] **Step 1: Write the failing test** (convention-independent: recover the eye from the inverse view; check aspect) + +```csharp +// tests/AcDream.App.Tests/Rendering/DollCameraTests.cs +using System.Numerics; +using AcDream.App.Rendering; +using Xunit; + +public class DollCameraTests +{ + [Fact] + public void Eye_position_is_the_retail_camera_offset() + { + var cam = new DollCamera { Aspect = 100f / 214f }; + Assert.True(Matrix4x4.Invert(cam.View, out var inv)); + var eye = inv.Translation; + Assert.Equal(0.12f, eye.X, 3); + Assert.Equal(-2.4f, eye.Y, 3); + Assert.Equal(0.88f, eye.Z, 3); + } + + [Fact] + public void Projection_is_finite_and_uses_aspect() + { + var cam = new DollCamera { Aspect = 1.5f }; + // A perspective projection has a non-zero [3][2] (w = -z) term and finite entries. + Assert.True(float.IsFinite(cam.Projection.M11)); + Assert.NotEqual(0f, cam.Projection.M34); + } +} +``` + +- [ ] **Step 2: Run test to verify it fails** + +Run: `dotnet test tests/AcDream.App.Tests/AcDream.App.Tests.csproj --filter DollCameraTests` +Expected: FAIL — `DollCamera` does not exist. + +- [ ] **Step 3: Implement `DollCamera`** (mirror ChaseCamera's matrix calls; substitute the fixed eye/target/up) + +```csharp +// src/AcDream.App/Rendering/DollCamera.cs +using System.Numerics; + +namespace AcDream.App.Rendering; + +/// Fixed camera for the paperdoll mini-scene. Eye/target from +/// gmPaperDollUI::PostInit (decomp 175521-175527): eye (0.12,-2.4,0.88) looking at the +/// origin, AC up = +Z. Uses the same View/Projection convention as ChaseCamera so the +/// doll's triangle winding + back-face culling match the world pass. Per-race camera +/// distance (UpdateForRace) is deferred polish. +public sealed class DollCamera : ICamera +{ + private static readonly Vector3 Eye = new(0.12f, -2.4f, 0.88f); + private static readonly Vector3 Target = Vector3.Zero; + private static readonly Vector3 Up = new(0f, 0f, 1f); + + // Match ChaseCamera: . + // Default FOV/near/far below are starting values — tune at the visual gate. + public float FovRadians { get; set; } = 0.6f; // ~34°; refine vs CreatureMode::SetFOVRad + public float Near { get; set; } = 0.1f; + public float Far { get; set; } = 50f; + public float Aspect { get; set; } = 1f; + + public Matrix4x4 View => Matrix4x4.CreateLookAt(Eye, Target, Up); + public Matrix4x4 Projection => + Matrix4x4.CreatePerspectiveFieldOfView(FovRadians, Aspect <= 0 ? 1f : Aspect, Near, Far); +} +``` + +> **Note:** if `ChaseCamera` uses a left-handed / custom matrix (not `CreateLookAt`/`CreatePerspectiveFieldOfView`), copy ITS exact calls instead — the doll must share the world's winding so culling isn't inverted. The test only pins the eye + aspect, which both conventions satisfy. + +- [ ] **Step 4: Run test to verify it passes** + +Run: `dotnet test tests/AcDream.App.Tests/AcDream.App.Tests.csproj --filter DollCameraTests` +Expected: PASS. + +- [ ] **Step 5: Commit** + +```bash +git add src/AcDream.App/Rendering/DollCamera.cs tests/AcDream.App.Tests/Rendering/DollCameraTests.cs +git commit -m "feat(D.2b): Slice 2 — DollCamera (fixed paperdoll ICamera)" +``` + +--- + +## Task 3: `UiViewport` widget + Type `0xD` registration + +**Files:** +- Create: `src/AcDream.App/UI/UiViewport.cs` +- Create: `src/AcDream.App/UI/IUiViewportRenderer.cs` +- Modify: `src/AcDream.App/UI/Layout/DatWidgetFactory.cs` (the Type switch) +- Test: `tests/AcDream.App.Tests/UI/Layout/UiViewportFactoryTests.cs` (create) + +- [ ] **Step 1: Write the failing test** + +```csharp +// tests/AcDream.App.Tests/UI/Layout/UiViewportFactoryTests.cs +using AcDream.App.UI; +using AcDream.App.UI.Layout; +using Xunit; + +public class UiViewportFactoryTests +{ + [Fact] + public void Factory_builds_UiViewport_for_dat_type_0xD() + { + var info = TestElementInfo.WithType(0xD); // helper: minimal ElementInfo, Type=0xD + var widget = DatWidgetFactory.Create(info, _ => 0u); // resolve stub + Assert.IsType(widget); + Assert.True(widget.ConsumesDatChildren); + } +} +``` + +> If a `TestElementInfo` helper / the exact `DatWidgetFactory.Create` signature differs, read `DatWidgetFactory.cs` + an existing factory test (e.g. the UiMeter/UiScrollbar tests under `tests/AcDream.App.Tests/UI/Layout/`) and match their construction exactly. + +- [ ] **Step 2: Run test to verify it fails** + +Run: `dotnet test tests/AcDream.App.Tests/AcDream.App.Tests.csproj --filter UiViewportFactoryTests` +Expected: FAIL — no `0xD` case / no `UiViewport`. + +- [ ] **Step 3: Define the seam interface** + +```csharp +// src/AcDream.App/UI/IUiViewportRenderer.cs +namespace AcDream.App.UI; + +/// Renders a 3-D mini-scene into an off-screen buffer and returns the GL color- +/// texture handle. Called by the per-frame pre-UI hook (GameWindow), NOT from +/// UiViewport.OnDraw. Implemented by PaperdollViewportRenderer in AcDream.App.Rendering. +/// Intra-App decoupling so the UI widget doesn't depend on WbDrawDispatcher/GameWindow. +public interface IUiViewportRenderer +{ + /// Render at (width,height); return the color-texture GL handle, or 0 if nothing rendered. + uint Render(int width, int height); +} +``` + +- [ ] **Step 4: Implement the widget** + +```csharp +// src/AcDream.App/UI/UiViewport.cs +namespace AcDream.App.UI; + +/// Leaf widget for dat Type 0xD (UIElement_Viewport). Blits the texture produced +/// by its IUiViewportRenderer (run in the pre-UI hook) as a single sprite at its own rect. +/// The 3-D render does NOT happen here (OnDraw only has a 2-D context). +public sealed class UiViewport : UiElement +{ + public override bool ConsumesDatChildren => true; + + /// Set by GameWindow wiring (Task 6). When null, the widget draws nothing. + public IUiViewportRenderer? Renderer { get; set; } + + /// Last color-texture handle the pre-UI hook produced (0 = none). + public uint TextureHandle { get; set; } + + protected override void OnDraw(UiRenderContext ctx) + { + if (!Visible || TextureHandle == 0) return; + var p = ScreenPosition; + ctx.DrawSprite(TextureHandle, p.X, p.Y, Width, Height); + } +} +``` + +> Confirm the exact `UiElement` virtual + `ConsumesDatChildren`/`OnDraw`/`ScreenPosition`/`DrawSprite` signatures against `UiElement.cs`/`UiRenderContext.cs` and an existing leaf widget (`UiItemSlot`/`UiMeter`); match them. The RTT texture is a normal GL texture id — `DrawSprite` already takes a `uint texture` (see SSOT chrome-sprite path). + +- [ ] **Step 5: Register Type `0xD` in `DatWidgetFactory`** + +In the Type switch (`DatWidgetFactory.cs:~63`), add: `0xD => new UiViewport(),`. Match the surrounding arm style (some arms pass `info`/`resolve`; `UiViewport` needs neither for construction — it's wired post-build). + +- [ ] **Step 6: Run test to verify it passes** + +Run: `dotnet test tests/AcDream.App.Tests/AcDream.App.Tests.csproj --filter UiViewportFactoryTests` +Expected: PASS. + +- [ ] **Step 7: Build + commit** + +```bash +dotnet build src/AcDream.App/AcDream.App.csproj +git add src/AcDream.App/UI/UiViewport.cs src/AcDream.App/UI/IUiViewportRenderer.cs src/AcDream.App/UI/Layout/DatWidgetFactory.cs tests/AcDream.App.Tests/UI/Layout/UiViewportFactoryTests.cs +git commit -m "feat(D.2b): Slice 2 — UiViewport widget (dat Type 0xD) + IUiViewportRenderer seam" +``` + +--- + +## Task 4: Doll-entity builder (player Setup + ObjDesc → a `WorldEntity`) + +**Files:** +- Create: `src/AcDream.App/Rendering/DollEntityBuilder.cs` +- Test: `tests/AcDream.App.Tests/Rendering/DollEntityBuilderTests.cs` (create) + +Extract the palette/part-override mapping from `GameWindow.cs:3390-3431` into a reusable pure helper that turns a player's spawn-derived inputs into the doll `WorldEntity` (synthetic guid, scene-origin position, heading 191.37°). Tests feed plain inputs (no dats). + +- [ ] **Step 1: Read** `GameWindow.cs:3390-3431` (the `PaletteOverride` + `PartOverride[]` construction) and `WorldEntity.cs` (the record's settable members) so the builder's output matches what the dispatcher consumes. + +- [ ] **Step 2: Write the failing test** + +```csharp +// tests/AcDream.App.Tests/Rendering/DollEntityBuilderTests.cs +using System.Collections.Generic; +using System.Numerics; +using AcDream.App.Rendering; +using AcDream.Core.World; +using Xunit; + +public class DollEntityBuilderTests +{ + [Fact] + public void Builds_doll_entity_with_synthetic_guid_and_player_setup() + { + var meshRefs = new List(); // empty is fine for this mapping test + var doll = DollEntityBuilder.Build( + setupId: 0x0200_0001u, + meshRefs: meshRefs, + basePaletteId: 0x04000ABCu, + subPalettes: new (uint Id, uint Off, uint Len)[] { (0x0F00_0001u, 0, 8) }, + partOverrides: new (byte Part, uint GfxObj)[] { (2, 0x0100_0042u) }); + + Assert.Equal(0x0200_0001u, doll.SourceGfxObjOrSetupId); + Assert.NotEqual(0u, doll.ServerGuid); // synthetic non-zero (EntitySpawnAdapter requires it) + Assert.Single(doll.PartOverrides); + Assert.Equal((byte)2, doll.PartOverrides[0].PartIndex); + Assert.Equal(0x0100_0042u, doll.PartOverrides[0].GfxObjId); + Assert.NotNull(doll.PaletteOverride); + Assert.Equal(0x04000ABCu, doll.PaletteOverride!.BasePaletteId); + } + + [Fact] + public void Heading_faces_the_viewer() + { + var doll = DollEntityBuilder.Build(0x0200_0001u, new List(), null, null, null); + // 191.367905° about +Z → quaternion; just assert it's set (non-identity) + normalized. + Assert.True(System.MathF.Abs(doll.Rotation.LengthSquared() - 1f) < 1e-3f); + } +} +``` + +> Match `MeshRef`, `PaletteOverride` (ctor `(BasePaletteId, SubPaletteRange[])`), `PartOverride` (`(byte PartIndex, uint GfxObjId)`), and `WorldEntity`'s members to their real definitions (read `WorldEntity.cs`, `PaletteOverride.cs`, `PartOverride.cs`). Adjust the test's tuple shapes to whatever signature you give `Build`. + +- [ ] **Step 3: Run test to verify it fails** + +Run: `dotnet test tests/AcDream.App.Tests/AcDream.App.Tests.csproj --filter DollEntityBuilderTests` +Expected: FAIL — `DollEntityBuilder` does not exist. + +- [ ] **Step 4: Implement `DollEntityBuilder`** (mirror GameWindow.cs:3390-3431; add the fixed pose + synthetic guid) + +```csharp +// src/AcDream.App/Rendering/DollEntityBuilder.cs +using System; +using System.Collections.Generic; +using System.Numerics; +using AcDream.Core.World; + +namespace AcDream.App.Rendering; + +/// Builds the dedicated paperdoll WorldEntity (retail makeObject(player) clone): +/// the player's Setup + current ObjDesc, posed at the scene origin facing the viewer. +/// Mirrors the palette/part-override mapping at GameWindow.cs:3390-3431. The synthetic +/// guid keeps it distinct from the live player entity and lets EntitySpawnAdapter.OnCreate +/// accept it (ServerGuid != 0). +public static class DollEntityBuilder +{ + /// Reserved synthetic guid for the paperdoll clone (high, collision-free). + public const uint DollServerGuid = 0xDA11_D011u; + + // 191.367905° about +Z (retail set_heading), in radians. + private static readonly float HeadingRad = 191.367905f * (MathF.PI / 180f); + + public static WorldEntity Build( + uint setupId, + IReadOnlyList meshRefs, + uint? basePaletteId = null, + IReadOnlyList<(uint Id, uint Off, uint Len)>? subPalettes = null, + IReadOnlyList<(byte Part, uint GfxObj)>? partOverrides = null) + { + PaletteOverride? pal = null; + if (subPalettes is { Count: > 0 }) + { + var ranges = new PaletteOverride.SubPaletteRange[subPalettes.Count]; + for (int i = 0; i < subPalettes.Count; i++) + ranges[i] = new PaletteOverride.SubPaletteRange( + subPalettes[i].Id, subPalettes[i].Off, subPalettes[i].Len); + pal = new PaletteOverride(basePaletteId ?? 0, ranges); + } + + PartOverride[] parts = Array.Empty(); + if (partOverrides is { Count: > 0 }) + { + parts = new PartOverride[partOverrides.Count]; + for (int i = 0; i < partOverrides.Count; i++) + parts[i] = new PartOverride(partOverrides[i].Part, partOverrides[i].GfxObj); + } + + return new WorldEntity + { + Id = 0, // assigned by the caller if it needs a render id + ServerGuid = DollServerGuid, + SourceGfxObjOrSetupId = setupId, + Position = Vector3.Zero, // scene origin + Rotation = Quaternion.CreateFromAxisAngle(new Vector3(0, 0, 1), HeadingRad), + MeshRefs = meshRefs, + PaletteOverride = pal, + PartOverrides = parts, + ParentCellId = 0, + }; + } +} +``` + +> Adjust property names/types to `WorldEntity`'s real definition (it's `required`-init in GameWindow's usage — match exactly). If `MeshRefs` must be a concrete `List`/array, convert. + +- [ ] **Step 5: Run test to verify it passes** + +Run: `dotnet test tests/AcDream.App.Tests/AcDream.App.Tests.csproj --filter DollEntityBuilderTests` +Expected: PASS. + +- [ ] **Step 6: Commit** + +```bash +git add src/AcDream.App/Rendering/DollEntityBuilder.cs tests/AcDream.App.Tests/Rendering/DollEntityBuilderTests.cs +git commit -m "feat(D.2b): Slice 2 — DollEntityBuilder (player Setup+ObjDesc -> doll WorldEntity)" +``` + +--- + +## Task 5: `PaperdollViewportRenderer` — the RTT pass (INLINE; static doll first) + +**Files:** +- Create: `src/AcDream.App/Rendering/PaperdollViewportRenderer.cs` + +This is GL integration — **do inline**, build a **static doll first** (no live animation), verify with a screenshot, THEN Task 7 adds idle motion. Implements `IUiViewportRenderer`. + +**Responsibilities:** +1. Own a `ManagedGLFramebuffer` (color `ITexture` + depth) sized to the widget rect; lazily (re)create when `(w,h)` changes. Read how `ManagedGLFramebuffer` is constructed elsewhere (grep `new ManagedGLFramebuffer`) for the `OpenGLGraphicsDevice` + `ITexture` creation pattern; reuse it. +2. Hold the doll `WorldEntity` (from `DollEntityBuilder`, refreshed by Task 6) + its mesh-resolved `MeshRefs`, a `DollCamera`, and refs to `WbDrawDispatcher` + `SceneLightingUboBinding` (injected). +3. `Render(w,h)`: + +```csharp +public uint Render(int width, int height) +{ + if (_dollEntity is null || width <= 0 || height <= 0) return 0; + EnsureFramebuffer(width, height); // (re)create FBO on size change + _camera.Aspect = width / (float)height; + + using var _ = new GLStateScope(_gl); // RAII: restores ALL gl state on dispose + _gl.BindFramebuffer(FramebufferTarget.Framebuffer, (uint)_fbo.NativeHandle.ToInt32()); + _gl.Viewport(0, 0, (uint)width, (uint)height); + _gl.Disable(EnableCap.ScissorTest); + _gl.ClearColor(0f, 0f, 0f, 0f); // transparent — window backdrop shows through + _gl.ClearDepth(1f); + _gl.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); + _gl.Enable(EnableCap.DepthTest); + _gl.DepthMask(true); + // cull/front-face: match the world object pass (read GameWindow.cs ~8098). The doll + // shares mesh winding, so use the SAME CullFace + FrontFace the world sets. + + UploadDollLight(); // overwrite binding=1 contents (safe — rebuilt next frame) + + _wbDrawDispatcher.Draw( + _camera, + new[] { (_dollLandblockId, _aabbMin, _aabbMax, + (IReadOnlyList)new[] { _dollEntity }, + (IReadOnlyDictionary?)_animatedById) }, + frustum: null, + neverCullLandblockId: _dollLandblockId, + visibleCellIds: null, + animatedEntityIds: _animatedEntityIds); // empty for static doll; {dollId} after Task 7 + + return _fboColorTextureHandle; +} +``` + +```csharp +private void UploadDollLight() +{ + var ubo = new AcDream.Core.Lighting.SceneLightingUbo(); + var dir = System.Numerics.Vector3.Normalize(new System.Numerics.Vector3(0.3f, 1.9f, 0.65f)); + ubo.Light0 = new AcDream.Core.Lighting.UboLight + { + PosAndKind = new System.Numerics.Vector4(0, 0, 0, 0), // kind 0 = directional + DirAndRange = new System.Numerics.Vector4(dir, 1e9f), // huge range = no cutoff + ColorAndIntensity = new System.Numerics.Vector4(1f, 1f, 1f, 2.0f), // white @ retail intensity 2.0 + ConeAngleEtc = System.Numerics.Vector4.Zero, + }; + ubo.CellAmbient = new System.Numerics.Vector4(0.35f, 0.35f, 0.35f, 1f); // 1 active light; ambient tunable + _sceneLightingUbo.Upload(ubo); +} +``` + +**Steps:** + +- [ ] **Step 1:** Read `new ManagedGLFramebuffer` usage + `OpenGLGraphicsDevice`/`ITexture` creation; the world object-pass GL state at `GameWindow.cs:~8098` (cull/front-face); confirm `WbDrawDispatcher.Draw`'s tuple element types. Confirm whether a Setup-backed entity renders WITHOUT an `animatedEntityIds` entry (static pose) — if the dispatcher needs an animation entry to pose parts, note it for Task 7 and use a minimal pose; otherwise static is fine. + - **⚠ Known interaction — the doll pass is a SECOND `Draw()` per frame.** `WbDrawDispatcher.cs:951-959` explicitly warns that its indoor-probe `IndoorProbeState` construction assumes "Draw() is called exactly once per frame" and "a second pass within the same frame needs revisiting." This only bites when an `ACDREAM_PROBE_*`/indoor diagnostic is active (not normal play), but verify: (a) the Tier-1 cache (#53) is keyed by entity+owning-landblock, so the doll's synthetic guid/landblock must NOT collide with any world entity/landblock (use a reserved `_dollLandblockId` unused by streaming, e.g. `0`); (b) the world Draw runs BEFORE the doll pass each frame and `_groups` is cleared at the top of every `Draw()` (`:926`), so the doll pass doesn't corrupt the world's next frame. If probes are on and you see doubled probe lines, that's expected/benign for this slice — note it, don't chase it. +- [ ] **Step 2:** Implement `PaperdollViewportRenderer` (ctor injects `GL`, `OpenGLGraphicsDevice`, `WbDrawDispatcher`, `SceneLightingUboBinding`, `DollCamera`; `EnsureFramebuffer`, `UploadDollLight`, `Render`, `SetDoll(WorldEntity, meshRefs)`, `Dispose`). `_dollLandblockId` = a synthetic constant (e.g. `0`); `_aabbMin/Max` = the doll entity's local bounds (or a generous fixed box). +- [ ] **Step 3:** Build: `dotnet build src/AcDream.App/AcDream.App.csproj` — green. +- [ ] **Step 4:** Commit (renderer compiles; wiring is Task 6): + +```bash +git add src/AcDream.App/Rendering/PaperdollViewportRenderer.cs +git commit -m "feat(D.2b): Slice 2 — PaperdollViewportRenderer RTT pass (static doll)" +``` + +--- + +## Task 6: GameWindow wiring + pre-UI hook + re-dress (INLINE) + +**Files:** +- Modify: `src/AcDream.App/Rendering/GameWindow.cs` + +**Steps:** + +- [ ] **Step 1 — construct the renderer + give the controller the viewport.** At the `PaperdollController.Bind` call site (grep `PaperdollController.Bind`): after binding, `FindElement(0x100001D5)` for the `UiViewport`; construct `PaperdollViewportRenderer` (inject `_gl`, the `OpenGLGraphicsDevice`, `_wbDrawDispatcher`, `_sceneLightingUbo`, a `new DollCamera()`); set `uiViewport.Renderer = renderer`; store the renderer in a field `_paperdollViewport`. (The controller already finds `0x100001D5` for its toggle in Task 1 — the same element; ensure both see it.) + +- [ ] **Step 2 — build the doll entity from the player + resolve its meshes.** Add `RefreshPaperdollDoll()`: read `_lastSpawnByGuid[_playerServerGuid]` (+ `_entitiesByServerGuid[_playerServerGuid]` for already-resolved `MeshRefs`); call `DollEntityBuilder.Build(...)`; resolve `MeshRefs` the same way the spawn path does (reuse the player entity's `MeshRefs` if present — cheapest); route the doll through `EntitySpawnAdapter.OnCreate(doll)` (so its meshes background-load + a per-instance `AnimatedEntityState` exists); `renderer.SetDoll(doll, meshRefs)`. Call it once when the inventory opens and on re-dress. + +- [ ] **Step 3 — the pre-UI hook.** Immediately before `_uiHost.Tick/Draw` (`GameWindow.cs:9009`), add: + +```csharp +// Paperdoll doll RTT pass — only when the inventory window is open AND in doll-view. +if (_options.RetailUi && _paperdollViewport is not null && _inventoryFrame is { Visible: true } + && _paperdollDollViewport is { Visible: true } uvp) // the UiViewport; Visible == doll-view +{ + if (_lastSpawnByGuid.ContainsKey(_playerServerGuid)) + { + if (_paperdollDollDirty) { RefreshPaperdollDoll(); _paperdollDollDirty = false; } + uvp.TextureHandle = _paperdollViewport.Render((int)uvp.Width, (int)uvp.Height); + } +} +``` + +> Capture `_inventoryFrame` (the registered window root) + `_paperdollDollViewport` (the `UiViewport`) as fields at the Bind site. `Visible` on the `UiViewport` is set by the controller's toggle (Task 1) — so the gate "doll-view" == `uvp.Visible`. + +- [ ] **Step 4 — re-dress hook.** In `OnLiveAppearanceUpdated` (`GameWindow.cs:3733`), when `update.Guid == _playerServerGuid`, set `_paperdollDollDirty = true` (rebuild lazily next doll pass). Also set it true on inventory-open. + +- [ ] **Step 5 — teardown.** In the logout/teleport `Clear()` path, dispose `_paperdollViewport` (FBO) + drop the doll's `EntitySpawnAdapter` state; null the fields so they rebuild on next login. + +- [ ] **Step 6 — build + launch + screenshot (visual checkpoint).** Build green. Launch (`dotnet run`, plain — do NOT kill a running client; if the rebuild is locked, ASK the user to close it). Open the inventory; confirm a (static) re-dressed doll renders in the paperdoll panel and the Slots button toggles doll ↔ armor-slots. + +- [ ] **Step 7 — commit.** + +```bash +git add src/AcDream.App/Rendering/GameWindow.cs +git commit -m "feat(D.2b): Slice 2 — wire paperdoll doll RTT pass + re-dress into GameWindow" +``` + +--- + +## Task 7: Idle animation (INLINE refinement) + +**Files:** +- Modify: `src/AcDream.App/Rendering/PaperdollViewportRenderer.cs`, `src/AcDream.App/Rendering/GameWindow.cs` + +Make the doll idle-animate, mirroring the spawn path. + +- [ ] **Step 1:** Read `GameWindow.cs:3514-3588` (the `SetCycle` + `_animatedEntities[entity.Id]` setup) and how `TickAnimations` (`GameWindow.cs:8114`) advances them. Decide the doll's tick owner: either (a) add the doll to `_animatedEntities` (free ticking, its Id flows into the world `animatedIds` harmlessly since it's not in `_worldState.LandblockEntries`), or (b) tick the doll sequencer in the doll pass. Prefer (a) — least new machinery. +- [ ] **Step 2:** In `RefreshPaperdollDoll`, after `OnCreate`, give the doll an `_animatedEntities[doll.Id]` entry with `sequencer.SetCycle(style, MotionCommand.Ready)` (style = the player's MotionTable `DefaultStyle`, or `0x8000003D` NonCombat — match the spawn path). Pass the doll's `Id` in `renderer`'s `_animatedEntityIds` set + the `_animatedById` dict so `WbDrawDispatcher.Draw` poses it. +- [ ] **Step 3:** Build + launch + screenshot: the doll idles (subtle breathing/sway). +- [ ] **Step 4:** Commit. + +```bash +git add src/AcDream.App/Rendering/PaperdollViewportRenderer.cs src/AcDream.App/Rendering/GameWindow.cs +git commit -m "feat(D.2b): Slice 2 — paperdoll doll idle animation" +``` + +--- + +## Task 8: Wrap-up — divergence rows, SSOT, full suite, visual gate + +**Files:** +- Modify: `docs/architecture/retail-divergence-register.md` +- Modify: `claude-memory/project_d2b_retail_ui.md` (the D.2b SSOT) + `MEMORY.md` if needed +- Modify: `docs/plans/2026-04-11-roadmap.md` (mark Slice 2) + +- [ ] **Step 1:** Reword **AP-66** (empty-slot frame stays in both views — slots ring the doll, no overlay/transparent). Add rows: per-race camera deferred; idle-DID per-race deferred; `IUiViewportRenderer` seam in App.UI not Core (intentional adaptation, rationale = spec §4C); doll lighting = one hand-built distant-light UBO (approximation iff it differs from retail `CreatureMode` lighting). Gate-verify AP-62 (MissileAmmo) opportunistically. +- [ ] **Step 2:** Run the FULL suite (not filtered): `dotnet test` across Core / Core.Net / App / UI. All green. (PROCESS lesson: a filtered subset can hide a cross-file regression.) +- [ ] **Step 3:** Update the D.2b SSOT with a "SUB-PHASE C SLICE 2 SHIPPED" entry (the doll + toggle + RTT seam + the key DO-NOT-RETRY facts) once the visual gate passes. +- [ ] **Step 4 — VISUAL GATE (stop for the user):** the user compares to retail — doll renders the re-dressed local player (race/gender/gear; naked if bare), faces the viewer, idles; Slots toggles doll-view ↔ armor-slots; live re-dress on wield/unwield. **This is the acceptance test; do not declare done before it passes.** +- [ ] **Step 5:** Commit the docs. + +```bash +git add docs/architecture/retail-divergence-register.md claude-memory/project_d2b_retail_ui.md docs/plans/2026-04-11-roadmap.md +git commit -m "docs(D.2b): Slice 2 shipped — paperdoll doll + Slots toggle; divergence + SSOT" +``` + +--- + +## Self-review notes (author) + +- **Spec coverage:** §4A→T1, §4B→T3, §4C→T3+T5, §4D→T4+T6+T7, §4E→T6, §4F→T1-4 tests + T8 gate. §7 pin-items resolved: UiButton (T1), inventory-open (T6 `_inventoryFrame.Visible`), animation contract (T5 step1 + T7), lighting UBO (T5 `UploadDollLight`), camera (T2 mirrors ChaseCamera), idle motion (T7 `MotionCommand.Ready`). All covered. +- **Type consistency:** `PaperdollViewState`, `ArmorSlotElementIds`, `DollCamera`, `UiViewport`, `IUiViewportRenderer.Render(w,h)→uint`, `DollEntityBuilder.Build`, `PaperdollViewportRenderer.Render/SetDoll`, `DollServerGuid` used consistently across tasks. +- **Known soft spots (resolved inline, by design):** the exact `WbDrawDispatcher.Draw` tuple types, `WorldEntity` `required` members, `MeshRef`/`PaletteOverride` ctors, and `ChaseCamera`'s matrix convention are confirmed against source DURING Tasks 4-5 (each task's step 1 says "read X first") — they're "mirror this exact existing code" directives, not open requirements. GL output is verified at the visual gate (Tasks 6-7), which is the acceptance test per the spec. From c5604ff6ad425c98bc849cf5273e3e7d64043eef Mon Sep 17 00:00:00 2001 From: Erik Date: Tue, 23 Jun 2026 08:57:50 +0200 Subject: [PATCH 03/51] =?UTF-8?q?feat(D.2b):=20Slice=202=20=E2=80=94=20pap?= =?UTF-8?q?erdoll=20armor/non-armor=20partition=20+=20Slots=20toggle=20sta?= =?UTF-8?q?te?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds ArmorSlotElementIds (the exact 9 ids gmPaperDollUI::ListenToElementMessage flips per decomp 175674-175706) and PaperdollViewState (SlotView/DollVisible/ ArmorSlotsVisible/Toggle) as a nested public class on PaperdollController. Wires ApplyView() into the constructor so the Slots button (0x100005BE) drives armor-slot Visible and the doll viewport Visible on every click. Initial state is doll-view (armor slots hidden). The doll viewport element (0x100001D5) is bound as UiElement? so this slice stays independent of Slice 3's IUiViewportRenderer seam; _armorSlots collects whichever of the 9 ids were found in the live layout. Three new unit tests verify the id set, the default state, and the round-trip toggle against the public PaperdollViewState surface only. Co-Authored-By: Claude Sonnet 4.6 --- .../UI/Layout/PaperdollController.cs | 53 +++++++++++++++++++ .../UI/Layout/PaperdollToggleTests.cs | 44 +++++++++++++++ 2 files changed, 97 insertions(+) create mode 100644 tests/AcDream.App.Tests/UI/Layout/PaperdollToggleTests.cs diff --git a/src/AcDream.App/UI/Layout/PaperdollController.cs b/src/AcDream.App/UI/Layout/PaperdollController.cs index 41763f01..82c47758 100644 --- a/src/AcDream.App/UI/Layout/PaperdollController.cs +++ b/src/AcDream.App/UI/Layout/PaperdollController.cs @@ -14,6 +14,32 @@ namespace AcDream.App.UI.Layout; /// public sealed class PaperdollController : IItemListDragHandler { + // ── Slots-toggle public surface ─────────────────────────────────────────────────────────────── + /// + /// The 9 armor-slot element-ids whose Visible state the Slots button (0x100005BE) toggles. + /// Doll-view: hidden. Slot-view: shown. Source: gmPaperDollUI::ListenToElementMessage decomp + /// 175674-175706 — these are the only 9 ids that element flips; the other ~12 equip slots + /// (jewelry, weapon, wrists, feet…) are NON-armor and remain visible in both views. + /// + public static readonly uint[] ArmorSlotElementIds = + { + 0x100005abu, 0x100005acu, 0x100005adu, 0x100005aeu, 0x100005afu, + 0x100005b0u, 0x100005b1u, 0x100005b2u, 0x100005b3u, + }; + + /// + /// View-state model for the Slots toggle (pure logic, no UI coupling). + /// Default is doll-view (SlotView == false): the 3-D character is visible, + /// the 9 armor slots are hidden. Calling Toggle() alternates between views. + /// + public sealed class PaperdollViewState + { + public bool SlotView { get; private set; } // false = doll-view (default) + public bool DollVisible => !SlotView; + public bool ArmorSlotsVisible => SlotView; + public void Toggle() => SlotView = !SlotView; + } + // WEAPON_READY_SLOT_LOC (acclient.h:3235): the weapon-hand doll slot accepts any wieldable weapon. private const EquipMask WeaponSlotMask = EquipMask.MeleeWeapon | EquipMask.MissileWeapon | EquipMask.Held | EquipMask.TwoHanded; @@ -51,6 +77,11 @@ public sealed class PaperdollController : IItemListDragHandler private readonly Action? _sendWield; // (itemGuid, equipMask) → GetAndWieldItem 0x001A private readonly List<(EquipMask Mask, UiItemList List)> _slots = new(); + // ── Slots-toggle state ──────────────────────────────────────────────────────────────────────── + private readonly PaperdollViewState _viewState = new(); + private readonly List _armorSlots = new(); + private UiElement? _dollViewport; // UiViewport wired in Slice 3; UiElement? keeps this task independent + private PaperdollController( ImportedLayout layout, ClientObjectTable objects, Func playerGuid, Func iconIds, Action? sendWield, @@ -80,6 +111,17 @@ public sealed class PaperdollController : IItemListDragHandler _objects.ObjectRemoved += OnObjectChanged; _objects.ObjectUpdated += OnObjectChanged; + // ── Slots-toggle wiring ─────────────────────────────────────────────────────────────────── + foreach (var id in ArmorSlotElementIds) + if (layout.FindElement(id) is UiItemList armor) _armorSlots.Add(armor); + + _dollViewport = layout.FindElement(0x100001D5u); // doll viewport (may be null until Slice 3) + + if (layout.FindElement(0x100005BEu) is UiButton slotsBtn) + slotsBtn.OnClick = () => { _viewState.Toggle(); ApplyView(); }; + + ApplyView(); // initial state = doll-view (armor slots hidden) + Populate(); } @@ -161,6 +203,17 @@ public sealed class PaperdollController : IItemListDragHandler _sendWield?.Invoke(payload.ObjId, (uint)wieldMask); } + /// + /// Pushes the current onto the live widgets: + /// hides/shows the doll viewport and each armor slot according to the toggle. + /// Called once at construction (doll-view default) and on every button click. + /// + private void ApplyView() + { + if (_dollViewport is not null) _dollViewport.Visible = _viewState.DollVisible; + foreach (var a in _armorSlots) a.Visible = _viewState.ArmorSlotsVisible; + } + /// Detach event handlers (idempotent). public void Dispose() { diff --git a/tests/AcDream.App.Tests/UI/Layout/PaperdollToggleTests.cs b/tests/AcDream.App.Tests/UI/Layout/PaperdollToggleTests.cs new file mode 100644 index 00000000..7241dd01 --- /dev/null +++ b/tests/AcDream.App.Tests/UI/Layout/PaperdollToggleTests.cs @@ -0,0 +1,44 @@ +using AcDream.App.UI.Layout; +using Xunit; + +namespace AcDream.App.Tests.UI.Layout; + +public class PaperdollToggleTests +{ + // The 9 armor element-ids that gmPaperDollUI::ListenToElementMessage flips + // (decomp 175674-175706). Doll-view hides these; slot-view shows them. + private static readonly uint[] ArmorIds = + { + 0x100005abu, 0x100005acu, 0x100005adu, 0x100005aeu, 0x100005afu, + 0x100005b0u, 0x100005b1u, 0x100005b2u, 0x100005b3u, + }; + + [Fact] + public void ArmorSlotIds_match_the_decomp_nine() + { + Assert.Equal(ArmorIds, PaperdollController.ArmorSlotElementIds); + } + + [Fact] + public void DollView_default_shows_doll_hides_armor() + { + var v = new PaperdollController.PaperdollViewState(); + Assert.False(v.SlotView); + Assert.True(v.DollVisible); + Assert.False(v.ArmorSlotsVisible); + } + + [Fact] + public void Toggle_to_slotview_hides_doll_shows_armor_and_back() + { + var v = new PaperdollController.PaperdollViewState(); + v.Toggle(); + Assert.True(v.SlotView); + Assert.False(v.DollVisible); + Assert.True(v.ArmorSlotsVisible); + v.Toggle(); + Assert.False(v.SlotView); + Assert.True(v.DollVisible); + Assert.False(v.ArmorSlotsVisible); + } +} From 10cb31223f8382b0d7325385e9e252469c5f2356 Mon Sep 17 00:00:00 2001 From: Erik Date: Tue, 23 Jun 2026 09:00:27 +0200 Subject: [PATCH 04/51] =?UTF-8?q?feat(D.2b):=20Slice=202=20=E2=80=94=20Dol?= =?UTF-8?q?lCamera=20(fixed=20paperdoll=20ICamera)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- src/AcDream.App/Rendering/DollCamera.cs | 37 +++++++++++++++++++ .../Rendering/DollCameraTests.cs | 27 ++++++++++++++ 2 files changed, 64 insertions(+) create mode 100644 src/AcDream.App/Rendering/DollCamera.cs create mode 100644 tests/AcDream.App.Tests/Rendering/DollCameraTests.cs diff --git a/src/AcDream.App/Rendering/DollCamera.cs b/src/AcDream.App/Rendering/DollCamera.cs new file mode 100644 index 00000000..b2ba8ff4 --- /dev/null +++ b/src/AcDream.App/Rendering/DollCamera.cs @@ -0,0 +1,37 @@ +using System.Numerics; + +namespace AcDream.App.Rendering; + +/// +/// Fixed camera for the paperdoll mini-scene. Eye and look-at from +/// gmPaperDollUI::PostInit (decomp lines 175521–175527): +/// eye (0.12, -2.4, 0.88) looking at the origin, AC up-axis = +Z. +/// +/// Uses the same / +/// convention as +/// so the doll's triangle winding and back-face +/// culling match the world render pass. +/// +/// Per-race camera distance (UpdateForRace) is deferred polish. +/// +public sealed class DollCamera : ICamera +{ + private static readonly Vector3 Eye = new(0.12f, -2.4f, 0.88f); + private static readonly Vector3 Target = Vector3.Zero; + private static readonly Vector3 Up = Vector3.UnitZ; // AC up-axis = +Z, same as ChaseCamera + + /// Vertical field of view in radians. ~34° default; tune at the visual gate. + public float FovRadians { get; set; } = 0.6f; + + public float Near { get; set; } = 0.1f; // same near plane as ChaseCamera / retail znear + public float Far { get; set; } = 50f; // doll scene is small; 50 m is ample + public float Aspect { get; set; } = 1f; + + /// + public Matrix4x4 View => + Matrix4x4.CreateLookAt(Eye, Target, Up); + + /// + public Matrix4x4 Projection => + Matrix4x4.CreatePerspectiveFieldOfView(FovRadians, Aspect <= 0f ? 1f : Aspect, Near, Far); +} diff --git a/tests/AcDream.App.Tests/Rendering/DollCameraTests.cs b/tests/AcDream.App.Tests/Rendering/DollCameraTests.cs new file mode 100644 index 00000000..c65afdfb --- /dev/null +++ b/tests/AcDream.App.Tests/Rendering/DollCameraTests.cs @@ -0,0 +1,27 @@ +using System.Numerics; +using AcDream.App.Rendering; +using Xunit; + +namespace AcDream.App.Tests.Rendering; + +public class DollCameraTests +{ + [Fact] + public void Eye_position_is_the_retail_camera_offset() + { + var cam = new DollCamera { Aspect = 100f / 214f }; + Assert.True(Matrix4x4.Invert(cam.View, out var inv)); + var eye = inv.Translation; + Assert.Equal(0.12f, eye.X, 3); + Assert.Equal(-2.4f, eye.Y, 3); + Assert.Equal(0.88f, eye.Z, 3); + } + + [Fact] + public void Projection_is_finite_and_uses_aspect() + { + var cam = new DollCamera { Aspect = 1.5f }; + Assert.True(float.IsFinite(cam.Projection.M11)); + Assert.NotEqual(0f, cam.Projection.M34); // perspective w = -z term + } +} From ebcdf44c0c06bd38d060efcf7b1092109d197a2b Mon Sep 17 00:00:00 2001 From: Erik Date: Tue, 23 Jun 2026 09:03:42 +0200 Subject: [PATCH 05/51] =?UTF-8?q?feat(D.2b):=20Slice=202=20=E2=80=94=20UiV?= =?UTF-8?q?iewport=20widget=20(dat=20Type=200xD)=20+=20IUiViewportRenderer?= =?UTF-8?q?=20seam?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- src/AcDream.App/UI/IUiViewportRenderer.cs | 11 +++++++ src/AcDream.App/UI/Layout/DatWidgetFactory.cs | 13 +++++---- src/AcDream.App/UI/UiViewport.cs | 25 ++++++++++++++++ .../UI/Layout/UiViewportFactoryTests.cs | 29 +++++++++++++++++++ 4 files changed, 72 insertions(+), 6 deletions(-) create mode 100644 src/AcDream.App/UI/IUiViewportRenderer.cs create mode 100644 src/AcDream.App/UI/UiViewport.cs create mode 100644 tests/AcDream.App.Tests/UI/Layout/UiViewportFactoryTests.cs diff --git a/src/AcDream.App/UI/IUiViewportRenderer.cs b/src/AcDream.App/UI/IUiViewportRenderer.cs new file mode 100644 index 00000000..13023078 --- /dev/null +++ b/src/AcDream.App/UI/IUiViewportRenderer.cs @@ -0,0 +1,11 @@ +namespace AcDream.App.UI; + +/// Renders a 3-D mini-scene into an off-screen buffer and returns the GL color-texture +/// handle. Called by the per-frame pre-UI hook (GameWindow), NOT from UiViewport.OnDraw. Implemented +/// by PaperdollViewportRenderer in AcDream.App.Rendering. Intra-App decoupling so the UI widget +/// doesn't depend on WbDrawDispatcher/GameWindow. +public interface IUiViewportRenderer +{ + /// Render at (width,height); return the color-texture GL handle, or 0 if nothing rendered. + uint Render(int width, int height); +} diff --git a/src/AcDream.App/UI/Layout/DatWidgetFactory.cs b/src/AcDream.App/UI/Layout/DatWidgetFactory.cs index 2fb75977..125f174a 100644 --- a/src/AcDream.App/UI/Layout/DatWidgetFactory.cs +++ b/src/AcDream.App/UI/Layout/DatWidgetFactory.cs @@ -62,13 +62,14 @@ public static class DatWidgetFactory // still ships — it just isn't wired into the factory switch yet. UiElement e = info.Type switch { - 1 => new UiButton(info, resolve), // UIElement_Button (reg :125828) - 6 => new UiMenu(), // UIElement_Menu (reg :120163) - 7 => BuildMeter(info, resolve, datFont), // UIElement_Meter - 11 => new UiScrollbar(), // UIElement_Scrollbar (reg :124137) - 12 => BuildText(info, resolve), // UIElement_Text (reg :115655) + 1 => new UiButton(info, resolve), // UIElement_Button (reg :125828) + 6 => new UiMenu(), // UIElement_Menu (reg :120163) + 7 => BuildMeter(info, resolve, datFont), // UIElement_Meter + 0xD => new UiViewport(), // UIElement_Viewport — 3-D mini-scene blit leaf + 11 => new UiScrollbar(), // UIElement_Scrollbar (reg :124137) + 12 => BuildText(info, resolve), // UIElement_Text (reg :115655) 0x10000031u => new UiItemList(resolve), // UIElement_ItemList — toolbar/inventory/paperdoll slots - _ => new UiDatElement(info, resolve), // generic fallback (incl. Type 3 chrome/containers) + _ => new UiDatElement(info, resolve), // generic fallback (incl. Type 3 chrome/containers) }; // Propagate position + size (pixel-exact from the dat). diff --git a/src/AcDream.App/UI/UiViewport.cs b/src/AcDream.App/UI/UiViewport.cs new file mode 100644 index 00000000..22ceabf5 --- /dev/null +++ b/src/AcDream.App/UI/UiViewport.cs @@ -0,0 +1,25 @@ +using System.Numerics; + +namespace AcDream.App.UI; + +/// Leaf widget for dat Type 0xD (UIElement_Viewport). Blits the texture produced by its +/// IUiViewportRenderer (run in the pre-UI hook) as a single sprite at its own rect. The 3-D render +/// does NOT happen here (OnDraw only has a 2-D context). +public sealed class UiViewport : UiElement +{ + public override bool ConsumesDatChildren => true; + + /// Renderer that produces the off-screen texture. Set by GameWindow wiring (later task). + public IUiViewportRenderer? Renderer { get; set; } + + /// Last GL color-texture handle produced by the pre-UI hook. 0 = nothing to blit. + public uint TextureHandle { get; set; } + + protected override void OnDraw(UiRenderContext ctx) + { + if (!Visible || TextureHandle == 0) return; + // Local origin is already at this widget's Left/Top (PushTransform applied by DrawSelfAndChildren). + // Draw the full-texture sprite with UV 0..1 and white tint (no color modulation). + ctx.DrawSprite(TextureHandle, 0f, 0f, Width, Height, 0f, 0f, 1f, 1f, Vector4.One); + } +} diff --git a/tests/AcDream.App.Tests/UI/Layout/UiViewportFactoryTests.cs b/tests/AcDream.App.Tests/UI/Layout/UiViewportFactoryTests.cs new file mode 100644 index 00000000..03a4873c --- /dev/null +++ b/tests/AcDream.App.Tests/UI/Layout/UiViewportFactoryTests.cs @@ -0,0 +1,29 @@ +using AcDream.App.UI; +using AcDream.App.UI.Layout; + +namespace AcDream.App.Tests.UI.Layout; + +public class UiViewportFactoryTests +{ + private static (uint, int, int) NoTex(uint _) => (0, 0, 0); + + [Fact] + public void Factory_builds_UiViewport_for_dat_type_0xD() + { + var info = new ElementInfo { Type = 0xD, Width = 200, Height = 300 }; + var widget = DatWidgetFactory.Create(info, NoTex, null); + var viewport = Assert.IsType(widget); + Assert.True(viewport.ConsumesDatChildren); + } + + [Fact] + public void UiViewport_rect_set_from_ElementInfo() + { + var info = new ElementInfo { Type = 0xD, X = 10, Y = 20, Width = 180, Height = 240 }; + var widget = DatWidgetFactory.Create(info, NoTex, null)!; + Assert.Equal(10f, widget.Left); + Assert.Equal(20f, widget.Top); + Assert.Equal(180f, widget.Width); + Assert.Equal(240f, widget.Height); + } +} From 362d41aacf094fc56e4f25d54b098fad651a86ae Mon Sep 17 00:00:00 2001 From: Erik Date: Tue, 23 Jun 2026 09:07:02 +0200 Subject: [PATCH 06/51] =?UTF-8?q?feat(D.2b):=20Slice=202=20=E2=80=94=20Dol?= =?UTF-8?q?lEntityBuilder=20(player=20Setup+ObjDesc=20->=20doll=20WorldEnt?= =?UTF-8?q?ity)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Mirrors the palette/part-override mapping at GameWindow.cs:3390-3431 in a testable static helper. Build() accepts plain (SubPaletteId, Offset, Length) and (PartIndex, GfxObjId) tuples, builds PaletteOverride only when subPalettes.Count > 0 (same gate as GameWindow), and poses the entity at origin facing the viewer (191.367905° / +Z). Reserved synthetic guid 0xDA11D011 keeps the doll distinct from the live player and satisfies EntitySpawnAdapter's ServerGuid != 0 guard. 7 new tests green; suite 594/0. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../Rendering/DollEntityBuilder.cs | 118 ++++++++++++++++++ .../Rendering/DollEntityBuilderTests.cs | 84 +++++++++++++ 2 files changed, 202 insertions(+) create mode 100644 src/AcDream.App/Rendering/DollEntityBuilder.cs create mode 100644 tests/AcDream.App.Tests/Rendering/DollEntityBuilderTests.cs diff --git a/src/AcDream.App/Rendering/DollEntityBuilder.cs b/src/AcDream.App/Rendering/DollEntityBuilder.cs new file mode 100644 index 00000000..76d3bf2e --- /dev/null +++ b/src/AcDream.App/Rendering/DollEntityBuilder.cs @@ -0,0 +1,118 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using AcDream.Core.World; + +namespace AcDream.App.Rendering; + +/// +/// Builds the dedicated paperdoll WorldEntity — retail's makeObject(player) +/// clone: the player's Setup id + current ObjDesc (base palette + subpalette overlays +/// + part overrides), posed at the scene origin facing the viewer. +/// +/// +/// The palette / part-override mapping mirrors the inline construction in +/// GameWindow.cs around lines 3390–3431. Extracted here so it is +/// unit-testable without dats and so the paperdoll renderer owns a clean +/// seam: it calls with fresh player state each time the +/// ObjDesc changes, and the renderer only has to swap the entity into its +/// dedicated mini-scene. +/// +/// +/// +/// The is a reserved synthetic guid that is: +/// (a) non-zero (so EntitySpawnAdapter.OnCreate's ServerGuid != 0 +/// guard accepts it), and (b) high enough that it never collides with a real +/// server-assigned guid. +/// +/// +public static class DollEntityBuilder +{ + /// + /// Reserved synthetic guid for the paperdoll clone. High, deliberately + /// outside the server's assignable range, and non-zero. + /// + public const uint DollServerGuid = 0xDA11_D011u; + + // retail set_heading: 191.367905° about +Z, expressed as a Quaternion + // (axis-angle, axis = (0,0,1), θ = 191.367905° in radians). + private static readonly float _headingRad = 191.367905f * (MathF.PI / 180f); + private static readonly Quaternion _dollRotation = + Quaternion.CreateFromAxisAngle(new Vector3(0f, 0f, 1f), _headingRad); + + /// + /// Builds a synthetic for the paperdoll mini-scene. + /// + /// The player's Setup dat id (0x02xxxxxx). + /// Pre-resolved mesh refs (may be empty; caller fills them in). + /// + /// ObjDesc base palette id (0x04xxxxxx). Passed only when subpalettes are + /// also present — mirrors GameWindow which only builds a PaletteOverride + /// when SubPalettes.Count > 0. + /// + /// + /// Subpalette overlays from the server ObjDesc. Each tuple carries the + /// subpalette dat id, byte offset into the base palette, and byte length. + /// Null or empty → PaletteOverride on the returned entity is null. + /// + /// + /// AnimPartChange swaps from the server ObjDesc. Each tuple is a + /// (PartIndex, replacement GfxObj id) pair. Null or empty → empty array. + /// + public static WorldEntity Build( + uint setupId, + IReadOnlyList meshRefs, + uint? basePaletteId = null, + IReadOnlyList<(uint SubPaletteId, byte Offset, byte Length)>? subPalettes = null, + IReadOnlyList<(byte PartIndex, uint GfxObjId)>? partOverrides = null) + { + // --- palette override (mirrors GameWindow:3395-3405) --- + // Only build when there are sub-palette overlays — same gate as GameWindow. + PaletteOverride? paletteOverride = null; + if (subPalettes is { Count: > 0 } spList) + { + var ranges = new PaletteOverride.SubPaletteRange[spList.Count]; + for (int i = 0; i < spList.Count; i++) + ranges[i] = new PaletteOverride.SubPaletteRange( + spList[i].SubPaletteId, + spList[i].Offset, + spList[i].Length); + paletteOverride = new PaletteOverride( + BasePaletteId: basePaletteId ?? 0u, + SubPalettes: ranges); + } + + // --- part overrides (mirrors GameWindow:3407-3418) --- + PartOverride[] entityPartOverrides; + if (partOverrides is null or { Count: 0 }) + { + entityPartOverrides = Array.Empty(); + } + else + { + entityPartOverrides = new PartOverride[partOverrides.Count]; + for (int i = 0; i < partOverrides.Count; i++) + entityPartOverrides[i] = new PartOverride( + partOverrides[i].PartIndex, + partOverrides[i].GfxObjId); + } + + // --- assemble entity (mirrors GameWindow:3420-3431) --- + // Id=0: the paperdoll renderer assigns its own render-local id when it + // registers this entity with the mini-scene GpuWorldState. We set zero + // here so the builder stays pure (no static counter). The caller may + // replace it before registration. + return new WorldEntity + { + Id = 0u, + ServerGuid = DollServerGuid, + SourceGfxObjOrSetupId = setupId, + Position = Vector3.Zero, + Rotation = _dollRotation, + MeshRefs = meshRefs, + PaletteOverride = paletteOverride, + PartOverrides = entityPartOverrides, + ParentCellId = null, // paperdoll mini-scene has no parent cell + }; + } +} diff --git a/tests/AcDream.App.Tests/Rendering/DollEntityBuilderTests.cs b/tests/AcDream.App.Tests/Rendering/DollEntityBuilderTests.cs new file mode 100644 index 00000000..192b0d69 --- /dev/null +++ b/tests/AcDream.App.Tests/Rendering/DollEntityBuilderTests.cs @@ -0,0 +1,84 @@ +using System.Collections.Generic; +using System.Numerics; +using AcDream.App.Rendering; +using AcDream.Core.World; +using Xunit; + +namespace AcDream.App.Tests.Rendering; + +public class DollEntityBuilderTests +{ + [Fact] + public void Builds_doll_entity_with_synthetic_guid_and_player_setup() + { + // SubPaletteRange uses: SubPaletteId, Offset (byte), Length (byte) + var doll = DollEntityBuilder.Build( + setupId: 0x0200_0001u, + meshRefs: new List(), + basePaletteId: 0x04000ABCu, + subPalettes: new (uint SubPaletteId, byte Offset, byte Length)[] { (0x0F00_0001u, 0, 8) }, + partOverrides: new (byte PartIndex, uint GfxObjId)[] { (2, 0x0100_0042u) }); + + Assert.Equal(0x0200_0001u, doll.SourceGfxObjOrSetupId); + Assert.Equal(DollEntityBuilder.DollServerGuid, doll.ServerGuid); + Assert.NotEqual(0u, doll.ServerGuid); + Assert.Single(doll.PartOverrides); + Assert.Equal((byte)2, doll.PartOverrides[0].PartIndex); + Assert.Equal(0x0100_0042u, doll.PartOverrides[0].GfxObjId); + Assert.NotNull(doll.PaletteOverride); + Assert.Equal(0x04000ABCu, doll.PaletteOverride!.BasePaletteId); + Assert.Single(doll.PaletteOverride.SubPalettes); + Assert.Equal(0x0F00_0001u, doll.PaletteOverride.SubPalettes[0].SubPaletteId); + } + + [Fact] + public void Null_overrides_give_empty_collections_not_null() + { + var doll = DollEntityBuilder.Build(0x0200_0001u, new List(), null, null, null); + // No subpalettes => no PaletteOverride (mirrors GameWindow: only built when Count > 0) + Assert.Null(doll.PaletteOverride); + Assert.Empty(doll.PartOverrides); + } + + [Fact] + public void Empty_subpalettes_give_null_palette_override() + { + // Mirror GameWindow: SubPalettes with Count == 0 => no override + var doll = DollEntityBuilder.Build( + 0x0200_0001u, + new List(), + basePaletteId: 0x04000001u, + subPalettes: System.Array.Empty<(uint, byte, byte)>(), + partOverrides: null); + Assert.Null(doll.PaletteOverride); + } + + [Fact] + public void Heading_is_normalized_quaternion_facing_viewer() + { + var doll = DollEntityBuilder.Build(0x0200_0001u, new List(), null, null, null); + Assert.True(System.MathF.Abs(doll.Rotation.LengthSquared() - 1f) < 1e-3f); + } + + [Fact] + public void Position_is_world_origin() + { + var doll = DollEntityBuilder.Build(0x0200_0001u, new List(), null, null, null); + Assert.Equal(Vector3.Zero, doll.Position); + } + + [Fact] + public void ParentCellId_is_null_for_doll_scene() + { + var doll = DollEntityBuilder.Build(0x0200_0001u, new List(), null, null, null); + Assert.Null(doll.ParentCellId); + } + + [Fact] + public void MeshRefs_are_passed_through() + { + var refs = new List { new MeshRef(0x01000001u, Matrix4x4.Identity) }; + var doll = DollEntityBuilder.Build(0x0200_0001u, refs, null, null, null); + Assert.Same(refs, doll.MeshRefs); + } +} From 3cdecb536bf443afc7d665f20961f141bc4df2a5 Mon Sep 17 00:00:00 2001 From: Erik Date: Tue, 23 Jun 2026 09:14:20 +0200 Subject: [PATCH 07/51] =?UTF-8?q?feat(D.2b):=20Slice=202=20=E2=80=94=20Pap?= =?UTF-8?q?erdollViewportRenderer=20RTT=20pass=20(static=20doll)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The C# analog of CreatureMode::Render: draws one re-dressed player clone into a private FBO (RGBA8 + depth24-stencil8) with the fixed DollCamera + one distant light (retail 0.3,1.9,0.65 @ 2.0), sealed in a GLStateScope so it can't disturb world/UI GL state. frustum:null ⇒ the doll's synthetic landblock is always visible ⇒ walked from entry.Entities and drawn from its current MeshRefs (static pose; idle animation is a later slice). Manages the FBO directly via GL (ManagedGLFramebuffer is unused/bitrotted WB infra). UiViewport blit flips V (FBO bottom-left origin vs UI top-left) so the doll isn't upside-down. Not yet wired — GameWindow hook is next. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../Rendering/PaperdollViewportRenderer.cs | 187 ++++++++++++++++++ src/AcDream.App/UI/UiViewport.cs | 6 +- 2 files changed, 191 insertions(+), 2 deletions(-) create mode 100644 src/AcDream.App/Rendering/PaperdollViewportRenderer.cs diff --git a/src/AcDream.App/Rendering/PaperdollViewportRenderer.cs b/src/AcDream.App/Rendering/PaperdollViewportRenderer.cs new file mode 100644 index 00000000..ba293f5a --- /dev/null +++ b/src/AcDream.App/Rendering/PaperdollViewportRenderer.cs @@ -0,0 +1,187 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using AcDream.App.Rendering.Wb; +using AcDream.App.UI; +using AcDream.Core.Lighting; +using AcDream.Core.World; +using Silk.NET.OpenGL; + +namespace AcDream.App.Rendering; + +/// +/// Render-to-texture renderer for the paperdoll 3-D doll (the C# analog of retail +/// CreatureMode::Render). Draws ONE re-dressed player clone (a , +/// built by + wired by GameWindow) into a private off-screen +/// framebuffer with a fixed + one distant light, then hands the color +/// texture to the widget which blits it as a normal 2-D sprite. +/// +/// The whole 3-D pass is sealed in a so it can't disturb the +/// surrounding world / UI GL state ([[feedback_render_self_contained_gl_state]]). It runs in the +/// per-frame pre-UI hook (GameWindow), gated on inventory-open ∧ doll-view — NOT from the widget's +/// 2-D OnDraw. +/// +/// Reuses the existing + the player's already-resolved, +/// already-GPU-resident MeshRefs (the doll clones them), so no separate mesh/texture upload is +/// needed. With frustum: null the doll's synthetic landblock is always "visible" and the +/// entity is walked from entry.Entities and drawn from its current MeshRefs — a STATIC pose +/// for now; idle animation (TickAnimations rebuilding the doll's MeshRefs) is a later slice. +/// +public sealed unsafe class PaperdollViewportRenderer : IUiViewportRenderer, IDisposable +{ + private readonly GL _gl; + private readonly WbDrawDispatcher _dispatcher; + private readonly SceneLightingUboBinding _lightUbo; + private readonly DollCamera _camera = new(); + + // Off-screen target (lazily (re)created on size change). + private uint _fbo; + private uint _colorTex; + private uint _depthRbo; + private int _fbW; + private int _fbH; + + // The doll WorldEntity (held by reference: when GameWindow's TickAnimations later rebuilds its + // MeshRefs each frame, this renderer sees the updated pose automatically). null = nothing to draw. + private WorldEntity? _doll; + + // Synthetic landblock for the doll's one-entry Draw tuple. With frustum:null + this as + // neverCullLandblockId the entity is never culled. 0 is unused by live streaming on the doll path. + private const uint DollLandblockId = 0u; + + public PaperdollViewportRenderer(GL gl, WbDrawDispatcher dispatcher, SceneLightingUboBinding lightUbo) + { + _gl = gl ?? throw new ArgumentNullException(nameof(gl)); + _dispatcher = dispatcher ?? throw new ArgumentNullException(nameof(dispatcher)); + _lightUbo = lightUbo ?? throw new ArgumentNullException(nameof(lightUbo)); + } + + /// Set (or clear) the doll entity. GameWindow builds/re-dresses it from the live player. + public void SetDoll(WorldEntity? doll) => _doll = doll; + + /// + public uint Render(int width, int height) + { + var doll = _doll; + if (doll is null || doll.MeshRefs.Count == 0 || width <= 0 || height <= 0) + return 0u; + + EnsureFramebuffer(width, height); + if (_fbo == 0) return 0u; + _camera.Aspect = width / (float)height; + + // Seal the entire 3-D pass — GLStateScope restores viewport/scissor/depth/cull/blend/program/ + // FBO bindings on dispose, so the surrounding world + 2-D UI passes are untouched. + using var scope = new GLStateScope(_gl); + + _gl.BindFramebuffer(FramebufferTarget.Framebuffer, _fbo); + _gl.Viewport(0, 0, (uint)width, (uint)height); + _gl.Disable(EnableCap.ScissorTest); + _gl.ClearColor(0f, 0f, 0f, 0f); // transparent — the window backdrop shows through behind the doll + _gl.ClearDepth(1.0); + _gl.DepthMask(true); // depth clears honor glDepthMask + _gl.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); + + _gl.Enable(EnableCap.DepthTest); + _gl.DepthFunc(DepthFunction.Less); + _gl.Enable(EnableCap.CullFace); + _gl.CullFace(TriangleFace.Back); + _gl.FrontFace(FrontFaceDirection.Ccw); // matches the world object pass; if the doll renders inside-out at the gate, flip to Cw + _gl.Disable(EnableCap.Blend); + + UploadDollLight(); + + // One synthetic landblock entry holding just the doll. frustum:null ⇒ always "visible" ⇒ + // walked from entry.Entities and drawn from doll.MeshRefs (WbDrawDispatcher.cs:692,1190). + var entities = new WorldEntity[] { doll }; + var entries = new (uint, Vector3, Vector3, IReadOnlyList, IReadOnlyDictionary?)[] + { + (DollLandblockId, new Vector3(-4f, -4f, -4f), new Vector3(4f, 4f, 4f), entities, null), + }; + + _dispatcher.Draw( + _camera, + entries, + frustum: null, + neverCullLandblockId: DollLandblockId, + visibleCellIds: null, + animatedEntityIds: null); + + return _colorTex; + } + + /// Overwrite the shared scene-lighting UBO (binding=1) with the doll's single distant + /// light. Safe: nothing else draws 3-D after the doll this frame, and GameWindow rebuilds the + /// world UBO at the start of the next frame. Retail values: DISTANT_LIGHT dir (0.3,1.9,0.65) + /// intensity 2.0 (gmPaperDollUI::PostInit decomp 175529-175533). + private void UploadDollLight() + { + var dir = Vector3.Normalize(new Vector3(0.3f, 1.9f, 0.65f)); + var ubo = new SceneLightingUbo + { + Light0 = new UboLight + { + PosAndKind = new Vector4(0f, 0f, 0f, 0f), // kind 0 = directional + DirAndRange = new Vector4(dir, 1e9f), // huge range = no distance cutoff + ColorAndIntensity = new Vector4(1f, 1f, 1f, 2.0f), // white @ retail intensity 2.0 + ConeAngleEtc = Vector4.Zero, + }, + CellAmbient = new Vector4(0.40f, 0.40f, 0.40f, 1f), // 1 active light; ambient tunable at the gate + FogParams = new Vector4(1e9f, 1e9f, 0f, 0f), // fog pushed to infinity = no fog on the doll + FogColor = Vector4.Zero, + CameraAndTime = new Vector4(0.12f, -2.4f, 0.88f, 0f), // camera world pos (matches DollCamera eye) + }; + _lightUbo.Upload(ubo); + } + + /// (Re)create the FBO + color texture + depth-stencil renderbuffer when the requested + /// size changes. Color is RGBA8 with linear filtering + clamp; depth is Depth24Stencil8. + private void EnsureFramebuffer(int width, int height) + { + if (_fbo != 0 && width == _fbW && height == _fbH) return; + DeleteFramebuffer(); + + _fbW = width; + _fbH = height; + + _colorTex = _gl.GenTexture(); + _gl.BindTexture(TextureTarget.Texture2D, _colorTex); + _gl.TexImage2D(TextureTarget.Texture2D, 0, InternalFormat.Rgba8, (uint)width, (uint)height, 0, + PixelFormat.Rgba, PixelType.UnsignedByte, (void*)0); + _gl.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear); + _gl.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)TextureMinFilter.Linear); + _gl.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)TextureWrapMode.ClampToEdge); + _gl.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)TextureWrapMode.ClampToEdge); + _gl.BindTexture(TextureTarget.Texture2D, 0); + + _depthRbo = _gl.GenRenderbuffer(); + _gl.BindRenderbuffer(RenderbufferTarget.Renderbuffer, _depthRbo); + _gl.RenderbufferStorage(RenderbufferTarget.Renderbuffer, InternalFormat.Depth24Stencil8, (uint)width, (uint)height); + _gl.BindRenderbuffer(RenderbufferTarget.Renderbuffer, 0); + + _fbo = _gl.GenFramebuffer(); + _gl.BindFramebuffer(FramebufferTarget.Framebuffer, _fbo); + _gl.FramebufferTexture2D(FramebufferTarget.Framebuffer, FramebufferAttachment.ColorAttachment0, + TextureTarget.Texture2D, _colorTex, 0); + _gl.FramebufferRenderbuffer(FramebufferTarget.Framebuffer, FramebufferAttachment.DepthStencilAttachment, + RenderbufferTarget.Renderbuffer, _depthRbo); + + var status = _gl.CheckFramebufferStatus(FramebufferTarget.Framebuffer); + _gl.BindFramebuffer(FramebufferTarget.Framebuffer, 0); + if (status != GLEnum.FramebufferComplete) + { + Console.WriteLine($"[paperdoll] framebuffer incomplete: {status} ({width}x{height})"); + DeleteFramebuffer(); + } + } + + private void DeleteFramebuffer() + { + if (_fbo != 0) { _gl.DeleteFramebuffer(_fbo); _fbo = 0; } + if (_colorTex != 0) { _gl.DeleteTexture(_colorTex); _colorTex = 0; } + if (_depthRbo != 0) { _gl.DeleteRenderbuffer(_depthRbo); _depthRbo = 0; } + _fbW = _fbH = 0; + } + + public void Dispose() => DeleteFramebuffer(); +} diff --git a/src/AcDream.App/UI/UiViewport.cs b/src/AcDream.App/UI/UiViewport.cs index 22ceabf5..8a8c8ffa 100644 --- a/src/AcDream.App/UI/UiViewport.cs +++ b/src/AcDream.App/UI/UiViewport.cs @@ -19,7 +19,9 @@ public sealed class UiViewport : UiElement { if (!Visible || TextureHandle == 0) return; // Local origin is already at this widget's Left/Top (PushTransform applied by DrawSelfAndChildren). - // Draw the full-texture sprite with UV 0..1 and white tint (no color modulation). - ctx.DrawSprite(TextureHandle, 0f, 0f, Width, Height, 0f, 0f, 1f, 1f, Vector4.One); + // V is FLIPPED (v0=1, v1=0): TextureHandle is an off-screen FBO color texture, whose origin is + // bottom-left (GL), while the UI sprite convention is top-left. Without the flip the doll renders + // upside-down. (If the doll appears upside-down at the visual gate, this is the line to revisit.) + ctx.DrawSprite(TextureHandle, 0f, 0f, Width, Height, 0f, 1f, 1f, 0f, Vector4.One); } } From 8b0365e7a998c66c49c8889f2be4c41f67123dbc Mon Sep 17 00:00:00 2001 From: Erik Date: Tue, 23 Jun 2026 09:22:45 +0200 Subject: [PATCH 08/51] =?UTF-8?q?feat(D.2b):=20Slice=202=20=E2=80=94=20wir?= =?UTF-8?q?e=20paperdoll=20doll=20RTT=20pass=20+=20re-dress=20into=20GameW?= =?UTF-8?q?indow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Drives the doll 3-D pass in a pre-UI hook (after the world passes, before _uiHost.Draw), gated on inventory-open AND doll-view (the viewport widget's Visible, set by the Slots toggle). RefreshPaperdollDoll clones the live player entity (_entitiesByServerGuid[player]) into a DollEntityBuilder doll with COPIED MeshRefs (frozen pose); re-dress is triggered by a dirty flag set in OnLiveAppearanceUpdated (0xF625) — the C# analog of RedressCreature. Correctness fix: the doll is passed in animatedEntityIds so the dispatcher BYPASSES the Tier-1 classification cache (WbDrawDispatcher.cs:1142). Without it, a re-dress (a new WorldEntity with the same fixed DollRenderId) would serve the previous doll's cached batches and the new gear wouldn't appear. Renderer disposed in the GameWindow teardown. Build + full App suite green (594). Static doll (no idle animation yet — next slice). Visual gate next. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../Rendering/DollEntityBuilder.cs | 13 ++- src/AcDream.App/Rendering/GameWindow.cs | 84 +++++++++++++++++++ .../Rendering/PaperdollViewportRenderer.cs | 8 +- 3 files changed, 103 insertions(+), 2 deletions(-) diff --git a/src/AcDream.App/Rendering/DollEntityBuilder.cs b/src/AcDream.App/Rendering/DollEntityBuilder.cs index 76d3bf2e..3dee4351 100644 --- a/src/AcDream.App/Rendering/DollEntityBuilder.cs +++ b/src/AcDream.App/Rendering/DollEntityBuilder.cs @@ -34,6 +34,17 @@ public static class DollEntityBuilder /// public const uint DollServerGuid = 0xDA11_D011u; + /// + /// Reserved render-local entity id for the doll. FIXED (the doll is a singleton) + /// and high enough never to collide with _liveEntityIdCounter ids. The + /// renderer passes this in animatedEntityIds so the dispatcher treats the + /// doll as animated — which BYPASSES the Tier-1 classification cache + /// (WbDrawDispatcher.cs:1142). That matters because a re-dress builds a NEW + /// WorldEntity with this SAME id; without the cache bypass the dispatcher would + /// serve the previous doll's cached batches and the new gear wouldn't appear. + /// + public const uint DollRenderId = 0xDA11_D012u; + // retail set_heading: 191.367905° about +Z, expressed as a Quaternion // (axis-angle, axis = (0,0,1), θ = 191.367905° in radians). private static readonly float _headingRad = 191.367905f * (MathF.PI / 180f); @@ -104,7 +115,7 @@ public static class DollEntityBuilder // replace it before registration. return new WorldEntity { - Id = 0u, + Id = DollRenderId, ServerGuid = DollServerGuid, SourceGfxObjOrSetupId = setupId, Position = Vector3.Zero, diff --git a/src/AcDream.App/Rendering/GameWindow.cs b/src/AcDream.App/Rendering/GameWindow.cs index a3ab1db0..860568d6 100644 --- a/src/AcDream.App/Rendering/GameWindow.cs +++ b/src/AcDream.App/Rendering/GameWindow.cs @@ -625,6 +625,12 @@ public sealed class GameWindow : IDisposable private AcDream.App.UI.Layout.InventoryController? _inventoryController; // Phase D.2b Sub-phase C — paperdoll equip-slot controller (wield drag handler). private AcDream.App.UI.Layout.PaperdollController? _paperdollController; + // Phase D.2b Sub-phase C Slice 2 — the 3-D doll viewport: an off-screen RTT renderer, the UiViewport + // widget that blits it, the inventory frame (for the open-gate), and a dirty flag (re-dress on 0xF625). + private AcDream.App.Rendering.PaperdollViewportRenderer? _paperdollViewportRenderer; + private AcDream.App.UI.UiViewport? _paperdollViewportWidget; + private AcDream.App.UI.UiNineSlicePanel? _inventoryFrame; + private bool _paperdollDollDirty = true; // Phase D.2b Task 9 — plugin UI registrations buffered before OnLoad; drained in OnLoad. private readonly AcDream.App.Plugins.BufferedUiRegistry? _uiRegistry; // Phase I.2: ImGui debug panel ViewModel. Lives for as long as @@ -2257,6 +2263,13 @@ public sealed class GameWindow : IDisposable // slot position is seen + usable; the live 3D character (the doll) is Slice 2. emptySlotSprite: contentsEmpty); + // Slice 2: capture the doll viewport widget (Type 0xD, element 0x100001D5) + the inventory + // frame so the per-frame pre-UI hook can render the 3-D doll into the widget's texture only + // when the window is open and in doll-view. The renderer itself is built after the + // WbDrawDispatcher exists (further down this method). + _paperdollViewportWidget = invLayout.FindElement(0x100001D5u) as AcDream.App.UI.UiViewport; + _inventoryFrame = inventoryFrame; + Console.WriteLine("[D.2b-B] retail inventory window from LayoutDesc importer (0x21000023)."); } else Console.WriteLine("[D.2b-B] inventory: LayoutDesc 0x21000023 not found."); @@ -2366,6 +2379,16 @@ public sealed class GameWindow : IDisposable // A.5 T22.5: apply A2C gate from quality preset. _wbDrawDispatcher.AlphaToCoverage = _resolvedQuality.AlphaToCoverage; + // Slice 2: now that the dispatcher exists, build the paperdoll doll RTT renderer and hand it to + // the viewport widget. Reuses the dispatcher + the scene-lighting UBO + _gl. The widget only + // blits the texture; the pre-UI hook drives the 3-D pass (see OnRender). + if (_paperdollViewportWidget is not null && _sceneLightingUbo is not null) + { + _paperdollViewportRenderer = new AcDream.App.Rendering.PaperdollViewportRenderer( + _gl, _wbDrawDispatcher, _sceneLightingUbo); + _paperdollViewportWidget.Renderer = _paperdollViewportRenderer; + } + // Phase A8: EnvCellRenderer init. Shares _meshShader (mesh_modern.{vert,frag}) // with the dispatcher — both consume the same global mesh buffer (VAO/IBO) // from ObjectMeshManager.GlobalBuffer. @@ -3751,6 +3774,52 @@ public sealed class GameWindow : IDisposable BasePaletteId = md.BasePaletteId, }; OnLiveEntitySpawned(newSpawn); + + // Slice 2: a player appearance change (equip / unequip) rebuilt _entitiesByServerGuid[player] + // above; flag the paperdoll doll to re-clone from it on the next doll pass (the C# analog of + // RedressCreature). Cheap flag — the rebuild is deferred to the pre-UI hook when visible. + if (update.Guid == _playerServerGuid) + _paperdollDollDirty = true; + } + + /// + /// Rebuilds the paperdoll doll from the live player entity (retail makeObject(player) + + /// DoObjDescChangesFromDefault). Clones the player's already-resolved Setup / MeshRefs / palette / + /// part overrides into a dedicated entity posed at the scene origin + /// facing the viewer. The MeshRefs are COPIED so the doll holds a stable pose independent of the + /// player's live in-world animation. Returns false (leaving the dirty flag set to retry) when the + /// player entity isn't available yet. + /// + private bool RefreshPaperdollDoll() + { + if (_paperdollViewportRenderer is null) return false; + if (!_entitiesByServerGuid.TryGetValue(_playerServerGuid, out var pe) || pe.MeshRefs.Count == 0) + { + _paperdollViewportRenderer.SetDoll(null); + return false; // player not ready — retry next frame + } + + uint? basePal = null; + List<(uint, byte, byte)>? subs = null; + if (pe.PaletteOverride is { } po) + { + basePal = po.BasePaletteId; + subs = new List<(uint, byte, byte)>(); + foreach (var r in po.SubPalettes) subs.Add((r.SubPaletteId, r.Offset, r.Length)); + } + + List<(byte, uint)>? parts = null; + if (pe.PartOverrides.Count > 0) + { + parts = new List<(byte, uint)>(pe.PartOverrides.Count); + foreach (var p in pe.PartOverrides) parts.Add((p.PartIndex, p.GfxObjId)); + } + + var meshRefsCopy = new List(pe.MeshRefs); // frozen-pose snapshot + var doll = AcDream.App.Rendering.DollEntityBuilder.Build( + pe.SourceGfxObjOrSetupId, meshRefsCopy, basePal, subs, parts); + _paperdollViewportRenderer.SetDoll(doll); + return true; } /// @@ -9002,6 +9071,20 @@ public sealed class GameWindow : IDisposable SkipWorldGeometry: ; } + // Phase D.2b Sub-phase C Slice 2 — paperdoll 3-D doll: render the re-dressed player clone into the + // viewport's off-screen texture BEFORE the 2-D UI pass blits it, but only when the inventory window + // is open AND the paperdoll is in doll-view (the widget's Visible is driven by the Slots toggle). + // The 3-D pass is fully sealed in a GLStateScope so it doesn't disturb the world/UI state. + if (_options.RetailUi && _paperdollViewportRenderer is not null + && _paperdollViewportWidget is { Visible: true } dollWidget + && _inventoryFrame is { Visible: true }) + { + if (_paperdollDollDirty && RefreshPaperdollDoll()) + _paperdollDollDirty = false; + dollWidget.TextureHandle = _paperdollViewportRenderer.Render( + (int)dollWidget.Width, (int)dollWidget.Height); + } + // Phase D.2b — retail-look UI tree (render-only; input integration deferred). // Self-contained 2D pass: UiHost.Draw → TextRenderer.Flush sets its own // blend/depth state and restores. Drawn before ImGui so the devtools @@ -13081,6 +13164,7 @@ public sealed class GameWindow : IDisposable _terrain?.Dispose(); _terrainModernShader?.Dispose(); _sceneLightingUbo?.Dispose(); + _paperdollViewportRenderer?.Dispose(); // Slice 2: the doll's off-screen FBO + textures _particleRenderer?.Dispose(); _debugLines?.Dispose(); _uiHost?.Dispose(); diff --git a/src/AcDream.App/Rendering/PaperdollViewportRenderer.cs b/src/AcDream.App/Rendering/PaperdollViewportRenderer.cs index ba293f5a..d57a8200 100644 --- a/src/AcDream.App/Rendering/PaperdollViewportRenderer.cs +++ b/src/AcDream.App/Rendering/PaperdollViewportRenderer.cs @@ -49,6 +49,12 @@ public sealed unsafe class PaperdollViewportRenderer : IUiViewportRenderer, IDis // neverCullLandblockId the entity is never culled. 0 is unused by live streaming on the doll path. private const uint DollLandblockId = 0u; + // The doll's render id, passed as "animated" so the dispatcher bypasses the Tier-1 classification + // cache (WbDrawDispatcher.cs:1142) and re-classifies from the current MeshRefs every frame. This is + // what makes a re-dress (a new WorldEntity built with the same DollRenderId) actually take effect, + // AND what lets the idle animation (later slice, TickAnimations rebuilds MeshRefs) show. + private static readonly HashSet _dollAnimatedIds = new() { DollEntityBuilder.DollRenderId }; + public PaperdollViewportRenderer(GL gl, WbDrawDispatcher dispatcher, SceneLightingUboBinding lightUbo) { _gl = gl ?? throw new ArgumentNullException(nameof(gl)); @@ -105,7 +111,7 @@ public sealed unsafe class PaperdollViewportRenderer : IUiViewportRenderer, IDis frustum: null, neverCullLandblockId: DollLandblockId, visibleCellIds: null, - animatedEntityIds: null); + animatedEntityIds: _dollAnimatedIds); // doll treated as animated ⇒ cache-bypass (re-dress correctness) return _colorTex; } From fe319bd2aa7481431b818682b00d5774402b72e2 Mon Sep 17 00:00:00 2001 From: Erik Date: Tue, 23 Jun 2026 09:58:22 +0200 Subject: [PATCH 09/51] =?UTF-8?q?fix(D.2b):=20Slice=202=20visual=20gate=20?= =?UTF-8?q?=E2=80=94=20frame=20the=20whole=20doll=20+=20caption=20the=20Sl?= =?UTF-8?q?ots=20toggle?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Visual gate 1 (user): the doll rendered but only the legs showed (camera aimed at the model origin = the feet) and the Slots button was invisible. - DollCamera: aim the look-at at mid-body (~0.95 m) and stand back ~3.7 m so the whole ~1.9 m figure fits. (Size is a later retail-comparison polish per the user.) - PaperdollController: the Slots button (0x100005BE) is found + wired (diagnostic confirmed armorSlots=9/9, viewport=UiViewport, slotsButton=UiButton) but its dat element has no face sprite, so it drew nothing. Give it a gold "Slots" caption (UiButton.Label, like chat Send) via a new datFont param on Bind. Temporary [Slice2-paperdoll] diagnostic logs the button rect + the found widgets (stripped at wrap-up). Idle animation deferred to a focused follow-up (faithful idle needs a full AnimatedEntity + Sequencer through the TickAnimations multi-branch path + re-dress coordination — real integration risk vs the verified static doll). Build + full App suite green (594). Co-Authored-By: Claude Opus 4.8 (1M context) --- src/AcDream.App/Rendering/DollCamera.cs | 17 +++++++----- src/AcDream.App/Rendering/GameWindow.cs | 3 ++- .../UI/Layout/PaperdollController.cs | 27 ++++++++++++++++--- .../Rendering/DollCameraTests.cs | 8 +++--- 4 files changed, 41 insertions(+), 14 deletions(-) diff --git a/src/AcDream.App/Rendering/DollCamera.cs b/src/AcDream.App/Rendering/DollCamera.cs index b2ba8ff4..c1616bfe 100644 --- a/src/AcDream.App/Rendering/DollCamera.cs +++ b/src/AcDream.App/Rendering/DollCamera.cs @@ -3,21 +3,26 @@ using System.Numerics; namespace AcDream.App.Rendering; /// -/// Fixed camera for the paperdoll mini-scene. Eye and look-at from -/// gmPaperDollUI::PostInit (decomp lines 175521–175527): -/// eye (0.12, -2.4, 0.88) looking at the origin, AC up-axis = +Z. +/// Fixed camera for the paperdoll mini-scene. Derived from gmPaperDollUI::PostInit +/// (decomp lines 175521–175527: eye offset ~(0.12, -2.4, 0.88) about the origin), but with the +/// look-at raised to mid-body and the camera pulled back after the first visual gate: the doll's +/// model origin is at the FEET (z=0), so aiming at the origin framed only the lower legs. We aim +/// at ~0.95 m (a human's vertical centre) and stand back ~3.7 m so the whole ~1.9 m figure fits. +/// AC up-axis = +Z. /// /// Uses the same / /// convention as /// so the doll's triangle winding and back-face /// culling match the world render pass. /// -/// Per-race camera distance (UpdateForRace) is deferred polish. +/// Exact per-race camera framing (UpdateForRace) is deferred polish. /// public sealed class DollCamera : ICamera { - private static readonly Vector3 Eye = new(0.12f, -2.4f, 0.88f); - private static readonly Vector3 Target = Vector3.Zero; + // Body centre height (metres) the camera aims at — model origin is at the feet (z=0). + private const float BodyCentreZ = 0.95f; + private static readonly Vector3 Eye = new(0.12f, -3.7f, BodyCentreZ); + private static readonly Vector3 Target = new(0f, 0f, BodyCentreZ); private static readonly Vector3 Up = Vector3.UnitZ; // AC up-axis = +Z, same as ChaseCamera /// Vertical field of view in radians. ~34° default; tune at the visual gate. diff --git a/src/AcDream.App/Rendering/GameWindow.cs b/src/AcDream.App/Rendering/GameWindow.cs index 860568d6..c36f3d1b 100644 --- a/src/AcDream.App/Rendering/GameWindow.cs +++ b/src/AcDream.App/Rendering/GameWindow.cs @@ -2261,7 +2261,8 @@ public sealed class GameWindow : IDisposable sendWield: (item, mask) => _liveSession?.SendGetAndWieldItem(item, mask), // Empty equip slots show a visible frame (same square as the inventory grid) so every // slot position is seen + usable; the live 3D character (the doll) is Slice 2. - emptySlotSprite: contentsEmpty); + emptySlotSprite: contentsEmpty, + datFont: vitalsDatFont); // Slice 2: caption the "Slots" toggle button // Slice 2: capture the doll viewport widget (Type 0xD, element 0x100001D5) + the inventory // frame so the per-frame pre-UI hook can render the 3-D doll into the widget's texture only diff --git a/src/AcDream.App/UI/Layout/PaperdollController.cs b/src/AcDream.App/UI/Layout/PaperdollController.cs index 82c47758..77d5f9c4 100644 --- a/src/AcDream.App/UI/Layout/PaperdollController.cs +++ b/src/AcDream.App/UI/Layout/PaperdollController.cs @@ -85,7 +85,7 @@ public sealed class PaperdollController : IItemListDragHandler private PaperdollController( ImportedLayout layout, ClientObjectTable objects, Func playerGuid, Func iconIds, Action? sendWield, - uint emptySlotSprite) + uint emptySlotSprite, UiDatFont? datFont) { _objects = objects; _playerGuid = playerGuid; _iconIds = iconIds; _sendWield = sendWield; @@ -117,8 +117,27 @@ public sealed class PaperdollController : IItemListDragHandler _dollViewport = layout.FindElement(0x100001D5u); // doll viewport (may be null until Slice 3) - if (layout.FindElement(0x100005BEu) is UiButton slotsBtn) + var slotsBtnEl = layout.FindElement(0x100005BEu); + if (slotsBtnEl is UiButton slotsBtn) + { slotsBtn.OnClick = () => { _viewState.Toggle(); ApplyView(); }; + // The dat element has no face sprite, so without a label the button is invisible. Give it a + // "Slots" caption (gold, like the chat Send button) so it's findable + clickable. + if (datFont is not null) + { + slotsBtn.Label = "Slots"; + slotsBtn.LabelFont = datFont; + slotsBtn.LabelColor = new System.Numerics.Vector4(1f, 0.92f, 0.72f, 1f); + } + } + + // Slice 2 diagnostic (temporary): confirm the importer surfaced the toggle button + doll + // viewport, and WHERE the button sits. Stripped once the toggle is visually confirmed. + Console.WriteLine($"[Slice2-paperdoll] armorSlots={_armorSlots.Count}/9 " + + $"viewport={_dollViewport?.GetType().Name ?? "MISSING"} " + + $"slotsButton={slotsBtnEl?.GetType().Name ?? "MISSING"} " + + $"btnRect=({slotsBtnEl?.Left ?? -1},{slotsBtnEl?.Top ?? -1},{slotsBtnEl?.Width ?? -1},{slotsBtnEl?.Height ?? -1}) " + + $"btnVisible={slotsBtnEl?.Visible.ToString() ?? "n/a"}"); ApplyView(); // initial state = doll-view (armor slots hidden) @@ -128,8 +147,8 @@ public sealed class PaperdollController : IItemListDragHandler public static PaperdollController Bind( ImportedLayout layout, ClientObjectTable objects, Func playerGuid, Func iconIds, Action? sendWield = null, - uint emptySlotSprite = 0u) - => new PaperdollController(layout, objects, playerGuid, iconIds, sendWield, emptySlotSprite); + uint emptySlotSprite = 0u, UiDatFont? datFont = null) + => new PaperdollController(layout, objects, playerGuid, iconIds, sendWield, emptySlotSprite, datFont); private void OnObjectChanged(ClientObject o) { if (Concerns(o)) Populate(); } private void OnObjectMoved(ClientObject o, uint from, uint to) diff --git a/tests/AcDream.App.Tests/Rendering/DollCameraTests.cs b/tests/AcDream.App.Tests/Rendering/DollCameraTests.cs index c65afdfb..6a82af78 100644 --- a/tests/AcDream.App.Tests/Rendering/DollCameraTests.cs +++ b/tests/AcDream.App.Tests/Rendering/DollCameraTests.cs @@ -7,14 +7,16 @@ namespace AcDream.App.Tests.Rendering; public class DollCameraTests { [Fact] - public void Eye_position_is_the_retail_camera_offset() + public void Eye_position_frames_the_doll_from_the_front() { var cam = new DollCamera { Aspect = 100f / 214f }; Assert.True(Matrix4x4.Invert(cam.View, out var inv)); var eye = inv.Translation; + // Tuned at the visual gate: aim at mid-body (z≈0.95) and stand back ~3.7 m so the whole + // figure fits (model origin is at the feet, so aiming at the origin framed only the legs). Assert.Equal(0.12f, eye.X, 3); - Assert.Equal(-2.4f, eye.Y, 3); - Assert.Equal(0.88f, eye.Z, 3); + Assert.Equal(-3.7f, eye.Y, 3); + Assert.Equal(0.95f, eye.Z, 3); } [Fact] From 8ee3d89feb65157505e8f2e2d245883805d56b49 Mon Sep 17 00:00:00 2001 From: Erik Date: Tue, 23 Jun 2026 10:08:59 +0200 Subject: [PATCH 10/51] =?UTF-8?q?fix(D.2b):=20Slice=202=20=E2=80=94=20butt?= =?UTF-8?q?ons=20inside=20a=20whole-window-Draggable=20frame=20get=20their?= =?UTF-8?q?=20Click?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Visual gate 2 (user): the "Slots" toggle caption was visible but unclickable. Root cause (UiRoot.OnMouseDown/OnMouseUp): a left-press on a non-drag-source widget inside a whole-window-Draggable frame (the inventory window's IA-12 drag) set _windowDragTarget; OnMouseUp then early-returned before emitting the Click. So the paperdoll Slots button (the first plain button inside the draggable inventory frame) never received its click. Chat/toolbar buttons escape this — their frames aren't whole-window-draggable. Fix (toolkit, root cause not band-aid): add UiElement.HandlesClick (a virtual opt-out parallel to IsDragSource); UiButton overrides it true; OnMouseDown routes a HandlesClick press to the widget (like CapturesPointerDrag) instead of the window-drag, so OnMouseUp emits the Click. 2 regression tests lock it (HandlesClick widget in a Draggable frame emits Click; a plain one doesn't). Build + full App suite green (596, +2). Co-Authored-By: Claude Opus 4.8 (1M context) --- src/AcDream.App/UI/UiButton.cs | 5 ++ src/AcDream.App/UI/UiElement.cs | 9 ++++ src/AcDream.App/UI/UiRoot.cs | 11 +++-- .../AcDream.App.Tests/UI/UiRootInputTests.cs | 47 +++++++++++++++++++ 4 files changed, 67 insertions(+), 5 deletions(-) diff --git a/src/AcDream.App/UI/UiButton.cs b/src/AcDream.App/UI/UiButton.cs index 6c31797d..4936ada4 100644 --- a/src/AcDream.App/UI/UiButton.cs +++ b/src/AcDream.App/UI/UiButton.cs @@ -75,6 +75,11 @@ public sealed class UiButton : UiElement /// procedurally, so the importer must not build the button's children as widgets. public override bool ConsumesDatChildren => true; + /// A button is interactive — it must receive its Click even inside a whole-window-Draggable + /// frame (e.g. the paperdoll "Slots" toggle in the inventory window), so it opts out of the + /// IA-12 whole-window-drag that would otherwise swallow the press. + public override bool HandlesClick => true; + /// /// Returns the File id for the current , falling back to /// the DirectState ("" key) if the named state is absent. diff --git a/src/AcDream.App/UI/UiElement.cs b/src/AcDream.App/UI/UiElement.cs index 72a49d63..20c328e4 100644 --- a/src/AcDream.App/UI/UiElement.cs +++ b/src/AcDream.App/UI/UiElement.cs @@ -121,6 +121,15 @@ public abstract class UiElement /// false; overridden by drag sources (e.g. an occupied ). public virtual bool IsDragSource => false; + /// If true, a left-press on this element is handled BY the element (it receives the Click + /// on release) instead of being captured as a whole-window move on a Draggable ancestor. Set by + /// interactive leaf widgets (e.g. ) so they stay clickable inside a + /// whole-window-Draggable frame like the inventory window — where, without this, the IA-12 + /// whole-window-drag swallows the press and the Click is never emitted. Distinct from + /// (starts a drag-drop) and (a + /// self-driven interior drag such as text selection). Default false. + public virtual bool HandlesClick => false; + /// Minimum size enforced while resizing. public float MinWidth { get; set; } = 40f; public float MinHeight { get; set; } = 40f; diff --git a/src/AcDream.App/UI/UiRoot.cs b/src/AcDream.App/UI/UiRoot.cs index 11d35b55..7740fddc 100644 --- a/src/AcDream.App/UI/UiRoot.cs +++ b/src/AcDream.App/UI/UiRoot.cs @@ -275,12 +275,13 @@ public sealed class UiRoot : UiElement // the bar movable by its empty cells / chrome. _dragCandidate = true; } - else if (target.CapturesPointerDrag) + else if (target.CapturesPointerDrag || target.HandlesClick) { - // The pressed widget owns interior drags (e.g. text selection): - // do NOT move the ancestor window. The already-dispatched MouseDown - // event + SetCapture(target) let the target drive its own drag via - // the MouseMove events it receives while captured. + // The pressed widget owns its pointer interaction — either an interior drag (e.g. text + // selection, CapturesPointerDrag) or a click it must receive (e.g. a UiButton, + // HandlesClick). Either way do NOT move the ancestor window. The already-dispatched + // MouseDown + SetCapture(target) let the target handle it; on release OnMouseUp emits + // the Click over the same element. (A HandlesClick widget is not a drag candidate.) _dragCandidate = false; } else if (window.Draggable) diff --git a/tests/AcDream.App.Tests/UI/UiRootInputTests.cs b/tests/AcDream.App.Tests/UI/UiRootInputTests.cs index e31da6c7..49799ae1 100644 --- a/tests/AcDream.App.Tests/UI/UiRootInputTests.cs +++ b/tests/AcDream.App.Tests/UI/UiRootInputTests.cs @@ -14,6 +14,53 @@ public class UiRootInputTests Assert.Equal(AnchorEdges.None, panel.Anchors); } + private sealed class ClickRecorder : UiElement + { + private readonly bool _handlesClick; + public bool Clicked; + public ClickRecorder(bool handlesClick) => _handlesClick = handlesClick; + public override bool HandlesClick => _handlesClick; + public override bool OnEvent(in UiEvent e) + { + if (e.Type == UiEventType.Click) { Clicked = true; return true; } + return false; + } + } + + [Fact] + public void HandlesClickWidget_insideDraggableWindow_stillEmitsClick() + { + // Regression (paperdoll "Slots" toggle): a HandlesClick widget (e.g. a UiButton) inside a + // whole-window-Draggable frame (the inventory window, IA-12 whole-window-drag) must still + // receive its Click. Before the fix the window-move branch captured the press and OnMouseUp + // returned before emitting Click, so the toggle button did nothing. + var root = new UiRoot { Width = 800, Height = 600 }; + var frame = new UiPanel { Left = 10, Top = 300, Width = 200, Height = 60, Draggable = true }; + var btn = new ClickRecorder(handlesClick: true) { Left = 5, Top = 5, Width = 120, Height = 14 }; + frame.AddChild(btn); + root.AddChild(frame); + + root.OnMouseDown(UiMouseButton.Left, 20, 310); // press over the button (screen rect 15,305..135,319) + root.OnMouseUp(UiMouseButton.Left, 20, 310); // release same spot → Click + Assert.True(btn.Clicked); + } + + [Fact] + public void PlainWidget_insideDraggableWindow_doesNotEmitClick() + { + // Contrast that locks the distinction: a NON-HandlesClick child inside the Draggable frame is + // captured as a whole-window-drag, so no Click is emitted (the frame is draggable by it). + var root = new UiRoot { Width = 800, Height = 600 }; + var frame = new UiPanel { Left = 10, Top = 300, Width = 200, Height = 60, Draggable = true }; + var plain = new ClickRecorder(handlesClick: false) { Left = 5, Top = 5, Width = 120, Height = 14 }; + frame.AddChild(plain); + root.AddChild(frame); + + root.OnMouseDown(UiMouseButton.Left, 20, 310); + root.OnMouseUp(UiMouseButton.Left, 20, 310); + Assert.False(plain.Clicked); + } + private sealed class CoordRecorder : UiElement { public (int x, int y)? Down, Move; From 594942f1275a412b2d9de326fdb71add48de1632 Mon Sep 17 00:00:00 2001 From: Erik Date: Wed, 24 Jun 2026 22:31:44 +0200 Subject: [PATCH 11/51] =?UTF-8?q?fix(D.2b):=20Slice=202=20=E2=80=94=20Slot?= =?UTF-8?q?s=20caption=20white=20+=20left-aligned=20(visual=20gate)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit User gate: the "Slots" toggle caption was gold (should be white) and centered (should sit at the left, before the slots). UiButton gains a LabelAlignment (Center default / Left); the paperdoll caption is set white + Left-aligned. The retail checkbox box (green-checked / circle-unchecked) + the exact pose are the two remaining pieces, done next. Build + full App suite green (596). Co-Authored-By: Claude Opus 4.8 (1M context) --- src/AcDream.App/UI/Layout/PaperdollController.cs | 5 +++-- src/AcDream.App/UI/UiButton.cs | 13 +++++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/AcDream.App/UI/Layout/PaperdollController.cs b/src/AcDream.App/UI/Layout/PaperdollController.cs index 77d5f9c4..4d454270 100644 --- a/src/AcDream.App/UI/Layout/PaperdollController.cs +++ b/src/AcDream.App/UI/Layout/PaperdollController.cs @@ -122,12 +122,13 @@ public sealed class PaperdollController : IItemListDragHandler { slotsBtn.OnClick = () => { _viewState.Toggle(); ApplyView(); }; // The dat element has no face sprite, so without a label the button is invisible. Give it a - // "Slots" caption (gold, like the chat Send button) so it's findable + clickable. + // left-aligned WHITE "Slots" caption (retail is white, not gold) so it's findable + clickable. if (datFont is not null) { slotsBtn.Label = "Slots"; slotsBtn.LabelFont = datFont; - slotsBtn.LabelColor = new System.Numerics.Vector4(1f, 0.92f, 0.72f, 1f); + slotsBtn.LabelColor = System.Numerics.Vector4.One; // white (was gold) + slotsBtn.LabelAlign = UiButton.LabelAlignment.Left; // sit at the left, before the slots } } diff --git a/src/AcDream.App/UI/UiButton.cs b/src/AcDream.App/UI/UiButton.cs index 4936ada4..440b848c 100644 --- a/src/AcDream.App/UI/UiButton.cs +++ b/src/AcDream.App/UI/UiButton.cs @@ -47,6 +47,13 @@ public sealed class UiButton : UiElement /// Label color (default white). public Vector4 LabelColor { get; set; } = Vector4.One; + /// Horizontal alignment of . Center (default) for normal buttons; + /// Left for the paperdoll "Slots" caption that sits at the left edge, before the slots. + public LabelAlignment LabelAlign { get; set; } = LabelAlignment.Center; + + /// Label horizontal alignment options. + public enum LabelAlignment { Center, Left } + /// /// Active state name, runtime-settable (e.g. Max/Min toggling Normal ↔ Minimized). /// Matches . @@ -106,8 +113,10 @@ public sealed class UiButton : UiElement if (Label is { Length: > 0 } label && LabelFont is { } lf) { - float tx = (Width - lf.MeasureWidth(label)) * 0.5f; - float ty = (Height - lf.LineHeight) * 0.5f; + float tx = LabelAlign == LabelAlignment.Left + ? 3f // small left pad (room for a future checkbox box) + : (Width - lf.MeasureWidth(label)) * 0.5f; // centered (default) + float ty = (Height - lf.LineHeight) * 0.5f; ctx.DrawStringDat(lf, label, tx, ty, LabelColor); } } From 8fa66c23d5e0a116030cb690892b220c8d190069 Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 25 Jun 2026 13:16:27 +0200 Subject: [PATCH 12/51] =?UTF-8?q?fix(D.2b):=20Slice=202=20=E2=80=94=20reta?= =?UTF-8?q?il-exact=20doll=20pose,=20camera=20+=20heading=20(visual=20gate?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The paperdoll doll now matches retail: correct held pose, framing, and facing. Three decomp-sourced fixes closed the visual gate. Pose: cdb-confirmed m_didAnimation = 0x030003C0 (gmPaperDollUI), played once + HELD (set_sequence_animation framerate=0, RedressCreature 0x004a3c22). Dumping the dat showed the 29-frame anim has only two distinct keyframes — frame 0 (transitional, bent arm) and frames 1..28 (byte-identical: the settled stance, arms down + leg back) — so ApplyPaperdollPose applies the LAST frame statically (no looping). Camera: ported verbatim from UIElement_Viewport::SetCamera (decomp 0x004a5a39). position (0.12,-2.4,0.88); direction (0,0,0) => IDENTITY view frame => look straight down +Y, ZERO yaw; FOV pi/4 (CreatureMode ctor default 0x004543cf); ambient 0.3. The prior hand-tune aimed the camera at mid-body, adding a ~2deg yaw that turned the doll's face away — full-body framing comes from eye-height + FOV, not aiming. Heading: retail Frame::set_heading(h) (0x00535e40) builds facing (sin h, cos h); System.Numerics CreateFromAxisAngle(+Z, +h) rotates the body's default +Y forward to (-sin h, cos h) — the X-lean was MIRRORED (~22deg), the real cause of the turned-away face. Negate the angle to land on retail's facing. Wrap-up: stripped the temporary O/P pose-frame stepper + Slice2 diagnostics; divergence register AP-66 reworded, AP-67 (RTT doll render vs in-cell CreatureMode::Render) + AP-68 (per-race UpdateForRace unimpl) added; DollCameraTests pinned to the retail values + a zero-yaw guard. tools/cdb/paperdoll-pose.cdb = the pose-DID capture script. Build + full suite green (Core 1579 / Core.Net 343 / App 597 / UI 425). Co-Authored-By: Claude Opus 4.8 (1M context) --- .../retail-divergence-register.md | 4 +- src/AcDream.App/Rendering/DollCamera.cs | 47 +++++++----- .../Rendering/DollEntityBuilder.cs | 10 ++- src/AcDream.App/Rendering/GameWindow.cs | 71 ++++++++++++++++++- .../Rendering/PaperdollViewportRenderer.cs | 2 +- .../UI/Layout/PaperdollController.cs | 8 --- .../Rendering/DollCameraTests.cs | 22 ++++-- tools/cdb/paperdoll-pose.cdb | 9 +++ 8 files changed, 136 insertions(+), 37 deletions(-) create mode 100644 tools/cdb/paperdoll-pose.cdb diff --git a/docs/architecture/retail-divergence-register.md b/docs/architecture/retail-divergence-register.md index 33912121..772856a0 100644 --- a/docs/architecture/retail-divergence-register.md +++ b/docs/architecture/retail-divergence-register.md @@ -164,7 +164,9 @@ accepted-divergence entries (#96, #49, #50). | AP-63 | **Dual-wield-into-shield-slot special not implemented** — retail `OnItemListDragOver` (decomp 174302) lets a melee-capable item also drop on the Shield slot; acdream's `wieldMask = ValidLocations & slotMask` rejects it. | `src/AcDream.App/UI/Layout/PaperdollController.cs` (`HandleDropRelease`) | A dual-wielder cannot off-hand a melee weapon via the doll. | Dual-wield via drag-onto-shield-slot is blocked — functional gap for dual-wield characters. | `gmPaperDollUI::OnItemListDragOver` decomp 174302 | | AP-64 | **Wield-reject rollback assumes `InventoryServerSaveFailed 0x00A0`** — an optimistic wield rolls back only if ACE emits `0x00A0` for a `GetAndWieldItem` rejection; otherwise corrected by the next authoritative message. Gate-verify via WireMCP. | `src/AcDream.Core.Net/GameEventWiring.cs` (0x00A0 handler) | If ACE uses a different reject opcode for wield, the optimistic state is left dangling until the next full update. | Rejected wield briefly shows the item as equipped in the doll — cosmetic flicker or stuck state if `0x00A0` is not the rejection path. | `InventoryServerSaveFailed 0x00A0`; WireMCP gate-verify | | AP-65 | **PickupEvent (0xF74A) no longer evicts the weenie from `ClientObjectTable`** — only `DeleteObject (0xF747)` evicts, matching the retail `object_table`-vs-`weenie_object_table` split. An item another player picks up near you (only ever gets `PickupEvent`, never `DeleteObject`) lingers as a data-only entry (`ContainerId 0`, not in any view) until teleport/relog `Clear()`. | `src/AcDream.Core.Net/ObjectTableWiring.cs` (EntityDeleted handler); `src/AcDream.Core.Net/WorldSession.cs` (PickupEvent branch) | The weenie entry for nearby pickups is a harmless data ghost — no UI shows it (no container, not wielded). Retail evicts it from `weenie_object_table` when the object fully leaves interest range via `DeleteObject`; acdream defers to teleport/relog clear. | Slight memory growth in long sessions if many world items are picked up by other players near you; item data ghosts cannot cause functional issues because no UI queries `ContainerId 0`. | `CACObjectMaint::DeleteObject` / `SmartBox::HandleDeleteObject`; ACE `Player_Inventory.cs TryDequipObjectWithNetworking` | -| AP-66 | **Empty equip slots show a generic frame (Slice 1) instead of the retail doll-backed transparent look** — retail's slot-view leaves empty armor slots transparent with the live 3-D doll body behind them; Slice 1 has no doll yet, so empty slots render a visible frame (`0x06004D20`, the inventory grid's empty square) so every position is seen + usable. The "figure" in the paperdoll is the doll, NOT a per-slot silhouette. | `src/AcDream.App/UI/Layout/PaperdollController.cs` (`emptySlotSprite`); `src/AcDream.App/Rendering/GameWindow.cs` (PaperdollController.Bind) | Retired in Slice 2 when the doll `UiViewport` (`0x100001D5`) renders behind the slots and the empty slots flip to transparent (`EmptySprite=0`). | Empty equip slots look like plain framed squares instead of revealing the character body — cosmetic, pending Slice 2's doll viewport. | `gmPaperDollUI` init `SetVisible(0)` per slot; user retail screenshots (slot-view) | +| AP-66 | **Empty equip slots paint a frame sprite (`EmptySprite` 0x06004D20), faithfulness vs retail's empty-slot art unverified** — Slice 2 shipped the doll `UiViewport` (0x100001D5) + the Slots toggle (doll-view ↔ slot-view, decomp 175674-175706), so empty ARMOR slots are now hidden in doll-view (the 3-D body shows instead). The always-visible non-armor equip slots (and armor slots in slot-view) still paint a frame when empty. | `src/AcDream.App/UI/Layout/PaperdollController.cs:99` | The doll + toggle are faithful (decomp-cited); painting a slot frame on empty positions is plausibly retail (the outlines guide drops), but is not pixel-verified against retail's doll-view. | Empty equip slots may show a framed square where retail shows a different empty treatment — cosmetic. | `gmPaperDollUI::ListenToElementMessage` 175674-175706; user retail screenshots | +| AP-67 | **Paperdoll doll is rendered to an off-screen FBO and blitted as a 2-D sprite (RTT), not retail's in-cell `CreatureMode::Render`** — retail adds the doll to `m_pPaperDoll->creature_mode_objects` and draws it into the UI's creature cell during the frame; acdream renders the re-dressed clone into a private framebuffer (`PaperdollViewportRenderer`, sealed in a `GLStateScope`), then the `UiViewport` widget blits the color texture. | `src/AcDream.App/Rendering/PaperdollViewportRenderer.cs`; `src/AcDream.App/UI/UiViewport.cs` | Architectural adaptation: acdream's modern bindless/MDI world pipeline can't cheaply render one creature into a UI cell mid-pass; the RTT seam reuses `WbDrawDispatcher` with the retail camera/light/pose/heading so the pixels match. No visual difference intended. | An FBO-format / lighting-UBO-overwrite / blit-V-flip bug shows as a doll that's mis-lit, clipped, or upside-down vs retail — cosmetic, confined to the viewport. | retail `CreatureMode::Render` 0x004529d0; `RedressCreature` 0x004a3bc0 | +| AP-68 | **Per-race paperdoll pose (`gmPaperDollUI::UpdateForRace`) not implemented** — the ctor-default pose animation `0x030003C0` is applied for ALL body types; retail's `UpdateForRace` (decomp 174129) can override `m_didAnimation` per race. | `src/AcDream.App/Rendering/GameWindow.cs` (`ResolvePaperdollPoseDid`) | cdb-confirmed `UpdateForRace` does NOT fire for Horan, so the ctor default 0x030003C0 is authoritative for the gate character; other races/genders may pose differently. | A non-default-race character could hold the wrong stance in the doll — cosmetic. | `gmPaperDollUI::UpdateForRace` decomp 174129; cdb trace 2026-06-25 | --- diff --git a/src/AcDream.App/Rendering/DollCamera.cs b/src/AcDream.App/Rendering/DollCamera.cs index c1616bfe..53a164ea 100644 --- a/src/AcDream.App/Rendering/DollCamera.cs +++ b/src/AcDream.App/Rendering/DollCamera.cs @@ -1,35 +1,46 @@ +using System; using System.Numerics; namespace AcDream.App.Rendering; /// -/// Fixed camera for the paperdoll mini-scene. Derived from gmPaperDollUI::PostInit -/// (decomp lines 175521–175527: eye offset ~(0.12, -2.4, 0.88) about the origin), but with the -/// look-at raised to mid-body and the camera pulled back after the first visual gate: the doll's -/// model origin is at the FEET (z=0), so aiming at the origin framed only the lower legs. We aim -/// at ~0.95 m (a human's vertical centre) and stand back ~3.7 m so the whole ~1.9 m figure fits. -/// AC up-axis = +Z. +/// Fixed camera for the paperdoll mini-scene — retail-exact, ported from the gmPaperDollUI viewport +/// setup (decomp 0x004a5a39–0x004a5a69). The viewport (element 0x100001d5) is configured by +/// UIElement_Viewport::SetCamera(position, direction) with: +/// +/// position = (0.12, −2.4, 0.88) [hex 0x3df5c28f, 0xc019999a, 0x3f6147ae] +/// direction = (0, 0, 0) ⇒ CreatureMode::SetCameraDirection resets the view frame to +/// IDENTITY (euler_set_rotate(0,0,0) then rotate(0,0,0)), so the camera looks +/// straight down +Y with +Z up — NO yaw, NO pitch. +/// +/// The doll is framed purely by camera POSITION + FOV, NOT by aiming at the body: at distance 2.4 with +/// a π/4 (45°) vertical FOV the visible vertical band is z≈[−0.11, 1.87], which covers the whole ~1.6 m +/// figure even though the model origin sits at the FEET (z=0). FOV π/4 is CreatureMode's default +/// m_fFOVRadians (ctor 0x004543cf, hex 0x3f490fdb); default ambient is (0.3,0.3,0.3); the +/// paperdoll uses UseSharpMode (not SmartboxFOV) so Render::SetFOVRad(m_fFOVRadians) applies. /// -/// Uses the same / -/// convention as -/// so the doll's triangle winding and back-face -/// culling match the world render pass. +/// An earlier hand-tune aimed the camera at mid-body to "fit the figure", which introduced a +/// spurious yaw (Target.x ≠ Eye.x) that rotated the view and turned the doll's face away from the +/// viewer. This restores retail's zero-yaw frame, where full-body framing comes from the eye height + +/// FOV, not from aiming. /// -/// Exact per-race camera framing (UpdateForRace) is deferred polish. +/// Uses the same / +/// convention as so the doll's triangle winding + back-face culling match the +/// world render pass. AC up-axis = +Z. /// public sealed class DollCamera : ICamera { - // Body centre height (metres) the camera aims at — model origin is at the feet (z=0). - private const float BodyCentreZ = 0.95f; - private static readonly Vector3 Eye = new(0.12f, -3.7f, BodyCentreZ); - private static readonly Vector3 Target = new(0f, 0f, BodyCentreZ); + // Retail paperdoll camera origin (decomp 0x004a5a51–0x004a5a61). + private static readonly Vector3 Eye = new(0.12f, -2.4f, 0.88f); + // Identity view orientation ⇒ look straight down +Y (no yaw/pitch). Target = Eye + (0,1,0). + private static readonly Vector3 Target = new(0.12f, -1.4f, 0.88f); private static readonly Vector3 Up = Vector3.UnitZ; // AC up-axis = +Z, same as ChaseCamera - /// Vertical field of view in radians. ~34° default; tune at the visual gate. - public float FovRadians { get; set; } = 0.6f; + /// Vertical field of view — retail CreatureMode default m_fFOVRadians = π/4 (45°). + public float FovRadians { get; set; } = MathF.PI / 4f; public float Near { get; set; } = 0.1f; // same near plane as ChaseCamera / retail znear - public float Far { get; set; } = 50f; // doll scene is small; 50 m is ample + public float Far { get; set; } = 50f; // doll scene is small; 50 m is ample public float Aspect { get; set; } = 1f; /// diff --git a/src/AcDream.App/Rendering/DollEntityBuilder.cs b/src/AcDream.App/Rendering/DollEntityBuilder.cs index 3dee4351..2b344120 100644 --- a/src/AcDream.App/Rendering/DollEntityBuilder.cs +++ b/src/AcDream.App/Rendering/DollEntityBuilder.cs @@ -45,9 +45,13 @@ public static class DollEntityBuilder /// public const uint DollRenderId = 0xDA11_D012u; - // retail set_heading: 191.367905° about +Z, expressed as a Quaternion - // (axis-angle, axis = (0,0,1), θ = 191.367905° in radians). - private static readonly float _headingRad = 191.367905f * (MathF.PI / 180f); + // retail RedressCreature: CPhysicsObj::set_heading(191.367905°) (decomp 0x004a3c0a). Frame::set_heading(h) + // (decomp 0x00535e40) builds the facing vector as (sin h°, cos h°, 0): at h=0 the creature faces +Y (AC + // North), the heading increasing CLOCKWISE toward +X. We rotate the doll's default +Y-forward body about + // +Z; System.Numerics rotates +Y → (−sin θ, cos θ), so to land on retail's (sin h, cos h) the angle is + // NEGATED (θ = −h). Using +h mirrors the X-lean (~22° off → the face reads as turned away from the viewer). + private const float _headingDegrees = 191.367905f; + private static readonly float _headingRad = -_headingDegrees * (MathF.PI / 180f); private static readonly Quaternion _dollRotation = Quaternion.CreateFromAxisAngle(new Vector3(0f, 0f, 1f), _headingRad); diff --git a/src/AcDream.App/Rendering/GameWindow.cs b/src/AcDream.App/Rendering/GameWindow.cs index c36f3d1b..c95bace1 100644 --- a/src/AcDream.App/Rendering/GameWindow.cs +++ b/src/AcDream.App/Rendering/GameWindow.cs @@ -3816,13 +3816,82 @@ public sealed class GameWindow : IDisposable foreach (var p in pe.PartOverrides) parts.Add((p.PartIndex, p.GfxObjId)); } - var meshRefsCopy = new List(pe.MeshRefs); // frozen-pose snapshot + var meshRefsCopy = new List(pe.MeshRefs); // dressed parts (player's live frame) var doll = AcDream.App.Rendering.DollEntityBuilder.Build( pe.SourceGfxObjOrSetupId, meshRefsCopy, basePal, subs, parts); + ApplyPaperdollPose(doll, pe.SourceGfxObjOrSetupId); // re-pose into the paperdoll "posing" stance _paperdollViewportRenderer.SetDoll(doll); return true; } + /// + /// Resolve the paperdoll "posing" stance DID (the model pose — left leg back) exactly as retail: + /// gmPaperDollUI ctor (decomp 174243) sets m_didAnimation = DBObj::GetDIDByEnum(0x10000005, 7), + /// which is DBCache::GetDIDFromEnumStatic (decomp 20380) = master[MasterMapId][0x10000005] + /// → submap 0x25000009 → key 7. (Icon effects use keys 1-6 of the same submap; key 7 is the + /// paperdoll pose.) Per-race UpdateForRace override deferred — the ctor default applies to all + /// body-types for now. Returns 0 if the chain can't resolve. + /// + private uint ResolvePaperdollPoseDid() + { + var dats = _dats; + if (dats is null) return 0u; + uint masterDid = (uint)dats.Portal.Header.MasterMapId; + if (masterDid == 0) return 0u; + if (!dats.Portal.TryGet(masterDid, out var master)) return 0u; + // DBCache::GetDIDFromEnum (decomp 20380) resolves master[arg4] → submap, then submap[arg3]. + // GetDIDFromEnumStatic(0x10000005, 7) ⇒ arg3=0x10000005, arg4=7 ⇒ master[7] → submap, submap[0x10000005]. + if (!master.ClientEnumToID.TryGetValue(7u, out var subDid)) return 0u; // master-level key = 7 + if (!dats.Portal.TryGet(subDid, out var sub)) return 0u; + return sub.ClientEnumToID.TryGetValue(0x10000005u, out var did) ? did : 0u; // submap index = 0x10000005 + } + + /// + /// Re-pose the doll's already-dressed parts into the paperdoll "posing" stance — the C# analog of + /// retail set_sequence_animation(doll, m_didAnimation, …). Keeps each cloned part's GfxObjId + + /// surface overrides (the dressed appearance), but replaces its transform with the pose animation's + /// frame-0 per-part transform, using the same Scale·Rotate·Translate composition as the per-frame + /// animation tick (, GameWindow.cs ~9999). Static (the pose is fixed). If the + /// DID does not resolve to an Animation, the doll keeps its cloned pose (no regression) — the log + /// line surfaces what resolved so the pose is verified, not guessed. + /// + private void ApplyPaperdollPose(AcDream.Core.World.WorldEntity doll, uint setupId) + { + var dats = _dats; + if (dats is null) return; + // Retail's paperdoll doll is STATIC — it holds the pose animation's frame, it does NOT loop. + _animatedEntities.Remove(doll.Id); + // poseDID is cdb-CONFIRMED = 0x030003C0 (== retail gmPaperDollUI m_didAnimation for Horan; UpdateForRace + // did not override). Crash guard: only load a 0x03xxxxxx (Animation) DID (a non-animation id parses a + // garbage frame count → OOM). + uint poseDid = ResolvePaperdollPoseDid(); + if ((poseDid >> 24) != 0x03u) return; + var anim = dats.Get(poseDid); + var setup = dats.Get(setupId); + if (anim is null || setup is null || anim.PartFrames.Count == 0) return; + + // Retail plays the pose animation once and HOLDS the last frame (set_sequence_animation framerate=0, + // RedressCreature decomp 0x004a3c22). For 0x030003C0 the animation has only two distinct keyframes — + // frame 0 (a transitional, raised/bent arm) and frames 1..N (all byte-identical: the settled stance, + // arms down + one leg back) — verified by dumping the dat. The held pose is therefore the last frame. + int frameIdx = anim.PartFrames.Count - 1; + var frame = anim.PartFrames[frameIdx]; + var src = doll.MeshRefs; + var reposed = new List(src.Count); + for (int i = 0; i < src.Count; i++) + { + var scale = i < setup.DefaultScale.Count ? setup.DefaultScale[i] : System.Numerics.Vector3.One; + System.Numerics.Vector3 origin = System.Numerics.Vector3.Zero; + System.Numerics.Quaternion orient = System.Numerics.Quaternion.Identity; + if (i < frame.Frames.Count) { origin = frame.Frames[i].Origin; orient = frame.Frames[i].Orientation; } + var transform = System.Numerics.Matrix4x4.CreateScale(scale) + * System.Numerics.Matrix4x4.CreateFromQuaternion(orient) + * System.Numerics.Matrix4x4.CreateTranslation(origin); + reposed.Add(new AcDream.Core.World.MeshRef(src[i].GfxObjId, transform) { SurfaceOverrides = src[i].SurfaceOverrides }); + } + doll.MeshRefs = reposed; + } + /// /// Commit B 2026-04-29 — register a live (server-spawned) entity into /// the as a single collision body. diff --git a/src/AcDream.App/Rendering/PaperdollViewportRenderer.cs b/src/AcDream.App/Rendering/PaperdollViewportRenderer.cs index d57a8200..0a3f83bd 100644 --- a/src/AcDream.App/Rendering/PaperdollViewportRenderer.cs +++ b/src/AcDream.App/Rendering/PaperdollViewportRenderer.cs @@ -132,7 +132,7 @@ public sealed unsafe class PaperdollViewportRenderer : IUiViewportRenderer, IDis ColorAndIntensity = new Vector4(1f, 1f, 1f, 2.0f), // white @ retail intensity 2.0 ConeAngleEtc = Vector4.Zero, }, - CellAmbient = new Vector4(0.40f, 0.40f, 0.40f, 1f), // 1 active light; ambient tunable at the gate + CellAmbient = new Vector4(0.30f, 0.30f, 0.30f, 1f), // retail CreatureMode default ambient (ctor 0x004543cf = 0.3,0.3,0.3) FogParams = new Vector4(1e9f, 1e9f, 0f, 0f), // fog pushed to infinity = no fog on the doll FogColor = Vector4.Zero, CameraAndTime = new Vector4(0.12f, -2.4f, 0.88f, 0f), // camera world pos (matches DollCamera eye) diff --git a/src/AcDream.App/UI/Layout/PaperdollController.cs b/src/AcDream.App/UI/Layout/PaperdollController.cs index 4d454270..28841b0d 100644 --- a/src/AcDream.App/UI/Layout/PaperdollController.cs +++ b/src/AcDream.App/UI/Layout/PaperdollController.cs @@ -132,14 +132,6 @@ public sealed class PaperdollController : IItemListDragHandler } } - // Slice 2 diagnostic (temporary): confirm the importer surfaced the toggle button + doll - // viewport, and WHERE the button sits. Stripped once the toggle is visually confirmed. - Console.WriteLine($"[Slice2-paperdoll] armorSlots={_armorSlots.Count}/9 " + - $"viewport={_dollViewport?.GetType().Name ?? "MISSING"} " + - $"slotsButton={slotsBtnEl?.GetType().Name ?? "MISSING"} " + - $"btnRect=({slotsBtnEl?.Left ?? -1},{slotsBtnEl?.Top ?? -1},{slotsBtnEl?.Width ?? -1},{slotsBtnEl?.Height ?? -1}) " + - $"btnVisible={slotsBtnEl?.Visible.ToString() ?? "n/a"}"); - ApplyView(); // initial state = doll-view (armor slots hidden) Populate(); diff --git a/tests/AcDream.App.Tests/Rendering/DollCameraTests.cs b/tests/AcDream.App.Tests/Rendering/DollCameraTests.cs index 6a82af78..134a4c5e 100644 --- a/tests/AcDream.App.Tests/Rendering/DollCameraTests.cs +++ b/tests/AcDream.App.Tests/Rendering/DollCameraTests.cs @@ -7,16 +7,28 @@ namespace AcDream.App.Tests.Rendering; public class DollCameraTests { [Fact] - public void Eye_position_frames_the_doll_from_the_front() + public void Eye_position_is_retail_verbatim() { var cam = new DollCamera { Aspect = 100f / 214f }; Assert.True(Matrix4x4.Invert(cam.View, out var inv)); var eye = inv.Translation; - // Tuned at the visual gate: aim at mid-body (z≈0.95) and stand back ~3.7 m so the whole - // figure fits (model origin is at the feet, so aiming at the origin framed only the legs). + // Retail UIElement_Viewport::SetCamera position (decomp 0x004a5a51-0x004a5a61). Assert.Equal(0.12f, eye.X, 3); - Assert.Equal(-3.7f, eye.Y, 3); - Assert.Equal(0.95f, eye.Z, 3); + Assert.Equal(-2.4f, eye.Y, 3); + Assert.Equal(0.88f, eye.Z, 3); + } + + [Fact] + public void Look_axis_is_pure_plus_y_zero_yaw() + { + // retail SetCameraDirection(0,0,0) ⇒ IDENTITY view frame ⇒ camera looks straight down +Y. + // System.Numerics CreateLookAt: forward = -(M13, M23, M33). Any yaw (Target.x≠Eye.x) would put a + // non-zero X here and turn the doll's face away — the bug this guards against. + var cam = new DollCamera { Aspect = 100f / 214f }; + var forward = -new Vector3(cam.View.M13, cam.View.M23, cam.View.M33); + Assert.Equal(0f, forward.X, 4); + Assert.Equal(1f, forward.Y, 4); + Assert.Equal(0f, forward.Z, 4); } [Fact] diff --git a/tools/cdb/paperdoll-pose.cdb b/tools/cdb/paperdoll-pose.cdb new file mode 100644 index 00000000..a5a14b13 --- /dev/null +++ b/tools/cdb/paperdoll-pose.cdb @@ -0,0 +1,9 @@ +.logopen C:\Users\erikn\source\repos\acdream\.claude\worktrees\hopeful-maxwell-214a12\paperdoll-pose-v2.log +.sympath C:\Users\erikn\source\repos\acdream\refs +.symopt+ 0x40 +.reload /f acclient.exe +.echo ==== PAPERDOLL POSE TRACE v2 (reads m_didAnimation VALUE at +0x66c) ARMED ==== +r $t0 = 0 +bp acclient!gmPaperDollUI::RedressCreature ".echo === RedressCreature: poseDID value ===; ? poi(@ecx+0x66c); dt acclient!gmPaperDollUI @ecx m_didAnimation.id; r $t0 = @$t0 + 1; .if (@$t0 >= 3) { .echo ==== DETACHING (qd) ====; qd } .else { gc }" +bp acclient!gmPaperDollUI::UpdateForRace ".echo === UpdateForRace: bodyType then poseDID value ===; ? poi(@esp+4); ? poi(@ecx+0x66c); r $t0 = @$t0 + 1; .if (@$t0 >= 3) { .echo ==== DETACHING (qd) ====; qd } .else { gc }" +g From 4d65a683f41d3b9017fd42ca2e7cc13a1bd60893 Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 25 Jun 2026 13:17:27 +0200 Subject: [PATCH 13/51] =?UTF-8?q?docs(D.2b):=20roadmap=20=E2=80=94=20Sub-p?= =?UTF-8?q?hase=20C=20(paperdoll=20doll=20+=20toggle)=20shipped?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bring the D.5 sub-phase ledger current: mark B-Wire, inventory window finish, empty-slot art, container-switching, B-Drag, and Sub-phase C (Slice 1 equip slots + Slice 2 3-D doll UiViewport + Slots toggle, 8fa66c2) as shipped. Remaining build order = finish the selected-object bar + spell shortcuts + the selection wiring (AP-58). Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/plans/2026-04-11-roadmap.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/plans/2026-04-11-roadmap.md b/docs/plans/2026-04-11-roadmap.md index 28d6c2f7..87afd132 100644 --- a/docs/plans/2026-04-11-roadmap.md +++ b/docs/plans/2026-04-11-roadmap.md @@ -433,7 +433,7 @@ behavior. Estimated 17–26 days focused work, 3–5 weeks calendar. - **D.5 — Core panels.** Attributes (`chunk_00470000.c:FUN_0047ba70`), Skills (same), Paperdoll (`chunk_004A0000.c:FUN_004A5200`), Inventory, Spellbook (`chunk_004C0000.c`), Fellowship, Allegiance. Each uses the port sketches in slice 05. **(Targets `AcDream.UI.Abstractions` — ships with D.2a using ImGui-rendered widgets; reskinned by D.2b.)** The *chat* panel originally listed under D.5 shipped early in Phase I (I.4 input + I.7 combat translator superseded the chat-panel design here); this entry now covers Attributes / Skills / Paperdoll / Inventory / Spellbook / Fellowship / Allegiance only. - **✓ SHIPPED — D.5.1 — Toolbar (action bar).** Shipped 2026-06-16/17 (`30b28c2`→`0e7a083`, branch claude/hopeful-maxwell-214a12). First data-driven *game* panel: `gmToolbarUI` (`LayoutDesc 0x21000016`) — 18 shortcut slots from the persisted `PlayerDescription` SHORTCUT block, real **composited** item icons (opaque type-default underlay via the `EnumIDMap 0x10000004` resolve), **occupancy-gated slot numbers 1–9** (occupied = dark-box peace/war `0x10000042/43`; empty = background `0x1000005e` from cell composite `0x10000341`), **click-to-use** (`ItemHolder::UseObject` → `0x0036`), **peace/war stance** indicator live-wired to `CombatState`, **movable**, and a **chrome frame** (UiNineSlicePanel drawn over content via the new `UiElement.OnDrawAfterChildren` hook). New shared widgets `UiItemSlot` (`UIElement_UIItem` 0x10000032, procedural leaf) + `UiItemList` (`UIElement_ItemList` 0x10000031, factory branch) + `IconComposer` (CPU layered composite). `CreateObject.TryParse` extended to the full ACE-order weenie-header tail to capture `IconId`/`IconOverlay`/`IconUnderlay` → `ItemRepository.EnrichItem` → re-render. Spec/plan `docs/superpowers/{specs,plans}/2026-06-16-d2b-toolbar-phase1*.md`; research drop `docs/research/2026-06-16-*deep-dive.md` + synthesis. Divergence IA-16/IA-17 added. **User-confirmed** (numbers, icons, frame). Per-task spec+code-review throughout. - **✓ SHIPPED — D.5.2 — Stateful item-icon system.** Shipped 2026-06-17/18 (`419c3ac`..`fb288ad`, branch claude/hopeful-maxwell-214a12; **visually verified on a live Coldeve server**). Faithful retail icon composite (`IconData::RenderIcons` @0x0058d180): (1) `UiEffects` bitfield captured from the `CreateObject` weenie header (was discarded) → `ItemInstance.Effects`; (2) `IconComposer.GetIcon` rewritten as a 2-stage composite — Stage 1 = drag icon (base + custom overlay) + the effect treatment, Stage 2 = type-default underlay + custom underlay + drag. The effect treatment ports the **surface overload** of `SurfaceWindow::ReplaceColor` (`0x004415b0`): the textured effect tile (`EnumIDMap 0x10000005` by `LowestSetBit(effects)+1`, fallback `0x21` solid-black) is copied **per-pixel** into the icon's pure-white pixels — magical items take the tile's GRADIENT hue, mundane items go black; (3) `PublicUpdatePropertyInt (0x02CE)` parser + `WorldSession.ObjectIntPropertyUpdated` event + `GameWindow` subscription → `ItemRepository.UpdateIntProperty` → icon re-composites live. **Appraise (`0x00C9`) carries NO icon data** (ACE proof: `Icon`/`IconOverlay`/`IconUnderlay`/`UiEffects` all lack `[AssessmentProperty]`) — dropped as a no-op. **Two visual-verification fixes landed after the subagent build:** the `effects==0` recolor MUST run (mundane white edges → black, `40c97a5`) and the tint is a per-pixel GRADIENT not a flat color (the surface overload, `fb288ad`) — both confirmed via clean Ghidra + named decomp. Divergence: IA-16 retired; IA-18 (per-pixel surface-copy anti-regression) + AP-45 (0x02CE sequence) added; **AP-43/AP-44 retired by the visual fixes**. Spec/plan/research: `docs/superpowers/{specs,plans}/2026-06-17-d2b-stateful-icon*.md`, `docs/research/2026-06-17-stateful-icon-RESOLVED.md`. -- **D.5 remaining — sub-phase ledger.** D.5.1 (toolbar + the `UiItemSlot`/`UiItemList`/`IconComposer` spine) ✅, D.5.2 (stateful icons) ✅, D.5.4 (client object/item data model) ✅, D.2b-B window manager (`abbd97b`) ✅, D.2b-B B-Grid (inventory sub-window mount + `UiItemList` grid) ✅, D.2b-B B-Controller (inventory population + burden meter + captions, `03fbf44`; **visually confirmed 2026-06-21** — two render bugs fixed at the gate `417b137`: backdrop wash-out [a #145 continuation — mounted sub-window slots must keep their own frame ZLevel, not inherit the base root's 1000] + captions [drive the host UiText directly]) ✅ are shipped. Build order from here: **(b) B-Wire (parse `EncumbranceVal`/PropertyInt 5 to retire AP-48) → (c) Sub-phase C (paperdoll `UiItemSlot` + `UiViewport` 3D doll) → (d) finish the bar: D.5.3 remaining (mana meter, stack entry/slider) + spell shortcuts.** Each ☐ below gets its own brainstorm → spec → plan. +- **D.5 remaining — sub-phase ledger.** D.5.1 (toolbar + the `UiItemSlot`/`UiItemList`/`IconComposer` spine) ✅, D.5.2 (stateful icons) ✅, D.5.4 (client object/item data model) ✅, D.2b-B window manager (`abbd97b`) ✅, D.2b-B B-Grid (inventory sub-window mount + `UiItemList` grid) ✅, D.2b-B B-Controller (inventory population + burden meter + captions, `03fbf44`; **visually confirmed 2026-06-21** — two render bugs fixed at the gate `417b137`: backdrop wash-out [a #145 continuation — mounted sub-window slots must keep their own frame ZLevel, not inherit the base root's 1000] + captions [drive the host UiText directly]) ✅, D.2b-B B-Wire (`EncumbranceVal`/PropertyInt 5 wire delivery, AP-48/49 retired) ✅, inventory window finish Stage 1 (scroll/frame/vertical-resize/102-slot grid) ✅, empty-slot art ✅, container-switching + open/selected indicators + main-pack icon + per-bag capacity bar ✅, B-Drag (inventory drag-drop / item moving) ✅, and **Sub-phase C (paperdoll): Slice 1 equip slots ✅ + Slice 2 3-D doll `UiViewport` (Type 0xD via the `IUiViewportRenderer` RTT seam) + Slots toggle ✅ (visually confirmed 2026-06-25, `8fa66c2` — pose/camera/heading all retail-verbatim)** are shipped. Build order from here: **(d) finish the bar — D.5.3 remaining (selected-object meter/mana, stack entry/slider) + spell shortcuts + the selection→selected-object-bar wiring (AP-58); ISSUES #146/#147/#148.** Each ☐ below gets its own brainstorm → spec → plan. - **✓ SHIPPED — D.5.4 — Client object/item data model (foundation).** Shipped 2026-06-18 (`b506f53`..`a33e897`, 11 commits). Renamed `ItemRepository`→`ClientObjectTable` / `ItemInstance`→`ClientObject`; broadened the table to hold EVERY server object (retail `weenie_object_table` shape). `CreateObject` is now the canonical merge-upsert (`ClientObjectTable.Ingest`, retail `SetWeenieDesc` semantics) via a new Core.Net `ObjectTableWiring` (off GameWindow); `DeleteObject` evicts; `PlayerDescription` is a membership manifest (`RecordMembership`); live container-membership index (`GetContents`, retail `object_inventory_table`). `_liveEntityInfoByGuid` retired (selection/describe resolve from the one table). Root fix: the old enrich-existing-only `EnrichItem` dropped `CreateObject`s for items with no `PlayerDescription` stub — live-Coldeve 4/6 hotbar slots blank; items are now created, not dropped. **Crux resolved:** retail is TWO tables (`object_table` + `weenie_object_table`), NOT one — acdream's `WorldEntity` (3D system) + `ClientObjectTable` (data/UI) split was already architecturally faithful; the fix was the ingestion path, not a table unification. 2671 tests green. - **☐ D.5.3 — Toolbar selected-object display (issue #140) + spell shortcuts.** Wire the B.4 `WorldPicker`/selection state → the two hidden meters (`0x100001A1` health / `0x100001A2` mana) + the stack slider (`0x100001A4`) + the object-name line, so the bar shows the player's currently-selected world object. Plus **spell shortcuts** — pinned *spells* (vs items) don't render their glyphs yet (`ToolbarController.Populate` skips `ObjectGuid==0`). Together these finish "the bar." (Click-to-use + the peace/war stance indicator landed in D.5.1.) - **☐ D.5.5+ — Core panels.** Inventory (`gmInventoryUI`/`gmBackpackUI`), equipment/paperdoll (`gmPaperDollUI`/`gm3DItemsUI` + the `UiViewport` 3D doll), vendor, trade, spellbook. Research drop done (`docs/research/2026-06-16-*`). Depends on **D.5.4** (data model) + the item-slot/list/icon spine (D.5.1/D.5.2) + the **window manager** (Plan 2: open/close/z-order/persist + faithful grip/dragbar drag-resize) + the drag-drop spine wired (`UiRoot` has the chain; the per-cell accept/drop hooks are still stubs in `UiField`). Also deferred from D.5.1: drag/reorder + the `AddShortcut`/`RemoveShortcut` mutate wire. From d607b55e616a5e587569b228302ac7cc95964eda Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 25 Jun 2026 14:05:31 +0200 Subject: [PATCH 14/51] =?UTF-8?q?docs(studio):=20design=20spec=20=E2=80=94?= =?UTF-8?q?=20acdream=20UI=20Studio=20(live=20previewer=20+=20inspector)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A standalone dev tool that renders any acdream UI panel through the PRODUCTION renderer (UiHost/LayoutImporter/dat-sprite path + the WB mesh pipeline for the 3-D doll), with an ImGui click-to-inspect inspector, sample-data fixtures, markup hot-reload + write-back, and render-config sliders. Collapses the edit→build→login→F12→eyeball loop into edit→glance. Full v1 scope (user pre-approved): both sources (dat LayoutDesc id + markup file), full fixtures, editable inspector + doll-camera sliders, live doll. Seven isolated units; the highest-risk step (extracting a shared RenderBootstrap from GameWindow.OnLoad) is sequenced first behind a "game still renders" gate, with a studio-local-duplicate fallback. The drag-drop designer is deferred to phase 2. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../2026-06-25-ui-studio-previewer-design.md | 195 ++++++++++++++++++ 1 file changed, 195 insertions(+) create mode 100644 docs/superpowers/specs/2026-06-25-ui-studio-previewer-design.md diff --git a/docs/superpowers/specs/2026-06-25-ui-studio-previewer-design.md b/docs/superpowers/specs/2026-06-25-ui-studio-previewer-design.md new file mode 100644 index 00000000..2dcebd28 --- /dev/null +++ b/docs/superpowers/specs/2026-06-25-ui-studio-previewer-design.md @@ -0,0 +1,195 @@ +# acdream UI Studio — design (live previewer + inspector) + +- Date: 2026-06-25 +- Status: approved (user pre-approved full v1 scope 2026-06-25) +- Branch: claude/hopeful-maxwell-214a12 +- Supersedes/foundation for: the deferred phase-2 drag-drop *designer* + +## Goal + +A standalone, fast-booting dev tool that renders **any acdream UI panel** through the +**production renderer**, with a click-to-inspect element inspector, sample-data fixtures, +markup hot-reload + write-back editing, and render-config sliders. + +It collapses the panel-iteration loop — today `edit → build → login to ACE → wait ~8s → +F12 → eyeball vs retail → close → repeat` (~30–60 s/iteration) — into `edit → glance` +(~1 s). Everything we did on the paperdoll this session (confirming the pose, framing the +camera, catching the mirrored heading) would have been a few clicks here instead of a dozen +relaunches. + +**Fidelity is the whole point.** The previewed panel is drawn by the SAME +`UiHost` / `LayoutImporter` / `DatWidgetFactory` / dat-sprite path that ships, so what you +see is what the game renders. This is the decisive reason NOT to build the tool in a +separate stack (Godot/HTML) and NOT to rely on the existing `render-vitals-mockup` (a +separate CPU `SurfaceDecoder` composite that can drift from the GL path). + +## Scope — v1 is the maximum capability + +IN: +- Load a panel from EITHER a dat `LayoutDesc` id OR a markup file (`MarkupDocument`). +- Render via the production GL `UiHost` (2-D panels) AND the full WB mesh pipeline (the + 3-D paperdoll **doll**). +- **Sample-data fixtures** so data-bound panels look populated: canned inventory items, + sample vital values, a dressed sample creature for the doll. +- **Inspector (ImGui):** element tree, click-to-inspect, read-only props + (id / Type / rect / anchors / state-sprites / ZOrder), **editable** markup props + (write back to the file), and **render-config sliders** (the doll camera eye / FOV / + heading — values that live in code, not markup). +- **Hot-reload:** file-watch the markup source; reload-on-demand (id picker / reload button) + for dat layouts. + +OUT (phase 2): the drag-drop visual **designer** (compose *new* layouts on a canvas and +emit markup). The previewer is the foundation that phase sits on. Its natural home is the +plugin-UI story, not the retail-panel work. + +Not faithfulness-gated: this is a DEV tool. The previewed *panels* are faithful (same +renderer); the tool *chrome* (the ImGui inspector) is dev-only. No +`retail-divergence-register` rows are created by this work. + +## Architecture + +Seven isolated, single-purpose units. The previewed panel is drawn by the production +renderer; the tool chrome is **ImGui** (already in `AcDream.App` for the `ACDREAM_DEVTOOLS` +overlay — ideal for a tree / sliders / editable fields at near-zero cost). + +``` +Program.cs ──"ui-studio"──▶ StudioWindow + │ owns: Silk window, ImGui ctx, frame loop + ▼ + RenderBootstrap.Create(gl, opts) ──▶ RenderStack + │ (GL + DatCollection + TextureCache + UiHost + │ + ObjectMeshManager + WbDrawDispatcher + lighting UBO) + │ ALSO consumed by GameWindow (shared = de-tangles OnLoad) + ┌─────────────────────┼───────────────────────────────┐ + ▼ ▼ ▼ + LayoutSource FixtureProvider StudioInspector (ImGui) + dat id | markup sample item table / vitals / tree · props(read+edit) · + → UiElement tree dressed creature → controllers render sliders · canvas(FBO) + │ │ click → HitTestTopDown + └────────── HotReloadWatcher (markup) ─────────────────┘ + MarkupWriteBack (edited props → file) +``` + +### 1. `RenderBootstrap` — NEW, `src/AcDream.App/Rendering/` +Extracts the **render-stack construction** currently tangled inside `GameWindow.OnLoad` +(the GL api, dat-dir → `DatCollection`, `TextureCache`, the WB mesh pipeline — +`ObjectMeshManager` / `WbDrawDispatcher` / `SceneLightingUboBinding` — and `UiHost`) into a +reusable unit that BOTH `GameWindow` and `StudioWindow` build through. +- Interface: `RenderStack Create(GL gl, RenderBootstrapOptions opts)`; `RenderStack` is a + record of the constructed pieces (dats, textureCache, meshManager, drawDispatcher, + lightingUbo, uiHost, shaderDir). +- `GameWindow.OnLoad` is refactored to consume it — **behavior-preserving**, locked by the + existing App/Core suites + a visual gate that the GAME still renders. +- Highest-risk step → extract the SMALLEST cohesive slice only; do it first, gate it, build + the studio on it second. Fallback if extraction is too entangled: `StudioWindow` builds a + studio-local duplicate of the mesh-pipeline setup (more drift, lower regression risk) — to + be decided at implementation, not assumed away. + +### 2. `StudioWindow` — NEW, `src/AcDream.App/Studio/` +A Silk.NET windowed GL app — the studio entry. Owns the window, the `RenderStack`, the ImGui +context, the inspector, the hot-reload watcher, and the per-frame loop. **No** ACE / +world-streaming / physics / movement input. Launched from `Program.cs`: +`AcDream.App ui-studio [--layout 0x21000023 | --markup path.xml]`. Config flows +through `RuntimeOptions` (one env/arg read), per the code-structure rules. + +### 3. `LayoutSource` — NEW, `src/AcDream.App/Studio/` +Loads a panel into a `UiElement` subtree from a dat id (`LayoutImporter.Import`) or a markup +file (`MarkupDocument.Build`). Owns the current source + `Reload()`. +- Interface: `UiElement Load()`, `void Reload()`, `SourceKind Kind`, `string? MarkupPath`, + `uint? LayoutId`, plus a `string? LastError` for the inspector to surface parse failures. + +### 4. `FixtureProvider` — NEW, `src/AcDream.App/Studio/` +Supplies sample data so data-bound panels render populated. A fake `ClientObjectTable` +seeded with a handful of canned items (icon ids + types); sample vital values; a sample +creature (Setup + ObjDesc) for the doll. Maps a known `layoutId` → its real controller +(`VitalsController` / `InventoryController` / `ToolbarController` / `PaperdollController`) +bound to the fixtures — REUSING the production controllers, not re-implementing them. +- Interface: `void Populate(uint layoutId, UiElement root, RenderStack stack)`. Unknown + layout id → no fixture (structural preview only), not an error. + +### 5. `StudioInspector` — NEW, `src/AcDream.App/Studio/` +The ImGui tool chrome, four docked windows: +- **Canvas** — the panel rendered to an FBO (RTT, the `PaperdollViewportRenderer` technique + applied to the whole panel) shown via `ImGui.Image`. Click → map canvas-local coords → + `UiRoot.HitTestTopDown` → select. The FBO route gives a clean dockable IDE layout + + accurate click mapping, and isolates the panel's GL state from ImGui's. +- **Tree** — the live `UiElement` hierarchy with each node's registered Type; select syncs + with the canvas highlight. +- **Properties** — the selected element's id / Type / rect / anchors / state-sprites (with + swatches) / ZOrder. Rect/anchor fields are **editable** (markup source) → applied live + + queued to `MarkupWriteBack`. +- **Render config** — sliders for the doll's `DollCamera` eye / FOV / heading, mutating the + live camera so the doll updates next frame; a "copy values" button emits the literals to + paste into code. + +### 6. `MarkupWriteBack` — NEW, `src/AcDream.App/Studio/` +Serializes an edited element's changed props back to the markup XML file (markup source +only; dat layouts are read-only). v1 = **targeted in-place attribute updates** (find the +element by id, rewrite the changed attribute values), NOT a full tree re-serialize — so +hand-authored formatting/comments survive. + +### 7. `HotReloadWatcher` — NEW, `src/AcDream.App/Studio/` +`FileSystemWatcher` on the markup file → debounced (≈150 ms) reload event → `LayoutSource.Reload` +→ `FixtureProvider.Populate` → re-select the previously-selected element by id when possible. + +## Data flow + +- **Boot:** `StudioWindow` → `RenderBootstrap.Create` → `LayoutSource.Load(initial)` → + `FixtureProvider.Populate` → loop. +- **Frame:** bind panel FBO → `UiHost.Tick` + `Draw` (panel, incl. the doll's own nested + RTT) → unbind → ImGui frame (Canvas image + Tree + Properties + Render-config) → present. +- **Click canvas:** map coords → `HitTestTopDown` → select → Properties shows props. +- **Edit prop:** apply to the live `UiElement` (instant) + (markup) queue write-back. +- **File change:** watcher → `Reload` → `Populate` → re-select by id. +- **Render slider:** mutate `DollCamera` → next frame the doll re-renders. + +## Error handling + +- Bad layout id / unparseable markup → `LayoutSource.LastError` shown in the inspector; the + previous panel stays (or an empty canvas), no crash. +- Missing dats at boot → clear error + exit non-zero. +- Panel build/draw wrapped in try/catch → a thrown panel surfaces its exception text in the + inspector; the tool stays alive (you're often previewing half-broken markup). +- Write-back failure (file locked) → non-fatal inline notice, edit stays applied in-memory. + +## Testing + +- `LayoutSource`: load a known dat id + a markup string → assert the `UiElement` tree shape + (reuse the existing golden-fixture pattern, e.g. `vitals_2100006C.json`). +- `FixtureProvider`: assert the seeded `ClientObjectTable` + vitals shapes. +- `MarkupWriteBack`: round-trip — parse → edit a rect → serialize → re-parse → assert the + changed attribute + that siblings/formatting are untouched. +- `RenderBootstrap`: the existing suites stay green + a manual game visual gate (the refactor + is behavior-preserving). +- Window / ImGui / doll render: manual visual gate — the studio is itself the visual tool. +- Tests live in `tests/AcDream.App.Tests/Studio/`. + +## Build order (staged; each ≈ one subagent chunk + a gate) + +1. **`RenderBootstrap` extraction** — behavior-preserving. GATE: game renders unchanged; + suites green. +2. **`StudioWindow` skeleton + `LayoutSource`(dat id)** — render a 2-D panel to the window. + GATE: `ui-studio --layout 0x2100006C` shows vitals. +3. **`StudioInspector`** — ImGui + canvas-FBO + tree + read-only props + click-to-inspect. + GATE: click an element → see its id/rect/sprites. +4. **`FixtureProvider`** — 2-D panels populated (vitals / toolbar / inventory). GATE: + inventory shows sample items. +5. **Live doll** — `PaperdollViewportRenderer` in the studio + sample creature. GATE: the + paperdoll shows a dressed doll. +6. **Markup source + `HotReloadWatcher`** — GATE: edit a markup file → studio reloads. +7. **Editable markup props + `MarkupWriteBack`** — GATE: edit a rect in the inspector → file + updates → reloads. +8. **Render-config sliders** — GATE: drag the eye/FOV → doll updates live. + +Steps 1–4 deliver the high-value 2-D previewer + inspector + fixtures fast; 5–8 add the doll +and the editing power. The end-state is the full maximum-capability tool. + +## Open risks + +- **`RenderBootstrap` extraction from the tangled `GameWindow.OnLoad`** is the riskiest step. + Mitigation: smallest cohesive slice, behavior-preserving, gated by the game visual + the + suites BEFORE the studio depends on it; documented fallback (studio-local duplicate). +- **`MarkupWriteBack` formatting preservation** — keep v1 to in-place attribute edits, never + a full re-serialize, so hand-authored markup isn't clobbered. +- **ImGui + UiHost GL-state interplay** — the panel renders to its own FBO and ImGui owns the + default framebuffer, so their GL state can't fight (the same seal the paperdoll RTT uses). From f55650fdcd9fca0aa31da4385566dd13bc376284 Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 25 Jun 2026 14:13:27 +0200 Subject: [PATCH 15/51] =?UTF-8?q?docs(studio):=20implementation=20plan=20?= =?UTF-8?q?=E2=80=94=20acdream=20UI=20Studio=20(8=20staged=20tasks)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bite-sized, gated build order: (1) RenderBootstrap [new code, no GameWindow edit → zero game-regression risk], (2) StudioWindow + LayoutSource + ui-studio subcommand, (3) ImGui inspector (canvas FBO + tree + props + click-inspect), (4) FixtureProvider sample data, (5) live 3-D doll, (6) markup + hot-reload, (7) editable props + write-back, (8) doll-camera sliders. Pure-logic units (LayoutSource/FixtureProvider/MarkupWriteBack) unit-tested; GL/window tasks visual-gated. Spec: docs/superpowers/specs/2026-06-25-ui-studio-previewer-design.md. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../plans/2026-06-25-ui-studio-previewer.md | 332 ++++++++++++++++++ 1 file changed, 332 insertions(+) create mode 100644 docs/superpowers/plans/2026-06-25-ui-studio-previewer.md diff --git a/docs/superpowers/plans/2026-06-25-ui-studio-previewer.md b/docs/superpowers/plans/2026-06-25-ui-studio-previewer.md new file mode 100644 index 00000000..3fab83a5 --- /dev/null +++ b/docs/superpowers/plans/2026-06-25-ui-studio-previewer.md @@ -0,0 +1,332 @@ +# acdream UI Studio Implementation Plan + +> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. + +**Goal:** Build a standalone Silk.NET dev tool that renders any acdream UI panel through the production render stack, with an ImGui click-to-inspect inspector, sample-data fixtures, the live 3-D doll, markup hot-reload + write-back, and doll-camera sliders. + +**Architecture:** A new `StudioWindow` (Silk GL app, launched via a `ui-studio` subcommand in `Program.cs`) builds its render stack through a new `RenderBootstrap` (a clean construction of just the subset the studio needs — GL, `DatCollection`, `TextureCache`, the WB mesh pipeline, `UiHost` — leaving `GameWindow` untouched). A `LayoutSource` loads a panel (dat `LayoutDesc` id or markup file) into a `UiElement` tree; a `FixtureProvider` populates it via the production controllers; a `StudioInspector` (ImGui) renders the tool chrome with the panel shown as an FBO image. + +**Tech Stack:** C# .NET 10, Silk.NET (Windowing/Input/OpenGL), ImGui.NET 1.91.6.1 + Silk.NET.OpenGL.Extensions.ImGui 2.23.0 (via the existing `AcDream.UI.ImGui` project), the existing `AcDream.App.UI` retained-mode tree + `LayoutImporter`/`DatWidgetFactory`, `DatReaderWriter`. + +**Spec:** `docs/superpowers/specs/2026-06-25-ui-studio-previewer-design.md` + +**Subagent note (project policy):** implementers are Sonnet and INHERIT CLAUDE.md; they read the cited code themselves. Tasks give the contract, the key code, the files to read, the test, the gate, and the commit message — not every line. GL/window tasks verify via a visual gate (the studio is itself the visual tool); pure-logic tasks (LayoutSource infos, FixtureProvider, MarkupWriteBack) use real unit tests. + +**Branch:** `claude/hopeful-maxwell-214a12`. Commit after every task. Full build (`dotnet build src/AcDream.App/AcDream.App.csproj`) green before any commit; relevant tests green. + +**Launch (for every visual gate):** +```powershell +$env:ACDREAM_DAT_DIR = "$env:USERPROFILE\Documents\Asheron's Call" +dotnet run --project src\AcDream.App\AcDream.App.csproj --no-build -c Debug -- ui-studio "$env:USERPROFILE\Documents\Asheron's Call" --layout 0x2100006C +``` +Do NOT auto-kill a running client; if a rebuild is locked, ask the user to close it ([[feedback_dont_kill_clients_before_launch]]). + +--- + +## File structure + +New, all under `src/AcDream.App/`: +- `Rendering/RenderBootstrap.cs` — `RenderStack Create(GL, RenderBootstrapOptions)`; the shared render-stack builder + the `RenderStack` record. +- `Studio/StudioWindow.cs` — the Silk window + frame loop + owns the stack/inspector/sources. +- `Studio/StudioOptions.cs` — parsed `ui-studio` args (layout id | markup path | dat dir). +- `Studio/LayoutSource.cs` — load/reload a panel from a dat id or a markup file. +- `Studio/FixtureProvider.cs` — sample data + per-layout controller binding. +- `Studio/SampleData.cs` — the canned items / vitals / creature fixture constants. +- `Studio/StudioInspector.cs` — the ImGui chrome (canvas/tree/properties/render-config). +- `Studio/PanelFbo.cs` — render-to-texture target for the previewed panel (mirrors `PaperdollViewportRenderer`'s FBO). +- `Studio/MarkupWriteBack.cs` — targeted in-place markup attribute edits. +- `Studio/HotReloadWatcher.cs` — debounced `FileSystemWatcher`. +- Modify: `src/AcDream.App/Program.cs` — `ui-studio` subcommand dispatch. + +Tests under `tests/AcDream.App.Tests/Studio/`: +- `LayoutSourceTests.cs`, `FixtureProviderTests.cs`, `MarkupWriteBackTests.cs`. + +--- + +## Task 1: RenderBootstrap (shared render stack) + +**Files:** +- Create: `src/AcDream.App/Rendering/RenderBootstrap.cs` +- Read first: `src/AcDream.App/Rendering/GameWindow.cs:1026-1815,2313-2408` (the construction order), `src/AcDream.App/UI/UiHost.cs`, `src/AcDream.App/Rendering/Wb/WbDrawDispatcher.cs` (ctor), `src/AcDream.App/UI/Layout/UiDatFont.cs`. + +**Contract:** +```csharp +namespace AcDream.App.Rendering; + +public sealed record RenderStack( + GL Gl, + DatReaderWriter.DatCollection Dats, + string ShaderDir, + BindlessSupport Bindless, + TextureCache TextureCache, + Shader MeshShader, + Wb.WbMeshAdapter MeshAdapter, + Wb.EntitySpawnAdapter EntitySpawnAdapter, + Wb.WbDrawDispatcher DrawDispatcher, + SceneLightingUboBinding LightingUbo, + AcDream.App.UI.UiHost UiHost, + AcDream.App.UI.Layout.UiDatFont? VitalsDatFont) +{ + /// sprite id (0x06xxxxxx) → (GL handle, width, height) for the importer's resolve func. + public (uint, int, int) ResolveChrome(uint spriteId) + => TextureCache.GetOrUploadRenderSurface(spriteId, out var w, out var h) is var h2 + ? (h2, w, h) : (0u, 0, 0); // match GameWindow.ResolveChrome — read its exact body first +} + +public sealed record RenderBootstrapOptions(QualitySettings Quality); + +public static class RenderBootstrap +{ + /// Build the subset of the production render stack the UI Studio needs — same classes, + /// same construction order as GameWindow.OnLoad, minus terrain/sky/physics/streaming. Throws + /// NotSupportedException if bindless/draw-params are missing (same as the game). + public static RenderStack Create(GL gl, DatReaderWriter.DatCollection dats, RenderBootstrapOptions opts); +} +``` + +- [ ] **Step 1:** Read the cited GameWindow construction lines and `ResolveChrome` (grep it) so the order + the exact `GetOrUploadRenderSurface`/sequencer-factory signatures are copied, not guessed. +- [ ] **Step 2:** Write `RenderBootstrap.Create` constructing, in order: `BindlessSupport.TryCreate` (throw if absent/no draw-params, copy the GameWindow message), `shadersDir = Path.Combine(AppContext.BaseDirectory,"Rendering","Shaders")`, `SceneLightingUboBinding(gl)`, `MeshShader = new Shader(gl, mesh_modern.vert/.frag)`, `TextureCache(gl, dats, bindless)`, `WbMeshAdapter(gl, dats, NullLogger.Instance)`, the `SequencerFactory` lambda (copy from GameWindow:2335-2361, capturing `dats` + an `AnimLoader`), `EntitySpawnAdapter(textureCache, sequencerFactory, meshAdapter)`, `WbDrawDispatcher(gl, meshShader, textureCache, meshAdapter, entitySpawnAdapter, bindless, new )` with `AlphaToCoverage = opts.Quality.AlphaToCoverage`, the vitals dat font (copy GameWindow's load of `0x40000000` via `UiDatFont`), and `UiHost(gl, shadersDir, defaultFont)`. Return the `RenderStack`. +- [ ] **Step 3:** Build: `dotnet build src/AcDream.App/AcDream.App.csproj -c Debug`. Expected: green (no test yet — GL construction is verified by Task 2's boot gate). +- [ ] **Step 4:** Commit. + +**Gate:** Build green. (Functional gate is Task 2.) + +**Commit:** `feat(studio): RenderBootstrap — shared render stack for the UI previewer` + +--- + +## Task 2: StudioWindow + LayoutSource (dat id) + Program dispatch + +**Files:** +- Create: `src/AcDream.App/Studio/StudioOptions.cs`, `src/AcDream.App/Studio/LayoutSource.cs`, `src/AcDream.App/Studio/StudioWindow.cs` +- Modify: `src/AcDream.App/Program.cs` (before `new GameWindow`) +- Test: `tests/AcDream.App.Tests/Studio/LayoutSourceTests.cs` +- Read first: `src/AcDream.App/UI/Layout/LayoutImporter.cs:57-190`, `src/AcDream.App/Rendering/GameWindow.cs:972-1017` (window+Run), `src/AcDream.App/UI/UiHost.cs:65-96` (Draw/WireMouse/WireKeyboard). + +**`StudioOptions` contract:** +```csharp +namespace AcDream.App.Studio; +public sealed record StudioOptions(string DatDir, uint? LayoutId, string? MarkupPath) +{ + public static StudioOptions Parse(string[] args); // args AFTER the "ui-studio" token +} +``` +Parse: positional dat dir (or `ACDREAM_DAT_DIR`), `--layout 0xNNNN` (hex), `--markup `. Default layout when neither given: `0x2100006Cu` (vitals). + +**`LayoutSource` contract:** +```csharp +public enum LayoutSourceKind { DatLayout, Markup } +public sealed class LayoutSource +{ + public LayoutSource(DatCollection dats, Func resolve, UiDatFont? datFont); + public LayoutSourceKind Kind { get; } + public uint? LayoutId { get; } + public string? MarkupPath { get; } + public string? LastError { get; private set; } + /// Imported tree, or null on error (LastError set). Dat → LayoutImporter.Import; markup → MarkupDocument.Build with an empty binding. + public ImportedLayout? CurrentLayout { get; private set; } + public UiElement? Load(StudioOptions opts); // sets Kind/LayoutId/MarkupPath + CurrentLayout + public UiElement? Reload(); // re-run the current source; markup re-reads the file +} +``` + +- [ ] **Step 1 (test, GL-free):** `LayoutSourceTests.LoadsDatLayout_byId`. Open real dats via `ConformanceDats.ResolveDatDir()` (skip if null), build a `LayoutSource` with a STUB resolve `_ => (1u,1,1)` + null font, `Load(new StudioOptions(dir, 0x2100006Cu, null))`, assert `CurrentLayout` non-null and `FindElement(0x2100006Cu) != null` and `Kind == DatLayout`. (Use `LayoutImporter.ImportInfos` is GL-free; `Import`'s resolve is only called for sprites — the stub is fine for tree-shape.) +- [ ] **Step 2:** Run it — expect FAIL (LayoutSource missing). `dotnet test tests/AcDream.App.Tests/AcDream.App.Tests.csproj --filter LayoutSourceTests`. +- [ ] **Step 3:** Implement `StudioOptions.Parse` + `LayoutSource` (dat path only; markup path returns LastError "markup unsupported" for now — wired in Task 6). Dat path = `LayoutImporter.Import(dats, id, resolve, datFont)`. +- [ ] **Step 4:** Run the test — expect PASS. +- [ ] **Step 5:** Implement `StudioWindow`: mirror `GameWindow.Run()` window creation (1280×720, GL 4.3 Core, stencil 8). On `Load`: `gl = GL.GetApi(window)`, `input = window.CreateInput()`, `dats = new DatCollection(opts.DatDir, DatAccessType.Read)`, `stack = RenderBootstrap.Create(gl, dats, new(QualitySettings...))`, wire `stack.UiHost.WireMouse/WireKeyboard` for each mouse/keyboard, `source = new LayoutSource(dats, stack.ResolveChrome, stack.VitalsDatFont)`, `root = source.Load(opts)`, and if non-null add it to `stack.UiHost.Root` (use the same add-child API GameWindow uses — grep `_uiHost.Root` adds). On `Render`: `gl.ClearColor` mid-grey, `Clear`, `stack.UiHost.Tick(dt)` + `stack.UiHost.Draw(new Vector2(window.Size.X, window.Size.Y))`. On `Closing`: dispose. +- [ ] **Step 6:** `Program.cs`: before `new GameWindow`, add `if (args.Length >= 1 && args[0] == "ui-studio") { var so = AcDream.App.Studio.StudioOptions.Parse(args[1..]); using var sw = new AcDream.App.Studio.StudioWindow(so); sw.Run(); return 0; }`. +- [ ] **Step 7:** Build green, then VISUAL GATE (launch command above). Expect: a window showing the vitals panel chrome (three empty bars + frame) rendered by the real UiHost. +- [ ] **Step 8:** Commit. + +**Gate (visual):** `ui-studio --layout 0x2100006C` opens a window showing the vitals panel. + +**Commit:** `feat(studio): StudioWindow + LayoutSource — render a dat panel standalone` + +--- + +## Task 3: StudioInspector (ImGui) + canvas FBO + tree + props + click-to-inspect + +**Files:** +- Create: `src/AcDream.App/Studio/PanelFbo.cs`, `src/AcDream.App/Studio/StudioInspector.cs` +- Modify: `StudioWindow.cs` (init ImGui, render panel→FBO, draw inspector) +- Read first: `src/AcDream.UI.ImGui/ImGuiBootstrapper.cs:35-46`, `src/AcDream.App/Rendering/PaperdollViewportRenderer.cs` (the FBO RTT pattern + `GLStateScope`), `src/AcDream.App/UI/UiRoot.cs` (grep `HitTestTopDown`), `src/AcDream.App/UI/UiElement.cs` (Id/Type/Left/Top/Width/Height/Anchors/ZOrder/Children accessors). + +**`PanelFbo`:** mirror `PaperdollViewportRenderer`'s FBO (RGBA8 + Depth24Stencil8, lazy resize). `uint Render(int w, int h, UiHost host)` = bind FBO, viewport, clear transparent, `host.Draw(new Vector2(w,h))` inside a `GLStateScope`, return color tex. Reuse the exact FBO setup from `PaperdollViewportRenderer.EnsureFramebuffer`. + +**`StudioInspector`:** ImGui windows, drawn between `BeginFrame`/`Render`: +```csharp +public sealed class StudioInspector +{ + public UiElement? Selected { get; set; } + // Canvas window: ImGui.Image(panelTex) sized to the panel; capture click → return panel-local (x,y) + public (int x,int y)? DrawCanvas(nint panelTex, int w, int h); + public void DrawTree(UiElement root); // recursive ImGui.TreeNode; click sets Selected + public void DrawProperties(); // Selected's Id/Type/Rect/Anchors/ZOrder/sprites (read-only here) +} +``` +Click-to-inspect: when `DrawCanvas` returns a coord, call `root` `HitTestTopDown(x,y)` (grep its exact signature/return) → set `Selected`. + +- [ ] **Step 1:** Implement `PanelFbo` (copy `PaperdollViewportRenderer` FBO lifecycle; swap the doll draw for `host.Draw`). +- [ ] **Step 2:** `StudioWindow.Load`: construct `new ImGuiBootstrapper(gl, window, input)` (no `DevToolsEnabled` gate — the studio is always devtools) + `new PanelFbo(gl)` + `new StudioInspector()`. +- [ ] **Step 3:** `StudioWindow.Render`: `panelTex = panelFbo.Render(w,h, stack.UiHost)`; `imgui.BeginFrame(dt)`; `var click = inspector.DrawCanvas((nint)panelTex, w, h); if (click is {} c) inspector.Selected = root.HitTestTopDown(c.x, c.y); inspector.DrawTree(root); inspector.DrawProperties();`; `imgui.Render()`. +- [ ] **Step 4:** Implement `StudioInspector` windows (ImGui.NET: `ImGui.Begin`, `ImGui.Image`, `ImGui.TreeNodeEx`, `ImGui.Text`). Tree recurses `element.Children`; each node label = `$"{name} 0x{Id:X8} [{Type}]"`. Properties: Id, Type, Rect `(Left,Top,Width,Height)`, Anchors, ZOrder, and each state sprite id (grep how `UiDatElement`/`UiButton` expose their sprite ids; if not trivially exposed, list "—" for v1 and note follow-up). +- [ ] **Step 5:** Build green, VISUAL GATE: window shows a Canvas pane (the panel) + a Tree pane + a Properties pane; clicking the panel or a tree node selects an element and shows its id/rect. +- [ ] **Step 6:** Commit. + +**Gate (visual):** click an element in the canvas or tree → its id / Type / rect appear in Properties. + +**Commit:** `feat(studio): ImGui inspector — canvas FBO, element tree, props, click-to-inspect` + +--- + +## Task 4: FixtureProvider — populate 2-D panels with sample data + +**Files:** +- Create: `src/AcDream.App/Studio/SampleData.cs`, `src/AcDream.App/Studio/FixtureProvider.cs` +- Modify: `StudioWindow.cs` (call `FixtureProvider.Populate` after `Load`) +- Test: `tests/AcDream.App.Tests/Studio/FixtureProviderTests.cs` +- Read first: `src/AcDream.Core/Items/ClientObjectTable.cs:41-420` (`AddOrUpdate`/`Get`/`GetContents`/`ClientObject` fields), the four controllers' `Bind` (signatures in the plan header research), `src/AcDream.Core/Items/ItemType.cs` + `EquipMask`. + +**`SampleData`:** static factory building a `ClientObjectTable` seeded with: a player object (guid `0xPLAYER`, `ItemsCapacity=102`, `ContainersCapacity=7`), ~6 loose items in the main pack (varied `Type`/`IconId` — pick real icon ids from existing tests or a known wcid; `ContainerId = player`, gapless `ContainerSlot`), ~2 side bags (`Type=Container`, `ItemsCapacity>0`), and a few equipped items (`CurrentlyEquippedLocation` set to Head/Chest/etc). Plus sample vitals (`health=0.8f, stam=0.6f, mana=0.9f` + text). Constants only — no wire. + +**`FixtureProvider.Populate(uint layoutId, ImportedLayout layout, RenderStack stack)`** switch on `layoutId`: +- `0x2100006C` → `VitalsController.Bind(layout, ()=>0.8f, ()=>0.6f, ()=>0.9f, ()=>"80/100", ()=>"60/100", ()=>"90/100")`. +- `0x21000016` → `ToolbarController.Bind(layout, sampleTable, ()=>PLAYER, IconIds, _=>{}, ...digits from GameWindow's load...)`. +- `0x21000023` → `InventoryController.Bind(layout, sampleTable, ()=>PLAYER, IconIds, ()=>100, stack.VitalsDatFont, contents/sideBag/mainPack sprites, ...)`. +- default → no-op (structural preview). +`IconIds` = reuse GameWindow's `iconIds` lambda (grep it — `IconComposer`-backed); if heavy, a stub returning the passed base id is acceptable for v1 (note it). + +- [ ] **Step 1 (test):** `FixtureProviderTests.SampleTable_hasPackContents`. Build `SampleData.BuildObjectTable()`, assert `table.GetContents(PLAYER).Count >= 6` and a known item's `Type`/`IconId` set. +- [ ] **Step 2:** Run — FAIL (missing). +- [ ] **Step 3:** Implement `SampleData` + the table seeding. +- [ ] **Step 4:** Run — PASS. +- [ ] **Step 5:** Implement `FixtureProvider.Populate`; call it from `StudioWindow` after `source.Load`. +- [ ] **Step 6:** Build green, VISUAL GATE: `--layout 0x21000023` shows the inventory with sample items in the grid + a non-zero burden bar; `--layout 0x21000016` shows toolbar slots populated; `--layout 0x2100006C` shows filled vital bars. +- [ ] **Step 7:** Commit. + +**Gate (visual):** inventory / toolbar / vitals panels render POPULATED (sample items, filled bars). + +**Commit:** `feat(studio): FixtureProvider — sample data populates the 2-D panels` + +--- + +## Task 5: Live doll in the paperdoll viewport + +**Files:** +- Modify: `FixtureProvider.cs` (build a sample creature entity for `0x21000023`/paperdoll), `StudioWindow.cs` (wire `PaperdollViewportRenderer` + the pre-UI doll render, mirroring GameWindow:9148-9160) +- Read first: `src/AcDream.App/Rendering/GameWindow.cs:3786-3897` (`RefreshPaperdollDoll`/`ApplyPaperdollPose`), `9148-9160` (the pre-UI doll hook), `src/AcDream.App/Rendering/DollEntityBuilder.cs` (`Build`), `src/AcDream.App/Rendering/PaperdollViewportRenderer.cs` (ctor + `SetDoll`/`Render`), `EntitySpawnAdapter.OnCreate`. + +**Sample creature:** a base human Setup id (grep the test character / a known humanoid Setup `0x0200....`; or reuse the player Setup constant if one exists in tests). Build a `WorldEntity { SourceGfxObjOrSetupId = setupId, MeshRefs = , ... }`, run it through `stack.EntitySpawnAdapter.OnCreate` to resolve MeshRefs (same path GameWindow uses), then `DollEntityBuilder.Build` + `ApplyPaperdollPose`-equivalent. Keep a small `StudioDoll` helper if this grows. + +- [ ] **Step 1:** In `StudioWindow.Load`, construct `new PaperdollViewportRenderer(gl, stack.DrawDispatcher, stack.LightingUbo)`. +- [ ] **Step 2:** When the layout is the inventory/paperdoll, have `FixtureProvider` build the sample creature, call `RefreshPaperdollDoll`-equivalent (clone → `ApplyPaperdollPose`) → `paperdollRenderer.SetDoll(doll)`; expose the doll-viewport widget (FindElement `0x100001D5`). +- [ ] **Step 3:** In `StudioWindow.Render`, BEFORE the panel FBO draw, render the doll into the viewport widget's texture exactly as GameWindow:9156-9159 (`widget.TextureHandle = paperdollRenderer.Render(w,h)`), gated on the viewport widget being present + visible. +- [ ] **Step 4:** Build green, VISUAL GATE: `--layout 0x21000023` shows the paperdoll with a DRESSED 3-D doll in the held pose (reuses the camera/heading/pose shipped in `8fa66c2`). +- [ ] **Step 5:** Commit. + +**Gate (visual):** the paperdoll viewport shows the sample creature as a posed 3-D doll. + +**Commit:** `feat(studio): live 3-D doll in the paperdoll preview` + +--- + +## Task 6: Markup source + hot-reload + +**Files:** +- Create: `src/AcDream.App/Studio/HotReloadWatcher.cs` +- Modify: `LayoutSource.cs` (markup path via `MarkupDocument.Build`), `StudioWindow.cs` (watch + reload), `StudioOptions` already parses `--markup` +- Read first: `src/AcDream.App/UI/MarkupDocument.cs:21-82`, an existing first-party markup file (grep `assets/*.xml`, e.g. the retired `vitals.xml` in git history or a current plugin panel) for the schema. +- Test: extend `LayoutSourceTests`. + +**LayoutSource markup path:** `Kind=Markup`; `Load` reads the file → `MarkupDocument.Build(xml, EmptyBinding, resolve, null)` → wrap its `UiNineSlicePanel` as the root; `Reload` re-reads the file. `EmptyBinding` = `new object()` (no `{Binding}` resolution needed for preview; unresolved bindings render literally or empty — acceptable). + +**HotReloadWatcher:** +```csharp +public sealed class HotReloadWatcher : IDisposable +{ + public HotReloadWatcher(string filePath, Action onChanged); // debounce ~150ms; marshal onChanged via a thread-safe flag the window polls +} +``` +The watcher sets a `volatile bool _dirty`; `StudioWindow.Render` checks it and calls `source.Reload()` + `FixtureProvider.Populate` + re-add to the UiRoot on the GL thread (FileSystemWatcher fires on a worker thread — never touch GL off-thread). + +- [ ] **Step 1 (test):** `LayoutSourceTests.LoadsMarkupFile`. Write a temp `.xml` with a minimal `UiNineSlicePanel`, `Load(new StudioOptions(dir, null, path))`, assert non-null root + `Kind==Markup`. +- [ ] **Step 2:** Run — FAIL. +- [ ] **Step 3:** Implement the markup path in `LayoutSource` + `HotReloadWatcher`. +- [ ] **Step 4:** Run — PASS. +- [ ] **Step 5:** Wire the watcher in `StudioWindow` (poll `_dirty` in Render; reload on the GL thread). +- [ ] **Step 6:** Build green, VISUAL GATE: launch `--markup `; edit the file in an editor + save → the studio reloads the panel within ~1s. +- [ ] **Step 7:** Commit. + +**Gate (visual):** edit a markup file externally → studio re-renders it live. + +**Commit:** `feat(studio): markup source + hot-reload` + +--- + +## Task 7: Editable markup props + write-back + +**Files:** +- Create: `src/AcDream.App/Studio/MarkupWriteBack.cs` +- Modify: `StudioInspector.cs` (editable rect/anchor fields when `Kind==Markup`), `StudioWindow.cs` (apply edit live + persist) +- Test: `tests/AcDream.App.Tests/Studio/MarkupWriteBackTests.cs` + +**`MarkupWriteBack`:** targeted in-place attribute edits — NOT a full re-serialize (preserve formatting/comments): +```csharp +public static class MarkupWriteBack +{ + /// In the markup text, find the element whose id attribute == elementId and set attr=value + /// (add the attribute if absent). Returns the new text. Leaves all other bytes untouched. + public static string SetAttribute(string markup, uint elementId, string attr, string value); +} +``` +Implement by locating the element's opening tag (match the id attribute literal `Id="0x...."` — grep the markup schema for the exact id attribute name), then regex-replace just that attribute within that tag span. + +- [ ] **Step 1 (test):** `MarkupWriteBackTests.SetAttribute_updatesInPlace`. Given a 2-element markup string, `SetAttribute(m, id, "Width", "200")` → re-parse, assert the target's Width==200 AND the sibling element + any comment are byte-identical. +- [ ] **Step 2:** Run — FAIL. +- [ ] **Step 3:** Implement `MarkupWriteBack.SetAttribute`. +- [ ] **Step 4:** Run — PASS (add an absent-attribute case + a not-found case returning the input unchanged). +- [ ] **Step 5:** `StudioInspector.DrawProperties`: when `Kind==Markup`, render rect (`Left/Top/Width/Height`) + anchors as ImGui `InputInt`/combo; on change, set the live `UiElement` field AND call back to the window to `MarkupWriteBack.SetAttribute(...)` + write the file (the watcher then reloads, or skip the watcher for self-writes via a guard flag). +- [ ] **Step 6:** Build green, VISUAL GATE: select an element in a markup panel, change its Width in Properties → the panel updates AND the file on disk shows the new value. +- [ ] **Step 7:** Commit. + +**Gate (visual):** edit a rect in the inspector → live panel updates + the markup file is rewritten. + +**Commit:** `feat(studio): editable markup props with in-place write-back` + +--- + +## Task 8: Render-config sliders (doll camera) + +**Files:** +- Modify: `src/AcDream.App/Rendering/DollCamera.cs` (make Eye/Target/Fov instance-settable — currently `static readonly`), `StudioInspector.cs` (sliders), `PaperdollViewportRenderer.cs` (expose its `DollCamera` or accept overrides) +- Read first: `DollCamera.cs` (current static fields), `PaperdollViewportRenderer.cs:35` (`private readonly DollCamera _camera = new();`). + +**DollCamera change:** convert the `static readonly` Eye/Target/Up/FovRadians to instance properties with the retail defaults as initializers (keep the decomp citations). This is a safe, behavior-preserving change (same defaults) — verify the existing `DollCameraTests` still pass (they read `cam.View`). + +**Inspector:** a "Render config" ImGui window shown when a doll viewport is selected: `SliderFloat3("eye", ...)`, `SliderFloat("fov", ...)`, `SliderFloat("heading", ...)` bound to the `PaperdollViewportRenderer`'s camera (expose it) + the doll's heading. A "Copy to clipboard" button emits the C# literals. + +- [ ] **Step 1:** Make `DollCamera` Eye/Target/Up/FovRadians instance properties (defaults = current retail values). Build + run `DollCameraTests` — expect PASS (defaults unchanged). +- [ ] **Step 2:** Expose the camera from `PaperdollViewportRenderer` (a `public DollCamera Camera => _camera;`). +- [ ] **Step 3:** `StudioInspector`: render the Render-config window with sliders mutating `renderer.Camera.{Eye,FovRadians}` + the doll heading; a copy button. +- [ ] **Step 4:** Build green, VISUAL GATE: select the doll, drag the eye/FOV sliders → the doll re-frames live; copy emits the literals. +- [ ] **Step 5:** Commit. + +**Gate (visual):** dragging the camera sliders re-frames the doll in real time. + +**Commit:** `feat(studio): render-config sliders for the doll camera` + +--- + +## Wrap-up (after Task 8) + +- [ ] Update `claude-memory/project_d2b_retail_ui.md` (or a new `project_ui_studio.md`) with the studio's architecture + the launch command + DO-NOT-RETRY notes; add a `MEMORY.md` pointer. +- [ ] Update the roadmap: note the UI Studio tool shipped (it's tooling, not a milestone phase — a one-line ledger entry). +- [ ] Full suite green; final commit. + +## Self-review notes + +- **Spec coverage:** both sources (Tasks 2 dat / 6 markup) ✓; full fixtures (Task 4 + 5) ✓; inspector read (3) + editable markup (7) + render sliders (8) ✓; hot-reload (6) ✓; live doll (5) ✓; RenderBootstrap (1) ✓; ImGui chrome (3) ✓. +- **GL-untestable tasks** (1,2-window,3,5,6-window,8) use visual gates by design — the studio is a visual tool; pure-logic units (LayoutSource infos, FixtureProvider, MarkupWriteBack) have unit tests. +- **Type consistency:** `RenderStack`/`ImportedLayout`/`StudioOptions`/`LayoutSource`/`ClientObjectTable` member names match the research reference; `ResolveChrome` body must be copied from GameWindow (flagged in Task 1 Step 1). +- **Risk:** Task 1 builds NEW code (no GameWindow edit) → zero game-regression risk, the de-risk decision from the spec's open risk. Task 5's sample Setup id is the one unknown literal — Task 5 Step reads the test fixtures to find a real humanoid Setup before coding. From 79ee3ffbe228b37f1f745a73cda1904625e18947 Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 25 Jun 2026 14:17:43 +0200 Subject: [PATCH 16/51] =?UTF-8?q?feat(studio):=20RenderBootstrap=20?= =?UTF-8?q?=E2=80=94=20shared=20render=20stack=20for=20the=20UI=20previewe?= =?UTF-8?q?r?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Extracts the subset of GameWindow.OnLoad the UI Studio needs into a standalone RenderBootstrap.Create factory: bindless detection, shaderDir, SceneLightingUboBinding, mesh shader, TextureCache, animLoader, WbMeshAdapter, SequencerFactory, EntitySpawnAdapter, EntityClassificationCache, WbDrawDispatcher (+ A2C gate from QualitySettings), UiDatFont load, and UiHost. No terrain / sky / physics / streaming — only the pieces listed in the RenderStack record. GameWindow is untouched; this is additive new code only. Note: task spec listed VitalsDatFont as AcDream.App.UI.Layout.UiDatFont but the type lives in AcDream.App.UI — corrected here. Co-Authored-By: Claude Opus 4.8 (1M context) --- src/AcDream.App/Rendering/RenderBootstrap.cs | 162 +++++++++++++++++++ 1 file changed, 162 insertions(+) create mode 100644 src/AcDream.App/Rendering/RenderBootstrap.cs diff --git a/src/AcDream.App/Rendering/RenderBootstrap.cs b/src/AcDream.App/Rendering/RenderBootstrap.cs new file mode 100644 index 00000000..8f8a1001 --- /dev/null +++ b/src/AcDream.App/Rendering/RenderBootstrap.cs @@ -0,0 +1,162 @@ +using DatReaderWriter; +using Microsoft.Extensions.Logging.Abstractions; +using Silk.NET.OpenGL; + +namespace AcDream.App.Rendering; + +/// +/// The subset of the production render stack that the UI Studio needs: +/// GL + dats + UiHost + the WB mesh pipeline. Constructed from the same +/// classes and the same order as , minus +/// terrain / sky / physics / streaming. +/// +public sealed record RenderStack( + GL Gl, + DatReaderWriter.DatCollection Dats, + string ShaderDir, + Wb.BindlessSupport Bindless, + TextureCache TextureCache, + Shader MeshShader, + Wb.WbMeshAdapter MeshAdapter, + Wb.EntitySpawnAdapter EntitySpawnAdapter, + Wb.WbDrawDispatcher DrawDispatcher, + SceneLightingUboBinding LightingUbo, + AcDream.App.UI.UiHost UiHost, + AcDream.App.UI.UiDatFont? VitalsDatFont) +{ + /// + /// Resolves a sprite id (0x06xxxxxx) to a (GL handle, width, height) triple. + /// Copied verbatim from GameWindow's ResolveChrome closure — it calls + /// TextureCache.GetOrUploadRenderSurface(id, out w, out h). + /// + public (uint handle, int width, int height) ResolveChrome(uint spriteId) + { + uint t = TextureCache.GetOrUploadRenderSurface(spriteId, out int w, out int h); + return (t, w, h); + } +} + +/// Options for . +public sealed record RenderBootstrapOptions( + AcDream.UI.Abstractions.Settings.QualitySettings Quality); + +/// +/// Constructs the UI Studio's render stack from the production classes, +/// in the same order as . +/// +public static class RenderBootstrap +{ + /// + /// Build the studio's render stack. Throws + /// (same message as GameWindow) if GL_ARB_bindless_texture or + /// GL_ARB_shader_draw_parameters are absent — the modern path is mandatory. + /// + public static RenderStack Create( + GL gl, + DatReaderWriter.DatCollection dats, + RenderBootstrapOptions opts) + { + // --- Bindless detection (GameWindow ~1701-1723) --- + if (!Wb.BindlessSupport.TryCreate(gl, out var bindless) + || bindless is null + || !bindless.HasShaderDrawParameters(gl)) + { + throw new NotSupportedException( + "acdream requires GL_ARB_bindless_texture + GL_ARB_shader_draw_parameters " + + "(GL 4.3+ with bindless support). Your GPU/driver does not expose these extensions. " + + "If this is unexpected, please file a bug report with your GPU vendor + driver version."); + } + + // --- Shared infra (GameWindow ~1198, ~1211) --- + string shaderDir = Path.Combine(AppContext.BaseDirectory, "Rendering", "Shaders"); + var lightingUbo = new SceneLightingUboBinding(gl); + + // --- Mesh shader (GameWindow ~1769-1771) --- + var meshShader = new Shader(gl, + Path.Combine(shaderDir, "mesh_modern.vert"), + Path.Combine(shaderDir, "mesh_modern.frag")); + + // --- TextureCache (GameWindow ~1774) --- + var textureCache = new TextureCache(gl, dats, bindless); + + // --- AnimLoader (GameWindow ~1240) --- + var animLoader = new AcDream.Core.Physics.DatCollectionLoader(dats); + + // --- WbMeshAdapter (GameWindow ~2286-2287) --- + var wbLogger = NullLogger.Instance; + var meshAdapter = new Wb.WbMeshAdapter(gl, dats, wbLogger); + + // --- SequencerFactory (GameWindow ~2306-2334) --- + var capturedDats = dats; + var capturedAnimLoader = animLoader; + AcDream.Core.Physics.AnimationSequencer SequencerFactory(AcDream.Core.World.WorldEntity e) + { + if (capturedDats is not null && capturedAnimLoader is not null) + { + var setup = capturedDats.Get(e.SourceGfxObjOrSetupId); + if (setup is not null) + { + uint mtableId = (uint)setup.DefaultMotionTable; + if (mtableId != 0) + { + var mtable = capturedDats.Get(mtableId); + if (mtable is not null) + return new AcDream.Core.Physics.AnimationSequencer( + setup, mtable, capturedAnimLoader); + } + // Setup exists but no motion table — no-op sequencer. + return new AcDream.Core.Physics.AnimationSequencer( + setup, + new DatReaderWriter.DBObjs.MotionTable(), + capturedAnimLoader); + } + } + // Complete fallback: empty setup + empty motion table + null loader. + return new AcDream.Core.Physics.AnimationSequencer( + new DatReaderWriter.DBObjs.Setup(), + new DatReaderWriter.DBObjs.MotionTable(), + new NullAnimLoader()); + } + + // --- EntitySpawnAdapter (GameWindow ~2335-2336) --- + var entitySpawnAdapter = new Wb.EntitySpawnAdapter( + textureCache, SequencerFactory, meshAdapter); + + // --- EntityClassificationCache (GameWindow ~217 — field initializer, new()) --- + var classificationCache = new Wb.EntityClassificationCache(); + + // --- WbDrawDispatcher (GameWindow ~2377-2381) --- + var drawDispatcher = new Wb.WbDrawDispatcher( + gl, meshShader, textureCache, meshAdapter, entitySpawnAdapter, + bindless, classificationCache); + drawDispatcher.AlphaToCoverage = opts.Quality.AlphaToCoverage; + + // --- Vitals dat font (GameWindow ~1820-1822) --- + var vitalsDatFont = AcDream.App.UI.UiDatFont.Load(dats, textureCache); + + // --- UiHost (GameWindow ~1790); pass null for debugFont (only used as + // a fallback BitmapFont for the world-space HUD — not needed for the + // UI Studio, and BitmapFont requires a system font byte array) --- + var uiHost = new AcDream.App.UI.UiHost(gl, shaderDir, defaultFont: null); + + return new RenderStack( + Gl: gl, + Dats: dats, + ShaderDir: shaderDir, + Bindless: bindless, + TextureCache: textureCache, + MeshShader: meshShader, + MeshAdapter: meshAdapter, + EntitySpawnAdapter: entitySpawnAdapter, + DrawDispatcher: drawDispatcher, + LightingUbo: lightingUbo, + UiHost: uiHost, + VitalsDatFont: vitalsDatFont); + } + + // NullAnimLoader mirrors GameWindow's private NullAnimLoader (GameWindow ~13327-13330). + private sealed class NullAnimLoader : AcDream.Core.Physics.IAnimationLoader + { + public DatReaderWriter.DBObjs.Animation? LoadAnimation(uint id) => null; + } +} From df6b5b3b3919a8e85ba598c51ccc897ec293228c Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 25 Jun 2026 14:26:47 +0200 Subject: [PATCH 17/51] =?UTF-8?q?feat(studio):=20StudioWindow=20+=20Layout?= =?UTF-8?q?Source=20=E2=80=94=20render=20a=20dat=20panel=20standalone?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task 2 of the acdream UI Studio plan. Adds three new files under src/AcDream.App/Studio/ and one new test file: - StudioOptions.cs: record + Parse() for the ui-studio CLI args (positional dat dir or ACDREAM_DAT_DIR, --layout 0xNNNN, --markup ; defaults to vitals 0x2100006C when neither layout nor markup given). - LayoutSource.cs: wraps LayoutImporter.Import for dat-backed layouts; markup path sets LastError "markup unsupported (Task 6)" and returns null for now. Exposes Kind / LayoutId / MarkupPath / LastError / CurrentLayout / Reload(). - StudioWindow.cs: Silk.NET 1280×720 GL 4.3 window; boots RenderBootstrap, wires input to UiHost, loads the panel via LayoutSource, adds the root to UiHost.Root.AddChild. QualitySettings resolved the same way GameWindow.Run() does (SettingsStore → QualitySettings.From → WithEnvOverrides). - Program.cs: ui-studio dispatch at the top of top-level statements (before the dat-dir parse) so `dotnet run -- ui-studio` routes to StudioWindow. - LayoutSourceTests.cs: dat-gated test (skips when dats absent); verifies that the vitals LayoutDesc (0x2100006C) loads, root is non-null, byId contains the vitals root element (0x100005F9), and Kind == DatLayout. Passes (1/1 with dats present; silently skips on CI). Note: the spec asserts FindElement(0x2100006Cu) — that id is the LayoutDesc dat id, not a widget element id. The actual vitals root element id is 0x100005F9 (confirmed from the vitals_2100006C.json fixture). The test uses the correct element id and documents the discrepancy. Co-Authored-By: Claude Opus 4.8 (1M context) --- src/AcDream.App/Program.cs | 8 + src/AcDream.App/Studio/LayoutSource.cs | 109 +++++++++++++ src/AcDream.App/Studio/StudioOptions.cs | 60 +++++++ src/AcDream.App/Studio/StudioWindow.cs | 150 ++++++++++++++++++ .../Studio/LayoutSourceTests.cs | 60 +++++++ 5 files changed, 387 insertions(+) create mode 100644 src/AcDream.App/Studio/LayoutSource.cs create mode 100644 src/AcDream.App/Studio/StudioOptions.cs create mode 100644 src/AcDream.App/Studio/StudioWindow.cs create mode 100644 tests/AcDream.App.Tests/Studio/LayoutSourceTests.cs diff --git a/src/AcDream.App/Program.cs b/src/AcDream.App/Program.cs index b3aebd5a..9e48adbb 100644 --- a/src/AcDream.App/Program.cs +++ b/src/AcDream.App/Program.cs @@ -4,6 +4,14 @@ using AcDream.App.Rendering; using AcDream.Core.Plugins; using Serilog; +if (args.Length >= 1 && args[0] == "ui-studio") +{ + var so = AcDream.App.Studio.StudioOptions.Parse(args[1..]); + using var sw = new AcDream.App.Studio.StudioWindow(so); + sw.Run(); + return 0; +} + Log.Logger = new LoggerConfiguration() .MinimumLevel.Debug() .WriteTo.Console() diff --git a/src/AcDream.App/Studio/LayoutSource.cs b/src/AcDream.App/Studio/LayoutSource.cs new file mode 100644 index 00000000..6b125fcc --- /dev/null +++ b/src/AcDream.App/Studio/LayoutSource.cs @@ -0,0 +1,109 @@ +using AcDream.App.UI; +using AcDream.App.UI.Layout; +using DatReaderWriter; + +namespace AcDream.App.Studio; + +/// Which kind of source the studio is currently previewing. +public enum LayoutSourceKind { DatLayout, Markup } + +/// +/// Wraps the two ways the UI Studio can load a panel to preview: +/// a LayoutDesc dat id, or a KSML markup file path (Task 6 — unsupported now). +/// +/// Call with the current to +/// import the layout and get the root . The result is also +/// cached in so can re-run the same +/// source without re-reading the options. +/// +public sealed class LayoutSource +{ + private readonly DatCollection _dats; + private readonly Func _resolve; + private readonly UiDatFont? _datFont; + + public LayoutSourceKind Kind { get; private set; } + public uint? LayoutId { get; private set; } + public string? MarkupPath { get; private set; } + public string? LastError { get; private set; } + public ImportedLayout? CurrentLayout { get; private set; } + + public LayoutSource( + DatCollection dats, + Func resolve, + UiDatFont? datFont) + { + _dats = dats ?? throw new ArgumentNullException(nameof(dats)); + _resolve = resolve ?? throw new ArgumentNullException(nameof(resolve)); + _datFont = datFont; + } + + /// + /// Load the layout described by . For a dat layout + /// ( is non-null) calls + /// . For a markup path sets + /// and returns null (Task 6, not yet implemented). + /// + /// Returns the root on success, or null on failure + /// (check ). + /// + public UiElement? Load(StudioOptions opts) + { + LastError = null; + CurrentLayout = null; + + if (opts.MarkupPath is not null) + { + Kind = LayoutSourceKind.Markup; + MarkupPath = opts.MarkupPath; + LastError = "markup unsupported (Task 6)"; + return null; + } + + if (opts.LayoutId is null) + { + LastError = "ui-studio: no layout id or markup path specified."; + return null; + } + + Kind = LayoutSourceKind.DatLayout; + LayoutId = opts.LayoutId; + return LoadDat(opts.LayoutId.Value); + } + + /// Re-run the most-recently-configured source without re-reading options. + public UiElement? Reload() + { + LastError = null; + CurrentLayout = null; + + if (Kind == LayoutSourceKind.Markup) + { + LastError = "markup unsupported (Task 6)"; + return null; + } + + if (LayoutId is null) + { + LastError = "ui-studio: no layout id to reload."; + return null; + } + + return LoadDat(LayoutId.Value); + } + + // ── Private ────────────────────────────────────────────────────────────────── + + private UiElement? LoadDat(uint layoutId) + { + var imported = LayoutImporter.Import(_dats, layoutId, _resolve, _datFont); + if (imported is null) + { + LastError = $"ui-studio: LayoutDesc 0x{layoutId:X8} not found in dats."; + return null; + } + + CurrentLayout = imported; + return imported.Root; + } +} diff --git a/src/AcDream.App/Studio/StudioOptions.cs b/src/AcDream.App/Studio/StudioOptions.cs new file mode 100644 index 00000000..bd42bd06 --- /dev/null +++ b/src/AcDream.App/Studio/StudioOptions.cs @@ -0,0 +1,60 @@ +namespace AcDream.App.Studio; + +/// +/// Parsed options for the acdream UI Studio standalone tool. +/// Constructed by from the command-line tokens that follow +/// the ui-studio dispatch token. +/// +public sealed record StudioOptions(string DatDir, uint? LayoutId, string? MarkupPath) +{ + /// + /// Parse studio options from the args that come AFTER the ui-studio token. + /// + /// Positional (first non-flag arg): dat directory. Falls back to + /// ACDREAM_DAT_DIR when omitted. + /// --layout 0xNNNN: hex LayoutDesc dat id to preview. + /// --markup <path>: path to a KSML markup file (Task 6, unsupported for now). + /// When neither --layout nor --markup is given the default layout + /// 0x2100006C (vitals) is used. + /// + public static StudioOptions Parse(string[] args) + { + string? datDir = null; + uint? layoutId = null; + string? markupPath = null; + + for (int i = 0; i < args.Length; i++) + { + if (args[i] == "--layout" && i + 1 < args.Length) + { + var raw = args[++i]; + // Accept 0xNNNN or plain hex. + if (raw.StartsWith("0x", StringComparison.OrdinalIgnoreCase)) + raw = raw[2..]; + if (uint.TryParse(raw, System.Globalization.NumberStyles.HexNumber, null, out var id)) + layoutId = id; + } + else if (args[i] == "--markup" && i + 1 < args.Length) + { + markupPath = args[++i]; + } + else if (!args[i].StartsWith('-')) + { + datDir ??= args[i]; + } + } + + // Fall back to ACDREAM_DAT_DIR when no positional dat dir was given. + datDir ??= Environment.GetEnvironmentVariable("ACDREAM_DAT_DIR"); + + if (string.IsNullOrWhiteSpace(datDir)) + throw new InvalidOperationException( + "ui-studio: dat directory required — pass as first arg or set ACDREAM_DAT_DIR."); + + // Default layout: vitals (0x2100006C). + if (layoutId is null && markupPath is null) + layoutId = 0x2100006Cu; + + return new StudioOptions(datDir, layoutId, markupPath); + } +} diff --git a/src/AcDream.App/Studio/StudioWindow.cs b/src/AcDream.App/Studio/StudioWindow.cs new file mode 100644 index 00000000..d55064b4 --- /dev/null +++ b/src/AcDream.App/Studio/StudioWindow.cs @@ -0,0 +1,150 @@ +using System.Numerics; +using AcDream.App.Rendering; +using DatReaderWriter; +using DatReaderWriter.Options; +using Silk.NET.Input; +using Silk.NET.Maths; +using Silk.NET.OpenGL; +using Silk.NET.Windowing; +using static Silk.NET.OpenGL.ClearBufferMask; + +namespace AcDream.App.Studio; + +/// +/// Standalone Silk.NET window that boots the production render stack +/// () and previews a single UI panel +/// identified by a . +/// +/// Usage: dotnet run -- ui-studio [dat-dir] [--layout 0xNNNN] [--markup path] +/// +/// The window is intentionally thin: no game world, no physics, no streaming — +/// just GL + UiHost + the layout under test, identical to how the panel +/// appears inside GameWindow. +/// +public sealed class StudioWindow : IDisposable +{ + private readonly StudioOptions _opts; + + // Created in OnLoad, released in OnClosing. + private IWindow? _window; + private DatCollection? _dats; + private RenderStack? _stack; + private LayoutSource? _source; + + public StudioWindow(StudioOptions opts) + { + _opts = opts ?? throw new ArgumentNullException(nameof(opts)); + } + + /// + /// Open the window and block until it is closed. + /// Mirrors GameWindow.Run(). + /// + public void Run() + { + // Resolve quality settings the same way GameWindow.Run() does + // (SettingsStore → QualitySettings.From → WithEnvOverrides). + var startupStore = new AcDream.UI.Abstractions.Panels.Settings.SettingsStore( + AcDream.UI.Abstractions.Panels.Settings.SettingsStore.DefaultPath()); + var startupDisplay = startupStore.LoadDisplay(); + var startupBase = AcDream.UI.Abstractions.Settings.QualitySettings.From(startupDisplay.Quality); + var startupQuality = AcDream.UI.Abstractions.Settings.QualitySettings.WithEnvOverrides(startupBase); + + var options = WindowOptions.Default with + { + Size = new Vector2D(1280, 720), + Title = "acdream UI Studio", + API = new GraphicsAPI( + ContextAPI.OpenGL, + ContextProfile.Core, + ContextFlags.ForwardCompatible, + new APIVersion(4, 3)), + VSync = false, + // MSAA from quality preset — must be baked into the GL context at creation. + Samples = startupQuality.MsaaSamples, + PreferredStencilBufferBits = 8, + }; + + _window = Window.Create(options); + _window.Load += OnLoad; + _window.Update += OnUpdate; + _window.Render += OnRender; + _window.Closing += OnClosing; + _window.Run(); + } + + private void OnLoad() + { + var gl = GL.GetApi(_window!); + var input = _window!.CreateInput(); + + _dats = new DatCollection(_opts.DatDir, DatAccessType.Read); + + // Build QualitySettings for RenderBootstrap (same as Run() above — re-read + // after the GL context is confirmed, mirroring GameWindow.OnLoad). + var store = new AcDream.UI.Abstractions.Panels.Settings.SettingsStore( + AcDream.UI.Abstractions.Panels.Settings.SettingsStore.DefaultPath()); + var display = store.LoadDisplay(); + var quality = AcDream.UI.Abstractions.Settings.QualitySettings.WithEnvOverrides( + AcDream.UI.Abstractions.Settings.QualitySettings.From(display.Quality)); + + _stack = RenderBootstrap.Create(gl, _dats, new RenderBootstrapOptions(quality)); + + // Wire input into UiHost. + foreach (var mouse in input.Mice) + _stack.UiHost.WireMouse(mouse); + foreach (var kb in input.Keyboards) + _stack.UiHost.WireKeyboard(kb); + + // Load the panel described by options and add it to the UI tree. + _source = new LayoutSource(_dats, _stack.ResolveChrome, _stack.VitalsDatFont); + var root = _source.Load(_opts); + if (root is not null) + _stack.UiHost.Root.AddChild(root); + else + Console.Error.WriteLine($"[studio] panel load failed: {_source.LastError}"); + } + + private double _dt; + + private void OnUpdate(double dt) + { + _dt = dt; + } + + private void OnRender(double dt) + { + if (_stack is null) return; + + var gl = _stack.Gl; + gl.ClearColor(0.18f, 0.18f, 0.18f, 1f); + gl.Clear(ColorBufferBit | DepthBufferBit); + + _stack.UiHost.Tick(_dt); + _stack.UiHost.Draw(new Vector2(_window!.Size.X, _window!.Size.Y)); + } + + private void OnClosing() + { + _stack?.DrawDispatcher.Dispose(); + _stack?.MeshAdapter.Dispose(); + _stack?.TextureCache.Dispose(); + _stack?.MeshShader.Dispose(); + _stack?.LightingUbo.Dispose(); + _stack?.UiHost.Dispose(); + _dats?.Dispose(); + _dats = null; + _stack = null; + } + + public void Dispose() + { + _window?.Dispose(); + _window = null; + // If OnClosing wasn't called (e.g. exception before Run()), clean up anyway. + _stack?.UiHost.Dispose(); + _dats?.Dispose(); + _dats = null; + _stack = null; + } +} diff --git a/tests/AcDream.App.Tests/Studio/LayoutSourceTests.cs b/tests/AcDream.App.Tests/Studio/LayoutSourceTests.cs new file mode 100644 index 00000000..5d478223 --- /dev/null +++ b/tests/AcDream.App.Tests/Studio/LayoutSourceTests.cs @@ -0,0 +1,60 @@ +using AcDream.App.Studio; +using AcDream.App.UI; +using AcDream.App.UI.Layout; +using DatReaderWriter; +using DatReaderWriter.Options; + +namespace AcDream.App.Tests.Studio; + +/// +/// Unit tests for . The dat-backed test skips cleanly +/// when the real dats are not present (CI / dev machines without AC installed). +/// +public class LayoutSourceTests +{ + private static (uint handle, int width, int height) NoTex(uint _) => (1u, 1, 1); + + /// Resolve the client dat directory, or null if unavailable (skip the test). + private static string? ResolveDatDir() + { + var fromEnv = Environment.GetEnvironmentVariable("ACDREAM_DAT_DIR"); + if (!string.IsNullOrWhiteSpace(fromEnv) && Directory.Exists(fromEnv)) + return fromEnv; + var def = Path.Combine( + Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), + "Documents", "Asheron's Call"); + return Directory.Exists(def) ? def : null; + } + + /// + /// Load the vitals LayoutDesc (0x2100006C) from the real dats and verify + /// that LayoutSource returns a non-null root with the layout id findable. + /// Skips when the dats are unavailable. + /// + /// Note: the spec asserts FindElement(0x2100006Cu) — that is the layout dat + /// id, not an element id in the widget tree. The actual vitals root element id + /// is 0x100005F9 (confirmed from vitals_2100006C.json fixture). We assert + /// FindElement(0x100005F9) here which verifies the same integration path: the + /// layout was successfully loaded and the element dict was populated. + /// + [Fact] + public void LoadsDatLayout_byId() + { + var dir = ResolveDatDir(); + if (dir is null) + return; // Skip: dats not available on this machine / CI. + + using var dats = new DatCollection(dir, DatAccessType.Read); + + var src = new LayoutSource(dats, NoTex, datFont: null); + var root = src.Load(new StudioOptions(dir, 0x2100006Cu, null)); + + // root must be non-null: Import found the LayoutDesc and built the tree. + Assert.NotNull(root); + Assert.NotNull(src.CurrentLayout); + // The vitals root element id is 0x100005F9 (layout dat id 0x2100006C ≠ element id). + // Asserting FindElement verifies the byId dict was populated by the importer. + Assert.NotNull(src.CurrentLayout!.FindElement(0x100005F9u)); + Assert.Equal(LayoutSourceKind.DatLayout, src.Kind); + } +} From d2240974ecff9bf80d83eb071c7a109e9da0b215 Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 25 Jun 2026 15:06:12 +0200 Subject: [PATCH 18/51] =?UTF-8?q?feat(studio):=20ImGui=20inspector=20?= =?UTF-8?q?=E2=80=94=20canvas=20FBO,=20element=20tree,=20props,=20click-to?= =?UTF-8?q?-inspect?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task 3 of the acdream UI Studio plan. The studio previously drew the panel straight to the window; it now renders the panel into an off-screen FBO (PanelFbo) and displays it in an ImGui Canvas pane alongside a Tree pane (recursive element hierarchy, click-to-select) and a Properties pane (EventId/type/rect/anchors/ZOrder/flags of the selected element). Click-to-inspect: a left-click inside the Canvas calls UiElement.HitTest on the panel root (same-assembly internal access) and selects the topmost element at the cursor, wiring the canvas directly to the tree selection. PanelFbo lifecycle mirrors PaperdollViewportRenderer (RGBA8 color + Depth24Stencil8 renderbuffer, GLStateScope-sealed, lazy resize on size change). V-flip in DrawCanvas (uv0=(0,1)/uv1=(1,0)) corrects GL's bottom-left FBO origin to ImGui's top-left convention so click Y maps directly to panel-local Y without inversion. Co-Authored-By: Claude Sonnet 4.6 --- src/AcDream.App/Studio/PanelFbo.cs | 128 ++++++++++++++++++ src/AcDream.App/Studio/StudioInspector.cs | 158 ++++++++++++++++++++++ src/AcDream.App/Studio/StudioWindow.cs | 77 ++++++++++- 3 files changed, 359 insertions(+), 4 deletions(-) create mode 100644 src/AcDream.App/Studio/PanelFbo.cs create mode 100644 src/AcDream.App/Studio/StudioInspector.cs diff --git a/src/AcDream.App/Studio/PanelFbo.cs b/src/AcDream.App/Studio/PanelFbo.cs new file mode 100644 index 00000000..91270d97 --- /dev/null +++ b/src/AcDream.App/Studio/PanelFbo.cs @@ -0,0 +1,128 @@ +using System; +using System.Numerics; +using AcDream.App.Rendering.Wb; +using AcDream.App.UI; +using Silk.NET.OpenGL; + +namespace AcDream.App.Studio; + +/// +/// Renders a into an off-screen FBO each frame and +/// returns the color texture handle for display in ImGui. +/// +/// Pattern lifted verbatim from : +/// RGBA8 color texture + Depth24Stencil8 renderbuffer, lazily (re)created on +/// size change. The entire 2-D UI pass is sealed in a +/// so it cannot disturb the surrounding ImGui GL state. +/// +/// FBO origin is bottom-left (GL convention). The caller must flip V when +/// displaying the texture in ImGui (pass uv0=(0,1), uv1=(1,0) to ImGui.Image) +/// so the image appears right-side-up in ImGui's top-left coordinate system. +/// +public sealed unsafe class PanelFbo : IDisposable +{ + private readonly GL _gl; + + // Off-screen target — lazily (re)created when the requested size changes. + private uint _fbo; + private uint _colorTex; + private uint _depthRbo; + private int _fbW; + private int _fbH; + + public PanelFbo(GL gl) + { + _gl = gl ?? throw new ArgumentNullException(nameof(gl)); + } + + /// + /// Render (a full draw pass) into a + /// private FBO at × pixels. + /// Returns the GL color texture handle (0 on failure). The texture is valid until + /// the next call to with a different size, or until . + /// + public uint Render(int width, int height, UiHost host) + { + if (width <= 0 || height <= 0 || host is null) return 0u; + + EnsureFramebuffer(width, height); + if (_fbo == 0) return 0u; + + // Seal the entire pass: GLStateScope saves + restores every GL state the + // UI draw touches (viewport, blend, FBO binding, etc.) so ImGui's own state + // — set up by BeginFrame and expected intact by Render — is untouched. + using var scope = new GLStateScope(_gl); + + _gl.BindFramebuffer(FramebufferTarget.Framebuffer, _fbo); + _gl.Viewport(0, 0, (uint)width, (uint)height); + _gl.Disable(EnableCap.ScissorTest); + _gl.ClearColor(0.18f, 0.18f, 0.18f, 1f); // dark bg matching the old direct draw + _gl.ClearDepth(1.0); + _gl.DepthMask(true); + _gl.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); + + host.Draw(new Vector2(width, height)); + + // FBO stays bound here; GLStateScope.Dispose() restores the previous binding. + return _colorTex; + } + + // ── FBO lifecycle (mirrors PaperdollViewportRenderer.EnsureFramebuffer) ────── + + private void EnsureFramebuffer(int width, int height) + { + if (_fbo != 0 && width == _fbW && height == _fbH) return; + DeleteFramebuffer(); + + _fbW = width; + _fbH = height; + + _colorTex = _gl.GenTexture(); + _gl.BindTexture(TextureTarget.Texture2D, _colorTex); + _gl.TexImage2D(TextureTarget.Texture2D, 0, InternalFormat.Rgba8, + (uint)width, (uint)height, 0, + PixelFormat.Rgba, PixelType.UnsignedByte, (void*)0); + _gl.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, + (int)TextureMinFilter.Linear); + _gl.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, + (int)TextureMinFilter.Linear); + _gl.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, + (int)TextureWrapMode.ClampToEdge); + _gl.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, + (int)TextureWrapMode.ClampToEdge); + _gl.BindTexture(TextureTarget.Texture2D, 0); + + _depthRbo = _gl.GenRenderbuffer(); + _gl.BindRenderbuffer(RenderbufferTarget.Renderbuffer, _depthRbo); + _gl.RenderbufferStorage(RenderbufferTarget.Renderbuffer, + InternalFormat.Depth24Stencil8, (uint)width, (uint)height); + _gl.BindRenderbuffer(RenderbufferTarget.Renderbuffer, 0); + + _fbo = _gl.GenFramebuffer(); + _gl.BindFramebuffer(FramebufferTarget.Framebuffer, _fbo); + _gl.FramebufferTexture2D(FramebufferTarget.Framebuffer, + FramebufferAttachment.ColorAttachment0, + TextureTarget.Texture2D, _colorTex, 0); + _gl.FramebufferRenderbuffer(FramebufferTarget.Framebuffer, + FramebufferAttachment.DepthStencilAttachment, + RenderbufferTarget.Renderbuffer, _depthRbo); + + var status = _gl.CheckFramebufferStatus(FramebufferTarget.Framebuffer); + _gl.BindFramebuffer(FramebufferTarget.Framebuffer, 0); + if (status != GLEnum.FramebufferComplete) + { + Console.WriteLine($"[studio] PanelFbo incomplete: {status} ({width}x{height})"); + DeleteFramebuffer(); + } + } + + private void DeleteFramebuffer() + { + if (_fbo != 0) { _gl.DeleteFramebuffer(_fbo); _fbo = 0; } + if (_colorTex != 0) { _gl.DeleteTexture(_colorTex); _colorTex = 0; } + if (_depthRbo != 0) { _gl.DeleteRenderbuffer(_depthRbo); _depthRbo = 0; } + _fbW = _fbH = 0; + } + + public void Dispose() => DeleteFramebuffer(); +} diff --git a/src/AcDream.App/Studio/StudioInspector.cs b/src/AcDream.App/Studio/StudioInspector.cs new file mode 100644 index 00000000..43cc03b0 --- /dev/null +++ b/src/AcDream.App/Studio/StudioInspector.cs @@ -0,0 +1,158 @@ +using System.Numerics; +using AcDream.App.UI; +using ImGuiNET; + +namespace AcDream.App.Studio; + +/// +/// Three-pane ImGui IDE for the acdream UI Studio: +/// +/// Canvas — shows the panel FBO texture; click-to-inspect returns the +/// panel-local pixel coordinate of the click. +/// Tree — recursive ImGui tree of the element hierarchy; clicking a node +/// sets . +/// Properties — shows the element's geometry, +/// anchors, and z-order. +/// +/// +/// Coordinate mapping for the canvas: +/// The FBO is rendered at the same logical size as the window, so a click at image-local +/// pixel (ix, iy) maps directly to panel coord (ix, iy) — no scale factor needed when +/// the image is drawn 1:1. We draw it 1:1 if it fits; if the Canvas ImGui window is +/// smaller we let ImGui clip it (the click coordinates are still image-local pixels so +/// no scale correction is needed in v1). +/// +/// V-flip: the FBO origin is bottom-left (GL convention), but ImGui images use +/// top-left. We pass uv0=(0,1), uv1=(1,0) to ImGui.Image, which flips V so +/// the panel renders right-side-up in the canvas. Because V is flipped, image-local +/// pixel y = 0 is the TOP of the panel, matching the UiRoot's top-left origin — so +/// click y maps directly without further inversion. +/// +public sealed class StudioInspector +{ + /// Currently selected element (set by tree-click or canvas-click). + public UiElement? Selected { get; set; } + + // ── Canvas ──────────────────────────────────────────────────────────────────── + + /// + /// Draw the "Canvas" ImGui window containing the panel FBO texture. + /// If the user left-clicks inside the image, returns the panel-local pixel + /// coordinate of the click (origin top-left, matching UiRoot's space); else null. + /// + /// The texture is drawn with uv0=(0,1) / uv1=(1,0) to flip V, correcting + /// the GL bottom-left FBO origin to the ImGui top-left convention. + /// + public (int x, int y)? DrawCanvas(nint panelTex, int width, int height) + { + ImGui.Begin("Canvas"); + + var imageSize = new Vector2(width, height); + // V-flip: FBO origin is bottom-left; ImGui images expect top-left. + // uv0 = bottom-left of texture = top of the panel in screen space. + // uv1 = top-right of texture = bottom of the panel in screen space. + var uv0 = new Vector2(0f, 1f); + var uv1 = new Vector2(1f, 0f); + ImGui.Image(panelTex, imageSize, uv0, uv1); + + (int x, int y)? result = null; + + // Detect a left-click on the image. + if (ImGui.IsItemHovered() && ImGui.IsMouseClicked(ImGuiMouseButton.Left)) + { + // Image item rect: top-left of the drawn image in screen (display) coords. + var rectMin = ImGui.GetItemRectMin(); + var mousePos = ImGui.GetMousePos(); + + // Panel-local pixel = mouse offset from image top-left. + // Because we flipped V (uv0.Y=1, uv1.Y=0), image row 0 IS the top of the panel, + // so y needs no further inversion. + int ix = (int)(mousePos.X - rectMin.X); + int iy = (int)(mousePos.Y - rectMin.Y); + // Clamp to image bounds. + if (ix >= 0 && ix < width && iy >= 0 && iy < height) + result = (ix, iy); + } + + ImGui.End(); + return result; + } + + // ── Tree ────────────────────────────────────────────────────────────────────── + + /// Draw the "Tree" ImGui window. Clicking a node sets . + public void DrawTree(UiElement root) + { + ImGui.Begin("Tree"); + DrawTreeNode(root); + ImGui.End(); + } + + private void DrawTreeNode(UiElement el) + { + // Label: EventId (hex) + C# type name, e.g. "0x10000001 [UiDatElement]" + string label = $"0x{el.EventId:X8} [{el.GetType().Name}]"; + + bool isSelected = ReferenceEquals(el, Selected); + bool hasChildren = el.Children.Count > 0; + + ImGuiTreeNodeFlags flags = ImGuiTreeNodeFlags.OpenOnArrow + | ImGuiTreeNodeFlags.SpanAvailWidth; + if (!hasChildren) + flags |= ImGuiTreeNodeFlags.Leaf; + if (isSelected) + flags |= ImGuiTreeNodeFlags.Selected; + + bool open = ImGui.TreeNodeEx(label, flags); + + // Click on the node label (not the arrow) selects it. + if (ImGui.IsItemClicked(ImGuiMouseButton.Left)) + Selected = el; + + if (open) + { + foreach (var child in el.Children) + DrawTreeNode(child); + ImGui.TreePop(); + } + } + + // ── Properties ─────────────────────────────────────────────────────────────── + + /// Draw the "Properties" ImGui window for . + public void DrawProperties() + { + ImGui.Begin("Properties"); + + var el = Selected; + if (el is null) + { + ImGui.TextUnformatted("(nothing selected)"); + ImGui.End(); + return; + } + + ImGui.TextUnformatted($"Id (EventId): 0x{el.EventId:X8}"); + ImGui.TextUnformatted($"Type: {el.GetType().Name}"); + ImGui.TextUnformatted($"Name: {el.Name ?? "(null)"}"); + ImGui.Separator(); + ImGui.TextUnformatted($"Rect: ({el.Left}, {el.Top}, {el.Width} x {el.Height})"); + ImGui.TextUnformatted($"Anchors: {el.Anchors}"); + ImGui.TextUnformatted($"ZOrder: {el.ZOrder}"); + ImGui.Separator(); + ImGui.TextUnformatted($"Visible: {el.Visible}"); + ImGui.TextUnformatted($"Enabled: {el.Enabled}"); + ImGui.TextUnformatted($"ClickThrough: {el.ClickThrough}"); + ImGui.TextUnformatted($"Draggable: {el.Draggable}"); + ImGui.TextUnformatted($"Resizable: {el.Resizable}"); + ImGui.TextUnformatted($"IsDragSource: {el.IsDragSource}"); + ImGui.TextUnformatted($"HandlesClick: {el.HandlesClick}"); + ImGui.TextUnformatted($"Opacity: {el.Opacity:F2}"); + ImGui.Separator(); + var sp = el.ScreenPosition; + ImGui.TextUnformatted($"ScreenPos: ({sp.X:F1}, {sp.Y:F1})"); + ImGui.TextUnformatted($"Children: {el.Children.Count}"); + + ImGui.End(); + } +} diff --git a/src/AcDream.App/Studio/StudioWindow.cs b/src/AcDream.App/Studio/StudioWindow.cs index d55064b4..b77d1420 100644 --- a/src/AcDream.App/Studio/StudioWindow.cs +++ b/src/AcDream.App/Studio/StudioWindow.cs @@ -1,5 +1,6 @@ using System.Numerics; using AcDream.App.Rendering; +using AcDream.App.UI; using DatReaderWriter; using DatReaderWriter.Options; using Silk.NET.Input; @@ -17,6 +18,15 @@ namespace AcDream.App.Studio; /// /// Usage: dotnet run -- ui-studio [dat-dir] [--layout 0xNNNN] [--markup path] /// +/// Task 3 adds an ImGui IDE on top of the panel FBO: +/// +/// Canvas pane — the panel rendered off-screen via . +/// Tree pane — the element hierarchy; click-to-select. +/// Properties pane — geometry/anchors/flags of the selected element. +/// Click-to-inspect — a left-click in the canvas selects the topmost +/// element under the cursor via . +/// +/// /// The window is intentionally thin: no game world, no physics, no streaming — /// just GL + UiHost + the layout under test, identical to how the panel /// appears inside GameWindow. @@ -31,6 +41,12 @@ public sealed class StudioWindow : IDisposable private RenderStack? _stack; private LayoutSource? _source; + // Task 3 additions. + private AcDream.UI.ImGui.ImGuiBootstrapper? _imgui; + private PanelFbo? _panelFbo; + private StudioInspector? _inspector; + private UiElement? _panelRoot; // top-level element added to UiRoot (for hit-test + tree) + public StudioWindow(StudioOptions opts) { _opts = opts ?? throw new ArgumentNullException(nameof(opts)); @@ -99,10 +115,16 @@ public sealed class StudioWindow : IDisposable // Load the panel described by options and add it to the UI tree. _source = new LayoutSource(_dats, _stack.ResolveChrome, _stack.VitalsDatFont); var root = _source.Load(_opts); + _panelRoot = root; if (root is not null) _stack.UiHost.Root.AddChild(root); else Console.Error.WriteLine($"[studio] panel load failed: {_source.LastError}"); + + // Task 3: ImGui IDE. The studio is always "devtools" — no gate flag needed. + _imgui = new AcDream.UI.ImGui.ImGuiBootstrapper(gl, _window!, input); + _panelFbo = new PanelFbo(gl); + _inspector = new StudioInspector(); } private double _dt; @@ -114,18 +136,61 @@ public sealed class StudioWindow : IDisposable private void OnRender(double dt) { - if (_stack is null) return; + if (_stack is null || _imgui is null || _panelFbo is null || _inspector is null) + return; var gl = _stack.Gl; - gl.ClearColor(0.18f, 0.18f, 0.18f, 1f); + int w = _window!.Size.X; + int h = _window!.Size.Y; + + // 1. Tick the UI widgets. + _stack.UiHost.Tick(_dt); + + // 2. Render the panel into the off-screen FBO; get the color texture. + // The FBO is the same logical size as the window, so element rects map 1:1 to + // FBO pixels — no scale factor needed when displaying the canvas at full size. + uint panelTex = _panelFbo.Render(w, h, _stack.UiHost); + + // 3. Clear the window back-buffer (the dark ImGui background shows behind panes). + gl.ClearColor(0.1f, 0.1f, 0.1f, 1f); gl.Clear(ColorBufferBit | DepthBufferBit); - _stack.UiHost.Tick(_dt); - _stack.UiHost.Draw(new Vector2(_window!.Size.X, _window!.Size.Y)); + // 4. Begin the ImGui frame. + _imgui.BeginFrame((float)dt); + + // 5. Canvas pane — show the FBO texture; detect clicks. + (int x, int y)? click = null; + if (panelTex != 0) + click = _inspector.DrawCanvas((nint)panelTex, w, h); + + // 6. If the user clicked inside the canvas, hit-test the panel tree and select. + if (click is { } c && _panelRoot is not null) + { + // UiElement.HitTest is internal — accessible from AcDream.App.Studio (same assembly). + // We call it on the panel root with coords relative to its top-left. + var screenPos = _panelRoot.ScreenPosition; + var hit = _panelRoot.HitTest(c.x - screenPos.X, c.y - screenPos.Y); + if (hit is not null) + _inspector.Selected = hit; + } + + // 7. Element tree pane. + if (_panelRoot is not null) + _inspector.DrawTree(_panelRoot); + + // 8. Properties pane. + _inspector.DrawProperties(); + + // 9. Finalise ImGui and flush draw data to the window. + _imgui.Render(); } private void OnClosing() { + _imgui?.Dispose(); + _panelFbo?.Dispose(); + _imgui = null; + _panelFbo = null; _stack?.DrawDispatcher.Dispose(); _stack?.MeshAdapter.Dispose(); _stack?.TextureCache.Dispose(); @@ -139,6 +204,10 @@ public sealed class StudioWindow : IDisposable public void Dispose() { + _imgui?.Dispose(); + _panelFbo?.Dispose(); + _imgui = null; + _panelFbo = null; _window?.Dispose(); _window = null; // If OnClosing wasn't called (e.g. exception before Run()), clean up anyway. From 101a35cc2d6418847421014f0df8e904b1bbdeca Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 25 Jun 2026 15:14:47 +0200 Subject: [PATCH 19/51] =?UTF-8?q?fix(studio):=20Task=203=20review=20?= =?UTF-8?q?=E2=80=94=20UiRoot.Pick,=20RenderStack=20IDisposable,=20dt=20cl?= =?UTF-8?q?eanup?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Code-review follow-ups to the ImGui inspector: - Add public UiRoot.Pick(x,y) over the private HitTestTopDown (honors Z-order + modal exclusivity); StudioWindow uses it instead of a manual UiElement.HitTest with subtracted ScreenPosition. - RenderStack : IDisposable — disposes the GL pieces it owns in one place; StudioWindow OnClosing + Dispose both call _stack?.Dispose(), closing the error-path leak (only UiHost was disposed on the Dispose-without-OnClosing path). - Drop the stale _dt field; OnRender passes its own dt to Tick + BeginFrame. - Fix a stale PanelFbo comment. Co-Authored-By: Claude Opus 4.8 (1M context) --- src/AcDream.App/Rendering/RenderBootstrap.cs | 15 +++++++- src/AcDream.App/Studio/PanelFbo.cs | 2 +- src/AcDream.App/Studio/StudioWindow.cs | 36 +++++++------------- src/AcDream.App/UI/UiRoot.cs | 4 +++ 4 files changed, 32 insertions(+), 25 deletions(-) diff --git a/src/AcDream.App/Rendering/RenderBootstrap.cs b/src/AcDream.App/Rendering/RenderBootstrap.cs index 8f8a1001..6a23a0d2 100644 --- a/src/AcDream.App/Rendering/RenderBootstrap.cs +++ b/src/AcDream.App/Rendering/RenderBootstrap.cs @@ -22,8 +22,21 @@ public sealed record RenderStack( Wb.WbDrawDispatcher DrawDispatcher, SceneLightingUboBinding LightingUbo, AcDream.App.UI.UiHost UiHost, - AcDream.App.UI.UiDatFont? VitalsDatFont) + AcDream.App.UI.UiDatFont? VitalsDatFont) : System.IDisposable { + /// Dispose the GL pieces this stack OWNS (everything created in + /// ). + are caller-owned + /// and NOT disposed here. Called once at studio teardown. + public void Dispose() + { + DrawDispatcher.Dispose(); + MeshAdapter.Dispose(); + TextureCache.Dispose(); + MeshShader.Dispose(); + LightingUbo.Dispose(); + UiHost.Dispose(); + } + /// /// Resolves a sprite id (0x06xxxxxx) to a (GL handle, width, height) triple. /// Copied verbatim from GameWindow's ResolveChrome closure — it calls diff --git a/src/AcDream.App/Studio/PanelFbo.cs b/src/AcDream.App/Studio/PanelFbo.cs index 91270d97..de6aabb4 100644 --- a/src/AcDream.App/Studio/PanelFbo.cs +++ b/src/AcDream.App/Studio/PanelFbo.cs @@ -56,7 +56,7 @@ public sealed unsafe class PanelFbo : IDisposable _gl.BindFramebuffer(FramebufferTarget.Framebuffer, _fbo); _gl.Viewport(0, 0, (uint)width, (uint)height); _gl.Disable(EnableCap.ScissorTest); - _gl.ClearColor(0.18f, 0.18f, 0.18f, 1f); // dark bg matching the old direct draw + _gl.ClearColor(0.18f, 0.18f, 0.18f, 1f); // opaque dark-grey canvas background (the FBO IS the canvas) _gl.ClearDepth(1.0); _gl.DepthMask(true); _gl.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit); diff --git a/src/AcDream.App/Studio/StudioWindow.cs b/src/AcDream.App/Studio/StudioWindow.cs index b77d1420..151464e2 100644 --- a/src/AcDream.App/Studio/StudioWindow.cs +++ b/src/AcDream.App/Studio/StudioWindow.cs @@ -24,7 +24,7 @@ namespace AcDream.App.Studio; /// Tree pane — the element hierarchy; click-to-select. /// Properties pane — geometry/anchors/flags of the selected element. /// Click-to-inspect — a left-click in the canvas selects the topmost -/// element under the cursor via . +/// element under the cursor via . /// /// /// The window is intentionally thin: no game world, no physics, no streaming — @@ -127,12 +127,7 @@ public sealed class StudioWindow : IDisposable _inspector = new StudioInspector(); } - private double _dt; - - private void OnUpdate(double dt) - { - _dt = dt; - } + private void OnUpdate(double dt) { } private void OnRender(double dt) { @@ -143,8 +138,8 @@ public sealed class StudioWindow : IDisposable int w = _window!.Size.X; int h = _window!.Size.Y; - // 1. Tick the UI widgets. - _stack.UiHost.Tick(_dt); + // 1. Tick the UI widgets (OnRender's own dt — Update + Render fire with the same delta). + _stack.UiHost.Tick(dt); // 2. Render the panel into the off-screen FBO; get the color texture. // The FBO is the same logical size as the window, so element rects map 1:1 to @@ -163,13 +158,12 @@ public sealed class StudioWindow : IDisposable if (panelTex != 0) click = _inspector.DrawCanvas((nint)panelTex, w, h); - // 6. If the user clicked inside the canvas, hit-test the panel tree and select. - if (click is { } c && _panelRoot is not null) + // 6. If the user clicked inside the canvas, hit-test the whole UI tree (UiRoot.Pick honors + // Z-order + modal exclusivity) and select the topmost element. The canvas click coord is + // in the same root-space the FBO was drawn in, so it maps 1:1. + if (click is { } c) { - // UiElement.HitTest is internal — accessible from AcDream.App.Studio (same assembly). - // We call it on the panel root with coords relative to its top-left. - var screenPos = _panelRoot.ScreenPosition; - var hit = _panelRoot.HitTest(c.x - screenPos.X, c.y - screenPos.Y); + var hit = _stack.UiHost.Root.Pick(c.x, c.y); if (hit is not null) _inspector.Selected = hit; } @@ -191,12 +185,7 @@ public sealed class StudioWindow : IDisposable _panelFbo?.Dispose(); _imgui = null; _panelFbo = null; - _stack?.DrawDispatcher.Dispose(); - _stack?.MeshAdapter.Dispose(); - _stack?.TextureCache.Dispose(); - _stack?.MeshShader.Dispose(); - _stack?.LightingUbo.Dispose(); - _stack?.UiHost.Dispose(); + _stack?.Dispose(); // whole render stack: dispatcher/mesh/textures/shader/ubo/uihost _dats?.Dispose(); _dats = null; _stack = null; @@ -210,8 +199,9 @@ public sealed class StudioWindow : IDisposable _panelFbo = null; _window?.Dispose(); _window = null; - // If OnClosing wasn't called (e.g. exception before Run()), clean up anyway. - _stack?.UiHost.Dispose(); + // If OnClosing wasn't called (e.g. an exception before Run() completed), dispose the FULL + // stack anyway — the review flagged that disposing only UiHost here leaked the rest. + _stack?.Dispose(); _dats?.Dispose(); _dats = null; _stack = null; diff --git a/src/AcDream.App/UI/UiRoot.cs b/src/AcDream.App/UI/UiRoot.cs index 7740fddc..251b66c1 100644 --- a/src/AcDream.App/UI/UiRoot.cs +++ b/src/AcDream.App/UI/UiRoot.cs @@ -655,6 +655,10 @@ public sealed class UiRoot : UiElement return (null, 0, 0); } + /// Public hit-test for tooling (the UI Studio inspector): the topmost element under + /// (x,y) in root space, honoring modal exclusivity + Z-order. Wraps the private HitTestTopDown. + public UiElement? Pick(int x, int y) => HitTestTopDown(x, y).element; + private static UiElement? FindWindow(UiElement? e) { while (e is not null) From 0bdc866c1575356f079e23e25a27c3799d7af599 Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 25 Jun 2026 15:45:11 +0200 Subject: [PATCH 20/51] =?UTF-8?q?feat(studio):=20FixtureProvider=20?= =?UTF-8?q?=E2=80=94=20sample=20data=20populates=20the=202-D=20panels?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task 4 of the UI Studio plan: adds SampleData (static ClientObjectTable builder with a synthetic player, 6 loose items, 2 side bags, and 3 equipped pieces) and FixtureProvider (switches on layoutId and calls the production controller Bind methods — VitalsController, ToolbarController, InventoryController — so the studio previews panels with plausible data instead of empty widgets). Icon ids approach: raw-resolve stub — resolves the base iconId via RenderStack.ResolveChrome and returns the GL handle directly. This is v1 (single-layer icon); the full 5-layer IconComposer composite is a live-game concern, not a layout-preview concern. StudioWindow wires FixtureProvider.Populate after _source.Load; the ClientObjectTable is stored on _objects so controller event subscriptions (ObjectAdded/ObjectMoved) remain live for the window's lifetime. 4 new FixtureProviderTests (SampleTable_hasPackContents, SampleTable_hasWeaponAndArmor, SampleTable_hasEquippedItems, SampleTable_hasSideBags) — all pass. Full App suite: 602 passed / 2 skipped (pre-existing) / 0 failed. Build green. Co-Authored-By: Claude Sonnet 4.6 --- src/AcDream.App/Studio/FixtureProvider.cs | 114 ++++++++++++ src/AcDream.App/Studio/SampleData.cs | 168 ++++++++++++++++++ src/AcDream.App/Studio/StudioWindow.cs | 15 ++ .../Studio/FixtureProviderTests.cs | 105 +++++++++++ 4 files changed, 402 insertions(+) create mode 100644 src/AcDream.App/Studio/FixtureProvider.cs create mode 100644 src/AcDream.App/Studio/SampleData.cs create mode 100644 tests/AcDream.App.Tests/Studio/FixtureProviderTests.cs diff --git a/src/AcDream.App/Studio/FixtureProvider.cs b/src/AcDream.App/Studio/FixtureProvider.cs new file mode 100644 index 00000000..4266aad9 --- /dev/null +++ b/src/AcDream.App/Studio/FixtureProvider.cs @@ -0,0 +1,114 @@ +using AcDream.App.Rendering; +using AcDream.App.UI; +using AcDream.App.UI.Layout; +using AcDream.Core.Items; +using AcDream.Core.Net.Messages; + +namespace AcDream.App.Studio; + +/// +/// Populates a loaded panel with sample data by calling the production +/// controller Bind methods against . +/// +/// +/// The studio is intentionally thin — there is no live game session, no +/// server connection, and no network. FixtureProvider bridges that gap by +/// feeding static fixtures (vitals percentages, a fake inventory, empty +/// shortcut lists) so the bound widgets show plausible state instead of +/// empty zeroes. +/// +/// +/// +/// IconIds approach: raw-resolve stub — resolve the base iconId +/// via and return the GL handle +/// directly. This is intentionally simpler than GameWindow's full +/// (5-layer composite). The raw icon is enough +/// to confirm the grid cells draw something in the studio; the full +/// compositor is the live-game concern, not the layout preview concern. +/// +/// +public static class FixtureProvider +{ + /// + /// Populate with sample data appropriate for + /// . Calls the production controller Bind + /// methods so the panel's widgets drive off the same code path as the + /// full game. + /// + /// The LayoutDesc dat id used to import the layout. + /// The imported layout whose widgets to populate. + /// The live render stack (for + /// and ). + /// A already seeded by + /// . + public static void Populate( + uint layoutId, + ImportedLayout layout, + RenderStack stack, + ClientObjectTable objects) + { + switch (layoutId) + { + case 0x2100006Cu: // vitals + VitalsController.Bind(layout, + healthPct: () => SampleData.HealthPct, + staminaPct: () => SampleData.StaminaPct, + manaPct: () => SampleData.ManaPct, + healthText: () => "80/100", + staminaText: () => "60/100", + manaText: () => "90/100"); + break; + + case 0x21000016u: // toolbar + ToolbarController.Bind( + layout, + objects, + shortcuts: () => System.Array.Empty(), + iconIds: MakeIconIds(stack), + useItem: _ => { }, + combatState: null, + peaceDigits: null, + warDigits: null, + emptyDigits: null, + sendAddShortcut: null, + sendRemoveShortcut: null); + break; + + case 0x21000023u: // inventory + InventoryController.Bind( + layout, + objects, + playerGuid: () => SampleData.PlayerGuid, + iconIds: MakeIconIds(stack), + strength: () => 100, + datFont: stack.VitalsDatFont); + break; + + default: + // Unknown layout — no-op; the panel renders structurally. + break; + } + } + + // ── Helpers ───────────────────────────────────────────────────────────── + + /// + /// Build the iconIds delegate for toolbar / inventory controllers. + /// + /// + /// Raw-resolve stub: resolve the base (arg 2) + /// via and return its GL handle. + /// The remaining args (type, underlayId, overlayId, effects) are ignored + /// for the studio — a single-layer icon is sufficient for layout preview. + /// + /// + /// This is what the task spec calls "v1 raw-resolve stub". + /// + private static Func MakeIconIds(RenderStack stack) + => (_, iconId, _, _, _) => + { + if (iconId == 0u) return 0u; + var (handle, _, _) = stack.ResolveChrome(iconId); + return handle; + }; +} diff --git a/src/AcDream.App/Studio/SampleData.cs b/src/AcDream.App/Studio/SampleData.cs new file mode 100644 index 00000000..2704c046 --- /dev/null +++ b/src/AcDream.App/Studio/SampleData.cs @@ -0,0 +1,168 @@ +using AcDream.Core.Items; + +namespace AcDream.App.Studio; + +/// +/// Static sample data for the UI Studio fixture provider. +/// Provides a pre-built populated with a +/// representative player, their main-pack items, side bags, and equipped gear, +/// so the 2-D inventory / paperdoll panels render populated when previewed in +/// the studio without a live game session. +/// +/// Icon ids used (all real 0x06xxxxxx RenderSurface ids confirmed in the dats): +/// Inventory empty-slot sprite : 0x06004D20 +/// Generic "misc" item : 0x060011D4 (icon_misc_underlay / fallback) +/// Iron Sword (melee weapon) : 0x060011CBu (acclient default weapon underlay) +/// Leather Breastplate (armor) : 0x060011CFu (acclient default armor underlay) +/// Leather Gloves : 0x060011F3u (acclient default clothing underlay) +/// Steel Ring : 0x060011D5u (acclient default jewelry underlay) +/// Healing Kit : 0x060011D4u (generic misc fallback) +/// Spell components : 0x060011D4u (generic misc fallback) +/// Side-bag 1 (Container) : 0x06004D20u +/// Side-bag 2 (Container) : 0x06004D20u +/// Equipped helm (HeadWear) : 0x060011F3u +/// Equipped chest armor : 0x060011CFu +/// Equipped melee weapon : 0x060011CBu +/// +/// These are the icon *base* RenderSurface ids — the same ids GameWindow passes +/// as `iconId` into the iconIds lambda. FixtureProvider resolves them via +/// and returns the raw GL handle. +/// +public static class SampleData +{ + // ── Guids ──────────────────────────────────────────────────────────────── + + /// Fake server guid for the studio's synthetic player. + public const uint PlayerGuid = 0x50000001u; + + // Items in main pack (slots 0–5). + private const uint SwordGuid = 0x50000010u; + private const uint ChestGuid = 0x50000011u; + private const uint GlovesGuid = 0x50000012u; + private const uint RingGuid = 0x50000013u; + private const uint HealKitGuid = 0x50000014u; + private const uint CompGuid = 0x50000015u; + + // Side bags (also in main pack, ContainerId = PlayerGuid; slots 6 & 7). + private const uint Bag1Guid = 0x50000020u; + private const uint Bag2Guid = 0x50000021u; + + // Equipped items (ContainerId = PlayerGuid, CurrentlyEquippedLocation set). + private const uint HelmGuid = 0x50000030u; + private const uint ChestEqGuid = 0x50000031u; + private const uint WeaponEqGuid = 0x50000032u; + + // ── Icon ids (0x06xxxxxx RenderSurface dat ids) ─────────────────────────── + + // These are the same underlay/fallback icon ids the IconComposer tests pin. + private const uint IconWeapon = 0x060011CBu; // weapon underlay + private const uint IconArmor = 0x060011CFu; // armor underlay + private const uint IconClothing = 0x060011F3u; // clothing underlay + private const uint IconJewelry = 0x060011D5u; // jewelry underlay + private const uint IconMisc = 0x060011D4u; // misc / fallback underlay + + // ── Public API ────────────────────────────────────────────────────────── + + /// + /// Build a fresh populated with the + /// studio's sample player + a realistic inventory snapshot. + /// The table is owned by the caller and should be kept alive for the + /// window's lifetime. + /// + public static ClientObjectTable BuildObjectTable() + { + var t = new ClientObjectTable(); + + // ── Player object ───────────────────────────────────────────────── + t.AddOrUpdate(new ClientObject + { + ObjectId = PlayerGuid, + Name = "Studio Player", + Type = ItemType.Creature, + ItemsCapacity = 102, + ContainersCapacity = 7, + }); + + // ── Loose items in main pack (slots 0–5) ────────────────────────── + + AddItem(t, SwordGuid, ItemType.MeleeWeapon, IconWeapon, "Iron Sword", PlayerGuid, 0, burden: 60); + AddItem(t, ChestGuid, ItemType.Armor, IconArmor, "Leather Breastplate", PlayerGuid, 1, burden: 200); + AddItem(t, GlovesGuid, ItemType.Clothing, IconClothing, "Leather Gloves", PlayerGuid, 2, burden: 50); + AddItem(t, RingGuid, ItemType.Jewelry, IconJewelry, "Steel Ring", PlayerGuid, 3, burden: 10); + AddItem(t, HealKitGuid, ItemType.Misc, IconMisc, "Healing Kit", PlayerGuid, 4, burden: 30); + AddItem(t, CompGuid, ItemType.SpellComponents, IconMisc, "Spell Comps", PlayerGuid, 5, burden: 25, stackSize: 50, stackMax: 100); + + // ── Side bags (Container items in main pack, slots 6 & 7) ───────── + + AddItem(t, Bag1Guid, ItemType.Container, IconMisc, "Small Pack 1", + containerId: PlayerGuid, slot: 6, burden: 20, itemsCapacity: 24); + AddItem(t, Bag2Guid, ItemType.Container, IconMisc, "Small Pack 2", + containerId: PlayerGuid, slot: 7, burden: 20, itemsCapacity: 24); + + // ── Equipped items (ContainerId = PlayerGuid, CurrentlyEquippedLocation set) ── + + AddEquipped(t, HelmGuid, ItemType.Armor, IconClothing, "Tin Helm", EquipMask.HeadWear); + AddEquipped(t, ChestEqGuid, ItemType.Armor, IconArmor, "Chain Coat", EquipMask.ChestArmor); + AddEquipped(t, WeaponEqGuid, ItemType.MeleeWeapon, IconWeapon, "Wooden Sword", EquipMask.MeleeWeapon); + + return t; + } + + // ── Sample vital constants (used by FixtureProvider) ──────────────────── + + public const float HealthPct = 0.8f; + public const float StaminaPct = 0.6f; + public const float ManaPct = 0.9f; + + // ── Helpers ───────────────────────────────────────────────────────────── + + private static void AddItem( + ClientObjectTable t, + uint guid, + ItemType type, + uint iconId, + string name, + uint containerId, + int slot, + int burden = 0, + int stackSize = 1, + int stackMax = 1, + int itemsCapacity = 0) + { + t.AddOrUpdate(new ClientObject + { + ObjectId = guid, + Name = name, + Type = type, + IconId = iconId, + Burden = burden, + StackSize = stackSize, + StackSizeMax = stackMax, + ItemsCapacity = itemsCapacity, + }); + t.MoveItem(guid, containerId, slot); + } + + private static void AddEquipped( + ClientObjectTable t, + uint guid, + ItemType type, + uint iconId, + string name, + EquipMask equipMask) + { + t.AddOrUpdate(new ClientObject + { + ObjectId = guid, + Name = name, + Type = type, + IconId = iconId, + ValidLocations = equipMask, + CurrentlyEquippedLocation = equipMask, + ContainerId = PlayerGuid, + }); + // Update the equip location on the object via MoveItem (sets ContainerId + + // CurrentlyEquippedLocation via the equip overload). + t.MoveItem(guid, PlayerGuid, newSlot: -1, newEquipLocation: equipMask); + } +} diff --git a/src/AcDream.App/Studio/StudioWindow.cs b/src/AcDream.App/Studio/StudioWindow.cs index 151464e2..43eb5c5b 100644 --- a/src/AcDream.App/Studio/StudioWindow.cs +++ b/src/AcDream.App/Studio/StudioWindow.cs @@ -47,6 +47,10 @@ public sealed class StudioWindow : IDisposable private StudioInspector? _inspector; private UiElement? _panelRoot; // top-level element added to UiRoot (for hit-test + tree) + // Task 4: sample data table — built once in OnLoad and kept alive for the window's lifetime + // so the controller subscriptions (ObjectAdded/ObjectMoved etc.) fire correctly. + private AcDream.Core.Items.ClientObjectTable? _objects; + public StudioWindow(StudioOptions opts) { _opts = opts ?? throw new ArgumentNullException(nameof(opts)); @@ -117,7 +121,18 @@ public sealed class StudioWindow : IDisposable var root = _source.Load(_opts); _panelRoot = root; if (root is not null) + { _stack.UiHost.Root.AddChild(root); + + // Task 4: populate the panel with sample data via production controllers, + // so inventory / vitals / toolbar panels render with plausible content. + if (_source.CurrentLayout is not null) + { + uint layoutId = _opts.LayoutId ?? 0x2100006Cu; + _objects = SampleData.BuildObjectTable(); + FixtureProvider.Populate(layoutId, _source.CurrentLayout, _stack, _objects); + } + } else Console.Error.WriteLine($"[studio] panel load failed: {_source.LastError}"); diff --git a/tests/AcDream.App.Tests/Studio/FixtureProviderTests.cs b/tests/AcDream.App.Tests/Studio/FixtureProviderTests.cs new file mode 100644 index 00000000..88a517e7 --- /dev/null +++ b/tests/AcDream.App.Tests/Studio/FixtureProviderTests.cs @@ -0,0 +1,105 @@ +using AcDream.App.Studio; +using AcDream.Core.Items; + +namespace AcDream.App.Tests.Studio; + +/// +/// Unit tests for and . +/// These tests have NO GL/dat dependency — they only exercise the in-memory +/// ClientObjectTable population that FixtureProvider uses. +/// +public class FixtureProviderTests +{ + /// + /// SampleData.BuildObjectTable() must place at least 6 items in the + /// player's main pack (ContainerId == PlayerGuid) and the player object + /// itself must exist with the right capacities. + /// + [Fact] + public void SampleTable_hasPackContents() + { + var t = SampleData.BuildObjectTable(); + + // Player object must exist. + var player = t.Get(SampleData.PlayerGuid); + Assert.NotNull(player); + Assert.Equal(102, player!.ItemsCapacity); + Assert.Equal(7, player.ContainersCapacity); + + // At least 6 loose items must be in the main pack. + var contents = t.GetContents(SampleData.PlayerGuid); + Assert.True(contents.Count >= 6, + $"Expected >= 6 items in player pack; got {contents.Count}"); + + // Verify the first item has a non-zero IconId and a recognised Type. + var firstId = contents[0]; + var first = t.Get(firstId); + Assert.NotNull(first); + Assert.NotEqual(0u, first!.IconId); + Assert.NotEqual(ItemType.None, first.Type); + } + + /// + /// Spot-check that the sample table also seeds a sword-like item + /// (MeleeWeapon) and a piece of armor so icon resolution has + /// recognisable item types to work with. + /// + [Fact] + public void SampleTable_hasWeaponAndArmor() + { + var t = SampleData.BuildObjectTable(); + var contents = t.GetContents(SampleData.PlayerGuid); + + bool hasMelee = false, hasArmor = false; + foreach (var guid in contents) + { + var obj = t.Get(guid); + if (obj is null) continue; + if ((obj.Type & ItemType.MeleeWeapon) != 0) hasMelee = true; + if ((obj.Type & ItemType.Armor) != 0) hasArmor = true; + } + + Assert.True(hasMelee, "Expected at least one MeleeWeapon in sample pack"); + Assert.True(hasArmor, "Expected at least one Armor item in sample pack"); + } + + /// + /// Sample table must include at least 1 equipped item whose + /// CurrentlyEquippedLocation is non-None. + /// + [Fact] + public void SampleTable_hasEquippedItems() + { + var t = SampleData.BuildObjectTable(); + + bool anyEquipped = false; + foreach (var obj in t.Objects) + { + if (obj.CurrentlyEquippedLocation != EquipMask.None) + { anyEquipped = true; break; } + } + + Assert.True(anyEquipped, "Expected at least one equipped item in sample table"); + } + + /// + /// Sample table must include at least 2 side-bag containers in the + /// player's pack (ContainerId == PlayerGuid, Type has Container bit). + /// + [Fact] + public void SampleTable_hasSideBags() + { + var t = SampleData.BuildObjectTable(); + + int bagCount = 0; + foreach (var guid in t.GetContents(SampleData.PlayerGuid)) + { + var obj = t.Get(guid); + if (obj is not null && (obj.Type & ItemType.Container) != 0) + bagCount++; + } + + Assert.True(bagCount >= 2, + $"Expected >= 2 side-bag containers in player pack; got {bagCount}"); + } +} From 9ed9d8dbd9bd0476162405bbc4ddbb1916d21a2b Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 25 Jun 2026 15:59:13 +0200 Subject: [PATCH 21/51] =?UTF-8?q?fix(studio):=20Task=204=20=E2=80=94=20bin?= =?UTF-8?q?d=20PaperdollController=20+=20wire=20empty-slot=20sprites?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit FixtureProvider.Populate for 0x21000023 was binding only InventoryController and omitting PaperdollController, so the ~21 equip slots rendered empty even though sample equipped items existed in the table. Also, the three per-list empty-slot sprites were not being resolved from the dat (contentsEmpty / sideBagEmpty / mainPackEmpty all defaulted to 0), so the slot cells had no background art. Fixes: - FixtureProvider.Populate gains a DatCollection dats param (mirrors the GameWindow.OnLoad lookup at line 2233-2235). The 0x21000023 case now resolves all three empty sprites via ItemListCellTemplate.ResolveEmptySprite and passes them to InventoryController.Bind. - PaperdollController.Bind is now called after InventoryController in the same 0x21000023 case, matching GameWindow:2257-2265 (same layout subtree, contentsEmpty as the equip-slot placeholder, sendWield: null since there is no live session in the studio). - StudioWindow.OnLoad passes _dats! to the updated Populate signature. SampleData.AddEquipped was already correct: MoveItem(guid, PlayerGuid, -1, equipMask) at ClientObjectTable.cs:134 sets CurrentlyEquippedLocation = newEquipLocation and calls Reindex which places the item in _containerIndex[PlayerGuid]. No SampleData change needed. Tests: 2 new assertions in FixtureProviderTests — sideBags_matchInventoryControllerFilter (Type.HasFlag(Container) || ItemsCapacity > 0 filter must match both bags) and equippedItems_retainLocationAndAreInContents (equipped items have CurrentlyEquippedLocation != None AND appear in GetContents so the paperdoll controller can find them). 604 pass / 2 skip / 0 fail. Co-Authored-By: Claude Sonnet 4.6 --- src/AcDream.App/Studio/FixtureProvider.cs | 42 ++++++++++++-- src/AcDream.App/Studio/StudioWindow.cs | 2 +- .../Studio/FixtureProviderTests.cs | 55 +++++++++++++++++++ 3 files changed, 92 insertions(+), 7 deletions(-) diff --git a/src/AcDream.App/Studio/FixtureProvider.cs b/src/AcDream.App/Studio/FixtureProvider.cs index 4266aad9..4a5f319a 100644 --- a/src/AcDream.App/Studio/FixtureProvider.cs +++ b/src/AcDream.App/Studio/FixtureProvider.cs @@ -3,6 +3,7 @@ using AcDream.App.UI; using AcDream.App.UI.Layout; using AcDream.Core.Items; using AcDream.Core.Net.Messages; +using DatReaderWriter; namespace AcDream.App.Studio; @@ -41,11 +42,14 @@ public static class FixtureProvider /// and ). /// A already seeded by /// . + /// The live DAT collection used to resolve per-list empty-slot sprites + /// (same lookup GameWindow.OnLoad performs for the production binding). public static void Populate( uint layoutId, ImportedLayout layout, RenderStack stack, - ClientObjectTable objects) + ClientObjectTable objects, + DatCollection dats) { switch (layoutId) { @@ -74,15 +78,41 @@ public static class FixtureProvider sendRemoveShortcut: null); break; - case 0x21000023u: // inventory + case 0x21000023u: // inventory + paperdoll + { + // Resolve the per-list empty-slot art from the dat cell template, matching the + // exact lookup GameWindow.OnLoad performs (UIElement_ItemList::InternalCreateItem + // 0x004e3570 → attr 0x1000000e → catalog 0x21000037 → ItemSlot_Empty). + uint contentsEmpty = ItemListCellTemplate.ResolveEmptySprite(dats, 0x21000021u, 0x100001C6u); + uint sideBagEmpty = ItemListCellTemplate.ResolveEmptySprite(dats, 0x21000022u, 0x100001CAu); + uint mainPackEmpty = ItemListCellTemplate.ResolveEmptySprite(dats, 0x21000022u, 0x100001C9u); + + var iconIds = MakeIconIds(stack); + InventoryController.Bind( layout, objects, - playerGuid: () => SampleData.PlayerGuid, - iconIds: MakeIconIds(stack), - strength: () => 100, - datFont: stack.VitalsDatFont); + playerGuid: () => SampleData.PlayerGuid, + iconIds: iconIds, + strength: () => 100, + datFont: stack.VitalsDatFont, + contentsEmptySprite: contentsEmpty, + sideBagEmptySprite: sideBagEmpty, + mainPackEmptySprite: mainPackEmpty); + + // Bind the paperdoll equip slots (same imported subtree as the inventory). + // Mirrors GameWindow:2257-2265: PaperdollController.Bind with contentsEmpty as + // emptySlotSprite (each slot shows the same square-frame placeholder as the grid). + PaperdollController.Bind( + layout, + objects, + playerGuid: () => SampleData.PlayerGuid, + iconIds: iconIds, + sendWield: null, // no live session in the studio + emptySlotSprite: contentsEmpty, + datFont: stack.VitalsDatFont); break; + } default: // Unknown layout — no-op; the panel renders structurally. diff --git a/src/AcDream.App/Studio/StudioWindow.cs b/src/AcDream.App/Studio/StudioWindow.cs index 43eb5c5b..4212f1e1 100644 --- a/src/AcDream.App/Studio/StudioWindow.cs +++ b/src/AcDream.App/Studio/StudioWindow.cs @@ -130,7 +130,7 @@ public sealed class StudioWindow : IDisposable { uint layoutId = _opts.LayoutId ?? 0x2100006Cu; _objects = SampleData.BuildObjectTable(); - FixtureProvider.Populate(layoutId, _source.CurrentLayout, _stack, _objects); + FixtureProvider.Populate(layoutId, _source.CurrentLayout, _stack, _objects, _dats); } } else diff --git a/tests/AcDream.App.Tests/Studio/FixtureProviderTests.cs b/tests/AcDream.App.Tests/Studio/FixtureProviderTests.cs index 88a517e7..32794876 100644 --- a/tests/AcDream.App.Tests/Studio/FixtureProviderTests.cs +++ b/tests/AcDream.App.Tests/Studio/FixtureProviderTests.cs @@ -102,4 +102,59 @@ public class FixtureProviderTests Assert.True(bagCount >= 2, $"Expected >= 2 side-bag containers in player pack; got {bagCount}"); } + + /// + /// Side bags must match the InventoryController filter: ItemType.Container OR ItemsCapacity > 0. + /// This ensures they appear in the side-bag column even if the exact Type flag changes. + /// + [Fact] + public void SampleTable_sideBags_matchInventoryControllerFilter() + { + var t = SampleData.BuildObjectTable(); + + int bagCount = 0; + foreach (var guid in t.GetContents(SampleData.PlayerGuid)) + { + var obj = t.Get(guid); + if (obj is null) continue; + // InventoryController.Populate line ~203: Type.HasFlag(Container) OR ItemsCapacity > 0 + bool isBag = obj.Type.HasFlag(ItemType.Container) || obj.ItemsCapacity > 0; + if (isBag) bagCount++; + } + + Assert.True(bagCount >= 2, + $"Expected >= 2 items matching the side-bag filter; got {bagCount}"); + } + + /// + /// Equipped items must BOTH (a) retain CurrentlyEquippedLocation != None after + /// seeding AND (b) appear in GetContents(PlayerGuid) so PaperdollController.Populate + /// can find them. These are the two conditions PaperdollController checks on every + /// equipped item (PaperdollController.Populate: ContainerId == playerGuid AND + /// CurrentlyEquippedLocation != None). + /// + [Fact] + public void SampleTable_equippedItems_retainLocationAndAreInContents() + { + var t = SampleData.BuildObjectTable(); + var contents = new System.Collections.Generic.HashSet(t.GetContents(SampleData.PlayerGuid)); + + int equippedCount = 0; + foreach (var obj in t.Objects) + { + if (obj.CurrentlyEquippedLocation == EquipMask.None) continue; + equippedCount++; + + // Must appear in GetContents so the controller can pick them up. + Assert.True(contents.Contains(obj.ObjectId), + $"Equipped item 0x{obj.ObjectId:X8} ('{obj.Name}', loc={obj.CurrentlyEquippedLocation}) " + + $"is NOT in GetContents(PlayerGuid). PaperdollController will miss it."); + + // The equip location must survive the MoveItem call. + Assert.NotEqual(EquipMask.None, obj.CurrentlyEquippedLocation); + } + + Assert.True(equippedCount >= 3, + $"Expected >= 3 equipped items in sample table; got {equippedCount}"); + } } From e3de7f0dabb06b98e9c994ebfa42d7d373f8015b Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 25 Jun 2026 16:25:23 +0200 Subject: [PATCH 22/51] =?UTF-8?q?feat(studio):=20dump=20LayoutSource=20?= =?UTF-8?q?=E2=80=94=20preview=20any=20retail=20window=20from=20the=20UI?= =?UTF-8?q?=20dump?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds Task 4b: a second load path for the UI Studio that reads the committed retail UI layout dump (docs/research/2026-06-25-retail-ui-layout-dump.json) and renders any of the 26 retail windows as a static sprite hierarchy. New files: - src/AcDream.App/Studio/UiDumpModel.cs — POCOs + System.Text.Json parse of the dump (UiDump, DumpPanel, DumpNode, DumpRect, DumpStateSet, DumpImage, DumpState + UiDumpModel static helpers: Parse, ListSlugs, PickImageId). - src/AcDream.App/Studio/DumpLayout.cs — DumpLayout.Load(path, slug, resolve, out err): parses the dump, finds the panel by slug, builds a UiElement tree. Internal DumpSpriteElement draws its sprite via DrawSprite (not reusing UiDatElement — avoids the ElementInfo/StateMedia dat-import dependency for this static mockup). DumpGroupElement is a transparent container for Group nodes. Rect basis is ABSOLUTE in the dump (verified: inventory root at absolute x=500 and its children also start at x≈500 — child offset from parent is 0–50px, not 500px); DumpLayout subtracts parent rect to produce parent-relative Left/Top for each child. - tests/AcDream.App.Tests/Studio/DumpLayoutTests.cs — 5 tests covering: inventory load with 0x100001D5 check + >= 40 nodes, unknown slug → null+err, root at origin, children are parent-relative, all 26 slugs smoke-load. Modified files: - StudioOptions: adds DumpSlug + DumpFile fields; --dump and --dump-file args; ResolveDumpFile() walks up to the solution root to find the default dump JSON (mirrors ConformanceDats.SolutionRoot()). --dump suppresses the default vitals layout so the two modes are exclusive. - StudioWindow.OnLoad: when DumpSlug is set, loads via DumpLayout (no FixtureProvider, no controllers — static structure only); else falls through to the existing LayoutSource + FixtureProvider path. Results: DumpLayoutTests 5/5 passed; full AcDream.App.Tests 609 passed, 2 skipped (same as before); dotnet build green, 0 warnings. Co-Authored-By: Claude Sonnet 4.6 --- .../2026-06-25-retail-ui-layout-dump.json | 116869 +++++++++++++++ src/AcDream.App/Studio/DumpLayout.cs | 235 + src/AcDream.App/Studio/StudioOptions.cs | 59 +- src/AcDream.App/Studio/StudioWindow.cs | 33 +- src/AcDream.App/Studio/UiDumpModel.cs | 198 + .../Studio/DumpLayoutTests.cs | 188 + 6 files changed, 117572 insertions(+), 10 deletions(-) create mode 100644 docs/research/2026-06-25-retail-ui-layout-dump.json create mode 100644 src/AcDream.App/Studio/DumpLayout.cs create mode 100644 src/AcDream.App/Studio/UiDumpModel.cs create mode 100644 tests/AcDream.App.Tests/Studio/DumpLayoutTests.cs diff --git a/docs/research/2026-06-25-retail-ui-layout-dump.json b/docs/research/2026-06-25-retail-ui-layout-dump.json new file mode 100644 index 00000000..49adab54 --- /dev/null +++ b/docs/research/2026-06-25-retail-ui-layout-dump.json @@ -0,0 +1,116869 @@ +{ + "version": 1, + "panels": [ + { + "id": 268436741, + "slug": "floating_chat_1", + "title": "Floating Chat 1", + "bucket": "Chat", + "parent_slug": null, + "width": 640, + "height": 480, + "nodes": [ + { + "traversal_index": 0, + "element_id": 268436727, + "layout_id": 553648219, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 80.0, + "width": 250.0, + "height": 108.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 1, + "element_id": 268436732, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 80.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 2, + "element_id": 268435471, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 80.0, + "width": 240.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688170, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688170, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 3, + "element_id": 268436734, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 245.0, + "y": 80.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 4, + "element_id": 268436690, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 85.0, + "width": 5.0, + "height": 98.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688171, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688171, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 5, + "element_id": 268436737, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 183.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 6, + "element_id": 268436692, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 183.0, + "width": 240.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688172, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688172, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 7, + "element_id": 268436739, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 245.0, + "y": 183.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 8, + "element_id": 268436691, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 245.0, + "y": 85.0, + "width": 5.0, + "height": 98.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688173, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688173, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 9, + "element_id": 268436697, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 85.0, + "width": 240.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 10, + "element_id": 268436776, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 100.0, + "width": 240.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688170, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688170, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 11, + "element_id": 268436777, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 85.0, + "width": 240.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 12, + "element_id": 268436778, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 230.0, + "y": 86.0, + "width": 14.0, + "height": 14.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100688405, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100688405, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100688406, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 13, + "element_id": 268435472, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 105.0, + "width": 224.0, + "height": 60.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 14, + "element_id": 268435473, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 13, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 105.0, + "width": 224.0, + "height": 60.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 15, + "element_id": 268436620, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 14, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 169.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687630, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100687630, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100687630, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 16, + "element_id": 268435474, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 105.0, + "width": 16.0, + "height": 60.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 17, + "element_id": 1, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 16, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 105.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 18, + "element_id": 268436324, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 105.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 19, + "element_id": 268436325, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 108.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 20, + "element_id": 268436326, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 118.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 21, + "element_id": 268435569, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 16, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 105.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 22, + "element_id": 268435570, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 16, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 149.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 23, + "element_id": 268436745, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 165.0, + "width": 240.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 24, + "element_id": 268435478, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 23, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 165.0, + "width": 202.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 25, + "element_id": 268436779, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 24, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 165.0, + "width": 202.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 26, + "element_id": 268436149, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 165.0, + "width": 202.0, + "height": 1.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682953, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682953, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 27, + "element_id": 268435977, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 165.0, + "width": 1.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682953, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682953, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 28, + "element_id": 268435978, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 206.0, + "y": 165.0, + "width": 1.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682953, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682953, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 29, + "element_id": 268435979, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 182.0, + "width": 202.0, + "height": 1.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682953, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682953, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 30, + "element_id": 268435481, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 23, + "base_layout_id": 0, + "rect": { + "x": 207.0, + "y": 165.0, + "width": 38.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + } + ] + }, + { + "id": 268436750, + "slug": "floating_chat_2", + "title": "Floating Chat 2", + "bucket": "Chat", + "parent_slug": null, + "width": 640, + "height": 480, + "nodes": [ + { + "traversal_index": 0, + "element_id": 268436727, + "layout_id": 553648219, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 80.0, + "width": 250.0, + "height": 108.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 1, + "element_id": 268436732, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 80.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 2, + "element_id": 268435471, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 80.0, + "width": 240.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688170, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688170, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 3, + "element_id": 268436734, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 245.0, + "y": 80.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 4, + "element_id": 268436690, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 85.0, + "width": 5.0, + "height": 98.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688171, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688171, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 5, + "element_id": 268436737, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 183.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 6, + "element_id": 268436692, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 183.0, + "width": 240.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688172, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688172, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 7, + "element_id": 268436739, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 245.0, + "y": 183.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 8, + "element_id": 268436691, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 245.0, + "y": 85.0, + "width": 5.0, + "height": 98.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688173, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688173, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 9, + "element_id": 268436697, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 85.0, + "width": 240.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 10, + "element_id": 268436776, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 100.0, + "width": 240.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688170, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688170, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 11, + "element_id": 268436777, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 85.0, + "width": 240.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 12, + "element_id": 268436778, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 230.0, + "y": 86.0, + "width": 14.0, + "height": 14.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100688405, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100688405, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100688406, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 13, + "element_id": 268435472, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 105.0, + "width": 224.0, + "height": 60.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 14, + "element_id": 268435473, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 13, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 105.0, + "width": 224.0, + "height": 60.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 15, + "element_id": 268436620, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 14, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 169.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687630, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100687630, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100687630, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 16, + "element_id": 268435474, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 105.0, + "width": 16.0, + "height": 60.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 17, + "element_id": 1, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 16, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 105.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 18, + "element_id": 268436324, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 105.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 19, + "element_id": 268436325, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 108.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 20, + "element_id": 268436326, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 118.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 21, + "element_id": 268435569, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 16, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 105.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 22, + "element_id": 268435570, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 16, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 149.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 23, + "element_id": 268436745, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 165.0, + "width": 240.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 24, + "element_id": 268435478, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 23, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 165.0, + "width": 202.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 25, + "element_id": 268436779, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 24, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 165.0, + "width": 202.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 26, + "element_id": 268436149, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 165.0, + "width": 202.0, + "height": 1.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682953, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682953, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 27, + "element_id": 268435977, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 165.0, + "width": 1.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682953, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682953, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 28, + "element_id": 268435978, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 206.0, + "y": 165.0, + "width": 1.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682953, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682953, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 29, + "element_id": 268435979, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 182.0, + "width": 202.0, + "height": 1.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682953, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682953, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 30, + "element_id": 268435481, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 23, + "base_layout_id": 0, + "rect": { + "x": 207.0, + "y": 165.0, + "width": 38.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + } + ] + }, + { + "id": 268436751, + "slug": "floating_chat_3", + "title": "Floating Chat 3", + "bucket": "Chat", + "parent_slug": null, + "width": 640, + "height": 480, + "nodes": [ + { + "traversal_index": 0, + "element_id": 268436727, + "layout_id": 553648219, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 80.0, + "width": 250.0, + "height": 108.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 1, + "element_id": 268436732, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 80.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 2, + "element_id": 268435471, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 80.0, + "width": 240.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688170, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688170, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 3, + "element_id": 268436734, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 245.0, + "y": 80.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 4, + "element_id": 268436690, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 85.0, + "width": 5.0, + "height": 98.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688171, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688171, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 5, + "element_id": 268436737, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 183.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 6, + "element_id": 268436692, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 183.0, + "width": 240.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688172, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688172, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 7, + "element_id": 268436739, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 245.0, + "y": 183.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 8, + "element_id": 268436691, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 245.0, + "y": 85.0, + "width": 5.0, + "height": 98.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688173, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688173, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 9, + "element_id": 268436697, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 85.0, + "width": 240.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 10, + "element_id": 268436776, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 100.0, + "width": 240.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688170, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688170, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 11, + "element_id": 268436777, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 85.0, + "width": 240.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 12, + "element_id": 268436778, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 230.0, + "y": 86.0, + "width": 14.0, + "height": 14.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100688405, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100688405, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100688406, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 13, + "element_id": 268435472, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 105.0, + "width": 224.0, + "height": 60.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 14, + "element_id": 268435473, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 13, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 105.0, + "width": 224.0, + "height": 60.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 15, + "element_id": 268436620, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 14, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 169.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687630, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100687630, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100687630, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 16, + "element_id": 268435474, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 105.0, + "width": 16.0, + "height": 60.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 17, + "element_id": 1, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 16, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 105.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 18, + "element_id": 268436324, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 105.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 19, + "element_id": 268436325, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 108.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 20, + "element_id": 268436326, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 118.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 21, + "element_id": 268435569, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 16, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 105.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 22, + "element_id": 268435570, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 16, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 149.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 23, + "element_id": 268436745, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 165.0, + "width": 240.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 24, + "element_id": 268435478, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 23, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 165.0, + "width": 202.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 25, + "element_id": 268436779, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 24, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 165.0, + "width": 202.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 26, + "element_id": 268436149, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 165.0, + "width": 202.0, + "height": 1.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682953, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682953, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 27, + "element_id": 268435977, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 165.0, + "width": 1.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682953, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682953, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 28, + "element_id": 268435978, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 206.0, + "y": 165.0, + "width": 1.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682953, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682953, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 29, + "element_id": 268435979, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 182.0, + "width": 202.0, + "height": 1.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682953, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682953, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 30, + "element_id": 268435481, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 23, + "base_layout_id": 0, + "rect": { + "x": 207.0, + "y": 165.0, + "width": 38.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + } + ] + }, + { + "id": 268436752, + "slug": "floating_chat_4", + "title": "Floating Chat 4", + "bucket": "Chat", + "parent_slug": null, + "width": 640, + "height": 480, + "nodes": [ + { + "traversal_index": 0, + "element_id": 268436727, + "layout_id": 553648219, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 80.0, + "width": 250.0, + "height": 108.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 1, + "element_id": 268436732, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 80.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 2, + "element_id": 268435471, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 80.0, + "width": 240.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688170, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688170, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 3, + "element_id": 268436734, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 245.0, + "y": 80.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 4, + "element_id": 268436690, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 85.0, + "width": 5.0, + "height": 98.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688171, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688171, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 5, + "element_id": 268436737, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 183.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 6, + "element_id": 268436692, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 183.0, + "width": 240.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688172, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688172, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 7, + "element_id": 268436739, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 245.0, + "y": 183.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 8, + "element_id": 268436691, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 245.0, + "y": 85.0, + "width": 5.0, + "height": 98.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688173, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688173, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 9, + "element_id": 268436697, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 85.0, + "width": 240.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 10, + "element_id": 268436776, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 100.0, + "width": 240.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688170, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688170, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 11, + "element_id": 268436777, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 85.0, + "width": 240.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 12, + "element_id": 268436778, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 230.0, + "y": 86.0, + "width": 14.0, + "height": 14.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100688405, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100688405, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100688406, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 13, + "element_id": 268435472, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 105.0, + "width": 224.0, + "height": 60.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 14, + "element_id": 268435473, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 13, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 105.0, + "width": 224.0, + "height": 60.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 15, + "element_id": 268436620, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 14, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 169.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687630, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100687630, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100687630, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 16, + "element_id": 268435474, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 105.0, + "width": 16.0, + "height": 60.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 17, + "element_id": 1, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 16, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 105.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 18, + "element_id": 268436324, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 105.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 19, + "element_id": 268436325, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 108.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 20, + "element_id": 268436326, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 118.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 21, + "element_id": 268435569, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 16, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 105.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 22, + "element_id": 268435570, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 16, + "base_layout_id": 0, + "rect": { + "x": 229.0, + "y": 149.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 23, + "element_id": 268436745, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 165.0, + "width": 240.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 24, + "element_id": 268435478, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 23, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 165.0, + "width": 202.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 25, + "element_id": 268436779, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 24, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 165.0, + "width": 202.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 26, + "element_id": 268436149, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 165.0, + "width": 202.0, + "height": 1.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682953, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682953, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 27, + "element_id": 268435977, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 165.0, + "width": 1.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682953, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682953, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 28, + "element_id": 268435978, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 206.0, + "y": 165.0, + "width": 1.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682953, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682953, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 29, + "element_id": 268435979, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 182.0, + "width": 202.0, + "height": 1.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682953, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682953, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 30, + "element_id": 268435481, + "layout_id": 553648219, + "parent_layout_id": 553648219, + "parent_traversal_index": 23, + "base_layout_id": 0, + "rect": { + "x": 207.0, + "y": 165.0, + "width": 38.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + } + ] + }, + { + "id": 268436993, + "slug": "main_chat", + "title": "Main Chat", + "bucket": "Chat", + "parent_slug": null, + "width": 640, + "height": 480, + "nodes": [ + { + "traversal_index": 0, + "element_id": 268436992, + "layout_id": 553648239, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 410.0, + "height": 100.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 1, + "element_id": 268437139, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693187, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693187, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 2, + "element_id": 268437140, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 0.0, + "width": 400.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693183, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693183, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 3, + "element_id": 268437141, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 405.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693188, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693188, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 4, + "element_id": 268437142, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 5.0, + "width": 5.0, + "height": 90.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693184, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693184, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 5, + "element_id": 268437143, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 95.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693189, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693189, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 6, + "element_id": 268437144, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 95.0, + "width": 400.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693185, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693185, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 7, + "element_id": 268437145, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 405.0, + "y": 95.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693190, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693190, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 8, + "element_id": 268437146, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 405.0, + "y": 5.0, + "width": 5.0, + "height": 90.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693186, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693186, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 9, + "element_id": 268437147, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 10, + "element_id": 268437148, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 0.0, + "width": 400.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688170, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688170, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 11, + "element_id": 268437149, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 405.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 12, + "element_id": 268437150, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 5.0, + "width": 5.0, + "height": 90.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688171, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688171, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 13, + "element_id": 268437151, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 95.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 14, + "element_id": 268437152, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 95.0, + "width": 400.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688172, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688172, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 15, + "element_id": 268437153, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 405.0, + "y": 95.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 16, + "element_id": 268437154, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 405.0, + "y": 5.0, + "width": 5.0, + "height": 90.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688173, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688173, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 17, + "element_id": 268435472, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 400.0, + "height": 73.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 18, + "element_id": 268435473, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 5.0, + "width": 368.0, + "height": 73.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 19, + "element_id": 268436620, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 62.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687630, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100687630, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100687630, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 20, + "element_id": 268435474, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 389.0, + "y": 5.0, + "width": 16.0, + "height": 73.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 21, + "element_id": 1, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 389.0, + "y": 5.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 22, + "element_id": 268436324, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 21, + "base_layout_id": 0, + "rect": { + "x": 389.0, + "y": 5.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 23, + "element_id": 268436325, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 21, + "base_layout_id": 0, + "rect": { + "x": 389.0, + "y": 8.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 24, + "element_id": 268436326, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 21, + "base_layout_id": 0, + "rect": { + "x": 389.0, + "y": 18.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 25, + "element_id": 268435569, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 389.0, + "y": 5.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 26, + "element_id": 268435570, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 389.0, + "y": 62.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 27, + "element_id": 268436591, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 368.0, + "y": 5.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687461, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 268435527, + "image": { + "image_id": 100687460, + "alpha_image_id": null + } + }, + { + "state_id": 268435528, + "image": { + "image_id": 100687461, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 28, + "element_id": 268436770, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100688408, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100688408, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100688409, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 29, + "element_id": 268436771, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 22.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100688408, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100688408, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100688409, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 30, + "element_id": 268436772, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 39.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100688408, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100688408, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100688409, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 31, + "element_id": 268436773, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 56.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100688408, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100688408, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100688409, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 32, + "element_id": 268435475, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 78.0, + "width": 400.0, + "height": 17.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667706, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667706, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 33, + "element_id": 268435476, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 32, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 78.0, + "width": 46.0, + "height": 17.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100683109, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683109, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683110, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 34, + "element_id": 268435477, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 33, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 78.0, + "width": 46.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 35, + "element_id": 268435478, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 32, + "base_layout_id": 0, + "rect": { + "x": 51.0, + "y": 78.0, + "width": 306.0, + "height": 17.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667819, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 4, + "image": { + "image_id": 100667819, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 36, + "element_id": 268435479, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 35, + "base_layout_id": 0, + "rect": { + "x": 51.0, + "y": 78.0, + "width": 1.0, + "height": 17.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683111, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 4, + "image": { + "image_id": 100683111, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 37, + "element_id": 268435480, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 35, + "base_layout_id": 0, + "rect": { + "x": 448.0, + "y": 78.0, + "width": 1.0, + "height": 17.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683111, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 4, + "image": { + "image_id": 100683111, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 38, + "element_id": 268435481, + "layout_id": 553648239, + "parent_layout_id": 553648239, + "parent_traversal_index": 32, + "base_layout_id": 0, + "rect": { + "x": 359.0, + "y": 78.0, + "width": 46.0, + "height": 17.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100669717, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100669717, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100669718, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100669748, + "alpha_image_id": null + } + } + ] + } + } + ] + }, + { + "id": 268437173, + "slug": "combat", + "title": "Combat", + "bucket": "GameplayHud", + "parent_slug": null, + "width": 640, + "height": 480, + "nodes": [ + { + "traversal_index": 0, + "element_id": 268437156, + "layout_id": 553648243, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 610.0, + "height": 90.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 1, + "element_id": 268437157, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693187, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693187, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 2, + "element_id": 268437158, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 0.0, + "width": 600.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693183, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693183, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 3, + "element_id": 268437159, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 605.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693188, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693188, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 4, + "element_id": 268437160, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 5.0, + "width": 5.0, + "height": 80.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693184, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693184, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 5, + "element_id": 268437161, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 85.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693189, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693189, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 6, + "element_id": 268437162, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 85.0, + "width": 600.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693185, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693185, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 7, + "element_id": 268437163, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 605.0, + "y": 85.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693190, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693190, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 8, + "element_id": 268437164, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 605.0, + "y": 5.0, + "width": 5.0, + "height": 80.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693186, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693186, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 9, + "element_id": 268437165, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 10, + "element_id": 268437166, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 0.0, + "width": 600.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688170, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688170, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 11, + "element_id": 268437167, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 605.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 12, + "element_id": 268437168, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 5.0, + "width": 5.0, + "height": 80.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688171, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688171, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 13, + "element_id": 268437169, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 85.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 14, + "element_id": 268437170, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 85.0, + "width": 600.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688172, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688172, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 15, + "element_id": 268437171, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 605.0, + "y": 85.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 16, + "element_id": 268437172, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 605.0, + "y": 5.0, + "width": 5.0, + "height": 80.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688173, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688173, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 17, + "element_id": 268435548, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 600.0, + "height": 80.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 18, + "element_id": 268435532, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 10.0, + "height": 80.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 19, + "element_id": 268435533, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 5.0, + "width": 490.0, + "height": 80.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 20, + "element_id": 268435534, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 505.0, + "y": 5.0, + "width": 100.0, + "height": 80.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 21, + "element_id": 268435535, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 14.0, + "width": 507.0, + "height": 14.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693194, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693194, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 22, + "element_id": 4, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 21, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 14.0, + "width": 0.0, + "height": 0.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100669721, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100669721, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 23, + "element_id": 268435536, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 21, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 14.0, + "width": 507.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 24, + "element_id": 268436975, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 23, + "base_layout_id": 0, + "rect": { + "x": 63.0, + "y": 14.0, + "width": 407.0, + "height": 14.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100692318, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100692318, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 25, + "element_id": 2, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 23, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 14.0, + "width": 507.0, + "height": 14.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667904, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667904, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 26, + "element_id": 1, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 21, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 14.0, + "width": 12.0, + "height": 14.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100669731, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100669731, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 27, + "element_id": 268435537, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 17.0, + "y": 14.0, + "width": 100.0, + "height": 15.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 28, + "element_id": 268435538, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 416.0, + "y": 14.0, + "width": 100.0, + "height": 15.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 29, + "element_id": 268435539, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 10.0, + "y": 34.0, + "width": 100.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 30, + "element_id": 268436264, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 29, + "base_layout_id": 0, + "rect": { + "x": 10.0, + "y": 35.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 31, + "element_id": 268435540, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 115.0, + "y": 34.0, + "width": 80.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 32, + "element_id": 268436264, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 31, + "base_layout_id": 0, + "rect": { + "x": 115.0, + "y": 35.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 33, + "element_id": 268435541, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 200.0, + "y": 34.0, + "width": 100.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 34, + "element_id": 268436264, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 33, + "base_layout_id": 0, + "rect": { + "x": 200.0, + "y": 35.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 35, + "element_id": 268435542, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 527.0, + "y": 9.0, + "width": 72.0, + "height": 57.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 36, + "element_id": 268435543, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 35, + "base_layout_id": 0, + "rect": { + "x": 527.0, + "y": 9.0, + "width": 72.0, + "height": 19.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100683036, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683036, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683037, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683038, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683039, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 37, + "element_id": 268435544, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 35, + "base_layout_id": 0, + "rect": { + "x": 527.0, + "y": 28.0, + "width": 72.0, + "height": 19.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100683036, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683036, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683037, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683038, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683039, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 38, + "element_id": 268435545, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 35, + "base_layout_id": 0, + "rect": { + "x": 527.0, + "y": 47.0, + "width": 72.0, + "height": 19.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100683036, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683036, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683037, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683038, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683039, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 39, + "element_id": 268435553, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 600.0, + "height": 80.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 40, + "element_id": 268435616, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 39, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 25.0, + "width": 600.0, + "height": 60.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 41, + "element_id": 268436619, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 45.0, + "y": 65.0, + "width": 450.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 42, + "element_id": 268435617, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 39, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 600.0, + "height": 20.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 43, + "element_id": 268435618, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 39, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 600.0, + "height": 60.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 44, + "element_id": 268435619, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 43, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 47.0, + "height": 20.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687545, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687545, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687544, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 45, + "element_id": 268435620, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 43, + "base_layout_id": 0, + "rect": { + "x": 52.0, + "y": 5.0, + "width": 47.0, + "height": 20.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687545, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687545, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687544, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 46, + "element_id": 268435621, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 43, + "base_layout_id": 0, + "rect": { + "x": 99.0, + "y": 5.0, + "width": 47.0, + "height": 20.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687545, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687545, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687544, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 47, + "element_id": 268435622, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 43, + "base_layout_id": 0, + "rect": { + "x": 146.0, + "y": 5.0, + "width": 47.0, + "height": 20.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687545, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687545, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687544, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 48, + "element_id": 268435623, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 43, + "base_layout_id": 0, + "rect": { + "x": 193.0, + "y": 5.0, + "width": 47.0, + "height": 20.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687545, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687545, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687544, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 49, + "element_id": 268435624, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 43, + "base_layout_id": 0, + "rect": { + "x": 240.0, + "y": 5.0, + "width": 47.0, + "height": 20.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687545, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687545, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687544, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 50, + "element_id": 268435625, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 43, + "base_layout_id": 0, + "rect": { + "x": 287.0, + "y": 5.0, + "width": 47.0, + "height": 20.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687545, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687545, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687544, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 51, + "element_id": 268436930, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 43, + "base_layout_id": 0, + "rect": { + "x": 334.0, + "y": 5.0, + "width": 47.0, + "height": 20.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687545, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687545, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687544, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 52, + "element_id": 268435626, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 43, + "base_layout_id": 0, + "rect": { + "x": 45.0, + "y": 27.0, + "width": 485.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 53, + "element_id": 268435637, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 52, + "base_layout_id": 0, + "rect": { + "x": 45.0, + "y": 27.0, + "width": 485.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 54, + "element_id": 268435569, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 53, + "base_layout_id": 0, + "rect": { + "x": 507.0, + "y": 27.0, + "width": 23.0, + "height": 36.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682972, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682972, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682973, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682972, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 55, + "element_id": 268435570, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 53, + "base_layout_id": 0, + "rect": { + "x": 444.0, + "y": 27.0, + "width": 23.0, + "height": 36.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682974, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682974, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682975, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682974, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 56, + "element_id": 268435638, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 52, + "base_layout_id": 0, + "rect": { + "x": 68.0, + "y": 29.0, + "width": 439.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 57, + "element_id": 268435627, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 43, + "base_layout_id": 0, + "rect": { + "x": 45.0, + "y": 27.0, + "width": 485.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 58, + "element_id": 268435637, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 57, + "base_layout_id": 0, + "rect": { + "x": 45.0, + "y": 27.0, + "width": 485.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 59, + "element_id": 268435569, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 58, + "base_layout_id": 0, + "rect": { + "x": 507.0, + "y": 27.0, + "width": 23.0, + "height": 36.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682972, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682972, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682973, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682972, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 60, + "element_id": 268435570, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 58, + "base_layout_id": 0, + "rect": { + "x": 444.0, + "y": 27.0, + "width": 23.0, + "height": 36.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682974, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682974, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682975, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682974, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 61, + "element_id": 268435638, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 57, + "base_layout_id": 0, + "rect": { + "x": 68.0, + "y": 29.0, + "width": 439.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 62, + "element_id": 268435628, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 43, + "base_layout_id": 0, + "rect": { + "x": 45.0, + "y": 27.0, + "width": 485.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 63, + "element_id": 268435637, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 62, + "base_layout_id": 0, + "rect": { + "x": 45.0, + "y": 27.0, + "width": 485.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 64, + "element_id": 268435569, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 63, + "base_layout_id": 0, + "rect": { + "x": 507.0, + "y": 27.0, + "width": 23.0, + "height": 36.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682972, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682972, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682973, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682972, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 65, + "element_id": 268435570, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 63, + "base_layout_id": 0, + "rect": { + "x": 444.0, + "y": 27.0, + "width": 23.0, + "height": 36.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682974, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682974, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682975, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682974, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 66, + "element_id": 268435638, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 62, + "base_layout_id": 0, + "rect": { + "x": 68.0, + "y": 29.0, + "width": 439.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 67, + "element_id": 268435629, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 43, + "base_layout_id": 0, + "rect": { + "x": 45.0, + "y": 27.0, + "width": 485.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 68, + "element_id": 268435637, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 67, + "base_layout_id": 0, + "rect": { + "x": 45.0, + "y": 27.0, + "width": 485.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 69, + "element_id": 268435569, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 68, + "base_layout_id": 0, + "rect": { + "x": 507.0, + "y": 27.0, + "width": 23.0, + "height": 36.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682972, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682972, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682973, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682972, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 70, + "element_id": 268435570, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 68, + "base_layout_id": 0, + "rect": { + "x": 444.0, + "y": 27.0, + "width": 23.0, + "height": 36.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682974, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682974, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682975, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682974, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 71, + "element_id": 268435638, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 67, + "base_layout_id": 0, + "rect": { + "x": 68.0, + "y": 29.0, + "width": 439.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 72, + "element_id": 268435630, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 43, + "base_layout_id": 0, + "rect": { + "x": 45.0, + "y": 27.0, + "width": 485.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 73, + "element_id": 268435637, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 72, + "base_layout_id": 0, + "rect": { + "x": 45.0, + "y": 27.0, + "width": 485.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 74, + "element_id": 268435569, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 73, + "base_layout_id": 0, + "rect": { + "x": 507.0, + "y": 27.0, + "width": 23.0, + "height": 36.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682972, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682972, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682973, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682972, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 75, + "element_id": 268435570, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 73, + "base_layout_id": 0, + "rect": { + "x": 444.0, + "y": 27.0, + "width": 23.0, + "height": 36.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682974, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682974, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682975, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682974, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 76, + "element_id": 268435638, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 72, + "base_layout_id": 0, + "rect": { + "x": 68.0, + "y": 29.0, + "width": 439.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 77, + "element_id": 268435631, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 43, + "base_layout_id": 0, + "rect": { + "x": 45.0, + "y": 27.0, + "width": 485.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 78, + "element_id": 268435637, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 77, + "base_layout_id": 0, + "rect": { + "x": 45.0, + "y": 27.0, + "width": 485.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 79, + "element_id": 268435569, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 78, + "base_layout_id": 0, + "rect": { + "x": 507.0, + "y": 27.0, + "width": 23.0, + "height": 36.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682972, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682972, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682973, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682972, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 80, + "element_id": 268435570, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 78, + "base_layout_id": 0, + "rect": { + "x": 444.0, + "y": 27.0, + "width": 23.0, + "height": 36.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682974, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682974, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682975, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682974, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 81, + "element_id": 268435638, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 77, + "base_layout_id": 0, + "rect": { + "x": 68.0, + "y": 29.0, + "width": 439.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 82, + "element_id": 268435632, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 43, + "base_layout_id": 0, + "rect": { + "x": 45.0, + "y": 27.0, + "width": 485.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 83, + "element_id": 268435637, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 82, + "base_layout_id": 0, + "rect": { + "x": 45.0, + "y": 27.0, + "width": 485.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 84, + "element_id": 268435569, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 83, + "base_layout_id": 0, + "rect": { + "x": 507.0, + "y": 27.0, + "width": 23.0, + "height": 36.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682972, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682972, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682973, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682972, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 85, + "element_id": 268435570, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 83, + "base_layout_id": 0, + "rect": { + "x": 444.0, + "y": 27.0, + "width": 23.0, + "height": 36.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682974, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682974, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682975, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682974, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 86, + "element_id": 268435638, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 82, + "base_layout_id": 0, + "rect": { + "x": 68.0, + "y": 29.0, + "width": 439.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 87, + "element_id": 268436931, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 43, + "base_layout_id": 0, + "rect": { + "x": 45.0, + "y": 27.0, + "width": 485.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 88, + "element_id": 268435637, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 87, + "base_layout_id": 0, + "rect": { + "x": 45.0, + "y": 27.0, + "width": 485.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 89, + "element_id": 268435569, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 88, + "base_layout_id": 0, + "rect": { + "x": 507.0, + "y": 27.0, + "width": 23.0, + "height": 36.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682972, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682972, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682973, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682972, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 90, + "element_id": 268435570, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 88, + "base_layout_id": 0, + "rect": { + "x": 444.0, + "y": 27.0, + "width": 23.0, + "height": 36.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682974, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682974, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682975, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682974, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 91, + "element_id": 268435638, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 87, + "base_layout_id": 0, + "rect": { + "x": 68.0, + "y": 29.0, + "width": 439.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 92, + "element_id": 268435633, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 39, + "base_layout_id": 0, + "rect": { + "x": 9.0, + "y": 29.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 93, + "element_id": 268436562, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 92, + "base_layout_id": 0, + "rect": { + "x": 9.0, + "y": 29.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 94, + "element_id": 268436563, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 92, + "base_layout_id": 0, + "rect": { + "x": 9.0, + "y": 29.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 95, + "element_id": 268436564, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 92, + "base_layout_id": 0, + "rect": { + "x": 9.0, + "y": 29.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683017, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683017, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 96, + "element_id": 268435634, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 39, + "base_layout_id": 0, + "rect": { + "x": 530.0, + "y": 29.0, + "width": 75.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 97, + "element_id": 268436174, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 96, + "base_layout_id": 0, + "rect": { + "x": 530.0, + "y": 29.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 98, + "element_id": 268436175, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 96, + "base_layout_id": 0, + "rect": { + "x": 562.0, + "y": 29.0, + "width": 11.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 99, + "element_id": 268436176, + "layout_id": 553648243, + "parent_layout_id": 553648243, + "parent_traversal_index": 96, + "base_layout_id": 0, + "rect": { + "x": 573.0, + "y": 29.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + } + ] + }, + { + "id": 268436989, + "slug": "environment_panel", + "title": "Environment Panel", + "bucket": "GameplayHud", + "parent_slug": null, + "width": 640, + "height": 480, + "nodes": [ + { + "traversal_index": 0, + "element_id": 268436987, + "layout_id": 553648237, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 610.0, + "height": 120.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 1, + "element_id": 268437091, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693187, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693187, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 2, + "element_id": 268437092, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 0.0, + "width": 600.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693183, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693183, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 3, + "element_id": 268437093, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 605.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693188, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693188, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 4, + "element_id": 268437094, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 5.0, + "width": 5.0, + "height": 110.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693184, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693184, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 5, + "element_id": 268437095, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 115.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693189, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693189, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 6, + "element_id": 268437096, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 115.0, + "width": 600.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693185, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693185, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 7, + "element_id": 268437097, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 605.0, + "y": 115.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693190, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693190, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 8, + "element_id": 268437098, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 605.0, + "y": 5.0, + "width": 5.0, + "height": 110.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693186, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693186, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 9, + "element_id": 268437099, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 10, + "element_id": 268437100, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 0.0, + "width": 600.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688170, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688170, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 11, + "element_id": 268437101, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 605.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 12, + "element_id": 268437102, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 5.0, + "width": 5.0, + "height": 110.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688171, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688171, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 13, + "element_id": 268437103, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 115.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 14, + "element_id": 268437104, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 115.0, + "width": 600.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688172, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688172, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 15, + "element_id": 268437105, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 605.0, + "y": 115.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 16, + "element_id": 268437106, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 605.0, + "y": 5.0, + "width": 5.0, + "height": 110.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688173, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688173, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 17, + "element_id": 268435549, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 600.0, + "height": 110.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 18, + "element_id": 268435556, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 10.0, + "y": 10.0, + "width": 36.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 19, + "element_id": 268435557, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 49.0, + "y": 10.0, + "width": 526.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 20, + "element_id": 268435558, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 49.0, + "y": 10.0, + "width": 526.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 21, + "element_id": 268435569, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 552.0, + "y": 10.0, + "width": 23.0, + "height": 36.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682972, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682972, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682973, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682972, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 22, + "element_id": 268435570, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 489.0, + "y": 10.0, + "width": 23.0, + "height": 36.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682974, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682974, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682975, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682974, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 23, + "element_id": 268435559, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 72.0, + "y": 10.0, + "width": 480.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 24, + "element_id": 268435560, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 575.0, + "y": 6.0, + "width": 25.0, + "height": 23.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100667837, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100667837, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100667836, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 25, + "element_id": 268435561, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 10.0, + "y": 49.0, + "width": 590.0, + "height": 58.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 26, + "element_id": 268435562, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 52.0, + "width": 584.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 27, + "element_id": 268435563, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 86.0, + "width": 584.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682879, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682879, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 28, + "element_id": 1, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 27, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 86.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 29, + "element_id": 268436329, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 28, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 86.0, + "width": 3.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682880, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682880, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682881, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682882, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 30, + "element_id": 268436325, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 28, + "base_layout_id": 0, + "rect": { + "x": 16.0, + "y": 86.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682883, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682883, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682884, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682885, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 31, + "element_id": 268436330, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 28, + "base_layout_id": 0, + "rect": { + "x": 26.0, + "y": 86.0, + "width": 3.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682886, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682886, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682887, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682888, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 32, + "element_id": 268436331, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 27, + "base_layout_id": 0, + "rect": { + "x": 581.0, + "y": 86.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682889, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682889, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682890, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682891, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 33, + "element_id": 268436332, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 27, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 86.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682892, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682892, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682893, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682894, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 34, + "element_id": 268435564, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 10.0, + "y": 49.0, + "width": 3.0, + "height": 58.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667834, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667834, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 35, + "element_id": 268435565, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 597.0, + "y": 49.0, + "width": 3.0, + "height": 58.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667834, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667834, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 36, + "element_id": 268435566, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 49.0, + "width": 584.0, + "height": 3.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667833, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667833, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 37, + "element_id": 268435567, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 104.0, + "width": 584.0, + "height": 3.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667833, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667833, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 38, + "element_id": 268435550, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 600.0, + "height": 110.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 39, + "element_id": 268435572, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 38, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 45.0, + "width": 500.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 40, + "element_id": 268435573, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 38, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 78.0, + "width": 500.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682879, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682879, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 41, + "element_id": 1, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 78.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 42, + "element_id": 268436329, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 41, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 78.0, + "width": 3.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682880, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682880, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682881, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682882, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 43, + "element_id": 268436325, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 41, + "base_layout_id": 0, + "rect": { + "x": 18.0, + "y": 78.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682883, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682883, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682884, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682885, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 44, + "element_id": 268436330, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 41, + "base_layout_id": 0, + "rect": { + "x": 28.0, + "y": 78.0, + "width": 3.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682886, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682886, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682887, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682888, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 45, + "element_id": 268436331, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 499.0, + "y": 78.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682889, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682889, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682890, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682891, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 46, + "element_id": 268436332, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 78.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682892, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682892, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682893, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682894, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 47, + "element_id": 268435574, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 38, + "base_layout_id": 0, + "rect": { + "x": 537.0, + "y": 49.0, + "width": 64.0, + "height": 22.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682828, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682828, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682829, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682830, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 48, + "element_id": 268435575, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 38, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 19.0, + "width": 500.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 49, + "element_id": 268435576, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 38, + "base_layout_id": 0, + "rect": { + "x": 581.0, + "y": 5.0, + "width": 22.0, + "height": 20.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668074, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668074, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668073, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 50, + "element_id": 268435551, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 600.0, + "height": 110.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 51, + "element_id": 268435579, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 50, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 300.0, + "height": 110.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 52, + "element_id": 268435581, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 51, + "base_layout_id": 0, + "rect": { + "x": 301.0, + "y": 5.0, + "width": 3.0, + "height": 110.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682936, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682936, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 53, + "element_id": 268435582, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 51, + "base_layout_id": 0, + "rect": { + "x": 80.0, + "y": 8.0, + "width": 150.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 54, + "element_id": 268435583, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 51, + "base_layout_id": 0, + "rect": { + "x": 267.0, + "y": 8.0, + "width": 35.0, + "height": 27.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682938, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 6, + "image": { + "image_id": 100682938, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682937, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 55, + "element_id": 268435584, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 51, + "base_layout_id": 0, + "rect": { + "x": 80.0, + "y": 40.0, + "width": 150.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 56, + "element_id": 268435585, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 51, + "base_layout_id": 0, + "rect": { + "x": 7.0, + "y": 62.0, + "width": 295.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 57, + "element_id": 268435586, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 51, + "base_layout_id": 0, + "rect": { + "x": 7.0, + "y": 94.0, + "width": 295.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682879, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682879, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 58, + "element_id": 1, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 57, + "base_layout_id": 0, + "rect": { + "x": 7.0, + "y": 94.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 59, + "element_id": 268436329, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 58, + "base_layout_id": 0, + "rect": { + "x": 7.0, + "y": 94.0, + "width": 3.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682880, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682880, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682881, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682882, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 60, + "element_id": 268436325, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 58, + "base_layout_id": 0, + "rect": { + "x": 10.0, + "y": 94.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682883, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682883, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682884, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682885, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 61, + "element_id": 268436330, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 58, + "base_layout_id": 0, + "rect": { + "x": 20.0, + "y": 94.0, + "width": 3.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682886, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682886, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682887, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682888, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 62, + "element_id": 268436331, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 57, + "base_layout_id": 0, + "rect": { + "x": 286.0, + "y": 94.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682889, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682889, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682890, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682891, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 63, + "element_id": 268436332, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 57, + "base_layout_id": 0, + "rect": { + "x": 7.0, + "y": 94.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682892, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682892, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682893, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682894, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 64, + "element_id": 268435587, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 50, + "base_layout_id": 0, + "rect": { + "x": 305.0, + "y": 5.0, + "width": 300.0, + "height": 110.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 65, + "element_id": 268435589, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 64, + "base_layout_id": 0, + "rect": { + "x": 380.0, + "y": 8.0, + "width": 150.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 66, + "element_id": 268435590, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 64, + "base_layout_id": 0, + "rect": { + "x": 305.0, + "y": 8.0, + "width": 46.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682940, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682940, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100682941, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682939, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 67, + "element_id": 268435591, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 64, + "base_layout_id": 0, + "rect": { + "x": 380.0, + "y": 40.0, + "width": 150.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 68, + "element_id": 268435592, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 64, + "base_layout_id": 0, + "rect": { + "x": 307.0, + "y": 62.0, + "width": 295.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 69, + "element_id": 268435593, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 64, + "base_layout_id": 0, + "rect": { + "x": 307.0, + "y": 94.0, + "width": 295.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682879, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682879, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 70, + "element_id": 1, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 69, + "base_layout_id": 0, + "rect": { + "x": 307.0, + "y": 94.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 71, + "element_id": 268436329, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 70, + "base_layout_id": 0, + "rect": { + "x": 307.0, + "y": 94.0, + "width": 3.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682880, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682880, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682881, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682882, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 72, + "element_id": 268436325, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 70, + "base_layout_id": 0, + "rect": { + "x": 310.0, + "y": 94.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682883, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682883, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682884, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682885, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 73, + "element_id": 268436330, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 70, + "base_layout_id": 0, + "rect": { + "x": 320.0, + "y": 94.0, + "width": 3.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682886, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682886, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682887, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682888, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 74, + "element_id": 268436331, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 69, + "base_layout_id": 0, + "rect": { + "x": 586.0, + "y": 94.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682889, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682889, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682890, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682891, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 75, + "element_id": 268436332, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 69, + "base_layout_id": 0, + "rect": { + "x": 307.0, + "y": 94.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682892, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682892, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682893, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682894, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 76, + "element_id": 268435594, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 50, + "base_layout_id": 0, + "rect": { + "x": 275.0, + "y": 45.0, + "width": 60.0, + "height": 14.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100670918, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100670918, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100670917, + "alpha_image_id": null + } + }, + { + "state_id": 268435461, + "image": { + "image_id": 100670916, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 77, + "element_id": 268435595, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 50, + "base_layout_id": 0, + "rect": { + "x": 583.0, + "y": 5.0, + "width": 22.0, + "height": 20.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668074, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668074, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668073, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 78, + "element_id": 268435552, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 600.0, + "height": 110.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 79, + "element_id": 268435597, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 78, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 600.0, + "height": 20.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668072, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668072, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 80, + "element_id": 268435598, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 78, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 92.0, + "height": 20.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682943, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100682943, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100682942, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 81, + "element_id": 268435599, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 78, + "base_layout_id": 0, + "rect": { + "x": 97.0, + "y": 5.0, + "width": 92.0, + "height": 20.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682943, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100682943, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100682942, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 82, + "element_id": 268435600, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 78, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 25.0, + "width": 600.0, + "height": 90.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 83, + "element_id": 268435601, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 82, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 28.0, + "width": 245.0, + "height": 87.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 84, + "element_id": 268435602, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 82, + "base_layout_id": 0, + "rect": { + "x": 250.0, + "y": 28.0, + "width": 355.0, + "height": 87.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 85, + "element_id": 268435603, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 84, + "base_layout_id": 0, + "rect": { + "x": 250.0, + "y": 43.0, + "width": 150.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 86, + "element_id": 268435604, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 84, + "base_layout_id": 0, + "rect": { + "x": 505.0, + "y": 35.0, + "width": 94.0, + "height": 22.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100672324, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100672324, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100672325, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100672326, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 87, + "element_id": 268435605, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 84, + "base_layout_id": 0, + "rect": { + "x": 250.0, + "y": 62.0, + "width": 355.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 88, + "element_id": 268435606, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 84, + "base_layout_id": 0, + "rect": { + "x": 250.0, + "y": 94.0, + "width": 355.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682879, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682879, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 89, + "element_id": 1, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 88, + "base_layout_id": 0, + "rect": { + "x": 250.0, + "y": 94.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 90, + "element_id": 268436329, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 89, + "base_layout_id": 0, + "rect": { + "x": 250.0, + "y": 94.0, + "width": 3.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682880, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682880, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682881, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682882, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 91, + "element_id": 268436325, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 89, + "base_layout_id": 0, + "rect": { + "x": 253.0, + "y": 94.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682883, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682883, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682884, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682885, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 92, + "element_id": 268436330, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 89, + "base_layout_id": 0, + "rect": { + "x": 263.0, + "y": 94.0, + "width": 3.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682886, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682886, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682887, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682888, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 93, + "element_id": 268436331, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 88, + "base_layout_id": 0, + "rect": { + "x": 589.0, + "y": 94.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682889, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682889, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682890, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682891, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 94, + "element_id": 268436332, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 88, + "base_layout_id": 0, + "rect": { + "x": 250.0, + "y": 94.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682892, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682892, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682893, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682894, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 95, + "element_id": 268435607, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 78, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 25.0, + "width": 600.0, + "height": 90.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 96, + "element_id": 268435608, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 95, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 28.0, + "width": 245.0, + "height": 87.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 97, + "element_id": 268435609, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 95, + "base_layout_id": 0, + "rect": { + "x": 250.0, + "y": 28.0, + "width": 355.0, + "height": 87.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 98, + "element_id": 268435610, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 97, + "base_layout_id": 0, + "rect": { + "x": 250.0, + "y": 43.0, + "width": 150.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 99, + "element_id": 268435611, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 97, + "base_layout_id": 0, + "rect": { + "x": 505.0, + "y": 35.0, + "width": 94.0, + "height": 22.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100672327, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100672327, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100672328, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100672329, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 100, + "element_id": 268435612, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 97, + "base_layout_id": 0, + "rect": { + "x": 250.0, + "y": 62.0, + "width": 355.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 101, + "element_id": 268435613, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 97, + "base_layout_id": 0, + "rect": { + "x": 250.0, + "y": 94.0, + "width": 355.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682879, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682879, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 102, + "element_id": 1, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 101, + "base_layout_id": 0, + "rect": { + "x": 250.0, + "y": 94.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 103, + "element_id": 268436329, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 102, + "base_layout_id": 0, + "rect": { + "x": 250.0, + "y": 94.0, + "width": 3.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682880, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682880, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682881, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682882, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 104, + "element_id": 268436325, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 102, + "base_layout_id": 0, + "rect": { + "x": 253.0, + "y": 94.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682883, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682883, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682884, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682885, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 105, + "element_id": 268436330, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 102, + "base_layout_id": 0, + "rect": { + "x": 263.0, + "y": 94.0, + "width": 3.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682886, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682886, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682887, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682888, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 106, + "element_id": 268436331, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 101, + "base_layout_id": 0, + "rect": { + "x": 589.0, + "y": 94.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682889, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682889, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682890, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682891, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 107, + "element_id": 268436332, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 101, + "base_layout_id": 0, + "rect": { + "x": 250.0, + "y": 94.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682892, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682892, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682893, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682894, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 108, + "element_id": 268435614, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 78, + "base_layout_id": 0, + "rect": { + "x": 581.0, + "y": 5.0, + "width": 22.0, + "height": 20.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668074, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668074, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668073, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 109, + "element_id": 268435554, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 600.0, + "height": 110.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 110, + "element_id": 268435640, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 109, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 600.0, + "height": 110.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 111, + "element_id": 268435641, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 110, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 92.0, + "height": 20.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687634, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687634, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687633, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 112, + "element_id": 268435642, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 110, + "base_layout_id": 0, + "rect": { + "x": 97.0, + "y": 5.0, + "width": 92.0, + "height": 20.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687634, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687634, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687633, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 113, + "element_id": 268435643, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 110, + "base_layout_id": 0, + "rect": { + "x": 189.0, + "y": 5.0, + "width": 92.0, + "height": 20.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687634, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687634, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687633, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 114, + "element_id": 268435644, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 110, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 25.0, + "width": 600.0, + "height": 90.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 115, + "element_id": 268435645, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 114, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 55.0, + "width": 510.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 116, + "element_id": 268435646, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 114, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 88.0, + "width": 510.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682879, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682879, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 117, + "element_id": 1, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 116, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 88.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 118, + "element_id": 268436329, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 117, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 88.0, + "width": 3.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682880, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682880, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682881, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682882, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 119, + "element_id": 268436325, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 117, + "base_layout_id": 0, + "rect": { + "x": 18.0, + "y": 88.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682883, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682883, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682884, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682885, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 120, + "element_id": 268436330, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 117, + "base_layout_id": 0, + "rect": { + "x": 28.0, + "y": 88.0, + "width": 3.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682886, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682886, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682887, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682888, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 121, + "element_id": 268436331, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 116, + "base_layout_id": 0, + "rect": { + "x": 509.0, + "y": 88.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682889, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682889, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682890, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682891, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 122, + "element_id": 268436332, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 116, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 88.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682892, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682892, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682893, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682894, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 123, + "element_id": 268435647, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 114, + "base_layout_id": 0, + "rect": { + "x": 9.0, + "y": 29.0, + "width": 117.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 124, + "element_id": 268436301, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 123, + "base_layout_id": 0, + "rect": { + "x": 9.0, + "y": 29.0, + "width": 100.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668083, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668083, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 125, + "element_id": 268436302, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 123, + "base_layout_id": 0, + "rect": { + "x": 109.0, + "y": 29.0, + "width": 17.0, + "height": 19.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668081, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668081, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100668081, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100668082, + "alpha_image_id": null + } + }, + { + "state_id": 7, + "image": { + "image_id": 100668082, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 126, + "element_id": 268435648, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 114, + "base_layout_id": 0, + "rect": { + "x": 130.0, + "y": 25.0, + "width": 390.0, + "height": 15.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 127, + "element_id": 268435649, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 114, + "base_layout_id": 0, + "rect": { + "x": 130.0, + "y": 40.0, + "width": 390.0, + "height": 15.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 128, + "element_id": 268435650, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 114, + "base_layout_id": 0, + "rect": { + "x": 537.0, + "y": 29.0, + "width": 64.0, + "height": 22.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682828, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682828, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682829, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682830, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 129, + "element_id": 268435651, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 114, + "base_layout_id": 0, + "rect": { + "x": 537.0, + "y": 55.0, + "width": 64.0, + "height": 22.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682828, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682828, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682829, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682830, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 130, + "element_id": 268435652, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 110, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 25.0, + "width": 600.0, + "height": 90.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 131, + "element_id": 268435653, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 130, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 55.0, + "width": 510.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 132, + "element_id": 268435654, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 130, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 88.0, + "width": 510.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682879, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682879, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 133, + "element_id": 1, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 132, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 88.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 134, + "element_id": 268436329, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 133, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 88.0, + "width": 3.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682880, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682880, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682881, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682882, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 135, + "element_id": 268436325, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 133, + "base_layout_id": 0, + "rect": { + "x": 18.0, + "y": 88.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682883, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682883, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682884, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682885, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 136, + "element_id": 268436330, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 133, + "base_layout_id": 0, + "rect": { + "x": 28.0, + "y": 88.0, + "width": 3.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682886, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682886, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682887, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682888, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 137, + "element_id": 268436331, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 132, + "base_layout_id": 0, + "rect": { + "x": 509.0, + "y": 88.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682889, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682889, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682890, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682891, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 138, + "element_id": 268436332, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 132, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 88.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682892, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682892, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682893, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682894, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 139, + "element_id": 268435655, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 130, + "base_layout_id": 0, + "rect": { + "x": 130.0, + "y": 25.0, + "width": 390.0, + "height": 15.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 140, + "element_id": 268435656, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 130, + "base_layout_id": 0, + "rect": { + "x": 130.0, + "y": 40.0, + "width": 390.0, + "height": 15.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 141, + "element_id": 268435657, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 130, + "base_layout_id": 0, + "rect": { + "x": 537.0, + "y": 29.0, + "width": 64.0, + "height": 22.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682828, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682828, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682829, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682830, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 142, + "element_id": 268435658, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 130, + "base_layout_id": 0, + "rect": { + "x": 537.0, + "y": 55.0, + "width": 64.0, + "height": 22.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682828, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682828, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682829, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682830, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 143, + "element_id": 268435659, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 130, + "base_layout_id": 0, + "rect": { + "x": 9.0, + "y": 26.0, + "width": 65.0, + "height": 14.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668090, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668090, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668089, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100668088, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 144, + "element_id": 268435660, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 130, + "base_layout_id": 0, + "rect": { + "x": 9.0, + "y": 40.0, + "width": 65.0, + "height": 14.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668090, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668090, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668089, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100668088, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 145, + "element_id": 268435661, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 110, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 25.0, + "width": 600.0, + "height": 90.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 146, + "element_id": 268435662, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 145, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 55.0, + "width": 510.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 147, + "element_id": 268435663, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 145, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 88.0, + "width": 510.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682879, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682879, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 148, + "element_id": 1, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 147, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 88.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 149, + "element_id": 268436329, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 148, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 88.0, + "width": 3.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682880, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682880, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682881, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682882, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 150, + "element_id": 268436325, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 148, + "base_layout_id": 0, + "rect": { + "x": 18.0, + "y": 88.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682883, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682883, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682884, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682885, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 151, + "element_id": 268436330, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 148, + "base_layout_id": 0, + "rect": { + "x": 28.0, + "y": 88.0, + "width": 3.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682886, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682886, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682887, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682888, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 152, + "element_id": 268436331, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 147, + "base_layout_id": 0, + "rect": { + "x": 509.0, + "y": 88.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682889, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682889, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682890, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682891, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 153, + "element_id": 268436332, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 147, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 88.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682892, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682892, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682893, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682894, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 154, + "element_id": 268435664, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 145, + "base_layout_id": 0, + "rect": { + "x": 130.0, + "y": 25.0, + "width": 390.0, + "height": 15.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 155, + "element_id": 268435665, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 145, + "base_layout_id": 0, + "rect": { + "x": 130.0, + "y": 40.0, + "width": 390.0, + "height": 15.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 156, + "element_id": 268435666, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 145, + "base_layout_id": 0, + "rect": { + "x": 537.0, + "y": 29.0, + "width": 64.0, + "height": 22.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682828, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682828, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682829, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682830, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 157, + "element_id": 268435667, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 145, + "base_layout_id": 0, + "rect": { + "x": 537.0, + "y": 55.0, + "width": 64.0, + "height": 22.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682828, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682828, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682829, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682830, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 158, + "element_id": 268435668, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 145, + "base_layout_id": 0, + "rect": { + "x": 9.0, + "y": 26.0, + "width": 65.0, + "height": 14.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100669735, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100669735, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100669736, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100668088, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 159, + "element_id": 268435669, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 145, + "base_layout_id": 0, + "rect": { + "x": 9.0, + "y": 40.0, + "width": 65.0, + "height": 14.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100669735, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100669735, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100669736, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100668088, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 160, + "element_id": 268435597, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 109, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 600.0, + "height": 20.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100687632, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100687632, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 161, + "element_id": 268435670, + "layout_id": 553648237, + "parent_layout_id": 553648237, + "parent_traversal_index": 109, + "base_layout_id": 0, + "rect": { + "x": 581.0, + "y": 5.0, + "width": 22.0, + "height": 20.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668074, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668074, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668073, + "alpha_image_id": null + } + } + ] + } + } + ] + }, + { + "id": 268437009, + "slug": "indicators", + "title": "Indicators", + "bucket": "GameplayHud", + "parent_slug": null, + "width": 640, + "height": 480, + "nodes": [ + { + "traversal_index": 0, + "element_id": 268437008, + "layout_id": 553648241, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 150.0, + "height": 30.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 1, + "element_id": 268437059, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693187, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693187, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 2, + "element_id": 268437060, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 0.0, + "width": 140.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693183, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693183, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 3, + "element_id": 268437061, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 145.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693188, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693188, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 4, + "element_id": 268437062, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 5.0, + "width": 5.0, + "height": 20.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693184, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693184, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 5, + "element_id": 268437063, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693189, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693189, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 6, + "element_id": 268437064, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 25.0, + "width": 140.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693185, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693185, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 7, + "element_id": 268437065, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 145.0, + "y": 25.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693190, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693190, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 8, + "element_id": 268437066, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 145.0, + "y": 5.0, + "width": 5.0, + "height": 20.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693186, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693186, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 9, + "element_id": 268437067, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 10, + "element_id": 268437068, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 0.0, + "width": 140.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688170, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688170, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 11, + "element_id": 268437069, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 145.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 12, + "element_id": 268437070, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 5.0, + "width": 5.0, + "height": 20.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688171, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688171, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 13, + "element_id": 268437071, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 14, + "element_id": 268437072, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 25.0, + "width": 140.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688172, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688172, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 15, + "element_id": 268437073, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 145.0, + "y": 25.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 16, + "element_id": 268437074, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 145.0, + "y": 5.0, + "width": 5.0, + "height": 20.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688173, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688173, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 17, + "element_id": 268435704, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 20.0, + "height": 20.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693144, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 17, + "image": { + "image_id": 100693144, + "alpha_image_id": null + } + }, + { + "state_id": 18, + "image": { + "image_id": 100693145, + "alpha_image_id": null + } + }, + { + "state_id": 19, + "image": { + "image_id": 100693146, + "alpha_image_id": null + } + }, + { + "state_id": 20, + "image": { + "image_id": 100693146, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 18, + "element_id": 268435698, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 20.0, + "height": 20.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693147, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 3, + "image": { + "image_id": 100693147, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 19, + "element_id": 268435701, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 5.0, + "width": 20.0, + "height": 20.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693149, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693148, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693148, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693149, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 20, + "element_id": 268435698, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 5.0, + "width": 20.0, + "height": 20.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693147, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 3, + "image": { + "image_id": 100693147, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 21, + "element_id": 268435702, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 45.0, + "y": 5.0, + "width": 20.0, + "height": 20.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693151, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693150, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693150, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693151, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 22, + "element_id": 268435698, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 21, + "base_layout_id": 0, + "rect": { + "x": 45.0, + "y": 5.0, + "width": 20.0, + "height": 20.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693147, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 3, + "image": { + "image_id": 100693147, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 23, + "element_id": 268435700, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 65.0, + "y": 5.0, + "width": 20.0, + "height": 20.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693153, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693152, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693152, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693153, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 24, + "element_id": 268435698, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 23, + "base_layout_id": 0, + "rect": { + "x": 65.0, + "y": 5.0, + "width": 20.0, + "height": 20.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693147, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 3, + "image": { + "image_id": 100693147, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 25, + "element_id": 268435703, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 85.0, + "y": 5.0, + "width": 20.0, + "height": 20.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693154, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 14, + "image": { + "image_id": 100693154, + "alpha_image_id": null + } + }, + { + "state_id": 15, + "image": { + "image_id": 100693155, + "alpha_image_id": null + } + }, + { + "state_id": 16, + "image": { + "image_id": 100693156, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 26, + "element_id": 268435698, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 85.0, + "y": 5.0, + "width": 20.0, + "height": 20.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693147, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 3, + "image": { + "image_id": 100693147, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 27, + "element_id": 268435699, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 105.0, + "y": 5.0, + "width": 20.0, + "height": 20.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693158, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693157, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693157, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693158, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 28, + "element_id": 268435698, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 27, + "base_layout_id": 0, + "rect": { + "x": 105.0, + "y": 5.0, + "width": 20.0, + "height": 20.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682984, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 3, + "image": { + "image_id": 100682984, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 29, + "element_id": 268435706, + "layout_id": 553648241, + "parent_layout_id": 553648241, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 125.0, + "y": 5.0, + "width": 20.0, + "height": 20.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693169, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693170, + "alpha_image_id": null + } + } + ] + } + } + ] + }, + { + "id": 268437011, + "slug": "powerbar", + "title": "Power Bar", + "bucket": "GameplayHud", + "parent_slug": null, + "width": 640, + "height": 480, + "nodes": [ + { + "traversal_index": 0, + "element_id": 268437010, + "layout_id": 553648242, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 610.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 1, + "element_id": 268437123, + "layout_id": 553648242, + "parent_layout_id": 553648242, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693187, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693187, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 2, + "element_id": 268437124, + "layout_id": 553648242, + "parent_layout_id": 553648242, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 0.0, + "width": 600.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693183, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693183, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 3, + "element_id": 268437125, + "layout_id": 553648242, + "parent_layout_id": 553648242, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 605.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693188, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693188, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 4, + "element_id": 268437126, + "layout_id": 553648242, + "parent_layout_id": 553648242, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 5.0, + "width": 5.0, + "height": 15.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693184, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693184, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 5, + "element_id": 268437127, + "layout_id": 553648242, + "parent_layout_id": 553648242, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 20.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693189, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693189, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 6, + "element_id": 268437128, + "layout_id": 553648242, + "parent_layout_id": 553648242, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 20.0, + "width": 600.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693185, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693185, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 7, + "element_id": 268437129, + "layout_id": 553648242, + "parent_layout_id": 553648242, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 605.0, + "y": 20.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693190, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693190, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 8, + "element_id": 268437130, + "layout_id": 553648242, + "parent_layout_id": 553648242, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 605.0, + "y": 5.0, + "width": 5.0, + "height": 15.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693186, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693186, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 9, + "element_id": 268437131, + "layout_id": 553648242, + "parent_layout_id": 553648242, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 10, + "element_id": 268437132, + "layout_id": 553648242, + "parent_layout_id": 553648242, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 0.0, + "width": 600.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688170, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688170, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 11, + "element_id": 268437133, + "layout_id": 553648242, + "parent_layout_id": 553648242, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 605.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 12, + "element_id": 268437134, + "layout_id": 553648242, + "parent_layout_id": 553648242, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 5.0, + "width": 5.0, + "height": 15.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688171, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688171, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 13, + "element_id": 268437135, + "layout_id": 553648242, + "parent_layout_id": 553648242, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 20.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 14, + "element_id": 268437136, + "layout_id": 553648242, + "parent_layout_id": 553648242, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 20.0, + "width": 600.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688172, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688172, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 15, + "element_id": 268437137, + "layout_id": 553648242, + "parent_layout_id": 553648242, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 605.0, + "y": 20.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 16, + "element_id": 268437138, + "layout_id": 553648242, + "parent_layout_id": 553648242, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 605.0, + "y": 5.0, + "width": 5.0, + "height": 15.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688173, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688173, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 17, + "element_id": 268435508, + "layout_id": 553648242, + "parent_layout_id": 553648242, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 600.0, + "height": 15.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683019, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683019, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 18, + "element_id": 268436974, + "layout_id": 553648242, + "parent_layout_id": 553648242, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 65.0, + "y": 5.0, + "width": 480.0, + "height": 15.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100692318, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100692318, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 19, + "element_id": 2, + "layout_id": 553648242, + "parent_layout_id": 553648242, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 600.0, + "height": 15.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668244, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 268435522, + "image": { + "image_id": 100668244, + "alpha_image_id": null + } + }, + { + "state_id": 268435523, + "image": { + "image_id": 100667904, + "alpha_image_id": null + } + }, + { + "state_id": 268435524, + "image": { + "image_id": 100667904, + "alpha_image_id": null + } + }, + { + "state_id": 268435525, + "image": { + "image_id": 100669787, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 20, + "element_id": 268435509, + "layout_id": 553648242, + "parent_layout_id": 553648242, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 600.0, + "height": 15.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + } + ] + }, + { + "id": 268437202, + "slug": "radar", + "title": "Radar", + "bucket": "GameplayHud", + "parent_slug": null, + "width": 640, + "height": 480, + "nodes": [ + { + "traversal_index": 0, + "element_id": 268437203, + "layout_id": 553648244, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 120.0, + "height": 140.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 1, + "element_id": 268435518, + "layout_id": 553648244, + "parent_layout_id": 553648244, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 120.0, + "width": 120.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682944, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682944, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 2, + "element_id": 268435519, + "layout_id": 553648244, + "parent_layout_id": 553648244, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 120.0, + "height": 120.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682945, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682945, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 3, + "element_id": 268437017, + "layout_id": 553648244, + "parent_layout_id": 553648244, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 6.0, + "y": 6.0, + "width": 27.0, + "height": 27.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693175, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 268435555, + "image": { + "image_id": 100693175, + "alpha_image_id": null + } + }, + { + "state_id": 268435556, + "image": { + "image_id": 100693176, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 4, + "element_id": 268437155, + "layout_id": 553648244, + "parent_layout_id": 553648244, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 87.0, + "y": 6.0, + "width": 27.0, + "height": 27.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693193, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693193, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 5, + "element_id": 268435520, + "layout_id": 553648244, + "parent_layout_id": 553648244, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 55.0, + "y": 1.0, + "width": 10.0, + "height": 9.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667899, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667899, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 6, + "element_id": 268435521, + "layout_id": 553648244, + "parent_layout_id": 553648244, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 110.0, + "y": 55.0, + "width": 10.0, + "height": 9.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100669752, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100669752, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 7, + "element_id": 268435522, + "layout_id": 553648244, + "parent_layout_id": 553648244, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 55.0, + "y": 110.0, + "width": 10.0, + "height": 9.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100669754, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100669754, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 8, + "element_id": 268435523, + "layout_id": 553648244, + "parent_layout_id": 553648244, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 55.0, + "width": 10.0, + "height": 9.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100669756, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100669756, + "alpha_image_id": null + } + } + ] + } + } + ] + }, + { + "id": 268436995, + "slug": "toolbar", + "title": "Toolbar", + "bucket": "GameplayHud", + "parent_slug": null, + "width": 640, + "height": 480, + "nodes": [ + { + "traversal_index": 0, + "element_id": 268436994, + "layout_id": 553648240, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 310.0, + "height": 100.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 1, + "element_id": 268435483, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 300.0, + "height": 122.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 2, + "element_id": 268435858, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 55.0, + "height": 58.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682988, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682988, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682989, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 3, + "element_id": 268435859, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 55.0, + "height": 58.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682990, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682990, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682991, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 4, + "element_id": 268435860, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 55.0, + "height": 58.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682992, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682992, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682993, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 5, + "element_id": 268435861, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 55.0, + "height": 58.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682994, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682994, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682995, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 6, + "element_id": 268435862, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 60.0, + "y": 5.0, + "width": 7.0, + "height": 27.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667691, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667691, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 7, + "element_id": 268435863, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 60.0, + "y": 5.0, + "width": 35.0, + "height": 27.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100667679, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100667679, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100667681, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 8, + "element_id": 268435864, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 90.0, + "y": 5.0, + "width": 34.0, + "height": 27.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100667673, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100667673, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100667675, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 9, + "element_id": 268435865, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 120.0, + "y": 5.0, + "width": 34.0, + "height": 27.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100667682, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100667682, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100667684, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 10, + "element_id": 268436826, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 150.0, + "y": 5.0, + "width": 34.0, + "height": 27.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100690350, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100690350, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100690351, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 11, + "element_id": 268435866, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 180.0, + "y": 5.0, + "width": 34.0, + "height": 27.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100667670, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100667670, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100667672, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 12, + "element_id": 268435867, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 209.0, + "y": 5.0, + "width": 34.0, + "height": 27.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100667676, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100667676, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100667678, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 13, + "element_id": 268435868, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 241.0, + "y": 5.0, + "width": 10.0, + "height": 27.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667692, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667692, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 14, + "element_id": 268435869, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 60.0, + "y": 32.0, + "width": 23.0, + "height": 31.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100667689, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100667689, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100667690, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100667918, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 15, + "element_id": 268435870, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 83.0, + "y": 32.0, + "width": 140.0, + "height": 31.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667686, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667686, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 16, + "element_id": 268435871, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 15, + "base_layout_id": 0, + "rect": { + "x": 83.0, + "y": 32.0, + "width": 140.0, + "height": 31.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 17, + "element_id": 268435872, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 15, + "base_layout_id": 0, + "rect": { + "x": 83.0, + "y": 32.0, + "width": 140.0, + "height": 31.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100669751, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 268435467, + "image": { + "image_id": 100669751, + "alpha_image_id": null + } + }, + { + "state_id": 268435468, + "image": { + "image_id": 100682996, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 18, + "element_id": 268435873, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 15, + "base_layout_id": 0, + "rect": { + "x": 83.0, + "y": 32.0, + "width": 140.0, + "height": 31.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100669758, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100669758, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 19, + "element_id": 2, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 83.0, + "y": 32.0, + "width": 140.0, + "height": 31.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100669759, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100669759, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 20, + "element_id": 268435874, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 15, + "base_layout_id": 0, + "rect": { + "x": 83.0, + "y": 32.0, + "width": 140.0, + "height": 31.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100672213, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100672213, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 21, + "element_id": 2, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 83.0, + "y": 32.0, + "width": 146.0, + "height": 31.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100672214, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100672214, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 22, + "element_id": 268435875, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 15, + "base_layout_id": 0, + "rect": { + "x": 83.0, + "y": 45.0, + "width": 50.0, + "height": 14.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682997, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682997, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 23, + "element_id": 268435876, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 15, + "base_layout_id": 0, + "rect": { + "x": 133.0, + "y": 45.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 24, + "element_id": 4, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 23, + "base_layout_id": 0, + "rect": { + "x": 133.0, + "y": 45.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682998, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682998, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 25, + "element_id": 1, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 23, + "base_layout_id": 0, + "rect": { + "x": 133.0, + "y": 45.0, + "width": 16.0, + "height": 14.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100687299, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100687299, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 26, + "element_id": 268435877, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 223.0, + "y": 32.0, + "width": 22.0, + "height": 31.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100667687, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100667687, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100667688, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 27, + "element_id": 268435878, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 63.0, + "width": 6.0, + "height": 32.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 28, + "element_id": 268435879, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 11.0, + "y": 63.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 29, + "element_id": 268435880, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 43.0, + "y": 63.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 30, + "element_id": 268435881, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 75.0, + "y": 63.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 31, + "element_id": 268435882, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 107.0, + "y": 63.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 32, + "element_id": 268435883, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 139.0, + "y": 63.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 33, + "element_id": 268435884, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 171.0, + "y": 63.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 34, + "element_id": 268435885, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 203.0, + "y": 63.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 35, + "element_id": 268435886, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 235.0, + "y": 63.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 36, + "element_id": 268435887, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 267.0, + "y": 63.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 37, + "element_id": 268435888, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 299.0, + "y": 63.0, + "width": 6.0, + "height": 32.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 38, + "element_id": 268437174, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 95.0, + "width": 6.0, + "height": 32.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 39, + "element_id": 268437175, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 11.0, + "y": 95.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 40, + "element_id": 268437176, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 43.0, + "y": 95.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 41, + "element_id": 268437177, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 75.0, + "y": 95.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 42, + "element_id": 268437178, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 107.0, + "y": 95.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 43, + "element_id": 268437179, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 139.0, + "y": 95.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 44, + "element_id": 268437180, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 171.0, + "y": 95.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 45, + "element_id": 268437181, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 203.0, + "y": 95.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 46, + "element_id": 268437182, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 235.0, + "y": 95.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 47, + "element_id": 268437183, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 267.0, + "y": 95.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 48, + "element_id": 268437184, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 299.0, + "y": 95.0, + "width": 8.0, + "height": 32.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 49, + "element_id": 268435889, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 243.0, + "y": 5.0, + "width": 63.0, + "height": 58.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682999, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682999, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683000, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 50, + "element_id": 268436588, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 49, + "base_layout_id": 0, + "rect": { + "x": 274.0, + "y": 5.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100667897, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 268435520, + "image": { + "image_id": 100667897, + "alpha_image_id": null + } + }, + { + "state_id": 268435521, + "image": { + "image_id": 100667896, + "alpha_image_id": null + } + }, + { + "state_id": 268435526, + "image": { + "image_id": 100667895, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 51, + "element_id": 268437027, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693187, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693187, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 52, + "element_id": 268437028, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 0.0, + "width": 300.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693183, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693183, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 53, + "element_id": 268437029, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 305.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693188, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693188, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 54, + "element_id": 268437030, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 5.0, + "width": 5.0, + "height": 90.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693184, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693184, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 55, + "element_id": 268437031, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 95.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693189, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693189, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 56, + "element_id": 268437032, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 95.0, + "width": 300.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693185, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693185, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 57, + "element_id": 268437033, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 305.0, + "y": 95.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693190, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693190, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 58, + "element_id": 268437034, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 305.0, + "y": 5.0, + "width": 5.0, + "height": 90.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693186, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693186, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 59, + "element_id": 268437035, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 60, + "element_id": 268437036, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 0.0, + "width": 300.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688170, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688170, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 61, + "element_id": 268437037, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 305.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 62, + "element_id": 268437038, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 5.0, + "width": 5.0, + "height": 90.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688171, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688171, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 63, + "element_id": 268437039, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 95.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 64, + "element_id": 268437040, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 95.0, + "width": 300.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688172, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688172, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 65, + "element_id": 268437041, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 305.0, + "y": 95.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 66, + "element_id": 268437042, + "layout_id": 553648240, + "parent_layout_id": 553648240, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 305.0, + "y": 5.0, + "width": 5.0, + "height": 90.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688173, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688173, + "alpha_image_id": null + } + } + ] + } + } + ] + }, + { + "id": 268436007, + "slug": "character", + "title": "Character", + "bucket": "MainPanel", + "parent_slug": "main_panel", + "width": 640, + "height": 600, + "nodes": [ + { + "traversal_index": 0, + "element_id": 268436007, + "layout_id": 553648174, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 300.0, + "height": 600.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 1, + "element_id": 268436008, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 92.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 2, + "element_id": 268436537, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 3, + "element_id": 268435689, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 17.0, + "y": 0.0, + "width": 58.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 4, + "element_id": 268435989, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 75.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 5, + "element_id": 268436009, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 92.0, + "y": 0.0, + "width": 92.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 6, + "element_id": 268436537, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 5, + "base_layout_id": 0, + "rect": { + "x": 92.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 7, + "element_id": 268435689, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 5, + "base_layout_id": 0, + "rect": { + "x": 109.0, + "y": 0.0, + "width": 58.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 8, + "element_id": 268435989, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 5, + "base_layout_id": 0, + "rect": { + "x": 167.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 9, + "element_id": 268436792, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 184.0, + "y": 0.0, + "width": 92.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 10, + "element_id": 268436537, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 9, + "base_layout_id": 0, + "rect": { + "x": 184.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 11, + "element_id": 268435689, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 9, + "base_layout_id": 0, + "rect": { + "x": 201.0, + "y": 0.0, + "width": 58.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 12, + "element_id": 268435989, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 9, + "base_layout_id": 0, + "rect": { + "x": 259.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 13, + "element_id": 268436010, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 276.0, + "y": 0.0, + "width": 24.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668307, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668307, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668308, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 14, + "element_id": 268436011, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 575.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 15, + "element_id": 268436006, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 14, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 575.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 16, + "element_id": 268436016, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 15, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 110.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 17, + "element_id": 268436017, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 16, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 230.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 18, + "element_id": 268436018, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 16, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 45.0, + "width": 230.0, + "height": 15.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 19, + "element_id": 268436019, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 16, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 60.0, + "width": 230.0, + "height": 15.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 20, + "element_id": 268436933, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 16, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 77.0, + "width": 110.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 21, + "element_id": 268436934, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 16, + "base_layout_id": 0, + "rect": { + "x": 110.0, + "y": 77.0, + "width": 120.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 22, + "element_id": 268436020, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 16, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 95.0, + "width": 130.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 23, + "element_id": 268436021, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 16, + "base_layout_id": 0, + "rect": { + "x": 130.0, + "y": 95.0, + "width": 100.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 24, + "element_id": 268436022, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 16, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 113.0, + "width": 230.0, + "height": 17.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667814, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667814, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 25, + "element_id": 2, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 24, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 114.0, + "width": 230.0, + "height": 15.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667813, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667813, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 26, + "element_id": 268436023, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 24, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 113.0, + "width": 130.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 27, + "element_id": 268436024, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 24, + "base_layout_id": 0, + "rect": { + "x": 130.0, + "y": 113.0, + "width": 100.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 28, + "element_id": 268436025, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 16, + "base_layout_id": 0, + "rect": { + "x": 230.0, + "y": 25.0, + "width": 5.0, + "height": 105.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682936, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682936, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 29, + "element_id": 268436026, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 16, + "base_layout_id": 0, + "rect": { + "x": 235.0, + "y": 25.0, + "width": 65.0, + "height": 35.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 30, + "element_id": 268436027, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 16, + "base_layout_id": 0, + "rect": { + "x": 235.0, + "y": 60.0, + "width": 65.0, + "height": 50.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 31, + "element_id": 268436028, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 15, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 130.0, + "width": 300.0, + "height": 7.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682951, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682951, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 32, + "element_id": 268436029, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 15, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 137.0, + "width": 300.0, + "height": 398.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 33, + "element_id": 268436030, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 15, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 137.0, + "width": 16.0, + "height": 398.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 34, + "element_id": 1, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 33, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 137.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 35, + "element_id": 268436324, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 34, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 137.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 36, + "element_id": 268436325, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 34, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 140.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 37, + "element_id": 268436326, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 34, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 150.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 38, + "element_id": 268435569, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 33, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 137.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 39, + "element_id": 268435570, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 33, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 519.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 40, + "element_id": 268436031, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 15, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 535.0, + "width": 300.0, + "height": 7.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682951, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682951, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 41, + "element_id": 268436032, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 15, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 545.0, + "width": 300.0, + "height": 55.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 42, + "element_id": 268436046, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 41, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 545.0, + "width": 300.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 43, + "element_id": 268436034, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 41, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 565.0, + "width": 195.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 44, + "element_id": 268436035, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 41, + "base_layout_id": 0, + "rect": { + "x": 200.0, + "y": 565.0, + "width": 95.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 45, + "element_id": 268436036, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 41, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 582.0, + "width": 195.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 46, + "element_id": 268436037, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 41, + "base_layout_id": 0, + "rect": { + "x": 200.0, + "y": 582.0, + "width": 95.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 47, + "element_id": 268436033, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 15, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 545.0, + "width": 300.0, + "height": 55.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 48, + "element_id": 268436046, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 47, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 545.0, + "width": 300.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 49, + "element_id": 268436034, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 47, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 565.0, + "width": 145.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 50, + "element_id": 268436035, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 47, + "base_layout_id": 0, + "rect": { + "x": 150.0, + "y": 565.0, + "width": 95.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 51, + "element_id": 268436036, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 47, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 582.0, + "width": 145.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 52, + "element_id": 268436037, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 47, + "base_layout_id": 0, + "rect": { + "x": 150.0, + "y": 582.0, + "width": 95.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 53, + "element_id": 268436038, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 47, + "base_layout_id": 0, + "rect": { + "x": 260.0, + "y": 571.0, + "width": 30.0, + "height": 26.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682935, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682934, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682935, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 54, + "element_id": 268436971, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 47, + "base_layout_id": 0, + "rect": { + "x": 260.0, + "y": 545.0, + "width": 30.0, + "height": 26.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100692268, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100692267, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100692268, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 55, + "element_id": 268436039, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 15, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 545.0, + "width": 300.0, + "height": 55.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 56, + "element_id": 268436046, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 55, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 545.0, + "width": 300.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 57, + "element_id": 268436034, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 55, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 565.0, + "width": 145.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 58, + "element_id": 268436039, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 55, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 565.0, + "width": 240.0, + "height": 17.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667814, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667814, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 59, + "element_id": 2, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 58, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 566.0, + "width": 240.0, + "height": 15.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667274, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667274, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 60, + "element_id": 268436035, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 55, + "base_layout_id": 0, + "rect": { + "x": 150.0, + "y": 565.0, + "width": 95.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 61, + "element_id": 268436036, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 55, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 582.0, + "width": 145.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 62, + "element_id": 268436037, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 55, + "base_layout_id": 0, + "rect": { + "x": 150.0, + "y": 582.0, + "width": 95.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 63, + "element_id": 268436038, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 55, + "base_layout_id": 0, + "rect": { + "x": 260.0, + "y": 571.0, + "width": 30.0, + "height": 26.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682935, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682934, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682935, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 64, + "element_id": 268436971, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 55, + "base_layout_id": 0, + "rect": { + "x": 260.0, + "y": 545.0, + "width": 30.0, + "height": 26.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100692268, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100692267, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100692268, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 65, + "element_id": 268436012, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 575.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 66, + "element_id": 268436006, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 65, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 575.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 67, + "element_id": 268436016, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 66, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 110.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 68, + "element_id": 268436017, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 67, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 230.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 69, + "element_id": 268436018, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 67, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 45.0, + "width": 230.0, + "height": 15.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 70, + "element_id": 268436019, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 67, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 60.0, + "width": 230.0, + "height": 15.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 71, + "element_id": 268436933, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 67, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 77.0, + "width": 110.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 72, + "element_id": 268436934, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 67, + "base_layout_id": 0, + "rect": { + "x": 110.0, + "y": 77.0, + "width": 120.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 73, + "element_id": 268436020, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 67, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 95.0, + "width": 130.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 74, + "element_id": 268436021, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 67, + "base_layout_id": 0, + "rect": { + "x": 130.0, + "y": 95.0, + "width": 100.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 75, + "element_id": 268436022, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 67, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 113.0, + "width": 230.0, + "height": 17.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667814, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667814, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 76, + "element_id": 2, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 75, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 114.0, + "width": 230.0, + "height": 15.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667813, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667813, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 77, + "element_id": 268436023, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 75, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 113.0, + "width": 130.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 78, + "element_id": 268436024, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 75, + "base_layout_id": 0, + "rect": { + "x": 130.0, + "y": 113.0, + "width": 100.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 79, + "element_id": 268436025, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 67, + "base_layout_id": 0, + "rect": { + "x": 230.0, + "y": 25.0, + "width": 5.0, + "height": 105.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682936, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682936, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 80, + "element_id": 268436026, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 67, + "base_layout_id": 0, + "rect": { + "x": 235.0, + "y": 25.0, + "width": 65.0, + "height": 35.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 81, + "element_id": 268436027, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 67, + "base_layout_id": 0, + "rect": { + "x": 235.0, + "y": 60.0, + "width": 65.0, + "height": 50.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 82, + "element_id": 268436028, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 66, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 130.0, + "width": 300.0, + "height": 7.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682951, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682951, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 83, + "element_id": 268436029, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 66, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 137.0, + "width": 300.0, + "height": 398.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 84, + "element_id": 268436030, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 66, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 137.0, + "width": 16.0, + "height": 398.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 85, + "element_id": 1, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 84, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 137.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 86, + "element_id": 268436324, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 85, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 137.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 87, + "element_id": 268436325, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 85, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 140.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 88, + "element_id": 268436326, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 85, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 150.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 89, + "element_id": 268435569, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 84, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 137.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 90, + "element_id": 268435570, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 84, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 519.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 91, + "element_id": 268436031, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 66, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 535.0, + "width": 300.0, + "height": 7.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682951, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682951, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 92, + "element_id": 268436032, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 66, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 545.0, + "width": 300.0, + "height": 55.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 93, + "element_id": 268436046, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 92, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 545.0, + "width": 300.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 94, + "element_id": 268436034, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 92, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 565.0, + "width": 195.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 95, + "element_id": 268436035, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 92, + "base_layout_id": 0, + "rect": { + "x": 200.0, + "y": 565.0, + "width": 95.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 96, + "element_id": 268436036, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 92, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 582.0, + "width": 195.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 97, + "element_id": 268436037, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 92, + "base_layout_id": 0, + "rect": { + "x": 200.0, + "y": 582.0, + "width": 95.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 98, + "element_id": 268436033, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 66, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 545.0, + "width": 300.0, + "height": 55.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 99, + "element_id": 268436046, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 98, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 545.0, + "width": 300.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 100, + "element_id": 268436034, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 98, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 565.0, + "width": 145.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 101, + "element_id": 268436035, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 98, + "base_layout_id": 0, + "rect": { + "x": 150.0, + "y": 565.0, + "width": 95.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 102, + "element_id": 268436036, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 98, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 582.0, + "width": 145.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 103, + "element_id": 268436037, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 98, + "base_layout_id": 0, + "rect": { + "x": 150.0, + "y": 582.0, + "width": 95.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 104, + "element_id": 268436038, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 98, + "base_layout_id": 0, + "rect": { + "x": 260.0, + "y": 571.0, + "width": 30.0, + "height": 26.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682935, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682934, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682935, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 105, + "element_id": 268436971, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 98, + "base_layout_id": 0, + "rect": { + "x": 260.0, + "y": 545.0, + "width": 30.0, + "height": 26.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100692268, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100692267, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100692268, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 106, + "element_id": 268436039, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 66, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 545.0, + "width": 300.0, + "height": 55.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 107, + "element_id": 268436046, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 106, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 545.0, + "width": 300.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 108, + "element_id": 268436034, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 106, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 565.0, + "width": 145.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 109, + "element_id": 268436039, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 106, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 565.0, + "width": 240.0, + "height": 17.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667814, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667814, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 110, + "element_id": 2, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 109, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 566.0, + "width": 240.0, + "height": 15.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667274, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667274, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 111, + "element_id": 268436035, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 106, + "base_layout_id": 0, + "rect": { + "x": 150.0, + "y": 565.0, + "width": 95.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 112, + "element_id": 268436036, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 106, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 582.0, + "width": 145.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 113, + "element_id": 268436037, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 106, + "base_layout_id": 0, + "rect": { + "x": 150.0, + "y": 582.0, + "width": 95.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 114, + "element_id": 268436038, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 106, + "base_layout_id": 0, + "rect": { + "x": 260.0, + "y": 571.0, + "width": 30.0, + "height": 26.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682935, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682934, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682935, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 115, + "element_id": 268436971, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 106, + "base_layout_id": 0, + "rect": { + "x": 260.0, + "y": 545.0, + "width": 30.0, + "height": 26.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100692268, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100692267, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100692268, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 116, + "element_id": 268436793, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 575.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 117, + "element_id": 268436782, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 116, + "base_layout_id": 0, + "rect": { + "x": 8.0, + "y": 45.0, + "width": 270.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 118, + "element_id": 268436783, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 116, + "base_layout_id": 0, + "rect": { + "x": 8.0, + "y": 65.0, + "width": 270.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 119, + "element_id": 268436784, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 116, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 60.0, + "width": 300.0, + "height": 9.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668448, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668448, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 120, + "element_id": 268436785, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 116, + "base_layout_id": 0, + "rect": { + "x": 8.0, + "y": 95.0, + "width": 270.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 121, + "element_id": 268436786, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 116, + "base_layout_id": 0, + "rect": { + "x": 8.0, + "y": 115.0, + "width": 270.0, + "height": 430.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 122, + "element_id": 268436787, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 116, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 115.0, + "width": 16.0, + "height": 430.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 123, + "element_id": 1, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 122, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 115.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 124, + "element_id": 268436324, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 123, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 115.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 125, + "element_id": 268436325, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 123, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 118.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 126, + "element_id": 268436326, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 123, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 128.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 127, + "element_id": 268435569, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 122, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 115.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 128, + "element_id": 268435570, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 122, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 529.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 129, + "element_id": 268436788, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 116, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 550.0, + "width": 300.0, + "height": 9.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668448, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668448, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 130, + "element_id": 268436789, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 116, + "base_layout_id": 0, + "rect": { + "x": 53.0, + "y": 560.0, + "width": 200.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 131, + "element_id": 268436174, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 130, + "base_layout_id": 0, + "rect": { + "x": 53.0, + "y": 560.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 132, + "element_id": 268436175, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 130, + "base_layout_id": 0, + "rect": { + "x": 85.0, + "y": 560.0, + "width": 136.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 133, + "element_id": 268436176, + "layout_id": 553648174, + "parent_layout_id": 553648174, + "parent_traversal_index": 130, + "base_layout_id": 0, + "rect": { + "x": 221.0, + "y": 560.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + } + ] + }, + { + "id": 268435916, + "slug": "inventory", + "title": "Inventory", + "bucket": "MainPanel", + "parent_slug": "main_panel", + "width": 800, + "height": 500, + "nodes": [ + { + "traversal_index": 0, + "element_id": 268435916, + "layout_id": 553648163, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 500.0, + "y": 138.0, + "width": 300.0, + "height": 362.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 1, + "element_id": 268435917, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 500.0, + "y": 161.0, + "width": 224.0, + "height": 214.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 2, + "element_id": 268435925, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 500.0, + "y": 161.0, + "width": 224.0, + "height": 214.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 3, + "element_id": 268435926, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 551.0, + "y": 161.0, + "width": 100.0, + "height": 214.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 4, + "element_id": 268436589, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 3, + "base_layout_id": 0, + "rect": { + "x": 584.0, + "y": 229.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100667897, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 268435520, + "image": { + "image_id": 100667897, + "alpha_image_id": null + } + }, + { + "state_id": 268435521, + "image": { + "image_id": 100667896, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 5, + "element_id": 268436926, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 542.0, + "y": 351.0, + "width": 120.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 6, + "element_id": 268436264, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 5, + "base_layout_id": 0, + "rect": { + "x": 542.0, + "y": 352.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 7, + "element_id": 268435930, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 508.0, + "y": 169.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 8, + "element_id": 268436878, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 508.0, + "y": 205.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 9, + "element_id": 268436969, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 692.0, + "y": 205.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 10, + "element_id": 268436885, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 626.0, + "y": 169.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 11, + "element_id": 268436886, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 658.0, + "y": 169.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 12, + "element_id": 268436887, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 690.0, + "y": 169.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 13, + "element_id": 268435931, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 656.0, + "y": 241.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 14, + "element_id": 268435932, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 656.0, + "y": 277.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 15, + "element_id": 268435933, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 508.0, + "y": 241.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 16, + "element_id": 268435934, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 508.0, + "y": 277.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 17, + "element_id": 268435935, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 656.0, + "y": 333.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 18, + "element_id": 268435936, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 690.0, + "y": 333.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 19, + "element_id": 268435937, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 508.0, + "y": 333.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 20, + "element_id": 268435938, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 692.0, + "y": 241.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 21, + "element_id": 268435939, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 692.0, + "y": 277.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 22, + "element_id": 268436907, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 584.0, + "y": 189.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 23, + "element_id": 268436908, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 584.0, + "y": 225.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 24, + "element_id": 268436909, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 584.0, + "y": 261.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 25, + "element_id": 268436910, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 548.0, + "y": 225.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 26, + "element_id": 268436911, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 548.0, + "y": 261.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 27, + "element_id": 268436912, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 548.0, + "y": 297.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 28, + "element_id": 268436913, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 620.0, + "y": 261.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 29, + "element_id": 268436914, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 620.0, + "y": 297.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 30, + "element_id": 268436915, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 620.0, + "y": 333.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 31, + "element_id": 268435918, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 739.0, + "y": 161.0, + "width": 61.0, + "height": 339.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 32, + "element_id": 268435927, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 31, + "base_layout_id": 0, + "rect": { + "x": 739.0, + "y": 168.0, + "width": 36.0, + "height": 15.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 33, + "element_id": 268435928, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 31, + "base_layout_id": 0, + "rect": { + "x": 739.0, + "y": 179.0, + "width": 36.0, + "height": 15.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 34, + "element_id": 268435929, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 31, + "base_layout_id": 0, + "rect": { + "x": 783.0, + "y": 169.0, + "width": 11.0, + "height": 58.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667933, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667933, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 35, + "element_id": 2, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 34, + "base_layout_id": 0, + "rect": { + "x": 783.0, + "y": 169.0, + "width": 11.0, + "height": 61.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667932, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667932, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 36, + "element_id": 268435913, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 31, + "base_layout_id": 0, + "rect": { + "x": 745.0, + "y": 193.0, + "width": 36.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 37, + "element_id": 268435914, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 31, + "base_layout_id": 0, + "rect": { + "x": 745.0, + "y": 234.0, + "width": 36.0, + "height": 252.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 38, + "element_id": 268435915, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 31, + "base_layout_id": 0, + "rect": { + "x": 780.0, + "y": 234.0, + "width": 16.0, + "height": 252.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 39, + "element_id": 1, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 38, + "base_layout_id": 0, + "rect": { + "x": 780.0, + "y": 234.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 40, + "element_id": 268436324, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 39, + "base_layout_id": 0, + "rect": { + "x": 780.0, + "y": 234.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 41, + "element_id": 268436325, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 39, + "base_layout_id": 0, + "rect": { + "x": 780.0, + "y": 237.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 42, + "element_id": 268436326, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 39, + "base_layout_id": 0, + "rect": { + "x": 780.0, + "y": 247.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 43, + "element_id": 268435569, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 38, + "base_layout_id": 0, + "rect": { + "x": 780.0, + "y": 234.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 44, + "element_id": 268435570, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 38, + "base_layout_id": 0, + "rect": { + "x": 780.0, + "y": 470.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 45, + "element_id": 268435919, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 500.0, + "y": 375.0, + "width": 234.0, + "height": 120.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 46, + "element_id": 268435909, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 45, + "base_layout_id": 0, + "rect": { + "x": 515.0, + "y": 375.0, + "width": 192.0, + "height": 15.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 47, + "element_id": 268435910, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 45, + "base_layout_id": 0, + "rect": { + "x": 515.0, + "y": 395.0, + "width": 192.0, + "height": 96.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 48, + "element_id": 268435911, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 45, + "base_layout_id": 0, + "rect": { + "x": 707.0, + "y": 395.0, + "width": 16.0, + "height": 96.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 49, + "element_id": 1, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 48, + "base_layout_id": 0, + "rect": { + "x": 707.0, + "y": 395.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 50, + "element_id": 268436324, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 49, + "base_layout_id": 0, + "rect": { + "x": 707.0, + "y": 395.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 51, + "element_id": 268436325, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 49, + "base_layout_id": 0, + "rect": { + "x": 707.0, + "y": 398.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 52, + "element_id": 268436326, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 49, + "base_layout_id": 0, + "rect": { + "x": 707.0, + "y": 408.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 53, + "element_id": 268435569, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 48, + "base_layout_id": 0, + "rect": { + "x": 707.0, + "y": 395.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 54, + "element_id": 268435570, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 48, + "base_layout_id": 0, + "rect": { + "x": 707.0, + "y": 475.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 55, + "element_id": 268435920, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 500.0, + "y": 138.0, + "width": 300.0, + "height": 362.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683018, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683018, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 56, + "element_id": 268435921, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 500.0, + "y": 499.0, + "width": 300.0, + "height": 1.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683019, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683019, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 57, + "element_id": 268435922, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 776.0, + "y": 138.0, + "width": 24.0, + "height": 23.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + }, + { + "state_id": 1, + "image": { + "image_id": 100683020, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683021, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 58, + "element_id": 268435923, + "layout_id": 553648163, + "parent_layout_id": 553648163, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 500.0, + "y": 138.0, + "width": 276.0, + "height": 25.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683002, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683002, + "alpha_image_id": null + } + } + ] + } + } + ] + }, + { + "id": 268436991, + "slug": "main_panel", + "title": "Main Panel Host", + "bucket": "MainPanel", + "parent_slug": null, + "width": 640, + "height": 625, + "nodes": [ + { + "traversal_index": 0, + "element_id": 268436990, + "layout_id": 553648238, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 310.0, + "height": 372.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 1, + "element_id": 268437075, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693187, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693187, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 2, + "element_id": 268437076, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 0.0, + "width": 300.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693183, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693183, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 3, + "element_id": 268437077, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 305.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693188, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693188, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 4, + "element_id": 268437078, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 5.0, + "width": 5.0, + "height": 362.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693184, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693184, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 5, + "element_id": 268437079, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 367.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693189, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693189, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 6, + "element_id": 268437080, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 367.0, + "width": 300.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693185, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693185, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 7, + "element_id": 268437081, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 305.0, + "y": 367.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693190, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693190, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 8, + "element_id": 268437082, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 305.0, + "y": 5.0, + "width": 5.0, + "height": 362.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693186, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693186, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 9, + "element_id": 268437083, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 10, + "element_id": 268437084, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 0.0, + "width": 300.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688170, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688170, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 11, + "element_id": 268437085, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 305.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 12, + "element_id": 268437086, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 5.0, + "width": 5.0, + "height": 362.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688171, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688171, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 13, + "element_id": 268437087, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 367.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 14, + "element_id": 268437088, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 367.0, + "width": 300.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688172, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688172, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 15, + "element_id": 268437089, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 305.0, + "y": 367.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 16, + "element_id": 268437090, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 305.0, + "y": 5.0, + "width": 5.0, + "height": 362.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688173, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688173, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 17, + "element_id": 268435840, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 300.0, + "height": 362.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 18, + "element_id": 268435841, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 300.0, + "height": 362.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 19, + "element_id": 268435708, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 5.0, + "width": 24.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668035, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668035, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668034, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 20, + "element_id": 268435709, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 276.0, + "height": 25.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683002, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683002, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 21, + "element_id": 268435710, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 276.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 22, + "element_id": 268435711, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668042, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668042, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 23, + "element_id": 268435712, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 22, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 24, + "element_id": 268435713, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 22, + "base_layout_id": 0, + "rect": { + "x": 169.0, + "y": 318.0, + "width": 120.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 25, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 24, + "base_layout_id": 0, + "rect": { + "x": 169.0, + "y": 318.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 26, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 24, + "base_layout_id": 0, + "rect": { + "x": 201.0, + "y": 318.0, + "width": 56.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 27, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 24, + "base_layout_id": 0, + "rect": { + "x": 257.0, + "y": 318.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 28, + "element_id": 268435714, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 22, + "base_layout_id": 0, + "rect": { + "x": 40.0, + "y": 318.0, + "width": 120.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 29, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 28, + "base_layout_id": 0, + "rect": { + "x": 40.0, + "y": 318.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 30, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 28, + "base_layout_id": 0, + "rect": { + "x": 72.0, + "y": 318.0, + "width": 56.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 31, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 28, + "base_layout_id": 0, + "rect": { + "x": 128.0, + "y": 318.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 32, + "element_id": 268435715, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668042, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668042, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 33, + "element_id": 268435716, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 32, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 50.0, + "width": 300.0, + "height": 40.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 34, + "element_id": 268435717, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 32, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 90.0, + "width": 268.0, + "height": 20.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 35, + "element_id": 268435718, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 32, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 130.0, + "width": 300.0, + "height": 80.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 36, + "element_id": 268435719, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 32, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 210.0, + "width": 268.0, + "height": 90.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 37, + "element_id": 268435720, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 32, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 212.0, + "width": 16.0, + "height": 90.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 38, + "element_id": 1, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 212.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 39, + "element_id": 268436324, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 38, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 212.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 40, + "element_id": 268436325, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 38, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 215.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 41, + "element_id": 268436326, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 38, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 225.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 42, + "element_id": 268435569, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 212.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 43, + "element_id": 268435570, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 286.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 44, + "element_id": 268435713, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 32, + "base_layout_id": 0, + "rect": { + "x": 169.0, + "y": 318.0, + "width": 120.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 45, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 44, + "base_layout_id": 0, + "rect": { + "x": 169.0, + "y": 318.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 46, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 44, + "base_layout_id": 0, + "rect": { + "x": 201.0, + "y": 318.0, + "width": 56.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 47, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 44, + "base_layout_id": 0, + "rect": { + "x": 257.0, + "y": 318.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 48, + "element_id": 268435721, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 32, + "base_layout_id": 0, + "rect": { + "x": 40.0, + "y": 318.0, + "width": 120.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 49, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 48, + "base_layout_id": 0, + "rect": { + "x": 40.0, + "y": 318.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 50, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 48, + "base_layout_id": 0, + "rect": { + "x": 72.0, + "y": 318.0, + "width": 56.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 51, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 48, + "base_layout_id": 0, + "rect": { + "x": 128.0, + "y": 318.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 52, + "element_id": 268435722, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668042, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668042, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 53, + "element_id": 268435723, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 52, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 54, + "element_id": 268435724, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 52, + "base_layout_id": 0, + "rect": { + "x": 37.0, + "y": 318.0, + "width": 236.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 55, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 54, + "base_layout_id": 0, + "rect": { + "x": 37.0, + "y": 318.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 56, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 54, + "base_layout_id": 0, + "rect": { + "x": 69.0, + "y": 318.0, + "width": 172.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 57, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 54, + "base_layout_id": 0, + "rect": { + "x": 241.0, + "y": 318.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 58, + "element_id": 268435842, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 300.0, + "height": 362.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 59, + "element_id": 268435726, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 58, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 5.0, + "width": 24.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668012, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668012, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668013, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 60, + "element_id": 268435709, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 58, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 276.0, + "height": 30.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668025, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668025, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 61, + "element_id": 268435727, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 60, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 276.0, + "height": 30.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 62, + "element_id": 268435728, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 58, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 35.0, + "width": 300.0, + "height": 306.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668015, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668015, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 63, + "element_id": 268435735, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 62, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 35.0, + "width": 300.0, + "height": 33.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668019, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668019, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 64, + "element_id": 268435736, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 62, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 68.0, + "width": 22.0, + "height": 241.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668017, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668017, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 65, + "element_id": 268435728, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 62, + "base_layout_id": 0, + "rect": { + "x": 27.0, + "y": 68.0, + "width": 257.0, + "height": 241.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668015, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668015, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 66, + "element_id": 268435737, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 62, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 68.0, + "width": 21.0, + "height": 241.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668018, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668018, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 67, + "element_id": 268435738, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 62, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 309.0, + "width": 300.0, + "height": 32.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668016, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668016, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 68, + "element_id": 268435732, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 62, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 35.0, + "width": 54.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668009, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668009, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668010, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100668011, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 69, + "element_id": 268435733, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 62, + "base_layout_id": 0, + "rect": { + "x": 240.0, + "y": 309.0, + "width": 65.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668006, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668006, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668007, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100668008, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 70, + "element_id": 268435729, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 62, + "base_layout_id": 0, + "rect": { + "x": 27.0, + "y": 61.0, + "width": 262.0, + "height": 240.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 71, + "element_id": 268436618, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 62, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 61.0, + "width": 16.0, + "height": 240.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 72, + "element_id": 1, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 71, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 61.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 73, + "element_id": 268436324, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 72, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 61.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 74, + "element_id": 268436325, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 72, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 64.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 75, + "element_id": 268436326, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 72, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 74.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 76, + "element_id": 268435569, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 71, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 61.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 77, + "element_id": 268435570, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 71, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 285.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 78, + "element_id": 268435730, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 58, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 341.0, + "width": 8.0, + "height": 20.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668014, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668014, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 79, + "element_id": 268435731, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 58, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 361.0, + "width": 300.0, + "height": 6.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668005, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668005, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 80, + "element_id": 268436592, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 58, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 342.0, + "width": 292.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 81, + "element_id": 268436595, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 80, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 342.0, + "width": 273.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668022, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668022, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 82, + "element_id": 268436603, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 81, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 342.0, + "width": 273.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 83, + "element_id": 268436596, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 80, + "base_layout_id": 0, + "rect": { + "x": 286.0, + "y": 342.0, + "width": 19.0, + "height": 19.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668020, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668020, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100668020, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100668021, + "alpha_image_id": null + } + }, + { + "state_id": 7, + "image": { + "image_id": 100668021, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 84, + "element_id": 268435843, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 300.0, + "height": 362.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 85, + "element_id": 268435708, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 84, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 5.0, + "width": 24.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668307, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668307, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668308, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 86, + "element_id": 268435710, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 84, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 276.0, + "height": 25.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683002, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683002, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 87, + "element_id": 268435740, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 84, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 88, + "element_id": 268435741, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 87, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 30.0, + "width": 262.0, + "height": 337.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 89, + "element_id": 268435742, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 87, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 30.0, + "width": 16.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 90, + "element_id": 1, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 89, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 30.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 91, + "element_id": 268436324, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 90, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 30.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 92, + "element_id": 268436325, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 90, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 33.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 93, + "element_id": 268436326, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 90, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 43.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 94, + "element_id": 268435569, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 89, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 30.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 95, + "element_id": 268435570, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 89, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 351.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 96, + "element_id": 268435844, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 300.0, + "height": 362.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 97, + "element_id": 268435708, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 96, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 5.0, + "width": 24.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668307, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668307, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668308, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 98, + "element_id": 268435744, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 96, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 276.0, + "height": 25.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683002, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683002, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 99, + "element_id": 268435747, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 96, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 249.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 100, + "element_id": 268435748, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 96, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 32.0, + "width": 16.0, + "height": 249.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 101, + "element_id": 1, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 100, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 32.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 102, + "element_id": 268436324, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 101, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 32.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 103, + "element_id": 268436325, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 101, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 35.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 104, + "element_id": 268436326, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 101, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 45.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 105, + "element_id": 268435569, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 100, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 32.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 106, + "element_id": 268435570, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 100, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 265.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 107, + "element_id": 268435749, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 96, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 279.0, + "width": 300.0, + "height": 88.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668309, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668309, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 108, + "element_id": 268435750, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 107, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 287.0, + "width": 280.0, + "height": 78.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 109, + "element_id": 268435751, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 107, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 279.0, + "width": 16.0, + "height": 88.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 110, + "element_id": 1, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 109, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 279.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 111, + "element_id": 268436324, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 110, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 279.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 112, + "element_id": 268436325, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 110, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 282.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 113, + "element_id": 268436326, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 110, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 292.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 114, + "element_id": 268435569, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 109, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 279.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 115, + "element_id": 268435570, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 109, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 351.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 116, + "element_id": 268435845, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 300.0, + "height": 362.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 117, + "element_id": 268435708, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 116, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 5.0, + "width": 24.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668307, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668307, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668308, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 118, + "element_id": 268435744, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 116, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 276.0, + "height": 25.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683002, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683002, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 119, + "element_id": 268435747, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 116, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 249.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 120, + "element_id": 268435748, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 116, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 32.0, + "width": 16.0, + "height": 249.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 121, + "element_id": 1, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 120, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 32.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 122, + "element_id": 268436324, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 121, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 32.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 123, + "element_id": 268436325, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 121, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 35.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 124, + "element_id": 268436326, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 121, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 45.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 125, + "element_id": 268435569, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 120, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 32.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 126, + "element_id": 268435570, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 120, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 265.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 127, + "element_id": 268435749, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 116, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 279.0, + "width": 300.0, + "height": 88.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668309, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668309, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 128, + "element_id": 268435750, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 127, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 287.0, + "width": 280.0, + "height": 78.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 129, + "element_id": 268435751, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 127, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 279.0, + "width": 16.0, + "height": 88.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 130, + "element_id": 1, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 129, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 279.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 131, + "element_id": 268436324, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 130, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 279.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 132, + "element_id": 268436325, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 130, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 282.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 133, + "element_id": 268436326, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 130, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 292.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 134, + "element_id": 268435569, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 129, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 279.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 135, + "element_id": 268435570, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 129, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 351.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 136, + "element_id": 268435847, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 300.0, + "height": 362.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 137, + "element_id": 268435708, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 136, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 5.0, + "width": 24.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668307, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668307, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668308, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 138, + "element_id": 268435709, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 136, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 276.0, + "height": 25.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683002, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683002, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 139, + "element_id": 268435710, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 138, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 276.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 140, + "element_id": 268435816, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 136, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 141, + "element_id": 268435817, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 140, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 30.0, + "width": 284.0, + "height": 337.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 142, + "element_id": 268435848, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 300.0, + "height": 362.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 143, + "element_id": 268435819, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 142, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 5.0, + "width": 24.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668307, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668307, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668308, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 144, + "element_id": 268435820, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 142, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 276.0, + "height": 25.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683002, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683002, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 145, + "element_id": 268435821, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 144, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 276.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 146, + "element_id": 268435822, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 142, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668312, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668312, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 147, + "element_id": 268435823, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 146, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 40.0, + "width": 280.0, + "height": 280.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 148, + "element_id": 268435824, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 147, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 40.0, + "width": 280.0, + "height": 12.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100671446, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100671446, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 149, + "element_id": 268435825, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 147, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 308.0, + "width": 280.0, + "height": 12.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100671447, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100671447, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 150, + "element_id": 268435826, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 147, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 52.0, + "width": 12.0, + "height": 256.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100671448, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100671448, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 151, + "element_id": 268435827, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 147, + "base_layout_id": 0, + "rect": { + "x": 283.0, + "y": 52.0, + "width": 12.0, + "height": 256.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100671449, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100671449, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 152, + "element_id": 268435828, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 147, + "base_layout_id": 0, + "rect": { + "x": 27.0, + "y": 52.0, + "width": 256.0, + "height": 256.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100671445, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100671445, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 153, + "element_id": 268435829, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 146, + "base_layout_id": 0, + "rect": { + "x": 10.0, + "y": 330.0, + "width": 94.0, + "height": 22.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100672324, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100672324, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100672325, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100672326, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 154, + "element_id": 268435830, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 146, + "base_layout_id": 0, + "rect": { + "x": 108.0, + "y": 330.0, + "width": 94.0, + "height": 22.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100672324, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100672324, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100672325, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100672326, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 155, + "element_id": 268435831, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 146, + "base_layout_id": 0, + "rect": { + "x": 206.0, + "y": 330.0, + "width": 94.0, + "height": 22.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100672324, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100672324, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100672325, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100672326, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 156, + "element_id": 268435849, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 300.0, + "height": 362.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 157, + "element_id": 268435708, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 156, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 5.0, + "width": 24.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668035, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668035, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668034, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 158, + "element_id": 268435709, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 156, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 276.0, + "height": 25.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683002, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683002, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 159, + "element_id": 268435710, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 158, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 276.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 160, + "element_id": 268435892, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 156, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668042, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668042, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 161, + "element_id": 268435893, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 160, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 162, + "element_id": 268435894, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 160, + "base_layout_id": 0, + "rect": { + "x": 169.0, + "y": 318.0, + "width": 120.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 163, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 162, + "base_layout_id": 0, + "rect": { + "x": 169.0, + "y": 318.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 164, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 162, + "base_layout_id": 0, + "rect": { + "x": 201.0, + "y": 318.0, + "width": 56.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 165, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 162, + "base_layout_id": 0, + "rect": { + "x": 257.0, + "y": 318.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 166, + "element_id": 268435895, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 160, + "base_layout_id": 0, + "rect": { + "x": 40.0, + "y": 318.0, + "width": 120.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 167, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 166, + "base_layout_id": 0, + "rect": { + "x": 40.0, + "y": 318.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 168, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 166, + "base_layout_id": 0, + "rect": { + "x": 72.0, + "y": 318.0, + "width": 56.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 169, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 166, + "base_layout_id": 0, + "rect": { + "x": 128.0, + "y": 318.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 170, + "element_id": 268435896, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 156, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668042, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668042, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 171, + "element_id": 268435897, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 170, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 40.0, + "width": 300.0, + "height": 40.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 172, + "element_id": 268435898, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 170, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 80.0, + "width": 268.0, + "height": 54.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 173, + "element_id": 268435899, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 170, + "base_layout_id": 0, + "rect": { + "x": 291.0, + "y": 82.0, + "width": 16.0, + "height": 54.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 174, + "element_id": 1, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 173, + "base_layout_id": 0, + "rect": { + "x": 291.0, + "y": 82.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 175, + "element_id": 268436324, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 174, + "base_layout_id": 0, + "rect": { + "x": 291.0, + "y": 82.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 176, + "element_id": 268436325, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 174, + "base_layout_id": 0, + "rect": { + "x": 291.0, + "y": 85.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 177, + "element_id": 268436326, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 174, + "base_layout_id": 0, + "rect": { + "x": 291.0, + "y": 95.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 178, + "element_id": 268435569, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 173, + "base_layout_id": 0, + "rect": { + "x": 291.0, + "y": 82.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 179, + "element_id": 268435570, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 173, + "base_layout_id": 0, + "rect": { + "x": 291.0, + "y": 120.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 180, + "element_id": 268435900, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 170, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 134.0, + "width": 300.0, + "height": 194.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 181, + "element_id": 268435894, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 170, + "base_layout_id": 0, + "rect": { + "x": 169.0, + "y": 318.0, + "width": 120.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 182, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 181, + "base_layout_id": 0, + "rect": { + "x": 169.0, + "y": 318.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 183, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 181, + "base_layout_id": 0, + "rect": { + "x": 201.0, + "y": 318.0, + "width": 56.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 184, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 181, + "base_layout_id": 0, + "rect": { + "x": 257.0, + "y": 318.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 185, + "element_id": 268435901, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 170, + "base_layout_id": 0, + "rect": { + "x": 40.0, + "y": 318.0, + "width": 120.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 186, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 185, + "base_layout_id": 0, + "rect": { + "x": 40.0, + "y": 318.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 187, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 185, + "base_layout_id": 0, + "rect": { + "x": 72.0, + "y": 318.0, + "width": 56.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 188, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 185, + "base_layout_id": 0, + "rect": { + "x": 128.0, + "y": 318.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 189, + "element_id": 268435902, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 156, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668042, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668042, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 190, + "element_id": 268435903, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 189, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 191, + "element_id": 268435904, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 189, + "base_layout_id": 0, + "rect": { + "x": 37.0, + "y": 318.0, + "width": 236.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 192, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 191, + "base_layout_id": 0, + "rect": { + "x": 37.0, + "y": 318.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 193, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 191, + "base_layout_id": 0, + "rect": { + "x": 69.0, + "y": 318.0, + "width": 172.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 194, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 191, + "base_layout_id": 0, + "rect": { + "x": 241.0, + "y": 318.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 195, + "element_id": 268435850, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 300.0, + "height": 362.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 196, + "element_id": 268435708, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 195, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 5.0, + "width": 24.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668307, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668307, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668308, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 197, + "element_id": 268435709, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 195, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 276.0, + "height": 25.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683002, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683002, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 198, + "element_id": 268435710, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 197, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 276.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 199, + "element_id": 268435906, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 195, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 200, + "element_id": 268435907, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 199, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 30.0, + "width": 284.0, + "height": 337.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 201, + "element_id": 268435851, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 300.0, + "height": 362.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 202, + "element_id": 268435917, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 201, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 28.0, + "width": 224.0, + "height": 214.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 203, + "element_id": 268435925, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 202, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 28.0, + "width": 224.0, + "height": 214.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 204, + "element_id": 268435926, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 202, + "base_layout_id": 0, + "rect": { + "x": 56.0, + "y": 28.0, + "width": 100.0, + "height": 214.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 205, + "element_id": 268436589, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 204, + "base_layout_id": 0, + "rect": { + "x": 89.0, + "y": 96.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100667897, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 268435520, + "image": { + "image_id": 100667897, + "alpha_image_id": null + } + }, + { + "state_id": 268435521, + "image": { + "image_id": 100667896, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 206, + "element_id": 268436926, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 202, + "base_layout_id": 0, + "rect": { + "x": 47.0, + "y": 218.0, + "width": 120.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 207, + "element_id": 268436264, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 206, + "base_layout_id": 0, + "rect": { + "x": 47.0, + "y": 219.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 208, + "element_id": 268435930, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 202, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 36.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 209, + "element_id": 268436878, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 202, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 72.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 210, + "element_id": 268436969, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 202, + "base_layout_id": 0, + "rect": { + "x": 197.0, + "y": 72.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 211, + "element_id": 268436885, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 202, + "base_layout_id": 0, + "rect": { + "x": 131.0, + "y": 36.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 212, + "element_id": 268436886, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 202, + "base_layout_id": 0, + "rect": { + "x": 163.0, + "y": 36.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 213, + "element_id": 268436887, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 202, + "base_layout_id": 0, + "rect": { + "x": 195.0, + "y": 36.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 214, + "element_id": 268435931, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 202, + "base_layout_id": 0, + "rect": { + "x": 161.0, + "y": 108.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 215, + "element_id": 268435932, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 202, + "base_layout_id": 0, + "rect": { + "x": 161.0, + "y": 144.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 216, + "element_id": 268435933, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 202, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 108.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 217, + "element_id": 268435934, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 202, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 144.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 218, + "element_id": 268435935, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 202, + "base_layout_id": 0, + "rect": { + "x": 161.0, + "y": 200.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 219, + "element_id": 268435936, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 202, + "base_layout_id": 0, + "rect": { + "x": 195.0, + "y": 200.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 220, + "element_id": 268435937, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 202, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 200.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 221, + "element_id": 268435938, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 202, + "base_layout_id": 0, + "rect": { + "x": 197.0, + "y": 108.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 222, + "element_id": 268435939, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 202, + "base_layout_id": 0, + "rect": { + "x": 197.0, + "y": 144.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 223, + "element_id": 268436907, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 202, + "base_layout_id": 0, + "rect": { + "x": 89.0, + "y": 56.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 224, + "element_id": 268436908, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 202, + "base_layout_id": 0, + "rect": { + "x": 89.0, + "y": 92.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 225, + "element_id": 268436909, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 202, + "base_layout_id": 0, + "rect": { + "x": 89.0, + "y": 128.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 226, + "element_id": 268436910, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 202, + "base_layout_id": 0, + "rect": { + "x": 53.0, + "y": 92.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 227, + "element_id": 268436911, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 202, + "base_layout_id": 0, + "rect": { + "x": 53.0, + "y": 128.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 228, + "element_id": 268436912, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 202, + "base_layout_id": 0, + "rect": { + "x": 53.0, + "y": 164.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 229, + "element_id": 268436913, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 202, + "base_layout_id": 0, + "rect": { + "x": 125.0, + "y": 128.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 230, + "element_id": 268436914, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 202, + "base_layout_id": 0, + "rect": { + "x": 125.0, + "y": 164.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 231, + "element_id": 268436915, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 202, + "base_layout_id": 0, + "rect": { + "x": 125.0, + "y": 200.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 232, + "element_id": 268435918, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 201, + "base_layout_id": 0, + "rect": { + "x": 244.0, + "y": 28.0, + "width": 61.0, + "height": 339.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 233, + "element_id": 268435927, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 232, + "base_layout_id": 0, + "rect": { + "x": 244.0, + "y": 35.0, + "width": 36.0, + "height": 15.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 234, + "element_id": 268435928, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 232, + "base_layout_id": 0, + "rect": { + "x": 244.0, + "y": 46.0, + "width": 36.0, + "height": 15.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 235, + "element_id": 268435929, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 232, + "base_layout_id": 0, + "rect": { + "x": 288.0, + "y": 36.0, + "width": 11.0, + "height": 58.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667933, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667933, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 236, + "element_id": 2, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 235, + "base_layout_id": 0, + "rect": { + "x": 288.0, + "y": 36.0, + "width": 11.0, + "height": 61.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667932, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667932, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 237, + "element_id": 268435913, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 232, + "base_layout_id": 0, + "rect": { + "x": 250.0, + "y": 60.0, + "width": 36.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 238, + "element_id": 268435914, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 232, + "base_layout_id": 0, + "rect": { + "x": 250.0, + "y": 101.0, + "width": 36.0, + "height": 252.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 239, + "element_id": 268435915, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 232, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 101.0, + "width": 16.0, + "height": 252.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 240, + "element_id": 1, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 239, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 101.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 241, + "element_id": 268436324, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 240, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 101.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 242, + "element_id": 268436325, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 240, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 104.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 243, + "element_id": 268436326, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 240, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 114.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 244, + "element_id": 268435569, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 239, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 101.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 245, + "element_id": 268435570, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 239, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 337.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 246, + "element_id": 268435919, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 201, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 242.0, + "width": 234.0, + "height": 120.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 247, + "element_id": 268435909, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 246, + "base_layout_id": 0, + "rect": { + "x": 20.0, + "y": 242.0, + "width": 192.0, + "height": 15.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 248, + "element_id": 268435910, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 246, + "base_layout_id": 0, + "rect": { + "x": 20.0, + "y": 262.0, + "width": 192.0, + "height": 96.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 249, + "element_id": 268435911, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 246, + "base_layout_id": 0, + "rect": { + "x": 212.0, + "y": 262.0, + "width": 16.0, + "height": 96.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 250, + "element_id": 1, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 249, + "base_layout_id": 0, + "rect": { + "x": 212.0, + "y": 262.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 251, + "element_id": 268436324, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 250, + "base_layout_id": 0, + "rect": { + "x": 212.0, + "y": 262.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 252, + "element_id": 268436325, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 250, + "base_layout_id": 0, + "rect": { + "x": 212.0, + "y": 265.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 253, + "element_id": 268436326, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 250, + "base_layout_id": 0, + "rect": { + "x": 212.0, + "y": 275.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 254, + "element_id": 268435569, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 249, + "base_layout_id": 0, + "rect": { + "x": 212.0, + "y": 262.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 255, + "element_id": 268435570, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 249, + "base_layout_id": 0, + "rect": { + "x": 212.0, + "y": 342.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 256, + "element_id": 268435920, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 201, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 300.0, + "height": 362.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683018, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683018, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 257, + "element_id": 268435921, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 201, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 366.0, + "width": 300.0, + "height": 1.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683019, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683019, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 258, + "element_id": 268435922, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 201, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 5.0, + "width": 24.0, + "height": 23.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + }, + { + "state_id": 1, + "image": { + "image_id": 100683020, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683021, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 259, + "element_id": 268435923, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 201, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 276.0, + "height": 25.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683002, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683002, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 260, + "element_id": 268435852, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 300.0, + "height": 362.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 261, + "element_id": 268435955, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 260, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 138.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 262, + "element_id": 268436537, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 261, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 263, + "element_id": 268435689, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 261, + "base_layout_id": 0, + "rect": { + "x": 22.0, + "y": 5.0, + "width": 104.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 264, + "element_id": 268435989, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 261, + "base_layout_id": 0, + "rect": { + "x": 126.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 265, + "element_id": 268435956, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 260, + "base_layout_id": 0, + "rect": { + "x": 143.0, + "y": 5.0, + "width": 138.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 266, + "element_id": 268436537, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 265, + "base_layout_id": 0, + "rect": { + "x": 143.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 267, + "element_id": 268435689, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 265, + "base_layout_id": 0, + "rect": { + "x": 160.0, + "y": 5.0, + "width": 104.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 268, + "element_id": 268435989, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 265, + "base_layout_id": 0, + "rect": { + "x": 264.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 269, + "element_id": 268435957, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 260, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 5.0, + "width": 24.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668307, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668307, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668308, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 270, + "element_id": 268435958, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 260, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 271, + "element_id": 268435945, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 270, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 272, + "element_id": 268435735, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 271, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 33.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668019, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668019, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 273, + "element_id": 268435736, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 271, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 63.0, + "width": 22.0, + "height": 272.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668017, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668017, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 274, + "element_id": 268435728, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 271, + "base_layout_id": 0, + "rect": { + "x": 27.0, + "y": 63.0, + "width": 257.0, + "height": 272.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668015, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668015, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 275, + "element_id": 268435737, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 271, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 63.0, + "width": 21.0, + "height": 272.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668018, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668018, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 276, + "element_id": 268435738, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 271, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 335.0, + "width": 300.0, + "height": 32.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668016, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668016, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 277, + "element_id": 268435946, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 271, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 33.0, + "width": 300.0, + "height": 330.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 278, + "element_id": 268435947, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 277, + "base_layout_id": 0, + "rect": { + "x": 26.0, + "y": 37.0, + "width": 227.0, + "height": 30.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 279, + "element_id": 268435948, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 277, + "base_layout_id": 0, + "rect": { + "x": 26.0, + "y": 69.0, + "width": 257.0, + "height": 267.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668029, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 280, + "element_id": 268435949, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 279, + "base_layout_id": 0, + "rect": { + "x": 26.0, + "y": 69.0, + "width": 17.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683024, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683024, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 281, + "element_id": 268435950, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 279, + "base_layout_id": 0, + "rect": { + "x": 26.0, + "y": 69.0, + "width": 8.0, + "height": 8.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683025, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683025, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 282, + "element_id": 268435953, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 281, + "base_layout_id": 0, + "rect": { + "x": 26.0, + "y": 69.0, + "width": 8.0, + "height": 8.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 283, + "element_id": 268436149, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 282, + "base_layout_id": 0, + "rect": { + "x": 26.0, + "y": 69.0, + "width": 8.0, + "height": 1.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682953, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682953, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 284, + "element_id": 268435977, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 282, + "base_layout_id": 0, + "rect": { + "x": 26.0, + "y": 69.0, + "width": 1.0, + "height": 8.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682953, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682953, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 285, + "element_id": 268435978, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 282, + "base_layout_id": 0, + "rect": { + "x": 33.0, + "y": 69.0, + "width": 1.0, + "height": 8.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682953, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682953, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 286, + "element_id": 268435979, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 282, + "base_layout_id": 0, + "rect": { + "x": 26.0, + "y": 76.0, + "width": 8.0, + "height": 1.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682953, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682953, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 287, + "element_id": 268435951, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 277, + "base_layout_id": 0, + "rect": { + "x": 26.0, + "y": 336.0, + "width": 257.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 288, + "element_id": 268435959, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 260, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 289, + "element_id": 268435942, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 288, + "base_layout_id": 0, + "rect": { + "x": 10.0, + "y": 35.0, + "width": 290.0, + "height": 590.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 290, + "element_id": 268435853, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 300.0, + "height": 362.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 291, + "element_id": 268435981, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 290, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 106.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 292, + "element_id": 268436537, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 291, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 293, + "element_id": 268435689, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 291, + "base_layout_id": 0, + "rect": { + "x": 22.0, + "y": 5.0, + "width": 72.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 294, + "element_id": 268435989, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 291, + "base_layout_id": 0, + "rect": { + "x": 94.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 295, + "element_id": 268435982, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 290, + "base_layout_id": 0, + "rect": { + "x": 111.0, + "y": 5.0, + "width": 64.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 296, + "element_id": 268436537, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 295, + "base_layout_id": 0, + "rect": { + "x": 111.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 297, + "element_id": 268435689, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 295, + "base_layout_id": 0, + "rect": { + "x": 128.0, + "y": 5.0, + "width": 30.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 298, + "element_id": 268435989, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 295, + "base_layout_id": 0, + "rect": { + "x": 158.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 299, + "element_id": 268436747, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 290, + "base_layout_id": 0, + "rect": { + "x": 177.0, + "y": 5.0, + "width": 50.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 300, + "element_id": 268436537, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 299, + "base_layout_id": 0, + "rect": { + "x": 177.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 301, + "element_id": 268435689, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 299, + "base_layout_id": 0, + "rect": { + "x": 194.0, + "y": 5.0, + "width": 16.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 302, + "element_id": 268435989, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 299, + "base_layout_id": 0, + "rect": { + "x": 210.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 303, + "element_id": 268435983, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 290, + "base_layout_id": 0, + "rect": { + "x": 227.0, + "y": 5.0, + "width": 56.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 304, + "element_id": 268436537, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 303, + "base_layout_id": 0, + "rect": { + "x": 227.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 305, + "element_id": 268435689, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 303, + "base_layout_id": 0, + "rect": { + "x": 244.0, + "y": 5.0, + "width": 22.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 306, + "element_id": 268435989, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 303, + "base_layout_id": 0, + "rect": { + "x": 266.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 307, + "element_id": 268435984, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 290, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 5.0, + "width": 24.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668035, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668035, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668034, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 308, + "element_id": 268435977, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 290, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 2.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668092, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668092, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 309, + "element_id": 268435985, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 290, + "base_layout_id": 0, + "rect": { + "x": 7.0, + "y": 30.0, + "width": 298.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 310, + "element_id": 268435962, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 309, + "base_layout_id": 0, + "rect": { + "x": 7.0, + "y": 30.0, + "width": 282.0, + "height": 297.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 311, + "element_id": 268435963, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 309, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 30.0, + "width": 16.0, + "height": 297.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 312, + "element_id": 1, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 311, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 30.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 313, + "element_id": 268436324, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 312, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 30.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 314, + "element_id": 268436325, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 312, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 33.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 315, + "element_id": 268436326, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 312, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 43.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 316, + "element_id": 268435569, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 311, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 30.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 317, + "element_id": 268435570, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 311, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 311.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 318, + "element_id": 268435964, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 309, + "base_layout_id": 0, + "rect": { + "x": 23.0, + "y": 331.0, + "width": 80.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 319, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 318, + "base_layout_id": 0, + "rect": { + "x": 23.0, + "y": 331.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 320, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 318, + "base_layout_id": 0, + "rect": { + "x": 55.0, + "y": 331.0, + "width": 16.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 321, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 318, + "base_layout_id": 0, + "rect": { + "x": 71.0, + "y": 331.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 322, + "element_id": 268435965, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 309, + "base_layout_id": 0, + "rect": { + "x": 113.0, + "y": 331.0, + "width": 80.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 323, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 322, + "base_layout_id": 0, + "rect": { + "x": 113.0, + "y": 331.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 324, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 322, + "base_layout_id": 0, + "rect": { + "x": 145.0, + "y": 331.0, + "width": 16.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 325, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 322, + "base_layout_id": 0, + "rect": { + "x": 161.0, + "y": 331.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 326, + "element_id": 268435966, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 309, + "base_layout_id": 0, + "rect": { + "x": 203.0, + "y": 331.0, + "width": 80.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 327, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 326, + "base_layout_id": 0, + "rect": { + "x": 203.0, + "y": 331.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 328, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 326, + "base_layout_id": 0, + "rect": { + "x": 235.0, + "y": 331.0, + "width": 16.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 329, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 326, + "base_layout_id": 0, + "rect": { + "x": 251.0, + "y": 331.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 330, + "element_id": 268435986, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 290, + "base_layout_id": 0, + "rect": { + "x": 7.0, + "y": 30.0, + "width": 298.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 331, + "element_id": 268435971, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 330, + "base_layout_id": 0, + "rect": { + "x": 33.0, + "y": 50.0, + "width": 238.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 332, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 331, + "base_layout_id": 0, + "rect": { + "x": 33.0, + "y": 50.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693161, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693160, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693159, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 333, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 331, + "base_layout_id": 0, + "rect": { + "x": 65.0, + "y": 50.0, + "width": 174.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693164, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693163, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693162, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 334, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 331, + "base_layout_id": 0, + "rect": { + "x": 239.0, + "y": 50.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693167, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693166, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693165, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 335, + "element_id": 268437015, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 330, + "base_layout_id": 0, + "rect": { + "x": 33.0, + "y": 90.0, + "width": 238.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 336, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 335, + "base_layout_id": 0, + "rect": { + "x": 33.0, + "y": 90.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693161, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693160, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693159, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 337, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 335, + "base_layout_id": 0, + "rect": { + "x": 65.0, + "y": 90.0, + "width": 174.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693164, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693163, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693162, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 338, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 335, + "base_layout_id": 0, + "rect": { + "x": 239.0, + "y": 90.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693167, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693166, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693165, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 339, + "element_id": 268435972, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 330, + "base_layout_id": 0, + "rect": { + "x": 33.0, + "y": 140.0, + "width": 238.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 340, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 339, + "base_layout_id": 0, + "rect": { + "x": 33.0, + "y": 140.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693161, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693160, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693159, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 341, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 339, + "base_layout_id": 0, + "rect": { + "x": 65.0, + "y": 140.0, + "width": 174.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693164, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693163, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693162, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 342, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 339, + "base_layout_id": 0, + "rect": { + "x": 239.0, + "y": 140.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693167, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693166, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693165, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 343, + "element_id": 268436940, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 330, + "base_layout_id": 0, + "rect": { + "x": 33.0, + "y": 180.0, + "width": 238.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 344, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 343, + "base_layout_id": 0, + "rect": { + "x": 33.0, + "y": 180.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693161, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693160, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693159, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 345, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 343, + "base_layout_id": 0, + "rect": { + "x": 65.0, + "y": 180.0, + "width": 174.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693164, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693163, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693162, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 346, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 343, + "base_layout_id": 0, + "rect": { + "x": 239.0, + "y": 180.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693167, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693166, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693165, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 347, + "element_id": 268435973, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 330, + "base_layout_id": 0, + "rect": { + "x": 33.0, + "y": 220.0, + "width": 238.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 348, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 347, + "base_layout_id": 0, + "rect": { + "x": 33.0, + "y": 220.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693161, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693160, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693159, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 349, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 347, + "base_layout_id": 0, + "rect": { + "x": 65.0, + "y": 220.0, + "width": 174.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693164, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693163, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693162, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 350, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 347, + "base_layout_id": 0, + "rect": { + "x": 239.0, + "y": 220.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693167, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693166, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693165, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 351, + "element_id": 268435974, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 330, + "base_layout_id": 0, + "rect": { + "x": 33.0, + "y": 270.0, + "width": 238.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 352, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 351, + "base_layout_id": 0, + "rect": { + "x": 33.0, + "y": 270.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693161, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693160, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693159, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 353, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 351, + "base_layout_id": 0, + "rect": { + "x": 65.0, + "y": 270.0, + "width": 174.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693164, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693163, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693162, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 354, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 351, + "base_layout_id": 0, + "rect": { + "x": 239.0, + "y": 270.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693167, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693166, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693165, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 355, + "element_id": 268435975, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 330, + "base_layout_id": 0, + "rect": { + "x": 33.0, + "y": 310.0, + "width": 238.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 356, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 355, + "base_layout_id": 0, + "rect": { + "x": 33.0, + "y": 310.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693161, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693160, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693159, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 357, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 355, + "base_layout_id": 0, + "rect": { + "x": 65.0, + "y": 310.0, + "width": 174.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693164, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693163, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693162, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 358, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 355, + "base_layout_id": 0, + "rect": { + "x": 239.0, + "y": 310.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693167, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693166, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693165, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 359, + "element_id": 268436748, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 290, + "base_layout_id": 0, + "rect": { + "x": 7.0, + "y": 30.0, + "width": 298.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 360, + "element_id": 268436749, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 359, + "base_layout_id": 0, + "rect": { + "x": 7.0, + "y": 30.0, + "width": 282.0, + "height": 297.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 361, + "element_id": 268435969, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 359, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 30.0, + "width": 16.0, + "height": 297.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 362, + "element_id": 1, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 361, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 30.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 363, + "element_id": 268436324, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 362, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 30.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 364, + "element_id": 268436325, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 362, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 33.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 365, + "element_id": 268436326, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 362, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 43.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 366, + "element_id": 268435569, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 361, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 30.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 367, + "element_id": 268435570, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 361, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 311.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 368, + "element_id": 268435964, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 359, + "base_layout_id": 0, + "rect": { + "x": 23.0, + "y": 331.0, + "width": 80.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 369, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 368, + "base_layout_id": 0, + "rect": { + "x": 23.0, + "y": 331.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 370, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 368, + "base_layout_id": 0, + "rect": { + "x": 55.0, + "y": 331.0, + "width": 16.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 371, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 368, + "base_layout_id": 0, + "rect": { + "x": 71.0, + "y": 331.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 372, + "element_id": 268435965, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 359, + "base_layout_id": 0, + "rect": { + "x": 113.0, + "y": 331.0, + "width": 80.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 373, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 372, + "base_layout_id": 0, + "rect": { + "x": 113.0, + "y": 331.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 374, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 372, + "base_layout_id": 0, + "rect": { + "x": 145.0, + "y": 331.0, + "width": 16.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 375, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 372, + "base_layout_id": 0, + "rect": { + "x": 161.0, + "y": 331.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 376, + "element_id": 268435966, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 359, + "base_layout_id": 0, + "rect": { + "x": 203.0, + "y": 331.0, + "width": 80.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 377, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 376, + "base_layout_id": 0, + "rect": { + "x": 203.0, + "y": 331.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 378, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 376, + "base_layout_id": 0, + "rect": { + "x": 235.0, + "y": 331.0, + "width": 16.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 379, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 376, + "base_layout_id": 0, + "rect": { + "x": 251.0, + "y": 331.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 380, + "element_id": 268435987, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 290, + "base_layout_id": 0, + "rect": { + "x": 7.0, + "y": 30.0, + "width": 298.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 381, + "element_id": 268435968, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 380, + "base_layout_id": 0, + "rect": { + "x": 7.0, + "y": 30.0, + "width": 282.0, + "height": 297.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 382, + "element_id": 268435969, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 380, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 30.0, + "width": 16.0, + "height": 297.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 383, + "element_id": 1, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 382, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 30.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 384, + "element_id": 268436324, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 383, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 30.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 385, + "element_id": 268436325, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 383, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 33.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 386, + "element_id": 268436326, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 383, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 43.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 387, + "element_id": 268435569, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 382, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 30.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 388, + "element_id": 268435570, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 382, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 311.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 389, + "element_id": 268435964, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 380, + "base_layout_id": 0, + "rect": { + "x": 23.0, + "y": 331.0, + "width": 80.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 390, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 389, + "base_layout_id": 0, + "rect": { + "x": 23.0, + "y": 331.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 391, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 389, + "base_layout_id": 0, + "rect": { + "x": 55.0, + "y": 331.0, + "width": 16.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 392, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 389, + "base_layout_id": 0, + "rect": { + "x": 71.0, + "y": 331.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 393, + "element_id": 268435965, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 380, + "base_layout_id": 0, + "rect": { + "x": 113.0, + "y": 331.0, + "width": 80.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 394, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 393, + "base_layout_id": 0, + "rect": { + "x": 113.0, + "y": 331.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 395, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 393, + "base_layout_id": 0, + "rect": { + "x": 145.0, + "y": 331.0, + "width": 16.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 396, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 393, + "base_layout_id": 0, + "rect": { + "x": 161.0, + "y": 331.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 397, + "element_id": 268435966, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 380, + "base_layout_id": 0, + "rect": { + "x": 203.0, + "y": 331.0, + "width": 80.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 398, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 397, + "base_layout_id": 0, + "rect": { + "x": 203.0, + "y": 331.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 399, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 397, + "base_layout_id": 0, + "rect": { + "x": 235.0, + "y": 331.0, + "width": 16.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 400, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 397, + "base_layout_id": 0, + "rect": { + "x": 251.0, + "y": 331.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 401, + "element_id": 268435854, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 300.0, + "height": 362.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 402, + "element_id": 268436008, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 401, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 92.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 403, + "element_id": 268436537, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 402, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 404, + "element_id": 268435689, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 402, + "base_layout_id": 0, + "rect": { + "x": 22.0, + "y": 5.0, + "width": 58.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 405, + "element_id": 268435989, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 402, + "base_layout_id": 0, + "rect": { + "x": 80.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 406, + "element_id": 268436009, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 401, + "base_layout_id": 0, + "rect": { + "x": 97.0, + "y": 5.0, + "width": 92.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 407, + "element_id": 268436537, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 406, + "base_layout_id": 0, + "rect": { + "x": 97.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 408, + "element_id": 268435689, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 406, + "base_layout_id": 0, + "rect": { + "x": 114.0, + "y": 5.0, + "width": 58.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 409, + "element_id": 268435989, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 406, + "base_layout_id": 0, + "rect": { + "x": 172.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 410, + "element_id": 268436792, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 401, + "base_layout_id": 0, + "rect": { + "x": 189.0, + "y": 5.0, + "width": 92.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 411, + "element_id": 268436537, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 410, + "base_layout_id": 0, + "rect": { + "x": 189.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 412, + "element_id": 268435689, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 410, + "base_layout_id": 0, + "rect": { + "x": 206.0, + "y": 5.0, + "width": 58.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 413, + "element_id": 268435989, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 410, + "base_layout_id": 0, + "rect": { + "x": 264.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 414, + "element_id": 268436010, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 401, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 5.0, + "width": 24.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668307, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668307, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668308, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 415, + "element_id": 268436011, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 401, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 416, + "element_id": 268436006, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 415, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 417, + "element_id": 268436016, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 416, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 110.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 418, + "element_id": 268436017, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 417, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 230.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 419, + "element_id": 268436018, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 417, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 50.0, + "width": 230.0, + "height": 15.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 420, + "element_id": 268436019, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 417, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 65.0, + "width": 230.0, + "height": 15.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 421, + "element_id": 268436933, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 417, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 82.0, + "width": 110.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 422, + "element_id": 268436934, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 417, + "base_layout_id": 0, + "rect": { + "x": 115.0, + "y": 82.0, + "width": 120.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 423, + "element_id": 268436020, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 417, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 100.0, + "width": 130.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 424, + "element_id": 268436021, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 417, + "base_layout_id": 0, + "rect": { + "x": 135.0, + "y": 100.0, + "width": 100.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 425, + "element_id": 268436022, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 417, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 118.0, + "width": 230.0, + "height": 17.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667814, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667814, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 426, + "element_id": 2, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 425, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 119.0, + "width": 230.0, + "height": 15.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667813, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667813, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 427, + "element_id": 268436023, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 425, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 118.0, + "width": 130.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 428, + "element_id": 268436024, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 425, + "base_layout_id": 0, + "rect": { + "x": 135.0, + "y": 118.0, + "width": 100.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 429, + "element_id": 268436025, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 417, + "base_layout_id": 0, + "rect": { + "x": 235.0, + "y": 30.0, + "width": 5.0, + "height": 105.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682936, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682936, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 430, + "element_id": 268436026, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 417, + "base_layout_id": 0, + "rect": { + "x": 240.0, + "y": 30.0, + "width": 65.0, + "height": 35.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 431, + "element_id": 268436027, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 417, + "base_layout_id": 0, + "rect": { + "x": 240.0, + "y": 65.0, + "width": 65.0, + "height": 50.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 432, + "element_id": 268436028, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 416, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 135.0, + "width": 300.0, + "height": 7.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682951, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682951, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 433, + "element_id": 268436029, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 416, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 142.0, + "width": 300.0, + "height": 160.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 434, + "element_id": 268436030, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 416, + "base_layout_id": 0, + "rect": { + "x": 286.0, + "y": 142.0, + "width": 16.0, + "height": 160.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 435, + "element_id": 1, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 434, + "base_layout_id": 0, + "rect": { + "x": 286.0, + "y": 142.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 436, + "element_id": 268436324, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 435, + "base_layout_id": 0, + "rect": { + "x": 286.0, + "y": 142.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 437, + "element_id": 268436325, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 435, + "base_layout_id": 0, + "rect": { + "x": 286.0, + "y": 145.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 438, + "element_id": 268436326, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 435, + "base_layout_id": 0, + "rect": { + "x": 286.0, + "y": 155.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 439, + "element_id": 268435569, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 434, + "base_layout_id": 0, + "rect": { + "x": 286.0, + "y": 142.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 440, + "element_id": 268435570, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 434, + "base_layout_id": 0, + "rect": { + "x": 286.0, + "y": 286.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 441, + "element_id": 268436031, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 416, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 302.0, + "width": 300.0, + "height": 7.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682951, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682951, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 442, + "element_id": 268436032, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 416, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 312.0, + "width": 300.0, + "height": 55.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 443, + "element_id": 268436046, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 442, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 312.0, + "width": 300.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 444, + "element_id": 268436034, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 442, + "base_layout_id": 0, + "rect": { + "x": 10.0, + "y": 332.0, + "width": 195.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 445, + "element_id": 268436035, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 442, + "base_layout_id": 0, + "rect": { + "x": 205.0, + "y": 332.0, + "width": 95.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 446, + "element_id": 268436036, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 442, + "base_layout_id": 0, + "rect": { + "x": 10.0, + "y": 349.0, + "width": 195.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 447, + "element_id": 268436037, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 442, + "base_layout_id": 0, + "rect": { + "x": 205.0, + "y": 349.0, + "width": 95.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 448, + "element_id": 268436033, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 416, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 312.0, + "width": 300.0, + "height": 55.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 449, + "element_id": 268436046, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 448, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 312.0, + "width": 300.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 450, + "element_id": 268436034, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 448, + "base_layout_id": 0, + "rect": { + "x": 10.0, + "y": 332.0, + "width": 145.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 451, + "element_id": 268436035, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 448, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 332.0, + "width": 95.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 452, + "element_id": 268436036, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 448, + "base_layout_id": 0, + "rect": { + "x": 10.0, + "y": 349.0, + "width": 145.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 453, + "element_id": 268436037, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 448, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 349.0, + "width": 95.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 454, + "element_id": 268436038, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 448, + "base_layout_id": 0, + "rect": { + "x": 265.0, + "y": 338.0, + "width": 30.0, + "height": 26.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682935, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682934, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682935, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 455, + "element_id": 268436971, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 448, + "base_layout_id": 0, + "rect": { + "x": 265.0, + "y": 312.0, + "width": 30.0, + "height": 26.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100692268, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100692267, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100692268, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 456, + "element_id": 268436039, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 416, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 312.0, + "width": 300.0, + "height": 55.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 457, + "element_id": 268436046, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 456, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 312.0, + "width": 300.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 458, + "element_id": 268436034, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 456, + "base_layout_id": 0, + "rect": { + "x": 10.0, + "y": 332.0, + "width": 145.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 459, + "element_id": 268436039, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 456, + "base_layout_id": 0, + "rect": { + "x": 10.0, + "y": 332.0, + "width": 240.0, + "height": 17.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667814, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667814, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 460, + "element_id": 2, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 459, + "base_layout_id": 0, + "rect": { + "x": 10.0, + "y": 333.0, + "width": 240.0, + "height": 15.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667274, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667274, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 461, + "element_id": 268436035, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 456, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 332.0, + "width": 95.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 462, + "element_id": 268436036, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 456, + "base_layout_id": 0, + "rect": { + "x": 10.0, + "y": 349.0, + "width": 145.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 463, + "element_id": 268436037, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 456, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 349.0, + "width": 95.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 464, + "element_id": 268436038, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 456, + "base_layout_id": 0, + "rect": { + "x": 265.0, + "y": 338.0, + "width": 30.0, + "height": 26.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682935, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682934, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682935, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 465, + "element_id": 268436971, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 456, + "base_layout_id": 0, + "rect": { + "x": 265.0, + "y": 312.0, + "width": 30.0, + "height": 26.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100692268, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100692267, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100692268, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 466, + "element_id": 268436012, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 401, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 467, + "element_id": 268436006, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 466, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 468, + "element_id": 268436016, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 467, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 110.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 469, + "element_id": 268436017, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 468, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 230.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 470, + "element_id": 268436018, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 468, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 50.0, + "width": 230.0, + "height": 15.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 471, + "element_id": 268436019, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 468, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 65.0, + "width": 230.0, + "height": 15.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 472, + "element_id": 268436933, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 468, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 82.0, + "width": 110.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 473, + "element_id": 268436934, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 468, + "base_layout_id": 0, + "rect": { + "x": 115.0, + "y": 82.0, + "width": 120.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 474, + "element_id": 268436020, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 468, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 100.0, + "width": 130.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 475, + "element_id": 268436021, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 468, + "base_layout_id": 0, + "rect": { + "x": 135.0, + "y": 100.0, + "width": 100.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 476, + "element_id": 268436022, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 468, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 118.0, + "width": 230.0, + "height": 17.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667814, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667814, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 477, + "element_id": 2, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 476, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 119.0, + "width": 230.0, + "height": 15.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667813, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667813, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 478, + "element_id": 268436023, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 476, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 118.0, + "width": 130.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 479, + "element_id": 268436024, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 476, + "base_layout_id": 0, + "rect": { + "x": 135.0, + "y": 118.0, + "width": 100.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 480, + "element_id": 268436025, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 468, + "base_layout_id": 0, + "rect": { + "x": 235.0, + "y": 30.0, + "width": 5.0, + "height": 105.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682936, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682936, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 481, + "element_id": 268436026, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 468, + "base_layout_id": 0, + "rect": { + "x": 240.0, + "y": 30.0, + "width": 65.0, + "height": 35.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 482, + "element_id": 268436027, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 468, + "base_layout_id": 0, + "rect": { + "x": 240.0, + "y": 65.0, + "width": 65.0, + "height": 50.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 483, + "element_id": 268436028, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 467, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 135.0, + "width": 300.0, + "height": 7.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682951, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682951, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 484, + "element_id": 268436029, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 467, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 142.0, + "width": 300.0, + "height": 160.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 485, + "element_id": 268436030, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 467, + "base_layout_id": 0, + "rect": { + "x": 286.0, + "y": 142.0, + "width": 16.0, + "height": 160.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 486, + "element_id": 1, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 485, + "base_layout_id": 0, + "rect": { + "x": 286.0, + "y": 142.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 487, + "element_id": 268436324, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 486, + "base_layout_id": 0, + "rect": { + "x": 286.0, + "y": 142.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 488, + "element_id": 268436325, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 486, + "base_layout_id": 0, + "rect": { + "x": 286.0, + "y": 145.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 489, + "element_id": 268436326, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 486, + "base_layout_id": 0, + "rect": { + "x": 286.0, + "y": 155.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 490, + "element_id": 268435569, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 485, + "base_layout_id": 0, + "rect": { + "x": 286.0, + "y": 142.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 491, + "element_id": 268435570, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 485, + "base_layout_id": 0, + "rect": { + "x": 286.0, + "y": 286.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 492, + "element_id": 268436031, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 467, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 302.0, + "width": 300.0, + "height": 7.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682951, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682951, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 493, + "element_id": 268436032, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 467, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 312.0, + "width": 300.0, + "height": 55.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 494, + "element_id": 268436046, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 493, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 312.0, + "width": 300.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 495, + "element_id": 268436034, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 493, + "base_layout_id": 0, + "rect": { + "x": 10.0, + "y": 332.0, + "width": 195.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 496, + "element_id": 268436035, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 493, + "base_layout_id": 0, + "rect": { + "x": 205.0, + "y": 332.0, + "width": 95.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 497, + "element_id": 268436036, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 493, + "base_layout_id": 0, + "rect": { + "x": 10.0, + "y": 349.0, + "width": 195.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 498, + "element_id": 268436037, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 493, + "base_layout_id": 0, + "rect": { + "x": 205.0, + "y": 349.0, + "width": 95.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 499, + "element_id": 268436033, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 467, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 312.0, + "width": 300.0, + "height": 55.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 500, + "element_id": 268436046, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 499, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 312.0, + "width": 300.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 501, + "element_id": 268436034, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 499, + "base_layout_id": 0, + "rect": { + "x": 10.0, + "y": 332.0, + "width": 145.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 502, + "element_id": 268436035, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 499, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 332.0, + "width": 95.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 503, + "element_id": 268436036, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 499, + "base_layout_id": 0, + "rect": { + "x": 10.0, + "y": 349.0, + "width": 145.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 504, + "element_id": 268436037, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 499, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 349.0, + "width": 95.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 505, + "element_id": 268436038, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 499, + "base_layout_id": 0, + "rect": { + "x": 265.0, + "y": 338.0, + "width": 30.0, + "height": 26.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682935, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682934, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682935, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 506, + "element_id": 268436971, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 499, + "base_layout_id": 0, + "rect": { + "x": 265.0, + "y": 312.0, + "width": 30.0, + "height": 26.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100692268, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100692267, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100692268, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 507, + "element_id": 268436039, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 467, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 312.0, + "width": 300.0, + "height": 55.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 508, + "element_id": 268436046, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 507, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 312.0, + "width": 300.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 509, + "element_id": 268436034, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 507, + "base_layout_id": 0, + "rect": { + "x": 10.0, + "y": 332.0, + "width": 145.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 510, + "element_id": 268436039, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 507, + "base_layout_id": 0, + "rect": { + "x": 10.0, + "y": 332.0, + "width": 240.0, + "height": 17.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667814, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667814, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 511, + "element_id": 2, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 510, + "base_layout_id": 0, + "rect": { + "x": 10.0, + "y": 333.0, + "width": 240.0, + "height": 15.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100667274, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100667274, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 512, + "element_id": 268436035, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 507, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 332.0, + "width": 95.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 513, + "element_id": 268436036, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 507, + "base_layout_id": 0, + "rect": { + "x": 10.0, + "y": 349.0, + "width": 145.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 514, + "element_id": 268436037, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 507, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 349.0, + "width": 95.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 515, + "element_id": 268436038, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 507, + "base_layout_id": 0, + "rect": { + "x": 265.0, + "y": 338.0, + "width": 30.0, + "height": 26.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682935, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682934, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682935, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 516, + "element_id": 268436971, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 507, + "base_layout_id": 0, + "rect": { + "x": 265.0, + "y": 312.0, + "width": 30.0, + "height": 26.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100692268, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100692267, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100692268, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 517, + "element_id": 268436793, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 401, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 518, + "element_id": 268436782, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 517, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 50.0, + "width": 270.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 519, + "element_id": 268436783, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 517, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 70.0, + "width": 270.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 520, + "element_id": 268436784, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 517, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 9.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668448, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668448, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 521, + "element_id": 268436785, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 517, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 100.0, + "width": 270.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 522, + "element_id": 268436786, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 517, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 120.0, + "width": 270.0, + "height": 192.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 523, + "element_id": 268436787, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 517, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 120.0, + "width": 16.0, + "height": 192.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 524, + "element_id": 1, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 523, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 120.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 525, + "element_id": 268436324, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 524, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 120.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 526, + "element_id": 268436325, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 524, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 123.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 527, + "element_id": 268436326, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 524, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 133.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 528, + "element_id": 268435569, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 523, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 120.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 529, + "element_id": 268435570, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 523, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 296.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 530, + "element_id": 268436788, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 517, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 317.0, + "width": 300.0, + "height": 9.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668448, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668448, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 531, + "element_id": 268436789, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 517, + "base_layout_id": 0, + "rect": { + "x": 58.0, + "y": 327.0, + "width": 200.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 532, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 531, + "base_layout_id": 0, + "rect": { + "x": 58.0, + "y": 327.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 533, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 531, + "base_layout_id": 0, + "rect": { + "x": 90.0, + "y": 327.0, + "width": 136.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 534, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 531, + "base_layout_id": 0, + "rect": { + "x": 226.0, + "y": 327.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 535, + "element_id": 268436825, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 300.0, + "height": 362.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 536, + "element_id": 268436947, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 535, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 92.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 537, + "element_id": 268436537, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 536, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 538, + "element_id": 268435689, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 536, + "base_layout_id": 0, + "rect": { + "x": 22.0, + "y": 5.0, + "width": 58.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 539, + "element_id": 268435989, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 536, + "base_layout_id": 0, + "rect": { + "x": 80.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 540, + "element_id": 268436832, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 535, + "base_layout_id": 0, + "rect": { + "x": 97.0, + "y": 5.0, + "width": 92.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 541, + "element_id": 268436537, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 540, + "base_layout_id": 0, + "rect": { + "x": 97.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 542, + "element_id": 268435689, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 540, + "base_layout_id": 0, + "rect": { + "x": 114.0, + "y": 5.0, + "width": 58.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 543, + "element_id": 268435989, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 540, + "base_layout_id": 0, + "rect": { + "x": 172.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 544, + "element_id": 268436833, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 535, + "base_layout_id": 0, + "rect": { + "x": 189.0, + "y": 5.0, + "width": 92.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 545, + "element_id": 268436537, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 544, + "base_layout_id": 0, + "rect": { + "x": 189.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 546, + "element_id": 268435689, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 544, + "base_layout_id": 0, + "rect": { + "x": 206.0, + "y": 5.0, + "width": 58.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 547, + "element_id": 268435989, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 544, + "base_layout_id": 0, + "rect": { + "x": 264.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 548, + "element_id": 268436834, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 535, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 5.0, + "width": 24.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668307, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668307, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668308, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 549, + "element_id": 268436948, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 535, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 550, + "element_id": 268436942, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 549, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 38.0, + "width": 80.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 551, + "element_id": 268436950, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 549, + "base_layout_id": 0, + "rect": { + "x": 165.0, + "y": 38.0, + "width": 80.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 552, + "element_id": 268436943, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 549, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 60.0, + "width": 270.0, + "height": 135.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 553, + "element_id": 268436944, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 549, + "base_layout_id": 0, + "rect": { + "x": 283.0, + "y": 60.0, + "width": 16.0, + "height": 135.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 554, + "element_id": 1, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 553, + "base_layout_id": 0, + "rect": { + "x": 283.0, + "y": 60.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 555, + "element_id": 268436324, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 554, + "base_layout_id": 0, + "rect": { + "x": 283.0, + "y": 60.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 556, + "element_id": 268436325, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 554, + "base_layout_id": 0, + "rect": { + "x": 283.0, + "y": 63.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 557, + "element_id": 268436326, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 554, + "base_layout_id": 0, + "rect": { + "x": 283.0, + "y": 73.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 558, + "element_id": 268435569, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 553, + "base_layout_id": 0, + "rect": { + "x": 283.0, + "y": 60.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 559, + "element_id": 268435570, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 553, + "base_layout_id": 0, + "rect": { + "x": 283.0, + "y": 179.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 560, + "element_id": 268436952, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 549, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 199.0, + "width": 56.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 561, + "element_id": 268436959, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 549, + "base_layout_id": 0, + "rect": { + "x": 69.0, + "y": 199.0, + "width": 232.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 562, + "element_id": 268436953, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 549, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 219.0, + "width": 56.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 563, + "element_id": 268436960, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 549, + "base_layout_id": 0, + "rect": { + "x": 69.0, + "y": 219.0, + "width": 232.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 564, + "element_id": 268436954, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 549, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 239.0, + "width": 120.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 565, + "element_id": 268436961, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 549, + "base_layout_id": 0, + "rect": { + "x": 129.0, + "y": 239.0, + "width": 168.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 566, + "element_id": 268436955, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 549, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 259.0, + "width": 120.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 567, + "element_id": 268436962, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 549, + "base_layout_id": 0, + "rect": { + "x": 129.0, + "y": 259.0, + "width": 168.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 568, + "element_id": 268436958, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 549, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 285.0, + "width": 270.0, + "height": 52.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 569, + "element_id": 268436957, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 549, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 335.0, + "width": 56.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 570, + "element_id": 268436963, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 549, + "base_layout_id": 0, + "rect": { + "x": 69.0, + "y": 335.0, + "width": 150.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 571, + "element_id": 268436956, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 549, + "base_layout_id": 0, + "rect": { + "x": 237.0, + "y": 335.0, + "width": 60.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 572, + "element_id": 268436835, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 535, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100672186, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100672186, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 573, + "element_id": 268435728, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 572, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668015, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668015, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 574, + "element_id": 268435735, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 573, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 33.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668019, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668019, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 575, + "element_id": 268435736, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 573, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 63.0, + "width": 22.0, + "height": 272.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668017, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668017, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 576, + "element_id": 268435728, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 573, + "base_layout_id": 0, + "rect": { + "x": 27.0, + "y": 63.0, + "width": 257.0, + "height": 272.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668015, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668015, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 577, + "element_id": 268435737, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 573, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 63.0, + "width": 21.0, + "height": 272.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668018, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668018, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 578, + "element_id": 268435738, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 573, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 335.0, + "width": 300.0, + "height": 32.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668016, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668016, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 579, + "element_id": 268436837, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 572, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 54.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668009, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668009, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668010, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100668011, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 580, + "element_id": 268436838, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 572, + "base_layout_id": 0, + "rect": { + "x": 240.0, + "y": 335.0, + "width": 65.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668006, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668006, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668007, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100668008, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 581, + "element_id": 268436839, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 572, + "base_layout_id": 0, + "rect": { + "x": 55.0, + "y": 44.0, + "width": 60.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 582, + "element_id": 268436840, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 572, + "base_layout_id": 0, + "rect": { + "x": 131.0, + "y": 44.0, + "width": 44.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 583, + "element_id": 268436841, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 572, + "base_layout_id": 0, + "rect": { + "x": 169.0, + "y": 44.0, + "width": 120.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682954, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682954, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 584, + "element_id": 268436842, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 572, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 70.0, + "width": 40.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 585, + "element_id": 268436843, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 572, + "base_layout_id": 0, + "rect": { + "x": 55.0, + "y": 70.0, + "width": 234.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682954, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682954, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 586, + "element_id": 268436844, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 572, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 96.0, + "width": 50.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 587, + "element_id": 268436845, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 572, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 114.0, + "width": 256.0, + "height": 167.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682954, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682954, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 588, + "element_id": 268436846, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 572, + "base_layout_id": 0, + "rect": { + "x": 277.0, + "y": 114.0, + "width": 16.0, + "height": 167.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 589, + "element_id": 1, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 588, + "base_layout_id": 0, + "rect": { + "x": 277.0, + "y": 114.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 590, + "element_id": 268436324, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 589, + "base_layout_id": 0, + "rect": { + "x": 277.0, + "y": 114.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 591, + "element_id": 268436325, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 589, + "base_layout_id": 0, + "rect": { + "x": 277.0, + "y": 117.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 592, + "element_id": 268436326, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 589, + "base_layout_id": 0, + "rect": { + "x": 277.0, + "y": 127.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 593, + "element_id": 268435569, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 588, + "base_layout_id": 0, + "rect": { + "x": 277.0, + "y": 114.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 594, + "element_id": 268435570, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 588, + "base_layout_id": 0, + "rect": { + "x": 277.0, + "y": 265.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 595, + "element_id": 268436847, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 572, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 331.0, + "width": 60.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 596, + "element_id": 268436848, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 572, + "base_layout_id": 0, + "rect": { + "x": 105.0, + "y": 331.0, + "width": 100.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 597, + "element_id": 268436849, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 572, + "base_layout_id": 0, + "rect": { + "x": 205.0, + "y": 331.0, + "width": 60.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 598, + "element_id": 268436850, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 572, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 287.0, + "width": 64.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 599, + "element_id": 268436851, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 572, + "base_layout_id": 0, + "rect": { + "x": 89.0, + "y": 287.0, + "width": 150.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682954, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682954, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 600, + "element_id": 268436852, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 572, + "base_layout_id": 0, + "rect": { + "x": 245.0, + "y": 287.0, + "width": 52.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 601, + "element_id": 268436853, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 572, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 309.0, + "width": 64.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 602, + "element_id": 268436854, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 572, + "base_layout_id": 0, + "rect": { + "x": 89.0, + "y": 309.0, + "width": 20.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682954, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682954, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 603, + "element_id": 268436855, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 572, + "base_layout_id": 0, + "rect": { + "x": 111.0, + "y": 309.0, + "width": 10.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 604, + "element_id": 268436856, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 572, + "base_layout_id": 0, + "rect": { + "x": 125.0, + "y": 309.0, + "width": 20.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682954, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682954, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 605, + "element_id": 268436857, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 572, + "base_layout_id": 0, + "rect": { + "x": 147.0, + "y": 309.0, + "width": 10.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 606, + "element_id": 268436858, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 572, + "base_layout_id": 0, + "rect": { + "x": 161.0, + "y": 309.0, + "width": 20.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682954, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682954, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 607, + "element_id": 268436859, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 572, + "base_layout_id": 0, + "rect": { + "x": 183.0, + "y": 309.0, + "width": 10.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 608, + "element_id": 268436860, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 572, + "base_layout_id": 0, + "rect": { + "x": 89.0, + "y": 309.0, + "width": 120.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 609, + "element_id": 268436861, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 572, + "base_layout_id": 0, + "rect": { + "x": 245.0, + "y": 309.0, + "width": 40.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 610, + "element_id": 268436836, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 535, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 611, + "element_id": 268436863, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 610, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 38.0, + "width": 20.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 612, + "element_id": 268436864, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 610, + "base_layout_id": 0, + "rect": { + "x": 33.0, + "y": 38.0, + "width": 90.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 613, + "element_id": 268436865, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 610, + "base_layout_id": 0, + "rect": { + "x": 123.0, + "y": 38.0, + "width": 90.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 614, + "element_id": 268436866, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 610, + "base_layout_id": 0, + "rect": { + "x": 213.0, + "y": 38.0, + "width": 80.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 615, + "element_id": 268436867, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 610, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 60.0, + "width": 270.0, + "height": 267.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 616, + "element_id": 268436868, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 610, + "base_layout_id": 0, + "rect": { + "x": 283.0, + "y": 60.0, + "width": 16.0, + "height": 267.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 617, + "element_id": 1, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 616, + "base_layout_id": 0, + "rect": { + "x": 283.0, + "y": 60.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 618, + "element_id": 268436324, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 617, + "base_layout_id": 0, + "rect": { + "x": 283.0, + "y": 60.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 619, + "element_id": 268436325, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 617, + "base_layout_id": 0, + "rect": { + "x": 283.0, + "y": 63.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 620, + "element_id": 268436326, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 617, + "base_layout_id": 0, + "rect": { + "x": 283.0, + "y": 73.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 621, + "element_id": 268435569, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 616, + "base_layout_id": 0, + "rect": { + "x": 283.0, + "y": 60.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 622, + "element_id": 268435570, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 616, + "base_layout_id": 0, + "rect": { + "x": 283.0, + "y": 311.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 623, + "element_id": 268436869, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 610, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 335.0, + "width": 60.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 624, + "element_id": 268436870, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 610, + "base_layout_id": 0, + "rect": { + "x": 81.0, + "y": 335.0, + "width": 50.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 625, + "element_id": 268436871, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 610, + "base_layout_id": 0, + "rect": { + "x": 135.0, + "y": 335.0, + "width": 118.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 626, + "element_id": 268436872, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 610, + "base_layout_id": 0, + "rect": { + "x": 255.0, + "y": 335.0, + "width": 42.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 627, + "element_id": 268435855, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 300.0, + "height": 362.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 628, + "element_id": 268436108, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 627, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 72.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 629, + "element_id": 268436537, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 628, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 630, + "element_id": 268435689, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 628, + "base_layout_id": 0, + "rect": { + "x": 22.0, + "y": 5.0, + "width": 38.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 631, + "element_id": 268435989, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 628, + "base_layout_id": 0, + "rect": { + "x": 60.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 632, + "element_id": 268436110, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 627, + "base_layout_id": 0, + "rect": { + "x": 77.0, + "y": 5.0, + "width": 72.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 633, + "element_id": 268436537, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 632, + "base_layout_id": 0, + "rect": { + "x": 77.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 634, + "element_id": 268435689, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 632, + "base_layout_id": 0, + "rect": { + "x": 94.0, + "y": 5.0, + "width": 38.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 635, + "element_id": 268435989, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 632, + "base_layout_id": 0, + "rect": { + "x": 132.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 636, + "element_id": 268436754, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 627, + "base_layout_id": 0, + "rect": { + "x": 149.0, + "y": 5.0, + "width": 62.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 637, + "element_id": 268436537, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 636, + "base_layout_id": 0, + "rect": { + "x": 149.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 638, + "element_id": 268435689, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 636, + "base_layout_id": 0, + "rect": { + "x": 166.0, + "y": 5.0, + "width": 28.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 639, + "element_id": 268435989, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 636, + "base_layout_id": 0, + "rect": { + "x": 194.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 640, + "element_id": 268436795, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 627, + "base_layout_id": 0, + "rect": { + "x": 211.0, + "y": 5.0, + "width": 70.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 641, + "element_id": 268436537, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 640, + "base_layout_id": 0, + "rect": { + "x": 211.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 642, + "element_id": 268435689, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 640, + "base_layout_id": 0, + "rect": { + "x": 228.0, + "y": 5.0, + "width": 36.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 643, + "element_id": 268435989, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 640, + "base_layout_id": 0, + "rect": { + "x": 264.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 644, + "element_id": 268436112, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 627, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 5.0, + "width": 24.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668445, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668445, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668446, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 645, + "element_id": 268436113, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 627, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 646, + "element_id": 268436048, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 645, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 45.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 647, + "element_id": 268436049, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 646, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 648, + "element_id": 268436050, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 646, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 48.0, + "width": 120.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 649, + "element_id": 268436051, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 646, + "base_layout_id": 0, + "rect": { + "x": 125.0, + "y": 48.0, + "width": 280.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 650, + "element_id": 268436052, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 646, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 66.0, + "width": 300.0, + "height": 9.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668448, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668448, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 651, + "element_id": 268436053, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 645, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 75.0, + "width": 300.0, + "height": 63.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 652, + "element_id": 268436054, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 651, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 75.0, + "width": 210.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 653, + "element_id": 268436055, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 651, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 93.0, + "width": 210.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 654, + "element_id": 268436624, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 651, + "base_layout_id": 0, + "rect": { + "x": 215.0, + "y": 75.0, + "width": 90.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 655, + "element_id": 268436625, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 654, + "base_layout_id": 0, + "rect": { + "x": 215.0, + "y": 75.0, + "width": 90.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 656, + "element_id": 268436626, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 654, + "base_layout_id": 0, + "rect": { + "x": 215.0, + "y": 93.0, + "width": 90.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 657, + "element_id": 268436056, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 651, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 111.0, + "width": 280.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 658, + "element_id": 268436057, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 651, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 129.0, + "width": 300.0, + "height": 9.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668448, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668448, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 659, + "element_id": 268436058, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 645, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 138.0, + "width": 300.0, + "height": 45.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 660, + "element_id": 268436059, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 659, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 138.0, + "width": 100.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 661, + "element_id": 268436060, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 659, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 156.0, + "width": 280.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 662, + "element_id": 268436624, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 659, + "base_layout_id": 0, + "rect": { + "x": 225.0, + "y": 138.0, + "width": 80.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 663, + "element_id": 268436625, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 662, + "base_layout_id": 0, + "rect": { + "x": 225.0, + "y": 138.0, + "width": 80.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 664, + "element_id": 268436626, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 662, + "base_layout_id": 0, + "rect": { + "x": 225.0, + "y": 156.0, + "width": 80.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 665, + "element_id": 268436061, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 659, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 174.0, + "width": 300.0, + "height": 9.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668448, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668448, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 666, + "element_id": 268436062, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 645, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 183.0, + "width": 100.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 667, + "element_id": 268436063, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 645, + "base_layout_id": 0, + "rect": { + "x": 184.0, + "y": 183.0, + "width": 100.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 668, + "element_id": 268436064, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 645, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 201.0, + "width": 279.0, + "height": 87.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683019, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683019, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 669, + "element_id": 268436065, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 645, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 201.0, + "width": 16.0, + "height": 87.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 670, + "element_id": 1, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 669, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 201.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 671, + "element_id": 268436324, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 670, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 201.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 672, + "element_id": 268436325, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 670, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 204.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 673, + "element_id": 268436326, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 670, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 214.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 674, + "element_id": 268435569, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 669, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 201.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 675, + "element_id": 268435570, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 669, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 272.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 676, + "element_id": 268436066, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 645, + "base_layout_id": 0, + "rect": { + "x": 14.0, + "y": 302.0, + "width": 275.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 677, + "element_id": 268436264, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 676, + "base_layout_id": 0, + "rect": { + "x": 14.0, + "y": 303.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 678, + "element_id": 268436067, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 645, + "base_layout_id": 0, + "rect": { + "x": 14.0, + "y": 329.0, + "width": 88.0, + "height": 33.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 679, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 678, + "base_layout_id": 0, + "rect": { + "x": 14.0, + "y": 329.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 680, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 678, + "base_layout_id": 0, + "rect": { + "x": 46.0, + "y": 329.0, + "width": 24.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 681, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 678, + "base_layout_id": 0, + "rect": { + "x": 70.0, + "y": 329.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 682, + "element_id": 268436068, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 645, + "base_layout_id": 0, + "rect": { + "x": 111.0, + "y": 329.0, + "width": 88.0, + "height": 33.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 683, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 682, + "base_layout_id": 0, + "rect": { + "x": 111.0, + "y": 329.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 684, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 682, + "base_layout_id": 0, + "rect": { + "x": 143.0, + "y": 329.0, + "width": 24.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 685, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 682, + "base_layout_id": 0, + "rect": { + "x": 167.0, + "y": 329.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 686, + "element_id": 268436069, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 645, + "base_layout_id": 0, + "rect": { + "x": 208.0, + "y": 329.0, + "width": 88.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 687, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 686, + "base_layout_id": 0, + "rect": { + "x": 208.0, + "y": 329.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 688, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 686, + "base_layout_id": 0, + "rect": { + "x": 240.0, + "y": 329.0, + "width": 24.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 689, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 686, + "base_layout_id": 0, + "rect": { + "x": 264.0, + "y": 329.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 690, + "element_id": 268436114, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 627, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 691, + "element_id": 268436075, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 690, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 692, + "element_id": 268436076, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 691, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 48.0, + "width": 284.0, + "height": 120.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 693, + "element_id": 268436077, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 691, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 221.0, + "width": 300.0, + "height": 9.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668448, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668448, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 694, + "element_id": 268436078, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 691, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 230.0, + "width": 148.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 695, + "element_id": 268436079, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 691, + "base_layout_id": 0, + "rect": { + "x": 153.0, + "y": 230.0, + "width": 147.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 696, + "element_id": 268436080, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 691, + "base_layout_id": 0, + "rect": { + "x": 30.0, + "y": 255.0, + "width": 275.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 697, + "element_id": 268436264, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 696, + "base_layout_id": 0, + "rect": { + "x": 30.0, + "y": 256.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 698, + "element_id": 268436081, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 691, + "base_layout_id": 0, + "rect": { + "x": 30.0, + "y": 269.0, + "width": 275.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 699, + "element_id": 268436264, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 698, + "base_layout_id": 0, + "rect": { + "x": 30.0, + "y": 270.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 700, + "element_id": 268436082, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 691, + "base_layout_id": 0, + "rect": { + "x": 30.0, + "y": 283.0, + "width": 275.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 701, + "element_id": 268436264, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 700, + "base_layout_id": 0, + "rect": { + "x": 30.0, + "y": 284.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 702, + "element_id": 268436083, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 691, + "base_layout_id": 0, + "rect": { + "x": 30.0, + "y": 297.0, + "width": 275.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 703, + "element_id": 268436264, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 702, + "base_layout_id": 0, + "rect": { + "x": 30.0, + "y": 298.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 704, + "element_id": 268436084, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 691, + "base_layout_id": 0, + "rect": { + "x": 38.0, + "y": 328.0, + "width": 234.0, + "height": 33.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 705, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 704, + "base_layout_id": 0, + "rect": { + "x": 38.0, + "y": 328.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 706, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 704, + "base_layout_id": 0, + "rect": { + "x": 70.0, + "y": 328.0, + "width": 170.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 707, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 704, + "base_layout_id": 0, + "rect": { + "x": 240.0, + "y": 328.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 708, + "element_id": 268436085, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 690, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 709, + "element_id": 268436086, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 708, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 32.0, + "width": 300.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 710, + "element_id": 268436087, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 708, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 52.0, + "width": 100.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 711, + "element_id": 268436088, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 708, + "base_layout_id": 0, + "rect": { + "x": 184.0, + "y": 52.0, + "width": 100.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 712, + "element_id": 268436089, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 708, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 68.0, + "width": 271.0, + "height": 224.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683019, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683019, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 713, + "element_id": 268436090, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 708, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 68.0, + "width": 16.0, + "height": 224.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 714, + "element_id": 1, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 713, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 68.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 715, + "element_id": 268436324, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 714, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 68.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 716, + "element_id": 268436325, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 714, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 71.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 717, + "element_id": 268436326, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 714, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 81.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 718, + "element_id": 268435569, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 713, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 68.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 719, + "element_id": 268435570, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 713, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 276.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 720, + "element_id": 268436091, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 708, + "base_layout_id": 0, + "rect": { + "x": 23.0, + "y": 301.0, + "width": 79.0, + "height": 30.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 721, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 720, + "base_layout_id": 0, + "rect": { + "x": 23.0, + "y": 301.0, + "width": 32.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 722, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 720, + "base_layout_id": 0, + "rect": { + "x": 55.0, + "y": 301.0, + "width": 15.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 723, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 720, + "base_layout_id": 0, + "rect": { + "x": 70.0, + "y": 301.0, + "width": 32.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 724, + "element_id": 268436092, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 708, + "base_layout_id": 0, + "rect": { + "x": 113.0, + "y": 301.0, + "width": 79.0, + "height": 30.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 725, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 724, + "base_layout_id": 0, + "rect": { + "x": 113.0, + "y": 301.0, + "width": 32.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 726, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 724, + "base_layout_id": 0, + "rect": { + "x": 145.0, + "y": 301.0, + "width": 15.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 727, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 724, + "base_layout_id": 0, + "rect": { + "x": 160.0, + "y": 301.0, + "width": 32.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 728, + "element_id": 268436093, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 708, + "base_layout_id": 0, + "rect": { + "x": 203.0, + "y": 301.0, + "width": 79.0, + "height": 30.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 729, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 728, + "base_layout_id": 0, + "rect": { + "x": 203.0, + "y": 301.0, + "width": 32.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 730, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 728, + "base_layout_id": 0, + "rect": { + "x": 235.0, + "y": 301.0, + "width": 15.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 731, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 728, + "base_layout_id": 0, + "rect": { + "x": 250.0, + "y": 301.0, + "width": 32.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 732, + "element_id": 268436094, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 708, + "base_layout_id": 0, + "rect": { + "x": 23.0, + "y": 334.0, + "width": 79.0, + "height": 30.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 733, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 732, + "base_layout_id": 0, + "rect": { + "x": 23.0, + "y": 334.0, + "width": 32.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 734, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 732, + "base_layout_id": 0, + "rect": { + "x": 55.0, + "y": 334.0, + "width": 15.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 735, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 732, + "base_layout_id": 0, + "rect": { + "x": 70.0, + "y": 334.0, + "width": 32.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 736, + "element_id": 268436095, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 708, + "base_layout_id": 0, + "rect": { + "x": 113.0, + "y": 334.0, + "width": 79.0, + "height": 30.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 737, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 736, + "base_layout_id": 0, + "rect": { + "x": 113.0, + "y": 334.0, + "width": 32.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 738, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 736, + "base_layout_id": 0, + "rect": { + "x": 145.0, + "y": 334.0, + "width": 15.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 739, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 736, + "base_layout_id": 0, + "rect": { + "x": 160.0, + "y": 334.0, + "width": 32.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 740, + "element_id": 268436096, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 708, + "base_layout_id": 0, + "rect": { + "x": 203.0, + "y": 334.0, + "width": 79.0, + "height": 30.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 741, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 740, + "base_layout_id": 0, + "rect": { + "x": 203.0, + "y": 334.0, + "width": 32.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 742, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 740, + "base_layout_id": 0, + "rect": { + "x": 235.0, + "y": 334.0, + "width": 15.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 743, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 740, + "base_layout_id": 0, + "rect": { + "x": 250.0, + "y": 334.0, + "width": 32.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 744, + "element_id": 268436810, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 627, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 745, + "element_id": 268436797, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 744, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 50.0, + "width": 270.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 746, + "element_id": 268436766, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 744, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 50.0, + "width": 270.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 747, + "element_id": 268436798, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 744, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 70.0, + "width": 270.0, + "height": 167.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 748, + "element_id": 268436803, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 744, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 70.0, + "width": 16.0, + "height": 167.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 749, + "element_id": 1, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 748, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 70.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 750, + "element_id": 268436324, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 749, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 70.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 751, + "element_id": 268436325, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 749, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 73.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 752, + "element_id": 268436326, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 749, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 83.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 753, + "element_id": 268435569, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 748, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 70.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 754, + "element_id": 268435570, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 748, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 221.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 755, + "element_id": 268436807, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 744, + "base_layout_id": 0, + "rect": { + "x": 105.0, + "y": 247.0, + "width": 100.0, + "height": 33.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 756, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 755, + "base_layout_id": 0, + "rect": { + "x": 105.0, + "y": 247.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 757, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 755, + "base_layout_id": 0, + "rect": { + "x": 137.0, + "y": 247.0, + "width": 36.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 758, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 755, + "base_layout_id": 0, + "rect": { + "x": 173.0, + "y": 247.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 759, + "element_id": 268436808, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 744, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 287.0, + "width": 300.0, + "height": 9.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668448, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668448, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 760, + "element_id": 268436799, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 744, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 303.0, + "width": 100.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 761, + "element_id": 268436800, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 744, + "base_layout_id": 0, + "rect": { + "x": 105.0, + "y": 303.0, + "width": 184.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 762, + "element_id": 268436811, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 744, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 329.0, + "width": 130.0, + "height": 33.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 763, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 762, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 329.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 764, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 762, + "base_layout_id": 0, + "rect": { + "x": 57.0, + "y": 329.0, + "width": 66.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 765, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 762, + "base_layout_id": 0, + "rect": { + "x": 123.0, + "y": 329.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 766, + "element_id": 268436812, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 744, + "base_layout_id": 0, + "rect": { + "x": 160.0, + "y": 329.0, + "width": 130.0, + "height": 33.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 767, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 766, + "base_layout_id": 0, + "rect": { + "x": 160.0, + "y": 329.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 768, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 766, + "base_layout_id": 0, + "rect": { + "x": 192.0, + "y": 329.0, + "width": 66.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 769, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 766, + "base_layout_id": 0, + "rect": { + "x": 258.0, + "y": 329.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 770, + "element_id": 268436755, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 627, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 771, + "element_id": 268436765, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 770, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 50.0, + "width": 270.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 772, + "element_id": 268436766, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 770, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 50.0, + "width": 270.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 773, + "element_id": 268436759, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 770, + "base_layout_id": 0, + "rect": { + "x": 13.0, + "y": 70.0, + "width": 270.0, + "height": 137.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 774, + "element_id": 268436760, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 770, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 70.0, + "width": 16.0, + "height": 137.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 775, + "element_id": 1, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 774, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 70.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 776, + "element_id": 268436324, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 775, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 70.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 777, + "element_id": 268436325, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 775, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 73.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 778, + "element_id": 268436326, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 775, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 83.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 779, + "element_id": 268435569, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 774, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 70.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 780, + "element_id": 268435570, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 774, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 191.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 781, + "element_id": 268436052, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 770, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 212.0, + "width": 300.0, + "height": 9.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668448, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668448, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 782, + "element_id": 268436780, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 770, + "base_layout_id": 0, + "rect": { + "x": 87.0, + "y": 227.0, + "width": 120.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 783, + "element_id": 268436264, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 782, + "base_layout_id": 0, + "rect": { + "x": 87.0, + "y": 228.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 784, + "element_id": 268436758, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 770, + "base_layout_id": 0, + "rect": { + "x": 58.0, + "y": 247.0, + "width": 88.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 785, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 784, + "base_layout_id": 0, + "rect": { + "x": 58.0, + "y": 247.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 786, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 784, + "base_layout_id": 0, + "rect": { + "x": 90.0, + "y": 247.0, + "width": 24.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 787, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 784, + "base_layout_id": 0, + "rect": { + "x": 114.0, + "y": 247.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 788, + "element_id": 268436757, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 770, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 247.0, + "width": 88.0, + "height": 33.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 789, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 788, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 247.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 790, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 788, + "base_layout_id": 0, + "rect": { + "x": 187.0, + "y": 247.0, + "width": 24.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 791, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 788, + "base_layout_id": 0, + "rect": { + "x": 211.0, + "y": 247.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 792, + "element_id": 268436061, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 770, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 287.0, + "width": 300.0, + "height": 9.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668448, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668448, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 793, + "element_id": 268436764, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 770, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 303.0, + "width": 100.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 794, + "element_id": 268436763, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 770, + "base_layout_id": 0, + "rect": { + "x": 105.0, + "y": 303.0, + "width": 184.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 795, + "element_id": 268436756, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 770, + "base_layout_id": 0, + "rect": { + "x": 111.0, + "y": 329.0, + "width": 88.0, + "height": 33.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 796, + "element_id": 268436174, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 795, + "base_layout_id": 0, + "rect": { + "x": 111.0, + "y": 329.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 797, + "element_id": 268436175, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 795, + "base_layout_id": 0, + "rect": { + "x": 143.0, + "y": 329.0, + "width": 24.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 798, + "element_id": 268436176, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 795, + "base_layout_id": 0, + "rect": { + "x": 167.0, + "y": 329.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 799, + "element_id": 268435856, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 300.0, + "height": 362.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 800, + "element_id": 268436137, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 799, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 138.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 801, + "element_id": 268436537, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 800, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 802, + "element_id": 268435689, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 800, + "base_layout_id": 0, + "rect": { + "x": 22.0, + "y": 5.0, + "width": 104.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 803, + "element_id": 268435989, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 800, + "base_layout_id": 0, + "rect": { + "x": 126.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 804, + "element_id": 268436138, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 799, + "base_layout_id": 0, + "rect": { + "x": 143.0, + "y": 5.0, + "width": 138.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 805, + "element_id": 268436537, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 804, + "base_layout_id": 0, + "rect": { + "x": 143.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 806, + "element_id": 268435689, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 804, + "base_layout_id": 0, + "rect": { + "x": 160.0, + "y": 5.0, + "width": 104.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 807, + "element_id": 268435989, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 804, + "base_layout_id": 0, + "rect": { + "x": 264.0, + "y": 5.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 808, + "element_id": 268436139, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 799, + "base_layout_id": 0, + "rect": { + "x": 281.0, + "y": 5.0, + "width": 24.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668307, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668307, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668308, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 809, + "element_id": 268436140, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 799, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 810, + "element_id": 268436117, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 809, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 280.0, + "height": 224.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 811, + "element_id": 268436118, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 809, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 30.0, + "width": 16.0, + "height": 224.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 812, + "element_id": 1, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 811, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 30.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 813, + "element_id": 268436324, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 812, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 30.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 814, + "element_id": 268436325, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 812, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 33.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 815, + "element_id": 268436326, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 812, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 43.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 816, + "element_id": 268435569, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 811, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 30.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 817, + "element_id": 268435570, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 811, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 238.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 818, + "element_id": 268436119, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 809, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 254.0, + "width": 300.0, + "height": 113.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100673314, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100673314, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 819, + "element_id": 268436120, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 818, + "base_layout_id": 0, + "rect": { + "x": 22.0, + "y": 276.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 820, + "element_id": 268436264, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 819, + "base_layout_id": 0, + "rect": { + "x": 22.0, + "y": 277.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 821, + "element_id": 268436121, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 818, + "base_layout_id": 0, + "rect": { + "x": 92.0, + "y": 276.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 822, + "element_id": 268436264, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 821, + "base_layout_id": 0, + "rect": { + "x": 92.0, + "y": 277.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 823, + "element_id": 268436122, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 818, + "base_layout_id": 0, + "rect": { + "x": 142.0, + "y": 276.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 824, + "element_id": 268436264, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 823, + "base_layout_id": 0, + "rect": { + "x": 142.0, + "y": 277.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 825, + "element_id": 268436123, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 818, + "base_layout_id": 0, + "rect": { + "x": 192.0, + "y": 276.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 826, + "element_id": 268436264, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 825, + "base_layout_id": 0, + "rect": { + "x": 192.0, + "y": 277.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 827, + "element_id": 268436928, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 818, + "base_layout_id": 0, + "rect": { + "x": 242.0, + "y": 276.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 828, + "element_id": 268436264, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 827, + "base_layout_id": 0, + "rect": { + "x": 242.0, + "y": 277.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 829, + "element_id": 268436124, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 818, + "base_layout_id": 0, + "rect": { + "x": 22.0, + "y": 309.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 830, + "element_id": 268436264, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 829, + "base_layout_id": 0, + "rect": { + "x": 22.0, + "y": 310.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 831, + "element_id": 268436125, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 818, + "base_layout_id": 0, + "rect": { + "x": 87.0, + "y": 309.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 832, + "element_id": 268436264, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 831, + "base_layout_id": 0, + "rect": { + "x": 87.0, + "y": 310.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 833, + "element_id": 268436126, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 818, + "base_layout_id": 0, + "rect": { + "x": 152.0, + "y": 309.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 834, + "element_id": 268436264, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 833, + "base_layout_id": 0, + "rect": { + "x": 152.0, + "y": 310.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 835, + "element_id": 268436127, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 818, + "base_layout_id": 0, + "rect": { + "x": 22.0, + "y": 326.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 836, + "element_id": 268436264, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 835, + "base_layout_id": 0, + "rect": { + "x": 22.0, + "y": 327.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 837, + "element_id": 268436128, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 818, + "base_layout_id": 0, + "rect": { + "x": 87.0, + "y": 326.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 838, + "element_id": 268436264, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 837, + "base_layout_id": 0, + "rect": { + "x": 87.0, + "y": 327.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 839, + "element_id": 268436129, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 818, + "base_layout_id": 0, + "rect": { + "x": 152.0, + "y": 326.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 840, + "element_id": 268436264, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 839, + "base_layout_id": 0, + "rect": { + "x": 152.0, + "y": 327.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 841, + "element_id": 268436130, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 818, + "base_layout_id": 0, + "rect": { + "x": 22.0, + "y": 343.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 842, + "element_id": 268436264, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 841, + "base_layout_id": 0, + "rect": { + "x": 22.0, + "y": 344.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 843, + "element_id": 268436814, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 818, + "base_layout_id": 0, + "rect": { + "x": 87.0, + "y": 343.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 844, + "element_id": 268436264, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 843, + "base_layout_id": 0, + "rect": { + "x": 87.0, + "y": 344.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 845, + "element_id": 268436131, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 818, + "base_layout_id": 0, + "rect": { + "x": 17.0, + "y": 260.0, + "width": 90.0, + "height": 19.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 846, + "element_id": 268436132, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 818, + "base_layout_id": 0, + "rect": { + "x": 17.0, + "y": 293.0, + "width": 90.0, + "height": 19.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 847, + "element_id": 268436133, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 818, + "base_layout_id": 0, + "rect": { + "x": 192.0, + "y": 315.0, + "width": 100.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682970, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682970, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682971, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 848, + "element_id": 268436134, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 847, + "base_layout_id": 0, + "rect": { + "x": 192.0, + "y": 315.0, + "width": 100.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 849, + "element_id": 268436141, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 799, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 850, + "element_id": 268436580, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 849, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 284.0, + "height": 337.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 851, + "element_id": 268436581, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 849, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 30.0, + "width": 16.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 852, + "element_id": 1, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 851, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 30.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 853, + "element_id": 268436324, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 852, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 30.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 854, + "element_id": 268436325, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 852, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 33.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 855, + "element_id": 268436326, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 852, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 43.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 856, + "element_id": 268435569, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 851, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 30.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 857, + "element_id": 268435570, + "layout_id": 553648238, + "parent_layout_id": 553648238, + "parent_traversal_index": 851, + "base_layout_id": 0, + "rect": { + "x": 289.0, + "y": 351.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + } + ] + }, + { + "id": 268435954, + "slug": "map", + "title": "Map", + "bucket": "MainPanel", + "parent_slug": "main_panel", + "width": 640, + "height": 620, + "nodes": [ + { + "traversal_index": 0, + "element_id": 268435954, + "layout_id": 553648167, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 300.0, + "height": 600.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 1, + "element_id": 268435955, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 138.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 2, + "element_id": 268436537, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 3, + "element_id": 268435689, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 17.0, + "y": 0.0, + "width": 104.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 4, + "element_id": 268435989, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 121.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 5, + "element_id": 268435956, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 138.0, + "y": 0.0, + "width": 138.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 6, + "element_id": 268436537, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 5, + "base_layout_id": 0, + "rect": { + "x": 138.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 7, + "element_id": 268435689, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 5, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 0.0, + "width": 104.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 8, + "element_id": 268435989, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 5, + "base_layout_id": 0, + "rect": { + "x": 259.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 9, + "element_id": 268435957, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 276.0, + "y": 0.0, + "width": 24.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668307, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668307, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668308, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 10, + "element_id": 268435958, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 575.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 11, + "element_id": 268435945, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 10, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 575.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 12, + "element_id": 268435735, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 11, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 33.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668019, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668019, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 13, + "element_id": 268435736, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 11, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 58.0, + "width": 22.0, + "height": 510.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668017, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668017, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 14, + "element_id": 268435728, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 11, + "base_layout_id": 0, + "rect": { + "x": 22.0, + "y": 58.0, + "width": 257.0, + "height": 510.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668015, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668015, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 15, + "element_id": 268435737, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 11, + "base_layout_id": 0, + "rect": { + "x": 279.0, + "y": 58.0, + "width": 21.0, + "height": 510.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668018, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668018, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 16, + "element_id": 268435738, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 11, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 568.0, + "width": 300.0, + "height": 32.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668016, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668016, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 17, + "element_id": 268435946, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 11, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 147.0, + "width": 300.0, + "height": 330.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 18, + "element_id": 268435947, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 151.0, + "width": 227.0, + "height": 30.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 19, + "element_id": 268435948, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 183.0, + "width": 257.0, + "height": 267.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668029, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 20, + "element_id": 268435949, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 183.0, + "width": 17.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683024, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683024, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 21, + "element_id": 268435950, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 183.0, + "width": 8.0, + "height": 8.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683025, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683025, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 22, + "element_id": 268435953, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 21, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 183.0, + "width": 8.0, + "height": 8.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 23, + "element_id": 268436149, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 22, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 183.0, + "width": 8.0, + "height": 1.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682953, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682953, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 24, + "element_id": 268435977, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 22, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 183.0, + "width": 1.0, + "height": 8.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682953, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682953, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 25, + "element_id": 268435978, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 22, + "base_layout_id": 0, + "rect": { + "x": 28.0, + "y": 183.0, + "width": 1.0, + "height": 8.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682953, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682953, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 26, + "element_id": 268435979, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 22, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 190.0, + "width": 8.0, + "height": 1.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682953, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682953, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 27, + "element_id": 268435951, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 450.0, + "width": 257.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 28, + "element_id": 268435959, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 575.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 29, + "element_id": 268435942, + "layout_id": 553648167, + "parent_layout_id": 553648167, + "parent_traversal_index": 28, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 30.0, + "width": 290.0, + "height": 590.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + } + ] + }, + { + "id": 268435845, + "slug": "negative_effects", + "title": "Negative Effects", + "bucket": "MainPanel", + "parent_slug": "main_panel", + "width": 640, + "height": 480, + "nodes": [ + { + "traversal_index": 0, + "element_id": 268435743, + "layout_id": 553648155, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 300.0, + "height": 362.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 1, + "element_id": 268435708, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 276.0, + "y": 0.0, + "width": 24.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668307, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668307, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668308, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 2, + "element_id": 268435744, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 276.0, + "height": 25.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683002, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683002, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 3, + "element_id": 268435747, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 249.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 4, + "element_id": 268435748, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 27.0, + "width": 16.0, + "height": 249.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 5, + "element_id": 1, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 4, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 27.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 6, + "element_id": 268436324, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 5, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 27.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 7, + "element_id": 268436325, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 5, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 30.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 8, + "element_id": 268436326, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 5, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 40.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 9, + "element_id": 268435569, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 4, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 27.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 10, + "element_id": 268435570, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 4, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 260.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 11, + "element_id": 268435749, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 274.0, + "width": 300.0, + "height": 88.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668309, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668309, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 12, + "element_id": 268435750, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 11, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 282.0, + "width": 280.0, + "height": 78.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 13, + "element_id": 268435751, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 11, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 274.0, + "width": 16.0, + "height": 88.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 14, + "element_id": 1, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 13, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 274.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 15, + "element_id": 268436324, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 14, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 274.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 16, + "element_id": 268436325, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 14, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 277.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 17, + "element_id": 268436326, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 14, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 287.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 18, + "element_id": 268435569, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 13, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 274.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 19, + "element_id": 268435570, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 13, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 346.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 20, + "element_id": 268435745, + "layout_id": 553648155, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 300.0, + "height": 362.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 21, + "element_id": 268435708, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 276.0, + "y": 0.0, + "width": 24.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668307, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668307, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668308, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 22, + "element_id": 268435744, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 276.0, + "height": 25.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683002, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683002, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 23, + "element_id": 268435747, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 249.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 24, + "element_id": 268435748, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 27.0, + "width": 16.0, + "height": 249.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 25, + "element_id": 1, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 24, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 27.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 26, + "element_id": 268436324, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 27.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 27, + "element_id": 268436325, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 30.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 28, + "element_id": 268436326, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 40.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 29, + "element_id": 268435569, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 24, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 27.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 30, + "element_id": 268435570, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 24, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 260.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 31, + "element_id": 268435749, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 274.0, + "width": 300.0, + "height": 88.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668309, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668309, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 32, + "element_id": 268435750, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 31, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 282.0, + "width": 280.0, + "height": 78.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 33, + "element_id": 268435751, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 31, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 274.0, + "width": 16.0, + "height": 88.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 34, + "element_id": 1, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 33, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 274.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 35, + "element_id": 268436324, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 34, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 274.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 36, + "element_id": 268436325, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 34, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 277.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 37, + "element_id": 268436326, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 34, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 287.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 38, + "element_id": 268435569, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 33, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 274.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 39, + "element_id": 268435570, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 33, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 346.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 40, + "element_id": 268435746, + "layout_id": 553648155, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 300.0, + "height": 362.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 41, + "element_id": 268435708, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 276.0, + "y": 0.0, + "width": 24.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668307, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668307, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668308, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 42, + "element_id": 268435744, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 276.0, + "height": 25.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683002, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683002, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 43, + "element_id": 268435747, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 249.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 44, + "element_id": 268435748, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 27.0, + "width": 16.0, + "height": 249.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 45, + "element_id": 1, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 44, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 27.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 46, + "element_id": 268436324, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 45, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 27.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 47, + "element_id": 268436325, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 45, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 30.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 48, + "element_id": 268436326, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 45, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 40.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 49, + "element_id": 268435569, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 44, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 27.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 50, + "element_id": 268435570, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 44, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 260.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 51, + "element_id": 268435749, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 274.0, + "width": 300.0, + "height": 88.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668309, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668309, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 52, + "element_id": 268435750, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 51, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 282.0, + "width": 280.0, + "height": 78.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 53, + "element_id": 268435751, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 51, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 274.0, + "width": 16.0, + "height": 88.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 54, + "element_id": 1, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 53, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 274.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 55, + "element_id": 268436324, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 54, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 274.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 56, + "element_id": 268436325, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 54, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 277.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 57, + "element_id": 268436326, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 54, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 287.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 58, + "element_id": 268435569, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 53, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 274.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 59, + "element_id": 268435570, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 53, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 346.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 60, + "element_id": 268435752, + "layout_id": 553648155, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 300.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668310, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668310, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100668311, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 61, + "element_id": 268435753, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 60, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 62, + "element_id": 268435754, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 60, + "base_layout_id": 0, + "rect": { + "x": 37.0, + "y": 0.0, + "width": 188.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 63, + "element_id": 268435755, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 60, + "base_layout_id": 0, + "rect": { + "x": 225.0, + "y": 0.0, + "width": 50.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + } + ] + }, + { + "id": 268435976, + "slug": "options", + "title": "Options", + "bucket": "MainPanel", + "parent_slug": "main_panel", + "width": 640, + "height": 600, + "nodes": [ + { + "traversal_index": 0, + "element_id": 268435976, + "layout_id": 553648171, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 300.0, + "height": 600.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 1, + "element_id": 268435981, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 106.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 2, + "element_id": 268436537, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 3, + "element_id": 268435689, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 17.0, + "y": 0.0, + "width": 72.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 4, + "element_id": 268435989, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 89.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 5, + "element_id": 268435982, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 106.0, + "y": 0.0, + "width": 64.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 6, + "element_id": 268436537, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 5, + "base_layout_id": 0, + "rect": { + "x": 106.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 7, + "element_id": 268435689, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 5, + "base_layout_id": 0, + "rect": { + "x": 123.0, + "y": 0.0, + "width": 30.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 8, + "element_id": 268435989, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 5, + "base_layout_id": 0, + "rect": { + "x": 153.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 9, + "element_id": 268436747, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 172.0, + "y": 0.0, + "width": 50.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 10, + "element_id": 268436537, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 9, + "base_layout_id": 0, + "rect": { + "x": 172.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 11, + "element_id": 268435689, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 9, + "base_layout_id": 0, + "rect": { + "x": 189.0, + "y": 0.0, + "width": 16.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 12, + "element_id": 268435989, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 9, + "base_layout_id": 0, + "rect": { + "x": 205.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 13, + "element_id": 268435983, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 222.0, + "y": 0.0, + "width": 56.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 14, + "element_id": 268436537, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 13, + "base_layout_id": 0, + "rect": { + "x": 222.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 15, + "element_id": 268435689, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 13, + "base_layout_id": 0, + "rect": { + "x": 239.0, + "y": 0.0, + "width": 22.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 16, + "element_id": 268435989, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 13, + "base_layout_id": 0, + "rect": { + "x": 261.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 17, + "element_id": 268435984, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 276.0, + "y": 0.0, + "width": 24.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668035, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668035, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668034, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 18, + "element_id": 268435977, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 2.0, + "height": 575.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668092, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668092, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 19, + "element_id": 268435985, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 2.0, + "y": 25.0, + "width": 298.0, + "height": 575.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 20, + "element_id": 268435962, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 2.0, + "y": 25.0, + "width": 282.0, + "height": 535.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 21, + "element_id": 268435963, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 25.0, + "width": 16.0, + "height": 535.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 22, + "element_id": 1, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 21, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 25.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 23, + "element_id": 268436324, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 22, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 25.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 24, + "element_id": 268436325, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 22, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 28.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 25, + "element_id": 268436326, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 22, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 38.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 26, + "element_id": 268435569, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 21, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 25.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 27, + "element_id": 268435570, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 21, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 544.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 28, + "element_id": 268435964, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 18.0, + "y": 564.0, + "width": 80.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 29, + "element_id": 268436174, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 28, + "base_layout_id": 0, + "rect": { + "x": 18.0, + "y": 564.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 30, + "element_id": 268436175, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 28, + "base_layout_id": 0, + "rect": { + "x": 50.0, + "y": 564.0, + "width": 16.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 31, + "element_id": 268436176, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 28, + "base_layout_id": 0, + "rect": { + "x": 66.0, + "y": 564.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 32, + "element_id": 268435965, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 108.0, + "y": 564.0, + "width": 80.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 33, + "element_id": 268436174, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 32, + "base_layout_id": 0, + "rect": { + "x": 108.0, + "y": 564.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 34, + "element_id": 268436175, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 32, + "base_layout_id": 0, + "rect": { + "x": 140.0, + "y": 564.0, + "width": 16.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 35, + "element_id": 268436176, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 32, + "base_layout_id": 0, + "rect": { + "x": 156.0, + "y": 564.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 36, + "element_id": 268435966, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 198.0, + "y": 564.0, + "width": 80.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 37, + "element_id": 268436174, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 36, + "base_layout_id": 0, + "rect": { + "x": 198.0, + "y": 564.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 38, + "element_id": 268436175, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 36, + "base_layout_id": 0, + "rect": { + "x": 230.0, + "y": 564.0, + "width": 16.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 39, + "element_id": 268436176, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 36, + "base_layout_id": 0, + "rect": { + "x": 246.0, + "y": 564.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 40, + "element_id": 268435986, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 2.0, + "y": 25.0, + "width": 298.0, + "height": 575.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 41, + "element_id": 268435971, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 28.0, + "y": 45.0, + "width": 238.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 42, + "element_id": 268436174, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 41, + "base_layout_id": 0, + "rect": { + "x": 28.0, + "y": 45.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693161, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693160, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693159, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 43, + "element_id": 268436175, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 41, + "base_layout_id": 0, + "rect": { + "x": 60.0, + "y": 45.0, + "width": 174.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693164, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693163, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693162, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 44, + "element_id": 268436176, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 41, + "base_layout_id": 0, + "rect": { + "x": 234.0, + "y": 45.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693167, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693166, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693165, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 45, + "element_id": 268437015, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 28.0, + "y": 85.0, + "width": 238.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 46, + "element_id": 268436174, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 45, + "base_layout_id": 0, + "rect": { + "x": 28.0, + "y": 85.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693161, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693160, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693159, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 47, + "element_id": 268436175, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 45, + "base_layout_id": 0, + "rect": { + "x": 60.0, + "y": 85.0, + "width": 174.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693164, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693163, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693162, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 48, + "element_id": 268436176, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 45, + "base_layout_id": 0, + "rect": { + "x": 234.0, + "y": 85.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693167, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693166, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693165, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 49, + "element_id": 268435972, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 28.0, + "y": 135.0, + "width": 238.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 50, + "element_id": 268436174, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 49, + "base_layout_id": 0, + "rect": { + "x": 28.0, + "y": 135.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693161, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693160, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693159, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 51, + "element_id": 268436175, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 49, + "base_layout_id": 0, + "rect": { + "x": 60.0, + "y": 135.0, + "width": 174.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693164, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693163, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693162, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 52, + "element_id": 268436176, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 49, + "base_layout_id": 0, + "rect": { + "x": 234.0, + "y": 135.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693167, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693166, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693165, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 53, + "element_id": 268436940, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 28.0, + "y": 175.0, + "width": 238.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 54, + "element_id": 268436174, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 53, + "base_layout_id": 0, + "rect": { + "x": 28.0, + "y": 175.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693161, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693160, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693159, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 55, + "element_id": 268436175, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 53, + "base_layout_id": 0, + "rect": { + "x": 60.0, + "y": 175.0, + "width": 174.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693164, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693163, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693162, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 56, + "element_id": 268436176, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 53, + "base_layout_id": 0, + "rect": { + "x": 234.0, + "y": 175.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693167, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693166, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693165, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 57, + "element_id": 268435973, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 28.0, + "y": 215.0, + "width": 238.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 58, + "element_id": 268436174, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 57, + "base_layout_id": 0, + "rect": { + "x": 28.0, + "y": 215.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693161, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693160, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693159, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 59, + "element_id": 268436175, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 57, + "base_layout_id": 0, + "rect": { + "x": 60.0, + "y": 215.0, + "width": 174.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693164, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693163, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693162, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 60, + "element_id": 268436176, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 57, + "base_layout_id": 0, + "rect": { + "x": 234.0, + "y": 215.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693167, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693166, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693165, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 61, + "element_id": 268435974, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 28.0, + "y": 265.0, + "width": 238.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 62, + "element_id": 268436174, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 61, + "base_layout_id": 0, + "rect": { + "x": 28.0, + "y": 265.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693161, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693160, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693159, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 63, + "element_id": 268436175, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 61, + "base_layout_id": 0, + "rect": { + "x": 60.0, + "y": 265.0, + "width": 174.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693164, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693163, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693162, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 64, + "element_id": 268436176, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 61, + "base_layout_id": 0, + "rect": { + "x": 234.0, + "y": 265.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693167, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693166, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693165, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 65, + "element_id": 268435975, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 28.0, + "y": 305.0, + "width": 238.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 66, + "element_id": 268436174, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 65, + "base_layout_id": 0, + "rect": { + "x": 28.0, + "y": 305.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693161, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693161, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693160, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693159, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 67, + "element_id": 268436175, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 65, + "base_layout_id": 0, + "rect": { + "x": 60.0, + "y": 305.0, + "width": 174.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693164, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693164, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693163, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693162, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 68, + "element_id": 268436176, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 65, + "base_layout_id": 0, + "rect": { + "x": 234.0, + "y": 305.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100693167, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100693167, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100693166, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100693165, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 69, + "element_id": 268436748, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 2.0, + "y": 25.0, + "width": 298.0, + "height": 575.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 70, + "element_id": 268436749, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 69, + "base_layout_id": 0, + "rect": { + "x": 2.0, + "y": 25.0, + "width": 282.0, + "height": 535.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 71, + "element_id": 268435969, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 69, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 25.0, + "width": 16.0, + "height": 535.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 72, + "element_id": 1, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 71, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 25.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 73, + "element_id": 268436324, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 72, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 25.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 74, + "element_id": 268436325, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 72, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 28.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 75, + "element_id": 268436326, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 72, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 38.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 76, + "element_id": 268435569, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 71, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 25.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 77, + "element_id": 268435570, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 71, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 544.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 78, + "element_id": 268435964, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 69, + "base_layout_id": 0, + "rect": { + "x": 18.0, + "y": 564.0, + "width": 80.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 79, + "element_id": 268436174, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 78, + "base_layout_id": 0, + "rect": { + "x": 18.0, + "y": 564.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 80, + "element_id": 268436175, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 78, + "base_layout_id": 0, + "rect": { + "x": 50.0, + "y": 564.0, + "width": 16.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 81, + "element_id": 268436176, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 78, + "base_layout_id": 0, + "rect": { + "x": 66.0, + "y": 564.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 82, + "element_id": 268435965, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 69, + "base_layout_id": 0, + "rect": { + "x": 108.0, + "y": 564.0, + "width": 80.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 83, + "element_id": 268436174, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 82, + "base_layout_id": 0, + "rect": { + "x": 108.0, + "y": 564.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 84, + "element_id": 268436175, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 82, + "base_layout_id": 0, + "rect": { + "x": 140.0, + "y": 564.0, + "width": 16.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 85, + "element_id": 268436176, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 82, + "base_layout_id": 0, + "rect": { + "x": 156.0, + "y": 564.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 86, + "element_id": 268435966, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 69, + "base_layout_id": 0, + "rect": { + "x": 198.0, + "y": 564.0, + "width": 80.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 87, + "element_id": 268436174, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 86, + "base_layout_id": 0, + "rect": { + "x": 198.0, + "y": 564.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 88, + "element_id": 268436175, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 86, + "base_layout_id": 0, + "rect": { + "x": 230.0, + "y": 564.0, + "width": 16.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 89, + "element_id": 268436176, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 86, + "base_layout_id": 0, + "rect": { + "x": 246.0, + "y": 564.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 90, + "element_id": 268435987, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 2.0, + "y": 25.0, + "width": 298.0, + "height": 575.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 91, + "element_id": 268435968, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 90, + "base_layout_id": 0, + "rect": { + "x": 2.0, + "y": 25.0, + "width": 282.0, + "height": 535.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 92, + "element_id": 268435969, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 90, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 25.0, + "width": 16.0, + "height": 535.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 93, + "element_id": 1, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 92, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 25.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 94, + "element_id": 268436324, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 93, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 25.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 95, + "element_id": 268436325, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 93, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 28.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 96, + "element_id": 268436326, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 93, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 38.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 97, + "element_id": 268435569, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 92, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 25.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 98, + "element_id": 268435570, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 92, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 544.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 99, + "element_id": 268435964, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 90, + "base_layout_id": 0, + "rect": { + "x": 18.0, + "y": 564.0, + "width": 80.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 100, + "element_id": 268436174, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 99, + "base_layout_id": 0, + "rect": { + "x": 18.0, + "y": 564.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 101, + "element_id": 268436175, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 99, + "base_layout_id": 0, + "rect": { + "x": 50.0, + "y": 564.0, + "width": 16.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 102, + "element_id": 268436176, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 99, + "base_layout_id": 0, + "rect": { + "x": 66.0, + "y": 564.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 103, + "element_id": 268435965, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 90, + "base_layout_id": 0, + "rect": { + "x": 108.0, + "y": 564.0, + "width": 80.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 104, + "element_id": 268436174, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 103, + "base_layout_id": 0, + "rect": { + "x": 108.0, + "y": 564.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 105, + "element_id": 268436175, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 103, + "base_layout_id": 0, + "rect": { + "x": 140.0, + "y": 564.0, + "width": 16.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 106, + "element_id": 268436176, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 103, + "base_layout_id": 0, + "rect": { + "x": 156.0, + "y": 564.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 107, + "element_id": 268435966, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 90, + "base_layout_id": 0, + "rect": { + "x": 198.0, + "y": 564.0, + "width": 80.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 108, + "element_id": 268436174, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 107, + "base_layout_id": 0, + "rect": { + "x": 198.0, + "y": 564.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 109, + "element_id": 268436175, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 107, + "base_layout_id": 0, + "rect": { + "x": 230.0, + "y": 564.0, + "width": 16.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 110, + "element_id": 268436176, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 107, + "base_layout_id": 0, + "rect": { + "x": 246.0, + "y": 564.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 111, + "element_id": 268435990, + "layout_id": 553648171, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 292.0, + "height": 22.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 112, + "element_id": 268435991, + "layout_id": 553648171, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 292.0, + "height": 8.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668101, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668101, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 113, + "element_id": 268435992, + "layout_id": 553648171, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 272.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 114, + "element_id": 268435993, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 113, + "base_layout_id": 0, + "rect": { + "x": 6.0, + "y": 2.0, + "width": 260.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 115, + "element_id": 268436264, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 114, + "base_layout_id": 0, + "rect": { + "x": 6.0, + "y": 3.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 116, + "element_id": 268435994, + "layout_id": 553648171, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 272.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 117, + "element_id": 268435995, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 116, + "base_layout_id": 0, + "rect": { + "x": 6.0, + "y": 2.0, + "width": 130.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 118, + "element_id": 268435996, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 116, + "base_layout_id": 0, + "rect": { + "x": 146.0, + "y": 4.0, + "width": 120.0, + "height": 12.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668037, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668037, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 119, + "element_id": 1, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 118, + "base_layout_id": 0, + "rect": { + "x": 146.0, + "y": 4.0, + "width": 7.0, + "height": 12.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668038, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668038, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 120, + "element_id": 268435997, + "layout_id": 553648171, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 272.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 121, + "element_id": 268435995, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 120, + "base_layout_id": 0, + "rect": { + "x": 6.0, + "y": 2.0, + "width": 130.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 122, + "element_id": 268435996, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 120, + "base_layout_id": 0, + "rect": { + "x": 146.0, + "y": 4.0, + "width": 120.0, + "height": 12.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668037, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668037, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 123, + "element_id": 1, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 122, + "base_layout_id": 0, + "rect": { + "x": 146.0, + "y": 4.0, + "width": 7.0, + "height": 12.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668038, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668038, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 124, + "element_id": 268435998, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 120, + "base_layout_id": 0, + "rect": { + "x": 146.0, + "y": 18.0, + "width": 60.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 125, + "element_id": 268435999, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 120, + "base_layout_id": 0, + "rect": { + "x": 206.0, + "y": 18.0, + "width": 60.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 126, + "element_id": 268436000, + "layout_id": 553648171, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 272.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 127, + "element_id": 268435993, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 126, + "base_layout_id": 0, + "rect": { + "x": 6.0, + "y": 2.0, + "width": 130.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 128, + "element_id": 268436264, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 127, + "base_layout_id": 0, + "rect": { + "x": 6.0, + "y": 3.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 129, + "element_id": 268435996, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 126, + "base_layout_id": 0, + "rect": { + "x": 146.0, + "y": 4.0, + "width": 120.0, + "height": 12.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668037, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668037, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 130, + "element_id": 1, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 129, + "base_layout_id": 0, + "rect": { + "x": 146.0, + "y": 4.0, + "width": 7.0, + "height": 12.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668038, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668038, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 131, + "element_id": 268436001, + "layout_id": 553648171, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 272.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 132, + "element_id": 268435993, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 131, + "base_layout_id": 0, + "rect": { + "x": 6.0, + "y": 2.0, + "width": 130.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 133, + "element_id": 268436264, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 132, + "base_layout_id": 0, + "rect": { + "x": 6.0, + "y": 3.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 134, + "element_id": 268435996, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 131, + "base_layout_id": 0, + "rect": { + "x": 146.0, + "y": 4.0, + "width": 120.0, + "height": 12.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668037, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668037, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 135, + "element_id": 1, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 134, + "base_layout_id": 0, + "rect": { + "x": 146.0, + "y": 4.0, + "width": 7.0, + "height": 12.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668038, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668038, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 136, + "element_id": 268435998, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 131, + "base_layout_id": 0, + "rect": { + "x": 146.0, + "y": 18.0, + "width": 60.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 137, + "element_id": 268435999, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 131, + "base_layout_id": 0, + "rect": { + "x": 206.0, + "y": 18.0, + "width": 60.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 138, + "element_id": 268436002, + "layout_id": 553648171, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 272.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 139, + "element_id": 268436003, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 138, + "base_layout_id": 0, + "rect": { + "x": 6.0, + "y": 2.0, + "width": 130.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 140, + "element_id": 268436004, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 138, + "base_layout_id": 0, + "rect": { + "x": 146.0, + "y": 0.0, + "width": 120.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 141, + "element_id": 268436309, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 140, + "base_layout_id": 0, + "rect": { + "x": 146.0, + "y": 0.0, + "width": 103.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668083, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668083, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 142, + "element_id": 268436310, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 140, + "base_layout_id": 0, + "rect": { + "x": 249.0, + "y": 0.0, + "width": 17.0, + "height": 19.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668081, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668081, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100668081, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100668082, + "alpha_image_id": null + } + }, + { + "state_id": 7, + "image": { + "image_id": 100668082, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 143, + "element_id": 268436768, + "layout_id": 553648171, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 272.0, + "height": 100.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 144, + "element_id": 268436769, + "layout_id": 553648171, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 272.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 145, + "element_id": 268435993, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 144, + "base_layout_id": 0, + "rect": { + "x": 6.0, + "y": 2.0, + "width": 260.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 146, + "element_id": 268436264, + "layout_id": 553648171, + "parent_layout_id": 553648171, + "parent_traversal_index": 145, + "base_layout_id": 0, + "rect": { + "x": 6.0, + "y": 3.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + } + ] + }, + { + "id": 268435844, + "slug": "positive_effects", + "title": "Positive Effects", + "bucket": "MainPanel", + "parent_slug": "main_panel", + "width": 640, + "height": 480, + "nodes": [ + { + "traversal_index": 0, + "element_id": 268435743, + "layout_id": 553648155, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 300.0, + "height": 362.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 1, + "element_id": 268435708, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 276.0, + "y": 0.0, + "width": 24.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668307, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668307, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668308, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 2, + "element_id": 268435744, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 276.0, + "height": 25.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683002, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683002, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 3, + "element_id": 268435747, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 249.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 4, + "element_id": 268435748, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 27.0, + "width": 16.0, + "height": 249.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 5, + "element_id": 1, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 4, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 27.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 6, + "element_id": 268436324, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 5, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 27.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 7, + "element_id": 268436325, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 5, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 30.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 8, + "element_id": 268436326, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 5, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 40.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 9, + "element_id": 268435569, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 4, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 27.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 10, + "element_id": 268435570, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 4, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 260.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 11, + "element_id": 268435749, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 274.0, + "width": 300.0, + "height": 88.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668309, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668309, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 12, + "element_id": 268435750, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 11, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 282.0, + "width": 280.0, + "height": 78.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 13, + "element_id": 268435751, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 11, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 274.0, + "width": 16.0, + "height": 88.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 14, + "element_id": 1, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 13, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 274.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 15, + "element_id": 268436324, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 14, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 274.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 16, + "element_id": 268436325, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 14, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 277.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 17, + "element_id": 268436326, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 14, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 287.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 18, + "element_id": 268435569, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 13, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 274.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 19, + "element_id": 268435570, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 13, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 346.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 20, + "element_id": 268435745, + "layout_id": 553648155, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 300.0, + "height": 362.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 21, + "element_id": 268435708, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 276.0, + "y": 0.0, + "width": 24.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668307, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668307, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668308, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 22, + "element_id": 268435744, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 276.0, + "height": 25.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683002, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683002, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 23, + "element_id": 268435747, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 249.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 24, + "element_id": 268435748, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 27.0, + "width": 16.0, + "height": 249.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 25, + "element_id": 1, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 24, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 27.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 26, + "element_id": 268436324, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 27.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 27, + "element_id": 268436325, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 30.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 28, + "element_id": 268436326, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 40.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 29, + "element_id": 268435569, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 24, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 27.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 30, + "element_id": 268435570, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 24, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 260.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 31, + "element_id": 268435749, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 274.0, + "width": 300.0, + "height": 88.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668309, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668309, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 32, + "element_id": 268435750, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 31, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 282.0, + "width": 280.0, + "height": 78.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 33, + "element_id": 268435751, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 31, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 274.0, + "width": 16.0, + "height": 88.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 34, + "element_id": 1, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 33, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 274.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 35, + "element_id": 268436324, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 34, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 274.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 36, + "element_id": 268436325, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 34, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 277.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 37, + "element_id": 268436326, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 34, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 287.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 38, + "element_id": 268435569, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 33, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 274.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 39, + "element_id": 268435570, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 33, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 346.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 40, + "element_id": 268435746, + "layout_id": 553648155, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 300.0, + "height": 362.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 41, + "element_id": 268435708, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 276.0, + "y": 0.0, + "width": 24.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668307, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668307, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668308, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 42, + "element_id": 268435744, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 276.0, + "height": 25.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683002, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683002, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 43, + "element_id": 268435747, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 249.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 44, + "element_id": 268435748, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 27.0, + "width": 16.0, + "height": 249.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 45, + "element_id": 1, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 44, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 27.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 46, + "element_id": 268436324, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 45, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 27.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 47, + "element_id": 268436325, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 45, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 30.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 48, + "element_id": 268436326, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 45, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 40.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 49, + "element_id": 268435569, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 44, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 27.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 50, + "element_id": 268435570, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 44, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 260.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 51, + "element_id": 268435749, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 274.0, + "width": 300.0, + "height": 88.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668309, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668309, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 52, + "element_id": 268435750, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 51, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 282.0, + "width": 280.0, + "height": 78.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 53, + "element_id": 268435751, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 51, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 274.0, + "width": 16.0, + "height": 88.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 54, + "element_id": 1, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 53, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 274.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 55, + "element_id": 268436324, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 54, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 274.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 56, + "element_id": 268436325, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 54, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 277.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 57, + "element_id": 268436326, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 54, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 287.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 58, + "element_id": 268435569, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 53, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 274.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 59, + "element_id": 268435570, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 53, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 346.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 60, + "element_id": 268435752, + "layout_id": 553648155, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 300.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668310, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668310, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100668311, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 61, + "element_id": 268435753, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 60, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 62, + "element_id": 268435754, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 60, + "base_layout_id": 0, + "rect": { + "x": 37.0, + "y": 0.0, + "width": 188.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 63, + "element_id": 268435755, + "layout_id": 553648155, + "parent_layout_id": 553648155, + "parent_traversal_index": 60, + "base_layout_id": 0, + "rect": { + "x": 225.0, + "y": 0.0, + "width": 50.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + } + ] + }, + { + "id": 268436831, + "slug": "quests", + "title": "Quests", + "bucket": "MainPanel", + "parent_slug": "main_panel", + "width": 640, + "height": 600, + "nodes": [ + { + "traversal_index": 0, + "element_id": 268436831, + "layout_id": 553648227, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 300.0, + "height": 600.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 1, + "element_id": 268436947, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 92.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 2, + "element_id": 268436537, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 3, + "element_id": 268435689, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 17.0, + "y": 0.0, + "width": 58.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 4, + "element_id": 268435989, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 75.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 5, + "element_id": 268436832, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 92.0, + "y": 0.0, + "width": 92.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 6, + "element_id": 268436537, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 5, + "base_layout_id": 0, + "rect": { + "x": 92.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 7, + "element_id": 268435689, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 5, + "base_layout_id": 0, + "rect": { + "x": 109.0, + "y": 0.0, + "width": 58.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 8, + "element_id": 268435989, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 5, + "base_layout_id": 0, + "rect": { + "x": 167.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 9, + "element_id": 268436833, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 184.0, + "y": 0.0, + "width": 92.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 10, + "element_id": 268436537, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 9, + "base_layout_id": 0, + "rect": { + "x": 184.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 11, + "element_id": 268435689, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 9, + "base_layout_id": 0, + "rect": { + "x": 201.0, + "y": 0.0, + "width": 58.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 12, + "element_id": 268435989, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 9, + "base_layout_id": 0, + "rect": { + "x": 259.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 13, + "element_id": 268436834, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 276.0, + "y": 0.0, + "width": 24.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668307, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668307, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668308, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 14, + "element_id": 268436948, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 575.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 15, + "element_id": 268436942, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 14, + "base_layout_id": 0, + "rect": { + "x": 8.0, + "y": 33.0, + "width": 80.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 16, + "element_id": 268436950, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 14, + "base_layout_id": 0, + "rect": { + "x": 160.0, + "y": 33.0, + "width": 80.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 17, + "element_id": 268436943, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 14, + "base_layout_id": 0, + "rect": { + "x": 8.0, + "y": 55.0, + "width": 270.0, + "height": 373.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 18, + "element_id": 268436944, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 14, + "base_layout_id": 0, + "rect": { + "x": 278.0, + "y": 55.0, + "width": 16.0, + "height": 373.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 19, + "element_id": 1, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 278.0, + "y": 55.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 20, + "element_id": 268436324, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 278.0, + "y": 55.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 21, + "element_id": 268436325, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 278.0, + "y": 58.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 22, + "element_id": 268436326, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 278.0, + "y": 68.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 23, + "element_id": 268435569, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 278.0, + "y": 55.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 24, + "element_id": 268435570, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 278.0, + "y": 412.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 25, + "element_id": 268436952, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 14, + "base_layout_id": 0, + "rect": { + "x": 8.0, + "y": 432.0, + "width": 56.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 26, + "element_id": 268436959, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 14, + "base_layout_id": 0, + "rect": { + "x": 64.0, + "y": 432.0, + "width": 232.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 27, + "element_id": 268436953, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 14, + "base_layout_id": 0, + "rect": { + "x": 8.0, + "y": 452.0, + "width": 56.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 28, + "element_id": 268436960, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 14, + "base_layout_id": 0, + "rect": { + "x": 64.0, + "y": 452.0, + "width": 232.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 29, + "element_id": 268436954, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 14, + "base_layout_id": 0, + "rect": { + "x": 8.0, + "y": 472.0, + "width": 120.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 30, + "element_id": 268436961, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 14, + "base_layout_id": 0, + "rect": { + "x": 124.0, + "y": 472.0, + "width": 168.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 31, + "element_id": 268436955, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 14, + "base_layout_id": 0, + "rect": { + "x": 8.0, + "y": 492.0, + "width": 120.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 32, + "element_id": 268436962, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 14, + "base_layout_id": 0, + "rect": { + "x": 124.0, + "y": 492.0, + "width": 168.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 33, + "element_id": 268436958, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 14, + "base_layout_id": 0, + "rect": { + "x": 8.0, + "y": 518.0, + "width": 270.0, + "height": 52.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 34, + "element_id": 268436957, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 14, + "base_layout_id": 0, + "rect": { + "x": 8.0, + "y": 568.0, + "width": 56.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 35, + "element_id": 268436963, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 14, + "base_layout_id": 0, + "rect": { + "x": 64.0, + "y": 568.0, + "width": 150.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 36, + "element_id": 268436956, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 14, + "base_layout_id": 0, + "rect": { + "x": 232.0, + "y": 568.0, + "width": 60.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 37, + "element_id": 268436835, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 575.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100672186, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100672186, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 38, + "element_id": 268435728, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 575.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668015, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668015, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 39, + "element_id": 268435735, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 38, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 33.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668019, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668019, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 40, + "element_id": 268435736, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 38, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 58.0, + "width": 22.0, + "height": 510.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668017, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668017, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 41, + "element_id": 268435728, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 38, + "base_layout_id": 0, + "rect": { + "x": 22.0, + "y": 58.0, + "width": 257.0, + "height": 510.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668015, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668015, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 42, + "element_id": 268435737, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 38, + "base_layout_id": 0, + "rect": { + "x": 279.0, + "y": 58.0, + "width": 21.0, + "height": 510.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668018, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668018, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 43, + "element_id": 268435738, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 38, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 568.0, + "width": 300.0, + "height": 32.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668016, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668016, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 44, + "element_id": 268436837, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 54.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668009, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668009, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668010, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100668011, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 45, + "element_id": 268436838, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 235.0, + "y": 568.0, + "width": 65.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668006, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668006, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668007, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100668008, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 46, + "element_id": 268436839, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 50.0, + "y": 39.0, + "width": 60.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 47, + "element_id": 268436840, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 126.0, + "y": 39.0, + "width": 44.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 48, + "element_id": 268436841, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 164.0, + "y": 39.0, + "width": 120.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682954, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682954, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 49, + "element_id": 268436842, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 16.0, + "y": 65.0, + "width": 40.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 50, + "element_id": 268436843, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 50.0, + "y": 65.0, + "width": 234.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682954, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682954, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 51, + "element_id": 268436844, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 16.0, + "y": 91.0, + "width": 50.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 52, + "element_id": 268436845, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 16.0, + "y": 109.0, + "width": 256.0, + "height": 405.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682954, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682954, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 53, + "element_id": 268436846, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 272.0, + "y": 109.0, + "width": 16.0, + "height": 405.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 54, + "element_id": 1, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 53, + "base_layout_id": 0, + "rect": { + "x": 272.0, + "y": 109.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 55, + "element_id": 268436324, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 54, + "base_layout_id": 0, + "rect": { + "x": 272.0, + "y": 109.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 56, + "element_id": 268436325, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 54, + "base_layout_id": 0, + "rect": { + "x": 272.0, + "y": 112.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 57, + "element_id": 268436326, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 54, + "base_layout_id": 0, + "rect": { + "x": 272.0, + "y": 122.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 58, + "element_id": 268435569, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 53, + "base_layout_id": 0, + "rect": { + "x": 272.0, + "y": 109.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 59, + "element_id": 268435570, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 53, + "base_layout_id": 0, + "rect": { + "x": 272.0, + "y": 498.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 60, + "element_id": 268436847, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 20.0, + "y": 564.0, + "width": 60.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 61, + "element_id": 268436848, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 100.0, + "y": 564.0, + "width": 100.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 62, + "element_id": 268436849, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 200.0, + "y": 564.0, + "width": 60.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 63, + "element_id": 268436850, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 16.0, + "y": 520.0, + "width": 64.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 64, + "element_id": 268436851, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 84.0, + "y": 520.0, + "width": 150.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682954, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682954, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 65, + "element_id": 268436852, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 240.0, + "y": 520.0, + "width": 52.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 66, + "element_id": 268436853, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 16.0, + "y": 542.0, + "width": 64.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 67, + "element_id": 268436854, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 84.0, + "y": 542.0, + "width": 20.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682954, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682954, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 68, + "element_id": 268436855, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 106.0, + "y": 542.0, + "width": 10.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 69, + "element_id": 268436856, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 120.0, + "y": 542.0, + "width": 20.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682954, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682954, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 70, + "element_id": 268436857, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 142.0, + "y": 542.0, + "width": 10.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 71, + "element_id": 268436858, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 156.0, + "y": 542.0, + "width": 20.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682954, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682954, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 72, + "element_id": 268436859, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 178.0, + "y": 542.0, + "width": 10.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 73, + "element_id": 268436860, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 84.0, + "y": 542.0, + "width": 120.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 74, + "element_id": 268436861, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 37, + "base_layout_id": 0, + "rect": { + "x": 240.0, + "y": 542.0, + "width": 40.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 75, + "element_id": 268436836, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 575.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 76, + "element_id": 268436863, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 75, + "base_layout_id": 0, + "rect": { + "x": 8.0, + "y": 33.0, + "width": 20.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 77, + "element_id": 268436864, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 75, + "base_layout_id": 0, + "rect": { + "x": 28.0, + "y": 33.0, + "width": 90.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 78, + "element_id": 268436865, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 75, + "base_layout_id": 0, + "rect": { + "x": 118.0, + "y": 33.0, + "width": 90.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 79, + "element_id": 268436866, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 75, + "base_layout_id": 0, + "rect": { + "x": 208.0, + "y": 33.0, + "width": 80.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 80, + "element_id": 268436867, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 75, + "base_layout_id": 0, + "rect": { + "x": 8.0, + "y": 55.0, + "width": 270.0, + "height": 505.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 81, + "element_id": 268436868, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 75, + "base_layout_id": 0, + "rect": { + "x": 278.0, + "y": 55.0, + "width": 16.0, + "height": 505.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 82, + "element_id": 1, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 81, + "base_layout_id": 0, + "rect": { + "x": 278.0, + "y": 55.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 83, + "element_id": 268436324, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 82, + "base_layout_id": 0, + "rect": { + "x": 278.0, + "y": 55.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 84, + "element_id": 268436325, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 82, + "base_layout_id": 0, + "rect": { + "x": 278.0, + "y": 58.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 85, + "element_id": 268436326, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 82, + "base_layout_id": 0, + "rect": { + "x": 278.0, + "y": 68.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 86, + "element_id": 268435569, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 81, + "base_layout_id": 0, + "rect": { + "x": 278.0, + "y": 55.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 87, + "element_id": 268435570, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 81, + "base_layout_id": 0, + "rect": { + "x": 278.0, + "y": 544.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 88, + "element_id": 268436869, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 75, + "base_layout_id": 0, + "rect": { + "x": 8.0, + "y": 568.0, + "width": 60.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 89, + "element_id": 268436870, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 75, + "base_layout_id": 0, + "rect": { + "x": 76.0, + "y": 568.0, + "width": 50.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 90, + "element_id": 268436871, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 75, + "base_layout_id": 0, + "rect": { + "x": 130.0, + "y": 568.0, + "width": 118.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 91, + "element_id": 268436872, + "layout_id": 553648227, + "parent_layout_id": 553648227, + "parent_traversal_index": 75, + "base_layout_id": 0, + "rect": { + "x": 250.0, + "y": 568.0, + "width": 42.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + } + ] + }, + { + "id": 268436107, + "slug": "social", + "title": "Social", + "bucket": "MainPanel", + "parent_slug": "main_panel", + "width": 640, + "height": 600, + "nodes": [ + { + "traversal_index": 0, + "element_id": 268436107, + "layout_id": 553648177, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 300.0, + "height": 600.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 1, + "element_id": 268436108, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 72.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 2, + "element_id": 268436537, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 3, + "element_id": 268435689, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 17.0, + "y": 0.0, + "width": 38.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 4, + "element_id": 268435989, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 55.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 5, + "element_id": 268436110, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 72.0, + "y": 0.0, + "width": 72.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 6, + "element_id": 268436537, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 5, + "base_layout_id": 0, + "rect": { + "x": 72.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 7, + "element_id": 268435689, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 5, + "base_layout_id": 0, + "rect": { + "x": 89.0, + "y": 0.0, + "width": 38.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 8, + "element_id": 268435989, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 5, + "base_layout_id": 0, + "rect": { + "x": 127.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 9, + "element_id": 268436754, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 144.0, + "y": 0.0, + "width": 62.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 10, + "element_id": 268436537, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 9, + "base_layout_id": 0, + "rect": { + "x": 144.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 11, + "element_id": 268435689, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 9, + "base_layout_id": 0, + "rect": { + "x": 161.0, + "y": 0.0, + "width": 28.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 12, + "element_id": 268435989, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 9, + "base_layout_id": 0, + "rect": { + "x": 189.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 13, + "element_id": 268436795, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 206.0, + "y": 0.0, + "width": 70.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 14, + "element_id": 268436537, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 13, + "base_layout_id": 0, + "rect": { + "x": 206.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 15, + "element_id": 268435689, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 13, + "base_layout_id": 0, + "rect": { + "x": 223.0, + "y": 0.0, + "width": 36.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 16, + "element_id": 268435989, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 13, + "base_layout_id": 0, + "rect": { + "x": 259.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 17, + "element_id": 268436112, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 276.0, + "y": 0.0, + "width": 24.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668445, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668445, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668446, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 18, + "element_id": 268436113, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 575.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 19, + "element_id": 268436048, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 45.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 20, + "element_id": 268436049, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 21, + "element_id": 268436050, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 43.0, + "width": 120.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 22, + "element_id": 268436051, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 120.0, + "y": 43.0, + "width": 280.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 23, + "element_id": 268436052, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 61.0, + "width": 300.0, + "height": 9.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668448, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668448, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 24, + "element_id": 268436053, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 70.0, + "width": 300.0, + "height": 63.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 25, + "element_id": 268436054, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 24, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 70.0, + "width": 210.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 26, + "element_id": 268436055, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 24, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 88.0, + "width": 210.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 27, + "element_id": 268436624, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 24, + "base_layout_id": 0, + "rect": { + "x": 210.0, + "y": 70.0, + "width": 90.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 28, + "element_id": 268436625, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 27, + "base_layout_id": 0, + "rect": { + "x": 210.0, + "y": 70.0, + "width": 90.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 29, + "element_id": 268436626, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 27, + "base_layout_id": 0, + "rect": { + "x": 210.0, + "y": 88.0, + "width": 90.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 30, + "element_id": 268436056, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 24, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 106.0, + "width": 280.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 31, + "element_id": 268436057, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 24, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 124.0, + "width": 300.0, + "height": 9.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668448, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668448, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 32, + "element_id": 268436058, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 133.0, + "width": 300.0, + "height": 45.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 33, + "element_id": 268436059, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 32, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 133.0, + "width": 100.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 34, + "element_id": 268436060, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 32, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 151.0, + "width": 280.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 35, + "element_id": 268436624, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 32, + "base_layout_id": 0, + "rect": { + "x": 220.0, + "y": 133.0, + "width": 80.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 36, + "element_id": 268436625, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 35, + "base_layout_id": 0, + "rect": { + "x": 220.0, + "y": 133.0, + "width": 80.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 37, + "element_id": 268436626, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 35, + "base_layout_id": 0, + "rect": { + "x": 220.0, + "y": 151.0, + "width": 80.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 38, + "element_id": 268436061, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 32, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 169.0, + "width": 300.0, + "height": 9.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668448, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668448, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 39, + "element_id": 268436062, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 178.0, + "width": 100.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 40, + "element_id": 268436063, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 179.0, + "y": 178.0, + "width": 100.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 41, + "element_id": 268436064, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 196.0, + "width": 279.0, + "height": 325.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683019, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683019, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 42, + "element_id": 268436065, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 196.0, + "width": 16.0, + "height": 325.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 43, + "element_id": 1, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 42, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 196.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 44, + "element_id": 268436324, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 43, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 196.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 45, + "element_id": 268436325, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 43, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 199.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 46, + "element_id": 268436326, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 43, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 209.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 47, + "element_id": 268435569, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 42, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 196.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 48, + "element_id": 268435570, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 42, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 505.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 49, + "element_id": 268436066, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 9.0, + "y": 535.0, + "width": 275.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 50, + "element_id": 268436264, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 49, + "base_layout_id": 0, + "rect": { + "x": 9.0, + "y": 536.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 51, + "element_id": 268436067, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 9.0, + "y": 562.0, + "width": 88.0, + "height": 33.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 52, + "element_id": 268436174, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 51, + "base_layout_id": 0, + "rect": { + "x": 9.0, + "y": 562.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 53, + "element_id": 268436175, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 51, + "base_layout_id": 0, + "rect": { + "x": 41.0, + "y": 562.0, + "width": 24.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 54, + "element_id": 268436176, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 51, + "base_layout_id": 0, + "rect": { + "x": 65.0, + "y": 562.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 55, + "element_id": 268436068, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 106.0, + "y": 562.0, + "width": 88.0, + "height": 33.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 56, + "element_id": 268436174, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 55, + "base_layout_id": 0, + "rect": { + "x": 106.0, + "y": 562.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 57, + "element_id": 268436175, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 55, + "base_layout_id": 0, + "rect": { + "x": 138.0, + "y": 562.0, + "width": 24.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 58, + "element_id": 268436176, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 55, + "base_layout_id": 0, + "rect": { + "x": 162.0, + "y": 562.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 59, + "element_id": 268436069, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 203.0, + "y": 562.0, + "width": 88.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 60, + "element_id": 268436174, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 59, + "base_layout_id": 0, + "rect": { + "x": 203.0, + "y": 562.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 61, + "element_id": 268436175, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 59, + "base_layout_id": 0, + "rect": { + "x": 235.0, + "y": 562.0, + "width": 24.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 62, + "element_id": 268436176, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 59, + "base_layout_id": 0, + "rect": { + "x": 259.0, + "y": 562.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 63, + "element_id": 268436114, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 575.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 64, + "element_id": 268436075, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 63, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 575.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 65, + "element_id": 268436076, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 64, + "base_layout_id": 0, + "rect": { + "x": 8.0, + "y": 43.0, + "width": 284.0, + "height": 120.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 66, + "element_id": 268436077, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 64, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 216.0, + "width": 300.0, + "height": 9.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668448, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668448, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 67, + "element_id": 268436078, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 64, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 225.0, + "width": 148.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 68, + "element_id": 268436079, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 64, + "base_layout_id": 0, + "rect": { + "x": 148.0, + "y": 225.0, + "width": 147.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 69, + "element_id": 268436080, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 64, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 250.0, + "width": 275.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 70, + "element_id": 268436264, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 69, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 251.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 71, + "element_id": 268436081, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 64, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 264.0, + "width": 275.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 72, + "element_id": 268436264, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 71, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 265.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 73, + "element_id": 268436082, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 64, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 278.0, + "width": 275.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 74, + "element_id": 268436264, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 73, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 279.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 75, + "element_id": 268436083, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 64, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 292.0, + "width": 275.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 76, + "element_id": 268436264, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 75, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 293.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 77, + "element_id": 268436084, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 64, + "base_layout_id": 0, + "rect": { + "x": 33.0, + "y": 323.0, + "width": 234.0, + "height": 33.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 78, + "element_id": 268436174, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 77, + "base_layout_id": 0, + "rect": { + "x": 33.0, + "y": 323.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 79, + "element_id": 268436175, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 77, + "base_layout_id": 0, + "rect": { + "x": 65.0, + "y": 323.0, + "width": 170.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 80, + "element_id": 268436176, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 77, + "base_layout_id": 0, + "rect": { + "x": 235.0, + "y": 323.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 81, + "element_id": 268436085, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 63, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 575.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 82, + "element_id": 268436086, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 81, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 27.0, + "width": 300.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 83, + "element_id": 268436087, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 81, + "base_layout_id": 0, + "rect": { + "x": 8.0, + "y": 47.0, + "width": 100.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 84, + "element_id": 268436088, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 81, + "base_layout_id": 0, + "rect": { + "x": 179.0, + "y": 47.0, + "width": 100.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 85, + "element_id": 268436089, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 81, + "base_layout_id": 0, + "rect": { + "x": 8.0, + "y": 63.0, + "width": 271.0, + "height": 462.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683019, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683019, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 86, + "element_id": 268436090, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 81, + "base_layout_id": 0, + "rect": { + "x": 279.0, + "y": 63.0, + "width": 16.0, + "height": 462.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 87, + "element_id": 1, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 86, + "base_layout_id": 0, + "rect": { + "x": 279.0, + "y": 63.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 88, + "element_id": 268436324, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 87, + "base_layout_id": 0, + "rect": { + "x": 279.0, + "y": 63.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 89, + "element_id": 268436325, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 87, + "base_layout_id": 0, + "rect": { + "x": 279.0, + "y": 66.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 90, + "element_id": 268436326, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 87, + "base_layout_id": 0, + "rect": { + "x": 279.0, + "y": 76.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 91, + "element_id": 268435569, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 86, + "base_layout_id": 0, + "rect": { + "x": 279.0, + "y": 63.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 92, + "element_id": 268435570, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 86, + "base_layout_id": 0, + "rect": { + "x": 279.0, + "y": 509.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 93, + "element_id": 268436091, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 81, + "base_layout_id": 0, + "rect": { + "x": 18.0, + "y": 534.0, + "width": 79.0, + "height": 30.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 94, + "element_id": 268436174, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 93, + "base_layout_id": 0, + "rect": { + "x": 18.0, + "y": 534.0, + "width": 32.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 95, + "element_id": 268436175, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 93, + "base_layout_id": 0, + "rect": { + "x": 50.0, + "y": 534.0, + "width": 15.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 96, + "element_id": 268436176, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 93, + "base_layout_id": 0, + "rect": { + "x": 65.0, + "y": 534.0, + "width": 32.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 97, + "element_id": 268436092, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 81, + "base_layout_id": 0, + "rect": { + "x": 108.0, + "y": 534.0, + "width": 79.0, + "height": 30.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 98, + "element_id": 268436174, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 97, + "base_layout_id": 0, + "rect": { + "x": 108.0, + "y": 534.0, + "width": 32.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 99, + "element_id": 268436175, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 97, + "base_layout_id": 0, + "rect": { + "x": 140.0, + "y": 534.0, + "width": 15.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 100, + "element_id": 268436176, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 97, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 534.0, + "width": 32.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 101, + "element_id": 268436093, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 81, + "base_layout_id": 0, + "rect": { + "x": 198.0, + "y": 534.0, + "width": 79.0, + "height": 30.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 102, + "element_id": 268436174, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 101, + "base_layout_id": 0, + "rect": { + "x": 198.0, + "y": 534.0, + "width": 32.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 103, + "element_id": 268436175, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 101, + "base_layout_id": 0, + "rect": { + "x": 230.0, + "y": 534.0, + "width": 15.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 104, + "element_id": 268436176, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 101, + "base_layout_id": 0, + "rect": { + "x": 245.0, + "y": 534.0, + "width": 32.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 105, + "element_id": 268436094, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 81, + "base_layout_id": 0, + "rect": { + "x": 18.0, + "y": 567.0, + "width": 79.0, + "height": 30.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 106, + "element_id": 268436174, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 105, + "base_layout_id": 0, + "rect": { + "x": 18.0, + "y": 567.0, + "width": 32.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 107, + "element_id": 268436175, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 105, + "base_layout_id": 0, + "rect": { + "x": 50.0, + "y": 567.0, + "width": 15.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 108, + "element_id": 268436176, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 105, + "base_layout_id": 0, + "rect": { + "x": 65.0, + "y": 567.0, + "width": 32.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 109, + "element_id": 268436095, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 81, + "base_layout_id": 0, + "rect": { + "x": 108.0, + "y": 567.0, + "width": 79.0, + "height": 30.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 110, + "element_id": 268436174, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 109, + "base_layout_id": 0, + "rect": { + "x": 108.0, + "y": 567.0, + "width": 32.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 111, + "element_id": 268436175, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 109, + "base_layout_id": 0, + "rect": { + "x": 140.0, + "y": 567.0, + "width": 15.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 112, + "element_id": 268436176, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 109, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 567.0, + "width": 32.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 113, + "element_id": 268436096, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 81, + "base_layout_id": 0, + "rect": { + "x": 198.0, + "y": 567.0, + "width": 79.0, + "height": 30.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 114, + "element_id": 268436174, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 113, + "base_layout_id": 0, + "rect": { + "x": 198.0, + "y": 567.0, + "width": 32.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 115, + "element_id": 268436175, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 113, + "base_layout_id": 0, + "rect": { + "x": 230.0, + "y": 567.0, + "width": 15.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 116, + "element_id": 268436176, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 113, + "base_layout_id": 0, + "rect": { + "x": 245.0, + "y": 567.0, + "width": 32.0, + "height": 30.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 117, + "element_id": 268436810, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 575.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 118, + "element_id": 268436797, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 117, + "base_layout_id": 0, + "rect": { + "x": 8.0, + "y": 45.0, + "width": 270.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 119, + "element_id": 268436766, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 117, + "base_layout_id": 0, + "rect": { + "x": 8.0, + "y": 45.0, + "width": 270.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 120, + "element_id": 268436798, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 117, + "base_layout_id": 0, + "rect": { + "x": 8.0, + "y": 65.0, + "width": 270.0, + "height": 405.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 121, + "element_id": 268436803, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 117, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 65.0, + "width": 16.0, + "height": 405.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 122, + "element_id": 1, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 121, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 65.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 123, + "element_id": 268436324, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 122, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 65.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 124, + "element_id": 268436325, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 122, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 68.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 125, + "element_id": 268436326, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 122, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 78.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 126, + "element_id": 268435569, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 121, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 65.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 127, + "element_id": 268435570, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 121, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 454.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 128, + "element_id": 268436807, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 117, + "base_layout_id": 0, + "rect": { + "x": 100.0, + "y": 480.0, + "width": 100.0, + "height": 33.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 129, + "element_id": 268436174, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 128, + "base_layout_id": 0, + "rect": { + "x": 100.0, + "y": 480.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 130, + "element_id": 268436175, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 128, + "base_layout_id": 0, + "rect": { + "x": 132.0, + "y": 480.0, + "width": 36.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 131, + "element_id": 268436176, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 128, + "base_layout_id": 0, + "rect": { + "x": 168.0, + "y": 480.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 132, + "element_id": 268436808, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 117, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 520.0, + "width": 300.0, + "height": 9.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668448, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668448, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 133, + "element_id": 268436799, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 117, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 536.0, + "width": 100.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 134, + "element_id": 268436800, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 117, + "base_layout_id": 0, + "rect": { + "x": 100.0, + "y": 536.0, + "width": 184.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 135, + "element_id": 268436811, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 117, + "base_layout_id": 0, + "rect": { + "x": 20.0, + "y": 562.0, + "width": 130.0, + "height": 33.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 136, + "element_id": 268436174, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 135, + "base_layout_id": 0, + "rect": { + "x": 20.0, + "y": 562.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 137, + "element_id": 268436175, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 135, + "base_layout_id": 0, + "rect": { + "x": 52.0, + "y": 562.0, + "width": 66.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 138, + "element_id": 268436176, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 135, + "base_layout_id": 0, + "rect": { + "x": 118.0, + "y": 562.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 139, + "element_id": 268436812, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 117, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 562.0, + "width": 130.0, + "height": 33.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 140, + "element_id": 268436174, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 139, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 562.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 141, + "element_id": 268436175, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 139, + "base_layout_id": 0, + "rect": { + "x": 187.0, + "y": 562.0, + "width": 66.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 142, + "element_id": 268436176, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 139, + "base_layout_id": 0, + "rect": { + "x": 253.0, + "y": 562.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 143, + "element_id": 268436755, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 575.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 144, + "element_id": 268436765, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 143, + "base_layout_id": 0, + "rect": { + "x": 8.0, + "y": 45.0, + "width": 270.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 145, + "element_id": 268436766, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 143, + "base_layout_id": 0, + "rect": { + "x": 8.0, + "y": 45.0, + "width": 270.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 146, + "element_id": 268436759, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 143, + "base_layout_id": 0, + "rect": { + "x": 8.0, + "y": 65.0, + "width": 270.0, + "height": 375.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 147, + "element_id": 268436760, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 143, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 65.0, + "width": 16.0, + "height": 375.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 148, + "element_id": 1, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 147, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 65.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 149, + "element_id": 268436324, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 148, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 65.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 150, + "element_id": 268436325, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 148, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 68.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 151, + "element_id": 268436326, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 148, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 78.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 152, + "element_id": 268435569, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 147, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 65.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 153, + "element_id": 268435570, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 147, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 424.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 154, + "element_id": 268436052, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 143, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 445.0, + "width": 300.0, + "height": 9.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668448, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668448, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 155, + "element_id": 268436780, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 143, + "base_layout_id": 0, + "rect": { + "x": 82.0, + "y": 460.0, + "width": 120.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 156, + "element_id": 268436264, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 155, + "base_layout_id": 0, + "rect": { + "x": 82.0, + "y": 461.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 157, + "element_id": 268436758, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 143, + "base_layout_id": 0, + "rect": { + "x": 53.0, + "y": 480.0, + "width": 88.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 158, + "element_id": 268436174, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 157, + "base_layout_id": 0, + "rect": { + "x": 53.0, + "y": 480.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 159, + "element_id": 268436175, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 157, + "base_layout_id": 0, + "rect": { + "x": 85.0, + "y": 480.0, + "width": 24.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 160, + "element_id": 268436176, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 157, + "base_layout_id": 0, + "rect": { + "x": 109.0, + "y": 480.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 161, + "element_id": 268436757, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 143, + "base_layout_id": 0, + "rect": { + "x": 150.0, + "y": 480.0, + "width": 88.0, + "height": 33.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 162, + "element_id": 268436174, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 161, + "base_layout_id": 0, + "rect": { + "x": 150.0, + "y": 480.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 163, + "element_id": 268436175, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 161, + "base_layout_id": 0, + "rect": { + "x": 182.0, + "y": 480.0, + "width": 24.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 164, + "element_id": 268436176, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 161, + "base_layout_id": 0, + "rect": { + "x": 206.0, + "y": 480.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 165, + "element_id": 268436061, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 143, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 520.0, + "width": 300.0, + "height": 9.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668448, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668448, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 166, + "element_id": 268436764, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 143, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 536.0, + "width": 100.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 167, + "element_id": 268436763, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 143, + "base_layout_id": 0, + "rect": { + "x": 100.0, + "y": 536.0, + "width": 184.0, + "height": 18.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 168, + "element_id": 268436756, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 143, + "base_layout_id": 0, + "rect": { + "x": 106.0, + "y": 562.0, + "width": 88.0, + "height": 33.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 169, + "element_id": 268436174, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 168, + "base_layout_id": 0, + "rect": { + "x": 106.0, + "y": 562.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 170, + "element_id": 268436175, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 168, + "base_layout_id": 0, + "rect": { + "x": 138.0, + "y": 562.0, + "width": 24.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 171, + "element_id": 268436176, + "layout_id": 553648177, + "parent_layout_id": 553648177, + "parent_traversal_index": 168, + "base_layout_id": 0, + "rect": { + "x": 162.0, + "y": 562.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + } + ] + }, + { + "id": 268436136, + "slug": "spellbook", + "title": "Spellbook", + "bucket": "MainPanel", + "parent_slug": "main_panel", + "width": 640, + "height": 600, + "nodes": [ + { + "traversal_index": 0, + "element_id": 268436136, + "layout_id": 553648180, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 300.0, + "height": 600.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 1, + "element_id": 268436137, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 138.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 2, + "element_id": 268436537, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 3, + "element_id": 268435689, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 17.0, + "y": 0.0, + "width": 104.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 4, + "element_id": 268435989, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 1, + "base_layout_id": 0, + "rect": { + "x": 121.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 5, + "element_id": 268436138, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 138.0, + "y": 0.0, + "width": 138.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 6, + "element_id": 268436537, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 5, + "base_layout_id": 0, + "rect": { + "x": 138.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687251, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687251, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687250, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 7, + "element_id": 268435689, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 5, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 0.0, + "width": 104.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687253, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687253, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687252, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 8, + "element_id": 268435989, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 5, + "base_layout_id": 0, + "rect": { + "x": 259.0, + "y": 0.0, + "width": 17.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100687255, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 11, + "image": { + "image_id": 100687255, + "alpha_image_id": null + } + }, + { + "state_id": 12, + "image": { + "image_id": 100687254, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 9, + "element_id": 268436139, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 276.0, + "y": 0.0, + "width": 24.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668307, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668307, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668308, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 10, + "element_id": 268436140, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 575.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 11, + "element_id": 268436117, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 10, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 280.0, + "height": 462.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 12, + "element_id": 268436118, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 10, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 25.0, + "width": 16.0, + "height": 462.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 13, + "element_id": 1, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 12, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 25.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 14, + "element_id": 268436324, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 13, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 25.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 15, + "element_id": 268436325, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 13, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 28.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 16, + "element_id": 268436326, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 13, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 38.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 17, + "element_id": 268435569, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 12, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 25.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 18, + "element_id": 268435570, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 12, + "base_layout_id": 0, + "rect": { + "x": 280.0, + "y": 471.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 19, + "element_id": 268436119, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 10, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 487.0, + "width": 300.0, + "height": 113.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100673314, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100673314, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 20, + "element_id": 268436120, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 17.0, + "y": 509.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 21, + "element_id": 268436264, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 17.0, + "y": 510.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 22, + "element_id": 268436121, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 87.0, + "y": 509.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 23, + "element_id": 268436264, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 22, + "base_layout_id": 0, + "rect": { + "x": 87.0, + "y": 510.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 24, + "element_id": 268436122, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 137.0, + "y": 509.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 25, + "element_id": 268436264, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 24, + "base_layout_id": 0, + "rect": { + "x": 137.0, + "y": 510.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 26, + "element_id": 268436123, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 187.0, + "y": 509.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 27, + "element_id": 268436264, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 26, + "base_layout_id": 0, + "rect": { + "x": 187.0, + "y": 510.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 28, + "element_id": 268436928, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 237.0, + "y": 509.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 29, + "element_id": 268436264, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 28, + "base_layout_id": 0, + "rect": { + "x": 237.0, + "y": 510.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 30, + "element_id": 268436124, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 17.0, + "y": 542.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 31, + "element_id": 268436264, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 30, + "base_layout_id": 0, + "rect": { + "x": 17.0, + "y": 543.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 32, + "element_id": 268436125, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 82.0, + "y": 542.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 33, + "element_id": 268436264, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 32, + "base_layout_id": 0, + "rect": { + "x": 82.0, + "y": 543.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 34, + "element_id": 268436126, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 147.0, + "y": 542.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 35, + "element_id": 268436264, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 34, + "base_layout_id": 0, + "rect": { + "x": 147.0, + "y": 543.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 36, + "element_id": 268436127, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 17.0, + "y": 559.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 37, + "element_id": 268436264, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 36, + "base_layout_id": 0, + "rect": { + "x": 17.0, + "y": 560.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 38, + "element_id": 268436128, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 82.0, + "y": 559.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 39, + "element_id": 268436264, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 38, + "base_layout_id": 0, + "rect": { + "x": 82.0, + "y": 560.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 40, + "element_id": 268436129, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 147.0, + "y": 559.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 41, + "element_id": 268436264, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 147.0, + "y": 560.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 42, + "element_id": 268436130, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 17.0, + "y": 576.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 43, + "element_id": 268436264, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 42, + "base_layout_id": 0, + "rect": { + "x": 17.0, + "y": 577.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 44, + "element_id": 268436814, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 82.0, + "y": 576.0, + "width": 90.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 45, + "element_id": 268436264, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 44, + "base_layout_id": 0, + "rect": { + "x": 82.0, + "y": 577.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 46, + "element_id": 268436131, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 12.0, + "y": 493.0, + "width": 90.0, + "height": 19.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 47, + "element_id": 268436132, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 12.0, + "y": 526.0, + "width": 90.0, + "height": 19.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 48, + "element_id": 268436133, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 19, + "base_layout_id": 0, + "rect": { + "x": 187.0, + "y": 548.0, + "width": 100.0, + "height": 32.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682970, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682970, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682971, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 49, + "element_id": 268436134, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 48, + "base_layout_id": 0, + "rect": { + "x": 187.0, + "y": 548.0, + "width": 100.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 50, + "element_id": 268436141, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 575.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 51, + "element_id": 268436580, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 50, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 284.0, + "height": 575.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 52, + "element_id": 268436581, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 50, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 25.0, + "width": 16.0, + "height": 575.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 53, + "element_id": 1, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 52, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 25.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 54, + "element_id": 268436324, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 53, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 25.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 55, + "element_id": 268436325, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 53, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 28.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 56, + "element_id": 268436326, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 53, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 38.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 57, + "element_id": 268435569, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 52, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 25.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 58, + "element_id": 268435570, + "layout_id": 553648180, + "parent_layout_id": 553648180, + "parent_traversal_index": 52, + "base_layout_id": 0, + "rect": { + "x": 284.0, + "y": 584.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + } + ] + }, + { + "id": 268435850, + "slug": "vitae", + "title": "Vitae", + "bucket": "MainPanel", + "parent_slug": "main_panel", + "width": 640, + "height": 480, + "nodes": [ + { + "traversal_index": 0, + "element_id": 268435905, + "layout_id": 553648160, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 300.0, + "height": 362.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 1, + "element_id": 268435708, + "layout_id": 553648160, + "parent_layout_id": 553648160, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 276.0, + "y": 0.0, + "width": 24.0, + "height": 25.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668307, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100668307, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100668308, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 2, + "element_id": 268435709, + "layout_id": 553648160, + "parent_layout_id": 553648160, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 276.0, + "height": 25.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683002, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683002, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 3, + "element_id": 268435710, + "layout_id": 553648160, + "parent_layout_id": 553648160, + "parent_traversal_index": 2, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 276.0, + "height": 25.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 4, + "element_id": 268435906, + "layout_id": 553648160, + "parent_layout_id": 553648160, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 25.0, + "width": 300.0, + "height": 337.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 5, + "element_id": 268435907, + "layout_id": 553648160, + "parent_layout_id": 553648160, + "parent_traversal_index": 4, + "base_layout_id": 0, + "rect": { + "x": 8.0, + "y": 25.0, + "width": 284.0, + "height": 337.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + } + ] + }, + { + "id": 268436634, + "slug": "smartbox", + "title": "SmartBox", + "bucket": "SmartBoxContainers", + "parent_slug": null, + "width": 802, + "height": 602, + "nodes": [ + { + "traversal_index": 0, + "element_id": 268435511, + "layout_id": 553648143, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 1.0, + "y": 1.0, + "width": 800.0, + "height": 600.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 1, + "element_id": 268437194, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 2, + "element_id": 268437195, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 0.0, + "width": 792.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688170, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688170, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 3, + "element_id": 268437196, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 797.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 4, + "element_id": 268437197, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 5.0, + "width": 5.0, + "height": 592.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688171, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688171, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 5, + "element_id": 268437198, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 597.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 6, + "element_id": 268437199, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 597.0, + "width": 792.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688172, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688172, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 7, + "element_id": 268437200, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 797.0, + "y": 597.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 8, + "element_id": 268437201, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 797.0, + "y": 6.0, + "width": 5.0, + "height": 592.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688173, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688173, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 9, + "element_id": 268436534, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 1.0, + "y": 1.0, + "width": 800.0, + "height": 600.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 10, + "element_id": 268435512, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 351.0, + "y": 251.0, + "width": 100.0, + "height": 100.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 11, + "element_id": 268435513, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 10, + "base_layout_id": 0, + "rect": { + "x": 351.0, + "y": 251.0, + "width": 12.0, + "height": 12.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 12, + "element_id": 268435514, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 10, + "base_layout_id": 0, + "rect": { + "x": 439.0, + "y": 251.0, + "width": 12.0, + "height": 12.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 13, + "element_id": 268435515, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 10, + "base_layout_id": 0, + "rect": { + "x": 351.0, + "y": 339.0, + "width": 12.0, + "height": 12.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 14, + "element_id": 268435516, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 10, + "base_layout_id": 0, + "rect": { + "x": 439.0, + "y": 339.0, + "width": 12.0, + "height": 12.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 15, + "element_id": 268435524, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 576.0, + "width": 760.0, + "height": 15.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 16, + "element_id": 268435508, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 15, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 576.0, + "width": 760.0, + "height": 15.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683019, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683019, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 17, + "element_id": 268436974, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 16, + "base_layout_id": 0, + "rect": { + "x": 97.0, + "y": 576.0, + "width": 608.0, + "height": 15.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100692318, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100692318, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 18, + "element_id": 2, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 16, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 576.0, + "width": 760.0, + "height": 15.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100668244, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 268435522, + "image": { + "image_id": 100668244, + "alpha_image_id": null + } + }, + { + "state_id": 268435523, + "image": { + "image_id": 100667904, + "alpha_image_id": null + } + }, + { + "state_id": 268435524, + "image": { + "image_id": 100667904, + "alpha_image_id": null + } + }, + { + "state_id": 268435525, + "image": { + "image_id": 100669787, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 19, + "element_id": 268435509, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 16, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 576.0, + "width": 755.0, + "height": 15.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 20, + "element_id": 268436888, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 21.0, + "width": 500.0, + "height": 440.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 21, + "element_id": 268436890, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 253.0, + "y": 21.0, + "width": 208.0, + "height": 208.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 22, + "element_id": 268436190, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 21, + "base_layout_id": 0, + "rect": { + "x": 253.0, + "y": 21.0, + "width": 34.0, + "height": 34.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682947, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682947, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 23, + "element_id": 268436191, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 21, + "base_layout_id": 0, + "rect": { + "x": 427.0, + "y": 21.0, + "width": 34.0, + "height": 34.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682948, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682948, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 24, + "element_id": 268436192, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 21, + "base_layout_id": 0, + "rect": { + "x": 253.0, + "y": 197.0, + "width": 34.0, + "height": 35.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682949, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682949, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 25, + "element_id": 268436193, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 21, + "base_layout_id": 0, + "rect": { + "x": 427.0, + "y": 197.0, + "width": 34.0, + "height": 35.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682950, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682950, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 26, + "element_id": 268436194, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 21, + "base_layout_id": 0, + "rect": { + "x": 287.0, + "y": 21.0, + "width": 140.0, + "height": 7.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682951, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682951, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 27, + "element_id": 268436195, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 21, + "base_layout_id": 0, + "rect": { + "x": 287.0, + "y": 225.0, + "width": 140.0, + "height": 7.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682951, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682951, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 28, + "element_id": 268435688, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 21, + "base_layout_id": 0, + "rect": { + "x": 253.0, + "y": 55.0, + "width": 5.0, + "height": 143.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682936, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682936, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 29, + "element_id": 268435690, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 21, + "base_layout_id": 0, + "rect": { + "x": 456.0, + "y": 55.0, + "width": 5.0, + "height": 143.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682936, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682936, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 30, + "element_id": 268436891, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 257.0, + "y": 25.0, + "width": 200.0, + "height": 200.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 31, + "element_id": 268436904, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 21.0, + "width": 220.0, + "height": 440.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 32, + "element_id": 268436190, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 31, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 21.0, + "width": 34.0, + "height": 34.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682947, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682947, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 33, + "element_id": 268436191, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 31, + "base_layout_id": 0, + "rect": { + "x": 207.0, + "y": 21.0, + "width": 34.0, + "height": 34.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682948, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682948, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 34, + "element_id": 268436192, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 31, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 429.0, + "width": 34.0, + "height": 35.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682949, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682949, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 35, + "element_id": 268436193, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 31, + "base_layout_id": 0, + "rect": { + "x": 207.0, + "y": 429.0, + "width": 34.0, + "height": 35.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682950, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682950, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 36, + "element_id": 268436194, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 31, + "base_layout_id": 0, + "rect": { + "x": 55.0, + "y": 21.0, + "width": 152.0, + "height": 7.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682951, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682951, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 37, + "element_id": 268436195, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 31, + "base_layout_id": 0, + "rect": { + "x": 55.0, + "y": 457.0, + "width": 152.0, + "height": 7.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682951, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682951, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 38, + "element_id": 268435688, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 31, + "base_layout_id": 0, + "rect": { + "x": 21.0, + "y": 55.0, + "width": 5.0, + "height": 375.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682936, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682936, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 39, + "element_id": 268435690, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 31, + "base_layout_id": 0, + "rect": { + "x": 236.0, + "y": 55.0, + "width": 5.0, + "height": 375.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682936, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682936, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 40, + "element_id": 268436892, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 31, + "base_layout_id": 0, + "rect": { + "x": 23.0, + "y": 249.0, + "width": 220.0, + "height": 220.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 41, + "element_id": 268436237, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 75.0, + "y": 303.0, + "width": 110.0, + "height": 112.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683076, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683076, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 42, + "element_id": 268436238, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 75.0, + "y": 303.0, + "width": 110.0, + "height": 112.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683077, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683077, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 43, + "element_id": 268436239, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 112.0, + "y": 255.0, + "width": 37.0, + "height": 44.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683078, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683078, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 44, + "element_id": 268436240, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 164.0, + "y": 267.0, + "width": 37.0, + "height": 44.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683078, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683078, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 45, + "element_id": 268436241, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 193.0, + "y": 317.0, + "width": 37.0, + "height": 44.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683078, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683078, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 46, + "element_id": 268436242, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 186.0, + "y": 372.0, + "width": 37.0, + "height": 44.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683078, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683078, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 47, + "element_id": 268436243, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 142.0, + "y": 414.0, + "width": 37.0, + "height": 44.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683078, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683078, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 48, + "element_id": 268436244, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 80.0, + "y": 414.0, + "width": 37.0, + "height": 44.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683078, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683078, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 49, + "element_id": 268436245, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 37.0, + "y": 372.0, + "width": 37.0, + "height": 44.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683078, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683078, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 50, + "element_id": 268436246, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 31.0, + "y": 317.0, + "width": 37.0, + "height": 44.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683078, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683078, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 51, + "element_id": 268436247, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 60.0, + "y": 267.0, + "width": 37.0, + "height": 44.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683078, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683078, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 52, + "element_id": 268436248, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 114.0, + "y": 288.0, + "width": 33.0, + "height": 29.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683079, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683079, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 53, + "element_id": 268436249, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 146.0, + "y": 298.0, + "width": 31.0, + "height": 30.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683080, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683080, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 54, + "element_id": 268436250, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 168.0, + "y": 330.0, + "width": 34.0, + "height": 34.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683081, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683081, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 55, + "element_id": 268436251, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 165.0, + "y": 369.0, + "width": 31.0, + "height": 32.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683082, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683082, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 56, + "element_id": 268436252, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 131.0, + "y": 397.0, + "width": 36.0, + "height": 32.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683083, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683083, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 57, + "element_id": 268436253, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 93.0, + "y": 398.0, + "width": 35.0, + "height": 32.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683084, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683084, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 58, + "element_id": 268436254, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 63.0, + "y": 367.0, + "width": 29.0, + "height": 36.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683085, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683085, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 59, + "element_id": 268436255, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 59.0, + "y": 327.0, + "width": 30.0, + "height": 35.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683086, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683086, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 60, + "element_id": 268436256, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 79.0, + "y": 299.0, + "width": 32.0, + "height": 31.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683087, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683087, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 61, + "element_id": 268436257, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 40, + "base_layout_id": 0, + "rect": { + "x": 113.0, + "y": 314.0, + "width": 33.0, + "height": 85.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 62, + "element_id": 1, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 61, + "base_layout_id": 0, + "rect": { + "x": 113.0, + "y": 314.0, + "width": 33.0, + "height": 21.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683088, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683088, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 63, + "element_id": 268436893, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 31, + "base_layout_id": 0, + "rect": { + "x": 29.0, + "y": 25.0, + "width": 175.0, + "height": 230.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 64, + "element_id": 268436894, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 63, + "base_layout_id": 0, + "rect": { + "x": 29.0, + "y": 25.0, + "width": 200.0, + "height": 42.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 65, + "element_id": 268436234, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 64, + "base_layout_id": 0, + "rect": { + "x": 109.0, + "y": 25.0, + "width": 47.0, + "height": 44.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682895, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682895, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682896, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682897, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 66, + "element_id": 268436235, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 64, + "base_layout_id": 0, + "rect": { + "x": 156.0, + "y": 25.0, + "width": 47.0, + "height": 44.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682898, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682898, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682899, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100687635, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 67, + "element_id": 268436895, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 63, + "base_layout_id": 0, + "rect": { + "x": 29.0, + "y": 69.0, + "width": 200.0, + "height": 42.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 68, + "element_id": 268436234, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 67, + "base_layout_id": 0, + "rect": { + "x": 109.0, + "y": 69.0, + "width": 47.0, + "height": 44.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682895, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682895, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682896, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682897, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 69, + "element_id": 268436235, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 67, + "base_layout_id": 0, + "rect": { + "x": 156.0, + "y": 69.0, + "width": 47.0, + "height": 44.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682898, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682898, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682899, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100687635, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 70, + "element_id": 268436896, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 63, + "base_layout_id": 0, + "rect": { + "x": 29.0, + "y": 113.0, + "width": 200.0, + "height": 42.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 71, + "element_id": 268436234, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 70, + "base_layout_id": 0, + "rect": { + "x": 109.0, + "y": 113.0, + "width": 47.0, + "height": 44.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682895, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682895, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682896, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682897, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 72, + "element_id": 268436235, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 70, + "base_layout_id": 0, + "rect": { + "x": 156.0, + "y": 113.0, + "width": 47.0, + "height": 44.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682898, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682898, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682899, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100687635, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 73, + "element_id": 268436897, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 63, + "base_layout_id": 0, + "rect": { + "x": 29.0, + "y": 157.0, + "width": 200.0, + "height": 42.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 74, + "element_id": 268436234, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 73, + "base_layout_id": 0, + "rect": { + "x": 109.0, + "y": 157.0, + "width": 47.0, + "height": 44.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682895, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682895, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682896, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682897, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 75, + "element_id": 268436235, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 73, + "base_layout_id": 0, + "rect": { + "x": 156.0, + "y": 157.0, + "width": 47.0, + "height": 44.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682898, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682898, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682899, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100687635, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 76, + "element_id": 268436898, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 63, + "base_layout_id": 0, + "rect": { + "x": 29.0, + "y": 201.0, + "width": 200.0, + "height": 42.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 77, + "element_id": 268436234, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 76, + "base_layout_id": 0, + "rect": { + "x": 109.0, + "y": 201.0, + "width": 47.0, + "height": 44.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682895, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682895, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682896, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682897, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 78, + "element_id": 268436235, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 76, + "base_layout_id": 0, + "rect": { + "x": 156.0, + "y": 201.0, + "width": 47.0, + "height": 44.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682898, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682898, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682899, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100687635, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 79, + "element_id": 268436900, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 253.0, + "y": 237.0, + "width": 60.0, + "height": 54.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100683089, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683089, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100683090, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100687271, + "alpha_image_id": null + } + }, + { + "state_id": 7, + "image": { + "image_id": 100687271, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 80, + "element_id": 268436901, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 403.0, + "y": 237.0, + "width": 60.0, + "height": 54.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100683091, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683091, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100683092, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100687272, + "alpha_image_id": null + } + }, + { + "state_id": 7, + "image": { + "image_id": 100687272, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 81, + "element_id": 268436937, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 253.0, + "y": 295.0, + "width": 140.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 82, + "element_id": 268436264, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 81, + "base_layout_id": 0, + "rect": { + "x": 253.0, + "y": 296.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 83, + "element_id": 268436938, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 253.0, + "y": 315.0, + "width": 140.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 84, + "element_id": 268436264, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 83, + "base_layout_id": 0, + "rect": { + "x": 253.0, + "y": 316.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 85, + "element_id": 268436939, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 253.0, + "y": 335.0, + "width": 140.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 86, + "element_id": 268436264, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 85, + "base_layout_id": 0, + "rect": { + "x": 253.0, + "y": 336.0, + "width": 13.0, + "height": 13.0 + }, + "widget_kind": "Slider", + "state_set": { + "default_image": { + "image_id": 100683029, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100683029, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100683030, + "alpha_image_id": null + } + }, + { + "state_id": 6, + "image": { + "image_id": 100683031, + "alpha_image_id": null + } + }, + { + "state_id": 8, + "image": { + "image_id": 100683032, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100683033, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 87, + "element_id": 268436902, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 373.0, + "y": 295.0, + "width": 88.0, + "height": 33.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 88, + "element_id": 268436174, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 87, + "base_layout_id": 0, + "rect": { + "x": 373.0, + "y": 295.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 89, + "element_id": 268436175, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 87, + "base_layout_id": 0, + "rect": { + "x": 405.0, + "y": 295.0, + "width": 24.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 90, + "element_id": 268436176, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 87, + "base_layout_id": 0, + "rect": { + "x": 429.0, + "y": 295.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 91, + "element_id": 268436903, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 20, + "base_layout_id": 0, + "rect": { + "x": 253.0, + "y": 295.0, + "width": 88.0, + "height": 33.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 92, + "element_id": 268436174, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 91, + "base_layout_id": 0, + "rect": { + "x": 253.0, + "y": 295.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682902, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682902, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682901, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682900, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 93, + "element_id": 268436175, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 91, + "base_layout_id": 0, + "rect": { + "x": 285.0, + "y": 295.0, + "width": 24.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682905, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682905, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682904, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682903, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 94, + "element_id": 268436176, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 91, + "base_layout_id": 0, + "rect": { + "x": 309.0, + "y": 295.0, + "width": 32.0, + "height": 33.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100682908, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682908, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682907, + "alpha_image_id": null + } + }, + { + "state_id": 13, + "image": { + "image_id": 100682906, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 95, + "element_id": 268435525, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 1.0, + "y": 1.0, + "width": 24.0, + "height": 24.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 96, + "element_id": 268435526, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 1.0, + "y": 21.0, + "width": 450.0, + "height": 72.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 97, + "element_id": 268435529, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 96, + "base_layout_id": 0, + "rect": { + "x": 1.0, + "y": 21.0, + "width": 450.0, + "height": 72.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 98, + "element_id": 268435527, + "layout_id": 553648143, + "parent_layout_id": 553648143, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 1.0, + "y": 1.0, + "width": 128.0, + "height": 36.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 99, + "element_id": 268437007, + "layout_id": 553648143, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 1.0, + "y": 1.0, + "width": 0.0, + "height": 0.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + } + ] + }, + { + "id": 268436983, + "slug": "examine", + "title": "Examine", + "bucket": "VitalsExamine", + "parent_slug": null, + "width": 640, + "height": 480, + "nodes": [ + { + "traversal_index": 0, + "element_id": 268436978, + "layout_id": 553648235, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 20.0, + "y": 20.0, + "width": 310.0, + "height": 400.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 1, + "element_id": 268437107, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 20.0, + "y": 20.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693187, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693187, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 2, + "element_id": 268437108, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 20.0, + "width": 300.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693183, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693183, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 3, + "element_id": 268437109, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 325.0, + "y": 20.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693188, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693188, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 4, + "element_id": 268437110, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 20.0, + "y": 25.0, + "width": 5.0, + "height": 390.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693184, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693184, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 5, + "element_id": 268437111, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 20.0, + "y": 415.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693189, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693189, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 6, + "element_id": 268437112, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 415.0, + "width": 300.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693185, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693185, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 7, + "element_id": 268437113, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 325.0, + "y": 415.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693190, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693190, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 8, + "element_id": 268437114, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 325.0, + "y": 25.0, + "width": 5.0, + "height": 390.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693186, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693186, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 9, + "element_id": 268437115, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 20.0, + "y": 20.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 10, + "element_id": 268437116, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 20.0, + "width": 300.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688170, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688170, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 11, + "element_id": 268437117, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 325.0, + "y": 20.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 12, + "element_id": 268437118, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 20.0, + "y": 25.0, + "width": 5.0, + "height": 390.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688171, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688171, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 13, + "element_id": 268437119, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 20.0, + "y": 415.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 14, + "element_id": 268437120, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 415.0, + "width": 300.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688172, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688172, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 15, + "element_id": 268437121, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 325.0, + "y": 415.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 16, + "element_id": 268437122, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 325.0, + "y": 25.0, + "width": 5.0, + "height": 390.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688173, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688173, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 17, + "element_id": 268435757, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 25.0, + "width": 300.0, + "height": 20.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 18, + "element_id": 268436776, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 45.0, + "width": 300.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688170, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688170, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 19, + "element_id": 268436777, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 25.0, + "width": 300.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 20, + "element_id": 268436979, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 304.0, + "y": 28.0, + "width": 14.0, + "height": 14.0 + }, + "widget_kind": "Button", + "state_set": { + "default_image": { + "image_id": 100688405, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100688405, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100688406, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 21, + "element_id": 268435758, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 50.0, + "width": 300.0, + "height": 365.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 22, + "element_id": 268435765, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 21, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 336.0, + "width": 300.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688172, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688172, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 23, + "element_id": 268435767, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 21, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 341.0, + "width": 300.0, + "height": 74.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668015, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668015, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 24, + "element_id": 268435772, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 21, + "base_layout_id": 0, + "rect": { + "x": 29.0, + "y": 50.0, + "width": 280.0, + "height": 286.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 25, + "element_id": 268435773, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 21, + "base_layout_id": 0, + "rect": { + "x": 309.0, + "y": 50.0, + "width": 16.0, + "height": 286.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 26, + "element_id": 1, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 309.0, + "y": 50.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 27, + "element_id": 268436324, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 26, + "base_layout_id": 0, + "rect": { + "x": 309.0, + "y": 50.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 28, + "element_id": 268436325, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 26, + "base_layout_id": 0, + "rect": { + "x": 309.0, + "y": 53.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 29, + "element_id": 268436326, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 26, + "base_layout_id": 0, + "rect": { + "x": 309.0, + "y": 63.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 30, + "element_id": 268435569, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 309.0, + "y": 50.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 31, + "element_id": 268435570, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 25, + "base_layout_id": 0, + "rect": { + "x": 309.0, + "y": 320.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 32, + "element_id": 268436984, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 21, + "base_layout_id": 0, + "rect": { + "x": 309.0, + "y": 50.0, + "width": 16.0, + "height": 286.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 33, + "element_id": 268435774, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 21, + "base_layout_id": 0, + "rect": { + "x": 29.0, + "y": 341.0, + "width": 276.0, + "height": 57.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 34, + "element_id": 268436590, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 21, + "base_layout_id": 0, + "rect": { + "x": 309.0, + "y": 341.0, + "width": 16.0, + "height": 57.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 35, + "element_id": 1, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 34, + "base_layout_id": 0, + "rect": { + "x": 309.0, + "y": 341.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 36, + "element_id": 268436324, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 35, + "base_layout_id": 0, + "rect": { + "x": 309.0, + "y": 341.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 37, + "element_id": 268436325, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 35, + "base_layout_id": 0, + "rect": { + "x": 309.0, + "y": 344.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 38, + "element_id": 268436326, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 35, + "base_layout_id": 0, + "rect": { + "x": 309.0, + "y": 354.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 39, + "element_id": 268435569, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 34, + "base_layout_id": 0, + "rect": { + "x": 309.0, + "y": 341.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 40, + "element_id": 268435570, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 34, + "base_layout_id": 0, + "rect": { + "x": 309.0, + "y": 382.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 41, + "element_id": 268435775, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 21, + "base_layout_id": 0, + "rect": { + "x": 29.0, + "y": 398.0, + "width": 292.0, + "height": 17.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 42, + "element_id": 268435776, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 50.0, + "width": 300.0, + "height": 365.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 43, + "element_id": 268435777, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 42, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 50.0, + "width": 300.0, + "height": 365.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 44, + "element_id": 268435781, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 42, + "base_layout_id": 0, + "rect": { + "x": 255.0, + "y": 50.0, + "width": 7.0, + "height": 60.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100668102, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100668102, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 45, + "element_id": 268435782, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 42, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 110.0, + "width": 300.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688172, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688172, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 46, + "element_id": 268436577, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 42, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 300.0, + "width": 300.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688172, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688172, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 47, + "element_id": 268435784, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 42, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 118.0, + "width": 300.0, + "height": 265.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 48, + "element_id": 268435785, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 42, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 118.0, + "width": 300.0, + "height": 265.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 49, + "element_id": 268436794, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 42, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 308.0, + "width": 292.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 50, + "element_id": 268436277, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 42, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 328.0, + "width": 292.0, + "height": 87.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 51, + "element_id": 268435786, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 42, + "base_layout_id": 0, + "rect": { + "x": 262.0, + "y": 52.0, + "width": 56.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 52, + "element_id": 268435787, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 42, + "base_layout_id": 0, + "rect": { + "x": 262.0, + "y": 66.0, + "width": 56.0, + "height": 14.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 53, + "element_id": 268435788, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 42, + "base_layout_id": 0, + "rect": { + "x": 262.0, + "y": 80.0, + "width": 56.0, + "height": 28.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 54, + "element_id": 268435789, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 42, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 50.0, + "width": 226.0, + "height": 60.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 55, + "element_id": 268435790, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 54, + "base_layout_id": 0, + "rect": { + "x": 31.0, + "y": 52.0, + "width": 222.0, + "height": 54.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 56, + "element_id": 268435791, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 42, + "base_layout_id": 0, + "rect": { + "x": 29.0, + "y": 50.0, + "width": 226.0, + "height": 60.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 57, + "element_id": 268435792, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 56, + "base_layout_id": 0, + "rect": { + "x": 35.0, + "y": 52.0, + "width": 222.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 58, + "element_id": 268435793, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 56, + "base_layout_id": 0, + "rect": { + "x": 35.0, + "y": 70.0, + "width": 222.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 59, + "element_id": 268435794, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 56, + "base_layout_id": 0, + "rect": { + "x": 35.0, + "y": 88.0, + "width": 222.0, + "height": 18.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 60, + "element_id": 268435795, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 50.0, + "width": 300.0, + "height": 365.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 61, + "element_id": 268435796, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 60, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 50.0, + "width": 300.0, + "height": 365.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 62, + "element_id": 268435800, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 60, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 92.0, + "width": 300.0, + "height": 4.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688172, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688172, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 63, + "element_id": 268435802, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 60, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 142.0, + "width": 300.0, + "height": 4.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688172, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688172, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 64, + "element_id": 268435804, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 60, + "base_layout_id": 0, + "rect": { + "x": 25.0, + "y": 318.0, + "width": 300.0, + "height": 4.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688172, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688172, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 65, + "element_id": 268435806, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 60, + "base_layout_id": 0, + "rect": { + "x": 31.0, + "y": 52.0, + "width": 232.0, + "height": 38.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 66, + "element_id": 268435807, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 60, + "base_layout_id": 0, + "rect": { + "x": 269.0, + "y": 56.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100683004, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100683004, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 67, + "element_id": 268435808, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 60, + "base_layout_id": 0, + "rect": { + "x": 36.0, + "y": 102.0, + "width": 278.0, + "height": 19.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 68, + "element_id": 268435809, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 60, + "base_layout_id": 0, + "rect": { + "x": 36.0, + "y": 102.0, + "width": 278.0, + "height": 19.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 69, + "element_id": 268435810, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 60, + "base_layout_id": 0, + "rect": { + "x": 36.0, + "y": 121.0, + "width": 278.0, + "height": 19.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 70, + "element_id": 268435811, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 60, + "base_layout_id": 0, + "rect": { + "x": 36.0, + "y": 150.0, + "width": 264.0, + "height": 168.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 71, + "element_id": 268435812, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 60, + "base_layout_id": 0, + "rect": { + "x": 309.0, + "y": 149.0, + "width": 16.0, + "height": 171.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682847, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682847, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 72, + "element_id": 1, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 71, + "base_layout_id": 0, + "rect": { + "x": 309.0, + "y": 149.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 73, + "element_id": 268436324, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 72, + "base_layout_id": 0, + "rect": { + "x": 309.0, + "y": 149.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682848, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682848, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682849, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682850, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 74, + "element_id": 268436325, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 72, + "base_layout_id": 0, + "rect": { + "x": 309.0, + "y": 152.0, + "width": 16.0, + "height": 10.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682851, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682851, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682852, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682853, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 75, + "element_id": 268436326, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 72, + "base_layout_id": 0, + "rect": { + "x": 309.0, + "y": 162.0, + "width": 16.0, + "height": 3.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682854, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682854, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682855, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682856, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 76, + "element_id": 268435569, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 71, + "base_layout_id": 0, + "rect": { + "x": 309.0, + "y": 149.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682857, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682857, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682858, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682859, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 77, + "element_id": 268435570, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 71, + "base_layout_id": 0, + "rect": { + "x": 309.0, + "y": 304.0, + "width": 16.0, + "height": 16.0 + }, + "widget_kind": "Scrollbar", + "state_set": { + "default_image": { + "image_id": 100682860, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 1, + "image": { + "image_id": 100682860, + "alpha_image_id": null + } + }, + { + "state_id": 2, + "image": { + "image_id": 100682861, + "alpha_image_id": null + } + }, + { + "state_id": 3, + "image": { + "image_id": 100682862, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 78, + "element_id": 268435813, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 60, + "base_layout_id": 0, + "rect": { + "x": 36.0, + "y": 326.0, + "width": 278.0, + "height": 19.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 79, + "element_id": 268436269, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 60, + "base_layout_id": 0, + "rect": { + "x": 159.0, + "y": 348.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 80, + "element_id": 268436270, + "layout_id": 553648235, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 81, + "element_id": 268436272, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 80, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 32.0, + "height": 32.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 82, + "element_id": 268435814, + "layout_id": 553648235, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 292.0, + "height": 20.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100682946, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100682946, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 83, + "element_id": 268435754, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 82, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 128.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 84, + "element_id": 268435755, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 82, + "base_layout_id": 0, + "rect": { + "x": 27.0, + "y": 0.0, + "width": 256.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 85, + "element_id": 268436279, + "layout_id": 553648235, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 292.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 86, + "element_id": 268435754, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 85, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 125.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 87, + "element_id": 268435755, + "layout_id": 553648235, + "parent_layout_id": 553648235, + "parent_traversal_index": 85, + "base_layout_id": 0, + "rect": { + "x": 128.0, + "y": 0.0, + "width": 162.0, + "height": 20.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + } + ] + }, + { + "id": 268437205, + "slug": "side_by_side_vitals", + "title": "Side-by-Side Vitals", + "bucket": "VitalsExamine", + "parent_slug": null, + "width": 640, + "height": 480, + "nodes": [ + { + "traversal_index": 0, + "element_id": 268437204, + "layout_id": 553648245, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 460.0, + "height": 26.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 1, + "element_id": 268437206, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693187, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693187, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 2, + "element_id": 268437207, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 0.0, + "width": 450.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693183, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693183, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 3, + "element_id": 268437208, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 455.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693188, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693188, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 4, + "element_id": 268437209, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 5.0, + "width": 5.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693184, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693184, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 5, + "element_id": 268437210, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 21.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693189, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693189, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 6, + "element_id": 268437211, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 21.0, + "width": 450.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693185, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693185, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 7, + "element_id": 268437212, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 455.0, + "y": 21.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693190, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693190, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 8, + "element_id": 268437213, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 455.0, + "y": 5.0, + "width": 5.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693186, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693186, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 9, + "element_id": 268437214, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 10, + "element_id": 268437215, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 0.0, + "width": 450.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688170, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688170, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 11, + "element_id": 268437216, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 455.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 12, + "element_id": 268437217, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 5.0, + "width": 5.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688171, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688171, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 13, + "element_id": 268437218, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 21.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 14, + "element_id": 268437219, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 21.0, + "width": 450.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688172, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688172, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 15, + "element_id": 268437220, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 455.0, + "y": 21.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 16, + "element_id": 268437221, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 455.0, + "y": 5.0, + "width": 5.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688173, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688173, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 17, + "element_id": 268435686, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 150.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 18, + "element_id": 268435687, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 150.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 19, + "element_id": 268435688, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693118, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693118, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 20, + "element_id": 268435689, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 5.0, + "width": 130.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693119, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693119, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 21, + "element_id": 268435690, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 145.0, + "y": 5.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693120, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693120, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 22, + "element_id": 268436649, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 71.0, + "y": 5.0, + "width": 18.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693136, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 268435463, + "image": { + "image_id": 100693136, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 23, + "element_id": 2, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 150.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 24, + "element_id": 268435688, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 23, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693121, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693121, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 25, + "element_id": 268435689, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 23, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 5.0, + "width": 130.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693122, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693122, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 26, + "element_id": 268435690, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 23, + "base_layout_id": 0, + "rect": { + "x": 145.0, + "y": 5.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693123, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693123, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 27, + "element_id": 268436649, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 23, + "base_layout_id": 0, + "rect": { + "x": 71.0, + "y": 5.0, + "width": 18.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693137, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 268435463, + "image": { + "image_id": 100693137, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 28, + "element_id": 268435691, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 150.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 29, + "element_id": 268435692, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 5.0, + "width": 150.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 30, + "element_id": 268435687, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 29, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 5.0, + "width": 150.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 31, + "element_id": 268435688, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 30, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 5.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693124, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693124, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 32, + "element_id": 268435689, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 30, + "base_layout_id": 0, + "rect": { + "x": 165.0, + "y": 5.0, + "width": 130.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693125, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693125, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 33, + "element_id": 268435690, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 30, + "base_layout_id": 0, + "rect": { + "x": 295.0, + "y": 5.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693126, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693126, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 34, + "element_id": 268436649, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 30, + "base_layout_id": 0, + "rect": { + "x": 187.0, + "y": 5.0, + "width": 85.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693138, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 268435463, + "image": { + "image_id": 100693138, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 35, + "element_id": 2, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 29, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 5.0, + "width": 150.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 36, + "element_id": 268435688, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 35, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 5.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693127, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693127, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 37, + "element_id": 268435689, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 35, + "base_layout_id": 0, + "rect": { + "x": 165.0, + "y": 5.0, + "width": 130.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693128, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693128, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 38, + "element_id": 268435690, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 35, + "base_layout_id": 0, + "rect": { + "x": 295.0, + "y": 5.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693129, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693129, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 39, + "element_id": 268436649, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 35, + "base_layout_id": 0, + "rect": { + "x": 187.0, + "y": 5.0, + "width": 85.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693139, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 268435463, + "image": { + "image_id": 100693139, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 40, + "element_id": 268435693, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 29, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 5.0, + "width": 150.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 41, + "element_id": 268435694, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 305.0, + "y": 5.0, + "width": 150.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 42, + "element_id": 268435687, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 41, + "base_layout_id": 0, + "rect": { + "x": 305.0, + "y": 5.0, + "width": 150.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 43, + "element_id": 268435688, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 42, + "base_layout_id": 0, + "rect": { + "x": 305.0, + "y": 5.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693130, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693130, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 44, + "element_id": 268435689, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 42, + "base_layout_id": 0, + "rect": { + "x": 315.0, + "y": 5.0, + "width": 130.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693131, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693131, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 45, + "element_id": 268435690, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 42, + "base_layout_id": 0, + "rect": { + "x": 445.0, + "y": 5.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693132, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693132, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 46, + "element_id": 268436649, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 42, + "base_layout_id": 0, + "rect": { + "x": 330.0, + "y": 5.0, + "width": 100.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693140, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 268435463, + "image": { + "image_id": 100693140, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 47, + "element_id": 2, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 41, + "base_layout_id": 0, + "rect": { + "x": 305.0, + "y": 5.0, + "width": 150.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 48, + "element_id": 268435688, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 47, + "base_layout_id": 0, + "rect": { + "x": 305.0, + "y": 5.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693133, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693133, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 49, + "element_id": 268435689, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 47, + "base_layout_id": 0, + "rect": { + "x": 315.0, + "y": 5.0, + "width": 130.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693134, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693134, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 50, + "element_id": 268435690, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 47, + "base_layout_id": 0, + "rect": { + "x": 445.0, + "y": 5.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693135, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693135, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 51, + "element_id": 268436649, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 47, + "base_layout_id": 0, + "rect": { + "x": 330.0, + "y": 5.0, + "width": 100.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693141, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 268435463, + "image": { + "image_id": 100693141, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 52, + "element_id": 268435695, + "layout_id": 553648245, + "parent_layout_id": 553648245, + "parent_traversal_index": 41, + "base_layout_id": 0, + "rect": { + "x": 305.0, + "y": 5.0, + "width": 150.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + } + ] + }, + { + "id": 268436986, + "slug": "vitals", + "title": "Vitals", + "bucket": "VitalsExamine", + "parent_slug": null, + "width": 640, + "height": 480, + "nodes": [ + { + "traversal_index": 0, + "element_id": 268436985, + "layout_id": 553648236, + "parent_layout_id": null, + "parent_traversal_index": null, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 160.0, + "height": 58.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 1, + "element_id": 268437043, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693187, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693187, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 2, + "element_id": 268437044, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 0.0, + "width": 150.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693183, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693183, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 3, + "element_id": 268437045, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693188, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693188, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 4, + "element_id": 268437046, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 5.0, + "width": 5.0, + "height": 48.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693184, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693184, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 5, + "element_id": 268437047, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 53.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693189, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693189, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 6, + "element_id": 268437048, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 53.0, + "width": 150.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693185, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693185, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 7, + "element_id": 268437049, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 53.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693190, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693190, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 8, + "element_id": 268437050, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 5.0, + "width": 5.0, + "height": 48.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693186, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693186, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 9, + "element_id": 268437051, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 10, + "element_id": 268437052, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 0.0, + "width": 150.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688170, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688170, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 11, + "element_id": 268437053, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 0.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 12, + "element_id": 268437054, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 5.0, + "width": 5.0, + "height": 48.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688171, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688171, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 13, + "element_id": 268437055, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 0.0, + "y": 53.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 14, + "element_id": 268437056, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 53.0, + "width": 150.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688172, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688172, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 15, + "element_id": 268437057, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 53.0, + "width": 5.0, + "height": 5.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688169, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688169, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 16, + "element_id": 268437058, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 155.0, + "y": 5.0, + "width": 5.0, + "height": 48.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100688173, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100688173, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 17, + "element_id": 268435686, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 150.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 18, + "element_id": 268435687, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 150.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 19, + "element_id": 268435688, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693118, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693118, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 20, + "element_id": 268435689, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 5.0, + "width": 130.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693119, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693119, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 21, + "element_id": 268435690, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 145.0, + "y": 5.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693120, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693120, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 22, + "element_id": 268436649, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 18, + "base_layout_id": 0, + "rect": { + "x": 71.0, + "y": 5.0, + "width": 18.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693136, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 268435463, + "image": { + "image_id": 100693136, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 23, + "element_id": 2, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 150.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 24, + "element_id": 268435688, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 23, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693121, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693121, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 25, + "element_id": 268435689, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 23, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 5.0, + "width": 130.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693122, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693122, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 26, + "element_id": 268435690, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 23, + "base_layout_id": 0, + "rect": { + "x": 145.0, + "y": 5.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693123, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693123, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 27, + "element_id": 268436649, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 23, + "base_layout_id": 0, + "rect": { + "x": 71.0, + "y": 5.0, + "width": 18.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693137, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 268435463, + "image": { + "image_id": 100693137, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 28, + "element_id": 268435691, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 17, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 5.0, + "width": 150.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 29, + "element_id": 268435692, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 21.0, + "width": 150.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 30, + "element_id": 268435687, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 29, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 21.0, + "width": 150.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 31, + "element_id": 268435688, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 30, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 21.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693124, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693124, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 32, + "element_id": 268435689, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 30, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 21.0, + "width": 130.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693125, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693125, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 33, + "element_id": 268435690, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 30, + "base_layout_id": 0, + "rect": { + "x": 145.0, + "y": 21.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693126, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693126, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 34, + "element_id": 268436649, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 30, + "base_layout_id": 0, + "rect": { + "x": 37.0, + "y": 21.0, + "width": 85.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693138, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 268435463, + "image": { + "image_id": 100693138, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 35, + "element_id": 2, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 29, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 21.0, + "width": 150.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 36, + "element_id": 268435688, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 35, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 21.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693127, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693127, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 37, + "element_id": 268435689, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 35, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 21.0, + "width": 130.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693128, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693128, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 38, + "element_id": 268435690, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 35, + "base_layout_id": 0, + "rect": { + "x": 145.0, + "y": 21.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693129, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693129, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 39, + "element_id": 268436649, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 35, + "base_layout_id": 0, + "rect": { + "x": 37.0, + "y": 21.0, + "width": 85.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693139, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 268435463, + "image": { + "image_id": 100693139, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 40, + "element_id": 268435693, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 29, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 21.0, + "width": 150.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 41, + "element_id": 268435694, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 0, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 37.0, + "width": 150.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 42, + "element_id": 268435687, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 41, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 37.0, + "width": 150.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 43, + "element_id": 268435688, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 42, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 37.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693130, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693130, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 44, + "element_id": 268435689, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 42, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 37.0, + "width": 130.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693131, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693131, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 45, + "element_id": 268435690, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 42, + "base_layout_id": 0, + "rect": { + "x": 145.0, + "y": 37.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693132, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693132, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 46, + "element_id": 268436649, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 42, + "base_layout_id": 0, + "rect": { + "x": 30.0, + "y": 37.0, + "width": 100.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693140, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 268435463, + "image": { + "image_id": 100693140, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 47, + "element_id": 2, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 41, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 37.0, + "width": 150.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + }, + { + "traversal_index": 48, + "element_id": 268435688, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 47, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 37.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693133, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693133, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 49, + "element_id": 268435689, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 47, + "base_layout_id": 0, + "rect": { + "x": 15.0, + "y": 37.0, + "width": 130.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693134, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693134, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 50, + "element_id": 268435690, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 47, + "base_layout_id": 0, + "rect": { + "x": 145.0, + "y": 37.0, + "width": 10.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693135, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 0, + "image": { + "image_id": 100693135, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 51, + "element_id": 268436649, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 47, + "base_layout_id": 0, + "rect": { + "x": 30.0, + "y": 37.0, + "width": 100.0, + "height": 16.0 + }, + "widget_kind": "Sprite", + "state_set": { + "default_image": { + "image_id": 100693141, + "alpha_image_id": null + }, + "states": [ + { + "state_id": 268435463, + "image": { + "image_id": 100693141, + "alpha_image_id": null + } + } + ] + } + }, + { + "traversal_index": 52, + "element_id": 268435695, + "layout_id": 553648236, + "parent_layout_id": 553648236, + "parent_traversal_index": 41, + "base_layout_id": 0, + "rect": { + "x": 5.0, + "y": 37.0, + "width": 150.0, + "height": 16.0 + }, + "widget_kind": "Group", + "state_set": { + "default_image": null, + "states": [] + } + } + ] + } + ], + "images": [ + { + "key": { + "image_id": 100667274, + "alpha_image_id": null + }, + "relative_path": "images/0x06000F8A.png", + "width": 153, + "height": 15, + "used_by_panels": [ + "character", + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 59, + "element_id": 2, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 59, + "element_id": 2, + "state_id": 0 + }, + { + "panel_slug": "character", + "traversal_index": 110, + "element_id": 2, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 110, + "element_id": 2, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 460, + "element_id": 2, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 460, + "element_id": 2, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 511, + "element_id": 2, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 511, + "element_id": 2, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100667670, + "alpha_image_id": null + }, + "relative_path": "images/0x06001116.png", + "width": 34, + "height": 27, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 11, + "element_id": 268435866, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 11, + "element_id": 268435866, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100667672, + "alpha_image_id": null + }, + "relative_path": "images/0x06001118.png", + "width": 34, + "height": 27, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 11, + "element_id": 268435866, + "state_id": 6 + } + ] + }, + { + "key": { + "image_id": 100667673, + "alpha_image_id": null + }, + "relative_path": "images/0x06001119.png", + "width": 34, + "height": 27, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 8, + "element_id": 268435864, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 8, + "element_id": 268435864, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100667675, + "alpha_image_id": null + }, + "relative_path": "images/0x0600111B.png", + "width": 34, + "height": 27, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 8, + "element_id": 268435864, + "state_id": 6 + } + ] + }, + { + "key": { + "image_id": 100667676, + "alpha_image_id": null + }, + "relative_path": "images/0x0600111C.png", + "width": 39, + "height": 27, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 12, + "element_id": 268435867, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 12, + "element_id": 268435867, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100667678, + "alpha_image_id": null + }, + "relative_path": "images/0x0600111E.png", + "width": 39, + "height": 27, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 12, + "element_id": 268435867, + "state_id": 6 + } + ] + }, + { + "key": { + "image_id": 100667679, + "alpha_image_id": null + }, + "relative_path": "images/0x0600111F.png", + "width": 35, + "height": 27, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 7, + "element_id": 268435863, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 7, + "element_id": 268435863, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100667681, + "alpha_image_id": null + }, + "relative_path": "images/0x06001121.png", + "width": 35, + "height": 27, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 7, + "element_id": 268435863, + "state_id": 6 + } + ] + }, + { + "key": { + "image_id": 100667682, + "alpha_image_id": null + }, + "relative_path": "images/0x06001122.png", + "width": 34, + "height": 27, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 9, + "element_id": 268435865, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 9, + "element_id": 268435865, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100667684, + "alpha_image_id": null + }, + "relative_path": "images/0x06001124.png", + "width": 34, + "height": 27, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 9, + "element_id": 268435865, + "state_id": 6 + } + ] + }, + { + "key": { + "image_id": 100667686, + "alpha_image_id": null + }, + "relative_path": "images/0x06001126.png", + "width": 146, + "height": 31, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 15, + "element_id": 268435870, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 15, + "element_id": 268435870, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100667687, + "alpha_image_id": null + }, + "relative_path": "images/0x06001127.png", + "width": 22, + "height": 31, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 26, + "element_id": 268435877, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 26, + "element_id": 268435877, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100667688, + "alpha_image_id": null + }, + "relative_path": "images/0x06001128.png", + "width": 22, + "height": 31, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 26, + "element_id": 268435877, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100667689, + "alpha_image_id": null + }, + "relative_path": "images/0x06001129.png", + "width": 23, + "height": 31, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 14, + "element_id": 268435869, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 14, + "element_id": 268435869, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100667690, + "alpha_image_id": null + }, + "relative_path": "images/0x0600112A.png", + "width": 23, + "height": 31, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 14, + "element_id": 268435869, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100667691, + "alpha_image_id": null + }, + "relative_path": "images/0x0600112B.png", + "width": 7, + "height": 27, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 6, + "element_id": 268435862, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 6, + "element_id": 268435862, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100667692, + "alpha_image_id": null + }, + "relative_path": "images/0x0600112C.png", + "width": 10, + "height": 27, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 13, + "element_id": 268435868, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 13, + "element_id": 268435868, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100667706, + "alpha_image_id": null + }, + "relative_path": "images/0x0600113A.png", + "width": 500, + "height": 17, + "used_by_panels": [ + "main_chat" + ], + "used_by_nodes": [ + { + "panel_slug": "main_chat", + "traversal_index": 32, + "element_id": 268435475, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 32, + "element_id": 268435475, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100667813, + "alpha_image_id": null + }, + "relative_path": "images/0x060011A5.png", + "width": 153, + "height": 15, + "used_by_panels": [ + "character", + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 25, + "element_id": 2, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 25, + "element_id": 2, + "state_id": 0 + }, + { + "panel_slug": "character", + "traversal_index": 76, + "element_id": 2, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 76, + "element_id": 2, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 426, + "element_id": 2, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 426, + "element_id": 2, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 477, + "element_id": 2, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 477, + "element_id": 2, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100667814, + "alpha_image_id": null + }, + "relative_path": "images/0x060011A6.png", + "width": 155, + "height": 17, + "used_by_panels": [ + "character", + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 24, + "element_id": 268436022, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 24, + "element_id": 268436022, + "state_id": 0 + }, + { + "panel_slug": "character", + "traversal_index": 58, + "element_id": 268436039, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 58, + "element_id": 268436039, + "state_id": 0 + }, + { + "panel_slug": "character", + "traversal_index": 75, + "element_id": 268436022, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 75, + "element_id": 268436022, + "state_id": 0 + }, + { + "panel_slug": "character", + "traversal_index": 109, + "element_id": 268436039, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 109, + "element_id": 268436039, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 425, + "element_id": 268436022, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 425, + "element_id": 268436022, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 459, + "element_id": 268436039, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 459, + "element_id": 268436039, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 476, + "element_id": 268436022, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 476, + "element_id": 268436022, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 510, + "element_id": 268436039, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 510, + "element_id": 268436039, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100667819, + "alpha_image_id": null + }, + "relative_path": "images/0x060011AB.png", + "width": 500, + "height": 17, + "used_by_panels": [ + "main_chat" + ], + "used_by_nodes": [ + { + "panel_slug": "main_chat", + "traversal_index": 35, + "element_id": 268435478, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 35, + "element_id": 268435478, + "state_id": 4 + } + ] + }, + { + "key": { + "image_id": 100667833, + "alpha_image_id": null + }, + "relative_path": "images/0x060011B9.png", + "width": 32, + "height": 3, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 36, + "element_id": 268435566, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 36, + "element_id": 268435566, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 37, + "element_id": 268435567, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 37, + "element_id": 268435567, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100667834, + "alpha_image_id": null + }, + "relative_path": "images/0x060011BA.png", + "width": 3, + "height": 32, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 34, + "element_id": 268435564, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 34, + "element_id": 268435564, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 35, + "element_id": 268435565, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 35, + "element_id": 268435565, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100667836, + "alpha_image_id": null + }, + "relative_path": "images/0x060011BC.png", + "width": 24, + "height": 23, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 24, + "element_id": 268435560, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100667837, + "alpha_image_id": null + }, + "relative_path": "images/0x060011BD.png", + "width": 24, + "height": 23, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 24, + "element_id": 268435560, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 24, + "element_id": 268435560, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100667895, + "alpha_image_id": null + }, + "relative_path": "images/0x060011F7.png", + "width": 32, + "height": 32, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 50, + "element_id": 268436588, + "state_id": 268435526 + } + ] + }, + { + "key": { + "image_id": 100667896, + "alpha_image_id": null + }, + "relative_path": "images/0x060011F8.png", + "width": 32, + "height": 32, + "used_by_panels": [ + "inventory", + "main_panel", + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "inventory", + "traversal_index": 4, + "element_id": 268436589, + "state_id": 268435521 + }, + { + "panel_slug": "main_panel", + "traversal_index": 205, + "element_id": 268436589, + "state_id": 268435521 + }, + { + "panel_slug": "toolbar", + "traversal_index": 50, + "element_id": 268436588, + "state_id": 268435521 + } + ] + }, + { + "key": { + "image_id": 100667897, + "alpha_image_id": null + }, + "relative_path": "images/0x060011F9.png", + "width": 32, + "height": 32, + "used_by_panels": [ + "inventory", + "main_panel", + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "inventory", + "traversal_index": 4, + "element_id": 268436589, + "state_id": null + }, + { + "panel_slug": "inventory", + "traversal_index": 4, + "element_id": 268436589, + "state_id": 268435520 + }, + { + "panel_slug": "main_panel", + "traversal_index": 205, + "element_id": 268436589, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 205, + "element_id": 268436589, + "state_id": 268435520 + }, + { + "panel_slug": "toolbar", + "traversal_index": 50, + "element_id": 268436588, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 50, + "element_id": 268436588, + "state_id": 268435520 + } + ] + }, + { + "key": { + "image_id": 100667899, + "alpha_image_id": null + }, + "relative_path": "images/0x060011FB.png", + "width": 10, + "height": 9, + "used_by_panels": [ + "radar" + ], + "used_by_nodes": [ + { + "panel_slug": "radar", + "traversal_index": 5, + "element_id": 268435520, + "state_id": null + }, + { + "panel_slug": "radar", + "traversal_index": 5, + "element_id": 268435520, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100667904, + "alpha_image_id": null + }, + "relative_path": "images/0x06001200.png", + "width": 60, + "height": 13, + "used_by_panels": [ + "combat", + "powerbar", + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 25, + "element_id": 2, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 25, + "element_id": 2, + "state_id": 0 + }, + { + "panel_slug": "powerbar", + "traversal_index": 19, + "element_id": 2, + "state_id": 268435523 + }, + { + "panel_slug": "powerbar", + "traversal_index": 19, + "element_id": 2, + "state_id": 268435524 + }, + { + "panel_slug": "smartbox", + "traversal_index": 18, + "element_id": 2, + "state_id": 268435523 + }, + { + "panel_slug": "smartbox", + "traversal_index": 18, + "element_id": 2, + "state_id": 268435524 + } + ] + }, + { + "key": { + "image_id": 100667918, + "alpha_image_id": null + }, + "relative_path": "images/0x0600120E.png", + "width": 23, + "height": 31, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 14, + "element_id": 268435869, + "state_id": 13 + } + ] + }, + { + "key": { + "image_id": 100667932, + "alpha_image_id": null + }, + "relative_path": "images/0x0600121C.png", + "width": 11, + "height": 61, + "used_by_panels": [ + "inventory", + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "inventory", + "traversal_index": 35, + "element_id": 2, + "state_id": null + }, + { + "panel_slug": "inventory", + "traversal_index": 35, + "element_id": 2, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 236, + "element_id": 2, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 236, + "element_id": 2, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100667933, + "alpha_image_id": null + }, + "relative_path": "images/0x0600121D.png", + "width": 11, + "height": 61, + "used_by_panels": [ + "inventory", + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "inventory", + "traversal_index": 34, + "element_id": 268435929, + "state_id": null + }, + { + "panel_slug": "inventory", + "traversal_index": 34, + "element_id": 268435929, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 235, + "element_id": 268435929, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 235, + "element_id": 268435929, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100668005, + "alpha_image_id": null + }, + "relative_path": "images/0x06001265.png", + "width": 300, + "height": 6, + "used_by_panels": [ + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 79, + "element_id": 268435731, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 79, + "element_id": 268435731, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100668006, + "alpha_image_id": null + }, + "relative_path": "images/0x06001266.png", + "width": 65, + "height": 32, + "used_by_panels": [ + "main_panel", + "quests" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 69, + "element_id": 268435733, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 69, + "element_id": 268435733, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 580, + "element_id": 268436838, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 580, + "element_id": 268436838, + "state_id": 1 + }, + { + "panel_slug": "quests", + "traversal_index": 45, + "element_id": 268436838, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 45, + "element_id": 268436838, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100668007, + "alpha_image_id": null + }, + "relative_path": "images/0x06001267.png", + "width": 65, + "height": 32, + "used_by_panels": [ + "main_panel", + "quests" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 69, + "element_id": 268435733, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 580, + "element_id": 268436838, + "state_id": 3 + }, + { + "panel_slug": "quests", + "traversal_index": 45, + "element_id": 268436838, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100668008, + "alpha_image_id": null + }, + "relative_path": "images/0x06001268.png", + "width": 65, + "height": 32, + "used_by_panels": [ + "main_panel", + "quests" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 69, + "element_id": 268435733, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 580, + "element_id": 268436838, + "state_id": 13 + }, + { + "panel_slug": "quests", + "traversal_index": 45, + "element_id": 268436838, + "state_id": 13 + } + ] + }, + { + "key": { + "image_id": 100668009, + "alpha_image_id": null + }, + "relative_path": "images/0x06001269.png", + "width": 54, + "height": 33, + "used_by_panels": [ + "main_panel", + "quests" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 68, + "element_id": 268435732, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 68, + "element_id": 268435732, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 579, + "element_id": 268436837, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 579, + "element_id": 268436837, + "state_id": 1 + }, + { + "panel_slug": "quests", + "traversal_index": 44, + "element_id": 268436837, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 44, + "element_id": 268436837, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100668010, + "alpha_image_id": null + }, + "relative_path": "images/0x0600126A.png", + "width": 54, + "height": 33, + "used_by_panels": [ + "main_panel", + "quests" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 68, + "element_id": 268435732, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 579, + "element_id": 268436837, + "state_id": 3 + }, + { + "panel_slug": "quests", + "traversal_index": 44, + "element_id": 268436837, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100668011, + "alpha_image_id": null + }, + "relative_path": "images/0x0600126B.png", + "width": 54, + "height": 33, + "used_by_panels": [ + "main_panel", + "quests" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 68, + "element_id": 268435732, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 579, + "element_id": 268436837, + "state_id": 13 + }, + { + "panel_slug": "quests", + "traversal_index": 44, + "element_id": 268436837, + "state_id": 13 + } + ] + }, + { + "key": { + "image_id": 100668012, + "alpha_image_id": null + }, + "relative_path": "images/0x0600126C.png", + "width": 24, + "height": 30, + "used_by_panels": [ + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 59, + "element_id": 268435726, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 59, + "element_id": 268435726, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100668013, + "alpha_image_id": null + }, + "relative_path": "images/0x0600126D.png", + "width": 24, + "height": 30, + "used_by_panels": [ + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 59, + "element_id": 268435726, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100668014, + "alpha_image_id": null + }, + "relative_path": "images/0x0600126E.png", + "width": 8, + "height": 18, + "used_by_panels": [ + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 78, + "element_id": 268435730, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 78, + "element_id": 268435730, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100668015, + "alpha_image_id": null + }, + "relative_path": "images/0x0600126F.png", + "width": 265, + "height": 100, + "used_by_panels": [ + "examine", + "main_panel", + "map", + "quests" + ], + "used_by_nodes": [ + { + "panel_slug": "examine", + "traversal_index": 23, + "element_id": 268435767, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 23, + "element_id": 268435767, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 62, + "element_id": 268435728, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 62, + "element_id": 268435728, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 65, + "element_id": 268435728, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 65, + "element_id": 268435728, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 274, + "element_id": 268435728, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 274, + "element_id": 268435728, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 573, + "element_id": 268435728, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 573, + "element_id": 268435728, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 576, + "element_id": 268435728, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 576, + "element_id": 268435728, + "state_id": 0 + }, + { + "panel_slug": "map", + "traversal_index": 14, + "element_id": 268435728, + "state_id": null + }, + { + "panel_slug": "map", + "traversal_index": 14, + "element_id": 268435728, + "state_id": 0 + }, + { + "panel_slug": "quests", + "traversal_index": 38, + "element_id": 268435728, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 38, + "element_id": 268435728, + "state_id": 0 + }, + { + "panel_slug": "quests", + "traversal_index": 41, + "element_id": 268435728, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 41, + "element_id": 268435728, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100668016, + "alpha_image_id": null + }, + "relative_path": "images/0x06001270.png", + "width": 300, + "height": 32, + "used_by_panels": [ + "main_panel", + "map", + "quests" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 67, + "element_id": 268435738, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 67, + "element_id": 268435738, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 276, + "element_id": 268435738, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 276, + "element_id": 268435738, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 578, + "element_id": 268435738, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 578, + "element_id": 268435738, + "state_id": 0 + }, + { + "panel_slug": "map", + "traversal_index": 16, + "element_id": 268435738, + "state_id": null + }, + { + "panel_slug": "map", + "traversal_index": 16, + "element_id": 268435738, + "state_id": 0 + }, + { + "panel_slug": "quests", + "traversal_index": 43, + "element_id": 268435738, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 43, + "element_id": 268435738, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100668017, + "alpha_image_id": null + }, + "relative_path": "images/0x06001271.png", + "width": 22, + "height": 243, + "used_by_panels": [ + "main_panel", + "map", + "quests" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 64, + "element_id": 268435736, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 64, + "element_id": 268435736, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 273, + "element_id": 268435736, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 273, + "element_id": 268435736, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 575, + "element_id": 268435736, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 575, + "element_id": 268435736, + "state_id": 0 + }, + { + "panel_slug": "map", + "traversal_index": 13, + "element_id": 268435736, + "state_id": null + }, + { + "panel_slug": "map", + "traversal_index": 13, + "element_id": 268435736, + "state_id": 0 + }, + { + "panel_slug": "quests", + "traversal_index": 40, + "element_id": 268435736, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 40, + "element_id": 268435736, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100668018, + "alpha_image_id": null + }, + "relative_path": "images/0x06001272.png", + "width": 21, + "height": 243, + "used_by_panels": [ + "main_panel", + "map", + "quests" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 66, + "element_id": 268435737, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 66, + "element_id": 268435737, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 275, + "element_id": 268435737, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 275, + "element_id": 268435737, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 577, + "element_id": 268435737, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 577, + "element_id": 268435737, + "state_id": 0 + }, + { + "panel_slug": "map", + "traversal_index": 15, + "element_id": 268435737, + "state_id": null + }, + { + "panel_slug": "map", + "traversal_index": 15, + "element_id": 268435737, + "state_id": 0 + }, + { + "panel_slug": "quests", + "traversal_index": 42, + "element_id": 268435737, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 42, + "element_id": 268435737, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100668019, + "alpha_image_id": null + }, + "relative_path": "images/0x06001273.png", + "width": 300, + "height": 33, + "used_by_panels": [ + "main_panel", + "map", + "quests" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 63, + "element_id": 268435735, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 63, + "element_id": 268435735, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 272, + "element_id": 268435735, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 272, + "element_id": 268435735, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 574, + "element_id": 268435735, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 574, + "element_id": 268435735, + "state_id": 0 + }, + { + "panel_slug": "map", + "traversal_index": 12, + "element_id": 268435735, + "state_id": null + }, + { + "panel_slug": "map", + "traversal_index": 12, + "element_id": 268435735, + "state_id": 0 + }, + { + "panel_slug": "quests", + "traversal_index": 39, + "element_id": 268435735, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 39, + "element_id": 268435735, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100668020, + "alpha_image_id": null + }, + "relative_path": "images/0x06001274.png", + "width": 20, + "height": 19, + "used_by_panels": [ + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 83, + "element_id": 268436596, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 83, + "element_id": 268436596, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 83, + "element_id": 268436596, + "state_id": 2 + } + ] + }, + { + "key": { + "image_id": 100668021, + "alpha_image_id": null + }, + "relative_path": "images/0x06001275.png", + "width": 20, + "height": 19, + "used_by_panels": [ + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 83, + "element_id": 268436596, + "state_id": 6 + }, + { + "panel_slug": "main_panel", + "traversal_index": 83, + "element_id": 268436596, + "state_id": 7 + } + ] + }, + { + "key": { + "image_id": 100668022, + "alpha_image_id": null + }, + "relative_path": "images/0x06001276.png", + "width": 273, + "height": 18, + "used_by_panels": [ + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 81, + "element_id": 268436595, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 81, + "element_id": 268436595, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100668025, + "alpha_image_id": null + }, + "relative_path": "images/0x06001279.png", + "width": 276, + "height": 30, + "used_by_panels": [ + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 60, + "element_id": 268435709, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 60, + "element_id": 268435709, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100668029, + "alpha_image_id": null + }, + "relative_path": "images/0x0600127D.png", + "width": 257, + "height": 267, + "used_by_panels": [ + "main_panel", + "map" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 279, + "element_id": 268435948, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 279, + "element_id": 268435948, + "state_id": 0 + }, + { + "panel_slug": "map", + "traversal_index": 19, + "element_id": 268435948, + "state_id": null + }, + { + "panel_slug": "map", + "traversal_index": 19, + "element_id": 268435948, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100668034, + "alpha_image_id": null + }, + "relative_path": "images/0x06001282.png", + "width": 24, + "height": 25, + "used_by_panels": [ + "main_panel", + "options" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 19, + "element_id": 268435708, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 157, + "element_id": 268435708, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 307, + "element_id": 268435984, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 17, + "element_id": 268435984, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100668035, + "alpha_image_id": null + }, + "relative_path": "images/0x06001283.png", + "width": 24, + "height": 25, + "used_by_panels": [ + "main_panel", + "options" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 19, + "element_id": 268435708, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 19, + "element_id": 268435708, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 157, + "element_id": 268435708, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 157, + "element_id": 268435708, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 307, + "element_id": 268435984, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 307, + "element_id": 268435984, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 17, + "element_id": 268435984, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 17, + "element_id": 268435984, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100668037, + "alpha_image_id": null + }, + "relative_path": "images/0x06001285.png", + "width": 120, + "height": 12, + "used_by_panels": [ + "options" + ], + "used_by_nodes": [ + { + "panel_slug": "options", + "traversal_index": 118, + "element_id": 268435996, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 118, + "element_id": 268435996, + "state_id": 0 + }, + { + "panel_slug": "options", + "traversal_index": 122, + "element_id": 268435996, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 122, + "element_id": 268435996, + "state_id": 0 + }, + { + "panel_slug": "options", + "traversal_index": 129, + "element_id": 268435996, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 129, + "element_id": 268435996, + "state_id": 0 + }, + { + "panel_slug": "options", + "traversal_index": 134, + "element_id": 268435996, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 134, + "element_id": 268435996, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100668038, + "alpha_image_id": null + }, + "relative_path": "images/0x06001286.png", + "width": 7, + "height": 12, + "used_by_panels": [ + "options" + ], + "used_by_nodes": [ + { + "panel_slug": "options", + "traversal_index": 119, + "element_id": 1, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 119, + "element_id": 1, + "state_id": 0 + }, + { + "panel_slug": "options", + "traversal_index": 123, + "element_id": 1, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 123, + "element_id": 1, + "state_id": 0 + }, + { + "panel_slug": "options", + "traversal_index": 130, + "element_id": 1, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 130, + "element_id": 1, + "state_id": 0 + }, + { + "panel_slug": "options", + "traversal_index": 135, + "element_id": 1, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 135, + "element_id": 1, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100668042, + "alpha_image_id": null + }, + "relative_path": "images/0x0600128A.png", + "width": 220, + "height": 77, + "used_by_panels": [ + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 22, + "element_id": 268435711, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 22, + "element_id": 268435711, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 32, + "element_id": 268435715, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 32, + "element_id": 268435715, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 52, + "element_id": 268435722, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 52, + "element_id": 268435722, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 160, + "element_id": 268435892, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 160, + "element_id": 268435892, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 170, + "element_id": 268435896, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 170, + "element_id": 268435896, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 189, + "element_id": 268435902, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 189, + "element_id": 268435902, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100668072, + "alpha_image_id": null + }, + "relative_path": "images/0x060012A8.png", + "width": 64, + "height": 20, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 79, + "element_id": 268435597, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 79, + "element_id": 268435597, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100668073, + "alpha_image_id": null + }, + "relative_path": "images/0x060012A9.png", + "width": 22, + "height": 20, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 49, + "element_id": 268435576, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 77, + "element_id": 268435595, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 108, + "element_id": 268435614, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 161, + "element_id": 268435670, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100668074, + "alpha_image_id": null + }, + "relative_path": "images/0x060012AA.png", + "width": 22, + "height": 20, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 49, + "element_id": 268435576, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 49, + "element_id": 268435576, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 77, + "element_id": 268435595, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 77, + "element_id": 268435595, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 108, + "element_id": 268435614, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 108, + "element_id": 268435614, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 161, + "element_id": 268435670, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 161, + "element_id": 268435670, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100668081, + "alpha_image_id": null + }, + "relative_path": "images/0x060012B1.png", + "width": 17, + "height": 19, + "used_by_panels": [ + "environment_panel", + "options" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 125, + "element_id": 268436302, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 125, + "element_id": 268436302, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 125, + "element_id": 268436302, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 142, + "element_id": 268436310, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 142, + "element_id": 268436310, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 142, + "element_id": 268436310, + "state_id": 2 + } + ] + }, + { + "key": { + "image_id": 100668082, + "alpha_image_id": null + }, + "relative_path": "images/0x060012B2.png", + "width": 17, + "height": 19, + "used_by_panels": [ + "environment_panel", + "options" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 125, + "element_id": 268436302, + "state_id": 6 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 125, + "element_id": 268436302, + "state_id": 7 + }, + { + "panel_slug": "options", + "traversal_index": 142, + "element_id": 268436310, + "state_id": 6 + }, + { + "panel_slug": "options", + "traversal_index": 142, + "element_id": 268436310, + "state_id": 7 + } + ] + }, + { + "key": { + "image_id": 100668083, + "alpha_image_id": null + }, + "relative_path": "images/0x060012B3.png", + "width": 100, + "height": 18, + "used_by_panels": [ + "environment_panel", + "options" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 124, + "element_id": 268436301, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 124, + "element_id": 268436301, + "state_id": 0 + }, + { + "panel_slug": "options", + "traversal_index": 141, + "element_id": 268436309, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 141, + "element_id": 268436309, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100668088, + "alpha_image_id": null + }, + "relative_path": "images/0x060012B8.png", + "width": 65, + "height": 14, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 143, + "element_id": 268435659, + "state_id": 13 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 144, + "element_id": 268435660, + "state_id": 13 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 158, + "element_id": 268435668, + "state_id": 13 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 159, + "element_id": 268435669, + "state_id": 13 + } + ] + }, + { + "key": { + "image_id": 100668089, + "alpha_image_id": null + }, + "relative_path": "images/0x060012B9.png", + "width": 65, + "height": 14, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 143, + "element_id": 268435659, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 144, + "element_id": 268435660, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100668090, + "alpha_image_id": null + }, + "relative_path": "images/0x060012BA.png", + "width": 65, + "height": 14, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 143, + "element_id": 268435659, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 143, + "element_id": 268435659, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 144, + "element_id": 268435660, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 144, + "element_id": 268435660, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100668092, + "alpha_image_id": null + }, + "relative_path": "images/0x060012BC.png", + "width": 2, + "height": 337, + "used_by_panels": [ + "main_panel", + "options" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 308, + "element_id": 268435977, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 308, + "element_id": 268435977, + "state_id": 0 + }, + { + "panel_slug": "options", + "traversal_index": 18, + "element_id": 268435977, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 18, + "element_id": 268435977, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100668101, + "alpha_image_id": null + }, + "relative_path": "images/0x060012C5.png", + "width": 292, + "height": 8, + "used_by_panels": [ + "options" + ], + "used_by_nodes": [ + { + "panel_slug": "options", + "traversal_index": 112, + "element_id": 268435991, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 112, + "element_id": 268435991, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100668102, + "alpha_image_id": null + }, + "relative_path": "images/0x060012C6.png", + "width": 7, + "height": 71, + "used_by_panels": [ + "examine" + ], + "used_by_nodes": [ + { + "panel_slug": "examine", + "traversal_index": 44, + "element_id": 268435781, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 44, + "element_id": 268435781, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100668244, + "alpha_image_id": null + }, + "relative_path": "images/0x06001354.png", + "width": 60, + "height": 13, + "used_by_panels": [ + "powerbar", + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "powerbar", + "traversal_index": 19, + "element_id": 2, + "state_id": null + }, + { + "panel_slug": "powerbar", + "traversal_index": 19, + "element_id": 2, + "state_id": 268435522 + }, + { + "panel_slug": "smartbox", + "traversal_index": 18, + "element_id": 2, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 18, + "element_id": 2, + "state_id": 268435522 + } + ] + }, + { + "key": { + "image_id": 100668307, + "alpha_image_id": null + }, + "relative_path": "images/0x06001393.png", + "width": 24, + "height": 25, + "used_by_panels": [ + "character", + "main_panel", + "map", + "negative_effects", + "positive_effects", + "quests", + "spellbook", + "vitae" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 13, + "element_id": 268436010, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 13, + "element_id": 268436010, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 85, + "element_id": 268435708, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 85, + "element_id": 268435708, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 97, + "element_id": 268435708, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 97, + "element_id": 268435708, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 117, + "element_id": 268435708, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 117, + "element_id": 268435708, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 137, + "element_id": 268435708, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 137, + "element_id": 268435708, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 143, + "element_id": 268435819, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 143, + "element_id": 268435819, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 196, + "element_id": 268435708, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 196, + "element_id": 268435708, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 269, + "element_id": 268435957, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 269, + "element_id": 268435957, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 414, + "element_id": 268436010, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 414, + "element_id": 268436010, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 548, + "element_id": 268436834, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 548, + "element_id": 268436834, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 808, + "element_id": 268436139, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 808, + "element_id": 268436139, + "state_id": 1 + }, + { + "panel_slug": "map", + "traversal_index": 9, + "element_id": 268435957, + "state_id": null + }, + { + "panel_slug": "map", + "traversal_index": 9, + "element_id": 268435957, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 1, + "element_id": 268435708, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 1, + "element_id": 268435708, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 21, + "element_id": 268435708, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 21, + "element_id": 268435708, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 41, + "element_id": 268435708, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 41, + "element_id": 268435708, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 1, + "element_id": 268435708, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 1, + "element_id": 268435708, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 21, + "element_id": 268435708, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 21, + "element_id": 268435708, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 41, + "element_id": 268435708, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 41, + "element_id": 268435708, + "state_id": 1 + }, + { + "panel_slug": "quests", + "traversal_index": 13, + "element_id": 268436834, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 13, + "element_id": 268436834, + "state_id": 1 + }, + { + "panel_slug": "spellbook", + "traversal_index": 9, + "element_id": 268436139, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 9, + "element_id": 268436139, + "state_id": 1 + }, + { + "panel_slug": "vitae", + "traversal_index": 1, + "element_id": 268435708, + "state_id": null + }, + { + "panel_slug": "vitae", + "traversal_index": 1, + "element_id": 268435708, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100668308, + "alpha_image_id": null + }, + "relative_path": "images/0x06001394.png", + "width": 24, + "height": 25, + "used_by_panels": [ + "character", + "main_panel", + "map", + "negative_effects", + "positive_effects", + "quests", + "spellbook", + "vitae" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 13, + "element_id": 268436010, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 85, + "element_id": 268435708, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 97, + "element_id": 268435708, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 117, + "element_id": 268435708, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 137, + "element_id": 268435708, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 143, + "element_id": 268435819, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 196, + "element_id": 268435708, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 269, + "element_id": 268435957, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 414, + "element_id": 268436010, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 548, + "element_id": 268436834, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 808, + "element_id": 268436139, + "state_id": 3 + }, + { + "panel_slug": "map", + "traversal_index": 9, + "element_id": 268435957, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 1, + "element_id": 268435708, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 21, + "element_id": 268435708, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 41, + "element_id": 268435708, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 1, + "element_id": 268435708, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 21, + "element_id": 268435708, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 41, + "element_id": 268435708, + "state_id": 3 + }, + { + "panel_slug": "quests", + "traversal_index": 13, + "element_id": 268436834, + "state_id": 3 + }, + { + "panel_slug": "spellbook", + "traversal_index": 9, + "element_id": 268436139, + "state_id": 3 + }, + { + "panel_slug": "vitae", + "traversal_index": 1, + "element_id": 268435708, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100668309, + "alpha_image_id": null + }, + "relative_path": "images/0x06001395.png", + "width": 300, + "height": 88, + "used_by_panels": [ + "main_panel", + "negative_effects", + "positive_effects" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 107, + "element_id": 268435749, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 107, + "element_id": 268435749, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 127, + "element_id": 268435749, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 127, + "element_id": 268435749, + "state_id": 0 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 11, + "element_id": 268435749, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 11, + "element_id": 268435749, + "state_id": 0 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 31, + "element_id": 268435749, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 31, + "element_id": 268435749, + "state_id": 0 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 51, + "element_id": 268435749, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 51, + "element_id": 268435749, + "state_id": 0 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 11, + "element_id": 268435749, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 11, + "element_id": 268435749, + "state_id": 0 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 31, + "element_id": 268435749, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 31, + "element_id": 268435749, + "state_id": 0 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 51, + "element_id": 268435749, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 51, + "element_id": 268435749, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100668310, + "alpha_image_id": null + }, + "relative_path": "images/0x06001396.png", + "width": 300, + "height": 32, + "used_by_panels": [ + "negative_effects", + "positive_effects" + ], + "used_by_nodes": [ + { + "panel_slug": "negative_effects", + "traversal_index": 60, + "element_id": 268435752, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 60, + "element_id": 268435752, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 60, + "element_id": 268435752, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 60, + "element_id": 268435752, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100668311, + "alpha_image_id": null + }, + "relative_path": "images/0x06001397.png", + "width": 300, + "height": 32, + "used_by_panels": [ + "negative_effects", + "positive_effects" + ], + "used_by_nodes": [ + { + "panel_slug": "negative_effects", + "traversal_index": 60, + "element_id": 268435752, + "state_id": 6 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 60, + "element_id": 268435752, + "state_id": 6 + } + ] + }, + { + "key": { + "image_id": 100668312, + "alpha_image_id": null + }, + "relative_path": "images/0x06001398.png", + "width": 300, + "height": 32, + "used_by_panels": [ + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 146, + "element_id": 268435822, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 146, + "element_id": 268435822, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100668445, + "alpha_image_id": null + }, + "relative_path": "images/0x0600141D.png", + "width": 24, + "height": 25, + "used_by_panels": [ + "main_panel", + "social" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 644, + "element_id": 268436112, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 644, + "element_id": 268436112, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 17, + "element_id": 268436112, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 17, + "element_id": 268436112, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100668446, + "alpha_image_id": null + }, + "relative_path": "images/0x0600141E.png", + "width": 24, + "height": 25, + "used_by_panels": [ + "main_panel", + "social" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 644, + "element_id": 268436112, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 17, + "element_id": 268436112, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100668448, + "alpha_image_id": null + }, + "relative_path": "images/0x06001420.png", + "width": 300, + "height": 9, + "used_by_panels": [ + "character", + "main_panel", + "social" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 119, + "element_id": 268436784, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 119, + "element_id": 268436784, + "state_id": 0 + }, + { + "panel_slug": "character", + "traversal_index": 129, + "element_id": 268436788, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 129, + "element_id": 268436788, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 520, + "element_id": 268436784, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 520, + "element_id": 268436784, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 530, + "element_id": 268436788, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 530, + "element_id": 268436788, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 650, + "element_id": 268436052, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 650, + "element_id": 268436052, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 658, + "element_id": 268436057, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 658, + "element_id": 268436057, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 665, + "element_id": 268436061, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 665, + "element_id": 268436061, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 693, + "element_id": 268436077, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 693, + "element_id": 268436077, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 759, + "element_id": 268436808, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 759, + "element_id": 268436808, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 781, + "element_id": 268436052, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 781, + "element_id": 268436052, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 792, + "element_id": 268436061, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 792, + "element_id": 268436061, + "state_id": 0 + }, + { + "panel_slug": "social", + "traversal_index": 23, + "element_id": 268436052, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 23, + "element_id": 268436052, + "state_id": 0 + }, + { + "panel_slug": "social", + "traversal_index": 31, + "element_id": 268436057, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 31, + "element_id": 268436057, + "state_id": 0 + }, + { + "panel_slug": "social", + "traversal_index": 38, + "element_id": 268436061, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 38, + "element_id": 268436061, + "state_id": 0 + }, + { + "panel_slug": "social", + "traversal_index": 66, + "element_id": 268436077, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 66, + "element_id": 268436077, + "state_id": 0 + }, + { + "panel_slug": "social", + "traversal_index": 132, + "element_id": 268436808, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 132, + "element_id": 268436808, + "state_id": 0 + }, + { + "panel_slug": "social", + "traversal_index": 154, + "element_id": 268436052, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 154, + "element_id": 268436052, + "state_id": 0 + }, + { + "panel_slug": "social", + "traversal_index": 165, + "element_id": 268436061, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 165, + "element_id": 268436061, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100669717, + "alpha_image_id": null + }, + "relative_path": "images/0x06001915.png", + "width": 46, + "height": 17, + "used_by_panels": [ + "main_chat" + ], + "used_by_nodes": [ + { + "panel_slug": "main_chat", + "traversal_index": 38, + "element_id": 268435481, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 38, + "element_id": 268435481, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100669718, + "alpha_image_id": null + }, + "relative_path": "images/0x06001916.png", + "width": 46, + "height": 17, + "used_by_panels": [ + "main_chat" + ], + "used_by_nodes": [ + { + "panel_slug": "main_chat", + "traversal_index": 38, + "element_id": 268435481, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100669721, + "alpha_image_id": null + }, + "relative_path": "images/0x06001919.png", + "width": 60, + "height": 13, + "used_by_panels": [ + "combat" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 22, + "element_id": 4, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 22, + "element_id": 4, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100669731, + "alpha_image_id": null + }, + "relative_path": "images/0x06001923.png", + "width": 12, + "height": 14, + "used_by_panels": [ + "combat" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 26, + "element_id": 1, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 26, + "element_id": 1, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100669735, + "alpha_image_id": null + }, + "relative_path": "images/0x06001927.png", + "width": 65, + "height": 14, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 158, + "element_id": 268435668, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 158, + "element_id": 268435668, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 159, + "element_id": 268435669, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 159, + "element_id": 268435669, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100669736, + "alpha_image_id": null + }, + "relative_path": "images/0x06001928.png", + "width": 65, + "height": 14, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 158, + "element_id": 268435668, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 159, + "element_id": 268435669, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100669748, + "alpha_image_id": null + }, + "relative_path": "images/0x06001934.png", + "width": 46, + "height": 17, + "used_by_panels": [ + "main_chat" + ], + "used_by_nodes": [ + { + "panel_slug": "main_chat", + "traversal_index": 38, + "element_id": 268435481, + "state_id": 13 + } + ] + }, + { + "key": { + "image_id": 100669751, + "alpha_image_id": null + }, + "relative_path": "images/0x06001937.png", + "width": 146, + "height": 31, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 17, + "element_id": 268435872, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 17, + "element_id": 268435872, + "state_id": 268435467 + } + ] + }, + { + "key": { + "image_id": 100669752, + "alpha_image_id": null + }, + "relative_path": "images/0x06001938.png", + "width": 10, + "height": 9, + "used_by_panels": [ + "radar" + ], + "used_by_nodes": [ + { + "panel_slug": "radar", + "traversal_index": 6, + "element_id": 268435521, + "state_id": null + }, + { + "panel_slug": "radar", + "traversal_index": 6, + "element_id": 268435521, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100669754, + "alpha_image_id": null + }, + "relative_path": "images/0x0600193A.png", + "width": 10, + "height": 9, + "used_by_panels": [ + "radar" + ], + "used_by_nodes": [ + { + "panel_slug": "radar", + "traversal_index": 7, + "element_id": 268435522, + "state_id": null + }, + { + "panel_slug": "radar", + "traversal_index": 7, + "element_id": 268435522, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100669756, + "alpha_image_id": null + }, + "relative_path": "images/0x0600193C.png", + "width": 10, + "height": 9, + "used_by_panels": [ + "radar" + ], + "used_by_nodes": [ + { + "panel_slug": "radar", + "traversal_index": 8, + "element_id": 268435523, + "state_id": null + }, + { + "panel_slug": "radar", + "traversal_index": 8, + "element_id": 268435523, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100669758, + "alpha_image_id": null + }, + "relative_path": "images/0x0600193E.png", + "width": 146, + "height": 31, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 18, + "element_id": 268435873, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 18, + "element_id": 268435873, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100669759, + "alpha_image_id": null + }, + "relative_path": "images/0x0600193F.png", + "width": 146, + "height": 31, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 19, + "element_id": 2, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 19, + "element_id": 2, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100669787, + "alpha_image_id": null + }, + "relative_path": "images/0x0600195B.png", + "width": 60, + "height": 13, + "used_by_panels": [ + "powerbar", + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "powerbar", + "traversal_index": 19, + "element_id": 2, + "state_id": 268435525 + }, + { + "panel_slug": "smartbox", + "traversal_index": 18, + "element_id": 2, + "state_id": 268435525 + } + ] + }, + { + "key": { + "image_id": 100670916, + "alpha_image_id": null + }, + "relative_path": "images/0x06001DC4.png", + "width": 60, + "height": 14, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 76, + "element_id": 268435594, + "state_id": 268435461 + } + ] + }, + { + "key": { + "image_id": 100670917, + "alpha_image_id": null + }, + "relative_path": "images/0x06001DC5.png", + "width": 60, + "height": 14, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 76, + "element_id": 268435594, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100670918, + "alpha_image_id": null + }, + "relative_path": "images/0x06001DC6.png", + "width": 60, + "height": 14, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 76, + "element_id": 268435594, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 76, + "element_id": 268435594, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100671445, + "alpha_image_id": null + }, + "relative_path": "images/0x06001FD5.png", + "width": 64, + "height": 64, + "used_by_panels": [ + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 152, + "element_id": 268435828, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 152, + "element_id": 268435828, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100671446, + "alpha_image_id": null + }, + "relative_path": "images/0x06001FD6.png", + "width": 280, + "height": 12, + "used_by_panels": [ + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 148, + "element_id": 268435824, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 148, + "element_id": 268435824, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100671447, + "alpha_image_id": null + }, + "relative_path": "images/0x06001FD7.png", + "width": 280, + "height": 12, + "used_by_panels": [ + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 149, + "element_id": 268435825, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 149, + "element_id": 268435825, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100671448, + "alpha_image_id": null + }, + "relative_path": "images/0x06001FD8.png", + "width": 12, + "height": 256, + "used_by_panels": [ + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 150, + "element_id": 268435826, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 150, + "element_id": 268435826, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100671449, + "alpha_image_id": null + }, + "relative_path": "images/0x06001FD9.png", + "width": 12, + "height": 256, + "used_by_panels": [ + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 151, + "element_id": 268435827, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 151, + "element_id": 268435827, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100672186, + "alpha_image_id": null + }, + "relative_path": "images/0x060022BA.png", + "width": 300, + "height": 100, + "used_by_panels": [ + "main_panel", + "quests" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 572, + "element_id": 268436835, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 572, + "element_id": 268436835, + "state_id": 0 + }, + { + "panel_slug": "quests", + "traversal_index": 37, + "element_id": 268436835, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 37, + "element_id": 268436835, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100672213, + "alpha_image_id": null + }, + "relative_path": "images/0x060022D5.png", + "width": 146, + "height": 31, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 20, + "element_id": 268435874, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 20, + "element_id": 268435874, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100672214, + "alpha_image_id": null + }, + "relative_path": "images/0x060022D6.png", + "width": 146, + "height": 31, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 21, + "element_id": 2, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 21, + "element_id": 2, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100672324, + "alpha_image_id": null + }, + "relative_path": "images/0x06002344.png", + "width": 94, + "height": 22, + "used_by_panels": [ + "environment_panel", + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 86, + "element_id": 268435604, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 86, + "element_id": 268435604, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 153, + "element_id": 268435829, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 153, + "element_id": 268435829, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 154, + "element_id": 268435830, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 154, + "element_id": 268435830, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 155, + "element_id": 268435831, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 155, + "element_id": 268435831, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100672325, + "alpha_image_id": null + }, + "relative_path": "images/0x06002345.png", + "width": 94, + "height": 22, + "used_by_panels": [ + "environment_panel", + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 86, + "element_id": 268435604, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 153, + "element_id": 268435829, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 154, + "element_id": 268435830, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 155, + "element_id": 268435831, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100672326, + "alpha_image_id": null + }, + "relative_path": "images/0x06002346.png", + "width": 94, + "height": 22, + "used_by_panels": [ + "environment_panel", + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 86, + "element_id": 268435604, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 153, + "element_id": 268435829, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 154, + "element_id": 268435830, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 155, + "element_id": 268435831, + "state_id": 13 + } + ] + }, + { + "key": { + "image_id": 100672327, + "alpha_image_id": null + }, + "relative_path": "images/0x06002347.png", + "width": 94, + "height": 22, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 99, + "element_id": 268435611, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 99, + "element_id": 268435611, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100672328, + "alpha_image_id": null + }, + "relative_path": "images/0x06002348.png", + "width": 94, + "height": 22, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 99, + "element_id": 268435611, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100672329, + "alpha_image_id": null + }, + "relative_path": "images/0x06002349.png", + "width": 94, + "height": 22, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 99, + "element_id": 268435611, + "state_id": 13 + } + ] + }, + { + "key": { + "image_id": 100673314, + "alpha_image_id": null + }, + "relative_path": "images/0x06002722.png", + "width": 300, + "height": 113, + "used_by_panels": [ + "main_panel", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 818, + "element_id": 268436119, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 818, + "element_id": 268436119, + "state_id": 0 + }, + { + "panel_slug": "spellbook", + "traversal_index": 19, + "element_id": 268436119, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 19, + "element_id": 268436119, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100682828, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C4C.png", + "width": 64, + "height": 22, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 47, + "element_id": 268435574, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 47, + "element_id": 268435574, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 128, + "element_id": 268435650, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 128, + "element_id": 268435650, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 129, + "element_id": 268435651, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 129, + "element_id": 268435651, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 141, + "element_id": 268435657, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 141, + "element_id": 268435657, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 142, + "element_id": 268435658, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 142, + "element_id": 268435658, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 156, + "element_id": 268435666, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 156, + "element_id": 268435666, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 157, + "element_id": 268435667, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 157, + "element_id": 268435667, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100682829, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C4D.png", + "width": 64, + "height": 22, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 47, + "element_id": 268435574, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 128, + "element_id": 268435650, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 129, + "element_id": 268435651, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 141, + "element_id": 268435657, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 142, + "element_id": 268435658, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 156, + "element_id": 268435666, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 157, + "element_id": 268435667, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100682830, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C4E.png", + "width": 64, + "height": 22, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 47, + "element_id": 268435574, + "state_id": 13 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 128, + "element_id": 268435650, + "state_id": 13 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 129, + "element_id": 268435651, + "state_id": 13 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 141, + "element_id": 268435657, + "state_id": 13 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 142, + "element_id": 268435658, + "state_id": 13 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 156, + "element_id": 268435666, + "state_id": 13 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 157, + "element_id": 268435667, + "state_id": 13 + } + ] + }, + { + "key": { + "image_id": 100682847, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C5F.png", + "width": 16, + "height": 32, + "used_by_panels": [ + "character", + "examine", + "floating_chat_1", + "floating_chat_2", + "floating_chat_3", + "floating_chat_4", + "inventory", + "main_chat", + "main_panel", + "negative_effects", + "options", + "positive_effects", + "quests", + "social", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 33, + "element_id": 268436030, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 33, + "element_id": 268436030, + "state_id": 0 + }, + { + "panel_slug": "character", + "traversal_index": 84, + "element_id": 268436030, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 84, + "element_id": 268436030, + "state_id": 0 + }, + { + "panel_slug": "character", + "traversal_index": 122, + "element_id": 268436787, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 122, + "element_id": 268436787, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 25, + "element_id": 268435773, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 25, + "element_id": 268435773, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 34, + "element_id": 268436590, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 34, + "element_id": 268436590, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 71, + "element_id": 268435812, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 71, + "element_id": 268435812, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 16, + "element_id": 268435474, + "state_id": null + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 16, + "element_id": 268435474, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 16, + "element_id": 268435474, + "state_id": null + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 16, + "element_id": 268435474, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 16, + "element_id": 268435474, + "state_id": null + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 16, + "element_id": 268435474, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 16, + "element_id": 268435474, + "state_id": null + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 16, + "element_id": 268435474, + "state_id": 0 + }, + { + "panel_slug": "inventory", + "traversal_index": 38, + "element_id": 268435915, + "state_id": null + }, + { + "panel_slug": "inventory", + "traversal_index": 38, + "element_id": 268435915, + "state_id": 0 + }, + { + "panel_slug": "inventory", + "traversal_index": 48, + "element_id": 268435911, + "state_id": null + }, + { + "panel_slug": "inventory", + "traversal_index": 48, + "element_id": 268435911, + "state_id": 0 + }, + { + "panel_slug": "main_chat", + "traversal_index": 20, + "element_id": 268435474, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 20, + "element_id": 268435474, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 37, + "element_id": 268435720, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 37, + "element_id": 268435720, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 71, + "element_id": 268436618, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 71, + "element_id": 268436618, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 89, + "element_id": 268435742, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 89, + "element_id": 268435742, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 100, + "element_id": 268435748, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 100, + "element_id": 268435748, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 109, + "element_id": 268435751, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 109, + "element_id": 268435751, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 120, + "element_id": 268435748, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 120, + "element_id": 268435748, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 129, + "element_id": 268435751, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 129, + "element_id": 268435751, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 173, + "element_id": 268435899, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 173, + "element_id": 268435899, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 239, + "element_id": 268435915, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 239, + "element_id": 268435915, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 249, + "element_id": 268435911, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 249, + "element_id": 268435911, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 311, + "element_id": 268435963, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 311, + "element_id": 268435963, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 361, + "element_id": 268435969, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 361, + "element_id": 268435969, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 382, + "element_id": 268435969, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 382, + "element_id": 268435969, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 434, + "element_id": 268436030, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 434, + "element_id": 268436030, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 485, + "element_id": 268436030, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 485, + "element_id": 268436030, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 523, + "element_id": 268436787, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 523, + "element_id": 268436787, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 553, + "element_id": 268436944, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 553, + "element_id": 268436944, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 588, + "element_id": 268436846, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 588, + "element_id": 268436846, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 616, + "element_id": 268436868, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 616, + "element_id": 268436868, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 669, + "element_id": 268436065, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 669, + "element_id": 268436065, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 713, + "element_id": 268436090, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 713, + "element_id": 268436090, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 748, + "element_id": 268436803, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 748, + "element_id": 268436803, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 774, + "element_id": 268436760, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 774, + "element_id": 268436760, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 811, + "element_id": 268436118, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 811, + "element_id": 268436118, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 851, + "element_id": 268436581, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 851, + "element_id": 268436581, + "state_id": 0 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 4, + "element_id": 268435748, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 4, + "element_id": 268435748, + "state_id": 0 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 13, + "element_id": 268435751, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 13, + "element_id": 268435751, + "state_id": 0 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 24, + "element_id": 268435748, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 24, + "element_id": 268435748, + "state_id": 0 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 33, + "element_id": 268435751, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 33, + "element_id": 268435751, + "state_id": 0 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 44, + "element_id": 268435748, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 44, + "element_id": 268435748, + "state_id": 0 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 53, + "element_id": 268435751, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 53, + "element_id": 268435751, + "state_id": 0 + }, + { + "panel_slug": "options", + "traversal_index": 21, + "element_id": 268435963, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 21, + "element_id": 268435963, + "state_id": 0 + }, + { + "panel_slug": "options", + "traversal_index": 71, + "element_id": 268435969, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 71, + "element_id": 268435969, + "state_id": 0 + }, + { + "panel_slug": "options", + "traversal_index": 92, + "element_id": 268435969, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 92, + "element_id": 268435969, + "state_id": 0 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 4, + "element_id": 268435748, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 4, + "element_id": 268435748, + "state_id": 0 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 13, + "element_id": 268435751, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 13, + "element_id": 268435751, + "state_id": 0 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 24, + "element_id": 268435748, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 24, + "element_id": 268435748, + "state_id": 0 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 33, + "element_id": 268435751, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 33, + "element_id": 268435751, + "state_id": 0 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 44, + "element_id": 268435748, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 44, + "element_id": 268435748, + "state_id": 0 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 53, + "element_id": 268435751, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 53, + "element_id": 268435751, + "state_id": 0 + }, + { + "panel_slug": "quests", + "traversal_index": 18, + "element_id": 268436944, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 18, + "element_id": 268436944, + "state_id": 0 + }, + { + "panel_slug": "quests", + "traversal_index": 53, + "element_id": 268436846, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 53, + "element_id": 268436846, + "state_id": 0 + }, + { + "panel_slug": "quests", + "traversal_index": 81, + "element_id": 268436868, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 81, + "element_id": 268436868, + "state_id": 0 + }, + { + "panel_slug": "social", + "traversal_index": 42, + "element_id": 268436065, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 42, + "element_id": 268436065, + "state_id": 0 + }, + { + "panel_slug": "social", + "traversal_index": 86, + "element_id": 268436090, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 86, + "element_id": 268436090, + "state_id": 0 + }, + { + "panel_slug": "social", + "traversal_index": 121, + "element_id": 268436803, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 121, + "element_id": 268436803, + "state_id": 0 + }, + { + "panel_slug": "social", + "traversal_index": 147, + "element_id": 268436760, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 147, + "element_id": 268436760, + "state_id": 0 + }, + { + "panel_slug": "spellbook", + "traversal_index": 12, + "element_id": 268436118, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 12, + "element_id": 268436118, + "state_id": 0 + }, + { + "panel_slug": "spellbook", + "traversal_index": 52, + "element_id": 268436581, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 52, + "element_id": 268436581, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100682848, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C60.png", + "width": 16, + "height": 3, + "used_by_panels": [ + "character", + "examine", + "floating_chat_1", + "floating_chat_2", + "floating_chat_3", + "floating_chat_4", + "inventory", + "main_chat", + "main_panel", + "negative_effects", + "options", + "positive_effects", + "quests", + "social", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 35, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 35, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "character", + "traversal_index": 86, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 86, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "character", + "traversal_index": 124, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 124, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "examine", + "traversal_index": 27, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 27, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "examine", + "traversal_index": 36, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 36, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "examine", + "traversal_index": 73, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 73, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 18, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 18, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 18, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 18, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 18, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 18, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 18, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 18, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "inventory", + "traversal_index": 40, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "inventory", + "traversal_index": 40, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "inventory", + "traversal_index": 50, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "inventory", + "traversal_index": 50, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "main_chat", + "traversal_index": 22, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 22, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 39, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 39, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 73, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 73, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 91, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 91, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 102, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 102, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 111, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 111, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 122, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 122, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 131, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 131, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 175, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 175, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 241, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 241, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 251, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 251, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 313, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 313, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 363, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 363, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 384, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 384, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 436, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 436, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 487, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 487, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 525, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 525, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 555, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 555, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 590, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 590, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 618, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 618, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 671, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 671, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 715, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 715, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 750, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 750, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 776, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 776, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 813, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 813, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 853, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 853, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 6, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 6, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 15, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 15, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 26, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 26, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 35, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 35, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 46, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 46, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 55, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 55, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 23, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 23, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 73, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 73, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 94, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 94, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 6, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 6, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 15, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 15, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 26, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 26, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 35, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 35, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 46, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 46, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 55, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 55, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "quests", + "traversal_index": 20, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 20, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "quests", + "traversal_index": 55, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 55, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "quests", + "traversal_index": 83, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 83, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 44, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 44, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 88, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 88, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 123, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 123, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 149, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 149, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "spellbook", + "traversal_index": 14, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 14, + "element_id": 268436324, + "state_id": 1 + }, + { + "panel_slug": "spellbook", + "traversal_index": 54, + "element_id": 268436324, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 54, + "element_id": 268436324, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100682849, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C61.png", + "width": 16, + "height": 3, + "used_by_panels": [ + "character", + "examine", + "floating_chat_1", + "floating_chat_2", + "floating_chat_3", + "floating_chat_4", + "inventory", + "main_chat", + "main_panel", + "negative_effects", + "options", + "positive_effects", + "quests", + "social", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 35, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "character", + "traversal_index": 86, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "character", + "traversal_index": 124, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "examine", + "traversal_index": 27, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "examine", + "traversal_index": 36, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "examine", + "traversal_index": 73, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 18, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 18, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 18, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 18, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "inventory", + "traversal_index": 40, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "inventory", + "traversal_index": 50, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "main_chat", + "traversal_index": 22, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 39, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 73, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 91, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 102, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 111, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 122, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 131, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 175, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 241, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 251, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 313, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 363, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 384, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 436, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 487, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 525, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 555, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 590, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 618, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 671, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 715, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 750, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 776, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 813, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 853, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 6, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 15, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 26, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 35, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 46, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 55, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 23, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 73, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 94, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 6, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 15, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 26, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 35, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 46, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 55, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "quests", + "traversal_index": 20, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "quests", + "traversal_index": 55, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "quests", + "traversal_index": 83, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 44, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 88, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 123, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 149, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "spellbook", + "traversal_index": 14, + "element_id": 268436324, + "state_id": 2 + }, + { + "panel_slug": "spellbook", + "traversal_index": 54, + "element_id": 268436324, + "state_id": 2 + } + ] + }, + { + "key": { + "image_id": 100682850, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C62.png", + "width": 16, + "height": 3, + "used_by_panels": [ + "character", + "examine", + "floating_chat_1", + "floating_chat_2", + "floating_chat_3", + "floating_chat_4", + "inventory", + "main_chat", + "main_panel", + "negative_effects", + "options", + "positive_effects", + "quests", + "social", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 35, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "character", + "traversal_index": 86, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "character", + "traversal_index": 124, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "examine", + "traversal_index": 27, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "examine", + "traversal_index": 36, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "examine", + "traversal_index": 73, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 18, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 18, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 18, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 18, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "inventory", + "traversal_index": 40, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "inventory", + "traversal_index": 50, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "main_chat", + "traversal_index": 22, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 39, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 73, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 91, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 102, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 111, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 122, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 131, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 175, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 241, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 251, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 313, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 363, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 384, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 436, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 487, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 525, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 555, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 590, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 618, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 671, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 715, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 750, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 776, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 813, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 853, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 6, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 15, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 26, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 35, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 46, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 55, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 23, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 73, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 94, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 6, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 15, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 26, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 35, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 46, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 55, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "quests", + "traversal_index": 20, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "quests", + "traversal_index": 55, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "quests", + "traversal_index": 83, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 44, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 88, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 123, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 149, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "spellbook", + "traversal_index": 14, + "element_id": 268436324, + "state_id": 3 + }, + { + "panel_slug": "spellbook", + "traversal_index": 54, + "element_id": 268436324, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100682851, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C63.png", + "width": 16, + "height": 16, + "used_by_panels": [ + "character", + "examine", + "floating_chat_1", + "floating_chat_2", + "floating_chat_3", + "floating_chat_4", + "inventory", + "main_chat", + "main_panel", + "negative_effects", + "options", + "positive_effects", + "quests", + "social", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 36, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 36, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "character", + "traversal_index": 87, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 87, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "character", + "traversal_index": 125, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 125, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "examine", + "traversal_index": 28, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 28, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "examine", + "traversal_index": 37, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 37, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "examine", + "traversal_index": 74, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 74, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 19, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 19, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 19, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 19, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 19, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 19, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 19, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 19, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "inventory", + "traversal_index": 41, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "inventory", + "traversal_index": 41, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "inventory", + "traversal_index": 51, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "inventory", + "traversal_index": 51, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "main_chat", + "traversal_index": 23, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 23, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 40, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 40, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 74, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 74, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 92, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 92, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 103, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 103, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 112, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 112, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 123, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 123, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 132, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 132, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 176, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 176, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 242, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 242, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 252, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 252, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 314, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 314, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 364, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 364, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 385, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 385, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 437, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 437, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 488, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 488, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 526, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 526, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 556, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 556, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 591, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 591, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 619, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 619, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 672, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 672, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 716, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 716, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 751, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 751, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 777, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 777, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 814, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 814, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 854, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 854, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 7, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 7, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 16, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 16, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 27, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 27, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 36, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 36, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 47, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 47, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 56, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 56, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 24, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 24, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 74, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 74, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 95, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 95, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 7, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 7, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 16, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 16, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 27, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 27, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 36, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 36, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 47, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 47, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 56, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 56, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "quests", + "traversal_index": 21, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 21, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "quests", + "traversal_index": 56, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 56, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "quests", + "traversal_index": 84, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 84, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 45, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 45, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 89, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 89, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 124, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 124, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 150, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 150, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "spellbook", + "traversal_index": 15, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 15, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "spellbook", + "traversal_index": 55, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 55, + "element_id": 268436325, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100682852, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C64.png", + "width": 16, + "height": 16, + "used_by_panels": [ + "character", + "examine", + "floating_chat_1", + "floating_chat_2", + "floating_chat_3", + "floating_chat_4", + "inventory", + "main_chat", + "main_panel", + "negative_effects", + "options", + "positive_effects", + "quests", + "social", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 36, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "character", + "traversal_index": 87, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "character", + "traversal_index": 125, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "examine", + "traversal_index": 28, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "examine", + "traversal_index": 37, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "examine", + "traversal_index": 74, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 19, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 19, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 19, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 19, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "inventory", + "traversal_index": 41, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "inventory", + "traversal_index": 51, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "main_chat", + "traversal_index": 23, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 40, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 74, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 92, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 103, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 112, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 123, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 132, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 176, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 242, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 252, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 314, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 364, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 385, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 437, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 488, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 526, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 556, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 591, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 619, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 672, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 716, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 751, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 777, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 814, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 854, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 7, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 16, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 27, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 36, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 47, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 56, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 24, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 74, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 95, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 7, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 16, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 27, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 36, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 47, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 56, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "quests", + "traversal_index": 21, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "quests", + "traversal_index": 56, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "quests", + "traversal_index": 84, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 45, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 89, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 124, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 150, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "spellbook", + "traversal_index": 15, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "spellbook", + "traversal_index": 55, + "element_id": 268436325, + "state_id": 2 + } + ] + }, + { + "key": { + "image_id": 100682853, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C65.png", + "width": 16, + "height": 16, + "used_by_panels": [ + "character", + "examine", + "floating_chat_1", + "floating_chat_2", + "floating_chat_3", + "floating_chat_4", + "inventory", + "main_chat", + "main_panel", + "negative_effects", + "options", + "positive_effects", + "quests", + "social", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 36, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "character", + "traversal_index": 87, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "character", + "traversal_index": 125, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "examine", + "traversal_index": 28, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "examine", + "traversal_index": 37, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "examine", + "traversal_index": 74, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 19, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 19, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 19, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 19, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "inventory", + "traversal_index": 41, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "inventory", + "traversal_index": 51, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "main_chat", + "traversal_index": 23, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 40, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 74, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 92, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 103, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 112, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 123, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 132, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 176, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 242, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 252, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 314, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 364, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 385, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 437, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 488, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 526, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 556, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 591, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 619, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 672, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 716, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 751, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 777, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 814, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 854, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 7, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 16, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 27, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 36, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 47, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 56, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 24, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 74, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 95, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 7, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 16, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 27, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 36, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 47, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 56, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "quests", + "traversal_index": 21, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "quests", + "traversal_index": 56, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "quests", + "traversal_index": 84, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 45, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 89, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 124, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 150, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "spellbook", + "traversal_index": 15, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "spellbook", + "traversal_index": 55, + "element_id": 268436325, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100682854, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C66.png", + "width": 16, + "height": 3, + "used_by_panels": [ + "character", + "examine", + "floating_chat_1", + "floating_chat_2", + "floating_chat_3", + "floating_chat_4", + "inventory", + "main_chat", + "main_panel", + "negative_effects", + "options", + "positive_effects", + "quests", + "social", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 37, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 37, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "character", + "traversal_index": 88, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 88, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "character", + "traversal_index": 126, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 126, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "examine", + "traversal_index": 29, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 29, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "examine", + "traversal_index": 38, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 38, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "examine", + "traversal_index": 75, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 75, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 20, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 20, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 20, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 20, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 20, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 20, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 20, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 20, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "inventory", + "traversal_index": 42, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "inventory", + "traversal_index": 42, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "inventory", + "traversal_index": 52, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "inventory", + "traversal_index": 52, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "main_chat", + "traversal_index": 24, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 24, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 41, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 41, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 75, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 75, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 93, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 93, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 104, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 104, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 113, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 113, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 124, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 124, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 133, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 133, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 177, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 177, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 243, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 243, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 253, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 253, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 315, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 315, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 365, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 365, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 386, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 386, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 438, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 438, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 489, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 489, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 527, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 527, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 557, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 557, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 592, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 592, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 620, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 620, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 673, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 673, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 717, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 717, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 752, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 752, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 778, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 778, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 815, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 815, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 855, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 855, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 8, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 8, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 17, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 17, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 28, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 28, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 37, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 37, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 48, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 48, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 57, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 57, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 25, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 25, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 75, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 75, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 96, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 96, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 8, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 8, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 17, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 17, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 28, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 28, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 37, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 37, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 48, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 48, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 57, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 57, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "quests", + "traversal_index": 22, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 22, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "quests", + "traversal_index": 57, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 57, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "quests", + "traversal_index": 85, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 85, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 46, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 46, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 90, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 90, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 125, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 125, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 151, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 151, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "spellbook", + "traversal_index": 16, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 16, + "element_id": 268436326, + "state_id": 1 + }, + { + "panel_slug": "spellbook", + "traversal_index": 56, + "element_id": 268436326, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 56, + "element_id": 268436326, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100682855, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C67.png", + "width": 16, + "height": 3, + "used_by_panels": [ + "character", + "examine", + "floating_chat_1", + "floating_chat_2", + "floating_chat_3", + "floating_chat_4", + "inventory", + "main_chat", + "main_panel", + "negative_effects", + "options", + "positive_effects", + "quests", + "social", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 37, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "character", + "traversal_index": 88, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "character", + "traversal_index": 126, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "examine", + "traversal_index": 29, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "examine", + "traversal_index": 38, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "examine", + "traversal_index": 75, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 20, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 20, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 20, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 20, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "inventory", + "traversal_index": 42, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "inventory", + "traversal_index": 52, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "main_chat", + "traversal_index": 24, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 41, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 75, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 93, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 104, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 113, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 124, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 133, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 177, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 243, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 253, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 315, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 365, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 386, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 438, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 489, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 527, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 557, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 592, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 620, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 673, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 717, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 752, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 778, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 815, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 855, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 8, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 17, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 28, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 37, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 48, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 57, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 25, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 75, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 96, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 8, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 17, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 28, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 37, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 48, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 57, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "quests", + "traversal_index": 22, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "quests", + "traversal_index": 57, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "quests", + "traversal_index": 85, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 46, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 90, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 125, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 151, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "spellbook", + "traversal_index": 16, + "element_id": 268436326, + "state_id": 2 + }, + { + "panel_slug": "spellbook", + "traversal_index": 56, + "element_id": 268436326, + "state_id": 2 + } + ] + }, + { + "key": { + "image_id": 100682856, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C68.png", + "width": 16, + "height": 3, + "used_by_panels": [ + "character", + "examine", + "floating_chat_1", + "floating_chat_2", + "floating_chat_3", + "floating_chat_4", + "inventory", + "main_chat", + "main_panel", + "negative_effects", + "options", + "positive_effects", + "quests", + "social", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 37, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "character", + "traversal_index": 88, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "character", + "traversal_index": 126, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "examine", + "traversal_index": 29, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "examine", + "traversal_index": 38, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "examine", + "traversal_index": 75, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 20, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 20, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 20, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 20, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "inventory", + "traversal_index": 42, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "inventory", + "traversal_index": 52, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "main_chat", + "traversal_index": 24, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 41, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 75, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 93, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 104, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 113, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 124, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 133, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 177, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 243, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 253, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 315, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 365, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 386, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 438, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 489, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 527, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 557, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 592, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 620, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 673, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 717, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 752, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 778, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 815, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 855, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 8, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 17, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 28, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 37, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 48, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 57, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 25, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 75, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 96, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 8, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 17, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 28, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 37, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 48, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 57, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "quests", + "traversal_index": 22, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "quests", + "traversal_index": 57, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "quests", + "traversal_index": 85, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 46, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 90, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 125, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 151, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "spellbook", + "traversal_index": 16, + "element_id": 268436326, + "state_id": 3 + }, + { + "panel_slug": "spellbook", + "traversal_index": 56, + "element_id": 268436326, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100682857, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C69.png", + "width": 16, + "height": 16, + "used_by_panels": [ + "character", + "examine", + "floating_chat_1", + "floating_chat_2", + "floating_chat_3", + "floating_chat_4", + "inventory", + "main_chat", + "main_panel", + "negative_effects", + "options", + "positive_effects", + "quests", + "social", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 38, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 38, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "character", + "traversal_index": 89, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 89, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "character", + "traversal_index": 127, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 127, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "examine", + "traversal_index": 30, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 30, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "examine", + "traversal_index": 39, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 39, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "examine", + "traversal_index": 76, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 76, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 21, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 21, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 21, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 21, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 21, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 21, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 21, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 21, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "inventory", + "traversal_index": 43, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "inventory", + "traversal_index": 43, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "inventory", + "traversal_index": 53, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "inventory", + "traversal_index": 53, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "main_chat", + "traversal_index": 25, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 25, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 42, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 42, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 76, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 76, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 94, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 94, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 105, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 105, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 114, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 114, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 125, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 125, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 134, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 134, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 178, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 178, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 244, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 244, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 254, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 254, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 316, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 316, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 366, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 366, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 387, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 387, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 439, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 439, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 490, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 490, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 528, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 528, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 558, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 558, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 593, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 593, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 621, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 621, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 674, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 674, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 718, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 718, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 753, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 753, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 779, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 779, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 816, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 816, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 856, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 856, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 9, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 9, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 18, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 18, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 29, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 29, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 38, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 38, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 49, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 49, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 58, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 58, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 26, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 26, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 76, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 76, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 97, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 97, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 9, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 9, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 18, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 18, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 29, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 29, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 38, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 38, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 49, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 49, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 58, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 58, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "quests", + "traversal_index": 23, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 23, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "quests", + "traversal_index": 58, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 58, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "quests", + "traversal_index": 86, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 86, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 47, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 47, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 91, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 91, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 126, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 126, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 152, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 152, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "spellbook", + "traversal_index": 17, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 17, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "spellbook", + "traversal_index": 57, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 57, + "element_id": 268435569, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100682858, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C6A.png", + "width": 16, + "height": 16, + "used_by_panels": [ + "character", + "examine", + "floating_chat_1", + "floating_chat_2", + "floating_chat_3", + "floating_chat_4", + "inventory", + "main_chat", + "main_panel", + "negative_effects", + "options", + "positive_effects", + "quests", + "social", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 38, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "character", + "traversal_index": 89, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "character", + "traversal_index": 127, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "examine", + "traversal_index": 30, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "examine", + "traversal_index": 39, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "examine", + "traversal_index": 76, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 21, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 21, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 21, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 21, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "inventory", + "traversal_index": 43, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "inventory", + "traversal_index": 53, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "main_chat", + "traversal_index": 25, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 42, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 76, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 94, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 105, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 114, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 125, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 134, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 178, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 244, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 254, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 316, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 366, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 387, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 439, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 490, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 528, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 558, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 593, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 621, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 674, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 718, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 753, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 779, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 816, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 856, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 9, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 18, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 29, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 38, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 49, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 58, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 26, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 76, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 97, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 9, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 18, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 29, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 38, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 49, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 58, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "quests", + "traversal_index": 23, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "quests", + "traversal_index": 58, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "quests", + "traversal_index": 86, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 47, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 91, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 126, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 152, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "spellbook", + "traversal_index": 17, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "spellbook", + "traversal_index": 57, + "element_id": 268435569, + "state_id": 2 + } + ] + }, + { + "key": { + "image_id": 100682859, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C6B.png", + "width": 16, + "height": 16, + "used_by_panels": [ + "character", + "examine", + "floating_chat_1", + "floating_chat_2", + "floating_chat_3", + "floating_chat_4", + "inventory", + "main_chat", + "main_panel", + "negative_effects", + "options", + "positive_effects", + "quests", + "social", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 38, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "character", + "traversal_index": 89, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "character", + "traversal_index": 127, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "examine", + "traversal_index": 30, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "examine", + "traversal_index": 39, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "examine", + "traversal_index": 76, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 21, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 21, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 21, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 21, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "inventory", + "traversal_index": 43, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "inventory", + "traversal_index": 53, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "main_chat", + "traversal_index": 25, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 42, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 76, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 94, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 105, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 114, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 125, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 134, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 178, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 244, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 254, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 316, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 366, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 387, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 439, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 490, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 528, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 558, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 593, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 621, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 674, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 718, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 753, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 779, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 816, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 856, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 9, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 18, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 29, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 38, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 49, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 58, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 26, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 76, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 97, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 9, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 18, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 29, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 38, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 49, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 58, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "quests", + "traversal_index": 23, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "quests", + "traversal_index": 58, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "quests", + "traversal_index": 86, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 47, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 91, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 126, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 152, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "spellbook", + "traversal_index": 17, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "spellbook", + "traversal_index": 57, + "element_id": 268435569, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100682860, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C6C.png", + "width": 16, + "height": 16, + "used_by_panels": [ + "character", + "examine", + "floating_chat_1", + "floating_chat_2", + "floating_chat_3", + "floating_chat_4", + "inventory", + "main_chat", + "main_panel", + "negative_effects", + "options", + "positive_effects", + "quests", + "social", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 39, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 39, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "character", + "traversal_index": 90, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 90, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "character", + "traversal_index": 128, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 128, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "examine", + "traversal_index": 31, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 31, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "examine", + "traversal_index": 40, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 40, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "examine", + "traversal_index": 77, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 77, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 22, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 22, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 22, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 22, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 22, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 22, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 22, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 22, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "inventory", + "traversal_index": 44, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "inventory", + "traversal_index": 44, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "inventory", + "traversal_index": 54, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "inventory", + "traversal_index": 54, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "main_chat", + "traversal_index": 26, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 26, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 43, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 43, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 77, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 77, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 95, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 95, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 106, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 106, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 115, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 115, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 126, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 126, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 135, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 135, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 179, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 179, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 245, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 245, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 255, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 255, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 317, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 317, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 367, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 367, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 388, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 388, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 440, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 440, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 491, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 491, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 529, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 529, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 559, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 559, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 594, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 594, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 622, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 622, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 675, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 675, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 719, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 719, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 754, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 754, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 780, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 780, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 817, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 817, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 857, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 857, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 10, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 10, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 19, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 19, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 30, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 30, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 39, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 39, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 50, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 50, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 59, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 59, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 27, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 27, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 77, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 77, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 98, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 98, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 10, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 10, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 19, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 19, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 30, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 30, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 39, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 39, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 50, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 50, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 59, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 59, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "quests", + "traversal_index": 24, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 24, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "quests", + "traversal_index": 59, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 59, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "quests", + "traversal_index": 87, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 87, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 48, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 48, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 92, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 92, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 127, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 127, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 153, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 153, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "spellbook", + "traversal_index": 18, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 18, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "spellbook", + "traversal_index": 58, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 58, + "element_id": 268435570, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100682861, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C6D.png", + "width": 16, + "height": 16, + "used_by_panels": [ + "character", + "examine", + "floating_chat_1", + "floating_chat_2", + "floating_chat_3", + "floating_chat_4", + "inventory", + "main_chat", + "main_panel", + "negative_effects", + "options", + "positive_effects", + "quests", + "social", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 39, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "character", + "traversal_index": 90, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "character", + "traversal_index": 128, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "examine", + "traversal_index": 31, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "examine", + "traversal_index": 40, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "examine", + "traversal_index": 77, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 22, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 22, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 22, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 22, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "inventory", + "traversal_index": 44, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "inventory", + "traversal_index": 54, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "main_chat", + "traversal_index": 26, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 43, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 77, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 95, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 106, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 115, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 126, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 135, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 179, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 245, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 255, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 317, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 367, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 388, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 440, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 491, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 529, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 559, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 594, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 622, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 675, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 719, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 754, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 780, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 817, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 857, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 10, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 19, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 30, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 39, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 50, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 59, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 27, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 77, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 98, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 10, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 19, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 30, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 39, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 50, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 59, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "quests", + "traversal_index": 24, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "quests", + "traversal_index": 59, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "quests", + "traversal_index": 87, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 48, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 92, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 127, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 153, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "spellbook", + "traversal_index": 18, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "spellbook", + "traversal_index": 58, + "element_id": 268435570, + "state_id": 2 + } + ] + }, + { + "key": { + "image_id": 100682862, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C6E.png", + "width": 16, + "height": 16, + "used_by_panels": [ + "character", + "examine", + "floating_chat_1", + "floating_chat_2", + "floating_chat_3", + "floating_chat_4", + "inventory", + "main_chat", + "main_panel", + "negative_effects", + "options", + "positive_effects", + "quests", + "social", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 39, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "character", + "traversal_index": 90, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "character", + "traversal_index": 128, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "examine", + "traversal_index": 31, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "examine", + "traversal_index": 40, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "examine", + "traversal_index": 77, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 22, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 22, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 22, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 22, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "inventory", + "traversal_index": 44, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "inventory", + "traversal_index": 54, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "main_chat", + "traversal_index": 26, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 43, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 77, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 95, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 106, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 115, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 126, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 135, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 179, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 245, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 255, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 317, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 367, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 388, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 440, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 491, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 529, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 559, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 594, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 622, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 675, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 719, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 754, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 780, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 817, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 857, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 10, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 19, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 30, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 39, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 50, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 59, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 27, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 77, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 98, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 10, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 19, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 30, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 39, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 50, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 59, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "quests", + "traversal_index": 24, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "quests", + "traversal_index": 59, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "quests", + "traversal_index": 87, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 48, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 92, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 127, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 153, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "spellbook", + "traversal_index": 18, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "spellbook", + "traversal_index": 58, + "element_id": 268435570, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100682879, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C7F.png", + "width": 32, + "height": 16, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 27, + "element_id": 268435563, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 27, + "element_id": 268435563, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 40, + "element_id": 268435573, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 40, + "element_id": 268435573, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 57, + "element_id": 268435586, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 57, + "element_id": 268435586, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 69, + "element_id": 268435593, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 69, + "element_id": 268435593, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 88, + "element_id": 268435606, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 88, + "element_id": 268435606, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 101, + "element_id": 268435613, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 101, + "element_id": 268435613, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 116, + "element_id": 268435646, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 116, + "element_id": 268435646, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 132, + "element_id": 268435654, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 132, + "element_id": 268435654, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 147, + "element_id": 268435663, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 147, + "element_id": 268435663, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100682880, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C80.png", + "width": 3, + "height": 16, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 29, + "element_id": 268436329, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 29, + "element_id": 268436329, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 42, + "element_id": 268436329, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 42, + "element_id": 268436329, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 59, + "element_id": 268436329, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 59, + "element_id": 268436329, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 71, + "element_id": 268436329, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 71, + "element_id": 268436329, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 90, + "element_id": 268436329, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 90, + "element_id": 268436329, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 103, + "element_id": 268436329, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 103, + "element_id": 268436329, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 118, + "element_id": 268436329, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 118, + "element_id": 268436329, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 134, + "element_id": 268436329, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 134, + "element_id": 268436329, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 149, + "element_id": 268436329, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 149, + "element_id": 268436329, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100682881, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C81.png", + "width": 3, + "height": 16, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 29, + "element_id": 268436329, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 42, + "element_id": 268436329, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 59, + "element_id": 268436329, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 71, + "element_id": 268436329, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 90, + "element_id": 268436329, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 103, + "element_id": 268436329, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 118, + "element_id": 268436329, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 134, + "element_id": 268436329, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 149, + "element_id": 268436329, + "state_id": 2 + } + ] + }, + { + "key": { + "image_id": 100682882, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C82.png", + "width": 3, + "height": 16, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 29, + "element_id": 268436329, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 42, + "element_id": 268436329, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 59, + "element_id": 268436329, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 71, + "element_id": 268436329, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 90, + "element_id": 268436329, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 103, + "element_id": 268436329, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 118, + "element_id": 268436329, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 134, + "element_id": 268436329, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 149, + "element_id": 268436329, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100682883, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C83.png", + "width": 10, + "height": 16, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 30, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 30, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 43, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 43, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 60, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 60, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 72, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 72, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 91, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 91, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 104, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 104, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 119, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 119, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 135, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 135, + "element_id": 268436325, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 150, + "element_id": 268436325, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 150, + "element_id": 268436325, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100682884, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C84.png", + "width": 10, + "height": 16, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 30, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 43, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 60, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 72, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 91, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 104, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 119, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 135, + "element_id": 268436325, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 150, + "element_id": 268436325, + "state_id": 2 + } + ] + }, + { + "key": { + "image_id": 100682885, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C85.png", + "width": 10, + "height": 16, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 30, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 43, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 60, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 72, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 91, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 104, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 119, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 135, + "element_id": 268436325, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 150, + "element_id": 268436325, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100682886, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C86.png", + "width": 3, + "height": 16, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 31, + "element_id": 268436330, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 31, + "element_id": 268436330, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 44, + "element_id": 268436330, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 44, + "element_id": 268436330, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 61, + "element_id": 268436330, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 61, + "element_id": 268436330, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 73, + "element_id": 268436330, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 73, + "element_id": 268436330, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 92, + "element_id": 268436330, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 92, + "element_id": 268436330, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 105, + "element_id": 268436330, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 105, + "element_id": 268436330, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 120, + "element_id": 268436330, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 120, + "element_id": 268436330, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 136, + "element_id": 268436330, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 136, + "element_id": 268436330, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 151, + "element_id": 268436330, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 151, + "element_id": 268436330, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100682887, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C87.png", + "width": 3, + "height": 16, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 31, + "element_id": 268436330, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 44, + "element_id": 268436330, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 61, + "element_id": 268436330, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 73, + "element_id": 268436330, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 92, + "element_id": 268436330, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 105, + "element_id": 268436330, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 120, + "element_id": 268436330, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 136, + "element_id": 268436330, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 151, + "element_id": 268436330, + "state_id": 2 + } + ] + }, + { + "key": { + "image_id": 100682888, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C88.png", + "width": 3, + "height": 16, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 31, + "element_id": 268436330, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 44, + "element_id": 268436330, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 61, + "element_id": 268436330, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 73, + "element_id": 268436330, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 92, + "element_id": 268436330, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 105, + "element_id": 268436330, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 120, + "element_id": 268436330, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 136, + "element_id": 268436330, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 151, + "element_id": 268436330, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100682889, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C89.png", + "width": 16, + "height": 16, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 32, + "element_id": 268436331, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 32, + "element_id": 268436331, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 45, + "element_id": 268436331, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 45, + "element_id": 268436331, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 62, + "element_id": 268436331, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 62, + "element_id": 268436331, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 74, + "element_id": 268436331, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 74, + "element_id": 268436331, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 93, + "element_id": 268436331, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 93, + "element_id": 268436331, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 106, + "element_id": 268436331, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 106, + "element_id": 268436331, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 121, + "element_id": 268436331, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 121, + "element_id": 268436331, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 137, + "element_id": 268436331, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 137, + "element_id": 268436331, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 152, + "element_id": 268436331, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 152, + "element_id": 268436331, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100682890, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C8A.png", + "width": 16, + "height": 16, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 32, + "element_id": 268436331, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 45, + "element_id": 268436331, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 62, + "element_id": 268436331, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 74, + "element_id": 268436331, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 93, + "element_id": 268436331, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 106, + "element_id": 268436331, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 121, + "element_id": 268436331, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 137, + "element_id": 268436331, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 152, + "element_id": 268436331, + "state_id": 2 + } + ] + }, + { + "key": { + "image_id": 100682891, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C8B.png", + "width": 16, + "height": 16, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 32, + "element_id": 268436331, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 45, + "element_id": 268436331, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 62, + "element_id": 268436331, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 74, + "element_id": 268436331, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 93, + "element_id": 268436331, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 106, + "element_id": 268436331, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 121, + "element_id": 268436331, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 137, + "element_id": 268436331, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 152, + "element_id": 268436331, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100682892, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C8C.png", + "width": 16, + "height": 16, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 33, + "element_id": 268436332, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 33, + "element_id": 268436332, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 46, + "element_id": 268436332, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 46, + "element_id": 268436332, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 63, + "element_id": 268436332, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 63, + "element_id": 268436332, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 75, + "element_id": 268436332, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 75, + "element_id": 268436332, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 94, + "element_id": 268436332, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 94, + "element_id": 268436332, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 107, + "element_id": 268436332, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 107, + "element_id": 268436332, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 122, + "element_id": 268436332, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 122, + "element_id": 268436332, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 138, + "element_id": 268436332, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 138, + "element_id": 268436332, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 153, + "element_id": 268436332, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 153, + "element_id": 268436332, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100682893, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C8D.png", + "width": 16, + "height": 16, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 33, + "element_id": 268436332, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 46, + "element_id": 268436332, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 63, + "element_id": 268436332, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 75, + "element_id": 268436332, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 94, + "element_id": 268436332, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 107, + "element_id": 268436332, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 122, + "element_id": 268436332, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 138, + "element_id": 268436332, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 153, + "element_id": 268436332, + "state_id": 2 + } + ] + }, + { + "key": { + "image_id": 100682894, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C8E.png", + "width": 16, + "height": 16, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 33, + "element_id": 268436332, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 46, + "element_id": 268436332, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 63, + "element_id": 268436332, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 75, + "element_id": 268436332, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 94, + "element_id": 268436332, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 107, + "element_id": 268436332, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 122, + "element_id": 268436332, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 138, + "element_id": 268436332, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 153, + "element_id": 268436332, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100682895, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C8F.png", + "width": 47, + "height": 44, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 65, + "element_id": 268436234, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 65, + "element_id": 268436234, + "state_id": 1 + }, + { + "panel_slug": "smartbox", + "traversal_index": 68, + "element_id": 268436234, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 68, + "element_id": 268436234, + "state_id": 1 + }, + { + "panel_slug": "smartbox", + "traversal_index": 71, + "element_id": 268436234, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 71, + "element_id": 268436234, + "state_id": 1 + }, + { + "panel_slug": "smartbox", + "traversal_index": 74, + "element_id": 268436234, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 74, + "element_id": 268436234, + "state_id": 1 + }, + { + "panel_slug": "smartbox", + "traversal_index": 77, + "element_id": 268436234, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 77, + "element_id": 268436234, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100682896, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C90.png", + "width": 47, + "height": 44, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 65, + "element_id": 268436234, + "state_id": 2 + }, + { + "panel_slug": "smartbox", + "traversal_index": 68, + "element_id": 268436234, + "state_id": 2 + }, + { + "panel_slug": "smartbox", + "traversal_index": 71, + "element_id": 268436234, + "state_id": 2 + }, + { + "panel_slug": "smartbox", + "traversal_index": 74, + "element_id": 268436234, + "state_id": 2 + }, + { + "panel_slug": "smartbox", + "traversal_index": 77, + "element_id": 268436234, + "state_id": 2 + } + ] + }, + { + "key": { + "image_id": 100682897, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C91.png", + "width": 47, + "height": 44, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 65, + "element_id": 268436234, + "state_id": 13 + }, + { + "panel_slug": "smartbox", + "traversal_index": 68, + "element_id": 268436234, + "state_id": 13 + }, + { + "panel_slug": "smartbox", + "traversal_index": 71, + "element_id": 268436234, + "state_id": 13 + }, + { + "panel_slug": "smartbox", + "traversal_index": 74, + "element_id": 268436234, + "state_id": 13 + }, + { + "panel_slug": "smartbox", + "traversal_index": 77, + "element_id": 268436234, + "state_id": 13 + } + ] + }, + { + "key": { + "image_id": 100682898, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C92.png", + "width": 47, + "height": 44, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 66, + "element_id": 268436235, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 66, + "element_id": 268436235, + "state_id": 1 + }, + { + "panel_slug": "smartbox", + "traversal_index": 69, + "element_id": 268436235, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 69, + "element_id": 268436235, + "state_id": 1 + }, + { + "panel_slug": "smartbox", + "traversal_index": 72, + "element_id": 268436235, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 72, + "element_id": 268436235, + "state_id": 1 + }, + { + "panel_slug": "smartbox", + "traversal_index": 75, + "element_id": 268436235, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 75, + "element_id": 268436235, + "state_id": 1 + }, + { + "panel_slug": "smartbox", + "traversal_index": 78, + "element_id": 268436235, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 78, + "element_id": 268436235, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100682899, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C93.png", + "width": 47, + "height": 44, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 66, + "element_id": 268436235, + "state_id": 2 + }, + { + "panel_slug": "smartbox", + "traversal_index": 69, + "element_id": 268436235, + "state_id": 2 + }, + { + "panel_slug": "smartbox", + "traversal_index": 72, + "element_id": 268436235, + "state_id": 2 + }, + { + "panel_slug": "smartbox", + "traversal_index": 75, + "element_id": 268436235, + "state_id": 2 + }, + { + "panel_slug": "smartbox", + "traversal_index": 78, + "element_id": 268436235, + "state_id": 2 + } + ] + }, + { + "key": { + "image_id": 100682900, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C94.png", + "width": 32, + "height": 32, + "used_by_panels": [ + "character", + "combat", + "main_panel", + "options", + "smartbox", + "social" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 131, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "combat", + "traversal_index": 97, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 25, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 29, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 45, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 49, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 55, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 163, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 167, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 182, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 186, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 192, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 319, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 323, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 327, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 369, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 373, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 377, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 390, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 394, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 398, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 532, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 679, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 683, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 687, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 705, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 721, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 725, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 729, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 733, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 737, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 741, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 756, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 763, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 767, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 785, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 789, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 796, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 29, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 33, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 37, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 79, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 83, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 87, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 100, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 104, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 108, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "smartbox", + "traversal_index": 88, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "smartbox", + "traversal_index": 92, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 52, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 56, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 60, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 78, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 94, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 98, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 102, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 106, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 110, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 114, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 129, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 136, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 140, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 158, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 162, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 169, + "element_id": 268436174, + "state_id": 13 + } + ] + }, + { + "key": { + "image_id": 100682901, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C95.png", + "width": 32, + "height": 32, + "used_by_panels": [ + "character", + "combat", + "main_panel", + "options", + "smartbox", + "social" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 131, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "combat", + "traversal_index": 97, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 25, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 29, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 45, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 49, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 55, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 163, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 167, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 182, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 186, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 192, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 319, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 323, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 327, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 369, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 373, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 377, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 390, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 394, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 398, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 532, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 679, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 683, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 687, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 705, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 721, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 725, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 729, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 733, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 737, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 741, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 756, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 763, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 767, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 785, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 789, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 796, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 29, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 33, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 37, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 79, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 83, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 87, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 100, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 104, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 108, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "smartbox", + "traversal_index": 88, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "smartbox", + "traversal_index": 92, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 52, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 56, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 60, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 78, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 94, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 98, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 102, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 106, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 110, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 114, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 129, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 136, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 140, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 158, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 162, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 169, + "element_id": 268436174, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100682902, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C96.png", + "width": 32, + "height": 32, + "used_by_panels": [ + "character", + "combat", + "main_panel", + "options", + "smartbox", + "social" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 131, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 131, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "character", + "traversal_index": 131, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "combat", + "traversal_index": 97, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 97, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "combat", + "traversal_index": 97, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 25, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 25, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 25, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 29, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 29, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 29, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 45, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 45, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 45, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 49, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 49, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 49, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 55, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 55, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 55, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 163, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 163, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 163, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 167, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 167, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 167, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 182, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 182, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 182, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 186, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 186, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 186, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 192, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 192, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 192, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 319, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 319, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 319, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 323, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 323, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 323, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 327, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 327, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 327, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 369, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 369, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 369, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 373, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 373, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 373, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 377, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 377, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 377, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 390, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 390, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 390, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 394, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 394, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 394, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 398, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 398, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 398, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 532, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 532, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 532, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 679, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 679, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 679, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 683, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 683, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 683, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 687, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 687, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 687, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 705, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 705, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 705, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 721, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 721, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 721, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 725, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 725, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 725, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 729, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 729, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 729, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 733, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 733, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 733, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 737, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 737, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 737, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 741, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 741, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 741, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 756, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 756, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 756, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 763, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 763, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 763, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 767, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 767, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 767, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 785, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 785, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 785, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 789, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 789, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 789, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 796, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 796, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 796, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 29, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 29, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 29, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 33, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 33, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 33, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 37, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 37, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 37, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 79, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 79, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 79, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 83, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 83, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 83, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 87, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 87, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 87, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 100, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 100, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 100, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 104, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 104, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 104, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 108, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 108, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 108, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "smartbox", + "traversal_index": 88, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 88, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "smartbox", + "traversal_index": 88, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "smartbox", + "traversal_index": 92, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 92, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "smartbox", + "traversal_index": 92, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 52, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 52, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 52, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 56, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 56, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 56, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 60, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 60, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 60, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 78, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 78, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 78, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 94, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 94, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 94, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 98, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 98, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 98, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 102, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 102, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 102, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 106, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 106, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 106, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 110, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 110, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 110, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 114, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 114, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 114, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 129, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 129, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 129, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 136, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 136, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 136, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 140, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 140, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 140, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 158, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 158, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 158, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 162, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 162, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 162, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 169, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 169, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 169, + "element_id": 268436174, + "state_id": 2 + } + ] + }, + { + "key": { + "image_id": 100682903, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C97.png", + "width": 15, + "height": 32, + "used_by_panels": [ + "character", + "combat", + "main_panel", + "options", + "smartbox", + "social" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 132, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "combat", + "traversal_index": 98, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 26, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 30, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 46, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 50, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 56, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 164, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 168, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 183, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 187, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 193, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 320, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 324, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 328, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 370, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 374, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 378, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 391, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 395, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 399, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 533, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 680, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 684, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 688, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 706, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 722, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 726, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 730, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 734, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 738, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 742, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 757, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 764, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 768, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 786, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 790, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 797, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 30, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 34, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 38, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 80, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 84, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 88, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 101, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 105, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 109, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "smartbox", + "traversal_index": 89, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "smartbox", + "traversal_index": 93, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 53, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 57, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 61, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 79, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 95, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 99, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 103, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 107, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 111, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 115, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 130, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 137, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 141, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 159, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 163, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 170, + "element_id": 268436175, + "state_id": 13 + } + ] + }, + { + "key": { + "image_id": 100682904, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C98.png", + "width": 15, + "height": 32, + "used_by_panels": [ + "character", + "combat", + "main_panel", + "options", + "smartbox", + "social" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 132, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "combat", + "traversal_index": 98, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 26, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 30, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 46, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 50, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 56, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 164, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 168, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 183, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 187, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 193, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 320, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 324, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 328, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 370, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 374, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 378, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 391, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 395, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 399, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 533, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 680, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 684, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 688, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 706, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 722, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 726, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 730, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 734, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 738, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 742, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 757, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 764, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 768, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 786, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 790, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 797, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 30, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 34, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 38, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 80, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 84, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 88, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 101, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 105, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 109, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "smartbox", + "traversal_index": 89, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "smartbox", + "traversal_index": 93, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 53, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 57, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 61, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 79, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 95, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 99, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 103, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 107, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 111, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 115, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 130, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 137, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 141, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 159, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 163, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 170, + "element_id": 268436175, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100682905, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C99.png", + "width": 15, + "height": 32, + "used_by_panels": [ + "character", + "combat", + "main_panel", + "options", + "smartbox", + "social" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 132, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 132, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "character", + "traversal_index": 132, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "combat", + "traversal_index": 98, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 98, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "combat", + "traversal_index": 98, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 26, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 26, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 26, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 30, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 30, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 30, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 46, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 46, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 46, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 50, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 50, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 50, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 56, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 56, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 56, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 164, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 164, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 164, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 168, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 168, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 168, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 183, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 183, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 183, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 187, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 187, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 187, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 193, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 193, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 193, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 320, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 320, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 320, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 324, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 324, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 324, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 328, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 328, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 328, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 370, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 370, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 370, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 374, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 374, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 374, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 378, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 378, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 378, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 391, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 391, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 391, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 395, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 395, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 395, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 399, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 399, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 399, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 533, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 533, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 533, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 680, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 680, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 680, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 684, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 684, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 684, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 688, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 688, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 688, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 706, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 706, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 706, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 722, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 722, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 722, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 726, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 726, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 726, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 730, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 730, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 730, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 734, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 734, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 734, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 738, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 738, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 738, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 742, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 742, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 742, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 757, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 757, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 757, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 764, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 764, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 764, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 768, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 768, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 768, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 786, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 786, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 786, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 790, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 790, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 790, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 797, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 797, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 797, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 30, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 30, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 30, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 34, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 34, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 34, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 38, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 38, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 38, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 80, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 80, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 80, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 84, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 84, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 84, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 88, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 88, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 88, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 101, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 101, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 101, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 105, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 105, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 105, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 109, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 109, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 109, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "smartbox", + "traversal_index": 89, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 89, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "smartbox", + "traversal_index": 89, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "smartbox", + "traversal_index": 93, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 93, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "smartbox", + "traversal_index": 93, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 53, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 53, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 53, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 57, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 57, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 57, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 61, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 61, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 61, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 79, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 79, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 79, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 95, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 95, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 95, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 99, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 99, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 99, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 103, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 103, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 103, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 107, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 107, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 107, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 111, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 111, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 111, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 115, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 115, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 115, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 130, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 130, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 130, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 137, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 137, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 137, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 141, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 141, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 141, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 159, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 159, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 159, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 163, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 163, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 163, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 170, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 170, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 170, + "element_id": 268436175, + "state_id": 2 + } + ] + }, + { + "key": { + "image_id": 100682906, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C9A.png", + "width": 32, + "height": 32, + "used_by_panels": [ + "character", + "combat", + "main_panel", + "options", + "smartbox", + "social" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 133, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "combat", + "traversal_index": 99, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 27, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 31, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 47, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 51, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 57, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 165, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 169, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 184, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 188, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 194, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 321, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 325, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 329, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 371, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 375, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 379, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 392, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 396, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 400, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 534, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 681, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 685, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 689, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 707, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 723, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 727, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 731, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 735, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 739, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 743, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 758, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 765, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 769, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 787, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 791, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 798, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 31, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 35, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 39, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 81, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 85, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 89, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 102, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 106, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 110, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "smartbox", + "traversal_index": 90, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "smartbox", + "traversal_index": 94, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 54, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 58, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 62, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 80, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 96, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 100, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 104, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 108, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 112, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 116, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 131, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 138, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 142, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 160, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 164, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 171, + "element_id": 268436176, + "state_id": 13 + } + ] + }, + { + "key": { + "image_id": 100682907, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C9B.png", + "width": 32, + "height": 32, + "used_by_panels": [ + "character", + "combat", + "main_panel", + "options", + "smartbox", + "social" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 133, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "combat", + "traversal_index": 99, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 27, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 31, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 47, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 51, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 57, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 165, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 169, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 184, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 188, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 194, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 321, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 325, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 329, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 371, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 375, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 379, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 392, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 396, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 400, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 534, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 681, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 685, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 689, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 707, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 723, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 727, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 731, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 735, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 739, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 743, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 758, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 765, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 769, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 787, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 791, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 798, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 31, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 35, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 39, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 81, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 85, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 89, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 102, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 106, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 110, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "smartbox", + "traversal_index": 90, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "smartbox", + "traversal_index": 94, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 54, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 58, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 62, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 80, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 96, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 100, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 104, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 108, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 112, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 116, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 131, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 138, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 142, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 160, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 164, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 171, + "element_id": 268436176, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100682908, + "alpha_image_id": null + }, + "relative_path": "images/0x06004C9C.png", + "width": 32, + "height": 32, + "used_by_panels": [ + "character", + "combat", + "main_panel", + "options", + "smartbox", + "social" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 133, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 133, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "character", + "traversal_index": 133, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "combat", + "traversal_index": 99, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 99, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "combat", + "traversal_index": 99, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 27, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 27, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 27, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 31, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 31, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 31, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 47, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 47, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 47, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 51, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 51, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 51, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 57, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 57, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 57, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 165, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 165, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 165, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 169, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 169, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 169, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 184, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 184, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 184, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 188, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 188, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 188, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 194, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 194, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 194, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 321, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 321, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 321, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 325, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 325, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 325, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 329, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 329, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 329, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 371, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 371, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 371, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 375, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 375, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 375, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 379, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 379, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 379, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 392, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 392, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 392, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 396, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 396, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 396, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 400, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 400, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 400, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 534, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 534, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 534, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 681, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 681, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 681, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 685, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 685, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 685, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 689, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 689, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 689, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 707, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 707, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 707, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 723, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 723, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 723, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 727, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 727, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 727, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 731, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 731, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 731, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 735, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 735, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 735, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 739, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 739, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 739, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 743, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 743, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 743, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 758, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 758, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 758, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 765, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 765, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 765, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 769, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 769, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 769, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 787, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 787, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 787, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 791, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 791, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 791, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 798, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 798, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 798, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 31, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 31, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 31, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 35, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 35, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 35, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 39, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 39, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 39, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 81, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 81, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 81, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 85, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 85, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 85, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 89, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 89, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 89, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 102, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 102, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 102, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 106, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 106, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 106, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 110, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 110, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 110, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "smartbox", + "traversal_index": 90, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 90, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "smartbox", + "traversal_index": 90, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "smartbox", + "traversal_index": 94, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 94, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "smartbox", + "traversal_index": 94, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 54, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 54, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 54, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 58, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 58, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 58, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 62, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 62, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 62, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 80, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 80, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 80, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 96, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 96, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 96, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 100, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 100, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 100, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 104, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 104, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 104, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 108, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 108, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 108, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 112, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 112, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 112, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 116, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 116, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 116, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 131, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 131, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 131, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 138, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 138, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 138, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 142, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 142, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 142, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 160, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 160, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 160, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 164, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 164, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 164, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "social", + "traversal_index": 171, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 171, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 171, + "element_id": 268436176, + "state_id": 2 + } + ] + }, + { + "key": { + "image_id": 100682934, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CB6.png", + "width": 30, + "height": 26, + "used_by_panels": [ + "character", + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 53, + "element_id": 268436038, + "state_id": 1 + }, + { + "panel_slug": "character", + "traversal_index": 63, + "element_id": 268436038, + "state_id": 1 + }, + { + "panel_slug": "character", + "traversal_index": 104, + "element_id": 268436038, + "state_id": 1 + }, + { + "panel_slug": "character", + "traversal_index": 114, + "element_id": 268436038, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 454, + "element_id": 268436038, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 464, + "element_id": 268436038, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 505, + "element_id": 268436038, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 515, + "element_id": 268436038, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100682935, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CB7.png", + "width": 30, + "height": 26, + "used_by_panels": [ + "character", + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 53, + "element_id": 268436038, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 53, + "element_id": 268436038, + "state_id": 13 + }, + { + "panel_slug": "character", + "traversal_index": 63, + "element_id": 268436038, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 63, + "element_id": 268436038, + "state_id": 13 + }, + { + "panel_slug": "character", + "traversal_index": 104, + "element_id": 268436038, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 104, + "element_id": 268436038, + "state_id": 13 + }, + { + "panel_slug": "character", + "traversal_index": 114, + "element_id": 268436038, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 114, + "element_id": 268436038, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 454, + "element_id": 268436038, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 454, + "element_id": 268436038, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 464, + "element_id": 268436038, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 464, + "element_id": 268436038, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 505, + "element_id": 268436038, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 505, + "element_id": 268436038, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 515, + "element_id": 268436038, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 515, + "element_id": 268436038, + "state_id": 13 + } + ] + }, + { + "key": { + "image_id": 100682936, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CB8.png", + "width": 5, + "height": 10, + "used_by_panels": [ + "character", + "environment_panel", + "main_panel", + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 28, + "element_id": 268436025, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 28, + "element_id": 268436025, + "state_id": 0 + }, + { + "panel_slug": "character", + "traversal_index": 79, + "element_id": 268436025, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 79, + "element_id": 268436025, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 52, + "element_id": 268435581, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 52, + "element_id": 268435581, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 429, + "element_id": 268436025, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 429, + "element_id": 268436025, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 480, + "element_id": 268436025, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 480, + "element_id": 268436025, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 28, + "element_id": 268435688, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 28, + "element_id": 268435688, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 29, + "element_id": 268435690, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 29, + "element_id": 268435690, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 38, + "element_id": 268435688, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 38, + "element_id": 268435688, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 39, + "element_id": 268435690, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 39, + "element_id": 268435690, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100682937, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CB9.png", + "width": 35, + "height": 27, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 54, + "element_id": 268435583, + "state_id": 13 + } + ] + }, + { + "key": { + "image_id": 100682938, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CBA.png", + "width": 35, + "height": 27, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 54, + "element_id": 268435583, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 54, + "element_id": 268435583, + "state_id": 6 + } + ] + }, + { + "key": { + "image_id": 100682939, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CBB.png", + "width": 46, + "height": 30, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 66, + "element_id": 268435590, + "state_id": 13 + } + ] + }, + { + "key": { + "image_id": 100682940, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CBC.png", + "width": 46, + "height": 30, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 66, + "element_id": 268435590, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 66, + "element_id": 268435590, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100682941, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CBD.png", + "width": 46, + "height": 30, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 66, + "element_id": 268435590, + "state_id": 6 + } + ] + }, + { + "key": { + "image_id": 100682942, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CBE.png", + "width": 92, + "height": 20, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 80, + "element_id": 268435598, + "state_id": 12 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 81, + "element_id": 268435599, + "state_id": 12 + } + ] + }, + { + "key": { + "image_id": 100682943, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CBF.png", + "width": 92, + "height": 20, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 80, + "element_id": 268435598, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 80, + "element_id": 268435598, + "state_id": 11 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 81, + "element_id": 268435599, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 81, + "element_id": 268435599, + "state_id": 11 + } + ] + }, + { + "key": { + "image_id": 100682944, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CC0.png", + "width": 48, + "height": 48, + "used_by_panels": [ + "radar" + ], + "used_by_nodes": [ + { + "panel_slug": "radar", + "traversal_index": 1, + "element_id": 268435518, + "state_id": null + }, + { + "panel_slug": "radar", + "traversal_index": 1, + "element_id": 268435518, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100682945, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CC1.png", + "width": 120, + "height": 120, + "used_by_panels": [ + "radar" + ], + "used_by_nodes": [ + { + "panel_slug": "radar", + "traversal_index": 2, + "element_id": 268435519, + "state_id": null + }, + { + "panel_slug": "radar", + "traversal_index": 2, + "element_id": 268435519, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100682946, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CC2.png", + "width": 48, + "height": 48, + "used_by_panels": [ + "character", + "combat", + "environment_panel", + "examine", + "floating_chat_1", + "floating_chat_2", + "floating_chat_3", + "floating_chat_4", + "inventory", + "main_chat", + "main_panel", + "map", + "options", + "quests", + "smartbox", + "social", + "spellbook", + "toolbar", + "vitae" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 15, + "element_id": 268436006, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 15, + "element_id": 268436006, + "state_id": 0 + }, + { + "panel_slug": "character", + "traversal_index": 66, + "element_id": 268436006, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 66, + "element_id": 268436006, + "state_id": 0 + }, + { + "panel_slug": "character", + "traversal_index": 116, + "element_id": 268436793, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 116, + "element_id": 268436793, + "state_id": 0 + }, + { + "panel_slug": "character", + "traversal_index": 121, + "element_id": 268436786, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 121, + "element_id": 268436786, + "state_id": 0 + }, + { + "panel_slug": "combat", + "traversal_index": 18, + "element_id": 268435532, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 18, + "element_id": 268435532, + "state_id": 0 + }, + { + "panel_slug": "combat", + "traversal_index": 19, + "element_id": 268435533, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 19, + "element_id": 268435533, + "state_id": 0 + }, + { + "panel_slug": "combat", + "traversal_index": 20, + "element_id": 268435534, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 20, + "element_id": 268435534, + "state_id": 0 + }, + { + "panel_slug": "combat", + "traversal_index": 40, + "element_id": 268435616, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 40, + "element_id": 268435616, + "state_id": 0 + }, + { + "panel_slug": "combat", + "traversal_index": 42, + "element_id": 268435617, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 42, + "element_id": 268435617, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 17, + "element_id": 268435549, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 17, + "element_id": 268435549, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 38, + "element_id": 268435550, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 38, + "element_id": 268435550, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 51, + "element_id": 268435579, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 51, + "element_id": 268435579, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 64, + "element_id": 268435587, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 64, + "element_id": 268435587, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 78, + "element_id": 268435552, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 78, + "element_id": 268435552, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 82, + "element_id": 268435600, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 82, + "element_id": 268435600, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 95, + "element_id": 268435607, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 95, + "element_id": 268435607, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 114, + "element_id": 268435644, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 114, + "element_id": 268435644, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 130, + "element_id": 268435652, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 130, + "element_id": 268435652, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 145, + "element_id": 268435661, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 145, + "element_id": 268435661, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 17, + "element_id": 268435757, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 17, + "element_id": 268435757, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 21, + "element_id": 268435758, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 21, + "element_id": 268435758, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 32, + "element_id": 268436984, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 32, + "element_id": 268436984, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 43, + "element_id": 268435777, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 43, + "element_id": 268435777, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 61, + "element_id": 268435796, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 61, + "element_id": 268435796, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 81, + "element_id": 268436272, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 81, + "element_id": 268436272, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 82, + "element_id": 268435814, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 82, + "element_id": 268435814, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 9, + "element_id": 268436697, + "state_id": null + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 9, + "element_id": 268436697, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 13, + "element_id": 268435472, + "state_id": null + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 13, + "element_id": 268435472, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 23, + "element_id": 268436745, + "state_id": null + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 23, + "element_id": 268436745, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 9, + "element_id": 268436697, + "state_id": null + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 9, + "element_id": 268436697, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 13, + "element_id": 268435472, + "state_id": null + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 13, + "element_id": 268435472, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 23, + "element_id": 268436745, + "state_id": null + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 23, + "element_id": 268436745, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 9, + "element_id": 268436697, + "state_id": null + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 9, + "element_id": 268436697, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 13, + "element_id": 268435472, + "state_id": null + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 13, + "element_id": 268435472, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 23, + "element_id": 268436745, + "state_id": null + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 23, + "element_id": 268436745, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 9, + "element_id": 268436697, + "state_id": null + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 9, + "element_id": 268436697, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 13, + "element_id": 268435472, + "state_id": null + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 13, + "element_id": 268435472, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 23, + "element_id": 268436745, + "state_id": null + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 23, + "element_id": 268436745, + "state_id": 0 + }, + { + "panel_slug": "inventory", + "traversal_index": 57, + "element_id": 268435922, + "state_id": null + }, + { + "panel_slug": "inventory", + "traversal_index": 57, + "element_id": 268435922, + "state_id": 0 + }, + { + "panel_slug": "main_chat", + "traversal_index": 17, + "element_id": 268435472, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 17, + "element_id": 268435472, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 0, + "element_id": 268436990, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 0, + "element_id": 268436990, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 34, + "element_id": 268435717, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 34, + "element_id": 268435717, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 36, + "element_id": 268435719, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 36, + "element_id": 268435719, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 87, + "element_id": 268435740, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 87, + "element_id": 268435740, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 140, + "element_id": 268435816, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 140, + "element_id": 268435816, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 172, + "element_id": 268435898, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 172, + "element_id": 268435898, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 199, + "element_id": 268435906, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 199, + "element_id": 268435906, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 258, + "element_id": 268435922, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 258, + "element_id": 268435922, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 288, + "element_id": 268435959, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 288, + "element_id": 268435959, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 309, + "element_id": 268435985, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 309, + "element_id": 268435985, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 330, + "element_id": 268435986, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 330, + "element_id": 268435986, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 359, + "element_id": 268436748, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 359, + "element_id": 268436748, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 380, + "element_id": 268435987, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 380, + "element_id": 268435987, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 416, + "element_id": 268436006, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 416, + "element_id": 268436006, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 467, + "element_id": 268436006, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 467, + "element_id": 268436006, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 517, + "element_id": 268436793, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 517, + "element_id": 268436793, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 522, + "element_id": 268436786, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 522, + "element_id": 268436786, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 549, + "element_id": 268436948, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 549, + "element_id": 268436948, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 552, + "element_id": 268436943, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 552, + "element_id": 268436943, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 610, + "element_id": 268436836, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 610, + "element_id": 268436836, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 615, + "element_id": 268436867, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 615, + "element_id": 268436867, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 625, + "element_id": 268436871, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 625, + "element_id": 268436871, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 645, + "element_id": 268436113, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 645, + "element_id": 268436113, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 690, + "element_id": 268436114, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 690, + "element_id": 268436114, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 695, + "element_id": 268436079, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 695, + "element_id": 268436079, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 744, + "element_id": 268436810, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 744, + "element_id": 268436810, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 747, + "element_id": 268436798, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 747, + "element_id": 268436798, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 761, + "element_id": 268436800, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 761, + "element_id": 268436800, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 770, + "element_id": 268436755, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 770, + "element_id": 268436755, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 773, + "element_id": 268436759, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 773, + "element_id": 268436759, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 794, + "element_id": 268436763, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 794, + "element_id": 268436763, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 809, + "element_id": 268436140, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 809, + "element_id": 268436140, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 849, + "element_id": 268436141, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 849, + "element_id": 268436141, + "state_id": 0 + }, + { + "panel_slug": "map", + "traversal_index": 28, + "element_id": 268435959, + "state_id": null + }, + { + "panel_slug": "map", + "traversal_index": 28, + "element_id": 268435959, + "state_id": 0 + }, + { + "panel_slug": "options", + "traversal_index": 19, + "element_id": 268435985, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 19, + "element_id": 268435985, + "state_id": 0 + }, + { + "panel_slug": "options", + "traversal_index": 40, + "element_id": 268435986, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 40, + "element_id": 268435986, + "state_id": 0 + }, + { + "panel_slug": "options", + "traversal_index": 69, + "element_id": 268436748, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 69, + "element_id": 268436748, + "state_id": 0 + }, + { + "panel_slug": "options", + "traversal_index": 90, + "element_id": 268435987, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 90, + "element_id": 268435987, + "state_id": 0 + }, + { + "panel_slug": "quests", + "traversal_index": 14, + "element_id": 268436948, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 14, + "element_id": 268436948, + "state_id": 0 + }, + { + "panel_slug": "quests", + "traversal_index": 17, + "element_id": 268436943, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 17, + "element_id": 268436943, + "state_id": 0 + }, + { + "panel_slug": "quests", + "traversal_index": 75, + "element_id": 268436836, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 75, + "element_id": 268436836, + "state_id": 0 + }, + { + "panel_slug": "quests", + "traversal_index": 80, + "element_id": 268436867, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 80, + "element_id": 268436867, + "state_id": 0 + }, + { + "panel_slug": "quests", + "traversal_index": 90, + "element_id": 268436871, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 90, + "element_id": 268436871, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 21, + "element_id": 268436890, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 21, + "element_id": 268436890, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 31, + "element_id": 268436904, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 31, + "element_id": 268436904, + "state_id": 0 + }, + { + "panel_slug": "social", + "traversal_index": 18, + "element_id": 268436113, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 18, + "element_id": 268436113, + "state_id": 0 + }, + { + "panel_slug": "social", + "traversal_index": 63, + "element_id": 268436114, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 63, + "element_id": 268436114, + "state_id": 0 + }, + { + "panel_slug": "social", + "traversal_index": 68, + "element_id": 268436079, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 68, + "element_id": 268436079, + "state_id": 0 + }, + { + "panel_slug": "social", + "traversal_index": 117, + "element_id": 268436810, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 117, + "element_id": 268436810, + "state_id": 0 + }, + { + "panel_slug": "social", + "traversal_index": 120, + "element_id": 268436798, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 120, + "element_id": 268436798, + "state_id": 0 + }, + { + "panel_slug": "social", + "traversal_index": 134, + "element_id": 268436800, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 134, + "element_id": 268436800, + "state_id": 0 + }, + { + "panel_slug": "social", + "traversal_index": 143, + "element_id": 268436755, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 143, + "element_id": 268436755, + "state_id": 0 + }, + { + "panel_slug": "social", + "traversal_index": 146, + "element_id": 268436759, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 146, + "element_id": 268436759, + "state_id": 0 + }, + { + "panel_slug": "social", + "traversal_index": 167, + "element_id": 268436763, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 167, + "element_id": 268436763, + "state_id": 0 + }, + { + "panel_slug": "spellbook", + "traversal_index": 10, + "element_id": 268436140, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 10, + "element_id": 268436140, + "state_id": 0 + }, + { + "panel_slug": "spellbook", + "traversal_index": 50, + "element_id": 268436141, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 50, + "element_id": 268436141, + "state_id": 0 + }, + { + "panel_slug": "toolbar", + "traversal_index": 27, + "element_id": 268435878, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 27, + "element_id": 268435878, + "state_id": 0 + }, + { + "panel_slug": "toolbar", + "traversal_index": 37, + "element_id": 268435888, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 37, + "element_id": 268435888, + "state_id": 0 + }, + { + "panel_slug": "toolbar", + "traversal_index": 38, + "element_id": 268437174, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 38, + "element_id": 268437174, + "state_id": 0 + }, + { + "panel_slug": "toolbar", + "traversal_index": 48, + "element_id": 268437184, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 48, + "element_id": 268437184, + "state_id": 0 + }, + { + "panel_slug": "vitae", + "traversal_index": 4, + "element_id": 268435906, + "state_id": null + }, + { + "panel_slug": "vitae", + "traversal_index": 4, + "element_id": 268435906, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100682947, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CC3.png", + "width": 34, + "height": 34, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 22, + "element_id": 268436190, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 22, + "element_id": 268436190, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 32, + "element_id": 268436190, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 32, + "element_id": 268436190, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100682948, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CC4.png", + "width": 34, + "height": 34, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 23, + "element_id": 268436191, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 23, + "element_id": 268436191, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 33, + "element_id": 268436191, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 33, + "element_id": 268436191, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100682949, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CC5.png", + "width": 34, + "height": 35, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 24, + "element_id": 268436192, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 24, + "element_id": 268436192, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 34, + "element_id": 268436192, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 34, + "element_id": 268436192, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100682950, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CC6.png", + "width": 34, + "height": 35, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 25, + "element_id": 268436193, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 25, + "element_id": 268436193, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 35, + "element_id": 268436193, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 35, + "element_id": 268436193, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100682951, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CC7.png", + "width": 10, + "height": 7, + "used_by_panels": [ + "character", + "main_panel", + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 31, + "element_id": 268436028, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 31, + "element_id": 268436028, + "state_id": 0 + }, + { + "panel_slug": "character", + "traversal_index": 40, + "element_id": 268436031, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 40, + "element_id": 268436031, + "state_id": 0 + }, + { + "panel_slug": "character", + "traversal_index": 82, + "element_id": 268436028, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 82, + "element_id": 268436028, + "state_id": 0 + }, + { + "panel_slug": "character", + "traversal_index": 91, + "element_id": 268436031, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 91, + "element_id": 268436031, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 432, + "element_id": 268436028, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 432, + "element_id": 268436028, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 441, + "element_id": 268436031, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 441, + "element_id": 268436031, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 483, + "element_id": 268436028, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 483, + "element_id": 268436028, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 492, + "element_id": 268436031, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 492, + "element_id": 268436031, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 26, + "element_id": 268436194, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 26, + "element_id": 268436194, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 27, + "element_id": 268436195, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 27, + "element_id": 268436195, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 36, + "element_id": 268436194, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 36, + "element_id": 268436194, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 37, + "element_id": 268436195, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 37, + "element_id": 268436195, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100682953, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CC9.png", + "width": 2, + "height": 2, + "used_by_panels": [ + "floating_chat_1", + "floating_chat_2", + "floating_chat_3", + "floating_chat_4", + "main_panel", + "map" + ], + "used_by_nodes": [ + { + "panel_slug": "floating_chat_1", + "traversal_index": 26, + "element_id": 268436149, + "state_id": null + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 26, + "element_id": 268436149, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 27, + "element_id": 268435977, + "state_id": null + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 27, + "element_id": 268435977, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 28, + "element_id": 268435978, + "state_id": null + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 28, + "element_id": 268435978, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 29, + "element_id": 268435979, + "state_id": null + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 29, + "element_id": 268435979, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 26, + "element_id": 268436149, + "state_id": null + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 26, + "element_id": 268436149, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 27, + "element_id": 268435977, + "state_id": null + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 27, + "element_id": 268435977, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 28, + "element_id": 268435978, + "state_id": null + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 28, + "element_id": 268435978, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 29, + "element_id": 268435979, + "state_id": null + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 29, + "element_id": 268435979, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 26, + "element_id": 268436149, + "state_id": null + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 26, + "element_id": 268436149, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 27, + "element_id": 268435977, + "state_id": null + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 27, + "element_id": 268435977, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 28, + "element_id": 268435978, + "state_id": null + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 28, + "element_id": 268435978, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 29, + "element_id": 268435979, + "state_id": null + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 29, + "element_id": 268435979, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 26, + "element_id": 268436149, + "state_id": null + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 26, + "element_id": 268436149, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 27, + "element_id": 268435977, + "state_id": null + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 27, + "element_id": 268435977, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 28, + "element_id": 268435978, + "state_id": null + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 28, + "element_id": 268435978, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 29, + "element_id": 268435979, + "state_id": null + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 29, + "element_id": 268435979, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 283, + "element_id": 268436149, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 283, + "element_id": 268436149, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 284, + "element_id": 268435977, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 284, + "element_id": 268435977, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 285, + "element_id": 268435978, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 285, + "element_id": 268435978, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 286, + "element_id": 268435979, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 286, + "element_id": 268435979, + "state_id": 0 + }, + { + "panel_slug": "map", + "traversal_index": 23, + "element_id": 268436149, + "state_id": null + }, + { + "panel_slug": "map", + "traversal_index": 23, + "element_id": 268436149, + "state_id": 0 + }, + { + "panel_slug": "map", + "traversal_index": 24, + "element_id": 268435977, + "state_id": null + }, + { + "panel_slug": "map", + "traversal_index": 24, + "element_id": 268435977, + "state_id": 0 + }, + { + "panel_slug": "map", + "traversal_index": 25, + "element_id": 268435978, + "state_id": null + }, + { + "panel_slug": "map", + "traversal_index": 25, + "element_id": 268435978, + "state_id": 0 + }, + { + "panel_slug": "map", + "traversal_index": 26, + "element_id": 268435979, + "state_id": null + }, + { + "panel_slug": "map", + "traversal_index": 26, + "element_id": 268435979, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100682954, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CCA.png", + "width": 48, + "height": 48, + "used_by_panels": [ + "main_panel", + "quests" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 583, + "element_id": 268436841, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 583, + "element_id": 268436841, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 585, + "element_id": 268436843, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 585, + "element_id": 268436843, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 587, + "element_id": 268436845, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 587, + "element_id": 268436845, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 599, + "element_id": 268436851, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 599, + "element_id": 268436851, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 602, + "element_id": 268436854, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 602, + "element_id": 268436854, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 604, + "element_id": 268436856, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 604, + "element_id": 268436856, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 606, + "element_id": 268436858, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 606, + "element_id": 268436858, + "state_id": 0 + }, + { + "panel_slug": "quests", + "traversal_index": 48, + "element_id": 268436841, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 48, + "element_id": 268436841, + "state_id": 0 + }, + { + "panel_slug": "quests", + "traversal_index": 50, + "element_id": 268436843, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 50, + "element_id": 268436843, + "state_id": 0 + }, + { + "panel_slug": "quests", + "traversal_index": 52, + "element_id": 268436845, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 52, + "element_id": 268436845, + "state_id": 0 + }, + { + "panel_slug": "quests", + "traversal_index": 64, + "element_id": 268436851, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 64, + "element_id": 268436851, + "state_id": 0 + }, + { + "panel_slug": "quests", + "traversal_index": 67, + "element_id": 268436854, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 67, + "element_id": 268436854, + "state_id": 0 + }, + { + "panel_slug": "quests", + "traversal_index": 69, + "element_id": 268436856, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 69, + "element_id": 268436856, + "state_id": 0 + }, + { + "panel_slug": "quests", + "traversal_index": 71, + "element_id": 268436858, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 71, + "element_id": 268436858, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100682970, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CDA.png", + "width": 100, + "height": 32, + "used_by_panels": [ + "main_panel", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 847, + "element_id": 268436133, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 847, + "element_id": 268436133, + "state_id": 1 + }, + { + "panel_slug": "spellbook", + "traversal_index": 48, + "element_id": 268436133, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 48, + "element_id": 268436133, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100682971, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CDB.png", + "width": 100, + "height": 32, + "used_by_panels": [ + "main_panel", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 847, + "element_id": 268436133, + "state_id": 3 + }, + { + "panel_slug": "spellbook", + "traversal_index": 48, + "element_id": 268436133, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100682972, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CDC.png", + "width": 23, + "height": 36, + "used_by_panels": [ + "combat", + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 54, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 54, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "combat", + "traversal_index": 54, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "combat", + "traversal_index": 59, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 59, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "combat", + "traversal_index": 59, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "combat", + "traversal_index": 64, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 64, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "combat", + "traversal_index": 64, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "combat", + "traversal_index": 69, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 69, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "combat", + "traversal_index": 69, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "combat", + "traversal_index": 74, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 74, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "combat", + "traversal_index": 74, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "combat", + "traversal_index": 79, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 79, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "combat", + "traversal_index": 79, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "combat", + "traversal_index": 84, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 84, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "combat", + "traversal_index": 84, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "combat", + "traversal_index": 89, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 89, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "combat", + "traversal_index": 89, + "element_id": 268435569, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 21, + "element_id": 268435569, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 21, + "element_id": 268435569, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 21, + "element_id": 268435569, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100682973, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CDD.png", + "width": 23, + "height": 36, + "used_by_panels": [ + "combat", + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 54, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "combat", + "traversal_index": 59, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "combat", + "traversal_index": 64, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "combat", + "traversal_index": 69, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "combat", + "traversal_index": 74, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "combat", + "traversal_index": 79, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "combat", + "traversal_index": 84, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "combat", + "traversal_index": 89, + "element_id": 268435569, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 21, + "element_id": 268435569, + "state_id": 2 + } + ] + }, + { + "key": { + "image_id": 100682974, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CDE.png", + "width": 23, + "height": 36, + "used_by_panels": [ + "combat", + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 55, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 55, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "combat", + "traversal_index": 55, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "combat", + "traversal_index": 60, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 60, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "combat", + "traversal_index": 60, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "combat", + "traversal_index": 65, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 65, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "combat", + "traversal_index": 65, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "combat", + "traversal_index": 70, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 70, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "combat", + "traversal_index": 70, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "combat", + "traversal_index": 75, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 75, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "combat", + "traversal_index": 75, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "combat", + "traversal_index": 80, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 80, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "combat", + "traversal_index": 80, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "combat", + "traversal_index": 85, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 85, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "combat", + "traversal_index": 85, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "combat", + "traversal_index": 90, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 90, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "combat", + "traversal_index": 90, + "element_id": 268435570, + "state_id": 3 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 22, + "element_id": 268435570, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 22, + "element_id": 268435570, + "state_id": 1 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 22, + "element_id": 268435570, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100682975, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CDF.png", + "width": 23, + "height": 36, + "used_by_panels": [ + "combat", + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 55, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "combat", + "traversal_index": 60, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "combat", + "traversal_index": 65, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "combat", + "traversal_index": 70, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "combat", + "traversal_index": 75, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "combat", + "traversal_index": 80, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "combat", + "traversal_index": 85, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "combat", + "traversal_index": 90, + "element_id": 268435570, + "state_id": 2 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 22, + "element_id": 268435570, + "state_id": 2 + } + ] + }, + { + "key": { + "image_id": 100682984, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CE8.png", + "width": 20, + "height": 28, + "used_by_panels": [ + "indicators" + ], + "used_by_nodes": [ + { + "panel_slug": "indicators", + "traversal_index": 28, + "element_id": 268435698, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 28, + "element_id": 268435698, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100682988, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CEC.png", + "width": 55, + "height": 58, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 2, + "element_id": 268435858, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 2, + "element_id": 268435858, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100682989, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CED.png", + "width": 55, + "height": 58, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 2, + "element_id": 268435858, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100682990, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CEE.png", + "width": 55, + "height": 58, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 3, + "element_id": 268435859, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 3, + "element_id": 268435859, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100682991, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CEF.png", + "width": 55, + "height": 58, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 3, + "element_id": 268435859, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100682992, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CF0.png", + "width": 55, + "height": 58, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 4, + "element_id": 268435860, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 4, + "element_id": 268435860, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100682993, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CF1.png", + "width": 55, + "height": 58, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 4, + "element_id": 268435860, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100682994, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CF2.png", + "width": 55, + "height": 58, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 5, + "element_id": 268435861, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 5, + "element_id": 268435861, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100682995, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CF3.png", + "width": 55, + "height": 58, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 5, + "element_id": 268435861, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100682996, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CF4.png", + "width": 146, + "height": 31, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 17, + "element_id": 268435872, + "state_id": 268435468 + } + ] + }, + { + "key": { + "image_id": 100682997, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CF5.png", + "width": 50, + "height": 14, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 22, + "element_id": 268435875, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 22, + "element_id": 268435875, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100682998, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CF6.png", + "width": 140, + "height": 14, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 24, + "element_id": 4, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 24, + "element_id": 4, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100682999, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CF7.png", + "width": 63, + "height": 58, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 49, + "element_id": 268435889, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 49, + "element_id": 268435889, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100683000, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CF8.png", + "width": 63, + "height": 58, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 49, + "element_id": 268435889, + "state_id": 6 + } + ] + }, + { + "key": { + "image_id": 100683002, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CFA.png", + "width": 276, + "height": 25, + "used_by_panels": [ + "inventory", + "main_panel", + "negative_effects", + "positive_effects", + "vitae" + ], + "used_by_nodes": [ + { + "panel_slug": "inventory", + "traversal_index": 58, + "element_id": 268435923, + "state_id": null + }, + { + "panel_slug": "inventory", + "traversal_index": 58, + "element_id": 268435923, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 20, + "element_id": 268435709, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 20, + "element_id": 268435709, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 86, + "element_id": 268435710, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 86, + "element_id": 268435710, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 98, + "element_id": 268435744, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 98, + "element_id": 268435744, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 118, + "element_id": 268435744, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 118, + "element_id": 268435744, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 138, + "element_id": 268435709, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 138, + "element_id": 268435709, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 144, + "element_id": 268435820, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 144, + "element_id": 268435820, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 158, + "element_id": 268435709, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 158, + "element_id": 268435709, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 197, + "element_id": 268435709, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 197, + "element_id": 268435709, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 259, + "element_id": 268435923, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 259, + "element_id": 268435923, + "state_id": 0 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 2, + "element_id": 268435744, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 2, + "element_id": 268435744, + "state_id": 0 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 22, + "element_id": 268435744, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 22, + "element_id": 268435744, + "state_id": 0 + }, + { + "panel_slug": "negative_effects", + "traversal_index": 42, + "element_id": 268435744, + "state_id": null + }, + { + "panel_slug": "negative_effects", + "traversal_index": 42, + "element_id": 268435744, + "state_id": 0 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 2, + "element_id": 268435744, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 2, + "element_id": 268435744, + "state_id": 0 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 22, + "element_id": 268435744, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 22, + "element_id": 268435744, + "state_id": 0 + }, + { + "panel_slug": "positive_effects", + "traversal_index": 42, + "element_id": 268435744, + "state_id": null + }, + { + "panel_slug": "positive_effects", + "traversal_index": 42, + "element_id": 268435744, + "state_id": 0 + }, + { + "panel_slug": "vitae", + "traversal_index": 2, + "element_id": 268435709, + "state_id": null + }, + { + "panel_slug": "vitae", + "traversal_index": 2, + "element_id": 268435709, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100683004, + "alpha_image_id": null + }, + "relative_path": "images/0x06004CFC.png", + "width": 32, + "height": 32, + "used_by_panels": [ + "examine" + ], + "used_by_nodes": [ + { + "panel_slug": "examine", + "traversal_index": 66, + "element_id": 268435807, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 66, + "element_id": 268435807, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100683017, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D09.png", + "width": 32, + "height": 32, + "used_by_panels": [ + "combat" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 95, + "element_id": 268436564, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 95, + "element_id": 268436564, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100683018, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D0A.png", + "width": 300, + "height": 362, + "used_by_panels": [ + "inventory", + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "inventory", + "traversal_index": 55, + "element_id": 268435920, + "state_id": null + }, + { + "panel_slug": "inventory", + "traversal_index": 55, + "element_id": 268435920, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 256, + "element_id": 268435920, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 256, + "element_id": 268435920, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100683019, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D0B.png", + "width": 48, + "height": 48, + "used_by_panels": [ + "inventory", + "main_panel", + "powerbar", + "smartbox", + "social" + ], + "used_by_nodes": [ + { + "panel_slug": "inventory", + "traversal_index": 56, + "element_id": 268435921, + "state_id": null + }, + { + "panel_slug": "inventory", + "traversal_index": 56, + "element_id": 268435921, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 257, + "element_id": 268435921, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 257, + "element_id": 268435921, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 668, + "element_id": 268436064, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 668, + "element_id": 268436064, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 712, + "element_id": 268436089, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 712, + "element_id": 268436089, + "state_id": 0 + }, + { + "panel_slug": "powerbar", + "traversal_index": 17, + "element_id": 268435508, + "state_id": null + }, + { + "panel_slug": "powerbar", + "traversal_index": 17, + "element_id": 268435508, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 16, + "element_id": 268435508, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 16, + "element_id": 268435508, + "state_id": 0 + }, + { + "panel_slug": "social", + "traversal_index": 41, + "element_id": 268436064, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 41, + "element_id": 268436064, + "state_id": 0 + }, + { + "panel_slug": "social", + "traversal_index": 85, + "element_id": 268436089, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 85, + "element_id": 268436089, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100683020, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D0C.png", + "width": 24, + "height": 25, + "used_by_panels": [ + "inventory", + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "inventory", + "traversal_index": 57, + "element_id": 268435922, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 258, + "element_id": 268435922, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100683021, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D0D.png", + "width": 24, + "height": 25, + "used_by_panels": [ + "inventory", + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "inventory", + "traversal_index": 57, + "element_id": 268435922, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 258, + "element_id": 268435922, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100683024, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D10.png", + "width": 17, + "height": 16, + "used_by_panels": [ + "main_panel", + "map" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 280, + "element_id": 268435949, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 280, + "element_id": 268435949, + "state_id": 0 + }, + { + "panel_slug": "map", + "traversal_index": 20, + "element_id": 268435949, + "state_id": null + }, + { + "panel_slug": "map", + "traversal_index": 20, + "element_id": 268435949, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100683025, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D11.png", + "width": 8, + "height": 8, + "used_by_panels": [ + "main_panel", + "map" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 281, + "element_id": 268435950, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 281, + "element_id": 268435950, + "state_id": 0 + }, + { + "panel_slug": "map", + "traversal_index": 21, + "element_id": 268435950, + "state_id": null + }, + { + "panel_slug": "map", + "traversal_index": 21, + "element_id": 268435950, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100683029, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D15.png", + "width": 13, + "height": 13, + "used_by_panels": [ + "combat", + "inventory", + "main_panel", + "options", + "smartbox", + "social", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 30, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 30, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "combat", + "traversal_index": 32, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 32, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "combat", + "traversal_index": 34, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 34, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "inventory", + "traversal_index": 6, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "inventory", + "traversal_index": 6, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 207, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 207, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 677, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 677, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 697, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 697, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 699, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 699, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 701, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 701, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 703, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 703, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 783, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 783, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 820, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 820, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 822, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 822, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 824, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 824, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 826, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 826, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 828, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 828, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 830, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 830, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 832, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 832, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 834, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 834, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 836, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 836, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 838, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 838, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 840, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 840, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 842, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 842, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 844, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 844, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 115, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 115, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 128, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 128, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 133, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 133, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 146, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 146, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "smartbox", + "traversal_index": 82, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 82, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "smartbox", + "traversal_index": 84, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 84, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "smartbox", + "traversal_index": 86, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 86, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 50, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 50, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 70, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 70, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 72, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 72, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 74, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 74, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 76, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 76, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "social", + "traversal_index": 156, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 156, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "spellbook", + "traversal_index": 21, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 21, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "spellbook", + "traversal_index": 23, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 23, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "spellbook", + "traversal_index": 25, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 25, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "spellbook", + "traversal_index": 27, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 27, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "spellbook", + "traversal_index": 29, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 29, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "spellbook", + "traversal_index": 31, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 31, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "spellbook", + "traversal_index": 33, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 33, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "spellbook", + "traversal_index": 35, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 35, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "spellbook", + "traversal_index": 37, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 37, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "spellbook", + "traversal_index": 39, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 39, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "spellbook", + "traversal_index": 41, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 41, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "spellbook", + "traversal_index": 43, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 43, + "element_id": 268436264, + "state_id": 1 + }, + { + "panel_slug": "spellbook", + "traversal_index": 45, + "element_id": 268436264, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 45, + "element_id": 268436264, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100683030, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D16.png", + "width": 13, + "height": 13, + "used_by_panels": [ + "combat", + "inventory", + "main_panel", + "options", + "smartbox", + "social", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 30, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "combat", + "traversal_index": 32, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "combat", + "traversal_index": 34, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "inventory", + "traversal_index": 6, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 207, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 677, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 697, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 699, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 701, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 703, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 783, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 820, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 822, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 824, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 826, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 828, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 830, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 832, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 834, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 836, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 838, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 840, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 842, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 844, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 115, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 128, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 133, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 146, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "smartbox", + "traversal_index": 82, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "smartbox", + "traversal_index": 84, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "smartbox", + "traversal_index": 86, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 50, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 70, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 72, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 74, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 76, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "social", + "traversal_index": 156, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "spellbook", + "traversal_index": 21, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "spellbook", + "traversal_index": 23, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "spellbook", + "traversal_index": 25, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "spellbook", + "traversal_index": 27, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "spellbook", + "traversal_index": 29, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "spellbook", + "traversal_index": 31, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "spellbook", + "traversal_index": 33, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "spellbook", + "traversal_index": 35, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "spellbook", + "traversal_index": 37, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "spellbook", + "traversal_index": 39, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "spellbook", + "traversal_index": 41, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "spellbook", + "traversal_index": 43, + "element_id": 268436264, + "state_id": 3 + }, + { + "panel_slug": "spellbook", + "traversal_index": 45, + "element_id": 268436264, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100683031, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D17.png", + "width": 13, + "height": 13, + "used_by_panels": [ + "combat", + "inventory", + "main_panel", + "options", + "smartbox", + "social", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 30, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "combat", + "traversal_index": 32, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "combat", + "traversal_index": 34, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "inventory", + "traversal_index": 6, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "main_panel", + "traversal_index": 207, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "main_panel", + "traversal_index": 677, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "main_panel", + "traversal_index": 697, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "main_panel", + "traversal_index": 699, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "main_panel", + "traversal_index": 701, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "main_panel", + "traversal_index": 703, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "main_panel", + "traversal_index": 783, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "main_panel", + "traversal_index": 820, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "main_panel", + "traversal_index": 822, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "main_panel", + "traversal_index": 824, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "main_panel", + "traversal_index": 826, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "main_panel", + "traversal_index": 828, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "main_panel", + "traversal_index": 830, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "main_panel", + "traversal_index": 832, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "main_panel", + "traversal_index": 834, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "main_panel", + "traversal_index": 836, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "main_panel", + "traversal_index": 838, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "main_panel", + "traversal_index": 840, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "main_panel", + "traversal_index": 842, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "main_panel", + "traversal_index": 844, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "options", + "traversal_index": 115, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "options", + "traversal_index": 128, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "options", + "traversal_index": 133, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "options", + "traversal_index": 146, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "smartbox", + "traversal_index": 82, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "smartbox", + "traversal_index": 84, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "smartbox", + "traversal_index": 86, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "social", + "traversal_index": 50, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "social", + "traversal_index": 70, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "social", + "traversal_index": 72, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "social", + "traversal_index": 74, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "social", + "traversal_index": 76, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "social", + "traversal_index": 156, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "spellbook", + "traversal_index": 21, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "spellbook", + "traversal_index": 23, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "spellbook", + "traversal_index": 25, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "spellbook", + "traversal_index": 27, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "spellbook", + "traversal_index": 29, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "spellbook", + "traversal_index": 31, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "spellbook", + "traversal_index": 33, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "spellbook", + "traversal_index": 35, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "spellbook", + "traversal_index": 37, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "spellbook", + "traversal_index": 39, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "spellbook", + "traversal_index": 41, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "spellbook", + "traversal_index": 43, + "element_id": 268436264, + "state_id": 6 + }, + { + "panel_slug": "spellbook", + "traversal_index": 45, + "element_id": 268436264, + "state_id": 6 + } + ] + }, + { + "key": { + "image_id": 100683032, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D18.png", + "width": 13, + "height": 13, + "used_by_panels": [ + "combat", + "inventory", + "main_panel", + "options", + "smartbox", + "social", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 30, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "combat", + "traversal_index": 32, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "combat", + "traversal_index": 34, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "inventory", + "traversal_index": 6, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "main_panel", + "traversal_index": 207, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "main_panel", + "traversal_index": 677, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "main_panel", + "traversal_index": 697, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "main_panel", + "traversal_index": 699, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "main_panel", + "traversal_index": 701, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "main_panel", + "traversal_index": 703, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "main_panel", + "traversal_index": 783, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "main_panel", + "traversal_index": 820, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "main_panel", + "traversal_index": 822, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "main_panel", + "traversal_index": 824, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "main_panel", + "traversal_index": 826, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "main_panel", + "traversal_index": 828, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "main_panel", + "traversal_index": 830, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "main_panel", + "traversal_index": 832, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "main_panel", + "traversal_index": 834, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "main_panel", + "traversal_index": 836, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "main_panel", + "traversal_index": 838, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "main_panel", + "traversal_index": 840, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "main_panel", + "traversal_index": 842, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "main_panel", + "traversal_index": 844, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "options", + "traversal_index": 115, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "options", + "traversal_index": 128, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "options", + "traversal_index": 133, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "options", + "traversal_index": 146, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "smartbox", + "traversal_index": 82, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "smartbox", + "traversal_index": 84, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "smartbox", + "traversal_index": 86, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "social", + "traversal_index": 50, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "social", + "traversal_index": 70, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "social", + "traversal_index": 72, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "social", + "traversal_index": 74, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "social", + "traversal_index": 76, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "social", + "traversal_index": 156, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "spellbook", + "traversal_index": 21, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "spellbook", + "traversal_index": 23, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "spellbook", + "traversal_index": 25, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "spellbook", + "traversal_index": 27, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "spellbook", + "traversal_index": 29, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "spellbook", + "traversal_index": 31, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "spellbook", + "traversal_index": 33, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "spellbook", + "traversal_index": 35, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "spellbook", + "traversal_index": 37, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "spellbook", + "traversal_index": 39, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "spellbook", + "traversal_index": 41, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "spellbook", + "traversal_index": 43, + "element_id": 268436264, + "state_id": 8 + }, + { + "panel_slug": "spellbook", + "traversal_index": 45, + "element_id": 268436264, + "state_id": 8 + } + ] + }, + { + "key": { + "image_id": 100683033, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D19.png", + "width": 13, + "height": 13, + "used_by_panels": [ + "combat", + "inventory", + "main_panel", + "options", + "smartbox", + "social", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 30, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "combat", + "traversal_index": 32, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "combat", + "traversal_index": 34, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "inventory", + "traversal_index": 6, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 207, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 677, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 697, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 699, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 701, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 703, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 783, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 820, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 822, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 824, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 826, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 828, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 830, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 832, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 834, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 836, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 838, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 840, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 842, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 844, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 115, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 128, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 133, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 146, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "smartbox", + "traversal_index": 82, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "smartbox", + "traversal_index": 84, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "smartbox", + "traversal_index": 86, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 50, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 70, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 72, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 74, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 76, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "social", + "traversal_index": 156, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "spellbook", + "traversal_index": 21, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "spellbook", + "traversal_index": 23, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "spellbook", + "traversal_index": 25, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "spellbook", + "traversal_index": 27, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "spellbook", + "traversal_index": 29, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "spellbook", + "traversal_index": 31, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "spellbook", + "traversal_index": 33, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "spellbook", + "traversal_index": 35, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "spellbook", + "traversal_index": 37, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "spellbook", + "traversal_index": 39, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "spellbook", + "traversal_index": 41, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "spellbook", + "traversal_index": 43, + "element_id": 268436264, + "state_id": 13 + }, + { + "panel_slug": "spellbook", + "traversal_index": 45, + "element_id": 268436264, + "state_id": 13 + } + ] + }, + { + "key": { + "image_id": 100683036, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D1C.png", + "width": 72, + "height": 19, + "used_by_panels": [ + "combat" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 36, + "element_id": 268435543, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 36, + "element_id": 268435543, + "state_id": 1 + }, + { + "panel_slug": "combat", + "traversal_index": 37, + "element_id": 268435544, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 37, + "element_id": 268435544, + "state_id": 1 + }, + { + "panel_slug": "combat", + "traversal_index": 38, + "element_id": 268435545, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 38, + "element_id": 268435545, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100683037, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D1D.png", + "width": 72, + "height": 19, + "used_by_panels": [ + "combat" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 36, + "element_id": 268435543, + "state_id": 3 + }, + { + "panel_slug": "combat", + "traversal_index": 37, + "element_id": 268435544, + "state_id": 3 + }, + { + "panel_slug": "combat", + "traversal_index": 38, + "element_id": 268435545, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100683038, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D1E.png", + "width": 72, + "height": 19, + "used_by_panels": [ + "combat" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 36, + "element_id": 268435543, + "state_id": 6 + }, + { + "panel_slug": "combat", + "traversal_index": 37, + "element_id": 268435544, + "state_id": 6 + }, + { + "panel_slug": "combat", + "traversal_index": 38, + "element_id": 268435545, + "state_id": 6 + } + ] + }, + { + "key": { + "image_id": 100683039, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D1F.png", + "width": 72, + "height": 19, + "used_by_panels": [ + "combat" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 36, + "element_id": 268435543, + "state_id": 8 + }, + { + "panel_slug": "combat", + "traversal_index": 37, + "element_id": 268435544, + "state_id": 8 + }, + { + "panel_slug": "combat", + "traversal_index": 38, + "element_id": 268435545, + "state_id": 8 + } + ] + }, + { + "key": { + "image_id": 100683076, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D44.png", + "width": 110, + "height": 112, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 41, + "element_id": 268436237, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 41, + "element_id": 268436237, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100683077, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D45.png", + "width": 110, + "height": 112, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 42, + "element_id": 268436238, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 42, + "element_id": 268436238, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100683078, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D46.png", + "width": 37, + "height": 44, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 43, + "element_id": 268436239, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 43, + "element_id": 268436239, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 44, + "element_id": 268436240, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 44, + "element_id": 268436240, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 45, + "element_id": 268436241, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 45, + "element_id": 268436241, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 46, + "element_id": 268436242, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 46, + "element_id": 268436242, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 47, + "element_id": 268436243, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 47, + "element_id": 268436243, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 48, + "element_id": 268436244, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 48, + "element_id": 268436244, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 49, + "element_id": 268436245, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 49, + "element_id": 268436245, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 50, + "element_id": 268436246, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 50, + "element_id": 268436246, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 51, + "element_id": 268436247, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 51, + "element_id": 268436247, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100683079, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D47.png", + "width": 33, + "height": 29, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 52, + "element_id": 268436248, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 52, + "element_id": 268436248, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100683080, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D48.png", + "width": 31, + "height": 30, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 53, + "element_id": 268436249, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 53, + "element_id": 268436249, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100683081, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D49.png", + "width": 34, + "height": 34, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 54, + "element_id": 268436250, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 54, + "element_id": 268436250, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100683082, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D4A.png", + "width": 31, + "height": 32, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 55, + "element_id": 268436251, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 55, + "element_id": 268436251, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100683083, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D4B.png", + "width": 36, + "height": 32, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 56, + "element_id": 268436252, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 56, + "element_id": 268436252, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100683084, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D4C.png", + "width": 35, + "height": 32, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 57, + "element_id": 268436253, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 57, + "element_id": 268436253, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100683085, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D4D.png", + "width": 29, + "height": 36, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 58, + "element_id": 268436254, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 58, + "element_id": 268436254, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100683086, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D4E.png", + "width": 30, + "height": 35, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 59, + "element_id": 268436255, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 59, + "element_id": 268436255, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100683087, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D4F.png", + "width": 32, + "height": 31, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 60, + "element_id": 268436256, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 60, + "element_id": 268436256, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100683088, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D50.png", + "width": 33, + "height": 21, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 62, + "element_id": 1, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 62, + "element_id": 1, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100683089, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D51.png", + "width": 60, + "height": 54, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 79, + "element_id": 268436900, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 79, + "element_id": 268436900, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100683090, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D52.png", + "width": 60, + "height": 54, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 79, + "element_id": 268436900, + "state_id": 2 + } + ] + }, + { + "key": { + "image_id": 100683091, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D53.png", + "width": 59, + "height": 54, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 80, + "element_id": 268436901, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 80, + "element_id": 268436901, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100683092, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D54.png", + "width": 59, + "height": 54, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 80, + "element_id": 268436901, + "state_id": 2 + } + ] + }, + { + "key": { + "image_id": 100683109, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D65.png", + "width": 46, + "height": 17, + "used_by_panels": [ + "main_chat" + ], + "used_by_nodes": [ + { + "panel_slug": "main_chat", + "traversal_index": 33, + "element_id": 268435476, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 33, + "element_id": 268435476, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100683110, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D66.png", + "width": 46, + "height": 17, + "used_by_panels": [ + "main_chat" + ], + "used_by_nodes": [ + { + "panel_slug": "main_chat", + "traversal_index": 33, + "element_id": 268435476, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100683111, + "alpha_image_id": null + }, + "relative_path": "images/0x06004D67.png", + "width": 1, + "height": 17, + "used_by_panels": [ + "main_chat" + ], + "used_by_nodes": [ + { + "panel_slug": "main_chat", + "traversal_index": 36, + "element_id": 268435479, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 36, + "element_id": 268435479, + "state_id": 4 + }, + { + "panel_slug": "main_chat", + "traversal_index": 37, + "element_id": 268435480, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 37, + "element_id": 268435480, + "state_id": 4 + } + ] + }, + { + "key": { + "image_id": 100687250, + "alpha_image_id": null + }, + "relative_path": "images/0x06005D92.png", + "width": 17, + "height": 25, + "used_by_panels": [ + "character", + "main_panel", + "map", + "options", + "quests", + "social", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 2, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "character", + "traversal_index": 6, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "character", + "traversal_index": 10, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 262, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 266, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 292, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 296, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 300, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 304, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 403, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 407, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 411, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 537, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 541, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 545, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 629, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 633, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 637, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 641, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 801, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 805, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "map", + "traversal_index": 2, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "map", + "traversal_index": 6, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "options", + "traversal_index": 2, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "options", + "traversal_index": 6, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "options", + "traversal_index": 10, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "options", + "traversal_index": 14, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "quests", + "traversal_index": 2, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "quests", + "traversal_index": 6, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "quests", + "traversal_index": 10, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "social", + "traversal_index": 2, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "social", + "traversal_index": 6, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "social", + "traversal_index": 10, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "social", + "traversal_index": 14, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "spellbook", + "traversal_index": 2, + "element_id": 268436537, + "state_id": 12 + }, + { + "panel_slug": "spellbook", + "traversal_index": 6, + "element_id": 268436537, + "state_id": 12 + } + ] + }, + { + "key": { + "image_id": 100687251, + "alpha_image_id": null + }, + "relative_path": "images/0x06005D93.png", + "width": 17, + "height": 25, + "used_by_panels": [ + "character", + "main_panel", + "map", + "options", + "quests", + "social", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 2, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 2, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "character", + "traversal_index": 6, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 6, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "character", + "traversal_index": 10, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 10, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 262, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 262, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 266, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 266, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 292, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 292, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 296, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 296, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 300, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 300, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 304, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 304, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 403, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 403, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 407, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 407, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 411, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 411, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 537, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 537, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 541, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 541, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 545, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 545, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 629, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 629, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 633, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 633, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 637, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 637, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 641, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 641, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 801, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 801, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 805, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 805, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "map", + "traversal_index": 2, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "map", + "traversal_index": 2, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "map", + "traversal_index": 6, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "map", + "traversal_index": 6, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "options", + "traversal_index": 2, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 2, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "options", + "traversal_index": 6, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 6, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "options", + "traversal_index": 10, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 10, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "options", + "traversal_index": 14, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 14, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "quests", + "traversal_index": 2, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 2, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "quests", + "traversal_index": 6, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 6, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "quests", + "traversal_index": 10, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 10, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "social", + "traversal_index": 2, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 2, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "social", + "traversal_index": 6, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 6, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "social", + "traversal_index": 10, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 10, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "social", + "traversal_index": 14, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 14, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "spellbook", + "traversal_index": 2, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 2, + "element_id": 268436537, + "state_id": 11 + }, + { + "panel_slug": "spellbook", + "traversal_index": 6, + "element_id": 268436537, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 6, + "element_id": 268436537, + "state_id": 11 + } + ] + }, + { + "key": { + "image_id": 100687252, + "alpha_image_id": null + }, + "relative_path": "images/0x06005D94.png", + "width": 12, + "height": 25, + "used_by_panels": [ + "character", + "main_panel", + "map", + "options", + "quests", + "social", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 3, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "character", + "traversal_index": 7, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "character", + "traversal_index": 11, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 263, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 267, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 293, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 297, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 301, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 305, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 404, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 408, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 412, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 538, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 542, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 546, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 630, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 634, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 638, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 642, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 802, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 806, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "map", + "traversal_index": 3, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "map", + "traversal_index": 7, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "options", + "traversal_index": 3, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "options", + "traversal_index": 7, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "options", + "traversal_index": 11, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "options", + "traversal_index": 15, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "quests", + "traversal_index": 3, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "quests", + "traversal_index": 7, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "quests", + "traversal_index": 11, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "social", + "traversal_index": 3, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "social", + "traversal_index": 7, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "social", + "traversal_index": 11, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "social", + "traversal_index": 15, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "spellbook", + "traversal_index": 3, + "element_id": 268435689, + "state_id": 12 + }, + { + "panel_slug": "spellbook", + "traversal_index": 7, + "element_id": 268435689, + "state_id": 12 + } + ] + }, + { + "key": { + "image_id": 100687253, + "alpha_image_id": null + }, + "relative_path": "images/0x06005D95.png", + "width": 12, + "height": 25, + "used_by_panels": [ + "character", + "main_panel", + "map", + "options", + "quests", + "social", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 3, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 3, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "character", + "traversal_index": 7, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 7, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "character", + "traversal_index": 11, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 11, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 263, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 263, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 267, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 267, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 293, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 293, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 297, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 297, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 301, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 301, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 305, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 305, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 404, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 404, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 408, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 408, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 412, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 412, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 538, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 538, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 542, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 542, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 546, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 546, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 630, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 630, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 634, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 634, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 638, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 638, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 642, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 642, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 802, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 802, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 806, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 806, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "map", + "traversal_index": 3, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "map", + "traversal_index": 3, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "map", + "traversal_index": 7, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "map", + "traversal_index": 7, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "options", + "traversal_index": 3, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 3, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "options", + "traversal_index": 7, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 7, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "options", + "traversal_index": 11, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 11, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "options", + "traversal_index": 15, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 15, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "quests", + "traversal_index": 3, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 3, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "quests", + "traversal_index": 7, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 7, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "quests", + "traversal_index": 11, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 11, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "social", + "traversal_index": 3, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 3, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "social", + "traversal_index": 7, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 7, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "social", + "traversal_index": 11, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 11, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "social", + "traversal_index": 15, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 15, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "spellbook", + "traversal_index": 3, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 3, + "element_id": 268435689, + "state_id": 11 + }, + { + "panel_slug": "spellbook", + "traversal_index": 7, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 7, + "element_id": 268435689, + "state_id": 11 + } + ] + }, + { + "key": { + "image_id": 100687254, + "alpha_image_id": null + }, + "relative_path": "images/0x06005D96.png", + "width": 17, + "height": 25, + "used_by_panels": [ + "character", + "main_panel", + "map", + "options", + "quests", + "social", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 4, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "character", + "traversal_index": 8, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "character", + "traversal_index": 12, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 264, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 268, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 294, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 298, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 302, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 306, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 405, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 409, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 413, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 539, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 543, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 547, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 631, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 635, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 639, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 643, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 803, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "main_panel", + "traversal_index": 807, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "map", + "traversal_index": 4, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "map", + "traversal_index": 8, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "options", + "traversal_index": 4, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "options", + "traversal_index": 8, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "options", + "traversal_index": 12, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "options", + "traversal_index": 16, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "quests", + "traversal_index": 4, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "quests", + "traversal_index": 8, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "quests", + "traversal_index": 12, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "social", + "traversal_index": 4, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "social", + "traversal_index": 8, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "social", + "traversal_index": 12, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "social", + "traversal_index": 16, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "spellbook", + "traversal_index": 4, + "element_id": 268435989, + "state_id": 12 + }, + { + "panel_slug": "spellbook", + "traversal_index": 8, + "element_id": 268435989, + "state_id": 12 + } + ] + }, + { + "key": { + "image_id": 100687255, + "alpha_image_id": null + }, + "relative_path": "images/0x06005D97.png", + "width": 17, + "height": 25, + "used_by_panels": [ + "character", + "main_panel", + "map", + "options", + "quests", + "social", + "spellbook" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 4, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 4, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "character", + "traversal_index": 8, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 8, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "character", + "traversal_index": 12, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 12, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 264, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 264, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 268, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 268, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 294, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 294, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 298, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 298, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 302, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 302, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 306, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 306, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 405, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 405, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 409, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 409, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 413, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 413, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 539, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 539, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 543, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 543, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 547, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 547, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 631, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 631, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 635, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 635, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 639, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 639, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 643, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 643, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 803, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 803, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "main_panel", + "traversal_index": 807, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 807, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "map", + "traversal_index": 4, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "map", + "traversal_index": 4, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "map", + "traversal_index": 8, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "map", + "traversal_index": 8, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "options", + "traversal_index": 4, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 4, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "options", + "traversal_index": 8, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 8, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "options", + "traversal_index": 12, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 12, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "options", + "traversal_index": 16, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 16, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "quests", + "traversal_index": 4, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 4, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "quests", + "traversal_index": 8, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 8, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "quests", + "traversal_index": 12, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "quests", + "traversal_index": 12, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "social", + "traversal_index": 4, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 4, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "social", + "traversal_index": 8, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 8, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "social", + "traversal_index": 12, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 12, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "social", + "traversal_index": 16, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "social", + "traversal_index": 16, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "spellbook", + "traversal_index": 4, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 4, + "element_id": 268435989, + "state_id": 11 + }, + { + "panel_slug": "spellbook", + "traversal_index": 8, + "element_id": 268435989, + "state_id": null + }, + { + "panel_slug": "spellbook", + "traversal_index": 8, + "element_id": 268435989, + "state_id": 11 + } + ] + }, + { + "key": { + "image_id": 100687271, + "alpha_image_id": null + }, + "relative_path": "images/0x06005DA7.png", + "width": 60, + "height": 54, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 79, + "element_id": 268436900, + "state_id": 6 + }, + { + "panel_slug": "smartbox", + "traversal_index": 79, + "element_id": 268436900, + "state_id": 7 + } + ] + }, + { + "key": { + "image_id": 100687272, + "alpha_image_id": null + }, + "relative_path": "images/0x06005DA8.png", + "width": 59, + "height": 54, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 80, + "element_id": 268436901, + "state_id": 6 + }, + { + "panel_slug": "smartbox", + "traversal_index": 80, + "element_id": 268436901, + "state_id": 7 + } + ] + }, + { + "key": { + "image_id": 100687299, + "alpha_image_id": null + }, + "relative_path": "images/0x06005DC3.png", + "width": 16, + "height": 14, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 25, + "element_id": 1, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 25, + "element_id": 1, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100687460, + "alpha_image_id": null + }, + "relative_path": "images/0x06005E64.png", + "width": 16, + "height": 16, + "used_by_panels": [ + "main_chat" + ], + "used_by_nodes": [ + { + "panel_slug": "main_chat", + "traversal_index": 27, + "element_id": 268436591, + "state_id": 268435527 + } + ] + }, + { + "key": { + "image_id": 100687461, + "alpha_image_id": null + }, + "relative_path": "images/0x06005E65.png", + "width": 16, + "height": 16, + "used_by_panels": [ + "main_chat" + ], + "used_by_nodes": [ + { + "panel_slug": "main_chat", + "traversal_index": 27, + "element_id": 268436591, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 27, + "element_id": 268436591, + "state_id": 268435528 + } + ] + }, + { + "key": { + "image_id": 100687544, + "alpha_image_id": null + }, + "relative_path": "images/0x06005EB8.png", + "width": 47, + "height": 20, + "used_by_panels": [ + "combat" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 44, + "element_id": 268435619, + "state_id": 12 + }, + { + "panel_slug": "combat", + "traversal_index": 45, + "element_id": 268435620, + "state_id": 12 + }, + { + "panel_slug": "combat", + "traversal_index": 46, + "element_id": 268435621, + "state_id": 12 + }, + { + "panel_slug": "combat", + "traversal_index": 47, + "element_id": 268435622, + "state_id": 12 + }, + { + "panel_slug": "combat", + "traversal_index": 48, + "element_id": 268435623, + "state_id": 12 + }, + { + "panel_slug": "combat", + "traversal_index": 49, + "element_id": 268435624, + "state_id": 12 + }, + { + "panel_slug": "combat", + "traversal_index": 50, + "element_id": 268435625, + "state_id": 12 + }, + { + "panel_slug": "combat", + "traversal_index": 51, + "element_id": 268436930, + "state_id": 12 + } + ] + }, + { + "key": { + "image_id": 100687545, + "alpha_image_id": null + }, + "relative_path": "images/0x06005EB9.png", + "width": 47, + "height": 20, + "used_by_panels": [ + "combat" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 44, + "element_id": 268435619, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 44, + "element_id": 268435619, + "state_id": 11 + }, + { + "panel_slug": "combat", + "traversal_index": 45, + "element_id": 268435620, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 45, + "element_id": 268435620, + "state_id": 11 + }, + { + "panel_slug": "combat", + "traversal_index": 46, + "element_id": 268435621, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 46, + "element_id": 268435621, + "state_id": 11 + }, + { + "panel_slug": "combat", + "traversal_index": 47, + "element_id": 268435622, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 47, + "element_id": 268435622, + "state_id": 11 + }, + { + "panel_slug": "combat", + "traversal_index": 48, + "element_id": 268435623, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 48, + "element_id": 268435623, + "state_id": 11 + }, + { + "panel_slug": "combat", + "traversal_index": 49, + "element_id": 268435624, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 49, + "element_id": 268435624, + "state_id": 11 + }, + { + "panel_slug": "combat", + "traversal_index": 50, + "element_id": 268435625, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 50, + "element_id": 268435625, + "state_id": 11 + }, + { + "panel_slug": "combat", + "traversal_index": 51, + "element_id": 268436930, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 51, + "element_id": 268436930, + "state_id": 11 + } + ] + }, + { + "key": { + "image_id": 100687630, + "alpha_image_id": null + }, + "relative_path": "images/0x06005F0E.png", + "width": 16, + "height": 16, + "used_by_panels": [ + "floating_chat_1", + "floating_chat_2", + "floating_chat_3", + "floating_chat_4", + "main_chat" + ], + "used_by_nodes": [ + { + "panel_slug": "floating_chat_1", + "traversal_index": 15, + "element_id": 268436620, + "state_id": null + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 15, + "element_id": 268436620, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 15, + "element_id": 268436620, + "state_id": 3 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 15, + "element_id": 268436620, + "state_id": null + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 15, + "element_id": 268436620, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 15, + "element_id": 268436620, + "state_id": 3 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 15, + "element_id": 268436620, + "state_id": null + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 15, + "element_id": 268436620, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 15, + "element_id": 268436620, + "state_id": 3 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 15, + "element_id": 268436620, + "state_id": null + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 15, + "element_id": 268436620, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 15, + "element_id": 268436620, + "state_id": 3 + }, + { + "panel_slug": "main_chat", + "traversal_index": 19, + "element_id": 268436620, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 19, + "element_id": 268436620, + "state_id": 1 + }, + { + "panel_slug": "main_chat", + "traversal_index": 19, + "element_id": 268436620, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100687632, + "alpha_image_id": null + }, + "relative_path": "images/0x06005F10.png", + "width": 64, + "height": 20, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 160, + "element_id": 268435597, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 160, + "element_id": 268435597, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100687633, + "alpha_image_id": null + }, + "relative_path": "images/0x06005F11.png", + "width": 92, + "height": 20, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 111, + "element_id": 268435641, + "state_id": 12 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 112, + "element_id": 268435642, + "state_id": 12 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 113, + "element_id": 268435643, + "state_id": 12 + } + ] + }, + { + "key": { + "image_id": 100687634, + "alpha_image_id": null + }, + "relative_path": "images/0x06005F12.png", + "width": 92, + "height": 20, + "used_by_panels": [ + "environment_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "environment_panel", + "traversal_index": 111, + "element_id": 268435641, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 111, + "element_id": 268435641, + "state_id": 11 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 112, + "element_id": 268435642, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 112, + "element_id": 268435642, + "state_id": 11 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 113, + "element_id": 268435643, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 113, + "element_id": 268435643, + "state_id": 11 + } + ] + }, + { + "key": { + "image_id": 100687635, + "alpha_image_id": null + }, + "relative_path": "images/0x06005F13.png", + "width": 47, + "height": 44, + "used_by_panels": [ + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "smartbox", + "traversal_index": 66, + "element_id": 268436235, + "state_id": 13 + }, + { + "panel_slug": "smartbox", + "traversal_index": 69, + "element_id": 268436235, + "state_id": 13 + }, + { + "panel_slug": "smartbox", + "traversal_index": 72, + "element_id": 268436235, + "state_id": 13 + }, + { + "panel_slug": "smartbox", + "traversal_index": 75, + "element_id": 268436235, + "state_id": 13 + }, + { + "panel_slug": "smartbox", + "traversal_index": 78, + "element_id": 268436235, + "state_id": 13 + } + ] + }, + { + "key": { + "image_id": 100688169, + "alpha_image_id": null + }, + "relative_path": "images/0x06006129.png", + "width": 5, + "height": 5, + "used_by_panels": [ + "combat", + "environment_panel", + "examine", + "floating_chat_1", + "floating_chat_2", + "floating_chat_3", + "floating_chat_4", + "indicators", + "main_chat", + "main_panel", + "powerbar", + "side_by_side_vitals", + "smartbox", + "toolbar", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 9, + "element_id": 268437165, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 9, + "element_id": 268437165, + "state_id": 0 + }, + { + "panel_slug": "combat", + "traversal_index": 11, + "element_id": 268437167, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 11, + "element_id": 268437167, + "state_id": 0 + }, + { + "panel_slug": "combat", + "traversal_index": 13, + "element_id": 268437169, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 13, + "element_id": 268437169, + "state_id": 0 + }, + { + "panel_slug": "combat", + "traversal_index": 15, + "element_id": 268437171, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 15, + "element_id": 268437171, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 9, + "element_id": 268437099, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 9, + "element_id": 268437099, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 11, + "element_id": 268437101, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 11, + "element_id": 268437101, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 13, + "element_id": 268437103, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 13, + "element_id": 268437103, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 15, + "element_id": 268437105, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 15, + "element_id": 268437105, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 9, + "element_id": 268437115, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 9, + "element_id": 268437115, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 11, + "element_id": 268437117, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 11, + "element_id": 268437117, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 13, + "element_id": 268437119, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 13, + "element_id": 268437119, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 15, + "element_id": 268437121, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 15, + "element_id": 268437121, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 1, + "element_id": 268436732, + "state_id": null + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 1, + "element_id": 268436732, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 3, + "element_id": 268436734, + "state_id": null + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 3, + "element_id": 268436734, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 5, + "element_id": 268436737, + "state_id": null + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 5, + "element_id": 268436737, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 7, + "element_id": 268436739, + "state_id": null + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 7, + "element_id": 268436739, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 1, + "element_id": 268436732, + "state_id": null + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 1, + "element_id": 268436732, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 3, + "element_id": 268436734, + "state_id": null + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 3, + "element_id": 268436734, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 5, + "element_id": 268436737, + "state_id": null + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 5, + "element_id": 268436737, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 7, + "element_id": 268436739, + "state_id": null + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 7, + "element_id": 268436739, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 1, + "element_id": 268436732, + "state_id": null + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 1, + "element_id": 268436732, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 3, + "element_id": 268436734, + "state_id": null + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 3, + "element_id": 268436734, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 5, + "element_id": 268436737, + "state_id": null + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 5, + "element_id": 268436737, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 7, + "element_id": 268436739, + "state_id": null + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 7, + "element_id": 268436739, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 1, + "element_id": 268436732, + "state_id": null + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 1, + "element_id": 268436732, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 3, + "element_id": 268436734, + "state_id": null + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 3, + "element_id": 268436734, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 5, + "element_id": 268436737, + "state_id": null + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 5, + "element_id": 268436737, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 7, + "element_id": 268436739, + "state_id": null + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 7, + "element_id": 268436739, + "state_id": 0 + }, + { + "panel_slug": "indicators", + "traversal_index": 9, + "element_id": 268437067, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 9, + "element_id": 268437067, + "state_id": 0 + }, + { + "panel_slug": "indicators", + "traversal_index": 11, + "element_id": 268437069, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 11, + "element_id": 268437069, + "state_id": 0 + }, + { + "panel_slug": "indicators", + "traversal_index": 13, + "element_id": 268437071, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 13, + "element_id": 268437071, + "state_id": 0 + }, + { + "panel_slug": "indicators", + "traversal_index": 15, + "element_id": 268437073, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 15, + "element_id": 268437073, + "state_id": 0 + }, + { + "panel_slug": "main_chat", + "traversal_index": 9, + "element_id": 268437147, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 9, + "element_id": 268437147, + "state_id": 0 + }, + { + "panel_slug": "main_chat", + "traversal_index": 11, + "element_id": 268437149, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 11, + "element_id": 268437149, + "state_id": 0 + }, + { + "panel_slug": "main_chat", + "traversal_index": 13, + "element_id": 268437151, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 13, + "element_id": 268437151, + "state_id": 0 + }, + { + "panel_slug": "main_chat", + "traversal_index": 15, + "element_id": 268437153, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 15, + "element_id": 268437153, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 9, + "element_id": 268437083, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 9, + "element_id": 268437083, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 11, + "element_id": 268437085, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 11, + "element_id": 268437085, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 13, + "element_id": 268437087, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 13, + "element_id": 268437087, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 15, + "element_id": 268437089, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 15, + "element_id": 268437089, + "state_id": 0 + }, + { + "panel_slug": "powerbar", + "traversal_index": 9, + "element_id": 268437131, + "state_id": null + }, + { + "panel_slug": "powerbar", + "traversal_index": 9, + "element_id": 268437131, + "state_id": 0 + }, + { + "panel_slug": "powerbar", + "traversal_index": 11, + "element_id": 268437133, + "state_id": null + }, + { + "panel_slug": "powerbar", + "traversal_index": 11, + "element_id": 268437133, + "state_id": 0 + }, + { + "panel_slug": "powerbar", + "traversal_index": 13, + "element_id": 268437135, + "state_id": null + }, + { + "panel_slug": "powerbar", + "traversal_index": 13, + "element_id": 268437135, + "state_id": 0 + }, + { + "panel_slug": "powerbar", + "traversal_index": 15, + "element_id": 268437137, + "state_id": null + }, + { + "panel_slug": "powerbar", + "traversal_index": 15, + "element_id": 268437137, + "state_id": 0 + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 9, + "element_id": 268437214, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 9, + "element_id": 268437214, + "state_id": 0 + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 11, + "element_id": 268437216, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 11, + "element_id": 268437216, + "state_id": 0 + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 13, + "element_id": 268437218, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 13, + "element_id": 268437218, + "state_id": 0 + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 15, + "element_id": 268437220, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 15, + "element_id": 268437220, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 1, + "element_id": 268437194, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 1, + "element_id": 268437194, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 3, + "element_id": 268437196, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 3, + "element_id": 268437196, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 5, + "element_id": 268437198, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 5, + "element_id": 268437198, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 7, + "element_id": 268437200, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 7, + "element_id": 268437200, + "state_id": 0 + }, + { + "panel_slug": "toolbar", + "traversal_index": 59, + "element_id": 268437035, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 59, + "element_id": 268437035, + "state_id": 0 + }, + { + "panel_slug": "toolbar", + "traversal_index": 61, + "element_id": 268437037, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 61, + "element_id": 268437037, + "state_id": 0 + }, + { + "panel_slug": "toolbar", + "traversal_index": 63, + "element_id": 268437039, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 63, + "element_id": 268437039, + "state_id": 0 + }, + { + "panel_slug": "toolbar", + "traversal_index": 65, + "element_id": 268437041, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 65, + "element_id": 268437041, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 9, + "element_id": 268437051, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 9, + "element_id": 268437051, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 11, + "element_id": 268437053, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 11, + "element_id": 268437053, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 13, + "element_id": 268437055, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 13, + "element_id": 268437055, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 15, + "element_id": 268437057, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 15, + "element_id": 268437057, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100688170, + "alpha_image_id": null + }, + "relative_path": "images/0x0600612A.png", + "width": 10, + "height": 5, + "used_by_panels": [ + "combat", + "environment_panel", + "examine", + "floating_chat_1", + "floating_chat_2", + "floating_chat_3", + "floating_chat_4", + "indicators", + "main_chat", + "main_panel", + "powerbar", + "side_by_side_vitals", + "smartbox", + "toolbar", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 10, + "element_id": 268437166, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 10, + "element_id": 268437166, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 10, + "element_id": 268437100, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 10, + "element_id": 268437100, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 10, + "element_id": 268437116, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 10, + "element_id": 268437116, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 18, + "element_id": 268436776, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 18, + "element_id": 268436776, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 2, + "element_id": 268435471, + "state_id": null + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 2, + "element_id": 268435471, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 10, + "element_id": 268436776, + "state_id": null + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 10, + "element_id": 268436776, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 2, + "element_id": 268435471, + "state_id": null + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 2, + "element_id": 268435471, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 10, + "element_id": 268436776, + "state_id": null + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 10, + "element_id": 268436776, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 2, + "element_id": 268435471, + "state_id": null + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 2, + "element_id": 268435471, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 10, + "element_id": 268436776, + "state_id": null + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 10, + "element_id": 268436776, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 2, + "element_id": 268435471, + "state_id": null + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 2, + "element_id": 268435471, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 10, + "element_id": 268436776, + "state_id": null + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 10, + "element_id": 268436776, + "state_id": 0 + }, + { + "panel_slug": "indicators", + "traversal_index": 10, + "element_id": 268437068, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 10, + "element_id": 268437068, + "state_id": 0 + }, + { + "panel_slug": "main_chat", + "traversal_index": 10, + "element_id": 268437148, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 10, + "element_id": 268437148, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 10, + "element_id": 268437084, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 10, + "element_id": 268437084, + "state_id": 0 + }, + { + "panel_slug": "powerbar", + "traversal_index": 10, + "element_id": 268437132, + "state_id": null + }, + { + "panel_slug": "powerbar", + "traversal_index": 10, + "element_id": 268437132, + "state_id": 0 + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 10, + "element_id": 268437215, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 10, + "element_id": 268437215, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 2, + "element_id": 268437195, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 2, + "element_id": 268437195, + "state_id": 0 + }, + { + "panel_slug": "toolbar", + "traversal_index": 60, + "element_id": 268437036, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 60, + "element_id": 268437036, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 10, + "element_id": 268437052, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 10, + "element_id": 268437052, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100688171, + "alpha_image_id": null + }, + "relative_path": "images/0x0600612B.png", + "width": 5, + "height": 10, + "used_by_panels": [ + "combat", + "environment_panel", + "examine", + "floating_chat_1", + "floating_chat_2", + "floating_chat_3", + "floating_chat_4", + "indicators", + "main_chat", + "main_panel", + "powerbar", + "side_by_side_vitals", + "smartbox", + "toolbar", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 12, + "element_id": 268437168, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 12, + "element_id": 268437168, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 12, + "element_id": 268437102, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 12, + "element_id": 268437102, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 12, + "element_id": 268437118, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 12, + "element_id": 268437118, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 4, + "element_id": 268436690, + "state_id": null + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 4, + "element_id": 268436690, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 4, + "element_id": 268436690, + "state_id": null + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 4, + "element_id": 268436690, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 4, + "element_id": 268436690, + "state_id": null + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 4, + "element_id": 268436690, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 4, + "element_id": 268436690, + "state_id": null + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 4, + "element_id": 268436690, + "state_id": 0 + }, + { + "panel_slug": "indicators", + "traversal_index": 12, + "element_id": 268437070, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 12, + "element_id": 268437070, + "state_id": 0 + }, + { + "panel_slug": "main_chat", + "traversal_index": 12, + "element_id": 268437150, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 12, + "element_id": 268437150, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 12, + "element_id": 268437086, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 12, + "element_id": 268437086, + "state_id": 0 + }, + { + "panel_slug": "powerbar", + "traversal_index": 12, + "element_id": 268437134, + "state_id": null + }, + { + "panel_slug": "powerbar", + "traversal_index": 12, + "element_id": 268437134, + "state_id": 0 + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 12, + "element_id": 268437217, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 12, + "element_id": 268437217, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 4, + "element_id": 268437197, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 4, + "element_id": 268437197, + "state_id": 0 + }, + { + "panel_slug": "toolbar", + "traversal_index": 62, + "element_id": 268437038, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 62, + "element_id": 268437038, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 12, + "element_id": 268437054, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 12, + "element_id": 268437054, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100688172, + "alpha_image_id": null + }, + "relative_path": "images/0x0600612C.png", + "width": 10, + "height": 5, + "used_by_panels": [ + "combat", + "environment_panel", + "examine", + "floating_chat_1", + "floating_chat_2", + "floating_chat_3", + "floating_chat_4", + "indicators", + "main_chat", + "main_panel", + "powerbar", + "side_by_side_vitals", + "smartbox", + "toolbar", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 14, + "element_id": 268437170, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 14, + "element_id": 268437170, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 14, + "element_id": 268437104, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 14, + "element_id": 268437104, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 14, + "element_id": 268437120, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 14, + "element_id": 268437120, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 22, + "element_id": 268435765, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 22, + "element_id": 268435765, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 45, + "element_id": 268435782, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 45, + "element_id": 268435782, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 46, + "element_id": 268436577, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 46, + "element_id": 268436577, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 62, + "element_id": 268435800, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 62, + "element_id": 268435800, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 63, + "element_id": 268435802, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 63, + "element_id": 268435802, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 64, + "element_id": 268435804, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 64, + "element_id": 268435804, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 6, + "element_id": 268436692, + "state_id": null + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 6, + "element_id": 268436692, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 6, + "element_id": 268436692, + "state_id": null + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 6, + "element_id": 268436692, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 6, + "element_id": 268436692, + "state_id": null + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 6, + "element_id": 268436692, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 6, + "element_id": 268436692, + "state_id": null + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 6, + "element_id": 268436692, + "state_id": 0 + }, + { + "panel_slug": "indicators", + "traversal_index": 14, + "element_id": 268437072, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 14, + "element_id": 268437072, + "state_id": 0 + }, + { + "panel_slug": "main_chat", + "traversal_index": 14, + "element_id": 268437152, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 14, + "element_id": 268437152, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 14, + "element_id": 268437088, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 14, + "element_id": 268437088, + "state_id": 0 + }, + { + "panel_slug": "powerbar", + "traversal_index": 14, + "element_id": 268437136, + "state_id": null + }, + { + "panel_slug": "powerbar", + "traversal_index": 14, + "element_id": 268437136, + "state_id": 0 + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 14, + "element_id": 268437219, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 14, + "element_id": 268437219, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 6, + "element_id": 268437199, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 6, + "element_id": 268437199, + "state_id": 0 + }, + { + "panel_slug": "toolbar", + "traversal_index": 64, + "element_id": 268437040, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 64, + "element_id": 268437040, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 14, + "element_id": 268437056, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 14, + "element_id": 268437056, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100688173, + "alpha_image_id": null + }, + "relative_path": "images/0x0600612D.png", + "width": 5, + "height": 10, + "used_by_panels": [ + "combat", + "environment_panel", + "examine", + "floating_chat_1", + "floating_chat_2", + "floating_chat_3", + "floating_chat_4", + "indicators", + "main_chat", + "main_panel", + "powerbar", + "side_by_side_vitals", + "smartbox", + "toolbar", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 16, + "element_id": 268437172, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 16, + "element_id": 268437172, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 16, + "element_id": 268437106, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 16, + "element_id": 268437106, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 16, + "element_id": 268437122, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 16, + "element_id": 268437122, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 8, + "element_id": 268436691, + "state_id": null + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 8, + "element_id": 268436691, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 8, + "element_id": 268436691, + "state_id": null + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 8, + "element_id": 268436691, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 8, + "element_id": 268436691, + "state_id": null + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 8, + "element_id": 268436691, + "state_id": 0 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 8, + "element_id": 268436691, + "state_id": null + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 8, + "element_id": 268436691, + "state_id": 0 + }, + { + "panel_slug": "indicators", + "traversal_index": 16, + "element_id": 268437074, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 16, + "element_id": 268437074, + "state_id": 0 + }, + { + "panel_slug": "main_chat", + "traversal_index": 16, + "element_id": 268437154, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 16, + "element_id": 268437154, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 16, + "element_id": 268437090, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 16, + "element_id": 268437090, + "state_id": 0 + }, + { + "panel_slug": "powerbar", + "traversal_index": 16, + "element_id": 268437138, + "state_id": null + }, + { + "panel_slug": "powerbar", + "traversal_index": 16, + "element_id": 268437138, + "state_id": 0 + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 16, + "element_id": 268437221, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 16, + "element_id": 268437221, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 8, + "element_id": 268437201, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 8, + "element_id": 268437201, + "state_id": 0 + }, + { + "panel_slug": "toolbar", + "traversal_index": 66, + "element_id": 268437042, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 66, + "element_id": 268437042, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 16, + "element_id": 268437058, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 16, + "element_id": 268437058, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100688405, + "alpha_image_id": null + }, + "relative_path": "images/0x06006215.png", + "width": 14, + "height": 14, + "used_by_panels": [ + "examine", + "floating_chat_1", + "floating_chat_2", + "floating_chat_3", + "floating_chat_4" + ], + "used_by_nodes": [ + { + "panel_slug": "examine", + "traversal_index": 20, + "element_id": 268436979, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 20, + "element_id": 268436979, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 12, + "element_id": 268436778, + "state_id": null + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 12, + "element_id": 268436778, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 12, + "element_id": 268436778, + "state_id": null + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 12, + "element_id": 268436778, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 12, + "element_id": 268436778, + "state_id": null + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 12, + "element_id": 268436778, + "state_id": 1 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 12, + "element_id": 268436778, + "state_id": null + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 12, + "element_id": 268436778, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100688406, + "alpha_image_id": null + }, + "relative_path": "images/0x06006216.png", + "width": 14, + "height": 14, + "used_by_panels": [ + "examine", + "floating_chat_1", + "floating_chat_2", + "floating_chat_3", + "floating_chat_4" + ], + "used_by_nodes": [ + { + "panel_slug": "examine", + "traversal_index": 20, + "element_id": 268436979, + "state_id": 3 + }, + { + "panel_slug": "floating_chat_1", + "traversal_index": 12, + "element_id": 268436778, + "state_id": 3 + }, + { + "panel_slug": "floating_chat_2", + "traversal_index": 12, + "element_id": 268436778, + "state_id": 3 + }, + { + "panel_slug": "floating_chat_3", + "traversal_index": 12, + "element_id": 268436778, + "state_id": 3 + }, + { + "panel_slug": "floating_chat_4", + "traversal_index": 12, + "element_id": 268436778, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100688408, + "alpha_image_id": null + }, + "relative_path": "images/0x06006218.png", + "width": 16, + "height": 16, + "used_by_panels": [ + "main_chat" + ], + "used_by_nodes": [ + { + "panel_slug": "main_chat", + "traversal_index": 28, + "element_id": 268436770, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 28, + "element_id": 268436770, + "state_id": 1 + }, + { + "panel_slug": "main_chat", + "traversal_index": 29, + "element_id": 268436771, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 29, + "element_id": 268436771, + "state_id": 1 + }, + { + "panel_slug": "main_chat", + "traversal_index": 30, + "element_id": 268436772, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 30, + "element_id": 268436772, + "state_id": 1 + }, + { + "panel_slug": "main_chat", + "traversal_index": 31, + "element_id": 268436773, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 31, + "element_id": 268436773, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100688409, + "alpha_image_id": null + }, + "relative_path": "images/0x06006219.png", + "width": 16, + "height": 16, + "used_by_panels": [ + "main_chat" + ], + "used_by_nodes": [ + { + "panel_slug": "main_chat", + "traversal_index": 28, + "element_id": 268436770, + "state_id": 6 + }, + { + "panel_slug": "main_chat", + "traversal_index": 29, + "element_id": 268436771, + "state_id": 6 + }, + { + "panel_slug": "main_chat", + "traversal_index": 30, + "element_id": 268436772, + "state_id": 6 + }, + { + "panel_slug": "main_chat", + "traversal_index": 31, + "element_id": 268436773, + "state_id": 6 + } + ] + }, + { + "key": { + "image_id": 100690350, + "alpha_image_id": null + }, + "relative_path": "images/0x060069AE.png", + "width": 34, + "height": 27, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 10, + "element_id": 268436826, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 10, + "element_id": 268436826, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100690351, + "alpha_image_id": null + }, + "relative_path": "images/0x060069AF.png", + "width": 34, + "height": 27, + "used_by_panels": [ + "toolbar" + ], + "used_by_nodes": [ + { + "panel_slug": "toolbar", + "traversal_index": 10, + "element_id": 268436826, + "state_id": 6 + } + ] + }, + { + "key": { + "image_id": 100692267, + "alpha_image_id": null + }, + "relative_path": "images/0x0600712B.png", + "width": 30, + "height": 26, + "used_by_panels": [ + "character", + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 54, + "element_id": 268436971, + "state_id": 1 + }, + { + "panel_slug": "character", + "traversal_index": 64, + "element_id": 268436971, + "state_id": 1 + }, + { + "panel_slug": "character", + "traversal_index": 105, + "element_id": 268436971, + "state_id": 1 + }, + { + "panel_slug": "character", + "traversal_index": 115, + "element_id": 268436971, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 455, + "element_id": 268436971, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 465, + "element_id": 268436971, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 506, + "element_id": 268436971, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 516, + "element_id": 268436971, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100692268, + "alpha_image_id": null + }, + "relative_path": "images/0x0600712C.png", + "width": 30, + "height": 26, + "used_by_panels": [ + "character", + "main_panel" + ], + "used_by_nodes": [ + { + "panel_slug": "character", + "traversal_index": 54, + "element_id": 268436971, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 54, + "element_id": 268436971, + "state_id": 13 + }, + { + "panel_slug": "character", + "traversal_index": 64, + "element_id": 268436971, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 64, + "element_id": 268436971, + "state_id": 13 + }, + { + "panel_slug": "character", + "traversal_index": 105, + "element_id": 268436971, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 105, + "element_id": 268436971, + "state_id": 13 + }, + { + "panel_slug": "character", + "traversal_index": 115, + "element_id": 268436971, + "state_id": null + }, + { + "panel_slug": "character", + "traversal_index": 115, + "element_id": 268436971, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 455, + "element_id": 268436971, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 455, + "element_id": 268436971, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 465, + "element_id": 268436971, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 465, + "element_id": 268436971, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 506, + "element_id": 268436971, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 506, + "element_id": 268436971, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 516, + "element_id": 268436971, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 516, + "element_id": 268436971, + "state_id": 13 + } + ] + }, + { + "key": { + "image_id": 100692318, + "alpha_image_id": null + }, + "relative_path": "images/0x0600715E.png", + "width": 60, + "height": 13, + "used_by_panels": [ + "combat", + "powerbar", + "smartbox" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 24, + "element_id": 268436975, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 24, + "element_id": 268436975, + "state_id": 0 + }, + { + "panel_slug": "powerbar", + "traversal_index": 18, + "element_id": 268436974, + "state_id": null + }, + { + "panel_slug": "powerbar", + "traversal_index": 18, + "element_id": 268436974, + "state_id": 0 + }, + { + "panel_slug": "smartbox", + "traversal_index": 17, + "element_id": 268436974, + "state_id": null + }, + { + "panel_slug": "smartbox", + "traversal_index": 17, + "element_id": 268436974, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693118, + "alpha_image_id": null + }, + "relative_path": "images/0x0600747E.png", + "width": 10, + "height": 16, + "used_by_panels": [ + "side_by_side_vitals", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 19, + "element_id": 268435688, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 19, + "element_id": 268435688, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 19, + "element_id": 268435688, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 19, + "element_id": 268435688, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693119, + "alpha_image_id": null + }, + "relative_path": "images/0x0600747F.png", + "width": 100, + "height": 16, + "used_by_panels": [ + "side_by_side_vitals", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 20, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 20, + "element_id": 268435689, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 20, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 20, + "element_id": 268435689, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693120, + "alpha_image_id": null + }, + "relative_path": "images/0x06007480.png", + "width": 10, + "height": 16, + "used_by_panels": [ + "side_by_side_vitals", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 21, + "element_id": 268435690, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 21, + "element_id": 268435690, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 21, + "element_id": 268435690, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 21, + "element_id": 268435690, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693121, + "alpha_image_id": null + }, + "relative_path": "images/0x06007481.png", + "width": 10, + "height": 16, + "used_by_panels": [ + "side_by_side_vitals", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 24, + "element_id": 268435688, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 24, + "element_id": 268435688, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 24, + "element_id": 268435688, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 24, + "element_id": 268435688, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693122, + "alpha_image_id": null + }, + "relative_path": "images/0x06007482.png", + "width": 100, + "height": 16, + "used_by_panels": [ + "side_by_side_vitals", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 25, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 25, + "element_id": 268435689, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 25, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 25, + "element_id": 268435689, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693123, + "alpha_image_id": null + }, + "relative_path": "images/0x06007483.png", + "width": 10, + "height": 16, + "used_by_panels": [ + "side_by_side_vitals", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 26, + "element_id": 268435690, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 26, + "element_id": 268435690, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 26, + "element_id": 268435690, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 26, + "element_id": 268435690, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693124, + "alpha_image_id": null + }, + "relative_path": "images/0x06007484.png", + "width": 10, + "height": 16, + "used_by_panels": [ + "side_by_side_vitals", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 31, + "element_id": 268435688, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 31, + "element_id": 268435688, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 31, + "element_id": 268435688, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 31, + "element_id": 268435688, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693125, + "alpha_image_id": null + }, + "relative_path": "images/0x06007485.png", + "width": 100, + "height": 16, + "used_by_panels": [ + "side_by_side_vitals", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 32, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 32, + "element_id": 268435689, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 32, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 32, + "element_id": 268435689, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693126, + "alpha_image_id": null + }, + "relative_path": "images/0x06007486.png", + "width": 10, + "height": 16, + "used_by_panels": [ + "side_by_side_vitals", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 33, + "element_id": 268435690, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 33, + "element_id": 268435690, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 33, + "element_id": 268435690, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 33, + "element_id": 268435690, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693127, + "alpha_image_id": null + }, + "relative_path": "images/0x06007487.png", + "width": 10, + "height": 16, + "used_by_panels": [ + "side_by_side_vitals", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 36, + "element_id": 268435688, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 36, + "element_id": 268435688, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 36, + "element_id": 268435688, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 36, + "element_id": 268435688, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693128, + "alpha_image_id": null + }, + "relative_path": "images/0x06007488.png", + "width": 100, + "height": 16, + "used_by_panels": [ + "side_by_side_vitals", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 37, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 37, + "element_id": 268435689, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 37, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 37, + "element_id": 268435689, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693129, + "alpha_image_id": null + }, + "relative_path": "images/0x06007489.png", + "width": 10, + "height": 16, + "used_by_panels": [ + "side_by_side_vitals", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 38, + "element_id": 268435690, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 38, + "element_id": 268435690, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 38, + "element_id": 268435690, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 38, + "element_id": 268435690, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693130, + "alpha_image_id": null + }, + "relative_path": "images/0x0600748A.png", + "width": 10, + "height": 16, + "used_by_panels": [ + "side_by_side_vitals", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 43, + "element_id": 268435688, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 43, + "element_id": 268435688, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 43, + "element_id": 268435688, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 43, + "element_id": 268435688, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693131, + "alpha_image_id": null + }, + "relative_path": "images/0x0600748B.png", + "width": 100, + "height": 16, + "used_by_panels": [ + "side_by_side_vitals", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 44, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 44, + "element_id": 268435689, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 44, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 44, + "element_id": 268435689, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693132, + "alpha_image_id": null + }, + "relative_path": "images/0x0600748C.png", + "width": 10, + "height": 16, + "used_by_panels": [ + "side_by_side_vitals", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 45, + "element_id": 268435690, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 45, + "element_id": 268435690, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 45, + "element_id": 268435690, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 45, + "element_id": 268435690, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693133, + "alpha_image_id": null + }, + "relative_path": "images/0x0600748D.png", + "width": 10, + "height": 16, + "used_by_panels": [ + "side_by_side_vitals", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 48, + "element_id": 268435688, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 48, + "element_id": 268435688, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 48, + "element_id": 268435688, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 48, + "element_id": 268435688, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693134, + "alpha_image_id": null + }, + "relative_path": "images/0x0600748E.png", + "width": 100, + "height": 16, + "used_by_panels": [ + "side_by_side_vitals", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 49, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 49, + "element_id": 268435689, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 49, + "element_id": 268435689, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 49, + "element_id": 268435689, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693135, + "alpha_image_id": null + }, + "relative_path": "images/0x0600748F.png", + "width": 10, + "height": 16, + "used_by_panels": [ + "side_by_side_vitals", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 50, + "element_id": 268435690, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 50, + "element_id": 268435690, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 50, + "element_id": 268435690, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 50, + "element_id": 268435690, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693136, + "alpha_image_id": null + }, + "relative_path": "images/0x06007490.png", + "width": 18, + "height": 16, + "used_by_panels": [ + "side_by_side_vitals", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 22, + "element_id": 268436649, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 22, + "element_id": 268436649, + "state_id": 268435463 + }, + { + "panel_slug": "vitals", + "traversal_index": 22, + "element_id": 268436649, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 22, + "element_id": 268436649, + "state_id": 268435463 + } + ] + }, + { + "key": { + "image_id": 100693137, + "alpha_image_id": null + }, + "relative_path": "images/0x06007491.png", + "width": 18, + "height": 16, + "used_by_panels": [ + "side_by_side_vitals", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 27, + "element_id": 268436649, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 27, + "element_id": 268436649, + "state_id": 268435463 + }, + { + "panel_slug": "vitals", + "traversal_index": 27, + "element_id": 268436649, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 27, + "element_id": 268436649, + "state_id": 268435463 + } + ] + }, + { + "key": { + "image_id": 100693138, + "alpha_image_id": null + }, + "relative_path": "images/0x06007492.png", + "width": 85, + "height": 16, + "used_by_panels": [ + "side_by_side_vitals", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 34, + "element_id": 268436649, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 34, + "element_id": 268436649, + "state_id": 268435463 + }, + { + "panel_slug": "vitals", + "traversal_index": 34, + "element_id": 268436649, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 34, + "element_id": 268436649, + "state_id": 268435463 + } + ] + }, + { + "key": { + "image_id": 100693139, + "alpha_image_id": null + }, + "relative_path": "images/0x06007493.png", + "width": 85, + "height": 16, + "used_by_panels": [ + "side_by_side_vitals", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 39, + "element_id": 268436649, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 39, + "element_id": 268436649, + "state_id": 268435463 + }, + { + "panel_slug": "vitals", + "traversal_index": 39, + "element_id": 268436649, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 39, + "element_id": 268436649, + "state_id": 268435463 + } + ] + }, + { + "key": { + "image_id": 100693140, + "alpha_image_id": null + }, + "relative_path": "images/0x06007494.png", + "width": 100, + "height": 16, + "used_by_panels": [ + "side_by_side_vitals", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 46, + "element_id": 268436649, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 46, + "element_id": 268436649, + "state_id": 268435463 + }, + { + "panel_slug": "vitals", + "traversal_index": 46, + "element_id": 268436649, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 46, + "element_id": 268436649, + "state_id": 268435463 + } + ] + }, + { + "key": { + "image_id": 100693141, + "alpha_image_id": null + }, + "relative_path": "images/0x06007495.png", + "width": 100, + "height": 16, + "used_by_panels": [ + "side_by_side_vitals", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 51, + "element_id": 268436649, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 51, + "element_id": 268436649, + "state_id": 268435463 + }, + { + "panel_slug": "vitals", + "traversal_index": 51, + "element_id": 268436649, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 51, + "element_id": 268436649, + "state_id": 268435463 + } + ] + }, + { + "key": { + "image_id": 100693144, + "alpha_image_id": null + }, + "relative_path": "images/0x06007498.png", + "width": 20, + "height": 20, + "used_by_panels": [ + "indicators" + ], + "used_by_nodes": [ + { + "panel_slug": "indicators", + "traversal_index": 17, + "element_id": 268435704, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 17, + "element_id": 268435704, + "state_id": 17 + } + ] + }, + { + "key": { + "image_id": 100693145, + "alpha_image_id": null + }, + "relative_path": "images/0x06007499.png", + "width": 20, + "height": 20, + "used_by_panels": [ + "indicators" + ], + "used_by_nodes": [ + { + "panel_slug": "indicators", + "traversal_index": 17, + "element_id": 268435704, + "state_id": 18 + } + ] + }, + { + "key": { + "image_id": 100693146, + "alpha_image_id": null + }, + "relative_path": "images/0x0600749A.png", + "width": 20, + "height": 20, + "used_by_panels": [ + "indicators" + ], + "used_by_nodes": [ + { + "panel_slug": "indicators", + "traversal_index": 17, + "element_id": 268435704, + "state_id": 19 + }, + { + "panel_slug": "indicators", + "traversal_index": 17, + "element_id": 268435704, + "state_id": 20 + } + ] + }, + { + "key": { + "image_id": 100693147, + "alpha_image_id": null + }, + "relative_path": "images/0x0600749B.png", + "width": 20, + "height": 20, + "used_by_panels": [ + "indicators" + ], + "used_by_nodes": [ + { + "panel_slug": "indicators", + "traversal_index": 18, + "element_id": 268435698, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 18, + "element_id": 268435698, + "state_id": 3 + }, + { + "panel_slug": "indicators", + "traversal_index": 20, + "element_id": 268435698, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 20, + "element_id": 268435698, + "state_id": 3 + }, + { + "panel_slug": "indicators", + "traversal_index": 22, + "element_id": 268435698, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 22, + "element_id": 268435698, + "state_id": 3 + }, + { + "panel_slug": "indicators", + "traversal_index": 24, + "element_id": 268435698, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 24, + "element_id": 268435698, + "state_id": 3 + }, + { + "panel_slug": "indicators", + "traversal_index": 26, + "element_id": 268435698, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 26, + "element_id": 268435698, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100693148, + "alpha_image_id": null + }, + "relative_path": "images/0x0600749C.png", + "width": 20, + "height": 20, + "used_by_panels": [ + "indicators" + ], + "used_by_nodes": [ + { + "panel_slug": "indicators", + "traversal_index": 19, + "element_id": 268435701, + "state_id": 1 + }, + { + "panel_slug": "indicators", + "traversal_index": 19, + "element_id": 268435701, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100693149, + "alpha_image_id": null + }, + "relative_path": "images/0x0600749D.png", + "width": 20, + "height": 20, + "used_by_panels": [ + "indicators" + ], + "used_by_nodes": [ + { + "panel_slug": "indicators", + "traversal_index": 19, + "element_id": 268435701, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 19, + "element_id": 268435701, + "state_id": 13 + } + ] + }, + { + "key": { + "image_id": 100693150, + "alpha_image_id": null + }, + "relative_path": "images/0x0600749E.png", + "width": 20, + "height": 20, + "used_by_panels": [ + "indicators" + ], + "used_by_nodes": [ + { + "panel_slug": "indicators", + "traversal_index": 21, + "element_id": 268435702, + "state_id": 1 + }, + { + "panel_slug": "indicators", + "traversal_index": 21, + "element_id": 268435702, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100693151, + "alpha_image_id": null + }, + "relative_path": "images/0x0600749F.png", + "width": 20, + "height": 20, + "used_by_panels": [ + "indicators" + ], + "used_by_nodes": [ + { + "panel_slug": "indicators", + "traversal_index": 21, + "element_id": 268435702, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 21, + "element_id": 268435702, + "state_id": 13 + } + ] + }, + { + "key": { + "image_id": 100693152, + "alpha_image_id": null + }, + "relative_path": "images/0x060074A0.png", + "width": 20, + "height": 20, + "used_by_panels": [ + "indicators" + ], + "used_by_nodes": [ + { + "panel_slug": "indicators", + "traversal_index": 23, + "element_id": 268435700, + "state_id": 1 + }, + { + "panel_slug": "indicators", + "traversal_index": 23, + "element_id": 268435700, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100693153, + "alpha_image_id": null + }, + "relative_path": "images/0x060074A1.png", + "width": 20, + "height": 20, + "used_by_panels": [ + "indicators" + ], + "used_by_nodes": [ + { + "panel_slug": "indicators", + "traversal_index": 23, + "element_id": 268435700, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 23, + "element_id": 268435700, + "state_id": 13 + } + ] + }, + { + "key": { + "image_id": 100693154, + "alpha_image_id": null + }, + "relative_path": "images/0x060074A2.png", + "width": 20, + "height": 20, + "used_by_panels": [ + "indicators" + ], + "used_by_nodes": [ + { + "panel_slug": "indicators", + "traversal_index": 25, + "element_id": 268435703, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 25, + "element_id": 268435703, + "state_id": 14 + } + ] + }, + { + "key": { + "image_id": 100693155, + "alpha_image_id": null + }, + "relative_path": "images/0x060074A3.png", + "width": 20, + "height": 20, + "used_by_panels": [ + "indicators" + ], + "used_by_nodes": [ + { + "panel_slug": "indicators", + "traversal_index": 25, + "element_id": 268435703, + "state_id": 15 + } + ] + }, + { + "key": { + "image_id": 100693156, + "alpha_image_id": null + }, + "relative_path": "images/0x060074A4.png", + "width": 20, + "height": 20, + "used_by_panels": [ + "indicators" + ], + "used_by_nodes": [ + { + "panel_slug": "indicators", + "traversal_index": 25, + "element_id": 268435703, + "state_id": 16 + } + ] + }, + { + "key": { + "image_id": 100693157, + "alpha_image_id": null + }, + "relative_path": "images/0x060074A5.png", + "width": 20, + "height": 20, + "used_by_panels": [ + "indicators" + ], + "used_by_nodes": [ + { + "panel_slug": "indicators", + "traversal_index": 27, + "element_id": 268435699, + "state_id": 1 + }, + { + "panel_slug": "indicators", + "traversal_index": 27, + "element_id": 268435699, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100693158, + "alpha_image_id": null + }, + "relative_path": "images/0x060074A6.png", + "width": 20, + "height": 20, + "used_by_panels": [ + "indicators" + ], + "used_by_nodes": [ + { + "panel_slug": "indicators", + "traversal_index": 27, + "element_id": 268435699, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 27, + "element_id": 268435699, + "state_id": 13 + } + ] + }, + { + "key": { + "image_id": 100693159, + "alpha_image_id": null + }, + "relative_path": "images/0x060074A7.png", + "width": 32, + "height": 32, + "used_by_panels": [ + "main_panel", + "options" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 332, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 336, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 340, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 344, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 348, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 352, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 356, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 42, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 46, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 50, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 54, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 58, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 62, + "element_id": 268436174, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 66, + "element_id": 268436174, + "state_id": 13 + } + ] + }, + { + "key": { + "image_id": 100693160, + "alpha_image_id": null + }, + "relative_path": "images/0x060074A8.png", + "width": 32, + "height": 32, + "used_by_panels": [ + "main_panel", + "options" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 332, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 336, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 340, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 344, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 348, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 352, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 356, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 42, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 46, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 50, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 54, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 58, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 62, + "element_id": 268436174, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 66, + "element_id": 268436174, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100693161, + "alpha_image_id": null + }, + "relative_path": "images/0x060074A9.png", + "width": 32, + "height": 32, + "used_by_panels": [ + "main_panel", + "options" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 332, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 332, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 332, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 336, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 336, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 336, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 340, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 340, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 340, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 344, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 344, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 344, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 348, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 348, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 348, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 352, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 352, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 352, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 356, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 356, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 356, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 42, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 42, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 42, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 46, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 46, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 46, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 50, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 50, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 50, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 54, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 54, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 54, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 58, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 58, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 58, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 62, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 62, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 62, + "element_id": 268436174, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 66, + "element_id": 268436174, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 66, + "element_id": 268436174, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 66, + "element_id": 268436174, + "state_id": 2 + } + ] + }, + { + "key": { + "image_id": 100693162, + "alpha_image_id": null + }, + "relative_path": "images/0x060074AA.png", + "width": 15, + "height": 32, + "used_by_panels": [ + "main_panel", + "options" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 333, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 337, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 341, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 345, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 349, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 353, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 357, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 43, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 47, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 51, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 55, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 59, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 63, + "element_id": 268436175, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 67, + "element_id": 268436175, + "state_id": 13 + } + ] + }, + { + "key": { + "image_id": 100693163, + "alpha_image_id": null + }, + "relative_path": "images/0x060074AB.png", + "width": 15, + "height": 32, + "used_by_panels": [ + "main_panel", + "options" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 333, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 337, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 341, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 345, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 349, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 353, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 357, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 43, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 47, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 51, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 55, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 59, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 63, + "element_id": 268436175, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 67, + "element_id": 268436175, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100693164, + "alpha_image_id": null + }, + "relative_path": "images/0x060074AC.png", + "width": 15, + "height": 32, + "used_by_panels": [ + "main_panel", + "options" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 333, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 333, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 333, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 337, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 337, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 337, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 341, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 341, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 341, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 345, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 345, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 345, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 349, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 349, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 349, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 353, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 353, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 353, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 357, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 357, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 357, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 43, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 43, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 43, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 47, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 47, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 47, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 51, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 51, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 51, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 55, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 55, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 55, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 59, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 59, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 59, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 63, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 63, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 63, + "element_id": 268436175, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 67, + "element_id": 268436175, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 67, + "element_id": 268436175, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 67, + "element_id": 268436175, + "state_id": 2 + } + ] + }, + { + "key": { + "image_id": 100693165, + "alpha_image_id": null + }, + "relative_path": "images/0x060074AD.png", + "width": 32, + "height": 32, + "used_by_panels": [ + "main_panel", + "options" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 334, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 338, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 342, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 346, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 350, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 354, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "main_panel", + "traversal_index": 358, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 44, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 48, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 52, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 56, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 60, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 64, + "element_id": 268436176, + "state_id": 13 + }, + { + "panel_slug": "options", + "traversal_index": 68, + "element_id": 268436176, + "state_id": 13 + } + ] + }, + { + "key": { + "image_id": 100693166, + "alpha_image_id": null + }, + "relative_path": "images/0x060074AE.png", + "width": 32, + "height": 32, + "used_by_panels": [ + "main_panel", + "options" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 334, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 338, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 342, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 346, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 350, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 354, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "main_panel", + "traversal_index": 358, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 44, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 48, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 52, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 56, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 60, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 64, + "element_id": 268436176, + "state_id": 3 + }, + { + "panel_slug": "options", + "traversal_index": 68, + "element_id": 268436176, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100693167, + "alpha_image_id": null + }, + "relative_path": "images/0x060074AF.png", + "width": 32, + "height": 32, + "used_by_panels": [ + "main_panel", + "options" + ], + "used_by_nodes": [ + { + "panel_slug": "main_panel", + "traversal_index": 334, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 334, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 334, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 338, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 338, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 338, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 342, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 342, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 342, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 346, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 346, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 346, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 350, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 350, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 350, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 354, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 354, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 354, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "main_panel", + "traversal_index": 358, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 358, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "main_panel", + "traversal_index": 358, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 44, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 44, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 44, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 48, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 48, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 48, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 52, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 52, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 52, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 56, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 56, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 56, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 60, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 60, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 60, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 64, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 64, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 64, + "element_id": 268436176, + "state_id": 2 + }, + { + "panel_slug": "options", + "traversal_index": 68, + "element_id": 268436176, + "state_id": null + }, + { + "panel_slug": "options", + "traversal_index": 68, + "element_id": 268436176, + "state_id": 1 + }, + { + "panel_slug": "options", + "traversal_index": 68, + "element_id": 268436176, + "state_id": 2 + } + ] + }, + { + "key": { + "image_id": 100693169, + "alpha_image_id": null + }, + "relative_path": "images/0x060074B1.png", + "width": 20, + "height": 20, + "used_by_panels": [ + "indicators" + ], + "used_by_nodes": [ + { + "panel_slug": "indicators", + "traversal_index": 29, + "element_id": 268435706, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 29, + "element_id": 268435706, + "state_id": 1 + } + ] + }, + { + "key": { + "image_id": 100693170, + "alpha_image_id": null + }, + "relative_path": "images/0x060074B2.png", + "width": 20, + "height": 20, + "used_by_panels": [ + "indicators" + ], + "used_by_nodes": [ + { + "panel_slug": "indicators", + "traversal_index": 29, + "element_id": 268435706, + "state_id": 3 + } + ] + }, + { + "key": { + "image_id": 100693175, + "alpha_image_id": null + }, + "relative_path": "images/0x060074B7.png", + "width": 27, + "height": 27, + "used_by_panels": [ + "radar" + ], + "used_by_nodes": [ + { + "panel_slug": "radar", + "traversal_index": 3, + "element_id": 268437017, + "state_id": null + }, + { + "panel_slug": "radar", + "traversal_index": 3, + "element_id": 268437017, + "state_id": 268435555 + } + ] + }, + { + "key": { + "image_id": 100693176, + "alpha_image_id": null + }, + "relative_path": "images/0x060074B8.png", + "width": 27, + "height": 27, + "used_by_panels": [ + "radar" + ], + "used_by_nodes": [ + { + "panel_slug": "radar", + "traversal_index": 3, + "element_id": 268437017, + "state_id": 268435556 + } + ] + }, + { + "key": { + "image_id": 100693183, + "alpha_image_id": null + }, + "relative_path": "images/0x060074BF.png", + "width": 10, + "height": 5, + "used_by_panels": [ + "combat", + "environment_panel", + "examine", + "indicators", + "main_chat", + "main_panel", + "powerbar", + "side_by_side_vitals", + "toolbar", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 2, + "element_id": 268437158, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 2, + "element_id": 268437158, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 2, + "element_id": 268437092, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 2, + "element_id": 268437092, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 2, + "element_id": 268437108, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 2, + "element_id": 268437108, + "state_id": 0 + }, + { + "panel_slug": "indicators", + "traversal_index": 2, + "element_id": 268437060, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 2, + "element_id": 268437060, + "state_id": 0 + }, + { + "panel_slug": "main_chat", + "traversal_index": 2, + "element_id": 268437140, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 2, + "element_id": 268437140, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 2, + "element_id": 268437076, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 2, + "element_id": 268437076, + "state_id": 0 + }, + { + "panel_slug": "powerbar", + "traversal_index": 2, + "element_id": 268437124, + "state_id": null + }, + { + "panel_slug": "powerbar", + "traversal_index": 2, + "element_id": 268437124, + "state_id": 0 + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 2, + "element_id": 268437207, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 2, + "element_id": 268437207, + "state_id": 0 + }, + { + "panel_slug": "toolbar", + "traversal_index": 52, + "element_id": 268437028, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 52, + "element_id": 268437028, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 2, + "element_id": 268437044, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 2, + "element_id": 268437044, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693184, + "alpha_image_id": null + }, + "relative_path": "images/0x060074C0.png", + "width": 5, + "height": 10, + "used_by_panels": [ + "combat", + "environment_panel", + "examine", + "indicators", + "main_chat", + "main_panel", + "powerbar", + "side_by_side_vitals", + "toolbar", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 4, + "element_id": 268437160, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 4, + "element_id": 268437160, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 4, + "element_id": 268437094, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 4, + "element_id": 268437094, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 4, + "element_id": 268437110, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 4, + "element_id": 268437110, + "state_id": 0 + }, + { + "panel_slug": "indicators", + "traversal_index": 4, + "element_id": 268437062, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 4, + "element_id": 268437062, + "state_id": 0 + }, + { + "panel_slug": "main_chat", + "traversal_index": 4, + "element_id": 268437142, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 4, + "element_id": 268437142, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 4, + "element_id": 268437078, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 4, + "element_id": 268437078, + "state_id": 0 + }, + { + "panel_slug": "powerbar", + "traversal_index": 4, + "element_id": 268437126, + "state_id": null + }, + { + "panel_slug": "powerbar", + "traversal_index": 4, + "element_id": 268437126, + "state_id": 0 + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 4, + "element_id": 268437209, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 4, + "element_id": 268437209, + "state_id": 0 + }, + { + "panel_slug": "toolbar", + "traversal_index": 54, + "element_id": 268437030, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 54, + "element_id": 268437030, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 4, + "element_id": 268437046, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 4, + "element_id": 268437046, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693185, + "alpha_image_id": null + }, + "relative_path": "images/0x060074C1.png", + "width": 10, + "height": 5, + "used_by_panels": [ + "combat", + "environment_panel", + "examine", + "indicators", + "main_chat", + "main_panel", + "powerbar", + "side_by_side_vitals", + "toolbar", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 6, + "element_id": 268437162, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 6, + "element_id": 268437162, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 6, + "element_id": 268437096, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 6, + "element_id": 268437096, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 6, + "element_id": 268437112, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 6, + "element_id": 268437112, + "state_id": 0 + }, + { + "panel_slug": "indicators", + "traversal_index": 6, + "element_id": 268437064, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 6, + "element_id": 268437064, + "state_id": 0 + }, + { + "panel_slug": "main_chat", + "traversal_index": 6, + "element_id": 268437144, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 6, + "element_id": 268437144, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 6, + "element_id": 268437080, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 6, + "element_id": 268437080, + "state_id": 0 + }, + { + "panel_slug": "powerbar", + "traversal_index": 6, + "element_id": 268437128, + "state_id": null + }, + { + "panel_slug": "powerbar", + "traversal_index": 6, + "element_id": 268437128, + "state_id": 0 + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 6, + "element_id": 268437211, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 6, + "element_id": 268437211, + "state_id": 0 + }, + { + "panel_slug": "toolbar", + "traversal_index": 56, + "element_id": 268437032, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 56, + "element_id": 268437032, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 6, + "element_id": 268437048, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 6, + "element_id": 268437048, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693186, + "alpha_image_id": null + }, + "relative_path": "images/0x060074C2.png", + "width": 5, + "height": 10, + "used_by_panels": [ + "combat", + "environment_panel", + "examine", + "indicators", + "main_chat", + "main_panel", + "powerbar", + "side_by_side_vitals", + "toolbar", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 8, + "element_id": 268437164, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 8, + "element_id": 268437164, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 8, + "element_id": 268437098, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 8, + "element_id": 268437098, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 8, + "element_id": 268437114, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 8, + "element_id": 268437114, + "state_id": 0 + }, + { + "panel_slug": "indicators", + "traversal_index": 8, + "element_id": 268437066, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 8, + "element_id": 268437066, + "state_id": 0 + }, + { + "panel_slug": "main_chat", + "traversal_index": 8, + "element_id": 268437146, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 8, + "element_id": 268437146, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 8, + "element_id": 268437082, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 8, + "element_id": 268437082, + "state_id": 0 + }, + { + "panel_slug": "powerbar", + "traversal_index": 8, + "element_id": 268437130, + "state_id": null + }, + { + "panel_slug": "powerbar", + "traversal_index": 8, + "element_id": 268437130, + "state_id": 0 + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 8, + "element_id": 268437213, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 8, + "element_id": 268437213, + "state_id": 0 + }, + { + "panel_slug": "toolbar", + "traversal_index": 58, + "element_id": 268437034, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 58, + "element_id": 268437034, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 8, + "element_id": 268437050, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 8, + "element_id": 268437050, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693187, + "alpha_image_id": null + }, + "relative_path": "images/0x060074C3.png", + "width": 5, + "height": 5, + "used_by_panels": [ + "combat", + "environment_panel", + "examine", + "indicators", + "main_chat", + "main_panel", + "powerbar", + "side_by_side_vitals", + "toolbar", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 1, + "element_id": 268437157, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 1, + "element_id": 268437157, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 1, + "element_id": 268437091, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 1, + "element_id": 268437091, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 1, + "element_id": 268437107, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 1, + "element_id": 268437107, + "state_id": 0 + }, + { + "panel_slug": "indicators", + "traversal_index": 1, + "element_id": 268437059, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 1, + "element_id": 268437059, + "state_id": 0 + }, + { + "panel_slug": "main_chat", + "traversal_index": 1, + "element_id": 268437139, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 1, + "element_id": 268437139, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 1, + "element_id": 268437075, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 1, + "element_id": 268437075, + "state_id": 0 + }, + { + "panel_slug": "powerbar", + "traversal_index": 1, + "element_id": 268437123, + "state_id": null + }, + { + "panel_slug": "powerbar", + "traversal_index": 1, + "element_id": 268437123, + "state_id": 0 + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 1, + "element_id": 268437206, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 1, + "element_id": 268437206, + "state_id": 0 + }, + { + "panel_slug": "toolbar", + "traversal_index": 51, + "element_id": 268437027, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 51, + "element_id": 268437027, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 1, + "element_id": 268437043, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 1, + "element_id": 268437043, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693188, + "alpha_image_id": null + }, + "relative_path": "images/0x060074C4.png", + "width": 5, + "height": 5, + "used_by_panels": [ + "combat", + "environment_panel", + "examine", + "indicators", + "main_chat", + "main_panel", + "powerbar", + "side_by_side_vitals", + "toolbar", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 3, + "element_id": 268437159, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 3, + "element_id": 268437159, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 3, + "element_id": 268437093, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 3, + "element_id": 268437093, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 3, + "element_id": 268437109, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 3, + "element_id": 268437109, + "state_id": 0 + }, + { + "panel_slug": "indicators", + "traversal_index": 3, + "element_id": 268437061, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 3, + "element_id": 268437061, + "state_id": 0 + }, + { + "panel_slug": "main_chat", + "traversal_index": 3, + "element_id": 268437141, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 3, + "element_id": 268437141, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 3, + "element_id": 268437077, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 3, + "element_id": 268437077, + "state_id": 0 + }, + { + "panel_slug": "powerbar", + "traversal_index": 3, + "element_id": 268437125, + "state_id": null + }, + { + "panel_slug": "powerbar", + "traversal_index": 3, + "element_id": 268437125, + "state_id": 0 + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 3, + "element_id": 268437208, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 3, + "element_id": 268437208, + "state_id": 0 + }, + { + "panel_slug": "toolbar", + "traversal_index": 53, + "element_id": 268437029, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 53, + "element_id": 268437029, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 3, + "element_id": 268437045, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 3, + "element_id": 268437045, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693189, + "alpha_image_id": null + }, + "relative_path": "images/0x060074C5.png", + "width": 5, + "height": 5, + "used_by_panels": [ + "combat", + "environment_panel", + "examine", + "indicators", + "main_chat", + "main_panel", + "powerbar", + "side_by_side_vitals", + "toolbar", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 5, + "element_id": 268437161, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 5, + "element_id": 268437161, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 5, + "element_id": 268437095, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 5, + "element_id": 268437095, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 5, + "element_id": 268437111, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 5, + "element_id": 268437111, + "state_id": 0 + }, + { + "panel_slug": "indicators", + "traversal_index": 5, + "element_id": 268437063, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 5, + "element_id": 268437063, + "state_id": 0 + }, + { + "panel_slug": "main_chat", + "traversal_index": 5, + "element_id": 268437143, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 5, + "element_id": 268437143, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 5, + "element_id": 268437079, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 5, + "element_id": 268437079, + "state_id": 0 + }, + { + "panel_slug": "powerbar", + "traversal_index": 5, + "element_id": 268437127, + "state_id": null + }, + { + "panel_slug": "powerbar", + "traversal_index": 5, + "element_id": 268437127, + "state_id": 0 + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 5, + "element_id": 268437210, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 5, + "element_id": 268437210, + "state_id": 0 + }, + { + "panel_slug": "toolbar", + "traversal_index": 55, + "element_id": 268437031, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 55, + "element_id": 268437031, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 5, + "element_id": 268437047, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 5, + "element_id": 268437047, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693190, + "alpha_image_id": null + }, + "relative_path": "images/0x060074C6.png", + "width": 5, + "height": 5, + "used_by_panels": [ + "combat", + "environment_panel", + "examine", + "indicators", + "main_chat", + "main_panel", + "powerbar", + "side_by_side_vitals", + "toolbar", + "vitals" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 7, + "element_id": 268437163, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 7, + "element_id": 268437163, + "state_id": 0 + }, + { + "panel_slug": "environment_panel", + "traversal_index": 7, + "element_id": 268437097, + "state_id": null + }, + { + "panel_slug": "environment_panel", + "traversal_index": 7, + "element_id": 268437097, + "state_id": 0 + }, + { + "panel_slug": "examine", + "traversal_index": 7, + "element_id": 268437113, + "state_id": null + }, + { + "panel_slug": "examine", + "traversal_index": 7, + "element_id": 268437113, + "state_id": 0 + }, + { + "panel_slug": "indicators", + "traversal_index": 7, + "element_id": 268437065, + "state_id": null + }, + { + "panel_slug": "indicators", + "traversal_index": 7, + "element_id": 268437065, + "state_id": 0 + }, + { + "panel_slug": "main_chat", + "traversal_index": 7, + "element_id": 268437145, + "state_id": null + }, + { + "panel_slug": "main_chat", + "traversal_index": 7, + "element_id": 268437145, + "state_id": 0 + }, + { + "panel_slug": "main_panel", + "traversal_index": 7, + "element_id": 268437081, + "state_id": null + }, + { + "panel_slug": "main_panel", + "traversal_index": 7, + "element_id": 268437081, + "state_id": 0 + }, + { + "panel_slug": "powerbar", + "traversal_index": 7, + "element_id": 268437129, + "state_id": null + }, + { + "panel_slug": "powerbar", + "traversal_index": 7, + "element_id": 268437129, + "state_id": 0 + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 7, + "element_id": 268437212, + "state_id": null + }, + { + "panel_slug": "side_by_side_vitals", + "traversal_index": 7, + "element_id": 268437212, + "state_id": 0 + }, + { + "panel_slug": "toolbar", + "traversal_index": 57, + "element_id": 268437033, + "state_id": null + }, + { + "panel_slug": "toolbar", + "traversal_index": 57, + "element_id": 268437033, + "state_id": 0 + }, + { + "panel_slug": "vitals", + "traversal_index": 7, + "element_id": 268437049, + "state_id": null + }, + { + "panel_slug": "vitals", + "traversal_index": 7, + "element_id": 268437049, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693193, + "alpha_image_id": null + }, + "relative_path": "images/0x060074C9.png", + "width": 27, + "height": 27, + "used_by_panels": [ + "radar" + ], + "used_by_nodes": [ + { + "panel_slug": "radar", + "traversal_index": 4, + "element_id": 268437155, + "state_id": null + }, + { + "panel_slug": "radar", + "traversal_index": 4, + "element_id": 268437155, + "state_id": 0 + } + ] + }, + { + "key": { + "image_id": 100693194, + "alpha_image_id": null + }, + "relative_path": "images/0x060074CA.png", + "width": 60, + "height": 13, + "used_by_panels": [ + "combat" + ], + "used_by_nodes": [ + { + "panel_slug": "combat", + "traversal_index": 21, + "element_id": 268435535, + "state_id": null + }, + { + "panel_slug": "combat", + "traversal_index": 21, + "element_id": 268435535, + "state_id": 0 + } + ] + } + ], + "skipped_panels": [] +} \ No newline at end of file diff --git a/src/AcDream.App/Studio/DumpLayout.cs b/src/AcDream.App/Studio/DumpLayout.cs new file mode 100644 index 00000000..1f90f724 --- /dev/null +++ b/src/AcDream.App/Studio/DumpLayout.cs @@ -0,0 +1,235 @@ +using System.Numerics; +using AcDream.App.UI; + +namespace AcDream.App.Studio; + +// ───────────────────────────────────────────────────────────────────────────── +// DumpLayout — load a panel from the retail UI layout dump +// +// The dump stores every node's rect in ABSOLUTE screen coordinates (the +// panel's design position in the retail UI, not relative to its parent). +// Evidence: for the "inventory" panel, the root node is at x=500,y=138 and +// its direct children are also at x=500,y=161 — the child y=161 is only +// 23 pixels below the parent y=138, which makes sense as a child offset +// (the header row), not as the raw rect. If the rects were parent-relative, +// (500,161) would place the child way off the window. +// +// DumpLayout converts absolute → parent-relative by computing: +// child.Left = child.Rect.X - parent.Rect.X +// child.Top = child.Rect.Y - parent.Rect.Y +// +// The root node (ParentTraversalIndex == null) is placed at (0,0) so the +// whole tree sits at the UiHost origin rather than at the panel's retail +// screen position. +// ───────────────────────────────────────────────────────────────────────────── + +/// +/// Builds a static tree from the retail UI layout dump +/// JSON. The tree is a hierarchy of (draws its +/// sprite) or plain containers (Group nodes), with each +/// node's set to the dump's element_id and +/// set to the widget_kind string. +/// +/// This source is STATIC — no controllers, no FixtureProvider, no live +/// game data. It is a build reference for the UI Studio showing any of the 26 +/// retail windows without needing the production panel wired up. +/// +public static class DumpLayout +{ + /// + /// Parse the dump at , find the panel whose slug + /// matches , and build a tree. + /// + /// + /// maps a RenderSurface id (0x06xxxxxx) to a + /// (GL texture handle, native width, native height) triple — pass + /// RenderStack.ResolveChrome from the studio, or a stub returning + /// (1,1,1) for tests. + /// + /// + /// Returns null and sets on failure. + /// + public static UiElement? Load( + string dumpPath, + string slug, + Func resolve, + out string? error) + { + // ── 1. Parse the dump JSON ──────────────────────────────────────── + var dump = UiDumpModel.Parse(dumpPath); + if (dump is null) + { + error = $"[dump] Failed to parse '{dumpPath}'."; + return null; + } + + // ── 2. Find the requested panel ─────────────────────────────────── + var panel = dump.Panels.FirstOrDefault( + p => string.Equals(p.Slug, slug, StringComparison.OrdinalIgnoreCase)); + if (panel is null) + { + error = $"[dump] Panel slug '{slug}' not found. " + + $"Available: {string.Join(", ", dump.Panels.Select(p => p.Slug))}"; + return null; + } + + if (panel.Nodes.Count == 0) + { + error = $"[dump] Panel '{slug}' has no nodes."; + return null; + } + + // ── 3. Build a traversal-index → node lookup ────────────────────── + var byIndex = new Dictionary(panel.Nodes.Count); + foreach (var n in panel.Nodes) + byIndex[n.TraversalIndex] = n; + + // ── 4. Create UiElement objects for every node ──────────────────── + var elements = new Dictionary(panel.Nodes.Count); + foreach (var node in panel.Nodes) + { + var el = BuildElement(node, resolve); + elements[node.TraversalIndex] = el; + } + + // ── 5. Wire parent–child relationships + set parent-relative coords ─ + UiElement? root = null; + foreach (var node in panel.Nodes) + { + var el = elements[node.TraversalIndex]; + + if (node.ParentTraversalIndex is null) + { + // Root node — place at (0,0) so the tree sits at the UiHost origin. + // The panel's absolute rect offset is discarded here (it was the + // retail design position inside the retail screen, which we don't need). + el.Left = 0f; + el.Top = 0f; + root = el; + } + else + { + // Non-root: convert absolute → parent-relative by subtracting parent rect. + // child.Left = child.Rect.X - parent.Rect.X + // child.Top = child.Rect.Y - parent.Rect.Y + // This preserves the visual layout inside each group without placing the + // entire panel at its retail screen origin. + var parentNode = byIndex[node.ParentTraversalIndex.Value]; + el.Left = node.Rect.X - parentNode.Rect.X; + el.Top = node.Rect.Y - parentNode.Rect.Y; + + var parentEl = elements[node.ParentTraversalIndex.Value]; + parentEl.AddChild(el); + } + } + + if (root is null) + { + error = $"[dump] Panel '{slug}': no root node found (all nodes have a parent)."; + return null; + } + + // Give the root the full panel dimensions (from the dump's width/height record). + root.Width = panel.Width; + root.Height = panel.Height; + + error = null; + return root; + } + + // ── Private helpers ─────────────────────────────────────────────────────── + + private static UiElement BuildElement( + DumpNode node, + Func resolve) + { + uint imageId = UiDumpModel.PickImageId(node); + var kind = node.WidgetKind ?? "Group"; + + UiElement el; + if (imageId != 0 && !string.Equals(kind, "Group", StringComparison.OrdinalIgnoreCase)) + { + // Sprite/Button/Scrollbar/Slider — create a sprite-drawing element. + el = new DumpSpriteElement(imageId, resolve) + { + Name = kind, + ClickThrough = true, // static mockup; no behavior + Anchors = AnchorEdges.None, + }; + } + else + { + // Group (or sprite without an image) — plain container, no own draw. + el = new DumpGroupElement() + { + Name = kind, + ClickThrough = true, + Anchors = AnchorEdges.None, + }; + } + + // EventId is set from the dump's element_id (cast to uint — the decimal + // values in the JSON represent the same dat handle used at runtime). + el.EventId = (uint)node.ElementId; + el.Left = node.Rect.X; // overwritten by caller per root/child logic + el.Top = node.Rect.Y; + el.Width = node.Rect.Width; + el.Height = node.Rect.Height; + + return el; + } +} + +// ───────────────────────────────────────────────────────────────────────────── +// DumpSpriteElement — minimal element that draws a single sprite +// ───────────────────────────────────────────────────────────────────────────── + +/// +/// Draws a single sprite at its native size tiled to fill +/// × . Used for Sprite/Button/Scrollbar/Slider nodes from +/// the retail UI dump. +/// +/// We do NOT reuse here because +/// that class requires an ElementInfo with a populated StateMedia +/// dictionary — the dat-import plumbing — which is not needed for a static dump +/// preview. A minimal subclass keeps the code simpler and the dependency surface +/// smaller. +/// +internal sealed class DumpSpriteElement : UiElement +{ + private readonly uint _imageId; + private readonly Func _resolve; + + public DumpSpriteElement(uint imageId, Func resolve) + { + _imageId = imageId; + _resolve = resolve; + } + + protected override void OnDraw(UiRenderContext ctx) + { + if (_imageId == 0) return; + + var (tex, tw, th) = _resolve(_imageId); + if (tex == 0 || tw == 0 || th == 0) return; + + // Tile at native resolution (same as UiDatElement.OnDraw — UV-repeat on both + // axes via GL_REPEAT, Width/tw and Height/th tile the texture). + ctx.DrawSprite(tex, 0, 0, Width, Height, + 0, 0, Width / tw, Height / th, Vector4.One); + } +} + +// ───────────────────────────────────────────────────────────────────────────── +// DumpGroupElement — pure container (Group nodes from the dump) +// ───────────────────────────────────────────────────────────────────────────── + +/// +/// Container element for dump Group nodes — no own draw, just hosts children. +/// Extending UiElement directly (no OnDraw override) gives transparent groups, +/// which matches Group nodes in the retail layout that have no background sprite. +/// +internal sealed class DumpGroupElement : UiElement +{ + // No OnDraw — completely transparent container. +} diff --git a/src/AcDream.App/Studio/StudioOptions.cs b/src/AcDream.App/Studio/StudioOptions.cs index bd42bd06..6a6b53b8 100644 --- a/src/AcDream.App/Studio/StudioOptions.cs +++ b/src/AcDream.App/Studio/StudioOptions.cs @@ -5,7 +5,12 @@ namespace AcDream.App.Studio; /// Constructed by from the command-line tokens that follow /// the ui-studio dispatch token. /// -public sealed record StudioOptions(string DatDir, uint? LayoutId, string? MarkupPath) +public sealed record StudioOptions( + string DatDir, + uint? LayoutId, + string? MarkupPath, + string? DumpSlug = null, + string? DumpFile = null) { /// /// Parse studio options from the args that come AFTER the ui-studio token. @@ -14,14 +19,21 @@ public sealed record StudioOptions(string DatDir, uint? LayoutId, string? Markup /// ACDREAM_DAT_DIR when omitted. /// --layout 0xNNNN: hex LayoutDesc dat id to preview. /// --markup <path>: path to a KSML markup file (Task 6, unsupported for now). - /// When neither --layout nor --markup is given the default layout - /// 0x2100006C (vitals) is used. + /// --dump <slug>: load a panel from the retail UI dump JSON by slug + /// (e.g. inventory, radar, toolbar). Static mockup — no controllers. + /// --dump-file <path>: override the default dump file path + /// (docs/research/2026-06-25-retail-ui-layout-dump.json from the solution root). + /// Only meaningful when --dump is also given. + /// When neither --layout, --markup, nor --dump is given the + /// default layout 0x2100006C (vitals) is used. /// public static StudioOptions Parse(string[] args) { string? datDir = null; uint? layoutId = null; string? markupPath = null; + string? dumpSlug = null; + string? dumpFile = null; for (int i = 0; i < args.Length; i++) { @@ -38,6 +50,14 @@ public sealed record StudioOptions(string DatDir, uint? LayoutId, string? Markup { markupPath = args[++i]; } + else if (args[i] == "--dump" && i + 1 < args.Length) + { + dumpSlug = args[++i]; + } + else if (args[i] == "--dump-file" && i + 1 < args.Length) + { + dumpFile = args[++i]; + } else if (!args[i].StartsWith('-')) { datDir ??= args[i]; @@ -51,10 +71,37 @@ public sealed record StudioOptions(string DatDir, uint? LayoutId, string? Markup throw new InvalidOperationException( "ui-studio: dat directory required — pass as first arg or set ACDREAM_DAT_DIR."); - // Default layout: vitals (0x2100006C). - if (layoutId is null && markupPath is null) + // Default layout: vitals (0x2100006C), unless a dump slug or markup is requested. + if (layoutId is null && markupPath is null && dumpSlug is null) layoutId = 0x2100006Cu; - return new StudioOptions(datDir, layoutId, markupPath); + return new StudioOptions(datDir, layoutId, markupPath, dumpSlug, dumpFile); + } + + /// + /// Resolve the dump file path for this session: + /// + /// if explicitly set. + /// Otherwise <solutionRoot>/docs/research/2026-06-25-retail-ui-layout-dump.json. + /// + /// Returns null when neither the override nor the default file exists. + /// + public string? ResolveDumpFile() + { + if (!string.IsNullOrEmpty(DumpFile)) + return DumpFile; + + // Walk up from the App binary to the solution root (same approach as + // ConformanceDats.SolutionRoot in the test project). + var dir = AppContext.BaseDirectory; + while (!string.IsNullOrEmpty(dir)) + { + var candidate = Path.Combine(dir, "docs", "research", + "2026-06-25-retail-ui-layout-dump.json"); + if (File.Exists(candidate)) + return candidate; + dir = Path.GetDirectoryName(dir); + } + return null; } } diff --git a/src/AcDream.App/Studio/StudioWindow.cs b/src/AcDream.App/Studio/StudioWindow.cs index 4212f1e1..67438631 100644 --- a/src/AcDream.App/Studio/StudioWindow.cs +++ b/src/AcDream.App/Studio/StudioWindow.cs @@ -117,8 +117,34 @@ public sealed class StudioWindow : IDisposable _stack.UiHost.WireKeyboard(kb); // Load the panel described by options and add it to the UI tree. + // Task 4b: --dump uses DumpLayout (static retail mockup, no controllers). + // All other modes use LayoutSource + FixtureProvider (production path). _source = new LayoutSource(_dats, _stack.ResolveChrome, _stack.VitalsDatFont); - var root = _source.Load(_opts); + UiElement? root; + if (_opts.DumpSlug is not null) + { + var dumpFile = _opts.ResolveDumpFile(); + if (dumpFile is null) + { + Console.Error.WriteLine("[studio] --dump: retail UI dump file not found. " + + "Expected docs/research/2026-06-25-retail-ui-layout-dump.json in the source tree, " + + "or pass --dump-file ."); + root = null; + } + else + { + root = DumpLayout.Load(dumpFile, _opts.DumpSlug, _stack.ResolveChrome, out var dumpErr); + if (root is null) + Console.Error.WriteLine($"[studio] dump load failed: {dumpErr}"); + } + } + else + { + root = _source.Load(_opts); + if (root is null) + Console.Error.WriteLine($"[studio] panel load failed: {_source.LastError}"); + } + _panelRoot = root; if (root is not null) { @@ -126,15 +152,14 @@ public sealed class StudioWindow : IDisposable // Task 4: populate the panel with sample data via production controllers, // so inventory / vitals / toolbar panels render with plausible content. - if (_source.CurrentLayout is not null) + // Dump source is static — no FixtureProvider needed. + if (_opts.DumpSlug is null && _source.CurrentLayout is not null) { uint layoutId = _opts.LayoutId ?? 0x2100006Cu; _objects = SampleData.BuildObjectTable(); FixtureProvider.Populate(layoutId, _source.CurrentLayout, _stack, _objects, _dats); } } - else - Console.Error.WriteLine($"[studio] panel load failed: {_source.LastError}"); // Task 3: ImGui IDE. The studio is always "devtools" — no gate flag needed. _imgui = new AcDream.UI.ImGui.ImGuiBootstrapper(gl, _window!, input); diff --git a/src/AcDream.App/Studio/UiDumpModel.cs b/src/AcDream.App/Studio/UiDumpModel.cs new file mode 100644 index 00000000..c33e4b9e --- /dev/null +++ b/src/AcDream.App/Studio/UiDumpModel.cs @@ -0,0 +1,198 @@ +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace AcDream.App.Studio; + +// ───────────────────────────────────────────────────────────────────────────── +// UiDumpModel — POCOs for docs/research/2026-06-25-retail-ui-layout-dump.json +// +// Schema (v1): +// { "version":1, "panels":[ { "id":int, "slug":string, "title":string, +// "bucket":string, "parent_slug":string|null, +// "width":int, "height":int, +// "nodes":[ { "traversal_index":int, "element_id":int, +// "layout_id":int, "parent_layout_id":int|null, +// "parent_traversal_index":int|null, "base_layout_id":int, +// "rect":{x,y,width,height}, +// "widget_kind":"Group"|"Sprite"|"Button"|"Scrollbar"|"Slider", +// "state_set":{ "default_image":{image_id,alpha_image_id}|null, +// "states":[{state_id,image:{...}}] } +// } ] } ] } +// +// All ids in the dump are DECIMAL ints (e.g. element_id=268435925 = 0x100001D5, +// image_id=100693194 = 0x060074CA). Cast to uint before use in dat/GL APIs. +// +// Rect coordinates are ABSOLUTE (screen-space origin = panel's design position +// in retail layout, NOT relative to the parent). DumpLayout.Load converts them +// to parent-relative when building the UiElement tree. +// ───────────────────────────────────────────────────────────────────────────── + +/// Top-level container for the retail UI layout dump. +public sealed class UiDump +{ + [JsonPropertyName("version")] + public int Version { get; set; } + + [JsonPropertyName("panels")] + public List Panels { get; set; } = new(); +} + +/// One panel (window) exported from the retail UI. +public sealed class DumpPanel +{ + [JsonPropertyName("id")] + public long Id { get; set; } + + [JsonPropertyName("slug")] + public string Slug { get; set; } = ""; + + [JsonPropertyName("title")] + public string Title { get; set; } = ""; + + [JsonPropertyName("bucket")] + public string Bucket { get; set; } = ""; + + [JsonPropertyName("parent_slug")] + public string? ParentSlug { get; set; } + + [JsonPropertyName("width")] + public float Width { get; set; } + + [JsonPropertyName("height")] + public float Height { get; set; } + + [JsonPropertyName("nodes")] + public List Nodes { get; set; } = new(); +} + +/// One element node within a panel's traversal list. +public sealed class DumpNode +{ + [JsonPropertyName("traversal_index")] + public int TraversalIndex { get; set; } + + [JsonPropertyName("element_id")] + public long ElementId { get; set; } + + [JsonPropertyName("layout_id")] + public long LayoutId { get; set; } + + [JsonPropertyName("parent_layout_id")] + public long? ParentLayoutId { get; set; } + + [JsonPropertyName("parent_traversal_index")] + public int? ParentTraversalIndex { get; set; } + + [JsonPropertyName("base_layout_id")] + public long BaseLayoutId { get; set; } + + [JsonPropertyName("rect")] + public DumpRect Rect { get; set; } = new(); + + [JsonPropertyName("widget_kind")] + public string WidgetKind { get; set; } = "Group"; + + [JsonPropertyName("state_set")] + public DumpStateSet StateSet { get; set; } = new(); +} + +/// Absolute screen-space rect (see comment above — must subtract parent rect for UiElement). +public sealed class DumpRect +{ + [JsonPropertyName("x")] + public float X { get; set; } + + [JsonPropertyName("y")] + public float Y { get; set; } + + [JsonPropertyName("width")] + public float Width { get; set; } + + [JsonPropertyName("height")] + public float Height { get; set; } +} + +/// State set for a node — default image plus per-state overrides. +public sealed class DumpStateSet +{ + [JsonPropertyName("default_image")] + public DumpImage? DefaultImage { get; set; } + + [JsonPropertyName("states")] + public List States { get; set; } = new(); +} + +/// Image reference (RenderSurface dat id + optional separate alpha surface). +public sealed class DumpImage +{ + [JsonPropertyName("image_id")] + public long ImageId { get; set; } + + [JsonPropertyName("alpha_image_id")] + public long? AlphaImageId { get; set; } +} + +/// A named state override. +public sealed class DumpState +{ + [JsonPropertyName("state_id")] + public int StateId { get; set; } + + [JsonPropertyName("image")] + public DumpImage Image { get; set; } = new(); +} + +// ───────────────────────────────────────────────────────────────────────────── +// Helper statics +// ───────────────────────────────────────────────────────────────────────────── + +/// +/// Parsing helpers for the retail UI dump JSON. +/// +public static class UiDumpModel +{ + private static readonly JsonSerializerOptions _opts = new() + { + PropertyNameCaseInsensitive = true, + AllowTrailingCommas = true, + ReadCommentHandling = JsonCommentHandling.Skip, + }; + + /// Parse the full dump from a file path. Returns null on failure. + public static UiDump? Parse(string path) + { + try + { + using var stream = File.OpenRead(path); + return JsonSerializer.Deserialize(stream, _opts); + } + catch + { + return null; + } + } + + /// + /// Return the list of slugs in the dump (for smoke-testing every panel). + /// Returns an empty list if the file cannot be parsed. + /// + public static IReadOnlyList ListSlugs(string path) + { + var dump = Parse(path); + if (dump is null) return Array.Empty(); + return dump.Panels.Select(p => p.Slug).ToList(); + } + + /// + /// Pick the sprite id to use for a node: prefer default_image.image_id; + /// fall back to states[0].image.image_id; return 0 if neither exists. + /// + public static uint PickImageId(DumpNode node) + { + if (node.StateSet.DefaultImage is { ImageId: > 0 } di) + return (uint)di.ImageId; + if (node.StateSet.States.Count > 0 && node.StateSet.States[0].Image.ImageId > 0) + return (uint)node.StateSet.States[0].Image.ImageId; + return 0u; + } +} diff --git a/tests/AcDream.App.Tests/Studio/DumpLayoutTests.cs b/tests/AcDream.App.Tests/Studio/DumpLayoutTests.cs new file mode 100644 index 00000000..2b635778 --- /dev/null +++ b/tests/AcDream.App.Tests/Studio/DumpLayoutTests.cs @@ -0,0 +1,188 @@ +using AcDream.App.Studio; +using AcDream.App.UI; + +namespace AcDream.App.Tests.Studio; + +/// +/// Tests for — parsing the retail UI dump JSON and +/// building a tree from it. +/// +/// These tests load the real dump file from the source tree +/// (docs/research/2026-06-25-retail-ui-layout-dump.json). The test +/// skips cleanly when the file is absent (should not happen in a normal dev +/// checkout, but guards against stripped CI machines). +/// +public class DumpLayoutTests +{ + private static string DumpPath() + { + // Walk up from the test output directory to the solution root, + // mirroring ConformanceDats.SolutionRoot(). + var dir = AppContext.BaseDirectory; + while (!string.IsNullOrEmpty(dir)) + { + if (File.Exists(Path.Combine(dir, "AcDream.slnx"))) + return Path.Combine(dir, "docs", "research", + "2026-06-25-retail-ui-layout-dump.json"); + dir = Path.GetDirectoryName(dir); + } + // Fallback: try a relative path (won't find it but skip rather than throw) + return Path.Combine(AppContext.BaseDirectory, + "docs", "research", "2026-06-25-retail-ui-layout-dump.json"); + } + + private static (uint, int, int) NoTex(uint _) => (1u, 1, 1); + + // ── Helpers ────────────────────────────────────────────────────────── + + /// Depth-first search for an element with the given EventId. + private static UiElement? FindById(UiElement root, uint id) + { + if (root.EventId == id) return root; + foreach (var c in root.Children) + { + var found = FindById(c, id); + if (found is not null) return found; + } + return null; + } + + /// Count the total elements in the tree (self + all descendants). + private static int CountAll(UiElement root) + { + int n = 1; + foreach (var c in root.Children) n += CountAll(c); + return n; + } + + // ── Tests ───────────────────────────────────────────────────────────── + + /// + /// Loading the "inventory" slug should succeed and the returned tree should + /// contain an element with EventId == 0x100001D5 (the doll viewport node) + /// and at least 40 elements in total. + /// + [Fact] + public void Load_Inventory_ReturnsTreeWithDollViewport() + { + var path = DumpPath(); + if (!File.Exists(path)) + return; // Skip: dump not available. + + var root = DumpLayout.Load(path, "inventory", NoTex, out var err); + + Assert.NotNull(root); + Assert.Null(err); + + // The doll viewport element must appear somewhere in the tree. + const uint dollViewportId = 0x100001D5u; + var found = FindById(root!, dollViewportId); + Assert.NotNull(found); + + // The full tree must be reasonably deep — 59 dump nodes → >= 40 elements. + int total = CountAll(root!); + Assert.True(total >= 40, + $"Expected >= 40 elements in inventory tree; got {total}"); + } + + /// + /// Loading an unknown slug must return null and a non-empty error string. + /// + [Fact] + public void Load_UnknownSlug_ReturnsNullWithError() + { + var path = DumpPath(); + if (!File.Exists(path)) + return; // Skip. + + var root = DumpLayout.Load(path, "this_slug_does_not_exist", NoTex, out var err); + + Assert.Null(root); + Assert.NotNull(err); + Assert.NotEmpty(err!); + } + + /// + /// The root element's Left/Top should be (0,0) (the panel's rect offset has + /// been stripped so the tree sits at the window origin), and its Width/Height + /// should match the dump panel dimensions. + /// + [Fact] + public void Load_Inventory_RootAtOrigin() + { + var path = DumpPath(); + if (!File.Exists(path)) + return; // Skip. + + var root = DumpLayout.Load(path, "inventory", NoTex, out _); + Assert.NotNull(root); + + // Root always placed at (0,0) by DumpLayout (origin of the UiHost). + Assert.Equal(0f, root!.Left); + Assert.Equal(0f, root.Top); + // Width/Height come from the panel record in the dump. + Assert.True(root.Width > 0, "Root width must be > 0"); + Assert.True(root.Height > 0, "Root height must be > 0"); + } + + /// + /// Children must use parent-relative coordinates (the dump rects are absolute; + /// DumpLayout subtracts the parent rect to produce parent-local offsets). + /// Verify that at least the direct children of the root have Left/Top values + /// that are NOT equal to the absolute rect they had in the dump (since the root + /// was at x>0 in screen space but we place it at 0,0). + /// + [Fact] + public void Load_Inventory_ChildrenAreParentRelative() + { + var path = DumpPath(); + if (!File.Exists(path)) + return; // Skip. + + var root = DumpLayout.Load(path, "inventory", NoTex, out _); + Assert.NotNull(root); + + // If the dump has children at absolute x>=500 but the root is at 0, + // a correct parent-relative placement will give children x < 500. + // (The inventory panel root is at absolute x=500; children in the dump + // also start at x=500 — after subtraction they should land near x=0.) + bool anyChildAtAbsoluteX = false; + foreach (var child in root!.Children) + { + if (child.Left >= 490f) // would indicate absolute not relative + { + anyChildAtAbsoluteX = true; + break; + } + } + Assert.False(anyChildAtAbsoluteX, + "Children appear to have absolute coords (Left >= 490) — " + + "DumpLayout must subtract the parent rect."); + } + + /// + /// Every panel slug known in the dump must load without error. + /// This is a smoke test that the JSON parse + tree build does not + /// crash on any of the 26 panels. + /// + [Fact] + public void Load_AllSlugs_Succeed() + { + var path = DumpPath(); + if (!File.Exists(path)) + return; // Skip. + + var slugs = UiDumpModel.ListSlugs(path); + Assert.True(slugs.Count >= 20, + $"Expected >= 20 panel slugs in dump; got {slugs.Count}"); + + foreach (var slug in slugs) + { + var root = DumpLayout.Load(path, slug, NoTex, out var err); + Assert.True(root is not null || err is not null, + $"Load('{slug}') returned both null root AND null error — one must be set."); + if (root is null) + Assert.Fail($"Slug '{slug}' failed with error: {err}"); + } + } +} From f778b100b7af7995a53ec4ddd0607305c1436b2a Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 25 Jun 2026 16:36:10 +0200 Subject: [PATCH 23/51] feat(studio): headless --screenshot mode (render panel to PNG + exit) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add `--screenshot ` to the UI Studio: when set the window is created hidden (WindowOptions.IsVisible = false), the panel is loaded and rendered into PanelFbo on the first OnRender tick, pixels are read back with the new PanelFbo.ReadColorRgba(), rows are flipped (GL bottom-left → PNG top-left), and the result is saved via ImageSharp SaveAsPng before calling _window.Close(). Render size is derived from the loaded root's Width/Height (clamped 256–2048 px); falls back to 1280×720 when the root has no explicit size. In headless mode ImGui, the inspector, and input wiring are all skipped — only PanelFbo is created. Interactive path is unchanged. SixLabors.ImageSharp 3.1.12 was already a direct dep of AcDream.App (Phase O-T7); no new PackageReference needed. Co-Authored-By: Claude Sonnet 4.6 --- src/AcDream.App/Studio/PanelFbo.cs | 28 +++++++ src/AcDream.App/Studio/StudioOptions.cs | 25 ++++-- src/AcDream.App/Studio/StudioWindow.cs | 104 ++++++++++++++++++++---- 3 files changed, 133 insertions(+), 24 deletions(-) diff --git a/src/AcDream.App/Studio/PanelFbo.cs b/src/AcDream.App/Studio/PanelFbo.cs index de6aabb4..4f61ec55 100644 --- a/src/AcDream.App/Studio/PanelFbo.cs +++ b/src/AcDream.App/Studio/PanelFbo.cs @@ -67,6 +67,34 @@ public sealed unsafe class PanelFbo : IDisposable return _colorTex; } + /// + /// Read the FBO color attachment back to CPU as a flat RGBA8 byte array. + /// Must be called AFTER for the same and + /// (so the FBO exists and is the right size). + /// + /// FBO origin is bottom-left (GL convention). The caller is responsible for + /// flipping rows vertically before saving as a top-left-origin image format (PNG). + /// + /// Returns an empty array when the FBO is not ready. + /// + public unsafe byte[] ReadColorRgba(int width, int height) + { + if (_fbo == 0 || width <= 0 || height <= 0) return Array.Empty(); + + int byteCount = width * height * 4; + var buf = new byte[byteCount]; + + _gl.BindFramebuffer(FramebufferTarget.Framebuffer, _fbo); + fixed (byte* p = buf) + { + _gl.ReadPixels(0, 0, (uint)width, (uint)height, + PixelFormat.Rgba, PixelType.UnsignedByte, p); + } + _gl.BindFramebuffer(FramebufferTarget.Framebuffer, 0); + + return buf; + } + // ── FBO lifecycle (mirrors PaperdollViewportRenderer.EnsureFramebuffer) ────── private void EnsureFramebuffer(int width, int height) diff --git a/src/AcDream.App/Studio/StudioOptions.cs b/src/AcDream.App/Studio/StudioOptions.cs index 6a6b53b8..2a715b01 100644 --- a/src/AcDream.App/Studio/StudioOptions.cs +++ b/src/AcDream.App/Studio/StudioOptions.cs @@ -9,8 +9,9 @@ public sealed record StudioOptions( string DatDir, uint? LayoutId, string? MarkupPath, - string? DumpSlug = null, - string? DumpFile = null) + string? DumpSlug = null, + string? DumpFile = null, + string? ScreenshotPath = null) { /// /// Parse studio options from the args that come AFTER the ui-studio token. @@ -24,16 +25,20 @@ public sealed record StudioOptions( /// --dump-file <path>: override the default dump file path /// (docs/research/2026-06-25-retail-ui-layout-dump.json from the solution root). /// Only meaningful when --dump is also given. + /// --screenshot <path>: headless mode — render the loaded panel to a PNG + /// at and exit without showing an interactive window. + /// Combines with --dump or --layout. /// When neither --layout, --markup, nor --dump is given the /// default layout 0x2100006C (vitals) is used. /// public static StudioOptions Parse(string[] args) { - string? datDir = null; - uint? layoutId = null; - string? markupPath = null; - string? dumpSlug = null; - string? dumpFile = null; + string? datDir = null; + uint? layoutId = null; + string? markupPath = null; + string? dumpSlug = null; + string? dumpFile = null; + string? screenshotPath = null; for (int i = 0; i < args.Length; i++) { @@ -58,6 +63,10 @@ public sealed record StudioOptions( { dumpFile = args[++i]; } + else if (args[i] == "--screenshot" && i + 1 < args.Length) + { + screenshotPath = args[++i]; + } else if (!args[i].StartsWith('-')) { datDir ??= args[i]; @@ -75,7 +84,7 @@ public sealed record StudioOptions( if (layoutId is null && markupPath is null && dumpSlug is null) layoutId = 0x2100006Cu; - return new StudioOptions(datDir, layoutId, markupPath, dumpSlug, dumpFile); + return new StudioOptions(datDir, layoutId, markupPath, dumpSlug, dumpFile, screenshotPath); } /// diff --git a/src/AcDream.App/Studio/StudioWindow.cs b/src/AcDream.App/Studio/StudioWindow.cs index 67438631..64ab906f 100644 --- a/src/AcDream.App/Studio/StudioWindow.cs +++ b/src/AcDream.App/Studio/StudioWindow.cs @@ -7,6 +7,8 @@ using Silk.NET.Input; using Silk.NET.Maths; using Silk.NET.OpenGL; using Silk.NET.Windowing; +using SixLabors.ImageSharp; +using SixLabors.ImageSharp.PixelFormats; using static Silk.NET.OpenGL.ClearBufferMask; namespace AcDream.App.Studio; @@ -51,6 +53,10 @@ public sealed class StudioWindow : IDisposable // so the controller subscriptions (ObjectAdded/ObjectMoved etc.) fire correctly. private AcDream.Core.Items.ClientObjectTable? _objects; + // Headless screenshot mode: set when --screenshot was passed. + // True after the first OnRender fires the screenshot (guard against repeat). + private bool _screenshotDone; + public StudioWindow(StudioOptions opts) { _opts = opts ?? throw new ArgumentNullException(nameof(opts)); @@ -83,6 +89,10 @@ public sealed class StudioWindow : IDisposable // MSAA from quality preset — must be baked into the GL context at creation. Samples = startupQuality.MsaaSamples, PreferredStencilBufferBits = 8, + // Headless screenshot mode: hide the window so no desktop flash occurs. + // The GL context is still fully valid on a hidden window; FBO rendering + // is off-screen and independent of window visibility. + IsVisible = _opts.ScreenshotPath is null, }; _window = Window.Create(options); @@ -96,7 +106,6 @@ public sealed class StudioWindow : IDisposable private void OnLoad() { var gl = GL.GetApi(_window!); - var input = _window!.CreateInput(); _dats = new DatCollection(_opts.DatDir, DatAccessType.Read); @@ -110,12 +119,6 @@ public sealed class StudioWindow : IDisposable _stack = RenderBootstrap.Create(gl, _dats, new RenderBootstrapOptions(quality)); - // Wire input into UiHost. - foreach (var mouse in input.Mice) - _stack.UiHost.WireMouse(mouse); - foreach (var kb in input.Keyboards) - _stack.UiHost.WireKeyboard(kb); - // Load the panel described by options and add it to the UI tree. // Task 4b: --dump uses DumpLayout (static retail mockup, no controllers). // All other modes use LayoutSource + FixtureProvider (production path). @@ -161,22 +164,91 @@ public sealed class StudioWindow : IDisposable } } - // Task 3: ImGui IDE. The studio is always "devtools" — no gate flag needed. - _imgui = new AcDream.UI.ImGui.ImGuiBootstrapper(gl, _window!, input); - _panelFbo = new PanelFbo(gl); - _inspector = new StudioInspector(); + // Task 3: ImGui IDE — interactive mode only. + // Headless screenshot mode needs only PanelFbo; ImGui/inspector/input are skipped. + _panelFbo = new PanelFbo(gl); + if (_opts.ScreenshotPath is null) + { + var input = _window!.CreateInput(); + // Wire input into UiHost (interactive only). + foreach (var mouse in input.Mice) + _stack.UiHost.WireMouse(mouse); + foreach (var kb in input.Keyboards) + _stack.UiHost.WireKeyboard(kb); + _imgui = new AcDream.UI.ImGui.ImGuiBootstrapper(gl, _window!, input); + _inspector = new StudioInspector(); + } } private void OnUpdate(double dt) { } private void OnRender(double dt) { - if (_stack is null || _imgui is null || _panelFbo is null || _inspector is null) + if (_stack is null || _panelFbo is null) return; + + // ── HEADLESS SCREENSHOT PATH ────────────────────────────────────────────── + if (_opts.ScreenshotPath is not null) + { + if (_screenshotDone) return; // fire exactly once + _screenshotDone = true; + + // Pick render size from the loaded root's bounds (clamped to sane limits). + // Fall back to 1280×720 when the root has no explicit size. + int w = 1280, h = 720; + if (_panelRoot is not null) + { + float rw = _panelRoot.Width; + float rh = _panelRoot.Height; + if (rw >= 1f && rh >= 1f) + { + w = Math.Clamp((int)rw, 256, 2048); + h = Math.Clamp((int)rh, 256, 2048); + } + } + + // Tick once so widget state is initialised (e.g. bar fills). + _stack.UiHost.Tick(dt); + + // Render the panel into the FBO. + _panelFbo.Render(w, h, _stack.UiHost); + + // Read back RGBA pixels (FBO origin = bottom-left). + byte[] pixels = _panelFbo.ReadColorRgba(w, h); + if (pixels.Length == 0) + { + Console.Error.WriteLine("[studio-screenshot] FBO readback returned no pixels."); + _window?.Close(); + return; + } + + // Flip rows vertically: FBO bottom-left → PNG top-left. + int stride = w * 4; + byte[] flipped = new byte[pixels.Length]; + for (int row = 0; row < h; row++) + { + System.Buffer.BlockCopy(pixels, row * stride, flipped, (h - 1 - row) * stride, stride); + } + + // Build ImageSharp image and save as PNG. + var path = _opts.ScreenshotPath; + var dir = Path.GetDirectoryName(path); + if (!string.IsNullOrEmpty(dir)) + Directory.CreateDirectory(dir); + + using var img = Image.LoadPixelData(flipped, w, h); + img.SaveAsPng(path); + Console.WriteLine($"[studio-screenshot] wrote {path} ({w}x{h})"); + + _window?.Close(); return; + } + + // ── INTERACTIVE PATH ────────────────────────────────────────────────────── + if (_imgui is null || _inspector is null) return; var gl = _stack.Gl; - int w = _window!.Size.X; - int h = _window!.Size.Y; + int iw = _window!.Size.X; + int ih = _window!.Size.Y; // 1. Tick the UI widgets (OnRender's own dt — Update + Render fire with the same delta). _stack.UiHost.Tick(dt); @@ -184,7 +256,7 @@ public sealed class StudioWindow : IDisposable // 2. Render the panel into the off-screen FBO; get the color texture. // The FBO is the same logical size as the window, so element rects map 1:1 to // FBO pixels — no scale factor needed when displaying the canvas at full size. - uint panelTex = _panelFbo.Render(w, h, _stack.UiHost); + uint panelTex = _panelFbo.Render(iw, ih, _stack.UiHost); // 3. Clear the window back-buffer (the dark ImGui background shows behind panes). gl.ClearColor(0.1f, 0.1f, 0.1f, 1f); @@ -196,7 +268,7 @@ public sealed class StudioWindow : IDisposable // 5. Canvas pane — show the FBO texture; detect clicks. (int x, int y)? click = null; if (panelTex != 0) - click = _inspector.DrawCanvas((nint)panelTex, w, h); + click = _inspector.DrawCanvas((nint)panelTex, iw, ih); // 6. If the user clicked inside the canvas, hit-test the whole UI tree (UiRoot.Pick honors // Z-order + modal exclusivity) and select the topmost element. The canvas click coord is From 2fe7b4a057d90b6f5f94b6d0aa77c2d2279aada7 Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 25 Jun 2026 16:50:39 +0200 Subject: [PATCH 24/51] =?UTF-8?q?docs(studio):=20dump-panel=20render=20swe?= =?UTF-8?q?ep=20=E2=80=94=20all=2026=20windows=20verified?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rendered all 26 dump windows through the studio's --screenshot mode + a System.Drawing contact-sheet montage. The generic dump LayoutSource renders every panel with no crash; fidelity tracks static-chrome (in the dump) vs runtime content (slots/stats/appraise, not in the dump). Static-rich panels (vitals/toolbar/character/map/radar/effects/chat…) render great; runtime-only windows (examine) are correctly blank; inventory shows backdrop+frame but its nested sub-window chrome is sparse (next investigation). screenshots gitignored. Co-Authored-By: Claude Opus 4.8 (1M context) --- .gitignore | 1 + .../2026-06-25-studio-dump-panel-sweep.md | 45 +++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 docs/research/2026-06-25-studio-dump-panel-sweep.md diff --git a/.gitignore b/.gitignore index 215c618b..3f6ee43f 100644 --- a/.gitignore +++ b/.gitignore @@ -90,3 +90,4 @@ C[€- # Junction to Claude Code per-project memory (Obsidian vault visibility) claude-memory +studio-shots/ diff --git a/docs/research/2026-06-25-studio-dump-panel-sweep.md b/docs/research/2026-06-25-studio-dump-panel-sweep.md new file mode 100644 index 00000000..36b5f0cf --- /dev/null +++ b/docs/research/2026-06-25-studio-dump-panel-sweep.md @@ -0,0 +1,45 @@ +# UI Studio — dump-panel render sweep (2026-06-25) + +All 26 windows in `docs/research/2026-06-25-retail-ui-layout-dump.json` were rendered through +the studio's dump LayoutSource (`AcDream.App ui-studio --dump --screenshot `) and +read back as PNGs. Goal: verify the generic dump source renders every retail window, identify +real render bugs vs. expected gaps. + +## Verdict + +The generic dump source renders **all 26 panels with no crash**. Render fidelity tracks how +much of a panel is **static chrome** (present in the dump, so it draws) vs **runtime content** +(slots, stats, appraise text — NOT in the dump, so it can't draw). This is the dump's nature, +not a studio bug. + +## Per-panel status (read from `studio-shots/`) + +| Status | Panels | +|--------|--------| +| **Full / great** (frame + static content) | `vitals` (3 bars + heart/glyphs), `side_by_side_vitals`, `toolbar` (all spell/combat icons + backpack), `map`, `main_panel`, `radar` (disc), `character` (frame+tabs+scrollbar), `combat`, `powerbar`, `negative_effects`, `positive_effects`, `options`, `quests`, `social`, `spellbook`, `main_chat`, `floating_chat_1..4`, `environment_panel` | +| **Partial** (chrome only; runtime content absent) | `inventory` — stone backdrop + top frame render, but the nested sub-window chrome (gm3DItemsUI / gmBackpackUI / paperdoll) is sparse and the slots are runtime-filled. **The one panel with a possible real gap — investigate the nested-layout / sub-window node handling.** | +| **Blank** (runtime-only window, no static sprites in dump) | `examine` (appraise window — populated only on examine), and likely the small `indicators` / `smartbox` / `vitae` | + +## Tooling shipped this sweep + +- `--screenshot ` headless mode (`f778b10`): render the loaded panel (dump or dat) to a + PNG off-screen via `PanelFbo` + `glReadPixels` + ImageSharp, then exit. Hidden window + (`IsVisible=false`). The autonomous self-verification primitive. +- Contact-sheet montage via PowerShell `System.Drawing` (one image, 26 thumbs) — the cheap + per-sweep overview (`studio-shots/_contact.png`, gitignored). + +## Rect basis (confirmed in `DumpLayout`) + +Dump `rect` fields are ABSOLUTE retail screen coords; `DumpLayout` converts to parent-relative +(`child.Left = child.Rect.X - parent.Rect.X`) and places the root at (0,0). Verified correct by +the toolbar (icons land precisely) + vitals. + +## Next (loop) + +1. **Inventory nested chrome** — determine whether the sub-window content is missing because + (a) those nodes are `Group`s with no static sprite (expected), or (b) `DumpLayout` isn't + expanding a `base_layout_id` sub-layout reference (a fixable bug). Dump the inventory panel's + node `widget_kind`/`rect`/`image_id` list and compare to what rendered. +2. Spot-confirm the remaining blanks (`indicators`/`smartbox`/`vitae`) are runtime-only. +3. The dump source is functionally complete as a static previewer; richer (live-data) previews + are the dat-import + fixture path (the parked Task 4 bags/equip), not the dump path. From c03a241884772f4ded6af5ae82f7f04264bc4eea Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 25 Jun 2026 17:58:50 +0200 Subject: [PATCH 25/51] =?UTF-8?q?feat(studio):=20UX=20pass=20=E2=80=94=20s?= =?UTF-8?q?election=20highlight,=20in-studio=20panel=20picker,=20fixed=20l?= =?UTF-8?q?ayout?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fix 1 (Selection highlight): StudioInspector.DrawCanvas draws a bright-green 2px outline over Selected using the window draw list. ScreenPosition maps directly to FBO pixel space; rectMin offsets into screen space. Fix 2 (In-studio panel picker): DrawToolbar (BeginCombo over ListSlugs output). StudioWindow resolves _dumpFile once in OnLoad, tracks _currentSlug, and calls LoadDumpPanel on combo change. LoadDumpPanel removes old root via RemoveChild, loads new slug, resets Selected. No relaunch needed. Fix 3 (Fixed layout): All four panes use SetNextWindowPos + SetNextWindowSize with ImGuiCond.FirstUseEver. Toolbar (0,0 x windowW x 40), tree (0,40 x 280), canvas (280,40 x centre), props (right-340,40 x 340). User can drag from these. Build + dotnet test green (609 passed, 0 failed). Co-Authored-By: Claude Opus 4.8 (1M context) --- src/AcDream.App/Studio/StudioInspector.cs | 88 ++++++++++++++++++++-- src/AcDream.App/Studio/StudioWindow.cs | 92 ++++++++++++++++++++--- 2 files changed, 163 insertions(+), 17 deletions(-) diff --git a/src/AcDream.App/Studio/StudioInspector.cs b/src/AcDream.App/Studio/StudioInspector.cs index 43cc03b0..c8a85b9a 100644 --- a/src/AcDream.App/Studio/StudioInspector.cs +++ b/src/AcDream.App/Studio/StudioInspector.cs @@ -5,10 +5,12 @@ using ImGuiNET; namespace AcDream.App.Studio; /// -/// Three-pane ImGui IDE for the acdream UI Studio: +/// Four-pane ImGui IDE for the acdream UI Studio: /// +/// Toolbar — panel picker (slug combo) across the top. /// Canvas — shows the panel FBO texture; click-to-inspect returns the -/// panel-local pixel coordinate of the click. +/// panel-local pixel coordinate of the click; draws a green outline over +/// . /// Tree — recursive ImGui tree of the element hierarchy; clicking a node /// sets . /// Properties — shows the element's geometry, @@ -27,12 +29,55 @@ namespace AcDream.App.Studio; /// the panel renders right-side-up in the canvas. Because V is flipped, image-local /// pixel y = 0 is the TOP of the panel, matching the UiRoot's top-left origin — so /// click y maps directly without further inversion. +/// +/// Layout: / / +/// / each call +/// SetNextWindowPos + SetNextWindowSize with +/// ImGuiCond.FirstUseEver so the panes start in a docked-style arrangement +/// that the user can freely drag from. /// public sealed class StudioInspector { /// Currently selected element (set by tree-click or canvas-click). public UiElement? Selected { get; set; } + // ── Toolbar ─────────────────────────────────────────────────────────────────── + + /// + /// Draw the "Studio" toolbar window (top strip) containing a slug combo-box. + /// Returns the newly-selected slug when the user picks a different panel, or + /// null when the selection is unchanged. + /// + /// All available panel slugs (from UiDumpModel.ListSlugs). + /// The slug of the panel currently loaded. + /// Studio window width (pixels). + public string? DrawToolbar(IReadOnlyList slugs, string? current, int windowW) + { + ImGui.SetNextWindowPos(new Vector2(0f, 0f), ImGuiCond.FirstUseEver); + ImGui.SetNextWindowSize(new Vector2(windowW, 40f), ImGuiCond.FirstUseEver); + ImGui.Begin("Studio", + ImGuiWindowFlags.NoScrollbar | ImGuiWindowFlags.NoScrollWithMouse); + + ImGui.SetNextItemWidth(300f); + string? result = null; + string preview = current ?? "(none)"; + if (ImGui.BeginCombo("Panel", preview)) + { + foreach (var slug in slugs) + { + bool selected = string.Equals(slug, current, StringComparison.OrdinalIgnoreCase); + if (ImGui.Selectable(slug, selected) && !selected) + result = slug; + if (selected) + ImGui.SetItemDefaultFocus(); + } + ImGui.EndCombo(); + } + + ImGui.End(); + return result; + } + // ── Canvas ──────────────────────────────────────────────────────────────────── /// @@ -42,9 +87,18 @@ public sealed class StudioInspector /// /// The texture is drawn with uv0=(0,1) / uv1=(1,0) to flip V, correcting /// the GL bottom-left FBO origin to the ImGui top-left convention. + /// + /// If is non-null and has non-zero size, a bright-green + /// 2-pixel outline is drawn over the element's screen-space rect using the window + /// draw list. gives the absolute top-left in + /// root/panel space, which maps 1:1 to FBO pixels (the image is drawn 1:1 and both + /// the element tree and the FBO share the same top-left origin). /// - public (int x, int y)? DrawCanvas(nint panelTex, int width, int height) + public (int x, int y)? DrawCanvas(nint panelTex, int width, int height, + int windowX, int windowW, int windowY, int windowH) { + ImGui.SetNextWindowPos(new Vector2(windowX, windowY), ImGuiCond.FirstUseEver); + ImGui.SetNextWindowSize(new Vector2(windowW, windowH), ImGuiCond.FirstUseEver); ImGui.Begin("Canvas"); var imageSize = new Vector2(width, height); @@ -55,13 +109,29 @@ public sealed class StudioInspector var uv1 = new Vector2(1f, 0f); ImGui.Image(panelTex, imageSize, uv0, uv1); + // ── Selection highlight ─────────────────────────────────────────────── + // After ImGui.Image the item rect gives us the screen-space top-left of + // the drawn texture. ScreenPosition is in root/panel space (top-left origin, + // same coordinate system the FBO was drawn in), so offsetting by rectMin + // converts directly to screen space for the draw list. + var rectMin = ImGui.GetItemRectMin(); + var el = Selected; + if (el is not null && el.Width > 0f && el.Height > 0f) + { + var sp = el.ScreenPosition; + var p0 = new Vector2(rectMin.X + sp.X, rectMin.Y + sp.Y); + var p1 = new Vector2(p0.X + el.Width, p0.Y + el.Height); + var dl = ImGui.GetWindowDrawList(); + dl.AddRect(p0, p1, + ImGui.GetColorU32(new Vector4(0.2f, 1f, 0.4f, 1f)), + 0f, ImDrawFlags.None, 2f); + } + (int x, int y)? result = null; // Detect a left-click on the image. if (ImGui.IsItemHovered() && ImGui.IsMouseClicked(ImGuiMouseButton.Left)) { - // Image item rect: top-left of the drawn image in screen (display) coords. - var rectMin = ImGui.GetItemRectMin(); var mousePos = ImGui.GetMousePos(); // Panel-local pixel = mouse offset from image top-left. @@ -81,8 +151,10 @@ public sealed class StudioInspector // ── Tree ────────────────────────────────────────────────────────────────────── /// Draw the "Tree" ImGui window. Clicking a node sets . - public void DrawTree(UiElement root) + public void DrawTree(UiElement root, int windowX, int windowY, int windowW, int windowH) { + ImGui.SetNextWindowPos(new Vector2(windowX, windowY), ImGuiCond.FirstUseEver); + ImGui.SetNextWindowSize(new Vector2(windowW, windowH), ImGuiCond.FirstUseEver); ImGui.Begin("Tree"); DrawTreeNode(root); ImGui.End(); @@ -120,8 +192,10 @@ public sealed class StudioInspector // ── Properties ─────────────────────────────────────────────────────────────── /// Draw the "Properties" ImGui window for . - public void DrawProperties() + public void DrawProperties(int windowX, int windowY, int windowW, int windowH) { + ImGui.SetNextWindowPos(new Vector2(windowX, windowY), ImGuiCond.FirstUseEver); + ImGui.SetNextWindowSize(new Vector2(windowW, windowH), ImGuiCond.FirstUseEver); ImGui.Begin("Properties"); var el = Selected; diff --git a/src/AcDream.App/Studio/StudioWindow.cs b/src/AcDream.App/Studio/StudioWindow.cs index 64ab906f..2565fc13 100644 --- a/src/AcDream.App/Studio/StudioWindow.cs +++ b/src/AcDream.App/Studio/StudioWindow.cs @@ -49,6 +49,11 @@ public sealed class StudioWindow : IDisposable private StudioInspector? _inspector; private UiElement? _panelRoot; // top-level element added to UiRoot (for hit-test + tree) + // UX-pass additions: panel picker + current-slug tracking. + private string? _currentSlug; // slug of the panel currently displayed (null = non-dump mode) + private string? _dumpFile; // resolved dump file path (once, in OnLoad) + private IReadOnlyList _dumpSlugs = Array.Empty(); // all slugs from the dump + // Task 4: sample data table — built once in OnLoad and kept alive for the window's lifetime // so the controller subscriptions (ObjectAdded/ObjectMoved etc.) fire correctly. private AcDream.Core.Items.ClientObjectTable? _objects; @@ -123,11 +128,17 @@ public sealed class StudioWindow : IDisposable // Task 4b: --dump uses DumpLayout (static retail mockup, no controllers). // All other modes use LayoutSource + FixtureProvider (production path). _source = new LayoutSource(_dats, _stack.ResolveChrome, _stack.VitalsDatFont); + + // Resolve the dump file once (used by OnLoad + by LoadDumpPanel at runtime). + _dumpFile = _opts.ResolveDumpFile(); + if (_dumpFile is not null) + _dumpSlugs = UiDumpModel.ListSlugs(_dumpFile) + .OrderBy(s => s, StringComparer.OrdinalIgnoreCase).ToList(); + UiElement? root; if (_opts.DumpSlug is not null) { - var dumpFile = _opts.ResolveDumpFile(); - if (dumpFile is null) + if (_dumpFile is null) { Console.Error.WriteLine("[studio] --dump: retail UI dump file not found. " + "Expected docs/research/2026-06-25-retail-ui-layout-dump.json in the source tree, " + @@ -136,9 +147,11 @@ public sealed class StudioWindow : IDisposable } else { - root = DumpLayout.Load(dumpFile, _opts.DumpSlug, _stack.ResolveChrome, out var dumpErr); + root = DumpLayout.Load(_dumpFile, _opts.DumpSlug, _stack.ResolveChrome, out var dumpErr); if (root is null) Console.Error.WriteLine($"[studio] dump load failed: {dumpErr}"); + else + _currentSlug = _opts.DumpSlug; } } else @@ -265,12 +278,33 @@ public sealed class StudioWindow : IDisposable // 4. Begin the ImGui frame. _imgui.BeginFrame((float)dt); - // 5. Canvas pane — show the FBO texture; detect clicks. + // ── Layout constants (fixed pane arrangement, FirstUseEver) ────────────── + // Toolbar: full width, 40px tall at y=0. + // Tree: 280px wide on the left, below toolbar. + // Canvas: centre strip between tree and properties. + // Props: 340px wide on the right, below toolbar. + const int kToolbarH = 40; + const int kTreeW = 280; + const int kPropsW = 340; + int canvasX = kTreeW; + int canvasW = Math.Max(1, iw - kTreeW - kPropsW); + int propsX = iw - kPropsW; + int paneY = kToolbarH; + int paneH = Math.Max(1, ih - kToolbarH); + + // 5. Toolbar pane — slug picker. + string? pickedSlug = _inspector.DrawToolbar(_dumpSlugs, _currentSlug, iw); + if (pickedSlug is not null) + LoadDumpPanel(pickedSlug); + + // 6. Canvas pane — show the FBO texture; detect clicks. (int x, int y)? click = null; if (panelTex != 0) - click = _inspector.DrawCanvas((nint)panelTex, iw, ih); + click = _inspector.DrawCanvas( + (nint)panelTex, iw, ih, + canvasX, canvasW, paneY, paneH); - // 6. If the user clicked inside the canvas, hit-test the whole UI tree (UiRoot.Pick honors + // 7. If the user clicked inside the canvas, hit-test the whole UI tree (UiRoot.Pick honors // Z-order + modal exclusivity) and select the topmost element. The canvas click coord is // in the same root-space the FBO was drawn in, so it maps 1:1. if (click is { } c) @@ -280,17 +314,55 @@ public sealed class StudioWindow : IDisposable _inspector.Selected = hit; } - // 7. Element tree pane. + // 8. Element tree pane. if (_panelRoot is not null) - _inspector.DrawTree(_panelRoot); + _inspector.DrawTree(_panelRoot, 0, paneY, kTreeW, paneH); - // 8. Properties pane. - _inspector.DrawProperties(); + // 9. Properties pane. + _inspector.DrawProperties(propsX, paneY, kPropsW, paneH); // 9. Finalise ImGui and flush draw data to the window. _imgui.Render(); } + /// + /// Load a different dump panel at runtime (no relaunch required). + /// Removes the current from the UI tree, + /// loads the named slug from the dump, and installs the new root. + /// Resets to null. + /// No-op when the dump file is not available or the slug fails to load. + /// + public void LoadDumpPanel(string slug) + { + if (_stack is null || _inspector is null) return; + if (_dumpFile is null) + { + Console.Error.WriteLine("[studio] LoadDumpPanel: dump file not available."); + return; + } + + // Remove the existing panel root from the tree. + if (_panelRoot is not null) + { + _stack.UiHost.Root.RemoveChild(_panelRoot); + _panelRoot = null; + } + + // Load the new panel. + var newRoot = DumpLayout.Load(_dumpFile, slug, _stack.ResolveChrome, out var err); + if (newRoot is null) + { + Console.Error.WriteLine($"[studio] LoadDumpPanel('{slug}') failed: {err}"); + _currentSlug = null; + return; + } + + _stack.UiHost.Root.AddChild(newRoot); + _panelRoot = newRoot; + _currentSlug = slug; + _inspector.Selected = null; + } + private void OnClosing() { _imgui?.Dispose(); From 4988dd4dfe831686aa5476b2f93dec59aed69d4a Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 25 Jun 2026 18:37:30 +0200 Subject: [PATCH 26/51] =?UTF-8?q?feat(studio):=20Character=20panel=20pilot?= =?UTF-8?q?=20=E2=80=94=20gmCharacterInfoUI=20report=20text=20+=20menu-bar?= =?UTF-8?q?=20picker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task A — CharacterController (LayoutDesc 0x2100002E) - CharacterSheet.cs: data record for all fields used by the report sections, with retail property-id citations per field (DateOfBirth 0x62, TotalPlayTime 0x7d, NumDeaths 0x2b, SkillCredits 0xb5/0xc0, AugmentationStat 0x162, EncumbranceVal 0x5/0xe6). - CharacterController.cs: static Bind(layout, data, datFont) wires element 0x1000011d (m_pMainText, confirmed gmCharacterInfoUI::PostInit 0x004b86f0) as a UiText; LinesProvider builds the report. Report section order mirrors gmCharacterInfoUI::Update (0x004ba790): 1. UpdatePlayerBirthAgeDeaths 0x004b8cb0 — birth/age/deaths 2. UpdateEnduranceInfo 0x004b8eb0 — vitals (H/S/M cur/max) 3. UpdateInnateAttributeInfo 0x004b87e0 — 6 attrs InqAttribute 1,2,4,3,5,6 = Strength, Endurance, Quickness, Coordination, Focus, Self 4. UpdateFakeSkills 0x004b8930 — skill credits (InqInt 0xb5 / 0xc0) 5. UpdateAugmentations 0x004b9000 — aug name (InqInt 0x162 switch 1..0xb) 6. UpdateLoad 0x004b8a20 — burden cur/max/pct Element 0x1000011d imports as UiText (Type 12); multi-line text set via LinesProvider — same pattern as ChatWindowController transcript. - SampleData.SampleCharacter(): plausible retail-scale CharacterSheet fixture. - FixtureProvider.Populate case 0x2100002Eu: CharacterController.Bind with SampleData.SampleCharacter + VitalsDatFont. - CharacterControllerTests.cs: 10 pure data-wiring + content tests (no GL/dats). Task B — Studio panel picker → main menu bar - StudioWindow.OnRender: replaced the floating "Studio" toolbar window (kToolbarH 40px) with ImGui.BeginMainMenuBar / EndMainMenuBar (kMenuBarH 22px). Panel picker combo now lives in the always-on-top menu bar and cannot be occluded by Tree/Canvas/Props panes. paneY reduced from 40→22, freeing ~18px for the canvas. Build: dotnet build green (0 CS errors; DLL-lock warnings are AcDream.App being live — not compile errors). Full suite: 619 passed, 2 skipped. Co-Authored-By: Claude Sonnet 4.6 --- src/AcDream.App/Studio/FixtureProvider.cs | 7 + src/AcDream.App/Studio/SampleData.cs | 39 ++++ src/AcDream.App/Studio/StudioWindow.cs | 38 +++- .../UI/Layout/CharacterController.cs | 169 ++++++++++++++++ src/AcDream.App/UI/Layout/CharacterSheet.cs | 86 ++++++++ .../UI/Layout/CharacterControllerTests.cs | 184 ++++++++++++++++++ 6 files changed, 515 insertions(+), 8 deletions(-) create mode 100644 src/AcDream.App/UI/Layout/CharacterController.cs create mode 100644 src/AcDream.App/UI/Layout/CharacterSheet.cs create mode 100644 tests/AcDream.App.Tests/UI/Layout/CharacterControllerTests.cs diff --git a/src/AcDream.App/Studio/FixtureProvider.cs b/src/AcDream.App/Studio/FixtureProvider.cs index 4a5f319a..7fdb4c37 100644 --- a/src/AcDream.App/Studio/FixtureProvider.cs +++ b/src/AcDream.App/Studio/FixtureProvider.cs @@ -114,6 +114,13 @@ public static class FixtureProvider break; } + case 0x2100002Eu: // gmCharacterInfoUI — character report (LayoutDesc 0x2100002E) + CharacterController.Bind( + layout, + data: SampleData.SampleCharacter, + datFont: stack.VitalsDatFont); + break; + default: // Unknown layout — no-op; the panel renders structurally. break; diff --git a/src/AcDream.App/Studio/SampleData.cs b/src/AcDream.App/Studio/SampleData.cs index 2704c046..7678b603 100644 --- a/src/AcDream.App/Studio/SampleData.cs +++ b/src/AcDream.App/Studio/SampleData.cs @@ -1,3 +1,4 @@ +using AcDream.App.UI.Layout; using AcDream.Core.Items; namespace AcDream.App.Studio; @@ -114,6 +115,44 @@ public static class SampleData public const float StaminaPct = 0.6f; public const float ManaPct = 0.9f; + // ── Sample character sheet (used by CharacterController in the Studio) ─── + + /// + /// Returns a representative for the studio's + /// synthetic character. Values are plausible retail-scale numbers so the + /// report renders with well-proportioned text in all sections. + /// + public static CharacterSheet SampleCharacter() => new() + { + Name = "Studio Player", + Level = 126, + Race = "Aluvian", + Heritage = "Aluvian Heritage", + Title = "the Adventurer", + BirthDate = "January 5, 2001", + PlayTime = "2 years, 114 days, 4 hours", + Deaths = 42, + + HealthCurrent = 80, HealthMax = 100, + StaminaCurrent = 60, StaminaMax = 100, + ManaCurrent = 90, ManaMax = 100, + + Strength = 100, + Endurance = 100, + Quickness = 100, + Coordination = 100, + Focus = 100, + Self = 100, + + UnspentSkillCredits = 12, + SpecializedSkillCredits = 4, + + AugmentationName = "Swords", + + BurdenCurrent = 1200, + BurdenMax = 4500, + }; + // ── Helpers ───────────────────────────────────────────────────────────── private static void AddItem( diff --git a/src/AcDream.App/Studio/StudioWindow.cs b/src/AcDream.App/Studio/StudioWindow.cs index 2565fc13..28ac55ef 100644 --- a/src/AcDream.App/Studio/StudioWindow.cs +++ b/src/AcDream.App/Studio/StudioWindow.cs @@ -279,21 +279,43 @@ public sealed class StudioWindow : IDisposable _imgui.BeginFrame((float)dt); // ── Layout constants (fixed pane arrangement, FirstUseEver) ────────────── - // Toolbar: full width, 40px tall at y=0. - // Tree: 280px wide on the left, below toolbar. + // MenuBar: always-on-top main menu bar (~22px) — panel picker lives here so it + // is never covered by the floating panes (replaces the old 40px toolbar). + // Tree: 280px wide on the left, below menu bar. // Canvas: centre strip between tree and properties. - // Props: 340px wide on the right, below toolbar. - const int kToolbarH = 40; + // Props: 340px wide on the right, below menu bar. + const int kMenuBarH = 22; // ImGui default main menu bar height const int kTreeW = 280; const int kPropsW = 340; int canvasX = kTreeW; int canvasW = Math.Max(1, iw - kTreeW - kPropsW); int propsX = iw - kPropsW; - int paneY = kToolbarH; - int paneH = Math.Max(1, ih - kToolbarH); + int paneY = kMenuBarH; + int paneH = Math.Max(1, ih - kMenuBarH); - // 5. Toolbar pane — slug picker. - string? pickedSlug = _inspector.DrawToolbar(_dumpSlugs, _currentSlug, iw); + // 5. Main menu bar — panel picker combo pinned to the window top. + // BeginMainMenuBar returns true when the bar is visible (always is); the combo + // inside it is always-on-top and is never occluded by Tree/Canvas/Props panes. + string? pickedSlug = null; + if (ImGuiNET.ImGui.BeginMainMenuBar()) + { + ImGuiNET.ImGui.SetNextItemWidth(300f); + string preview = _currentSlug ?? "(none)"; + if (ImGuiNET.ImGui.BeginCombo("Panel", preview)) + { + foreach (var slug in _dumpSlugs) + { + bool selected = string.Equals(slug, _currentSlug, + System.StringComparison.OrdinalIgnoreCase); + if (ImGuiNET.ImGui.Selectable(slug, selected) && !selected) + pickedSlug = slug; + if (selected) + ImGuiNET.ImGui.SetItemDefaultFocus(); + } + ImGuiNET.ImGui.EndCombo(); + } + ImGuiNET.ImGui.EndMainMenuBar(); + } if (pickedSlug is not null) LoadDumpPanel(pickedSlug); diff --git a/src/AcDream.App/UI/Layout/CharacterController.cs b/src/AcDream.App/UI/Layout/CharacterController.cs new file mode 100644 index 00000000..6067525d --- /dev/null +++ b/src/AcDream.App/UI/Layout/CharacterController.cs @@ -0,0 +1,169 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using AcDream.App.UI; + +namespace AcDream.App.UI.Layout; + +/// +/// Per-window controller for the Character window (LayoutDesc 0x2100002E, gmCharacterInfoUI). +/// +/// Retail fills a single scrollable UIElement_Text element (id 0x1000011d, +/// m_pMainText) by calling a sequence of Update* methods that each +/// AppendStringInfo into the same element. This controller replicates that report +/// structure using acdream's . +/// +/// Section order (ported from gmCharacterInfoUI::Update 0x004ba790): +/// +/// Birth / age / deaths (UpdatePlayerBirthAgeDeaths 0x004b8cb0) +/// Vitals / endurance (UpdateEnduranceInfo 0x004b8eb0) +/// Innate attributes (UpdateInnateAttributeInfo 0x004b87e0): +/// InqAttribute 1,2,4,3,5,6 = Strength, Endurance, Quickness, Coordination, Focus, Self +/// Skills summary (UpdateFakeSkills 0x004b8930) +/// Augmentations (UpdateAugmentations 0x004b9000) +/// Burden / load (UpdateLoad 0x004b8a20) +/// +/// Each section is separated by a blank line (retail: AppendStringInfo(m_pMainText, &var_120) +/// with an empty StringInfo between sections). +/// +/// StringInfo resolution is NOT ported — the full dat string-table lookup is a +/// later refinement. For this pilot, labels are composed directly from the well-known +/// AC attribute / stat names confirmed in the decomp string literals and data identifiers. +/// +public static class CharacterController +{ + /// Dat element id for the main report text (m_pMainText). Confirmed in + /// gmCharacterInfoUI::PostInit 0x004b86f0: GetChildRecursive(this, 0x1000011d). + public const uint MainTextId = 0x1000011du; + + /// White body text — matches retail's default UIElement_Text foreground. + private static readonly Vector4 BodyColor = new(1f, 1f, 1f, 1f); + + /// Yellow section header — retail uses a different StringInfo color per section header. + private static readonly Vector4 HeaderColor = new(1f, 0.85f, 0.35f, 1f); + + /// + /// Bind the character report text element found in to + /// . The report is regenerated each frame via + /// so the Studio or a live session can push a fresh + /// without re-binding. + /// + /// The element must resolve as a (Type 12 in the dat). + /// If 0x1000011d is absent from the layout the bind is a no-op — partial layouts + /// (e.g. test fakes) don't cause errors. + /// + /// Imported 0x2100002E layout tree. + /// Provider returning the current . + /// Retail dat font forwarded from the render stack. May be null + /// (falls back to the BitmapFont debug path). + public static void Bind( + ImportedLayout layout, + Func data, + UiDatFont? datFont = null) + { + if (layout.FindElement(MainTextId) is not UiText text) + return; + + text.DatFont = datFont; + text.ClickThrough = false; // retail allows text selection in the report + text.AcceptsFocus = true; + text.IsEditControl = true; + text.CapturesPointerDrag = true; + text.LinesProvider = () => BuildReport(data()); + } + + // ── Report builder ──────────────────────────────────────────────────────── + + /// + /// Build the complete character report as a line list. + /// Order mirrors gmCharacterInfoUI::Update (0x004ba790). + /// + private static IReadOnlyList BuildReport(CharacterSheet s) + { + var lines = new List(); + + // ── Section 1: Birth / age / deaths (UpdatePlayerBirthAgeDeaths 0x004b8cb0) ── + // Retail InqInt(0x62) = DateOfBirth (unix timestamp); InqInt(0x7d) = TotalPlayTime; + // InqInt(0x2b) = NumDeaths. + AppendHeader(lines, s.Name); + Append(lines, $"Level {s.Level}"); + if (s.Race is not null) + Append(lines, s.Race); + if (s.Heritage is not null) + Append(lines, s.Heritage); + if (s.Title is not null) + Append(lines, s.Title); + AppendBlank(lines); + + if (s.BirthDate is not null) + Append(lines, $"Birth: {s.BirthDate}"); + if (s.PlayTime is not null) + Append(lines, $"Age: {s.PlayTime}"); + Append(lines, $"Deaths: {s.Deaths}"); + AppendBlank(lines); + + // ── Section 2: Vitals / endurance (UpdateEnduranceInfo 0x004b8eb0) ── + // Retail InqAttribute(1) = Strength base, InqAttribute(2) = Endurance base. + // Computes max-stamina tier and max-health tier from (Str+End) and (End+2*End) sums. + AppendHeader(lines, "Vitals"); + Append(lines, $"Health: {s.HealthCurrent} / {s.HealthMax}"); + Append(lines, $"Stamina: {s.StaminaCurrent} / {s.StaminaMax}"); + Append(lines, $"Mana: {s.ManaCurrent} / {s.ManaMax}"); + AppendBlank(lines); + + // ── Section 3: Innate attributes (UpdateInnateAttributeInfo 0x004b87e0) ── + // InqAttribute order: 1,2,4,3,5,6 = Strength, Endurance, Quickness, Coordination, + // Focus, Self (confirmed from the AddVariable_Int sequence in the decomp). + AppendHeader(lines, "Attributes"); + Append(lines, $"Strength: {s.Strength}"); + Append(lines, $"Endurance: {s.Endurance}"); + Append(lines, $"Quickness: {s.Quickness}"); + Append(lines, $"Coordination: {s.Coordination}"); + Append(lines, $"Focus: {s.Focus}"); + Append(lines, $"Self: {s.Self}"); + AppendBlank(lines); + + // ── Section 4: Skills summary (UpdateFakeSkills 0x004b8930) ── + // Retail InqInt(0xb5) = SkillCredits remaining; InqInt(0xc0) = AvailableSkillCredits. + AppendHeader(lines, "Skills"); + Append(lines, $"Unspent skill credits: {s.UnspentSkillCredits}"); + if (s.SpecializedSkillCredits > 0) + Append(lines, $"Specialized credits: {s.SpecializedSkillCredits}"); + AppendBlank(lines); + + // ── Section 5: Augmentations (UpdateAugmentations 0x004b9000) ── + // Retail InqInt(0x162) = AugmentationStat; string-switch on value 1..0xb + Unknown. + AppendHeader(lines, "Augmentations"); + if (s.AugmentationName is not null) + Append(lines, s.AugmentationName); + else + Append(lines, "None"); + AppendBlank(lines); + + // ── Section 6: Burden / load (UpdateLoad 0x004b8a20) ── + // Retail InqLoad → EncumbranceCapacity(Strength, AugEncumbrance). + // When load >= 1.0 (overloaded): shows "X burden over capacity; Y% speed penalty". + // When aug > 0: shows "N augmentations (X.X% bonus)". + AppendHeader(lines, "Encumbrance"); + Append(lines, $"Burden: {s.BurdenCurrent}"); + Append(lines, $"Capacity: {s.BurdenMax}"); + if (s.BurdenMax > 0) + { + int pct = (int)Math.Round(100.0 * s.BurdenCurrent / s.BurdenMax); + Append(lines, $"Load: {pct}%"); + } + + return lines; + } + + // ── Line helpers ────────────────────────────────────────────────────────── + + private static void AppendHeader(List lines, string text) + => lines.Add(new UiText.Line(text, HeaderColor)); + + private static void Append(List lines, string text) + => lines.Add(new UiText.Line(text, BodyColor)); + + private static void AppendBlank(List lines) + => lines.Add(new UiText.Line(string.Empty, BodyColor)); +} diff --git a/src/AcDream.App/UI/Layout/CharacterSheet.cs b/src/AcDream.App/UI/Layout/CharacterSheet.cs new file mode 100644 index 00000000..f251f325 --- /dev/null +++ b/src/AcDream.App/UI/Layout/CharacterSheet.cs @@ -0,0 +1,86 @@ +namespace AcDream.App.UI.Layout; + +/// +/// Snapshot of all character data the Character window report uses. +/// Passed to as a provider delegate +/// so the window can be rebound to live data in GameWindow or a static +/// fixture in the UI Studio. +/// +/// Field names and retail property ids confirmed from +/// gmCharacterInfoUI::UpdatePlayerBirthAgeDeaths (0x004b8cb0), +/// UpdateEnduranceInfo (0x004b8eb0), +/// UpdateInnateAttributeInfo (0x004b87e0), +/// UpdateFakeSkills (0x004b8930), +/// UpdateAugmentations (0x004b9000), and +/// UpdateLoad (0x004b8a20). +/// +public sealed class CharacterSheet +{ + // ── Identity ────────────────────────────────────────────────────────────── + + /// Character name (first line of the report). + public string Name { get; init; } = string.Empty; + + /// Character level. + public int Level { get; init; } + + /// Race string, e.g. "Aluvian". Null = omit. + public string? Race { get; init; } + + /// Heritage string, e.g. "Aluvian Heritage". Null = omit. + public string? Heritage { get; init; } + + /// Title string, e.g. "the Adventurer". Null = omit. + public string? Title { get; init; } + + // ── Birth / age / deaths (UpdatePlayerBirthAgeDeaths 0x004b8cb0) ───────── + + /// Formatted birth date string (retail InqInt(0x62) → strftime). + /// Null = omit the birth line. + public string? BirthDate { get; init; } + + /// Formatted play-time duration (retail InqInt(0x7d) → QueryDuration). + /// Null = omit the age line. + public string? PlayTime { get; init; } + + /// Total deaths (retail InqInt(0x2b) = NumDeaths). + public int Deaths { get; init; } + + // ── Vitals (UpdateEnduranceInfo 0x004b8eb0) ───────────────────────────── + + public int HealthCurrent { get; init; } + public int HealthMax { get; init; } + public int StaminaCurrent { get; init; } + public int StaminaMax { get; init; } + public int ManaCurrent { get; init; } + public int ManaMax { get; init; } + + // ── Innate attributes (UpdateInnateAttributeInfo 0x004b87e0) ──────────── + // InqAttribute order: 1,2,4,3,5,6 = Strength, Endurance, Quickness, Coordination, Focus, Self. + + public int Strength { get; init; } + public int Endurance { get; init; } + public int Quickness { get; init; } + public int Coordination { get; init; } + public int Focus { get; init; } + public int Self { get; init; } + + // ── Skills (UpdateFakeSkills 0x004b8930) ──────────────────────────────── + // Retail InqInt(0xb5) = SkillCredits; InqInt(0xc0) = AvailableSkillCredits. + + public int UnspentSkillCredits { get; init; } + public int SpecializedSkillCredits { get; init; } + + // ── Augmentations (UpdateAugmentations 0x004b9000) ───────────────────── + // Retail InqInt(0x162) = AugmentationStat; string-switch 1..0xb. + + /// Augmentation name from the switch in UpdateAugmentations (0x004b9000), + /// e.g. "Swords", "Two Handed Weapons". Null = "None". + public string? AugmentationName { get; init; } + + // ── Burden / load (UpdateLoad 0x004b8a20) ─────────────────────────────── + // Retail InqLoad + EncumbranceCapacity(Strength, AugEncumbrance). + + public int BurdenCurrent { get; init; } + public int BurdenMax { get; init; } +} diff --git a/tests/AcDream.App.Tests/UI/Layout/CharacterControllerTests.cs b/tests/AcDream.App.Tests/UI/Layout/CharacterControllerTests.cs new file mode 100644 index 00000000..ed61904a --- /dev/null +++ b/tests/AcDream.App.Tests/UI/Layout/CharacterControllerTests.cs @@ -0,0 +1,184 @@ +using AcDream.App.Studio; +using AcDream.App.UI; +using AcDream.App.UI.Layout; + +namespace AcDream.App.Tests.UI.Layout; + +/// +/// Unit tests for and . +/// No dats, no GL — pure data-wiring + report-content tests. +/// +public class CharacterControllerTests +{ + // ── Test 1: Bind finds the main text element and sets LinesProvider ─────── + + [Fact] + public void Bind_SetsLinesProviderOnMainText() + { + var text = new UiText(); + var layout = FakeLayout((CharacterController.MainTextId, text)); + + CharacterController.Bind(layout, SampleData.SampleCharacter); + + // LinesProvider must be replaced (default returns empty). + var lines = text.LinesProvider(); + Assert.True(lines.Count > 0, "Expected non-empty report after Bind"); + } + + // ── Test 2: Report contains all six attribute names (decomp order 1,2,4,3,5,6) ─── + + [Fact] + public void Bind_ReportContainsAllSixAttributes() + { + var text = new UiText(); + var layout = FakeLayout((CharacterController.MainTextId, text)); + + CharacterController.Bind(layout, SampleData.SampleCharacter); + + var allText = string.Join("\n", text.LinesProvider().Select(l => l.Text)); + + Assert.Contains("Strength", allText); + Assert.Contains("Endurance", allText); + Assert.Contains("Quickness", allText); + Assert.Contains("Coordination", allText); + Assert.Contains("Focus", allText); + Assert.Contains("Self", allText); + } + + // ── Test 3: Report contains vitals section ──────────────────────────────── + + [Fact] + public void Bind_ReportContainsVitals() + { + var text = new UiText(); + var layout = FakeLayout((CharacterController.MainTextId, text)); + + CharacterController.Bind(layout, SampleData.SampleCharacter); + + var allText = string.Join("\n", text.LinesProvider().Select(l => l.Text)); + + Assert.Contains("Health", allText); + Assert.Contains("Stamina", allText); + Assert.Contains("Mana", allText); + } + + // ── Test 4: Report contains encumbrance / burden section ───────────────── + + [Fact] + public void Bind_ReportContainsBurden() + { + var text = new UiText(); + var layout = FakeLayout((CharacterController.MainTextId, text)); + + CharacterController.Bind(layout, SampleData.SampleCharacter); + + var allText = string.Join("\n", text.LinesProvider().Select(l => l.Text)); + + Assert.Contains("Burden", allText); + Assert.Contains("Capacity", allText); + } + + // ── Test 5: Report contains the sample character's name ────────────────── + + [Fact] + public void Bind_ReportContainsSampleName() + { + var text = new UiText(); + var layout = FakeLayout((CharacterController.MainTextId, text)); + + CharacterController.Bind(layout, SampleData.SampleCharacter); + + var allText = string.Join("\n", text.LinesProvider().Select(l => l.Text)); + + // SampleData.SampleCharacter().Name == "Studio Player" + Assert.Contains("Studio Player", allText); + } + + // ── Test 6: Missing element id is a no-op (no throw) ───────────────────── + + [Fact] + public void Bind_MissingElement_DoesNotThrow() + { + // Layout does not contain MainTextId — Bind must silently skip. + var layout = FakeLayout(); // empty layout + + // Must not throw. + CharacterController.Bind(layout, SampleData.SampleCharacter); + } + + // ── Test 7: Element that is NOT a UiText is silently skipped ───────────── + + [Fact] + public void Bind_WrongElementType_DoesNotThrow() + { + // Place a UiMeter at the MainTextId — Bind must skip (not crash on wrong type). + var meter = new UiMeter(); + var layout = FakeLayout((CharacterController.MainTextId, meter)); + + CharacterController.Bind(layout, SampleData.SampleCharacter); + // No exception; meter is unchanged. + } + + // ── Test 8: SampleCharacter fixture has non-zero attribute values ───────── + + [Fact] + public void SampleCharacter_AttributesAreNonZero() + { + var s = SampleData.SampleCharacter(); + + Assert.True(s.Strength > 0, "Strength must be > 0"); + Assert.True(s.Endurance > 0, "Endurance must be > 0"); + Assert.True(s.Quickness > 0, "Quickness must be > 0"); + Assert.True(s.Coordination > 0, "Coordination must be > 0"); + Assert.True(s.Focus > 0, "Focus must be > 0"); + Assert.True(s.Self > 0, "Self must be > 0"); + } + + // ── Test 9: SampleCharacter fixture has coherent vitals ────────────────── + + [Fact] + public void SampleCharacter_VitalsAreCoherent() + { + var s = SampleData.SampleCharacter(); + + Assert.True(s.HealthCurrent > 0 && s.HealthCurrent <= s.HealthMax, "Health cur must be in [1, max]"); + Assert.True(s.StaminaCurrent > 0 && s.StaminaCurrent <= s.StaminaMax, "Stamina cur must be in [1, max]"); + Assert.True(s.ManaCurrent > 0 && s.ManaCurrent <= s.ManaMax, "Mana cur must be in [1, max]"); + } + + // ── Test 10: Report contains attribute VALUES from the fixture ──────────── + + [Fact] + public void Bind_ReportContainsSampleAttributeValues() + { + var text = new UiText(); + var layout = FakeLayout((CharacterController.MainTextId, text)); + + var sheet = SampleData.SampleCharacter(); + CharacterController.Bind(layout, () => sheet); + + var allText = string.Join("\n", text.LinesProvider().Select(l => l.Text)); + + // All six attribute values should appear as strings in the report. + Assert.Contains(sheet.Strength.ToString(), allText); + Assert.Contains(sheet.Endurance.ToString(), allText); + Assert.Contains(sheet.Quickness.ToString(), allText); + Assert.Contains(sheet.Coordination.ToString(), allText); + Assert.Contains(sheet.Focus.ToString(), allText); + Assert.Contains(sheet.Self.ToString(), allText); + } + + // ── Helpers ─────────────────────────────────────────────────────────────── + + private static ImportedLayout FakeLayout(params (uint id, UiElement e)[] items) + { + var dict = new Dictionary(); + var root = new UiPanel(); + foreach (var (id, e) in items) + { + root.AddChild(e); + dict[id] = e; + } + return new ImportedLayout(root, dict); + } +} From 33693c6412bde039672d12e2c4786262a4977264 Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 25 Jun 2026 19:01:09 +0200 Subject: [PATCH 27/51] =?UTF-8?q?fix(studio):=20Character=20pilot=20?= =?UTF-8?q?=E2=80=94=20CREATE=20m=5FpMainText=20(it's=20a=20runtime=20elem?= =?UTF-8?q?ent,=20not=20static)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The character report element m_pMainText (0x1000011d) is created at RUNTIME by gmCharacterInfoUI — it is NOT in any static LayoutDesc (confirmed: acdream's dat-import of both 0x2100002E and 0x2100006E lacks it; only a runtime UI-tree capture has it). So CharacterController.Bind now CREATES the UiText report element + attaches it to the panel body (Left 12 / Top 44 / fills, ZOrder above chrome) and fills it via LinesProvider — replicating what the retail gm*UI does. Verified: the studio (--layout 0x2100002E) renders the full report — identity, birth/age/deaths, vitals, the 6 attributes, skills, augmentations, encumbrance. Tests rewritten to assert the CREATED element (10 pass); full App suite 619 green. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../UI/Layout/CharacterController.cs | 27 +++-- .../UI/Layout/CharacterControllerTests.cs | 99 ++++++------------- 2 files changed, 51 insertions(+), 75 deletions(-) diff --git a/src/AcDream.App/UI/Layout/CharacterController.cs b/src/AcDream.App/UI/Layout/CharacterController.cs index 6067525d..709c8262 100644 --- a/src/AcDream.App/UI/Layout/CharacterController.cs +++ b/src/AcDream.App/UI/Layout/CharacterController.cs @@ -61,15 +61,28 @@ public static class CharacterController Func data, UiDatFont? datFont = null) { - if (layout.FindElement(MainTextId) is not UiText text) - return; + // Retail's gmCharacterInfoUI CREATES m_pMainText (0x1000011d) at RUNTIME — it is NOT a static + // element in any LayoutDesc (confirmed: acdream's dat-import of 0x2100002E AND 0x2100006E both + // lack it; only a runtime UI-tree capture has it). So replicate that: build the report text + // element ourselves and place it in the panel body, exactly as the gm*UI does at runtime. + var root = layout.Root; + if (root is null) return; - text.DatFont = datFont; - text.ClickThrough = false; // retail allows text selection in the report - text.AcceptsFocus = true; - text.IsEditControl = true; - text.CapturesPointerDrag = true; + var text = new UiText + { + EventId = MainTextId, + Name = "m_pMainText", + Left = 12f, + Top = 44f, // below the window header row + Width = System.Math.Max(40f, root.Width - 24f), + Height = System.Math.Max(40f, root.Height - 56f), + Anchors = AnchorEdges.None, + ZOrder = 1_000_000, // draw above the static chrome + DatFont = datFont, + ClickThrough = false, + }; text.LinesProvider = () => BuildReport(data()); + root.AddChild(text); } // ── Report builder ──────────────────────────────────────────────────────── diff --git a/tests/AcDream.App.Tests/UI/Layout/CharacterControllerTests.cs b/tests/AcDream.App.Tests/UI/Layout/CharacterControllerTests.cs index ed61904a..0f92ca07 100644 --- a/tests/AcDream.App.Tests/UI/Layout/CharacterControllerTests.cs +++ b/tests/AcDream.App.Tests/UI/Layout/CharacterControllerTests.cs @@ -6,23 +6,31 @@ namespace AcDream.App.Tests.UI.Layout; /// /// Unit tests for and . +/// The controller CREATES the m_pMainText report element (0x1000011d) at bind time — retail's +/// gm*UI builds it at runtime; it is not a static dat element — and attaches it to the layout root. /// No dats, no GL — pure data-wiring + report-content tests. /// public class CharacterControllerTests { - // ── Test 1: Bind finds the main text element and sets LinesProvider ─────── + /// Bind on an empty layout, then return the created m_pMainText element. + private static UiText BindAndGetText(System.Func data) + { + var layout = FakeLayout(); + CharacterController.Bind(layout, data); + return layout.Root.Children.OfType() + .First(t => t.EventId == CharacterController.MainTextId); + } + + private static string Report(System.Func data) + => string.Join("\n", BindAndGetText(data).LinesProvider().Select(l => l.Text)); + + // ── Test 1: Bind creates m_pMainText with a non-empty report ────────────── [Fact] - public void Bind_SetsLinesProviderOnMainText() + public void Bind_CreatesMainTextWithReport() { - var text = new UiText(); - var layout = FakeLayout((CharacterController.MainTextId, text)); - - CharacterController.Bind(layout, SampleData.SampleCharacter); - - // LinesProvider must be replaced (default returns empty). - var lines = text.LinesProvider(); - Assert.True(lines.Count > 0, "Expected non-empty report after Bind"); + var text = BindAndGetText(SampleData.SampleCharacter); + Assert.True(text.LinesProvider().Count > 0, "Expected non-empty report after Bind"); } // ── Test 2: Report contains all six attribute names (decomp order 1,2,4,3,5,6) ─── @@ -30,13 +38,7 @@ public class CharacterControllerTests [Fact] public void Bind_ReportContainsAllSixAttributes() { - var text = new UiText(); - var layout = FakeLayout((CharacterController.MainTextId, text)); - - CharacterController.Bind(layout, SampleData.SampleCharacter); - - var allText = string.Join("\n", text.LinesProvider().Select(l => l.Text)); - + var allText = Report(SampleData.SampleCharacter); Assert.Contains("Strength", allText); Assert.Contains("Endurance", allText); Assert.Contains("Quickness", allText); @@ -50,13 +52,7 @@ public class CharacterControllerTests [Fact] public void Bind_ReportContainsVitals() { - var text = new UiText(); - var layout = FakeLayout((CharacterController.MainTextId, text)); - - CharacterController.Bind(layout, SampleData.SampleCharacter); - - var allText = string.Join("\n", text.LinesProvider().Select(l => l.Text)); - + var allText = Report(SampleData.SampleCharacter); Assert.Contains("Health", allText); Assert.Contains("Stamina", allText); Assert.Contains("Mana", allText); @@ -67,13 +63,7 @@ public class CharacterControllerTests [Fact] public void Bind_ReportContainsBurden() { - var text = new UiText(); - var layout = FakeLayout((CharacterController.MainTextId, text)); - - CharacterController.Bind(layout, SampleData.SampleCharacter); - - var allText = string.Join("\n", text.LinesProvider().Select(l => l.Text)); - + var allText = Report(SampleData.SampleCharacter); Assert.Contains("Burden", allText); Assert.Contains("Capacity", allText); } @@ -82,42 +72,24 @@ public class CharacterControllerTests [Fact] public void Bind_ReportContainsSampleName() - { - var text = new UiText(); - var layout = FakeLayout((CharacterController.MainTextId, text)); + => Assert.Contains("Studio Player", Report(SampleData.SampleCharacter)); - CharacterController.Bind(layout, SampleData.SampleCharacter); - - var allText = string.Join("\n", text.LinesProvider().Select(l => l.Text)); - - // SampleData.SampleCharacter().Name == "Studio Player" - Assert.Contains("Studio Player", allText); - } - - // ── Test 6: Missing element id is a no-op (no throw) ───────────────────── + // ── Test 6: Bind on a layout WITHOUT the element creates it (no throw) ──── [Fact] - public void Bind_MissingElement_DoesNotThrow() + public void Bind_OnEmptyLayout_CreatesElement() { - // Layout does not contain MainTextId — Bind must silently skip. - var layout = FakeLayout(); // empty layout - - // Must not throw. + var layout = FakeLayout(); // no MainTextId present CharacterController.Bind(layout, SampleData.SampleCharacter); + Assert.Contains(layout.Root.Children.OfType(), + t => t.EventId == CharacterController.MainTextId); } - // ── Test 7: Element that is NOT a UiText is silently skipped ───────────── + // ── Test 7: The created element carries the m_pMainText id ─────────────── [Fact] - public void Bind_WrongElementType_DoesNotThrow() - { - // Place a UiMeter at the MainTextId — Bind must skip (not crash on wrong type). - var meter = new UiMeter(); - var layout = FakeLayout((CharacterController.MainTextId, meter)); - - CharacterController.Bind(layout, SampleData.SampleCharacter); - // No exception; meter is unchanged. - } + public void Bind_CreatedElementHasMainTextId() + => Assert.Equal(CharacterController.MainTextId, BindAndGetText(SampleData.SampleCharacter).EventId); // ── Test 8: SampleCharacter fixture has non-zero attribute values ───────── @@ -125,7 +97,6 @@ public class CharacterControllerTests public void SampleCharacter_AttributesAreNonZero() { var s = SampleData.SampleCharacter(); - Assert.True(s.Strength > 0, "Strength must be > 0"); Assert.True(s.Endurance > 0, "Endurance must be > 0"); Assert.True(s.Quickness > 0, "Quickness must be > 0"); @@ -140,7 +111,6 @@ public class CharacterControllerTests public void SampleCharacter_VitalsAreCoherent() { var s = SampleData.SampleCharacter(); - Assert.True(s.HealthCurrent > 0 && s.HealthCurrent <= s.HealthMax, "Health cur must be in [1, max]"); Assert.True(s.StaminaCurrent > 0 && s.StaminaCurrent <= s.StaminaMax, "Stamina cur must be in [1, max]"); Assert.True(s.ManaCurrent > 0 && s.ManaCurrent <= s.ManaMax, "Mana cur must be in [1, max]"); @@ -151,15 +121,8 @@ public class CharacterControllerTests [Fact] public void Bind_ReportContainsSampleAttributeValues() { - var text = new UiText(); - var layout = FakeLayout((CharacterController.MainTextId, text)); - var sheet = SampleData.SampleCharacter(); - CharacterController.Bind(layout, () => sheet); - - var allText = string.Join("\n", text.LinesProvider().Select(l => l.Text)); - - // All six attribute values should appear as strings in the report. + var allText = Report(() => sheet); Assert.Contains(sheet.Strength.ToString(), allText); Assert.Contains(sheet.Endurance.ToString(), allText); Assert.Contains(sheet.Quickness.ToString(), allText); From 0e644b5887b40f13fbf43d42920684c512238838 Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 25 Jun 2026 19:47:33 +0200 Subject: [PATCH 28/51] =?UTF-8?q?fix(studio):=20Character=20window=20?= =?UTF-8?q?=E2=80=94=20bind=20the=20REAL=20Attributes-tab=20elements=20(no?= =?UTF-8?q?=20guessing)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Redo of the character pilot per faithful-port rules. The previous pilot GUESSED a text report and put it on the wrong window. The decomp (verified by dumping acdream's importer-resolved tree) shows LayoutDesc 0x2100002E is the tabbed Attributes/Skills/Titles window: its tab-content slot 0x1000022B mounts sub-layout 0x2100002C (gmAttributeUI) which chains into the gmStatManagementUI header. The importer ALREADY mounts every content element (FindElement resolves name 0x10000231, heritage 0x10000232, PK 0x10000233, level 0x1000023B, total-XP 0x10000235, XP meter 0x10000236 → UiMeter, list box 0x1000023D) — EventId was a red herring (the dat id lives in _byId, not the widget's EventId field). CharacterStatController (port of gmStatManagementUI::UpdateCharacterInfo 0x004f0770 + UpdateExperience 0x004f0a70 + UpdatePKStatus 0x004f00a0) binds those real elements: name, heritage, PK status, level, total XP, the XP-to-level meter fill, and the six innate attributes in the list box. Studio (--layout 0x2100002E) now renders the actual panel content, not an overlay. 16 controller tests green; full App suite stays green. Refinements with known decomp sources (follow-ups): tab-button active/inactive state so the 3 tabs draw their sprites; exact label wording from the StringTable (table 0x10000001 → dat 0x31000001); the full AttributeInfoRegion row template (column-aligned values + raise buttons). CharacterController (text-report 0x2100001A) retained for that separate sub-panel. Co-Authored-By: Claude Opus 4.8 (1M context) --- src/AcDream.App/Studio/FixtureProvider.cs | 7 +- src/AcDream.App/Studio/SampleData.cs | 5 + src/AcDream.App/UI/Layout/CharacterSheet.cs | 19 +++ .../UI/Layout/CharacterStatController.cs | 113 ++++++++++++++++++ .../UI/Layout/CharacterStatControllerTests.cs | 108 +++++++++++++++++ 5 files changed, 250 insertions(+), 2 deletions(-) create mode 100644 src/AcDream.App/UI/Layout/CharacterStatController.cs create mode 100644 tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs diff --git a/src/AcDream.App/Studio/FixtureProvider.cs b/src/AcDream.App/Studio/FixtureProvider.cs index 7fdb4c37..e35be76c 100644 --- a/src/AcDream.App/Studio/FixtureProvider.cs +++ b/src/AcDream.App/Studio/FixtureProvider.cs @@ -114,8 +114,11 @@ public static class FixtureProvider break; } - case 0x2100002Eu: // gmCharacterInfoUI — character report (LayoutDesc 0x2100002E) - CharacterController.Bind( + case 0x2100002Eu: // gmStatManagementUI — Attributes/Skills/Titles window (LayoutDesc 0x2100002E) + // Bind the REAL importer-mounted header + list elements (name/heritage/PK/level/ + // total-XP/XP-meter + the attribute list). NOT the text-report sub-panel + // (that is gmCharacterInfoUI 0x2100001A → CharacterController). + CharacterStatController.Bind( layout, data: SampleData.SampleCharacter, datFont: stack.VitalsDatFont); diff --git a/src/AcDream.App/Studio/SampleData.cs b/src/AcDream.App/Studio/SampleData.cs index 7678b603..969af65c 100644 --- a/src/AcDream.App/Studio/SampleData.cs +++ b/src/AcDream.App/Studio/SampleData.cs @@ -133,6 +133,11 @@ public static class SampleData PlayTime = "2 years, 114 days, 4 hours", Deaths = 42, + PkStatus = "Non-Player Killer", + TotalXp = 1_250_000_000, + XpToNextLevel = 42_000_000, + XpFraction = 0.63f, + HealthCurrent = 80, HealthMax = 100, StaminaCurrent = 60, StaminaMax = 100, ManaCurrent = 90, ManaMax = 100, diff --git a/src/AcDream.App/UI/Layout/CharacterSheet.cs b/src/AcDream.App/UI/Layout/CharacterSheet.cs index f251f325..aeeec885 100644 --- a/src/AcDream.App/UI/Layout/CharacterSheet.cs +++ b/src/AcDream.App/UI/Layout/CharacterSheet.cs @@ -33,6 +33,25 @@ public sealed class CharacterSheet /// Title string, e.g. "the Adventurer". Null = omit. public string? Title { get; init; } + // ── Experience / PK (gmStatManagementUI::UpdateExperience 0x004f0a70, + // UpdatePKStatus 0x004f00a0) — the Attributes-tab header strip ────────── + + /// Total accrued experience (retail PropertyInt64 1). Header value + /// element 0x10000235 (m_pTotalXPText). + public long TotalXp { get; init; } + + /// Experience remaining to the next level. Header value element + /// 0x10000238 (m_pXPToLevelText). + public long XpToNextLevel { get; init; } + + /// XP-to-next-level meter fill, 0..1 (retail (cur−base)/(cap−base)). + /// Drives the header meter 0x10000236 (m_pXPToLevelMeter). + public float XpFraction { get; init; } + + /// PK status display string, e.g. "Non-Player Killer". Header element + /// 0x10000233 (m_pPKStatusText). Null = omit. + public string? PkStatus { get; init; } + // ── Birth / age / deaths (UpdatePlayerBirthAgeDeaths 0x004b8cb0) ───────── /// Formatted birth date string (retail InqInt(0x62) → strftime). diff --git a/src/AcDream.App/UI/Layout/CharacterStatController.cs b/src/AcDream.App/UI/Layout/CharacterStatController.cs new file mode 100644 index 00000000..fa79cd85 --- /dev/null +++ b/src/AcDream.App/UI/Layout/CharacterStatController.cs @@ -0,0 +1,113 @@ +using System; +using System.Collections.Generic; +using System.Numerics; +using AcDream.App.UI; + +namespace AcDream.App.UI.Layout; + +/// +/// Controller for the Character window's Attributes tab — LayoutDesc 0x2100002E, +/// whose tab-content slot 0x1000022B mounts sub-layout 0x2100002C (gmAttributeUI, root +/// type 0x1000002A) which in turn chains into the gmStatManagementUI header content. +/// +/// Unlike (which targets the SEPARATE text-report +/// sub-panel 0x2100001A, gmCharacterInfoUI, by creating its runtime m_pMainText element), +/// this controller binds the real, statically-mounted header + list elements that the +/// importer already produces — every id below is confirmed present via +/// . +/// +/// Ported from gmStatManagementUI::UpdateCharacterInfo (0x004f0770) + +/// UpdateExperience (0x004f0a70) + UpdatePKStatus (0x004f00a0): name, heritage, +/// PK status, level, total XP and the XP-to-level meter. The attribute list is the +/// gmAttributeUI list box (0x1000023D). +/// +/// Refinement pending: exact label wording comes from the dat StringTable +/// (table enum 0x10000001 → dat 0x31000001) — not yet ported, so labels use the canonical +/// AC text. Column alignment + per-row raise buttons (the full AttributeInfoRegion row +/// template) are a later pass; this binds values into the real element rects first. +/// +public static class CharacterStatController +{ + // ── gmStatManagementUI header element ids (sub-layout 0x2100002C content) ── + public const uint NameId = 0x10000231u; // m_pNameText + public const uint HeritageId = 0x10000232u; // m_pHeritageText + public const uint PkStatusId = 0x10000233u; // m_pPKStatusText + public const uint LevelId = 0x1000023Bu; // m_pLevelText (right-side level area) + public const uint TotalXpId = 0x10000235u; // m_pTotalXPText + public const uint XpMeterId = 0x10000236u; // m_pXPToLevelMeter (UiMeter) + public const uint ListBoxId = 0x1000023Du; // m_pListBox container + + private static readonly Vector4 Body = new(0.92f, 0.90f, 0.82f, 1f); // parchment-white body text + private static readonly Vector4 Gold = new(1f, 0.82f, 0.36f, 1f); // section / emphasis gold + + /// + /// Bind the Attributes-tab header + list elements in to + /// . Each element is the real importer-mounted widget; the + /// providers are polled each frame so a live session or the Studio can swap the sheet + /// without re-binding. + /// + public static void Bind(ImportedLayout layout, Func data, UiDatFont? datFont = null) + { + Label(layout, NameId, datFont, Gold, () => data().Name); + Label(layout, HeritageId, datFont, Body, () => data().Heritage ?? data().Race ?? string.Empty); + Label(layout, PkStatusId, datFont, Body, () => data().PkStatus ?? string.Empty); + Label(layout, LevelId, datFont, Gold, () => data().Level.ToString()); + Label(layout, TotalXpId, datFont, Body, () => data().TotalXp.ToString("N0")); + + // XP-to-level meter fill (gmStatManagementUI::UpdateExperience 0x004f0a70). + if (layout.FindElement(XpMeterId) is UiMeter meter) + meter.Fill = () => data().XpFraction; + + // Attribute list (gmAttributeUI list box 0x1000023D). The list box is a generic + // container in the import, so attach a single text view sized to the rows and pinned + // to the top of the list region. (The full per-row AttributeInfoRegion widget is a + // later pass; this renders the six innate attributes + values faithfully.) + if (layout.FindElement(ListBoxId) is { } list) + { + var rows = new UiText + { + DatFont = datFont, + ClickThrough = true, + Left = 12f, + Top = 10f, + Width = MathF.Max(60f, list.Width - 24f), + Height = 9f * LineHeight, // sized to the 8 content lines so it top-aligns + }; + rows.LinesProvider = () => AttributeRows(data()); + list.AddChild(rows); + } + } + + private const float LineHeight = 18f; + + private static void Label(ImportedLayout layout, uint id, UiDatFont? datFont, Vector4 color, Func text) + { + if (layout.FindElement(id) is UiText t) + { + t.DatFont = datFont; + t.Centered = true; // single-line centered label (retail UIElement_Text) + t.ClickThrough = true; + t.LinesProvider = () => new[] { new UiText.Line(text(), color) }; + } + } + + /// + /// The six innate attributes in canonical AC panel order + /// (Strength, Endurance, Coordination, Quickness, Focus, Self), preceded by a gold header. + /// + private static IReadOnlyList AttributeRows(CharacterSheet s) + => new List + { + new("Attributes", Gold), + new(string.Empty, Body), + Row("Strength", s.Strength), + Row("Endurance", s.Endurance), + Row("Coordination", s.Coordination), + Row("Quickness", s.Quickness), + Row("Focus", s.Focus), + Row("Self", s.Self), + }; + + private static UiText.Line Row(string name, int value) + => new($"{name,-13}{value,4}", Body); +} diff --git a/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs b/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs new file mode 100644 index 00000000..70faab1a --- /dev/null +++ b/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs @@ -0,0 +1,108 @@ +using AcDream.App.Studio; +using AcDream.App.UI; +using AcDream.App.UI.Layout; + +namespace AcDream.App.Tests.UI.Layout; + +/// +/// Unit tests for — the Attributes-tab controller that +/// binds the REAL importer-mounted header + list elements (no created overlay). Pure data +/// wiring against fake layouts; no dats, no GL. +/// +public class CharacterStatControllerTests +{ + // ── Header labels bind to the sheet ────────────────────────────────────── + + [Fact] + public void Bind_SetsNameLabel() + { + var name = new UiText(); + var layout = Fake((CharacterStatController.NameId, name)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + Assert.Equal("Studio Player", name.LinesProvider()[0].Text); + } + + [Fact] + public void Bind_SetsLevelLabel() + { + var level = new UiText(); + var layout = Fake((CharacterStatController.LevelId, level)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + Assert.Equal("126", level.LinesProvider()[0].Text); + } + + [Fact] + public void Bind_SetsHeritageAndPkLabels() + { + var heritage = new UiText(); + var pk = new UiText(); + var layout = Fake((CharacterStatController.HeritageId, heritage), + (CharacterStatController.PkStatusId, pk)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + Assert.Equal("Aluvian Heritage", heritage.LinesProvider()[0].Text); + Assert.Equal("Non-Player Killer", pk.LinesProvider()[0].Text); + } + + // ── XP meter fill ──────────────────────────────────────────────────────── + + [Fact] + public void Bind_SetsXpMeterFill() + { + var meter = new UiMeter(); + var layout = Fake((CharacterStatController.XpMeterId, meter)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + var fill = meter.Fill(); + Assert.NotNull(fill); + Assert.True(System.MathF.Abs(fill!.Value - 0.63f) < 0.001f, $"expected ~0.63, got {fill}"); + } + + // ── Attribute list ─────────────────────────────────────────────────────── + + [Fact] + public void Bind_PopulatesAttributeList() + { + var list = new UiPanel(); + var layout = Fake((CharacterStatController.ListBoxId, list)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + var rows = list.Children.OfType().First(); + var text = string.Join("\n", rows.LinesProvider().Select(l => l.Text)); + + Assert.Contains("Strength", text); + Assert.Contains("Endurance", text); + Assert.Contains("Coordination", text); + Assert.Contains("Quickness", text); + Assert.Contains("Focus", text); + Assert.Contains("Self", text); + Assert.Contains("100", text); + } + + // ── Robustness: a partial layout (missing ids) must not throw ──────────── + + [Fact] + public void Bind_MissingElements_DoesNotThrow() + => CharacterStatController.Bind(Fake(), SampleData.SampleCharacter); + + // ── Helper ───────────────────────────────────────────────────────────── + + private static ImportedLayout Fake(params (uint id, UiElement e)[] items) + { + var dict = new Dictionary(); + var root = new UiPanel(); + foreach (var (id, e) in items) + { + root.AddChild(e); + dict[id] = e; + } + return new ImportedLayout(root, dict); + } +} From 0d87e4dc31a7af80103fed322e001c5a8c9d2288 Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 25 Jun 2026 19:48:38 +0200 Subject: [PATCH 29/51] docs(studio): faithful character-window element spec (decomp-grounded) Element map for LayoutDesc 0x2100002E (the tabbed Attributes/Skills/Titles window) + the importer-mount reality + the StringTable verdict + the follow-up list. Grounds the CharacterStatController work in 0e644b5 and the remaining refinements. Co-Authored-By: Claude Opus 4.8 (1M context) --- ...26-06-25-character-window-faithful-spec.md | 82 +++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 docs/research/2026-06-25-character-window-faithful-spec.md diff --git a/docs/research/2026-06-25-character-window-faithful-spec.md b/docs/research/2026-06-25-character-window-faithful-spec.md new file mode 100644 index 00000000..9f19e56a --- /dev/null +++ b/docs/research/2026-06-25-character-window-faithful-spec.md @@ -0,0 +1,82 @@ +# Character window — faithful element spec (LayoutDesc 0x2100002E) + +Decomp-grounded blueprint for the Character window, produced to REDO the guessed pilot. +Sources: `docs/research/named-retail/acclient_2013_pseudo_c.txt` (PDB-named decomp), +the user UI dump `docs/research/2026-06-25-retail-ui-layout-dump.json`, and acdream's own +importer-resolved tree (dumped live in the studio). **No guessing** — every row cites a +decomp address or a confirmed `FindElement` result. + +## What 0x2100002E actually is + +A **tabbed Attributes / Skills / Titles window** (300×600, root panel `0x10000227`, Type 8). +It is NOT a text report. Three tab-content slots each mount a sub-layout via +`BaseElement`+`BaseLayoutId` inheritance (acdream's `ShouldMountBaseChildren` path): + +| Slot | BaseElement | BaseLayoutId | gm*UI | Register | +|---|---|---|---|---| +| `0x1000022B` (Attributes) | `0x10000225` | `0x2100002C` | gmAttributeUI (root type 0x1000002A) | 0x0049db50 | +| `0x1000022C` (Skills) | `0x1000022E` | `0x2100002D` | gmSkillUI | 0x0049adb0 | +| `0x10000539` (Titles) | `0x1000052D` | `0x2100005E` | gmCharacterTitleUI | 0x0049aba0 | + +Both Attributes + Skills tabs share a header strip filled by the base class +**`gmStatManagementUI`** (`UpdateCharacterInfo` 0x004f0770, `UpdateExperience` 0x004f0a70, +`UpdatePKStatus` 0x004f00a0). The tab sub-layout `0x2100002C` nests `0x10000226` which +chains again into `0x21000045` — the real header/list content is **two inheritance levels deep**. + +The **text report** ("birth/age/deaths, innate attributes, augmentations, load") the earlier +pilot guessed is a SEPARATE sub-panel: LayoutDesc `0x2100001A`, `gmCharacterInfoUI` +(register 0x004b8c90), whose `m_pMainText` (`0x1000011d`) is created at RUNTIME. That window +is handled by `CharacterController` (create-the-element path) — different layout, not 0x2100002E. + +## Importer reality (dumped live, 2026-06-25) + +- `dump-vitals-layout` prints the RAW dat (no inheritance) → the content elements look "missing". + That is an artifact. The **importer** mounts them. Confirmed by `FindElement` on the studio's + imported 0x2100002E: + - `0x10000231` name → `UiText` ✓ + - `0x10000232` heritage → `UiText` ✓ + - `0x10000233` PK status → `UiText` ✓ + - `0x1000023B` level → `UiText` ✓ + - `0x10000235` total XP → `UiText` ✓ + - `0x10000236` XP-to-level meter → `UiMeter` ✓ + - `0x1000023D` list box → `UiDatElement` (generic container) ✓ + - `0x10000238` XP-to-level text → **NULL** (nested variant; not mounted — minor) +- `UiElement.EventId` is NOT the dat element id (root shows 0x10000001, not 0x10000227). The dat + id lives in `ImportedLayout._byId` (set from `info.Id`, LayoutImporter:107). Bind via + `FindElement(id)`, never by reading `widget.EventId`. + +## Header element map (gmStatManagementUI) + +| Id | Field | Content source | Rect (in sub-layout) | +|---|---|---|---| +| `0x10000231` | m_pNameText | player full name | 0,25,230,20 | +| `0x10000232` | m_pHeritageText | gender+heritage display (InqGenderHeritageDisplay) | 0,45,230,15 | +| `0x10000233` | m_pPKStatusText | PK status string (StringTable) | 0,60,230,15 | +| `0x1000023B` | m_pLevelText | PropertyInt 0x19 (level) | 235,60,65,50 | +| `0x10000234` | (label) | "Total Experience:" | 0,95,130,18 | +| `0x10000235` | m_pTotalXPText | PropertyInt64 1 | 130,95,100,18 | +| `0x10000236` | m_pXPToLevelMeter | (cur−base)/(cap−base), img 0x060011A6 | 0,113,230,17 | +| `0x10000237` | (label) | "To next level:" | 0,113,130,17 | +| `0x10000238` | m_pXPToLevelText | XP remaining | 130,113,100,17 | +| `0x1000023D` | m_pListBox | attribute/skill rows (runtime) | 0,137,300,398 | + +Attribute list rows: gmAttributeUI builds `AttributeInfoRegion` rows (name + base/buffed value + +raise button). Canonical AC display order: Strength, Endurance, Coordination, Quickness, Focus, Self. + +## StringTable + +`DatReaderWriter` CAN read `StringTable` (CLI uses `GetAllIdsOfType`). The decomp's +`StringInfo::SetStringIDandTableEnum(…, stringId, 0x10000001)` references table enum 0x10000001 → +the game string table dat (0x31000001 family); StringId=0 is a placeholder overwritten by a +preceding `compute_str_hash("ID_…")`. To reproduce exact wording: read the StringTable + a +StringInfo helper (hash → id → lookup, `AddVariable_*` substitution). NOT yet ported — current +controller uses canonical AC labels. + +## Status (this session) + +- **DONE (commit 0e644b5):** `CharacterStatController` binds name/heritage/PK/level/total-XP + + the XP meter fill + the six attributes into the real elements. Studio renders the real panel. +- **Follow-ups (known sources):** (1) tab-button active/inactive STATE so the 3 tabs draw their + sprites (0x06005D92-97); (2) StringTable wording; (3) full AttributeInfoRegion row template + (column-aligned values + per-attribute raise buttons); (4) wire `0x10000234`/`0x10000237` + labels + the right-side level area placement. From 27819514afc79aa6b06147ba93dfeb1968c35908 Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 25 Jun 2026 20:00:09 +0200 Subject: [PATCH 30/51] =?UTF-8?q?fix(studio):=20Character=20window=20?= =?UTF-8?q?=E2=80=94=20show=20only=20the=20active=20tab=20page=20(clears?= =?UTF-8?q?=20the=20dark=20overlay)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit LayoutDesc 0x2100002E is a tabbed window; all three pages (Attributes/Skills/Titles) mount their content as overlapping root children. acdream drew all three, so the inactive pages' backdrops painted over the active content — the dim "almost opaque" cover the user reported, and it displaced the XP meter. The shared gmStatManagement ids are duplicated across pages and _byId keeps the LAST-mounted copy, so every bound widget lives in exactly one page; the controller now keeps that page visible (ContainsWidget reference-walk from the bound name element) and hides the rest. Header/attrs/XP-bar now render clean + correctly placed. Tests green. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../UI/Layout/CharacterStatController.cs | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/src/AcDream.App/UI/Layout/CharacterStatController.cs b/src/AcDream.App/UI/Layout/CharacterStatController.cs index fa79cd85..fccf8508 100644 --- a/src/AcDream.App/UI/Layout/CharacterStatController.cs +++ b/src/AcDream.App/UI/Layout/CharacterStatController.cs @@ -76,6 +76,32 @@ public static class CharacterStatController rows.LinesProvider = () => AttributeRows(data()); list.AddChild(rows); } + + // ── Active-page selection (fixes the "dark overlay") ────────────────── + // 0x2100002E is a tabbed window: all three tab pages (Attributes / Skills / Titles) mount + // their content as separate root children that OVERLAP in the same content rect. Retail + // shows only the active page; acdream draws them all, so the inactive pages' backdrops paint + // over the active content (the dim "almost opaque" cover). The shared gmStatManagement ids + // are duplicated across pages and acdream's _byId keeps the LAST-mounted copy, so every widget + // we just bound lives in exactly ONE page. Keep that page visible; hide the rest. + if (layout.FindElement(NameId) is { } anchor && layout.Root is { } root) + { + foreach (var page in root.Children) + { + if (page.Children.Count == 0) continue; // tab-bar buttons are leaves — leave them + page.Visible = ContainsWidget(page, anchor); // only the bound page stays visible + } + } + } + + /// Depth-first reference search: is somewhere under + /// ? Used to find which overlapping tab page owns the bound widgets. + private static bool ContainsWidget(UiElement node, UiElement target) + { + if (ReferenceEquals(node, target)) return true; + foreach (var c in node.Children) + if (ContainsWidget(c, target)) return true; + return false; } private const float LineHeight = 18f; From 902160098ae0305166814fc6984fbb510e82d18f Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 25 Jun 2026 20:36:00 +0200 Subject: [PATCH 31/51] =?UTF-8?q?feat(D.2b):=20Character=20Attributes=20ta?= =?UTF-8?q?b=20=E2=80=94=209-row=20list=20(icons=20+=20values=20+=20vitals?= =?UTF-8?q?)=20+=20footer=20State-A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Pass 1 of the Attributes tab interactive controller. Replaces the placeholder UiText attribute list with 9 real manual-layout rows matching retail's gmAttributeUI::PostInit (0x0049db70) structure: - 6 attribute rows (Strength/Endurance/Coordination/Quickness/Focus/Self) in retail display order (Coord enum 4 before Quick enum 3 — spec §1) - 3 vital rows (Health/Stamina/Mana) with cur/max format per Attribute2ndInfoRegion::Update (0x004f19e0) - Each row: icon (UiText.BackgroundSprite = 0x06xxxxxx RenderSurface via spriteResolve), name (left-justified), value (new RightAligned mode) Icon DataIDs from SubMap 0x25000006/0x25000007 via spec §2: STR 0x060002C8, END 0x060002C4, COORD 0x060002C9, QUICK 0x060002C6, FOCUS 0x060002C5, SELF 0x060002C7, HP 0x06004C3B, SP 0x06004C3C, MP 0x06004C3D Footer State-A (DisplayDefaultFooter 0x0049cde0): 0x1000024e title = "", 0x10000243 line-1-value = "Select an Attribute to Improve", 0x10000245 line-2-value = SkillCredits (InqInt(0x18)) Other changes: - UiText: add RightAligned bool (single-line right-justified, mirrors Centered path) - CharacterSheet: add SkillCredits property (retail InqInt(0x18)) - SampleData: update to spec fixture values (Str/Quick=200, rest=10, SkillCredits=96, Health=5/5, Stamina=10/10, Mana=10/10) - FixtureProvider: pass stack.ResolveChrome as spriteResolve for icon rendering - Tests: 13 targeted tests (9-row count, row order, attr+vital values, icon DataIDs, RightAligned flag, footer State-A all 5 elements) Pass 2 (selection/raise buttons) is separate per spec. Co-Authored-By: Claude Sonnet 4.6 --- src/AcDream.App/Studio/FixtureProvider.cs | 9 +- src/AcDream.App/Studio/SampleData.cs | 23 +- src/AcDream.App/UI/Layout/CharacterSheet.cs | 8 + .../UI/Layout/CharacterStatController.cs | 324 +++++++++++++++--- src/AcDream.App/UI/UiText.cs | 29 ++ .../UI/Layout/CharacterStatControllerTests.cs | 233 ++++++++++++- 6 files changed, 552 insertions(+), 74 deletions(-) diff --git a/src/AcDream.App/Studio/FixtureProvider.cs b/src/AcDream.App/Studio/FixtureProvider.cs index e35be76c..bf0e6fbd 100644 --- a/src/AcDream.App/Studio/FixtureProvider.cs +++ b/src/AcDream.App/Studio/FixtureProvider.cs @@ -116,12 +116,13 @@ public static class FixtureProvider case 0x2100002Eu: // gmStatManagementUI — Attributes/Skills/Titles window (LayoutDesc 0x2100002E) // Bind the REAL importer-mounted header + list elements (name/heritage/PK/level/ - // total-XP/XP-meter + the attribute list). NOT the text-report sub-panel - // (that is gmCharacterInfoUI 0x2100001A → CharacterController). + // total-XP/XP-meter + the 9-row attribute list + footer State-A). NOT the text-report + // sub-panel (that is gmCharacterInfoUI 0x2100001A → CharacterController). CharacterStatController.Bind( layout, - data: SampleData.SampleCharacter, - datFont: stack.VitalsDatFont); + data: SampleData.SampleCharacter, + datFont: stack.VitalsDatFont, + spriteResolve: stack.ResolveChrome); break; default: diff --git a/src/AcDream.App/Studio/SampleData.cs b/src/AcDream.App/Studio/SampleData.cs index 969af65c..0877285f 100644 --- a/src/AcDream.App/Studio/SampleData.cs +++ b/src/AcDream.App/Studio/SampleData.cs @@ -138,20 +138,25 @@ public static class SampleData XpToNextLevel = 42_000_000, XpFraction = 0.63f, - HealthCurrent = 80, HealthMax = 100, - StaminaCurrent = 60, StaminaMax = 100, - ManaCurrent = 90, ManaMax = 100, + // Vitals: retail screenshot spec (Pass 1 acceptance criteria §Goal). + HealthCurrent = 5, HealthMax = 5, + StaminaCurrent = 10, StaminaMax = 10, + ManaCurrent = 10, ManaMax = 10, - Strength = 100, - Endurance = 100, - Quickness = 100, - Coordination = 100, - Focus = 100, - Self = 100, + // Attributes: Strength + Quickness = 200; all others = 10 (retail screenshot spec §Goal). + Strength = 200, + Endurance = 10, + Quickness = 200, + Coordination = 10, + Focus = 10, + Self = 10, UnspentSkillCredits = 12, SpecializedSkillCredits = 4, + // Available skill credits (retail InqInt(0x18)); shown in Attributes tab footer State-A. + SkillCredits = 96, + AugmentationName = "Swords", BurdenCurrent = 1200, diff --git a/src/AcDream.App/UI/Layout/CharacterSheet.cs b/src/AcDream.App/UI/Layout/CharacterSheet.cs index aeeec885..a562fd47 100644 --- a/src/AcDream.App/UI/Layout/CharacterSheet.cs +++ b/src/AcDream.App/UI/Layout/CharacterSheet.cs @@ -86,10 +86,18 @@ public sealed class CharacterSheet // ── Skills (UpdateFakeSkills 0x004b8930) ──────────────────────────────── // Retail InqInt(0xb5) = SkillCredits; InqInt(0xc0) = AvailableSkillCredits. + // InqInt(0x18) = available skill credits — footer 0x10000245 in the Attributes tab. public int UnspentSkillCredits { get; init; } public int SpecializedSkillCredits { get; init; } + /// + /// Available (unspent) skill credits shown in the Attributes tab footer State-A. + /// Retail InqInt(0x18) — gmStatManagementUI::DisplayDefaultFooter (0x0049cde0). + /// Element 0x10000245 (footer line-2 value). + /// + public int SkillCredits { get; init; } + // ── Augmentations (UpdateAugmentations 0x004b9000) ───────────────────── // Retail InqInt(0x162) = AugmentationStat; string-switch 1..0xb. diff --git a/src/AcDream.App/UI/Layout/CharacterStatController.cs b/src/AcDream.App/UI/Layout/CharacterStatController.cs index fccf8508..d507af08 100644 --- a/src/AcDream.App/UI/Layout/CharacterStatController.cs +++ b/src/AcDream.App/UI/Layout/CharacterStatController.cs @@ -19,12 +19,18 @@ namespace AcDream.App.UI.Layout; /// Ported from gmStatManagementUI::UpdateCharacterInfo (0x004f0770) + /// UpdateExperience (0x004f0a70) + UpdatePKStatus (0x004f00a0): name, heritage, /// PK status, level, total XP and the XP-to-level meter. The attribute list is the -/// gmAttributeUI list box (0x1000023D). +/// gmAttributeUI list box (0x1000023D), built as 9 manual-layout rows per +/// gmAttributeUI::PostInit (0x0049db70) + AttributeInfoRegion / Attribute2ndInfoRegion +/// (0x004f1910 / 0x004f19e0). Row icons loaded via sub-element 0x10000129 in the retail +/// dat template (each icon is a 0x06xxxxxx RenderSurface DataID from SubMap +/// 0x25000006 / 0x25000007, spec §2). /// -/// Refinement pending: exact label wording comes from the dat StringTable -/// (table enum 0x10000001 → dat 0x31000001) — not yet ported, so labels use the canonical -/// AC text. Column alignment + per-row raise buttons (the full AttributeInfoRegion row -/// template) are a later pass; this binds values into the real element rects first. +/// Footer State A (nothing selected) bound from +/// DisplayDefaultFooter (0x0049cde0): title empty, line-1 value = +/// "Select an Attribute to Improve", line-2 value = available skill credits (InqInt(0x18)). +/// +/// Pass 2 pending: selection highlight (Button SetState(6)), State-B footer, +/// raise buttons (CM_Train::Event_TrainAttribute). /// public static class CharacterStatController { @@ -37,16 +43,64 @@ public static class CharacterStatController public const uint XpMeterId = 0x10000236u; // m_pXPToLevelMeter (UiMeter) public const uint ListBoxId = 0x1000023Du; // m_pListBox container + // ── Footer element ids (gmStatManagementUI struct fields) ──────────────── + // Source: acclient.h / DisplayDefaultFooter (0x0049cde0) + public const uint FooterTitleId = 0x1000024eu; // GetFooterTitleLabel + public const uint FooterLine1Label = 0x10000242u; // GetFooterLineOneLabel + public const uint FooterLine1Value = 0x10000243u; // GetFooterLineOneValue + public const uint FooterLine2Label = 0x10000244u; // GetFooterLineTwoLabel + public const uint FooterLine2Value = 0x10000245u; // GetFooterLineTwoValue + private static readonly Vector4 Body = new(0.92f, 0.90f, 0.82f, 1f); // parchment-white body text private static readonly Vector4 Gold = new(1f, 0.82f, 0.36f, 1f); // section / emphasis gold + // ── Row layout constants ───────────────────────────────────────────────── + // Row height matches retail's UIElement_ListBox template (~20px; spec §1 "each ~20px tall"). + private const float RowHeight = 20f; + private const float IconSize = 16f; // icon element is ~16×16px (spec §Goal) + private const float RowPadX = 2f; // left inset before the icon + private const float IconGap = 4f; // gap between icon right and name text left + + // ── Attribute row descriptors — retail display order per spec §1 ───────── + // InfoRegion::InfoRegion row sub-element ids: + // 0x10000129 = icon image + // 0x1000012a = m_pLabelText (name) + // 0x1000012b = m_pValueText (value) + // Icon DataIDs from SubMap 0x25000006 (typeId 0x10000002) — spec §2. + private static readonly (string name, uint iconDid)[] AttrRows = new[] + { + ("Strength", 0x060002C8u), // enum 1 — spec §1/§2 + ("Endurance", 0x060002C4u), // enum 2 + ("Coordination", 0x060002C9u), // enum 4 (COORD before QUICK — retail display order) + ("Quickness", 0x060002C6u), // enum 3 + ("Focus", 0x060002C5u), // enum 5 + ("Self", 0x060002C7u), // enum 6 + }; + + // Vital icon DataIDs from SubMap 0x25000007 (typeId 0x10000003) — spec §2. + private static readonly (string name, uint iconDid)[] VitalRows = new[] + { + ("Health", 0x06004C3Bu), // CurEnum 2 + ("Stamina", 0x06004C3Cu), // CurEnum 4 + ("Mana", 0x06004C3Du), // CurEnum 6 + }; + /// - /// Bind the Attributes-tab header + list elements in to - /// . Each element is the real importer-mounted widget; the - /// providers are polled each frame so a live session or the Studio can swap the sheet - /// without re-binding. + /// Bind the Attributes-tab header + 9-row list + footer State-A elements in + /// to . + /// + /// + /// resolves a 0x06xxxxxx RenderSurface dat id to + /// a (GL tex handle, pixel width, pixel height) triple — the same resolver that + /// DatWidgetFactory uses for chrome sprites. Pass null in tests where + /// icon rendering is not asserted; icons are skipped when the resolver is absent. + /// /// - public static void Bind(ImportedLayout layout, Func data, UiDatFont? datFont = null) + public static void Bind( + ImportedLayout layout, + Func data, + UiDatFont? datFont = null, + Func? spriteResolve = null) { Label(layout, NameId, datFont, Gold, () => data().Name); Label(layout, HeritageId, datFont, Body, () => data().Heritage ?? data().Race ?? string.Empty); @@ -58,25 +112,20 @@ public static class CharacterStatController if (layout.FindElement(XpMeterId) is UiMeter meter) meter.Fill = () => data().XpFraction; - // Attribute list (gmAttributeUI list box 0x1000023D). The list box is a generic - // container in the import, so attach a single text view sized to the rows and pinned - // to the top of the list region. (The full per-row AttributeInfoRegion widget is a - // later pass; this renders the six innate attributes + values faithfully.) + // ── Attribute list — 9 rows in list box 0x1000023D ──────────────────── + // gmAttributeUI::PostInit (0x0049db70) calls AddItemFromTemplateList nine times — + // in acdream we manually add 9 UiPanel row containers (no dat template machinery). + // Each row = icon (left, ~16×16) + name (left-justified) + value (right-aligned). if (layout.FindElement(ListBoxId) is { } list) { - var rows = new UiText - { - DatFont = datFont, - ClickThrough = true, - Left = 12f, - Top = 10f, - Width = MathF.Max(60f, list.Width - 24f), - Height = 9f * LineHeight, // sized to the 8 content lines so it top-aligns - }; - rows.LinesProvider = () => AttributeRows(data()); - list.AddChild(rows); + BuildAttributeRows(list, datFont, spriteResolve, data); } + // ── Footer — State A (nothing selected): DisplayDefaultFooter (0x0049cde0) ──── + // title = "" ; line-1 value = "Select an Attribute to Improve" ; + // line-2 value = InqInt(0x18) = available skill credits. + BindFooterStateA(layout, datFont, data); + // ── Active-page selection (fixes the "dark overlay") ────────────────── // 0x2100002E is a tabbed window: all three tab pages (Attributes / Skills / Titles) mount // their content as separate root children that OVERLAP in the same content rect. Retail @@ -94,6 +143,209 @@ public static class CharacterStatController } } + // ── 9-row attribute list ───────────────────────────────────────────────── + + private static void BuildAttributeRows( + UiElement list, + UiDatFont? datFont, + Func? spriteResolve, + Func data) + { + float listW = list.Width; + float y = 0f; // row-local Y within the list box; each row stacks top-down + + // Six attribute rows (Strength, Endurance, Coordination, Quickness, Focus, Self). + // Value format: "%d" (buffed integer) — AttributeInfoRegion::Update (0x004f1910). + for (int i = 0; i < AttrRows.Length; i++) + { + var (rowName, iconDid) = AttrRows[i]; + + // Capture for the lambda — locals from the loop are captured by VALUE here. + int rowIndex = i; // not used in value yet but keeps the closure honest + + AddRow(list, datFont, spriteResolve, + left: 0f, top: y, width: listW, height: RowHeight, + iconDid: iconDid, + nameText: rowName, + valueProvider: () => + { + var s = data(); + int v = rowIndex switch + { + 0 => s.Strength, + 1 => s.Endurance, + 2 => s.Coordination, + 3 => s.Quickness, + 4 => s.Focus, + 5 => s.Self, + _ => 0, + }; + return v.ToString(); + }); + + y += RowHeight; + } + + // Three vital rows (Health, Stamina, Mana). + // Value format: "%d/%d" cur/max — Attribute2ndInfoRegion::Update (0x004f19e0). + for (int i = 0; i < VitalRows.Length; i++) + { + var (rowName, iconDid) = VitalRows[i]; + int rowIndex = i; + + AddRow(list, datFont, spriteResolve, + left: 0f, top: y, width: listW, height: RowHeight, + iconDid: iconDid, + nameText: rowName, + valueProvider: () => + { + var s = data(); + return rowIndex switch + { + 0 => $"{s.HealthCurrent}/{s.HealthMax}", + 1 => $"{s.StaminaCurrent}/{s.StaminaMax}", + 2 => $"{s.ManaCurrent}/{s.ManaMax}", + _ => string.Empty, + }; + }); + + y += RowHeight; + } + } + + /// + /// Add a single row to : a transparent UiPanel container + /// positioned at , of the list, holding + /// three children: icon (UiText with BackgroundSprite), name (UiText, left-justified), + /// value (UiText, right-aligned). All three are ClickThrough non-interactive. + /// + /// Row sub-element ids from the retail dat template (InfoRegion::InfoRegion + /// 0x004f1450): 0x10000129 icon, 0x1000012a name, 0x1000012b value. + /// + private static void AddRow( + UiElement list, + UiDatFont? datFont, + Func? spriteResolve, + float left, float top, float width, float height, + uint iconDid, + string nameText, + Func valueProvider) + { + // Transparent container — the list box backdrop draws behind everything. + var row = new UiPanel + { + Left = left, + Top = top, + Width = width, + Height = height, + BackgroundColor = Vector4.Zero, // transparent + BorderColor = Vector4.Zero, + ClickThrough = true, + Anchors = AnchorEdges.Left | AnchorEdges.Top, + }; + + float iconY = (height - IconSize) * 0.5f; + + // Icon element — UiText with BackgroundSprite draws the dat sprite under (empty) text. + // Retail: InfoRegion::InfoRegion sub-element 0x10000129 → UIRegion::SetImageByDID. + var iconEl = new UiText + { + Left = RowPadX, + Top = iconY, + Width = IconSize, + Height = IconSize, + ClickThrough = true, + DatFont = null, // icon has no text + BackgroundSprite = spriteResolve is not null ? iconDid : 0u, + SpriteResolve = spriteResolve is not null + ? id => { var (h, w, ht) = spriteResolve(id); return (h, w, ht); } + : null, + LinesProvider = static () => Array.Empty(), + Anchors = AnchorEdges.Left | AnchorEdges.Top, + }; + + // Name label — left-justified within its column width. + // Retail: InfoRegion sub-element 0x1000012a (m_pLabelText). + // UiText has no explicit LeftAligned flag; we use the default non-Centered/non-RightAligned + // scroll path with a single-line LinesProvider. Padding=1 keeps the text off the left edge. + float nameX = RowPadX + IconSize + IconGap; + float nameW = width * 0.60f; // ~60% of the row width for the name column + float nameY = 0f; // fill full row height; one line top-pins to the row top + + string capturedName = nameText; // close over the name string directly + var nameEl = new UiText + { + Left = nameX, + Top = nameY, + Width = nameW, + Height = height, + DatFont = datFont, + ClickThrough = true, + Centered = false, + RightAligned = false, + Padding = 1f, + Anchors = AnchorEdges.Left | AnchorEdges.Top, + }; + nameEl.LinesProvider = () => new[] { new UiText.Line(capturedName, Body) }; + + // Value label — right-aligned, vertically centered. + // Retail: InfoRegion sub-element 0x1000012b (m_pValueText). + float valueW = width - nameX - nameW - RowPadX; + float valueX = nameX + nameW; + + var valueEl = new UiText + { + Left = valueX, + Top = nameY, + Width = valueW > 0f ? valueW : 40f, + Height = height, + DatFont = datFont, + ClickThrough = true, + RightAligned = true, + Anchors = AnchorEdges.Left | AnchorEdges.Top, + }; + var capturedProvider = valueProvider; + valueEl.LinesProvider = () => new[] { new UiText.Line(capturedProvider(), Body) }; + + row.AddChild(iconEl); + row.AddChild(nameEl); + row.AddChild(valueEl); + list.AddChild(row); + } + + // ── Footer State A binding ──────────────────────────────────────────────── + + /// + /// Bind footer elements to their State-A (nothing selected) content per + /// DisplayDefaultFooter (0x0049cde0). Only the two "value" slots carry + /// text; the label slots are left empty (retail sets them to "" for State A). + /// + private static void BindFooterStateA( + ImportedLayout layout, + UiDatFont? datFont, + Func data) + { + // 0x1000024e title → "" + Label(layout, FooterTitleId, datFont, Body, static () => string.Empty); + + // 0x10000242 line-1 label → "" + Label(layout, FooterLine1Label, datFont, Body, static () => string.Empty); + + // 0x10000243 line-1 value → "Select an Attribute to Improve" + // StringId "ID_StatManagement_Footer_SelectAttribute" + Label(layout, FooterLine1Value, datFont, Body, + static () => "Select an Attribute to Improve"); + + // 0x10000244 line-2 label → "" + Label(layout, FooterLine2Label, datFont, Body, static () => string.Empty); + + // 0x10000245 line-2 value → InqInt(0x18) = available skill credits + Label(layout, FooterLine2Value, datFont, Body, + () => data().SkillCredits.ToString()); + } + + // ── Helpers ────────────────────────────────────────────────────────────── + /// Depth-first reference search: is somewhere under /// ? Used to find which overlapping tab page owns the bound widgets. private static bool ContainsWidget(UiElement node, UiElement target) @@ -104,8 +356,6 @@ public static class CharacterStatController return false; } - private const float LineHeight = 18f; - private static void Label(ImportedLayout layout, uint id, UiDatFont? datFont, Vector4 color, Func text) { if (layout.FindElement(id) is UiText t) @@ -116,24 +366,4 @@ public static class CharacterStatController t.LinesProvider = () => new[] { new UiText.Line(text(), color) }; } } - - /// - /// The six innate attributes in canonical AC panel order - /// (Strength, Endurance, Coordination, Quickness, Focus, Self), preceded by a gold header. - /// - private static IReadOnlyList AttributeRows(CharacterSheet s) - => new List - { - new("Attributes", Gold), - new(string.Empty, Body), - Row("Strength", s.Strength), - Row("Endurance", s.Endurance), - Row("Coordination", s.Coordination), - Row("Quickness", s.Quickness), - Row("Focus", s.Focus), - Row("Self", s.Self), - }; - - private static UiText.Line Row(string name, int value) - => new($"{name,-13}{value,4}", Body); } diff --git a/src/AcDream.App/UI/UiText.cs b/src/AcDream.App/UI/UiText.cs index c89f4ae7..6e7222ab 100644 --- a/src/AcDream.App/UI/UiText.cs +++ b/src/AcDream.App/UI/UiText.cs @@ -71,6 +71,13 @@ public sealed class UiText : UiElement /// after the rewire. Pair with ClickThrough = true for non-interactive labels. public bool Centered { get; set; } + /// Static right-aligned single-line mode: draws the FIRST line right-justified + /// within the element rect, vertically centered, with NO scroll/selection machinery. + /// Used for value labels in attribute/skill rows where the number must hug the right edge. + /// Mutually exclusive with — if both are true, Centered takes + /// precedence. Pair with ClickThrough = true for non-interactive labels. + public bool RightAligned { get; set; } + /// The scroll model — also read by the linked UiScrollbar. public UiScrollable Scroll { get; } = new(); @@ -153,6 +160,28 @@ public sealed class UiText : UiElement return; } + // Static right-aligned single-line mode: draw the first line flush with the right + // edge, vertically centered, then skip the scroll/selection machinery. + if (RightAligned) + { + var rLines = LinesProvider(); + if (rLines.Count == 0) return; + var line0 = rLines[0]; + if (DatFont is { } rdf) + { + float rx = Width - rdf.MeasureWidth(line0.Text) - Padding; + float ry = (Height - rdf.LineHeight) * 0.5f; + ctx.DrawStringDat(rdf, line0.Text, rx, ry, line0.Color); + } + else if ((Font ?? ctx.DefaultFont) is { } rbf) + { + float rx = Width - rbf.MeasureWidth(line0.Text) - Padding; + float ry = (Height - rbf.LineHeight) * 0.5f; + ctx.DrawString(line0.Text, rx, ry, line0.Color, rbf); + } + return; + } + // Prefer the retail dat font when set; fall back to BitmapFont. var datFont = DatFont; var bitmapFont = datFont is null ? (Font ?? ctx.DefaultFont) : null; diff --git a/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs b/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs index 70faab1a..58152ca6 100644 --- a/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs +++ b/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs @@ -6,8 +6,8 @@ namespace AcDream.App.Tests.UI.Layout; /// /// Unit tests for — the Attributes-tab controller that -/// binds the REAL importer-mounted header + list elements (no created overlay). Pure data -/// wiring against fake layouts; no dats, no GL. +/// binds the REAL importer-mounted header + 9-row list + footer elements (no created overlay). +/// Pure data wiring against fake layouts; no dats, no GL. /// public class CharacterStatControllerTests { @@ -64,26 +64,231 @@ public class CharacterStatControllerTests Assert.True(System.MathF.Abs(fill!.Value - 0.63f) < 0.001f, $"expected ~0.63, got {fill}"); } - // ── Attribute list ─────────────────────────────────────────────────────── + // ── Attribute list — 9 rows in list box 0x1000023D ─────────────────────── + /// Bind adds exactly 9 UiPanel row containers to the list box. [Fact] - public void Bind_PopulatesAttributeList() + public void Bind_AttributeList_Has9Rows() { - var list = new UiPanel(); + var list = new UiPanel(); var layout = Fake((CharacterStatController.ListBoxId, list)); CharacterStatController.Bind(layout, SampleData.SampleCharacter); - var rows = list.Children.OfType().First(); - var text = string.Join("\n", rows.LinesProvider().Select(l => l.Text)); + var rows = list.Children.OfType().ToList(); + Assert.Equal(9, rows.Count); + } - Assert.Contains("Strength", text); - Assert.Contains("Endurance", text); - Assert.Contains("Coordination", text); - Assert.Contains("Quickness", text); - Assert.Contains("Focus", text); - Assert.Contains("Self", text); - Assert.Contains("100", text); + /// + /// Every row must have a right-aligned value UiText child (the last UiText in + /// the row), confirming the RightAligned path was wired. + /// + [Fact] + public void Bind_AttributeList_EachRowHasRightAlignedValueLabel() + { + var list = new UiPanel(); + var layout = Fake((CharacterStatController.ListBoxId, list)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + var rows = list.Children.OfType().ToList(); + Assert.Equal(9, rows.Count); + foreach (var row in rows) + { + // Last UiText in each row is the value (right-aligned). + var texts = row.Children.OfType().ToList(); + Assert.True(texts.Count >= 2, "each row must have at least name + value UiText"); + var valueEl = texts[^1]; // last = value + Assert.True(valueEl.RightAligned, "value label must be RightAligned"); + } + } + + /// + /// Retail display order: Strength, Endurance, Coordination, Quickness, Focus, Self, + /// Health, Stamina, Mana (spec §1). Name is the SECOND UiText child of each row. + /// + [Fact] + public void Bind_AttributeList_RowNamesInRetailOrder() + { + var list = new UiPanel(); + var layout = Fake((CharacterStatController.ListBoxId, list)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + var rows = list.Children.OfType().ToList(); + Assert.Equal(9, rows.Count); + + string[] expectedNames = + { + "Strength", "Endurance", "Coordination", "Quickness", "Focus", "Self", + "Health", "Stamina", "Mana", + }; + + for (int i = 0; i < 9; i++) + { + // Name UiText = second UiText in the row (after the icon UiText). + var texts = rows[i].Children.OfType().ToList(); + Assert.True(texts.Count >= 2, $"row {i} must have name + value"); + string rowName = texts[1].LinesProvider()[0].Text; // index 1 = name (0 = icon) + Assert.Equal(expectedNames[i], rowName); + } + } + + /// + /// Attribute row values are plain integers; vital row values are "cur/max". + /// Validates against SampleData fixture: Str=200, Quick=200, rest=10; + /// Health=5/5, Stamina=10/10, Mana=10/10. + /// + [Fact] + public void Bind_AttributeList_RowValues_AttributeIntegersAndVitalsCurMax() + { + var list = new UiPanel(); + var layout = Fake((CharacterStatController.ListBoxId, list)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + var rows = list.Children.OfType().ToList(); + + // Helper: value text is the last UiText in the row. + string ValueOf(UiPanel row) => row.Children.OfType().ToList()[^1].LinesProvider()[0].Text; + + // Attribute rows 0-5. + Assert.Equal("200", ValueOf(rows[0])); // Strength + Assert.Equal("10", ValueOf(rows[1])); // Endurance + Assert.Equal("10", ValueOf(rows[2])); // Coordination + Assert.Equal("200", ValueOf(rows[3])); // Quickness + Assert.Equal("10", ValueOf(rows[4])); // Focus + Assert.Equal("10", ValueOf(rows[5])); // Self + + // Vital rows 6-8: "cur/max" format. + Assert.Equal("5/5", ValueOf(rows[6])); // Health + Assert.Equal("10/10", ValueOf(rows[7])); // Stamina + Assert.Equal("10/10", ValueOf(rows[8])); // Mana + } + + /// + /// When spriteResolve is provided the icon UiText must have BackgroundSprite set + /// to the correct DataID; when null the BackgroundSprite must be 0. + /// + [Fact] + public void Bind_AttributeList_IconHasBackgroundSpriteWhenResolverProvided() + { + var list = new UiPanel(); + var layout = Fake((CharacterStatController.ListBoxId, list)); + + // Non-null resolver — just returns a fake handle for any id. + CharacterStatController.Bind(layout, SampleData.SampleCharacter, + spriteResolve: id => (id, 16, 16)); // fake: handle == id + + var rows = list.Children.OfType().ToList(); + Assert.Equal(9, rows.Count); + + // First icon = Strength row; expected DataID 0x060002C8. + var iconEl = rows[0].Children.OfType().First(); + Assert.Equal(0x060002C8u, iconEl.BackgroundSprite); + + // Vital (Health) = row 6; expected DataID 0x06004C3B. + var healthIcon = rows[6].Children.OfType().First(); + Assert.Equal(0x06004C3Bu, healthIcon.BackgroundSprite); + } + + [Fact] + public void Bind_AttributeList_IconBackgroundSprite_ZeroWhenNoResolver() + { + var list = new UiPanel(); + var layout = Fake((CharacterStatController.ListBoxId, list)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter, spriteResolve: null); + + var rows = list.Children.OfType().ToList(); + Assert.Equal(9, rows.Count); + foreach (var row in rows) + { + var iconEl = row.Children.OfType().First(); + Assert.Equal(0u, iconEl.BackgroundSprite); + } + } + + // ── Footer State A ──────────────────────────────────────────────────────── + + [Fact] + public void Bind_FooterStateA_TitleEmpty() + { + var title = new UiText(); + var layout = Fake((CharacterStatController.FooterTitleId, title)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + Assert.Equal(string.Empty, title.LinesProvider()[0].Text); + } + + [Fact] + public void Bind_FooterStateA_Line1LabelEmpty() + { + var lbl = new UiText(); + var layout = Fake((CharacterStatController.FooterLine1Label, lbl)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + Assert.Equal(string.Empty, lbl.LinesProvider()[0].Text); + } + + [Fact] + public void Bind_FooterStateA_Line1ValueIsSelectPrompt() + { + var val = new UiText(); + var layout = Fake((CharacterStatController.FooterLine1Value, val)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + Assert.Equal("Select an Attribute to Improve", val.LinesProvider()[0].Text); + } + + [Fact] + public void Bind_FooterStateA_Line2LabelEmpty() + { + var lbl = new UiText(); + var layout = Fake((CharacterStatController.FooterLine2Label, lbl)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + Assert.Equal(string.Empty, lbl.LinesProvider()[0].Text); + } + + [Fact] + public void Bind_FooterStateA_Line2ValueIsSkillCredits() + { + var val = new UiText(); + var layout = Fake((CharacterStatController.FooterLine2Value, val)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + // SampleData.SampleCharacter().SkillCredits == 96 + Assert.Equal("96", val.LinesProvider()[0].Text); + } + + // ── SkillCredits propagation through SampleData ─────────────────────────── + + [Fact] + public void SampleCharacter_SkillCredits_Is96() + { + Assert.Equal(96, SampleData.SampleCharacter().SkillCredits); + } + + // ── UiText.RightAligned — unit-level draw mode flag ────────────────────── + + [Fact] + public void UiText_RightAligned_DefaultFalse() + { + var t = new UiText(); + Assert.False(t.RightAligned); + } + + [Fact] + public void UiText_RightAligned_CanBeSetTrue() + { + var t = new UiText { RightAligned = true }; + Assert.True(t.RightAligned); } // ── Robustness: a partial layout (missing ids) must not throw ──────────── From eccacc59dedab4f4449b19c47fdb34e261c0f468 Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 25 Jun 2026 21:19:45 +0200 Subject: [PATCH 32/51] =?UTF-8?q?fix(D.2b):=20Attributes=20tab=20=E2=80=94?= =?UTF-8?q?=20fill=20panel=20height,=20center=20row=20icons,=20footer=20at?= =?UTF-8?q?=20bottom?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Root cause: the sub-layout 0x2100002C (design H=337px) mounted into tab slot 0x1000022B (H=575px) via ShouldMountBaseChildren. ElementReader.Merge takes the derived (sub-layout) H=337 as canonical, so the background element's first ApplyAnchor call captured _amB=238 and the list box captured _amB=65 — both stayed at their 337px-parent sizes even though the slot is 575px. Fix: CascadeHeight in LayoutImporter.Resolve mirrors retail's UIElement::UpdateForParentSizeChange. When ShouldMountBaseChildren fires and the slot is taller than the base design, every full-stretch background child has its height cascaded: Top+Bottom anchors → stretch, Bottom-only → pin-to-bottom, Top-only/None → unchanged. This propagates the correct bottom margins through the entire subtree before the first render frame. Layout result (confirmed via headless screenshot): - List box grows from 160px → 398px (9 rows × 44px ≈ 396px) - Footer elements move from abs Y≈307 → abs Y≈545 (matching retail dump) - Separator moves to abs Y≈535 Row constants updated: RowHeight 44px, IconSize 24px, RowPadX 4px, IconGap 6px. Footer State-A text corrected per spec: title="Select an Attribute to Improve", line-1 label="Skill Credits Available:", line-1 value=SkillCredits (96), line-2 label="Unassigned Experience:", line-2 value=UnassignedXp (formatted N0). CharacterSheet.UnassignedXp (long, retail InqInt64(2)) added. SampleData.SampleCharacter().UnassignedXp = 87_757_321_741L. 5 footer tests renamed + assertions updated; SampleCharacter_UnassignedXp_IsSet added. 639 tests green. Co-Authored-By: Claude Sonnet 4.6 --- src/AcDream.App/Studio/FixtureProvider.cs | 1 + src/AcDream.App/Studio/SampleData.cs | 3 + src/AcDream.App/UI/Layout/CharacterSheet.cs | 9 +- .../UI/Layout/CharacterStatController.cs | 57 +++++++----- src/AcDream.App/UI/Layout/LayoutImporter.cs | 93 +++++++++++++++++++ .../UI/Layout/CharacterStatControllerTests.cs | 65 +++++++------ 6 files changed, 178 insertions(+), 50 deletions(-) diff --git a/src/AcDream.App/Studio/FixtureProvider.cs b/src/AcDream.App/Studio/FixtureProvider.cs index bf0e6fbd..d2d537a7 100644 --- a/src/AcDream.App/Studio/FixtureProvider.cs +++ b/src/AcDream.App/Studio/FixtureProvider.cs @@ -152,4 +152,5 @@ public static class FixtureProvider var (handle, _, _) = stack.ResolveChrome(iconId); return handle; }; + } diff --git a/src/AcDream.App/Studio/SampleData.cs b/src/AcDream.App/Studio/SampleData.cs index 0877285f..de4a9eb9 100644 --- a/src/AcDream.App/Studio/SampleData.cs +++ b/src/AcDream.App/Studio/SampleData.cs @@ -157,6 +157,9 @@ public static class SampleData // Available skill credits (retail InqInt(0x18)); shown in Attributes tab footer State-A. SkillCredits = 96, + // Unassigned (banked) XP (retail InqInt64(2)); footer State-A line-2 value. + UnassignedXp = 87_757_321_741L, + AugmentationName = "Swords", BurdenCurrent = 1200, diff --git a/src/AcDream.App/UI/Layout/CharacterSheet.cs b/src/AcDream.App/UI/Layout/CharacterSheet.cs index a562fd47..4fe1c657 100644 --- a/src/AcDream.App/UI/Layout/CharacterSheet.cs +++ b/src/AcDream.App/UI/Layout/CharacterSheet.cs @@ -94,10 +94,17 @@ public sealed class CharacterSheet /// /// Available (unspent) skill credits shown in the Attributes tab footer State-A. /// Retail InqInt(0x18) — gmStatManagementUI::DisplayDefaultFooter (0x0049cde0). - /// Element 0x10000245 (footer line-2 value). + /// Element 0x10000243 (footer line-1 value in the studio's 3-line layout). /// public int SkillCredits { get; init; } + /// + /// Unassigned (banked) experience points. + /// Retail InqInt64(2) — shown in footer line-2 in State-A display. + /// Element 0x10000245 (footer line-2 value). + /// + public long UnassignedXp { get; init; } + // ── Augmentations (UpdateAugmentations 0x004b9000) ───────────────────── // Retail InqInt(0x162) = AugmentationStat; string-switch 1..0xb. diff --git a/src/AcDream.App/UI/Layout/CharacterStatController.cs b/src/AcDream.App/UI/Layout/CharacterStatController.cs index d507af08..310707d6 100644 --- a/src/AcDream.App/UI/Layout/CharacterStatController.cs +++ b/src/AcDream.App/UI/Layout/CharacterStatController.cs @@ -55,11 +55,14 @@ public static class CharacterStatController private static readonly Vector4 Gold = new(1f, 0.82f, 0.36f, 1f); // section / emphasis gold // ── Row layout constants ───────────────────────────────────────────────── - // Row height matches retail's UIElement_ListBox template (~20px; spec §1 "each ~20px tall"). - private const float RowHeight = 20f; - private const float IconSize = 16f; // icon element is ~16×16px (spec §Goal) - private const float RowPadX = 2f; // left inset before the icon - private const float IconGap = 4f; // gap between icon right and name text left + // List box 0x1000023D is 398px tall after the anchor pass (dat stores 160px; the + // Top+Bottom anchor stretches it when the 575px content slot inflates the sub-layout). + // 9 rows spread evenly over 398px ≈ 44px/row — matching retail's generous spacing. + // Icons are 24px, vertically centered in the row. + private const float RowHeight = 44f; + private const float IconSize = 24f; // icon ~24×24px, vertically centered in the 44px row + private const float RowPadX = 4f; // left inset before the icon + private const float IconGap = 6f; // gap between icon right and name text left // ── Attribute row descriptors — retail display order per spec §1 ───────── // InfoRegion::InfoRegion row sub-element ids: @@ -316,32 +319,44 @@ public static class CharacterStatController // ── Footer State A binding ──────────────────────────────────────────────── /// - /// Bind footer elements to their State-A (nothing selected) content per - /// DisplayDefaultFooter (0x0049cde0). Only the two "value" slots carry - /// text; the label slots are left empty (retail sets them to "" for State A). + /// Bind footer elements to their State-A (nothing selected) content. + /// + /// Matching the user's authoritative shot layout (3-line footer at the panel bottom): + /// + /// Title (0x1000024e) → "Select an Attribute to Improve" — centered, full-width. + /// Line-1 label (0x10000242) → "Skill Credits Available:" + /// Line-1 value (0x10000243) → InqInt(0x18) = available skill credits. + /// Line-2 label (0x10000244) → "Unassigned Experience:" + /// Line-2 value (0x10000245) → InqInt64(2) = unassigned XP. + /// + /// + /// + /// Source: DisplayDefaultFooter (0x0049cde0) + user's retail screenshot. /// private static void BindFooterStateA( ImportedLayout layout, UiDatFont? datFont, Func data) { - // 0x1000024e title → "" - Label(layout, FooterTitleId, datFont, Body, static () => string.Empty); - - // 0x10000242 line-1 label → "" - Label(layout, FooterLine1Label, datFont, Body, static () => string.Empty); - - // 0x10000243 line-1 value → "Select an Attribute to Improve" - // StringId "ID_StatManagement_Footer_SelectAttribute" - Label(layout, FooterLine1Value, datFont, Body, + // 0x1000024e title → "Select an Attribute to Improve" + Label(layout, FooterTitleId, datFont, Body, static () => "Select an Attribute to Improve"); - // 0x10000244 line-2 label → "" - Label(layout, FooterLine2Label, datFont, Body, static () => string.Empty); + // 0x10000242 line-1 label → "Skill Credits Available:" + Label(layout, FooterLine1Label, datFont, Body, + static () => "Skill Credits Available:"); - // 0x10000245 line-2 value → InqInt(0x18) = available skill credits - Label(layout, FooterLine2Value, datFont, Body, + // 0x10000243 line-1 value → InqInt(0x18) = available skill credits + Label(layout, FooterLine1Value, datFont, Body, () => data().SkillCredits.ToString()); + + // 0x10000244 line-2 label → "Unassigned Experience:" + Label(layout, FooterLine2Label, datFont, Body, + static () => "Unassigned Experience:"); + + // 0x10000245 line-2 value → InqInt64(2) = unassigned XP + Label(layout, FooterLine2Value, datFont, Body, + () => data().UnassignedXp.ToString("N0")); } // ── Helpers ────────────────────────────────────────────────────────────── diff --git a/src/AcDream.App/UI/Layout/LayoutImporter.cs b/src/AcDream.App/UI/Layout/LayoutImporter.cs index 0a63d5dd..8859f25f 100644 --- a/src/AcDream.App/UI/Layout/LayoutImporter.cs +++ b/src/AcDream.App/UI/Layout/LayoutImporter.cs @@ -255,6 +255,43 @@ public static class LayoutImporter // ZLevel 0 so it escaped). Restore the slot's own frame-layer so the panel sits in // FRONT of the backdrop. (B-Controller debug 2026-06-21; continuation of #145.) result.ZLevel = self.ZLevel; + + // Sub-layout slot sizing: when a sub-layout is mounted into a slot that is TALLER + // (or wider) than the sub-layout's own design height, the cascade of Bottom/Right + // anchored elements must be resized to fill the slot. Without this step, the + // background element (0x10000226 for the Attributes tab, designed at 337px) captures + // _amB = slotH - designH = 238 and permanently stays at 337px, and every element + // within it with Bottom anchor stays at its design size too (list box at 160px + // instead of the correct 398px). + // + // Retail reference: UIElement::UpdateForParentSizeChange (C++ runtime) propagates a + // new parent height down the whole tree, updating each Bottom-anchored child's + // rect by maintaining its bottom margin. We replicate that cascade here at import + // time on the base-children subtree so the anchor-capture during the first render + // frame sees zero (or unchanged) margins — not the spurious "slot bigger than design" + // margin. + // + // Safe guard: only fire when the slot has explicit size AND the base children are + // smaller (i.e., this is the "slot bigger than design" case). + // Inventory/paperdoll slots are unaffected because their slot H already matches the + // sub-layout design H, so no cascade occurs. + if (result.Width > 0 && result.Height > 0) + { + foreach (var child in baseChildren) + { + var childAnchors = ElementReader.ToAnchors(child.Left, child.Top, child.Right, child.Bottom); + const AnchorEdges StretchAll = AnchorEdges.Left | AnchorEdges.Top | AnchorEdges.Right | AnchorEdges.Bottom; + if (child.X == 0 && child.Y == 0 + && (childAnchors & StretchAll) == StretchAll // full-stretch background + && child.Width <= result.Width + && child.Height > 0 && child.Height < result.Height) // smaller than slot + { + // Cascade UpdateForParentSizeChange down the subtree: maintain each + // Bottom-anchored element's bottom margin while growing the parent height. + CascadeHeight(child, child.Height, result.Height); + } + } + } } return result; @@ -384,4 +421,60 @@ public static class LayoutImporter } return null; } + + // ── Sub-layout slot sizing helpers ──────────────────────────────────────── + + /// + /// Recursively propagates a parent-height change from + /// to through and all its + /// descendants, replicating UIElement::UpdateForParentSizeChange from the + /// retail runtime. + /// + /// Three anchor cases for the vertical axis: + /// + /// Top+Bottom (stretch): maintain top margin AND bottom margin; height grows. + /// Bottom only (pin-to-bottom, fixed height): maintain bottom margin; Y moves, H unchanged. + /// Top only or None: Y and H unchanged (pinned to top with fixed height). + /// + /// Recurse with the element's new height so grandchildren see the correct parent size. + /// + /// This is called once at import time on base-children that are mounted into a + /// slot taller than the sub-layout's design height. + /// + private static void CascadeHeight(ElementInfo el, float oldParentH, float newParentH) + { + float oldH = el.Height; + float newH = el.Height; + float oldY = el.Y; + + var anchors = ElementReader.ToAnchors(el.Left, el.Top, el.Right, el.Bottom); + + bool hasTop = (anchors & AnchorEdges.Top) != 0; + bool hasBottom = (anchors & AnchorEdges.Bottom) != 0; + + if (hasTop && hasBottom) + { + // Stretch: maintain both top and bottom margins. + // amT = el.Y (pinned to top, unchanged) + // amB = oldParentH - (el.Y + el.H) + float amB = oldParentH - (el.Y + el.Height); + newH = newParentH - el.Y - amB; + if (newH < 0f) newH = 0f; + el.Height = newH; + } + else if (hasBottom && !hasTop) + { + // Pin to bottom: maintain bottom margin, height fixed, Y moves. + // amB = oldParentH - (el.Y + el.H) + float amB = oldParentH - (el.Y + el.Height); + float newY = newParentH - amB - el.Height; + el.Y = newY; + // Height unchanged; newH = oldH for recursion. + } + // else: Top-only or None — element is top-pinned with fixed height; nothing moves. + + // Recurse into children with the element's new height as their parent. + foreach (var child in el.Children) + CascadeHeight(child, oldH, newH); + } } diff --git a/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs b/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs index 58152ca6..d1d66107 100644 --- a/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs +++ b/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs @@ -212,62 +212,65 @@ public class CharacterStatControllerTests // ── Footer State A ──────────────────────────────────────────────────────── [Fact] - public void Bind_FooterStateA_TitleEmpty() + public void Bind_FooterStateA_TitleIsSelectPrompt() { var title = new UiText(); var layout = Fake((CharacterStatController.FooterTitleId, title)); CharacterStatController.Bind(layout, SampleData.SampleCharacter); - Assert.Equal(string.Empty, title.LinesProvider()[0].Text); + Assert.Equal("Select an Attribute to Improve", title.LinesProvider()[0].Text); } [Fact] - public void Bind_FooterStateA_Line1LabelEmpty() + public void Bind_FooterStateA_Line1LabelIsSkillCreditsAvailable() { var lbl = new UiText(); var layout = Fake((CharacterStatController.FooterLine1Label, lbl)); CharacterStatController.Bind(layout, SampleData.SampleCharacter); - Assert.Equal(string.Empty, lbl.LinesProvider()[0].Text); + Assert.Equal("Skill Credits Available:", lbl.LinesProvider()[0].Text); } [Fact] - public void Bind_FooterStateA_Line1ValueIsSelectPrompt() + public void Bind_FooterStateA_Line1ValueIsSkillCredits() { var val = new UiText(); var layout = Fake((CharacterStatController.FooterLine1Value, val)); CharacterStatController.Bind(layout, SampleData.SampleCharacter); - Assert.Equal("Select an Attribute to Improve", val.LinesProvider()[0].Text); - } - - [Fact] - public void Bind_FooterStateA_Line2LabelEmpty() - { - var lbl = new UiText(); - var layout = Fake((CharacterStatController.FooterLine2Label, lbl)); - - CharacterStatController.Bind(layout, SampleData.SampleCharacter); - - Assert.Equal(string.Empty, lbl.LinesProvider()[0].Text); - } - - [Fact] - public void Bind_FooterStateA_Line2ValueIsSkillCredits() - { - var val = new UiText(); - var layout = Fake((CharacterStatController.FooterLine2Value, val)); - - CharacterStatController.Bind(layout, SampleData.SampleCharacter); - // SampleData.SampleCharacter().SkillCredits == 96 Assert.Equal("96", val.LinesProvider()[0].Text); } - // ── SkillCredits propagation through SampleData ─────────────────────────── + [Fact] + public void Bind_FooterStateA_Line2LabelIsUnassignedExperience() + { + var lbl = new UiText(); + var layout = Fake((CharacterStatController.FooterLine2Label, lbl)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + Assert.Equal("Unassigned Experience:", lbl.LinesProvider()[0].Text); + } + + [Fact] + public void Bind_FooterStateA_Line2ValueIsUnassignedXp() + { + var val = new UiText(); + var layout = Fake((CharacterStatController.FooterLine2Value, val)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + // SampleData.SampleCharacter().UnassignedXp == 87_757_321_741 + // Formatted as "N0" with thousands separators. + var expected = (87_757_321_741L).ToString("N0"); + Assert.Equal(expected, val.LinesProvider()[0].Text); + } + + // ── SkillCredits / UnassignedXp propagation through SampleData ─────────── [Fact] public void SampleCharacter_SkillCredits_Is96() @@ -275,6 +278,12 @@ public class CharacterStatControllerTests Assert.Equal(96, SampleData.SampleCharacter().SkillCredits); } + [Fact] + public void SampleCharacter_UnassignedXp_IsSet() + { + Assert.Equal(87_757_321_741L, SampleData.SampleCharacter().UnassignedXp); + } + // ── UiText.RightAligned — unit-level draw mode flag ────────────────────── [Fact] From 21d8485053c0b95352431da1bb30cce081e08046 Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 25 Jun 2026 21:32:00 +0200 Subject: [PATCH 33/51] feat(studio): forward canvas mouse to the previewed panel (interactive preview) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Canvas clicks now reach the panel UiHost so buttons, tabs, and slots respond to user interaction. Previously only UiRoot.Pick (inspector selection) received click events; the panel itself was inert. Key changes: - StudioInspector.DrawCanvas now returns a CanvasInputEvent struct (was nullable click tuple) — carries isHovered, move position, leftDown/Up, and scroll delta, all in panel-local pixels. - Coordinate mapping: panel_local = mouse_screen - GetItemRectMin() (1:1, no scale factor). V-flip (uv0.Y=1, uv1.Y=0) makes screen top = panel Y=0, so NO extra Y inversion. Documented in comments. - StudioWindow.OnLoad: removed WireMouse — raw Silk window coords are offset by the canvas sub-window position and land in the wrong place. WireKeyboard kept (keyboard input needs no spatial remapping). - StudioWindow.OnRender: forwards OnMouseMove always (hover states), plus OnMouseDown/Up/OnScroll in Interact mode. Console.WriteLine on each forwarded left-click for live verification. - Interact/Inspect toggle: checkbox in the Studio toolbar (default Interact). Inspect mode restores old click-to-select-element behavior while still forwarding OnMouseMove for hover states. - CanvasCoordMappingTests: 7 pure-math unit tests covering the origin, interior points, corner, chrome OOB, and the no-extra-flip invariant (no GL required). Co-Authored-By: Claude Sonnet 4.6 --- src/AcDream.App/Studio/StudioInspector.cs | 161 ++++++++++++------ src/AcDream.App/Studio/StudioWindow.cs | 63 +++++-- .../Studio/CanvasCoordMappingTests.cs | 118 +++++++++++++ 3 files changed, 280 insertions(+), 62 deletions(-) create mode 100644 tests/AcDream.App.Tests/Studio/CanvasCoordMappingTests.cs diff --git a/src/AcDream.App/Studio/StudioInspector.cs b/src/AcDream.App/Studio/StudioInspector.cs index c8a85b9a..26e6dc0d 100644 --- a/src/AcDream.App/Studio/StudioInspector.cs +++ b/src/AcDream.App/Studio/StudioInspector.cs @@ -4,49 +4,88 @@ using ImGuiNET; namespace AcDream.App.Studio; +/// +/// All canvas mouse events gathered by in one frame. +/// All coordinates are already mapped to panel-local pixels (origin top-left, same as UiRoot). +/// +public readonly struct CanvasInputEvent +{ + /// Mouse is currently hovering the canvas image. When false all other fields are 0 / false. + public readonly bool IsHovered; + /// Panel-local pixel coordinate of the mouse this frame (valid when ). + public readonly int MouseX; + /// Panel-local pixel coordinate of the mouse this frame (valid when ). + public readonly int MouseY; + /// Left-button went down this frame. + public readonly bool LeftDown; + /// Left-button came up this frame. + public readonly bool LeftUp; + /// Mouse-wheel scroll delta (lines, positive = up). Zero when no scroll. + public readonly int ScrollDelta; + + public CanvasInputEvent(bool hovered, int mx, int my, bool ld, bool lu, int scroll) + { + IsHovered = hovered; + MouseX = mx; + MouseY = my; + LeftDown = ld; + LeftUp = lu; + ScrollDelta = scroll; + } +} + /// /// Four-pane ImGui IDE for the acdream UI Studio: /// /// Toolbar — panel picker (slug combo) across the top. -/// Canvas — shows the panel FBO texture; click-to-inspect returns the -/// panel-local pixel coordinate of the click; draws a green outline over -/// . +/// Canvas — shows the panel FBO texture; in Interact mode mouse events +/// are forwarded to the panel UiHost (buttons/tabs respond); in Inspect mode a +/// left-click hit-tests and selects the element under the cursor. /// Tree — recursive ImGui tree of the element hierarchy; clicking a node /// sets . /// Properties — shows the element's geometry, /// anchors, and z-order. /// /// -/// Coordinate mapping for the canvas: -/// The FBO is rendered at the same logical size as the window, so a click at image-local -/// pixel (ix, iy) maps directly to panel coord (ix, iy) — no scale factor needed when -/// the image is drawn 1:1. We draw it 1:1 if it fits; if the Canvas ImGui window is -/// smaller we let ImGui clip it (the click coordinates are still image-local pixels so -/// no scale correction is needed in v1). +/// Coordinate mapping for the canvas: +/// The FBO is rendered at the full window size and displayed 1:1 inside the Canvas ImGui +/// sub-window. After ImGui.Image we call ImGui.GetItemRectMin() to get the +/// screen-space top-left of the drawn image (accounting for the sub-window's title bar, +/// padding, and any scrolling). Subtracting that from the raw mouse screen position gives +/// panel-local pixels directly — no additional scale factor is needed because the image is +/// drawn 1:1. /// -/// V-flip: the FBO origin is bottom-left (GL convention), but ImGui images use -/// top-left. We pass uv0=(0,1), uv1=(1,0) to ImGui.Image, which flips V so -/// the panel renders right-side-up in the canvas. Because V is flipped, image-local -/// pixel y = 0 is the TOP of the panel, matching the UiRoot's top-left origin — so -/// click y maps directly without further inversion. +/// V-flip — no extra Y inversion needed: +/// The FBO origin is bottom-left (GL convention), so we pass uv0=(0,1), uv1=(1,0) to +/// ImGui.Image to flip V. After this flip, displayed row 0 (top of the image on +/// screen) corresponds to panel Y=0 (the top of the UI panel), matching UiRoot's +/// top-left origin. Therefore the panel-local Y computed above maps directly into UiRoot +/// without further inversion — do NOT flip Y again. /// -/// Layout: / / -/// / each call -/// SetNextWindowPos + SetNextWindowSize with -/// ImGuiCond.FirstUseEver so the panes start in a docked-style arrangement -/// that the user can freely drag from. +/// Layout: the four panes call SetNextWindowPos + SetNextWindowSize +/// with ImGuiCond.FirstUseEver so they start docked but can be freely dragged. /// public sealed class StudioInspector { - /// Currently selected element (set by tree-click or canvas-click). + /// Currently selected element (set by tree-click or canvas-click in Inspect mode). public UiElement? Selected { get; set; } + /// + /// When true (default) canvas mouse events are forwarded to the panel UiHost so elements + /// respond to clicks. When false a canvas click hit-tests and selects an element in the + /// inspector tree instead. Toggle via the "Interact / Inspect" checkbox in the toolbar. + /// + public bool InteractMode { get; set; } = true; + // ── Toolbar ─────────────────────────────────────────────────────────────────── /// - /// Draw the "Studio" toolbar window (top strip) containing a slug combo-box. - /// Returns the newly-selected slug when the user picks a different panel, or - /// null when the selection is unchanged. + /// Draw the "Studio" toolbar window (top strip) containing a slug combo-box and + /// the Interact / Inspect mode toggle. Returns the newly-selected slug when the + /// user picks a different panel, or null when unchanged. + /// The mode toggle sets : checked = Interact (panel + /// elements respond to clicks), unchecked = Inspect (clicks select elements in the + /// tree). /// /// All available panel slugs (from UiDumpModel.ListSlugs). /// The slug of the panel currently loaded. @@ -74,6 +113,13 @@ public sealed class StudioInspector ImGui.EndCombo(); } + ImGui.SameLine(); + bool interact = InteractMode; + if (ImGui.Checkbox("Interact", ref interact)) + InteractMode = interact; + if (ImGui.IsItemHovered()) + ImGui.SetTooltip("Interact: canvas clicks reach the panel (buttons/tabs respond).\nUncheck to Inspect: clicks select elements in the tree."); + ImGui.End(); return result; } @@ -81,20 +127,24 @@ public sealed class StudioInspector // ── Canvas ──────────────────────────────────────────────────────────────────── /// - /// Draw the "Canvas" ImGui window containing the panel FBO texture. - /// If the user left-clicks inside the image, returns the panel-local pixel - /// coordinate of the click (origin top-left, matching UiRoot's space); else null. + /// Draw the "Canvas" ImGui window containing the panel FBO texture and return all + /// canvas mouse events for this frame as a . /// - /// The texture is drawn with uv0=(0,1) / uv1=(1,0) to flip V, correcting - /// the GL bottom-left FBO origin to the ImGui top-left convention. + /// Coordinate mapping: After ImGui.Image, GetItemRectMin() + /// returns the actual screen-space top-left of the drawn image (accounting for the + /// sub-window title bar, padding, and scrolling). Subtracting that from the raw ImGui + /// mouse position gives panel-local pixels directly — no scale factor because the + /// image is drawn 1:1. /// - /// If is non-null and has non-zero size, a bright-green - /// 2-pixel outline is drawn over the element's screen-space rect using the window - /// draw list. gives the absolute top-left in - /// root/panel space, which maps 1:1 to FBO pixels (the image is drawn 1:1 and both - /// the element tree and the FBO share the same top-left origin). + /// V-flip — no extra Y inversion: we pass uv0=(0,1) / uv1=(1,0) so the + /// GL bottom-left origin is flipped to top-left on screen. After the flip, screen + /// row 0 = panel Y 0 (top of the UI), so the computed Y already matches UiRoot's + /// top-left origin — do NOT flip Y again. + /// + /// If is non-null a bright-green 2-pixel outline is + /// drawn over it using the window draw list. /// - public (int x, int y)? DrawCanvas(nint panelTex, int width, int height, + public CanvasInputEvent DrawCanvas(nint panelTex, int width, int height, int windowX, int windowW, int windowY, int windowH) { ImGui.SetNextWindowPos(new Vector2(windowX, windowY), ImGuiCond.FirstUseEver); @@ -109,12 +159,11 @@ public sealed class StudioInspector var uv1 = new Vector2(1f, 0f); ImGui.Image(panelTex, imageSize, uv0, uv1); - // ── Selection highlight ─────────────────────────────────────────────── - // After ImGui.Image the item rect gives us the screen-space top-left of - // the drawn texture. ScreenPosition is in root/panel space (top-left origin, - // same coordinate system the FBO was drawn in), so offsetting by rectMin - // converts directly to screen space for the draw list. + // rectMin: screen-space top-left of the image AFTER ImGui.Image + any chrome offset. + // This is what lets us translate raw mouse screen coords into panel-local pixels. var rectMin = ImGui.GetItemRectMin(); + + // ── Selection highlight ─────────────────────────────────────────────── var el = Selected; if (el is not null && el.Width > 0f && el.Height > 0f) { @@ -127,25 +176,39 @@ public sealed class StudioInspector 0f, ImDrawFlags.None, 2f); } - (int x, int y)? result = null; + // ── Gather canvas mouse events ──────────────────────────────────────── + // IsItemHovered is true when the mouse is over the Image item (not just the window). + bool hovered = ImGui.IsItemHovered(); + int mx = 0, my = 0; + bool leftDown = false, leftUp = false; + int scroll = 0; - // Detect a left-click on the image. - if (ImGui.IsItemHovered() && ImGui.IsMouseClicked(ImGuiMouseButton.Left)) + if (hovered) { var mousePos = ImGui.GetMousePos(); - - // Panel-local pixel = mouse offset from image top-left. - // Because we flipped V (uv0.Y=1, uv1.Y=0), image row 0 IS the top of the panel, - // so y needs no further inversion. + // Panel-local pixel = mouse offset from the image's screen-space top-left. + // Scale is 1:1 (image drawn at full FBO size). Y needs no extra flip — see summary. int ix = (int)(mousePos.X - rectMin.X); int iy = (int)(mousePos.Y - rectMin.Y); - // Clamp to image bounds. + // Clamp to image bounds (mouse can be on the image edge pixel). if (ix >= 0 && ix < width && iy >= 0 && iy < height) - result = (ix, iy); + { + mx = ix; + my = iy; + leftDown = ImGui.IsMouseClicked(ImGuiMouseButton.Left); + leftUp = ImGui.IsMouseReleased(ImGuiMouseButton.Left); + float wheelY = ImGui.GetIO().MouseWheel; + scroll = (int)wheelY; // positive = scroll up + } + else + { + // Mouse is over ImGui chrome (title bar, padding) adjacent to image — not over the panel. + hovered = false; + } } ImGui.End(); - return result; + return new CanvasInputEvent(hovered, mx, my, leftDown, leftUp, scroll); } // ── Tree ────────────────────────────────────────────────────────────────────── diff --git a/src/AcDream.App/Studio/StudioWindow.cs b/src/AcDream.App/Studio/StudioWindow.cs index 28ac55ef..7e09df92 100644 --- a/src/AcDream.App/Studio/StudioWindow.cs +++ b/src/AcDream.App/Studio/StudioWindow.cs @@ -183,9 +183,10 @@ public sealed class StudioWindow : IDisposable if (_opts.ScreenshotPath is null) { var input = _window!.CreateInput(); - // Wire input into UiHost (interactive only). - foreach (var mouse in input.Mice) - _stack.UiHost.WireMouse(mouse); + // Wire KEYBOARD input into UiHost (keyboard coords are not spatial, so no remapping needed). + // Do NOT wire mouse here — raw Silk window coords would be offset by the canvas sub-window's + // position (tree pane width + ImGui chrome) and land in the wrong panel-local location. + // Mouse is forwarded manually from DrawCanvas with correct panel-local mapping below. foreach (var kb in input.Keyboards) _stack.UiHost.WireKeyboard(kb); _imgui = new AcDream.UI.ImGui.ImGuiBootstrapper(gl, _window!, input); @@ -319,21 +320,57 @@ public sealed class StudioWindow : IDisposable if (pickedSlug is not null) LoadDumpPanel(pickedSlug); - // 6. Canvas pane — show the FBO texture; detect clicks. - (int x, int y)? click = null; + // 6. Canvas pane — show the FBO texture; gather canvas mouse events. + var canvasEvt = default(CanvasInputEvent); if (panelTex != 0) - click = _inspector.DrawCanvas( + canvasEvt = _inspector.DrawCanvas( (nint)panelTex, iw, ih, canvasX, canvasW, paneY, paneH); - // 7. If the user clicked inside the canvas, hit-test the whole UI tree (UiRoot.Pick honors - // Z-order + modal exclusivity) and select the topmost element. The canvas click coord is - // in the same root-space the FBO was drawn in, so it maps 1:1. - if (click is { } c) + // 7. Forward canvas mouse events to the panel UiHost or the inspector tree. + // + // Coordinate mapping (see StudioInspector.DrawCanvas summary): + // panel-local pixel = raw_mouse - ImGui.GetItemRectMin() (1:1 scale, no Y flip) + // The image is drawn V-flipped (uv0.Y=1, uv1.Y=0) so screen top = panel Y=0. + // + // Interact mode (default): canvas mouse events go directly to UiRoot so elements respond. + // OnMouseMove + OnMouseDown/Up + OnScroll are all forwarded. + // A Console.WriteLine confirms each forwarded left-click for live verification. + // + // Inspect mode: left-click hit-tests and selects the element in the tree (old behavior). + // OnMouseMove is still forwarded so hover/tooltip state in the panel stays live. + if (canvasEvt.IsHovered) { - var hit = _stack.UiHost.Root.Pick(c.x, c.y); - if (hit is not null) - _inspector.Selected = hit; + int mx = canvasEvt.MouseX; + int my = canvasEvt.MouseY; + var root = _stack.UiHost.Root; + + // Always forward mouse-move so hover highlights / tooltips in the panel work. + root.OnMouseMove(mx, my); + + if (_inspector.InteractMode) + { + // ── Interact: live panel interaction ────────────────────────────── + if (canvasEvt.LeftDown) + { + Console.WriteLine($"[studio] canvas click → panel ({mx}, {my})"); + root.OnMouseDown(UiMouseButton.Left, mx, my); + } + if (canvasEvt.LeftUp) + root.OnMouseUp(UiMouseButton.Left, mx, my); + if (canvasEvt.ScrollDelta != 0) + root.OnScroll(canvasEvt.ScrollDelta); + } + else + { + // ── Inspect: click selects an element in the tree ───────────────── + if (canvasEvt.LeftDown) + { + var hit = root.Pick(mx, my); + if (hit is not null) + _inspector.Selected = hit; + } + } } // 8. Element tree pane. diff --git a/tests/AcDream.App.Tests/Studio/CanvasCoordMappingTests.cs b/tests/AcDream.App.Tests/Studio/CanvasCoordMappingTests.cs new file mode 100644 index 00000000..9d007bf3 --- /dev/null +++ b/tests/AcDream.App.Tests/Studio/CanvasCoordMappingTests.cs @@ -0,0 +1,118 @@ +using AcDream.App.Studio; + +namespace AcDream.App.Tests.Studio; + +/// +/// Pure-math tests for the canvas → panel-local coordinate mapping used by +/// . +/// +/// No GL context required — we're just verifying the formula: +/// panel_local = (raw_mouse_screen) - (image_screen_top_left) +/// +/// The image_screen_top_left is what ImGui.GetItemRectMin() returns after +/// ImGui.Image: the sub-window top-left + title-bar height + inner padding + any +/// scrolling. We model it as a constant offset in these tests. +/// +/// V-flip: the image is drawn with uv0=(0,1) / uv1=(1,0) so GL's bottom-left +/// origin is flipped to top-left on screen. After the flip, screen Y=0 (top of image) +/// = panel Y=0 (top of the UI), so NO additional Y inversion is applied. +/// +public class CanvasCoordMappingTests +{ + // Simulates the mapping DrawCanvas performs: + // panel pixel = mouse_screen - image_rectMin + // Returns null when the result falls outside [0, width) x [0, height). + private static (int px, int py)? Map( + float mouseScreenX, float mouseScreenY, + float imageOriginX, float imageOriginY, + int panelWidth, int panelHeight) + { + int ix = (int)(mouseScreenX - imageOriginX); + int iy = (int)(mouseScreenY - imageOriginY); + if (ix < 0 || ix >= panelWidth || iy < 0 || iy >= panelHeight) + return null; + return (ix, iy); + } + + [Fact] + public void TopLeft_of_image_maps_to_panel_origin() + { + // The canvas image starts at screen (300, 50) (after sub-window chrome). + // A click exactly at the image's screen top-left → panel (0, 0). + var result = Map(mouseScreenX: 300f, mouseScreenY: 50f, + imageOriginX: 300f, imageOriginY: 50f, + panelWidth: 1280, panelHeight: 720); + Assert.Equal((0, 0), result); + } + + [Fact] + public void Interior_point_maps_correctly() + { + // Image origin at screen (300, 50). Mouse at screen (780, 230). + // Expected panel coord: (780-300, 230-50) = (480, 180). + var result = Map(mouseScreenX: 780f, mouseScreenY: 230f, + imageOriginX: 300f, imageOriginY: 50f, + panelWidth: 1280, panelHeight: 720); + Assert.Equal((480, 180), result); + } + + [Fact] + public void Bottom_right_corner_maps_to_last_valid_pixel() + { + // Image is 1280×720, origin at screen (300, 50). + // Last pixel in bottom-right is panel (1279, 719) → screen (1579, 769). + var result = Map(mouseScreenX: 1579f, mouseScreenY: 769f, + imageOriginX: 300f, imageOriginY: 50f, + panelWidth: 1280, panelHeight: 720); + Assert.Equal((1279, 719), result); + } + + [Fact] + public void Mouse_on_ImGui_chrome_above_image_returns_null() + { + // The ImGui window title-bar / padding is above rectMin, i.e. at screenY < 50. + // The mouse there should NOT produce a panel event. + var result = Map(mouseScreenX: 400f, mouseScreenY: 40f, // 10px above image origin + imageOriginX: 300f, imageOriginY: 50f, + panelWidth: 1280, panelHeight: 720); + Assert.Null(result); + } + + [Fact] + public void Mouse_below_image_returns_null() + { + // screenY = 50 + 720 = 770 → iy = 720 which is >= panelHeight (720). + var result = Map(mouseScreenX: 400f, mouseScreenY: 770f, + imageOriginX: 300f, imageOriginY: 50f, + panelWidth: 1280, panelHeight: 720); + Assert.Null(result); + } + + [Fact] + public void Y_is_not_inverted_after_vflip() + { + // Confirm the "no extra Y inversion" contract: + // The image is V-flipped in ImGui (uv0.Y=1, uv1.Y=0), so screen top row = panel Y=0. + // A click near the TOP of the image should give a SMALL panel Y, not a large one. + // Image origin at (300, 50). Click at (400, 55) → panel (100, 5). Y is small (near top). + var result = Map(mouseScreenX: 400f, mouseScreenY: 55f, + imageOriginX: 300f, imageOriginY: 50f, + panelWidth: 1280, panelHeight: 720); + Assert.Equal((100, 5), result); + // NOT (100, 715) — which would be the result if Y were incorrectly inverted. + Assert.True(result!.Value.py < 720 / 2, "Y near screen top should map to small panel Y, not near bottom"); + } + + [Fact] + public void LargeChrome_offset_is_fully_absorbed() + { + // Simulate a canvas sub-window with large chrome: ImGui title (20px) + padding (8px) + // puts the image origin at screenY = menuBar(22) + titleBar(20) + padding(8) = 50. + // Also a wide tree pane puts imageOriginX = 280 + padding. + // A click at screen (400, 110) with origin (290, 50) → panel (110, 60). + var result = Map(mouseScreenX: 400f, mouseScreenY: 110f, + imageOriginX: 290f, imageOriginY: 50f, + panelWidth: 1280, panelHeight: 720); + Assert.Equal((110, 60), result); + } +} From defbde1f8676df647704a0a8cecbd1bee0fd67a1 Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 25 Jun 2026 21:48:16 +0200 Subject: [PATCH 34/51] =?UTF-8?q?feat(studio):=20Attributes=20tab=20Pass?= =?UTF-8?q?=202=20=E2=80=94=20click-to-select=20(highlight=20+=20footer=20?= =?UTF-8?q?B=20+=20raise=20triangles)=20+=20tab=20states?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - UiClickablePanel: new UiPanel subclass with OnClick action + HandlesClick=true so row clicks survive whole-window-Draggable ancestor frames. - CharacterStatController overhaul (Pass 2): - Tab bar button states: SetButtonStateRecursive walks each tab group container (0x10000228/229/538) setting UiButton.ActiveState="Open" (Attributes) or "Closed" (Skills/Titles) via UIStateId enum string names from DatReaderWriter. - Row click: 9 rows become UiClickablePanel; sel[] mutable box drives footer/highlight. - Toggle: clicking the same row deselects (→ footer State A); click a new row updates title="Attrib: value", line-1 label="Experience To Raise:", line-1 value=cost, line-2="Unassigned Experience:" in both states. - Row highlight: BackgroundColor=HighlightBg (semi-translucent gold) on selected row. - Raise buttons (0x10000246 ×1 + 0x100005EB ×10): hidden initially; shown on selection with ActiveState="Normal" (affordable) or "Ghosted" (cost=0 or unaffordable). CollectButtonsById tree-walk finds ALL copies of the button across tab-page mounts (not just the last-registered _byId copy) so all instances are controlled. - CharacterSheet: AttributeRaiseCosts long[] (Strength…Mana raise costs in retail display order; cost=0 → max/disabled row demos the Ghosted button state). - SampleData.SampleCharacter: fills AttributeRaiseCosts[9] — Strength/Quickness=0 (maxed), Focus@10→110 matching the retail screenshot (spec §4). - 35 new tests (total 673 pass) covering: row click→footer B title/line1/line2, toggle deselect→footer A, switch row, highlight set/clear, raise button hidden/Normal/Ghosted/deselect, tab Open/Closed states, GetRaiseCost helper, GetRowName helper, SampleData fixture sanity. Console.WriteLine("[CharacterStat] Row click: index=N → selected=N (Name)") fires on every click for the user's live verification in the studio. Co-Authored-By: Claude Sonnet 4.6 --- src/AcDream.App/Studio/SampleData.cs | 7 + src/AcDream.App/UI/Layout/CharacterSheet.cs | 17 + .../UI/Layout/CharacterStatController.cs | 464 ++++++++++++++---- src/AcDream.App/UI/UiPanel.cs | 41 ++ .../UI/Layout/CharacterStatControllerTests.cs | 433 ++++++++++++++-- 5 files changed, 817 insertions(+), 145 deletions(-) diff --git a/src/AcDream.App/Studio/SampleData.cs b/src/AcDream.App/Studio/SampleData.cs index de4a9eb9..da094467 100644 --- a/src/AcDream.App/Studio/SampleData.cs +++ b/src/AcDream.App/Studio/SampleData.cs @@ -160,6 +160,13 @@ public static class SampleData // Unassigned (banked) XP (retail InqInt64(2)); footer State-A line-2 value. UnassignedXp = 87_757_321_741L, + // Raise costs in retail display order (Strength, Endurance, Coordination, Quickness, + // Focus, Self, Health, Stamina, Mana). + // Str@200 = maxed → 0 (disabled). Quickness@200 = maxed → 0. Others @10 → affordable. + // Focus@10 → 110 matches the authoritative retail screenshot (spec §4). + // Formula bracket at value=10: ExperienceToAttributeLevel(11) − ExperienceToAttributeLevel(10). + AttributeRaiseCosts = new long[] { 0L, 95L, 100L, 0L, 110L, 105L, 90L, 88L, 112L }, + AugmentationName = "Swords", BurdenCurrent = 1200, diff --git a/src/AcDream.App/UI/Layout/CharacterSheet.cs b/src/AcDream.App/UI/Layout/CharacterSheet.cs index 4fe1c657..b64c64eb 100644 --- a/src/AcDream.App/UI/Layout/CharacterSheet.cs +++ b/src/AcDream.App/UI/Layout/CharacterSheet.cs @@ -1,3 +1,5 @@ +using System; + namespace AcDream.App.UI.Layout; /// @@ -105,6 +107,21 @@ public sealed class CharacterSheet /// public long UnassignedXp { get; init; } + // ── Attribute raise costs (ExperienceToAttributeLevel, gmAttributeUI::PostInit) ── + // Retail formula: ExperienceToAttributeLevel(value + 1) − ExperienceToAttributeLevel(value). + // We store pre-computed per-attribute costs for the fixture; cost == 0 → attribute is + // at max or not trainable (raise button ghosted/hidden). Ordered to match AttrRows + // (Strength, Endurance, Coordination, Quickness, Focus, Self, Health, Stamina, Mana). + // Source: gmAttributeUI::AttributeInfoRegion::Update (0x004f1910) + CM_Train::Event_TrainAttribute. + + /// + /// XP cost to raise each of the 9 attributes/vitals by 1, in retail display order: + /// [0]=Strength, [1]=Endurance, [2]=Coordination, [3]=Quickness, [4]=Focus, [5]=Self, + /// [6]=Health, [7]=Stamina, [8]=Mana. + /// Cost 0 means the attribute is at max (raise button ghosted). + /// + public long[] AttributeRaiseCosts { get; init; } = Array.Empty(); + // ── Augmentations (UpdateAugmentations 0x004b9000) ───────────────────── // Retail InqInt(0x162) = AugmentationStat; string-switch 1..0xb. diff --git a/src/AcDream.App/UI/Layout/CharacterStatController.cs b/src/AcDream.App/UI/Layout/CharacterStatController.cs index 310707d6..3600401c 100644 --- a/src/AcDream.App/UI/Layout/CharacterStatController.cs +++ b/src/AcDream.App/UI/Layout/CharacterStatController.cs @@ -29,8 +29,18 @@ namespace AcDream.App.UI.Layout; /// DisplayDefaultFooter (0x0049cde0): title empty, line-1 value = /// "Select an Attribute to Improve", line-2 value = available skill credits (InqInt(0x18)). /// -/// Pass 2 pending: selection highlight (Button SetState(6)), State-B footer, -/// raise buttons (CM_Train::Event_TrainAttribute). +/// Footer State B (row selected) bound from +/// DisplaySelectedAttribute (implicitly): title = "{AttrName}: {value}", +/// line-1 label = "Experience To Raise:", line-1 value = raise cost, +/// line-2 label = "Unassigned Experience:", line-2 value = UnassignedXp. +/// +/// Tab button states: Attributes = "Open", Skills = "Closed", Titles = "Closed". +/// Source: UIStateId.Open (0x0C) / UIStateId.Closed (0x0B) — set on the UiButton children +/// inside each tab group container. +/// +/// Raise buttons: 0x10000246 (×1) + 0x100005EB (×10). State "Normal" = affordable +/// (UIStateId.Normal, 0x01), state "Ghosted" = unaffordable or no selection +/// (UIStateId.Ghosted, 0x0D). Source: gmAttributeUI::AttributeInfoRegion::Update (0x004f1910). /// public static class CharacterStatController { @@ -43,6 +53,15 @@ public static class CharacterStatController public const uint XpMeterId = 0x10000236u; // m_pXPToLevelMeter (UiMeter) public const uint ListBoxId = 0x1000023Du; // m_pListBox container + // ── Tab bar element ids (LayoutDesc 0x2100002E root) ──────────────────── + // Three group containers, each holding three UiButton children forming the 3-piece + // tab visual. State "Open" (UIStateId 0x0C) = active; "Closed" (0x0B) = inactive. + // Source: gmTabUI::SetActive(bool) — the tab-bar controller calls SetState(Open/Closed) + // on the three child buttons of the active vs inactive tab slots. + public const uint TabAttribId = 0x10000228u; // Attributes tab group + public const uint TabSkillsId = 0x10000229u; // Skills tab group + public const uint TabTitlesId = 0x10000538u; // Titles tab group + // ── Footer element ids (gmStatManagementUI struct fields) ──────────────── // Source: acclient.h / DisplayDefaultFooter (0x0049cde0) public const uint FooterTitleId = 0x1000024eu; // GetFooterTitleLabel @@ -51,36 +70,44 @@ public static class CharacterStatController public const uint FooterLine2Label = 0x10000244u; // GetFooterLineTwoLabel public const uint FooterLine2Value = 0x10000245u; // GetFooterLineTwoValue + // ── Raise button element ids ────────────────────────────────────────────── + // Source: gmAttributeUI::PostInit (0x0049db70); CM_Train::Event_TrainAttribute. + // Button state "Normal" (UIStateId 0x01) = affordable (green/active); + // "Ghosted" (UIStateId 0x0D) = disabled. Hidden when nothing is selected. + public const uint RaiseOneId = 0x10000246u; // raise × 1 + public const uint RaiseTenId = 0x100005EBu; // raise × 10 + + // ── UIStateId string keys (DatReaderWriter UIStateId enum.ToString()) ──── + // State names as returned by UIStateId.ToString() — used as ActiveState keys on UiButton. + private const string StateOpen = "Open"; // UIStateId.Open = 0x0C — active tab + private const string StateClosed = "Closed"; // UIStateId.Closed = 0x0B — inactive tab + private const string StateNormal = "Normal"; // UIStateId.Normal = 0x01 — affordable / default + private const string StateGhosted = "Ghosted"; // UIStateId.Ghosted = 0x0D — disabled button + private static readonly Vector4 Body = new(0.92f, 0.90f, 0.82f, 1f); // parchment-white body text private static readonly Vector4 Gold = new(1f, 0.82f, 0.36f, 1f); // section / emphasis gold + /// Row highlight color — semi-translucent gold, matches retail + /// UIStateId.Highlight (0x06) sprite 0x06001397 visual intent. + private static readonly Vector4 HighlightBg = new(1f, 0.75f, 0.2f, 0.25f); + // ── Row layout constants ───────────────────────────────────────────────── - // List box 0x1000023D is 398px tall after the anchor pass (dat stores 160px; the - // Top+Bottom anchor stretches it when the 575px content slot inflates the sub-layout). - // 9 rows spread evenly over 398px ≈ 44px/row — matching retail's generous spacing. - // Icons are 24px, vertically centered in the row. private const float RowHeight = 44f; - private const float IconSize = 24f; // icon ~24×24px, vertically centered in the 44px row - private const float RowPadX = 4f; // left inset before the icon - private const float IconGap = 6f; // gap between icon right and name text left + private const float IconSize = 24f; + private const float RowPadX = 4f; + private const float IconGap = 6f; // ── Attribute row descriptors — retail display order per spec §1 ───────── - // InfoRegion::InfoRegion row sub-element ids: - // 0x10000129 = icon image - // 0x1000012a = m_pLabelText (name) - // 0x1000012b = m_pValueText (value) - // Icon DataIDs from SubMap 0x25000006 (typeId 0x10000002) — spec §2. private static readonly (string name, uint iconDid)[] AttrRows = new[] { - ("Strength", 0x060002C8u), // enum 1 — spec §1/§2 + ("Strength", 0x060002C8u), // enum 1 ("Endurance", 0x060002C4u), // enum 2 - ("Coordination", 0x060002C9u), // enum 4 (COORD before QUICK — retail display order) + ("Coordination", 0x060002C9u), // enum 4 ("Quickness", 0x060002C6u), // enum 3 ("Focus", 0x060002C5u), // enum 5 ("Self", 0x060002C7u), // enum 6 }; - // Vital icon DataIDs from SubMap 0x25000007 (typeId 0x10000003) — spec §2. private static readonly (string name, uint iconDid)[] VitalRows = new[] { ("Health", 0x06004C3Bu), // CurEnum 2 @@ -89,14 +116,20 @@ public static class CharacterStatController }; /// - /// Bind the Attributes-tab header + 9-row list + footer State-A elements in - /// to . + /// Bind the Attributes-tab header + 9-row list + footer elements, tab button states, + /// and raise buttons in to . + /// + /// + /// Interactive mode (Pass 2): each attribute/vital row is a + /// that fires selection logic on left-click. The + /// selected row index is held in a mutable int[] box (single element) so that + /// all closures share the same mutable slot without escaping the static method boundary. + /// /// /// /// resolves a 0x06xxxxxx RenderSurface dat id to - /// a (GL tex handle, pixel width, pixel height) triple — the same resolver that - /// DatWidgetFactory uses for chrome sprites. Pass null in tests where - /// icon rendering is not asserted; icons are skipped when the resolver is absent. + /// a (GL tex handle, pixel width, pixel height) triple. Pass null in tests where + /// icon rendering is not asserted. /// /// public static void Bind( @@ -115,58 +148,119 @@ public static class CharacterStatController if (layout.FindElement(XpMeterId) is UiMeter meter) meter.Fill = () => data().XpFraction; + // ── Tab bar button states ───────────────────────────────────────────── + // Each tab group (0x10000228/229/538) is a UiDatElement container whose children + // are UiButton widgets that form the 3-piece tab visual. Setting ActiveState on + // all children to "Open" or "Closed" switches the visible sprite set. + // Source: UIStateId.Open (0x0C) / UIStateId.Closed (0x0B). + // Only Attributes is active; Skills + Titles controllers don't exist yet. + SetTabState(layout, TabAttribId, StateOpen); + SetTabState(layout, TabSkillsId, StateClosed); + SetTabState(layout, TabTitlesId, StateClosed); + // ── Attribute list — 9 rows in list box 0x1000023D ──────────────────── - // gmAttributeUI::PostInit (0x0049db70) calls AddItemFromTemplateList nine times — - // in acdream we manually add 9 UiPanel row containers (no dat template machinery). - // Each row = icon (left, ~16×16) + name (left-justified) + value (right-aligned). + // Mutable selected-index box: -1 = nothing selected. + var sel = new int[] { -1 }; + + // Gather EVERY copy of the raise buttons in the tree. The raise button ids + // (0x10000246, 0x100005EB) appear once per tab page (Attributes/Skills/Titles) + // in the dat inheritance structure; ImportedLayout._byId keeps only the LAST + // mounted copy. We collect all copies so we can hide them all initially and + // show/hide the correct set when a row is selected. + // + // At bind time the tree includes all three tab pages (the page-visibility pass + // runs AFTER this). Collecting from the full tree is safe: once the page- + // visibility pass hides the inactive pages their raise buttons are invisible + // regardless of the Visible flag we set here — but the Attributes page's + // buttons (which are NOT hidden by the page pass) must be explicitly hidden. + var allRaise1 = new List(); + var allRaise10 = new List(); + if (layout.Root is { } r) + { + // Single-pass tree walk to collect all UiButton copies at the two ids. + // FindElement only returns the last-registered copy in _byId; we need ALL + // copies because duplicated sub-layout mounts each tab page independently. + CollectButtonsById(r, RaiseOneId, allRaise1, layout); + CollectButtonsById(r, RaiseTenId, allRaise10, layout); + } + // If tree-walk found nothing, fall back to _byId (covers fake/test layouts). + if (allRaise1.Count == 0 && layout.FindElement(RaiseOneId) is UiButton b1) allRaise1.Add(b1); + if (allRaise10.Count == 0 && layout.FindElement(RaiseTenId) is UiButton b10) allRaise10.Add(b10); + + // Initial state: raise buttons hidden until a row is selected. + foreach (var b in allRaise1) b.Visible = false; + foreach (var b in allRaise10) b.Visible = false; + + // ── Footer State A initial binding ──────────────────────────────────── + // All footer providers close over sel[] so they can reflect State A vs B per frame. + BindFooterDynamic(layout, datFont, data, sel); + + List? rowPanels = null; + if (layout.FindElement(ListBoxId) is { } list) { - BuildAttributeRows(list, datFont, spriteResolve, data); + rowPanels = BuildAttributeRows(list, datFont, spriteResolve, data, sel, + allRaise1, allRaise10); } - // ── Footer — State A (nothing selected): DisplayDefaultFooter (0x0049cde0) ──── - // title = "" ; line-1 value = "Select an Attribute to Improve" ; - // line-2 value = InqInt(0x18) = available skill credits. - BindFooterStateA(layout, datFont, data); - - // ── Active-page selection (fixes the "dark overlay") ────────────────── - // 0x2100002E is a tabbed window: all three tab pages (Attributes / Skills / Titles) mount - // their content as separate root children that OVERLAP in the same content rect. Retail - // shows only the active page; acdream draws them all, so the inactive pages' backdrops paint - // over the active content (the dim "almost opaque" cover). The shared gmStatManagement ids - // are duplicated across pages and acdream's _byId keeps the LAST-mounted copy, so every widget - // we just bound lives in exactly ONE page. Keep that page visible; hide the rest. + // ── Active-page selection (fixes the dark-overlay) ───────────────────── if (layout.FindElement(NameId) is { } anchor && layout.Root is { } root) { foreach (var page in root.Children) { - if (page.Children.Count == 0) continue; // tab-bar buttons are leaves — leave them - page.Visible = ContainsWidget(page, anchor); // only the bound page stays visible + if (page.Children.Count == 0) continue; + page.Visible = ContainsWidget(page, anchor); } } } + // ── Tab bar state ──────────────────────────────────────────────────────── + + /// + /// Set the on ALL descendants + /// of the tab group container identified by to + /// . The three-piece tab visual is composed of three UiButton + /// children (left-cap, label/center, right-cap) that must all share the same state. + /// + /// Source: retail tab-button assembly with child buttons having UIStateId states + /// "Closed" (0x0B) and "Open" (0x0C) in the dump — confirmed from + /// docs/research/2026-06-25-retail-ui-layout-dump.json. + /// + private static void SetTabState(ImportedLayout layout, uint groupId, string state) + { + if (layout.FindElement(groupId) is not { } group) return; + SetButtonStateRecursive(group, state); + } + + private static void SetButtonStateRecursive(UiElement node, string state) + { + if (node is UiButton btn) + btn.ActiveState = state; + foreach (var child in node.Children) + SetButtonStateRecursive(child, state); + } + // ── 9-row attribute list ───────────────────────────────────────────────── - private static void BuildAttributeRows( + private static List BuildAttributeRows( UiElement list, UiDatFont? datFont, Func? spriteResolve, - Func data) + Func data, + int[] sel, + List allRaise1, + List allRaise10) { float listW = list.Width; - float y = 0f; // row-local Y within the list box; each row stacks top-down + float y = 0f; + var rows = new List(); - // Six attribute rows (Strength, Endurance, Coordination, Quickness, Focus, Self). - // Value format: "%d" (buffed integer) — AttributeInfoRegion::Update (0x004f1910). for (int i = 0; i < AttrRows.Length; i++) { var (rowName, iconDid) = AttrRows[i]; + int rowIndex = i; - // Capture for the lambda — locals from the loop are captured by VALUE here. - int rowIndex = i; // not used in value yet but keeps the closure honest - - AddRow(list, datFont, spriteResolve, + var row = AddRow(list, datFont, spriteResolve, left: 0f, top: y, width: listW, height: RowHeight, iconDid: iconDid, nameText: rowName, @@ -186,17 +280,18 @@ public static class CharacterStatController return v.ToString(); }); + row.OnClick = () => HandleRowClick(rowIndex, sel, rows, data, allRaise1, allRaise10); + rows.Add(row); y += RowHeight; } - // Three vital rows (Health, Stamina, Mana). - // Value format: "%d/%d" cur/max — Attribute2ndInfoRegion::Update (0x004f19e0). for (int i = 0; i < VitalRows.Length; i++) { var (rowName, iconDid) = VitalRows[i]; int rowIndex = i; + int absIndex = AttrRows.Length + i; - AddRow(list, datFont, spriteResolve, + var row = AddRow(list, datFont, spriteResolve, left: 0f, top: y, width: listW, height: RowHeight, iconDid: iconDid, nameText: rowName, @@ -212,20 +307,117 @@ public static class CharacterStatController }; }); + row.OnClick = () => HandleRowClick(absIndex, sel, rows, data, allRaise1, allRaise10); + rows.Add(row); y += RowHeight; } + + return rows; } /// - /// Add a single row to : a transparent UiPanel container - /// positioned at , of the list, holding - /// three children: icon (UiText with BackgroundSprite), name (UiText, left-justified), - /// value (UiText, right-aligned). All three are ClickThrough non-interactive. - /// - /// Row sub-element ids from the retail dat template (InfoRegion::InfoRegion - /// 0x004f1450): 0x10000129 icon, 0x1000012a name, 0x1000012b value. + /// Handles a row click: toggle (same row → deselect), else select new row. + /// Updates highlight, footer providers, and raise-button state. /// - private static void AddRow( + private static void HandleRowClick( + int clickedIndex, + int[] sel, + List rows, + Func data, + List allRaise1, + List allRaise10) + { + int newSel = (sel[0] == clickedIndex) ? -1 : clickedIndex; + sel[0] = newSel; + + // Log for live test confirmation (user tests selection in the studio). + string rowName = GetRowName(newSel); + Console.WriteLine($"[CharacterStat] Row click: index={clickedIndex} → selected={newSel} ({rowName})"); + + // Update highlight on all rows. + for (int i = 0; i < rows.Count; i++) + rows[i].BackgroundColor = (i == newSel) ? HighlightBg : Vector4.Zero; + + // Update raise buttons. + RefreshRaiseButtons(newSel, data, allRaise1, allRaise10); + } + + /// Refresh raise button visibility + state based on current selection. + /// Applies to ALL collected raise button copies (one per tab page) so the + /// Attributes-page buttons are correctly shown/hidden regardless of which + /// copy happens to be in ImportedLayout._byId. + private static void RefreshRaiseButtons( + int selectedIndex, + Func data, + List allRaise1, + List allRaise10) + { + if (allRaise1.Count == 0 && allRaise10.Count == 0) return; + + if (selectedIndex < 0) + { + // Nothing selected: hide all raise buttons. + foreach (var b in allRaise1) b.Visible = false; + foreach (var b in allRaise10) b.Visible = false; + return; + } + + var sheet = data(); + long cost = GetRaiseCost(sheet, selectedIndex); + bool affordable = cost > 0 && sheet.UnassignedXp >= cost; + + // State "Normal" = affordable/green; "Ghosted" = too expensive or maxed. + string btnState = affordable ? StateNormal : StateGhosted; + + foreach (var b in allRaise1) { b.Visible = true; b.ActiveState = btnState; } + foreach (var b in allRaise10) { b.Visible = true; b.ActiveState = btnState; } + } + + /// Return the raise cost for row from the sheet. + /// Returns 0 if the cost array is shorter than expected. + internal static long GetRaiseCost(CharacterSheet sheet, int rowIndex) + { + if (sheet.AttributeRaiseCosts is null || rowIndex < 0 + || rowIndex >= sheet.AttributeRaiseCosts.Length) + return 0L; + return sheet.AttributeRaiseCosts[rowIndex]; + } + + /// Return the display name for the row at , + /// or an empty string if the index is out of range. + internal static string GetRowName(int index) + { + if (index < 0) return string.Empty; + if (index < AttrRows.Length) return AttrRows[index].name; + int vi = index - AttrRows.Length; + if (vi < VitalRows.Length) return VitalRows[vi].name; + return string.Empty; + } + + /// Return the numeric value for the row at . + internal static string GetRowValueString(CharacterSheet sheet, int index) + { + return index switch + { + 0 => sheet.Strength.ToString(), + 1 => sheet.Endurance.ToString(), + 2 => sheet.Coordination.ToString(), + 3 => sheet.Quickness.ToString(), + 4 => sheet.Focus.ToString(), + 5 => sheet.Self.ToString(), + 6 => $"{sheet.HealthCurrent}/{sheet.HealthMax}", + 7 => $"{sheet.StaminaCurrent}/{sheet.StaminaMax}", + 8 => $"{sheet.ManaCurrent}/{sheet.ManaMax}", + _ => string.Empty, + }; + } + + /// + /// Add a single attribute/vital row to as a + /// containing icon + name + value children. + /// Returns the panel so the caller can wire . + /// + private static UiClickablePanel AddRow( UiElement list, UiDatFont? datFont, Func? spriteResolve, @@ -234,23 +426,19 @@ public static class CharacterStatController string nameText, Func valueProvider) { - // Transparent container — the list box backdrop draws behind everything. - var row = new UiPanel + var row = new UiClickablePanel { Left = left, Top = top, Width = width, Height = height, - BackgroundColor = Vector4.Zero, // transparent + BackgroundColor = Vector4.Zero, // transparent until selected BorderColor = Vector4.Zero, - ClickThrough = true, Anchors = AnchorEdges.Left | AnchorEdges.Top, }; float iconY = (height - IconSize) * 0.5f; - // Icon element — UiText with BackgroundSprite draws the dat sprite under (empty) text. - // Retail: InfoRegion::InfoRegion sub-element 0x10000129 → UIRegion::SetImageByDID. var iconEl = new UiText { Left = RowPadX, @@ -258,7 +446,7 @@ public static class CharacterStatController Width = IconSize, Height = IconSize, ClickThrough = true, - DatFont = null, // icon has no text + DatFont = null, BackgroundSprite = spriteResolve is not null ? iconDid : 0u, SpriteResolve = spriteResolve is not null ? id => { var (h, w, ht) = spriteResolve(id); return (h, w, ht); } @@ -267,15 +455,11 @@ public static class CharacterStatController Anchors = AnchorEdges.Left | AnchorEdges.Top, }; - // Name label — left-justified within its column width. - // Retail: InfoRegion sub-element 0x1000012a (m_pLabelText). - // UiText has no explicit LeftAligned flag; we use the default non-Centered/non-RightAligned - // scroll path with a single-line LinesProvider. Padding=1 keeps the text off the left edge. float nameX = RowPadX + IconSize + IconGap; - float nameW = width * 0.60f; // ~60% of the row width for the name column - float nameY = 0f; // fill full row height; one line top-pins to the row top + float nameW = width * 0.60f; + float nameY = 0f; - string capturedName = nameText; // close over the name string directly + string capturedName = nameText; var nameEl = new UiText { Left = nameX, @@ -291,8 +475,6 @@ public static class CharacterStatController }; nameEl.LinesProvider = () => new[] { new UiText.Line(capturedName, Body) }; - // Value label — right-aligned, vertically centered. - // Retail: InfoRegion sub-element 0x1000012b (m_pValueText). float valueW = width - nameX - nameW - RowPadX; float valueX = nameX + nameW; @@ -314,55 +496,65 @@ public static class CharacterStatController row.AddChild(nameEl); row.AddChild(valueEl); list.AddChild(row); + return row; } - // ── Footer State A binding ──────────────────────────────────────────────── + // ── Footer — dynamic (State A + State B via sel[]) ──────────────────────── /// - /// Bind footer elements to their State-A (nothing selected) content. + /// Bind all 5 footer elements with providers that close over : + /// when sel[0] == -1 (nothing selected) they emit State-A content; + /// when a row is selected they emit State-B content. /// - /// Matching the user's authoritative shot layout (3-line footer at the panel bottom): - /// - /// Title (0x1000024e) → "Select an Attribute to Improve" — centered, full-width. - /// Line-1 label (0x10000242) → "Skill Credits Available:" - /// Line-1 value (0x10000243) → InqInt(0x18) = available skill credits. - /// Line-2 label (0x10000244) → "Unassigned Experience:" - /// Line-2 value (0x10000245) → InqInt64(2) = unassigned XP. - /// - /// + /// State A (DisplayDefaultFooter 0x0049cde0): + /// title = "Select an Attribute to Improve"; line-1 label = "Skill Credits Available:"; + /// line-1 value = SkillCredits; line-2 label = "Unassigned Experience:"; + /// line-2 value = UnassignedXp. /// - /// Source: DisplayDefaultFooter (0x0049cde0) + user's retail screenshot. + /// State B (attribute selected): + /// title = "{AttrName}: {value}" (e.g. "Focus: 10"); line-1 label = "Experience To Raise:"; + /// line-1 value = raise cost; line-2 label = "Unassigned Experience:"; + /// line-2 value = UnassignedXp. /// - private static void BindFooterStateA( + private static void BindFooterDynamic( ImportedLayout layout, UiDatFont? datFont, - Func data) + Func data, + int[] sel) { - // 0x1000024e title → "Select an Attribute to Improve" - Label(layout, FooterTitleId, datFont, Body, - static () => "Select an Attribute to Improve"); + // Title: State A = "Select an Attribute to Improve"; State B = "{name}: {value}" + Label(layout, FooterTitleId, datFont, Body, () => + { + if (sel[0] < 0) return "Select an Attribute to Improve"; + var s = data(); + string name = GetRowName(sel[0]); + string value = GetRowValueString(s, sel[0]); + return $"{name}: {value}"; + }); - // 0x10000242 line-1 label → "Skill Credits Available:" - Label(layout, FooterLine1Label, datFont, Body, - static () => "Skill Credits Available:"); + // Line-1 label: State A = "Skill Credits Available:"; State B = "Experience To Raise:" + Label(layout, FooterLine1Label, datFont, Body, () => + sel[0] < 0 ? "Skill Credits Available:" : "Experience To Raise:"); - // 0x10000243 line-1 value → InqInt(0x18) = available skill credits - Label(layout, FooterLine1Value, datFont, Body, - () => data().SkillCredits.ToString()); + // Line-1 value: State A = SkillCredits; State B = raise cost + Label(layout, FooterLine1Value, datFont, Body, () => + { + if (sel[0] < 0) return data().SkillCredits.ToString(); + long cost = GetRaiseCost(data(), sel[0]); + return cost > 0 ? cost.ToString("N0") : "—"; + }); - // 0x10000244 line-2 label → "Unassigned Experience:" + // Line-2 label: "Unassigned Experience:" in both states Label(layout, FooterLine2Label, datFont, Body, static () => "Unassigned Experience:"); - // 0x10000245 line-2 value → InqInt64(2) = unassigned XP + // Line-2 value: UnassignedXp in both states Label(layout, FooterLine2Value, datFont, Body, () => data().UnassignedXp.ToString("N0")); } // ── Helpers ────────────────────────────────────────────────────────────── - /// Depth-first reference search: is somewhere under - /// ? Used to find which overlapping tab page owns the bound widgets. private static bool ContainsWidget(UiElement node, UiElement target) { if (ReferenceEquals(node, target)) return true; @@ -376,9 +568,73 @@ public static class CharacterStatController if (layout.FindElement(id) is UiText t) { t.DatFont = datFont; - t.Centered = true; // single-line centered label (retail UIElement_Text) + t.Centered = true; t.ClickThrough = true; t.LinesProvider = () => new[] { new UiText.Line(text(), color) }; } } + + /// + /// Depth-first tree walk to collect every that was registered + /// in under the given dat element . + /// + /// + /// The standard returns only the LAST widget + /// registered for a given id; for elements duplicated across tab-page sub-layouts + /// (raise buttons, close buttons) we need ALL copies so that visibility changes are + /// reflected in every page — not just the last-mounted one. + /// + /// + /// + /// Implementation: walk the entire tree calling + /// is not enough (it uses a dict). Instead we + /// exploit the fact that identical element ids produce widgets that all share the SAME + /// instance in _byId for THEIR copy; but siblings from + /// different inheritance mounts are SEPARATE instances not in the same _byId slot. + /// We therefore walk the tree recursively and collect every whose + /// ActiveState reflects the dat default (before our code sets it), which is not a + /// reliable discriminator. Instead, we gather ALL instances from + /// the subtree at the known spatial position (bottom of the panel) — but positions can + /// overlap across pages. + /// + /// + /// + /// The correct approach: since _byId stores only one instance per id, we use the + /// for the canonical id, then do a FULL tree walk + /// to find ADDITIONAL instances that have identical Width×Height to + /// the known button. This works because the three page copies share the same dat template + /// and thus the same geometry. Collected via reference-equality guard to avoid duplicates. + /// + /// + private static void CollectButtonsById( + UiElement node, + uint targetId, + List result, + ImportedLayout layout) + { + // Find the canonical copy (last registered in _byId) as the geometry reference. + if (layout.FindElement(targetId) is not UiButton canonical) return; + + // Walk the tree and collect ALL UiButton instances matching the canonical geometry. + // The canonical copy itself will also be found — that's fine; use a HashSet to dedup. + var seen = new HashSet(ReferenceEqualityComparer.Instance); + CollectMatchingButtons(node, canonical, seen, result); + } + + private static void CollectMatchingButtons( + UiElement node, + UiButton canonical, + HashSet seen, + List result) + { + if (node is UiButton btn + && Math.Abs(btn.Width - canonical.Width) < 0.5f + && Math.Abs(btn.Height - canonical.Height) < 0.5f + && seen.Add(btn)) + { + result.Add(btn); + } + foreach (var child in node.Children) + CollectMatchingButtons(child, canonical, seen, result); + } } diff --git a/src/AcDream.App/UI/UiPanel.cs b/src/AcDream.App/UI/UiPanel.cs index b6a2085f..a6c3269d 100644 --- a/src/AcDream.App/UI/UiPanel.cs +++ b/src/AcDream.App/UI/UiPanel.cs @@ -1,3 +1,4 @@ +using System; using System.Numerics; namespace AcDream.App.UI; @@ -94,3 +95,43 @@ public class UiSimpleButton : UiPanel ctx.DrawString(Text, tx, ty, TextColor); } } + +/// +/// A that fires an callback when the user +/// left-clicks it. Used for the attribute-list rows in the Character window — each row +/// is a transparent container that needs to respond to pointer hits while its children +/// (icon, name, value) are ClickThrough decorations. +/// +/// Retail analog: the AttributeInfoRegion row widget in gmAttributeUI +/// catches UIEvent_LeftClick (0x01) and calls SetSelectedAttribute on the +/// parent window. In acdream we wire the equivalent via this action callback instead of +/// the retail message bus. +/// +public class UiClickablePanel : UiPanel +{ + /// Called when the user releases the left mouse button over this panel. + public Action? OnClick { get; set; } + + public UiClickablePanel() + { + // Rows must receive pointer events — override the UiPanel default (ClickThrough=false, + // which is the UiElement base default). Explicit for clarity. + ClickThrough = false; + } + + /// HandlesClick = true ensures this row receives its own Click even when + /// it is nested inside a Draggable ancestor window frame (e.g. the future character + /// window with a whole-window drag handle). Without this, the press would be consumed + /// by the ancestor's drag logic and the Click would never fire. + public override bool HandlesClick => true; + + public override bool OnEvent(in UiEvent e) + { + if (e.Type == UiEventType.Click && Enabled) + { + OnClick?.Invoke(); + return true; + } + return false; + } +} diff --git a/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs b/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs index d1d66107..dc14bf60 100644 --- a/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs +++ b/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs @@ -8,6 +8,10 @@ namespace AcDream.App.Tests.UI.Layout; /// Unit tests for — the Attributes-tab controller that /// binds the REAL importer-mounted header + 9-row list + footer elements (no created overlay). /// Pure data wiring against fake layouts; no dats, no GL. +/// +/// Pass 1 tests verify header/XP meter/attribute list/footer State-A binding. +/// Pass 2 tests verify: (a) row click → selection toggle; (b) footer State-B content; +/// (c) raise-button affordability; (d) tab button states. /// public class CharacterStatControllerTests { @@ -66,7 +70,6 @@ public class CharacterStatControllerTests // ── Attribute list — 9 rows in list box 0x1000023D ─────────────────────── - /// Bind adds exactly 9 UiPanel row containers to the list box. [Fact] public void Bind_AttributeList_Has9Rows() { @@ -75,14 +78,29 @@ public class CharacterStatControllerTests CharacterStatController.Bind(layout, SampleData.SampleCharacter); + // Rows are UiClickablePanel which inherits UiPanel, so OfType matches. var rows = list.Children.OfType().ToList(); Assert.Equal(9, rows.Count); } - /// - /// Every row must have a right-aligned value UiText child (the last UiText in - /// the row), confirming the RightAligned path was wired. - /// + [Fact] + public void Bind_AttributeList_RowsAreClickablePanels() + { + var list = new UiPanel(); + var layout = Fake((CharacterStatController.ListBoxId, list)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + var rows = list.Children.OfType().ToList(); + Assert.Equal(9, rows.Count); + // All rows must have an OnClick wired (not null) and ClickThrough = false. + foreach (var row in rows) + { + Assert.NotNull(row.OnClick); + Assert.False(row.ClickThrough, "clickable row must accept pointer hits"); + } + } + [Fact] public void Bind_AttributeList_EachRowHasRightAlignedValueLabel() { @@ -95,18 +113,13 @@ public class CharacterStatControllerTests Assert.Equal(9, rows.Count); foreach (var row in rows) { - // Last UiText in each row is the value (right-aligned). var texts = row.Children.OfType().ToList(); Assert.True(texts.Count >= 2, "each row must have at least name + value UiText"); - var valueEl = texts[^1]; // last = value + var valueEl = texts[^1]; Assert.True(valueEl.RightAligned, "value label must be RightAligned"); } } - /// - /// Retail display order: Strength, Endurance, Coordination, Quickness, Focus, Self, - /// Health, Stamina, Mana (spec §1). Name is the SECOND UiText child of each row. - /// [Fact] public void Bind_AttributeList_RowNamesInRetailOrder() { @@ -126,19 +139,13 @@ public class CharacterStatControllerTests for (int i = 0; i < 9; i++) { - // Name UiText = second UiText in the row (after the icon UiText). var texts = rows[i].Children.OfType().ToList(); Assert.True(texts.Count >= 2, $"row {i} must have name + value"); - string rowName = texts[1].LinesProvider()[0].Text; // index 1 = name (0 = icon) + string rowName = texts[1].LinesProvider()[0].Text; Assert.Equal(expectedNames[i], rowName); } } - /// - /// Attribute row values are plain integers; vital row values are "cur/max". - /// Validates against SampleData fixture: Str=200, Quick=200, rest=10; - /// Health=5/5, Stamina=10/10, Mana=10/10. - /// [Fact] public void Bind_AttributeList_RowValues_AttributeIntegersAndVitalsCurMax() { @@ -149,45 +156,34 @@ public class CharacterStatControllerTests var rows = list.Children.OfType().ToList(); - // Helper: value text is the last UiText in the row. string ValueOf(UiPanel row) => row.Children.OfType().ToList()[^1].LinesProvider()[0].Text; - // Attribute rows 0-5. Assert.Equal("200", ValueOf(rows[0])); // Strength Assert.Equal("10", ValueOf(rows[1])); // Endurance Assert.Equal("10", ValueOf(rows[2])); // Coordination Assert.Equal("200", ValueOf(rows[3])); // Quickness Assert.Equal("10", ValueOf(rows[4])); // Focus Assert.Equal("10", ValueOf(rows[5])); // Self - - // Vital rows 6-8: "cur/max" format. Assert.Equal("5/5", ValueOf(rows[6])); // Health Assert.Equal("10/10", ValueOf(rows[7])); // Stamina Assert.Equal("10/10", ValueOf(rows[8])); // Mana } - /// - /// When spriteResolve is provided the icon UiText must have BackgroundSprite set - /// to the correct DataID; when null the BackgroundSprite must be 0. - /// [Fact] public void Bind_AttributeList_IconHasBackgroundSpriteWhenResolverProvided() { var list = new UiPanel(); var layout = Fake((CharacterStatController.ListBoxId, list)); - // Non-null resolver — just returns a fake handle for any id. CharacterStatController.Bind(layout, SampleData.SampleCharacter, - spriteResolve: id => (id, 16, 16)); // fake: handle == id + spriteResolve: id => (id, 16, 16)); var rows = list.Children.OfType().ToList(); Assert.Equal(9, rows.Count); - // First icon = Strength row; expected DataID 0x060002C8. var iconEl = rows[0].Children.OfType().First(); Assert.Equal(0x060002C8u, iconEl.BackgroundSprite); - // Vital (Health) = row 6; expected DataID 0x06004C3B. var healthIcon = rows[6].Children.OfType().First(); Assert.Equal(0x06004C3Bu, healthIcon.BackgroundSprite); } @@ -219,6 +215,7 @@ public class CharacterStatControllerTests CharacterStatController.Bind(layout, SampleData.SampleCharacter); + // Initial state (nothing selected): State-A title. Assert.Equal("Select an Attribute to Improve", title.LinesProvider()[0].Text); } @@ -241,7 +238,6 @@ public class CharacterStatControllerTests CharacterStatController.Bind(layout, SampleData.SampleCharacter); - // SampleData.SampleCharacter().SkillCredits == 96 Assert.Equal("96", val.LinesProvider()[0].Text); } @@ -264,27 +260,375 @@ public class CharacterStatControllerTests CharacterStatController.Bind(layout, SampleData.SampleCharacter); - // SampleData.SampleCharacter().UnassignedXp == 87_757_321_741 - // Formatted as "N0" with thousands separators. var expected = (87_757_321_741L).ToString("N0"); Assert.Equal(expected, val.LinesProvider()[0].Text); } - // ── SkillCredits / UnassignedXp propagation through SampleData ─────────── + // ── Pass 2: Row selection → Footer State B ─────────────────────────────── + + [Fact] + public void RowClick_SelectRow4Focus_FooterStateBShowsFocusTitle() + { + // Focus is index 4 in AttrRows. SampleData Focus = 10. Cost = 110. + var title = new UiText(); + var list = new UiPanel(); + var layout = Fake( + (CharacterStatController.FooterTitleId, title), + (CharacterStatController.ListBoxId, list)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + // Simulate a click on row 4 (Focus). + var rows = list.Children.OfType().ToList(); + Assert.Equal(9, rows.Count); + rows[4].OnClick!(); + + // Footer title should now be "Focus: 10". + Assert.Equal("Focus: 10", title.LinesProvider()[0].Text); + } + + [Fact] + public void RowClick_SelectRow4Focus_FooterLine1LabelIsExperienceToRaise() + { + var lbl = new UiText(); + var list = new UiPanel(); + var layout = Fake( + (CharacterStatController.FooterLine1Label, lbl), + (CharacterStatController.ListBoxId, list)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + list.Children.OfType().ToList()[4].OnClick!(); + + Assert.Equal("Experience To Raise:", lbl.LinesProvider()[0].Text); + } + + [Fact] + public void RowClick_SelectRow4Focus_FooterLine1ValueIsRaiseCost() + { + var val = new UiText(); + var list = new UiPanel(); + var layout = Fake( + (CharacterStatController.FooterLine1Value, val), + (CharacterStatController.ListBoxId, list)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + list.Children.OfType().ToList()[4].OnClick!(); + + // Focus raise cost = 110 (SampleData fixture). + Assert.Equal((110L).ToString("N0"), val.LinesProvider()[0].Text); + } + + [Fact] + public void RowClick_SelectRow4Focus_FooterLine2LabelIsUnassignedExperience() + { + var lbl = new UiText(); + var list = new UiPanel(); + var layout = Fake( + (CharacterStatController.FooterLine2Label, lbl), + (CharacterStatController.ListBoxId, list)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + list.Children.OfType().ToList()[4].OnClick!(); + + Assert.Equal("Unassigned Experience:", lbl.LinesProvider()[0].Text); + } + + [Fact] + public void RowClick_SelectRow4Focus_FooterLine2ValueIsUnassignedXp() + { + var val = new UiText(); + var list = new UiPanel(); + var layout = Fake( + (CharacterStatController.FooterLine2Value, val), + (CharacterStatController.ListBoxId, list)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + list.Children.OfType().ToList()[4].OnClick!(); + + // UnassignedXp = 87_757_321_741L + var expected = (87_757_321_741L).ToString("N0"); + Assert.Equal(expected, val.LinesProvider()[0].Text); + } + + // ── Pass 2: Toggle deselects ────────────────────────────────────────────── + + [Fact] + public void RowClick_ToggleSameRow_ReturnsToFooterStateA() + { + var title = new UiText(); + var list = new UiPanel(); + var layout = Fake( + (CharacterStatController.FooterTitleId, title), + (CharacterStatController.ListBoxId, list)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + var rows = list.Children.OfType().ToList(); + + // Select Focus (row 4). + rows[4].OnClick!(); + Assert.Equal("Focus: 10", title.LinesProvider()[0].Text); + + // Click the same row again → deselect. + rows[4].OnClick!(); + Assert.Equal("Select an Attribute to Improve", title.LinesProvider()[0].Text); + } + + [Fact] + public void RowClick_SwitchRow_UpdatesToNewRow() + { + var title = new UiText(); + var list = new UiPanel(); + var layout = Fake( + (CharacterStatController.FooterTitleId, title), + (CharacterStatController.ListBoxId, list)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + var rows = list.Children.OfType().ToList(); + + // Select Endurance (row 1, value=10). + rows[1].OnClick!(); + Assert.Equal("Endurance: 10", title.LinesProvider()[0].Text); + + // Select Self (row 5, value=10). + rows[5].OnClick!(); + Assert.Equal("Self: 10", title.LinesProvider()[0].Text); + } + + // ── Pass 2: Row highlight ───────────────────────────────────────────────── + + [Fact] + public void RowClick_SelectRow_HighlightsSelectedAndClearsOthers() + { + var list = new UiPanel(); + var layout = Fake((CharacterStatController.ListBoxId, list)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + var rows = list.Children.OfType().ToList(); + + // All rows start transparent. + Assert.All(rows, r => Assert.Equal(0f, r.BackgroundColor.W)); + + // Select row 2 (Coordination). + rows[2].OnClick!(); + Assert.NotEqual(0f, rows[2].BackgroundColor.W); // highlighted + Assert.Equal(0f, rows[0].BackgroundColor.W); // others cleared + Assert.Equal(0f, rows[1].BackgroundColor.W); + } + + [Fact] + public void RowClick_Deselect_ClearsHighlight() + { + var list = new UiPanel(); + var layout = Fake((CharacterStatController.ListBoxId, list)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + var rows = list.Children.OfType().ToList(); + rows[2].OnClick!(); // select + rows[2].OnClick!(); // deselect + + Assert.Equal(0f, rows[2].BackgroundColor.W); + } + + // ── Pass 2: Raise button affordability ─────────────────────────────────── + + [Fact] + public void RaiseButtons_InitiallyHidden() + { + var btn1 = MakeButton(); + var btn10 = MakeButton(); + var list = new UiPanel(); + var layout = Fake( + (CharacterStatController.RaiseOneId, btn1), + (CharacterStatController.RaiseTenId, btn10), + (CharacterStatController.ListBoxId, list)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + Assert.False(btn1.Visible, "raise×1 must start hidden"); + Assert.False(btn10.Visible, "raise×10 must start hidden"); + } + + [Fact] + public void RaiseButtons_AffordableRow_ShowsNormalState() + { + // Focus row (index 4) cost=110, UnassignedXp=87_757_321_741 → affordable. + var btn1 = MakeButton(); + var btn10 = MakeButton(); + var list = new UiPanel(); + var layout = Fake( + (CharacterStatController.RaiseOneId, btn1), + (CharacterStatController.RaiseTenId, btn10), + (CharacterStatController.ListBoxId, list)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + list.Children.OfType().ToList()[4].OnClick!(); // select Focus + + Assert.True(btn1.Visible, "raise×1 visible on selection"); + Assert.True(btn10.Visible, "raise×10 visible on selection"); + Assert.Equal("Normal", btn1.ActiveState); + Assert.Equal("Normal", btn10.ActiveState); + } + + [Fact] + public void RaiseButtons_MaxedRow_ShowsGhostedState() + { + // Strength row (index 0) cost=0 → disabled. UnassignedXp is irrelevant. + var btn1 = MakeButton(); + var btn10 = MakeButton(); + var list = new UiPanel(); + var layout = Fake( + (CharacterStatController.RaiseOneId, btn1), + (CharacterStatController.RaiseTenId, btn10), + (CharacterStatController.ListBoxId, list)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + list.Children.OfType().ToList()[0].OnClick!(); // select Strength (cost=0) + + Assert.True(btn1.Visible, "raise button visible even when disabled"); + Assert.Equal("Ghosted", btn1.ActiveState); + Assert.Equal("Ghosted", btn10.ActiveState); + } + + [Fact] + public void RaiseButtons_Deselect_HidesButtons() + { + var btn1 = MakeButton(); + var list = new UiPanel(); + var layout = Fake( + (CharacterStatController.RaiseOneId, btn1), + (CharacterStatController.ListBoxId, list)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + var rows = list.Children.OfType().ToList(); + rows[4].OnClick!(); // select + Assert.True(btn1.Visible); + rows[4].OnClick!(); // deselect + Assert.False(btn1.Visible, "raise button hidden after deselect"); + } + + // ── Pass 2: Tab button states ───────────────────────────────────────────── + + [Fact] + public void TabButtons_AttributesGroupButtons_SetToOpenState() + { + var tabGroup = new UiPanel(); // fake tab group container + var btn1 = MakeButton(); + var btn2 = MakeButton(); + tabGroup.AddChild(btn1); + tabGroup.AddChild(btn2); + + var layout = Fake((CharacterStatController.TabAttribId, tabGroup)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + // All UiButton children of the Attributes group should be "Open". + Assert.Equal("Open", btn1.ActiveState); + Assert.Equal("Open", btn2.ActiveState); + } + + [Fact] + public void TabButtons_SkillsGroupButtons_SetToClosedState() + { + var tabGroup = new UiPanel(); + var btn = MakeButton(); + tabGroup.AddChild(btn); + + var layout = Fake((CharacterStatController.TabSkillsId, tabGroup)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + Assert.Equal("Closed", btn.ActiveState); + } + + [Fact] + public void TabButtons_TitlesGroupButtons_SetToClosedState() + { + var tabGroup = new UiPanel(); + var btn = MakeButton(); + tabGroup.AddChild(btn); + + var layout = Fake((CharacterStatController.TabTitlesId, tabGroup)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + Assert.Equal("Closed", btn.ActiveState); + } + + // ── Affordability helpers (GetRaiseCost) ────────────────────────────────── + + [Fact] + public void GetRaiseCost_Index4Focus_Returns110() + { + var sheet = SampleData.SampleCharacter(); + Assert.Equal(110L, CharacterStatController.GetRaiseCost(sheet, 4)); + } + + [Fact] + public void GetRaiseCost_Index0Strength_Returns0() + { + var sheet = SampleData.SampleCharacter(); + Assert.Equal(0L, CharacterStatController.GetRaiseCost(sheet, 0)); + } + + [Fact] + public void GetRaiseCost_OutOfRange_Returns0() + { + var sheet = SampleData.SampleCharacter(); + Assert.Equal(0L, CharacterStatController.GetRaiseCost(sheet, 99)); + } + + // ── GetRowName helper ───────────────────────────────────────────────────── + + [Fact] + public void GetRowName_Index0_ReturnsStrength() + => Assert.Equal("Strength", CharacterStatController.GetRowName(0)); + + [Fact] + public void GetRowName_Index4_ReturnsFocus() + => Assert.Equal("Focus", CharacterStatController.GetRowName(4)); + + [Fact] + public void GetRowName_Index6_ReturnsHealth() + => Assert.Equal("Health", CharacterStatController.GetRowName(6)); + + [Fact] + public void GetRowName_NegativeIndex_ReturnsEmpty() + => Assert.Equal(string.Empty, CharacterStatController.GetRowName(-1)); + + // ── SampleData sanity ───────────────────────────────────────────────────── [Fact] public void SampleCharacter_SkillCredits_Is96() - { - Assert.Equal(96, SampleData.SampleCharacter().SkillCredits); - } + => Assert.Equal(96, SampleData.SampleCharacter().SkillCredits); [Fact] public void SampleCharacter_UnassignedXp_IsSet() + => Assert.Equal(87_757_321_741L, SampleData.SampleCharacter().UnassignedXp); + + [Fact] + public void SampleCharacter_AttributeRaiseCosts_HasNineEntries() { - Assert.Equal(87_757_321_741L, SampleData.SampleCharacter().UnassignedXp); + var costs = SampleData.SampleCharacter().AttributeRaiseCosts; + Assert.NotNull(costs); + Assert.Equal(9, costs.Length); } - // ── UiText.RightAligned — unit-level draw mode flag ────────────────────── + [Fact] + public void SampleCharacter_AttributeRaiseCosts_FocusAt110() + => Assert.Equal(110L, SampleData.SampleCharacter().AttributeRaiseCosts[4]); + + [Fact] + public void SampleCharacter_AttributeRaiseCosts_StrengthAt0() + => Assert.Equal(0L, SampleData.SampleCharacter().AttributeRaiseCosts[0]); + + // ── UiText flag sanity ──────────────────────────────────────────────────── [Fact] public void UiText_RightAligned_DefaultFalse() @@ -300,13 +644,20 @@ public class CharacterStatControllerTests Assert.True(t.RightAligned); } - // ── Robustness: a partial layout (missing ids) must not throw ──────────── + // ── Robustness ──────────────────────────────────────────────────────────── [Fact] public void Bind_MissingElements_DoesNotThrow() => CharacterStatController.Bind(Fake(), SampleData.SampleCharacter); - // ── Helper ───────────────────────────────────────────────────────────── + // ── Helpers ────────────────────────────────────────────────────────────── + + /// Manufacture a minimal UiButton with a fake ElementInfo (no dat sprites). + private static UiButton MakeButton() + { + var info = new ElementInfo { Id = 0, Type = 1 }; + return new UiButton(info, static _ => (0u, 0, 0)); + } private static ImportedLayout Fake(params (uint id, UiElement e)[] items) { From 99291595bb7621ab573e107de20bea87163dda00 Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 25 Jun 2026 22:17:40 +0200 Subject: [PATCH 35/51] =?UTF-8?q?feat(D.2b):=20Character=20window=20?= =?UTF-8?q?=E2=80=94=20value=20captions=20+=20tab=20bar=20sprites=20+=20fo?= =?UTF-8?q?oter=20legibility?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Gap 1 — Header captions: - 0x1000023A ("Character Level") above the level value: bound via LabelLeft(). - 0x10000234 ("Total Experience (XP):") left of total XP: bound via LabelLeft(). - 0x10000237/0x10000238 (XP-to-level label + value) are children of the UiMeter (0x10000236, ConsumesDatChildren=true) and cannot be bound — documented in code comments; XP meter fill still bound via Fill=XpFraction. Gap 2 — Tab bar sprites: - Tab group elements 0x10000228/229/538 are Type-12 UIElement_Text in the dat (ConsumesDatChildren=true), so the three button children (left-cap, center, right-cap) are consumed at import and absent from the widget tree. Old SetTabState/SetButtonStateRecursive found no UiButton children to set. - Fix: AddTabSprites() injects three UiText sprite-children per group using the known RenderSurface ids confirmed from the retail UI layout dump: Open (active) 0x06005D92/0x06005D94/0x06005D96 Closed (inactive) 0x06005D93/0x06005D95/0x06005D97 Source: dump nodes 0x10000439/0x100000E9/0x10000215 in layout 0x2100002E, state_id 11=Closed, 12=Open per gmTabUI::SetActive(bool). Gap 3 — Footer legibility: - The shared footer child ids (0x1000024E etc.) appear in THREE footer-state groups (A/B/C). ImportedLayout._byId stores the LAST duplicate = narrower State B/C copies (145px labels). Fix: hide State B/C groups (footerB/footerC Visible=false), walk State A container (0x10000240) positionally to bind the wider State A labels (195px). FooterLine1Label now reads "Skill Credits Available:" and FooterLine2Label reads "Unassigned Experience:" at full width. Tests: 3 old tab-state tests (SetButtonStateRecursive expectation) replaced by 4 new sprite-injection tests + 2 caption-binding tests. Full suite: 676 pass, 0 fail (was 673 pass after 3 failures). Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/ISSUES.md | 15 + .../UI/Layout/CharacterStatController.cs | 265 ++++++++++++++---- .../UI/Layout/CharacterStatControllerTests.cs | 102 +++++-- 3 files changed, 297 insertions(+), 85 deletions(-) diff --git a/docs/ISSUES.md b/docs/ISSUES.md index b4ba10c8..240de6d4 100644 --- a/docs/ISSUES.md +++ b/docs/ISSUES.md @@ -46,6 +46,21 @@ Copy this block when adding a new issue: --- +## #149 — Studio: inventory window (0x21000023) renders all-black in preview + +**Status:** OPEN +**Severity:** MEDIUM +**Filed:** 2026-06-25 +**Component:** ui (studio) + +**Description:** `AcDream.App ui-studio "" --layout 0x21000023 --screenshot out.png` renders a flat ~1.2 KB dark-canvas image — the inventory frame / grid / paperdoll don't draw. No exception, no console output. Other studio panels render fine (vitals 0x2100006C, character 0x2100002E, toolbar 0x21000016); the inventory works in the live game (F12). Matters for the planned multi-window "full mockup" studio mode. + +**Root cause / status:** Pre-existing (identical at commits 9021600 and eccacc5; NOT the CascadeHeight change). The binding does not throw. Likely the studio host/render-stack omits state the inventory's whole-window Draggable frame + sub-window mounts (paperdoll / gmBackpackUI / gm3DItemsUI) need, or a sprite-resolve / z-order gap specific to the studio host. The 3-D viewports may legitimately need game-only RTT/mesh state (OK to leave empty) but the FRAME should still draw. + +**Files:** `src/AcDream.App/Studio/FixtureProvider.cs` (case 0x21000023u), `src/AcDream.App/Studio/StudioWindow.cs`, `src/AcDream.App/Studio/PanelFbo.cs`. + +**Investigation start:** dump the imported tree (rects / Visible / media) vs a working panel; confirm the frame backdrop sprite resolves via `RenderStack.ResolveChrome`; compare `StudioWindow`'s UiHost build vs `GameWindow`'s inventory path. + ## #148 — Status-bar backpack icon should toggle the inventory window (stateful open/closed) **Status:** OPEN diff --git a/src/AcDream.App/UI/Layout/CharacterStatController.cs b/src/AcDream.App/UI/Layout/CharacterStatController.cs index 3600401c..10022863 100644 --- a/src/AcDream.App/UI/Layout/CharacterStatController.cs +++ b/src/AcDream.App/UI/Layout/CharacterStatController.cs @@ -45,23 +45,59 @@ namespace AcDream.App.UI.Layout; public static class CharacterStatController { // ── gmStatManagementUI header element ids (sub-layout 0x2100002C content) ── - public const uint NameId = 0x10000231u; // m_pNameText - public const uint HeritageId = 0x10000232u; // m_pHeritageText - public const uint PkStatusId = 0x10000233u; // m_pPKStatusText - public const uint LevelId = 0x1000023Bu; // m_pLevelText (right-side level area) - public const uint TotalXpId = 0x10000235u; // m_pTotalXPText - public const uint XpMeterId = 0x10000236u; // m_pXPToLevelMeter (UiMeter) + public const uint NameId = 0x10000231u; // m_pNameText + public const uint HeritageId = 0x10000232u; // m_pHeritageText + public const uint PkStatusId = 0x10000233u; // m_pPKStatusText + public const uint LevelCaptionId = 0x1000023Au; // "Character Level" caption ABOVE level value + public const uint LevelId = 0x1000023Bu; // m_pLevelText (right-side level area) + public const uint TotalXpLabelId = 0x10000234u; // "Total Experience (XP):" caption left of value + public const uint TotalXpId = 0x10000235u; // m_pTotalXPText + public const uint XpMeterId = 0x10000236u; // m_pXPToLevelMeter (UiMeter) + // NOTE: 0x10000237 (XP-to-level label) and 0x10000238 (XP-to-level value) are children of + // the UiMeter element 0x10000236 and are consumed by it (UiMeter.ConsumesDatChildren=true). + // FindElement returns NULL for both. They cannot be bound via the element id. + // The XP meter itself renders the track sprite; the controller binds Fill=XpFraction. public const uint ListBoxId = 0x1000023Du; // m_pListBox container + // ── Footer STATE-A container id ────────────────────────────────────────── + // 0x10000240 is the "nothing selected" footer group. Its children (0x1000024E label row, + // 0x10000242–0x10000245 labels+values) are the correct State-A versions with wider + // label widths (195px vs 145px in State B). _byId stores the LAST duplicate, which + // is the narrower State-B/C copy — so we walk the tree to 0x10000240 and bind from there. + public const uint FooterStateAId = 0x10000240u; // State-A footer container (nothing selected) + public const uint FooterStateBId = 0x10000241u; // State-B footer container (row selected) + public const uint FooterStateCId = 0x10000247u; // State-C footer container (hide inactive) + // ── Tab bar element ids (LayoutDesc 0x2100002E root) ──────────────────── - // Three group containers, each holding three UiButton children forming the 3-piece - // tab visual. State "Open" (UIStateId 0x0C) = active; "Closed" (0x0B) = inactive. - // Source: gmTabUI::SetActive(bool) — the tab-bar controller calls SetState(Open/Closed) - // on the three child buttons of the active vs inactive tab slots. + // In the imported tree each tab group (0x10000228/229/538) resolves to a UiText with + // ConsumesDatChildren=true, so the three button children (left-cap, label, right-cap) + // are consumed at import time and not present in the widget tree. + // + // Fix: the controller adds three sprite-drawing children to each UiText manually, using + // the known RenderSurface ids from the retail UI layout dump (2026-06-25): + // Closed (inactive) state: left=0x06005D93, center=0x06005D95, right=0x06005D97 + // Open (active) state: left=0x06005D92, center=0x06005D94, right=0x06005D96 + // Source: state_id 11=Closed, 12=Open per gmTabUI::SetActive(bool); sprite ids confirmed + // from retail UI layout dump nodes 0x10000439, 0x100000E9, 0x10000215 in layout 0x2100002E. public const uint TabAttribId = 0x10000228u; // Attributes tab group public const uint TabSkillsId = 0x10000229u; // Skills tab group public const uint TabTitlesId = 0x10000538u; // Titles tab group + // Tab button piece widths and shared height (from dump node rects). + private const float TabLeftCapW = 17f; // left-cap button width + private const float TabCenterW = 58f; // center label button width + private const float TabRightCapW = 17f; // right-cap button width + private const float TabH = 25f; // button height + + // Tab sprite ids per state (Open = active, Closed = inactive). + // Source: retail UI layout dump nodes 0x10000439/0x100000E9/0x10000215 in 0x2100002E. + private const uint TabOpenLeft = 0x06005D92u; + private const uint TabOpenCenter = 0x06005D94u; + private const uint TabOpenRight = 0x06005D96u; + private const uint TabClosedLeft = 0x06005D93u; + private const uint TabClosedCenter = 0x06005D95u; + private const uint TabClosedRight = 0x06005D97u; + // ── Footer element ids (gmStatManagementUI struct fields) ──────────────── // Source: acclient.h / DisplayDefaultFooter (0x0049cde0) public const uint FooterTitleId = 0x1000024eu; // GetFooterTitleLabel @@ -141,22 +177,35 @@ public static class CharacterStatController Label(layout, NameId, datFont, Gold, () => data().Name); Label(layout, HeritageId, datFont, Body, () => data().Heritage ?? data().Race ?? string.Empty); Label(layout, PkStatusId, datFont, Body, () => data().PkStatus ?? string.Empty); - Label(layout, LevelId, datFont, Gold, () => data().Level.ToString()); - Label(layout, TotalXpId, datFont, Body, () => data().TotalXp.ToString("N0")); + + // ── Header captions (new — retail labels above/left of each number) ────── + // 0x1000023A = "Character Level" caption area above the level value (235,0,65×35). + // Source: dump idx=29/30; spec §Header element map. + LabelLeft(layout, LevelCaptionId, datFont, Body, static () => "Character Level"); + + Label(layout, LevelId, datFont, Gold, () => data().Level.ToString()); + + // 0x10000234 = "Total Experience (XP):" caption, left of the XP value. + // Source: dump idx=22; spec §Header element map. + LabelLeft(layout, TotalXpLabelId, datFont, Body, static () => "Total Experience (XP):"); + + Label(layout, TotalXpId, datFont, Body, () => data().TotalXp.ToString("N0")); // XP-to-level meter fill (gmStatManagementUI::UpdateExperience 0x004f0a70). + // NOTE: child elements 0x10000237 (label) and 0x10000238 (value) are consumed by + // the UiMeter and cannot be bound — FindElement returns NULL for both. if (layout.FindElement(XpMeterId) is UiMeter meter) meter.Fill = () => data().XpFraction; - // ── Tab bar button states ───────────────────────────────────────────── - // Each tab group (0x10000228/229/538) is a UiDatElement container whose children - // are UiButton widgets that form the 3-piece tab visual. Setting ActiveState on - // all children to "Open" or "Closed" switches the visible sprite set. - // Source: UIStateId.Open (0x0C) / UIStateId.Closed (0x0B). - // Only Attributes is active; Skills + Titles controllers don't exist yet. - SetTabState(layout, TabAttribId, StateOpen); - SetTabState(layout, TabSkillsId, StateClosed); - SetTabState(layout, TabTitlesId, StateClosed); + // ── Tab bar sprite children ────────────────────────────────────────── + // The tab groups are UiText (Type 12) with ConsumesDatChildren=true, so the + // three button children (left-cap/label/right-cap) were consumed at import and + // are absent from the widget tree. Add sprite-drawing children manually here + // using the known RenderSurface ids from the dump. + // Attributes tab = Open (active); Skills + Titles = Closed (inactive). + AddTabSprites(layout, TabAttribId, spriteResolve, isOpen: true); + AddTabSprites(layout, TabSkillsId, spriteResolve, isOpen: false); + AddTabSprites(layout, TabTitlesId, spriteResolve, isOpen: false); // ── Attribute list — 9 rows in list box 0x1000023D ──────────────────── // Mutable selected-index box: -1 = nothing selected. @@ -191,8 +240,18 @@ public static class CharacterStatController foreach (var b in allRaise1) b.Visible = false; foreach (var b in allRaise10) b.Visible = false; + // ── Footer State B/C visibility ─────────────────────────────────────── + // There are THREE footer state groups (A=0x10000240, B=0x10000241, C=0x10000247) + // all stacked at the same position. The shared child ids (0x1000024E, 0x10000242, + // etc.) appear once in each; _byId stores only the LAST duplicate (State C or B copy) + // which uses narrower label widths (145px vs 195px in State A) designed to fit the + // raise buttons. Hide B and C initially so only State A is visible. + if (layout.FindElement(FooterStateBId) is { } footerB) footerB.Visible = false; + if (layout.FindElement(FooterStateCId) is { } footerC) footerC.Visible = false; + // ── Footer State A initial binding ──────────────────────────────────── - // All footer providers close over sel[] so they can reflect State A vs B per frame. + // Walk to the State-A container directly (rather than _byId which returns the + // last duplicate) so we get the wider-label copies (195px) for the unselected state. BindFooterDynamic(layout, datFont, data, sel); List? rowPanels = null; @@ -214,32 +273,6 @@ public static class CharacterStatController } } - // ── Tab bar state ──────────────────────────────────────────────────────── - - /// - /// Set the on ALL descendants - /// of the tab group container identified by to - /// . The three-piece tab visual is composed of three UiButton - /// children (left-cap, label/center, right-cap) that must all share the same state. - /// - /// Source: retail tab-button assembly with child buttons having UIStateId states - /// "Closed" (0x0B) and "Open" (0x0C) in the dump — confirmed from - /// docs/research/2026-06-25-retail-ui-layout-dump.json. - /// - private static void SetTabState(ImportedLayout layout, uint groupId, string state) - { - if (layout.FindElement(groupId) is not { } group) return; - SetButtonStateRecursive(group, state); - } - - private static void SetButtonStateRecursive(UiElement node, string state) - { - if (node is UiButton btn) - btn.ActiveState = state; - foreach (var child in node.Children) - SetButtonStateRecursive(child, state); - } - // ── 9-row attribute list ───────────────────────────────────────────────── private static List BuildAttributeRows( @@ -515,6 +548,12 @@ public static class CharacterStatController /// title = "{AttrName}: {value}" (e.g. "Focus: 10"); line-1 label = "Experience To Raise:"; /// line-1 value = raise cost; line-2 label = "Unassigned Experience:"; /// line-2 value = UnassignedXp. + /// + /// Footer element ids appear in THREE footer-state groups (0x10000240 State A, + /// 0x10000241 State B, 0x10000247 State C). _byId stores the LAST duplicate, + /// which is the State B/C copy with narrower labels (145px vs 195px in State A). To get + /// the correct wide-label State A elements, we find the State A container directly and + /// walk to the child elements by id within that subtree. /// private static void BindFooterDynamic( ImportedLayout layout, @@ -522,8 +561,28 @@ public static class CharacterStatController Func data, int[] sel) { - // Title: State A = "Select an Attribute to Improve"; State B = "{name}: {value}" - Label(layout, FooterTitleId, datFont, Body, () => + // Walk the State A container (0x10000240) to find the wide-label copies of the + // footer child elements. The children of 0x10000240 in positional order are: + // [0] title (0x1000024E) at (0,0,300,20) + // [1] line-1 label (0x10000242) at (5,20,195,17) ← wide: 195px (State A) + // [2] line-1 value (0x10000243) at (200,20,95,17) + // [3] line-2 label (0x10000244) at (5,37,195,18) + // [4] line-2 value (0x10000245) at (200,37,95,18) + // The State B/C copies use narrower labels (145px) to accommodate raise buttons at x=260. + // We use positional indexing rather than EventId (which is auto-assigned by UiRoot, not + // set from the dat element id, so EventId does NOT equal the dat handle). + // If the State A container exists in the tree (production layout), bind from its + // positional children so we get the 195px-wide labels rather than the narrower + // State B/C copies that _byId would return. Fall back to _byId for fake/test layouts. + var stateA = layout.FindElement(FooterStateAId); + + UiText? T(int index, uint fallbackId) + => stateA is not null + ? GetTextChildAt(stateA, index) + : layout.FindElement(fallbackId) as UiText; + + // Title (0x1000024E = child 0): State A = "Select an Attribute to Improve"; State B = "{name}: {value}" + LabelProvider(T(0, FooterTitleId), datFont, Body, () => { if (sel[0] < 0) return "Select an Attribute to Improve"; var s = data(); @@ -532,24 +591,24 @@ public static class CharacterStatController return $"{name}: {value}"; }); - // Line-1 label: State A = "Skill Credits Available:"; State B = "Experience To Raise:" - Label(layout, FooterLine1Label, datFont, Body, () => + // Line-1 label (0x10000242 = child 1): State A = "Skill Credits Available:"; State B = "Experience To Raise:" + LabelProvider(T(1, FooterLine1Label), datFont, Body, () => sel[0] < 0 ? "Skill Credits Available:" : "Experience To Raise:"); - // Line-1 value: State A = SkillCredits; State B = raise cost - Label(layout, FooterLine1Value, datFont, Body, () => + // Line-1 value (0x10000243 = child 2): State A = SkillCredits; State B = raise cost + LabelProvider(T(2, FooterLine1Value), datFont, Body, () => { if (sel[0] < 0) return data().SkillCredits.ToString(); long cost = GetRaiseCost(data(), sel[0]); return cost > 0 ? cost.ToString("N0") : "—"; }); - // Line-2 label: "Unassigned Experience:" in both states - Label(layout, FooterLine2Label, datFont, Body, + // Line-2 label (0x10000244 = child 3): "Unassigned Experience:" in both states + LabelProvider(T(3, FooterLine2Label), datFont, Body, static () => "Unassigned Experience:"); - // Line-2 value: UnassignedXp in both states - Label(layout, FooterLine2Value, datFont, Body, + // Line-2 value (0x10000245 = child 4): UnassignedXp in both states + LabelProvider(T(4, FooterLine2Value), datFont, Body, () => data().UnassignedXp.ToString("N0")); } @@ -574,6 +633,96 @@ public static class CharacterStatController } } + /// Left-justified label (for captions that should be left-aligned, not centered). + private static void LabelLeft(ImportedLayout layout, uint id, UiDatFont? datFont, Vector4 color, Func text) + { + if (layout.FindElement(id) is UiText t) + { + t.DatFont = datFont; + t.Centered = false; + t.RightAligned = false; + t.ClickThrough = true; + t.LinesProvider = () => new[] { new UiText.Line(text(), color) }; + } + } + + /// Bind a directly-located widget with a provider. + /// Used when the widget was found by subtree walk rather than FindElement. + private static void LabelProvider(UiText? t, UiDatFont? datFont, Vector4 color, Func text) + { + if (t is null) return; + t.DatFont = datFont; + t.Centered = false; + t.RightAligned = false; + t.ClickThrough = true; + t.LinesProvider = () => new[] { new UiText.Line(text(), color) }; + } + + /// + /// Returns the child of at positional + /// index (zero-based). Used to locate footer children within the + /// State-A container by position rather than by dat id (which is not stored in EventId + /// by the production importer — EventId is auto-assigned by UiRoot.AddPanel). + /// Returns null if the index is out of range or the child is not UiText. + /// + private static UiText? GetTextChildAt(UiElement? parent, int index) + { + if (parent is null || index < 0 || index >= parent.Children.Count) return null; + return parent.Children[index] as UiText; + } + + /// + /// Add the three sprite-drawing children to a tab group element + /// to render the 3-piece tab button (left-cap / center / right-cap). The tab group + /// elements are type-12 UIElement_Text in the dat, so their button children were consumed + /// at import (ConsumesDatChildren=true). This method injects the visual equivalent. + /// + /// Sprite ids from the retail UI layout dump (2026-06-25), nodes + /// 0x10000439/0x100000E9/0x10000215 in layout 0x2100002E: + /// Open (active): 0x06005D92/0x06005D94/0x06005D96; + /// Closed (inactive): 0x06005D93/0x06005D95/0x06005D97. + /// + private static void AddTabSprites( + ImportedLayout layout, + uint groupId, + Func? spriteResolve, + bool isOpen) + { + if (layout.FindElement(groupId) is not { } group) return; + if (spriteResolve is null) return; + + uint leftId = isOpen ? TabOpenLeft : TabClosedLeft; + uint centerId = isOpen ? TabOpenCenter : TabClosedCenter; + uint rightId = isOpen ? TabOpenRight : TabClosedRight; + + // Left cap: 17×25 at x=0 + AddSpriteChild(group, spriteResolve, x: 0f, y: 0f, w: TabLeftCapW, h: TabH, spriteId: leftId); + // Center: 58×25 at x=17 + AddSpriteChild(group, spriteResolve, x: TabLeftCapW, y: 0f, w: TabCenterW, h: TabH, spriteId: centerId); + // Right cap: 17×25 at x=75 + AddSpriteChild(group, spriteResolve, x: TabLeftCapW + TabCenterW, y: 0f, w: TabRightCapW, h: TabH, spriteId: rightId); + } + + /// Add a single sprite-drawing child to . + private static void AddSpriteChild( + UiElement parent, + Func spriteResolve, + float x, float y, float w, float h, uint spriteId) + { + parent.AddChild(new UiText + { + Left = x, + Top = y, + Width = w, + Height = h, + BackgroundSprite = spriteId, + SpriteResolve = id => { var (tex, tw, th) = spriteResolve(id); return (tex, tw, th); }, + LinesProvider = static () => System.Array.Empty(), + ClickThrough = true, + Anchors = AnchorEdges.Left | AnchorEdges.Top, + }); + } + /// /// Depth-first tree walk to collect every that was registered /// in under the given dat element . diff --git a/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs b/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs index dc14bf60..cd17f04b 100644 --- a/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs +++ b/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs @@ -514,51 +514,71 @@ public class CharacterStatControllerTests } // ── Pass 2: Tab button states ───────────────────────────────────────────── + // Tab groups are UiText (Type 12) with ConsumesDatChildren=true; their button + // children are consumed at import time. AddTabSprites() injects 3 UiText + // sprite-children per group when a spriteResolve is provided. [Fact] - public void TabButtons_AttributesGroupButtons_SetToOpenState() + public void TabButtons_NoSpriteResolve_AddsNoSpriteChildren() { - var tabGroup = new UiPanel(); // fake tab group container - var btn1 = MakeButton(); - var btn2 = MakeButton(); - tabGroup.AddChild(btn1); - tabGroup.AddChild(btn2); + // When spriteResolve is null, AddTabSprites returns early — no children added. + var tabGroup = new UiText(); + var layout = Fake((CharacterStatController.TabAttribId, tabGroup)); - var layout = Fake((CharacterStatController.TabAttribId, tabGroup)); + CharacterStatController.Bind(layout, SampleData.SampleCharacter, spriteResolve: null); - CharacterStatController.Bind(layout, SampleData.SampleCharacter); - - // All UiButton children of the Attributes group should be "Open". - Assert.Equal("Open", btn1.ActiveState); - Assert.Equal("Open", btn2.ActiveState); + Assert.Empty(tabGroup.Children); } [Fact] - public void TabButtons_SkillsGroupButtons_SetToClosedState() + public void TabButtons_AttributesGroup_AddsThreeOpenSpriteChildren() { - var tabGroup = new UiPanel(); - var btn = MakeButton(); - tabGroup.AddChild(btn); + // Attributes tab (isOpen=true): three UiText sprite children with Open sprite ids. + var tabGroup = new UiText(); + var layout = Fake((CharacterStatController.TabAttribId, tabGroup)); - var layout = Fake((CharacterStatController.TabSkillsId, tabGroup)); + CharacterStatController.Bind(layout, SampleData.SampleCharacter, + spriteResolve: id => (id, 16, 16)); - CharacterStatController.Bind(layout, SampleData.SampleCharacter); - - Assert.Equal("Closed", btn.ActiveState); + var sprites = tabGroup.Children.OfType().ToList(); + Assert.Equal(3, sprites.Count); + Assert.Equal(0x06005D92u, sprites[0].BackgroundSprite); // Open left-cap + Assert.Equal(0x06005D94u, sprites[1].BackgroundSprite); // Open center + Assert.Equal(0x06005D96u, sprites[2].BackgroundSprite); // Open right-cap } [Fact] - public void TabButtons_TitlesGroupButtons_SetToClosedState() + public void TabButtons_SkillsGroup_AddsThreeClosedSpriteChildren() { - var tabGroup = new UiPanel(); - var btn = MakeButton(); - tabGroup.AddChild(btn); + // Skills tab (isOpen=false): three UiText sprite children with Closed sprite ids. + var tabGroup = new UiText(); + var layout = Fake((CharacterStatController.TabSkillsId, tabGroup)); - var layout = Fake((CharacterStatController.TabTitlesId, tabGroup)); + CharacterStatController.Bind(layout, SampleData.SampleCharacter, + spriteResolve: id => (id, 16, 16)); - CharacterStatController.Bind(layout, SampleData.SampleCharacter); + var sprites = tabGroup.Children.OfType().ToList(); + Assert.Equal(3, sprites.Count); + Assert.Equal(0x06005D93u, sprites[0].BackgroundSprite); // Closed left-cap + Assert.Equal(0x06005D95u, sprites[1].BackgroundSprite); // Closed center + Assert.Equal(0x06005D97u, sprites[2].BackgroundSprite); // Closed right-cap + } - Assert.Equal("Closed", btn.ActiveState); + [Fact] + public void TabButtons_TitlesGroup_AddsThreeClosedSpriteChildren() + { + // Titles tab (isOpen=false): three UiText sprite children with Closed sprite ids. + var tabGroup = new UiText(); + var layout = Fake((CharacterStatController.TabTitlesId, tabGroup)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter, + spriteResolve: id => (id, 16, 16)); + + var sprites = tabGroup.Children.OfType().ToList(); + Assert.Equal(3, sprites.Count); + Assert.Equal(0x06005D93u, sprites[0].BackgroundSprite); // Closed left-cap + Assert.Equal(0x06005D95u, sprites[1].BackgroundSprite); // Closed center + Assert.Equal(0x06005D97u, sprites[2].BackgroundSprite); // Closed right-cap } // ── Affordability helpers (GetRaiseCost) ────────────────────────────────── @@ -644,6 +664,34 @@ public class CharacterStatControllerTests Assert.True(t.RightAligned); } + // ── Header captions (new — LevelCaptionId + TotalXpLabelId) ───────────── + + [Fact] + public void Bind_LevelCaptionId_SetsCharacterLevelText() + { + var caption = new UiText(); + var layout = Fake((CharacterStatController.LevelCaptionId, caption)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + Assert.Equal("Character Level", caption.LinesProvider()[0].Text); + Assert.False(caption.Centered, "LevelCaption must be left-justified (Centered=false)"); + Assert.False(caption.RightAligned, "LevelCaption must be left-justified (RightAligned=false)"); + } + + [Fact] + public void Bind_TotalXpLabelId_SetsTotalExperienceXpText() + { + var lbl = new UiText(); + var layout = Fake((CharacterStatController.TotalXpLabelId, lbl)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + Assert.Equal("Total Experience (XP):", lbl.LinesProvider()[0].Text); + Assert.False(lbl.Centered, "TotalXpLabel must be left-justified (Centered=false)"); + Assert.False(lbl.RightAligned, "TotalXpLabel must be left-justified (RightAligned=false)"); + } + // ── Robustness ──────────────────────────────────────────────────────────── [Fact] From 5aa65dbd43214e420c0d93ebb91508325d544e57 Mon Sep 17 00:00:00 2001 From: Erik Date: Thu, 25 Jun 2026 22:59:44 +0200 Subject: [PATCH 36/51] =?UTF-8?q?fix(D.2b):=20Character=20window=20?= =?UTF-8?q?=E2=80=94=20tab=20bar=20sprites=20on=20root=20+=20footer=20Stat?= =?UTF-8?q?e-A=20all=203=20lines?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit BUG 1 (tab bar): Tab group elements (0x10000228/229/538) are UiText with ConsumesDatChildren=true so their 3 button children are consumed at import. Fix: inject 3 sprite UiTexts per tab as CHILDREN OF LAYOUT ROOT at absolute tab rects, ZOrder=8/9 so they draw over dat-imported UiTexts (ZOrder=1-3). Original tab groups hidden. Active tab (Attributes) gold; inactive parchment. BUG 2 (footer): Three root causes, all fixed. (a) _byId stores LAST registered copy per id: stateA (0x10000240) was the Titles-page copy, hidden by the page-visibility pass. Fixed by walking root.Children to find the Attributes page (contains NameId) then FindInSubtree for stateA within that subtree. (b) Attributes-page stateB/stateC siblings (stacked at y=545) were still Visible=True, drawing over stateA line-1/line-2. Fixed with HideAllById walking the Attributes page subtree for ids 241/247. (c) Footer label elements (H=17-18px, Padding=4f) were routed through UiTexts scroll path: bottom-pinned baseY ended above the top clip boundary, silently blanking all text. Fixed: LabelProvider sets Padding=0f for directly-bound footer single-line labels. UiDatElement.ElementId exposes _info.Id for subtree id-based walks. 676 tests pass, vitals panel unaffected (regression screenshot clean). Co-Authored-By: Claude Sonnet 4.6 --- .../UI/Layout/CharacterStatController.cs | 271 +++++++++++++----- src/AcDream.App/UI/Layout/UiDatElement.cs | 5 + .../UI/Layout/CharacterStatControllerTests.cs | 71 ++--- 3 files changed, 236 insertions(+), 111 deletions(-) diff --git a/src/AcDream.App/UI/Layout/CharacterStatController.cs b/src/AcDream.App/UI/Layout/CharacterStatController.cs index 10022863..a1816504 100644 --- a/src/AcDream.App/UI/Layout/CharacterStatController.cs +++ b/src/AcDream.App/UI/Layout/CharacterStatController.cs @@ -197,15 +197,36 @@ public static class CharacterStatController if (layout.FindElement(XpMeterId) is UiMeter meter) meter.Fill = () => data().XpFraction; - // ── Tab bar sprite children ────────────────────────────────────────── - // The tab groups are UiText (Type 12) with ConsumesDatChildren=true, so the - // three button children (left-cap/label/right-cap) were consumed at import and - // are absent from the widget tree. Add sprite-drawing children manually here - // using the known RenderSurface ids from the dump. - // Attributes tab = Open (active); Skills + Titles = Closed (inactive). - AddTabSprites(layout, TabAttribId, spriteResolve, isOpen: true); - AddTabSprites(layout, TabSkillsId, spriteResolve, isOpen: false); - AddTabSprites(layout, TabTitlesId, spriteResolve, isOpen: false); + // ── Tab bar sprite children (added to PANEL ROOT, not to the tab groups) ─── + // The tab groups (0x10000228/229/538) are UiText (Type 12) with + // ConsumesDatChildren=true, so their 3 button children were consumed at import. + // We inject the visual equivalent — 3 sprite UiTexts per tab — as CHILDREN OF + // layout.Root at the tab's ABSOLUTE screen position, NOT as children of the tab + // groups. This matters because the page-visibility pass (below) iterates + // root.Children and hides any child that doesn't contain NameId; if we added + // sprites to the tab groups, those groups would have non-zero Children.Count + // and be eligible for the pass, then hidden (since NameId is in the content area). + // By adding to root instead, the tab groups keep Children.Count==0 and are skipped + // by "if (page.Children.Count == 0) continue" — they stay visible always. + // Source: retail dump tab rects confirmed (2026-06-25): + // Attributes = (0,0,92,25), Skills = (92,0,92,25), Titles = (184,0,92,25). + if (layout.Root is { } tabRoot && spriteResolve is not null) + { + // Hide the original tab group elements (0x10000228/229/538): they are UiText + // nodes that render their own state sprite at ZOrder=1/2/3. Our replacement + // sprites go to root at ZOrder=8 (above them), so the originals would paint + // underneath. Hiding them avoids the double-draw and any opaque overlap. + if (layout.FindElement(TabAttribId) is { } origAttr) origAttr.Visible = false; + if (layout.FindElement(TabSkillsId) is { } origSkills) origSkills.Visible = false; + if (layout.FindElement(TabTitlesId) is { } origTitles) origTitles.Visible = false; + + AddTabSpritesToRoot(tabRoot, spriteResolve, datFont, + tabX: 0f, label: "Attributes", isOpen: true); + AddTabSpritesToRoot(tabRoot, spriteResolve, datFont, + tabX: 92f, label: "Skills", isOpen: false); + AddTabSpritesToRoot(tabRoot, spriteResolve, datFont, + tabX: 184f, label: "Titles", isOpen: false); + } // ── Attribute list — 9 rows in list box 0x1000023D ──────────────────── // Mutable selected-index box: -1 = nothing selected. @@ -242,10 +263,28 @@ public static class CharacterStatController // ── Footer State B/C visibility ─────────────────────────────────────── // There are THREE footer state groups (A=0x10000240, B=0x10000241, C=0x10000247) - // all stacked at the same position. The shared child ids (0x1000024E, 0x10000242, - // etc.) appear once in each; _byId stores only the LAST duplicate (State C or B copy) - // which uses narrower label widths (145px vs 195px in State A) designed to fit the - // raise buttons. Hide B and C initially so only State A is visible. + // all stacked at the same position within the Attributes page. _byId stores only + // the LAST copy of each id; the others live in the VISIBLE Attributes page and must + // also be hidden. + // + // Strategy: walk the Attributes page (the root child that contains the NameId anchor) + // and hide every UiDatElement whose ElementId matches B or C. The page-visibility + // pass hides everything in the Skills/Titles pages, so we only need to act on the + // Attributes page's copies. + if (layout.FindElement(NameId) is { } bAnchor && layout.Root is { } fbRoot) + { + foreach (var fbPage in fbRoot.Children) + { + if (fbPage.Children.Count == 0) continue; + if (!ContainsWidget(fbPage, bAnchor)) continue; + // This is the Attributes page. Hide all stateB and stateC copies in it. + HideAllById(fbPage, FooterStateBId); + HideAllById(fbPage, FooterStateCId); + break; + } + } + // Also hide the last-registered copies (in the _byId dict, which may be from a + // different page). Belt-and-suspenders. if (layout.FindElement(FooterStateBId) is { } footerB) footerB.Visible = false; if (layout.FindElement(FooterStateCId) is { } footerC) footerC.Visible = false; @@ -562,27 +601,62 @@ public static class CharacterStatController int[] sel) { // Walk the State A container (0x10000240) to find the wide-label copies of the - // footer child elements. The children of 0x10000240 in positional order are: - // [0] title (0x1000024E) at (0,0,300,20) - // [1] line-1 label (0x10000242) at (5,20,195,17) ← wide: 195px (State A) - // [2] line-1 value (0x10000243) at (200,20,95,17) - // [3] line-2 label (0x10000244) at (5,37,195,18) - // [4] line-2 value (0x10000245) at (200,37,95,18) - // The State B/C copies use narrower labels (145px) to accommodate raise buttons at x=260. - // We use positional indexing rather than EventId (which is auto-assigned by UiRoot, not - // set from the dat element id, so EventId does NOT equal the dat handle). - // If the State A container exists in the tree (production layout), bind from its - // positional children so we get the 195px-wide labels rather than the narrower - // State B/C copies that _byId would return. Fall back to _byId for fake/test layouts. - var stateA = layout.FindElement(FooterStateAId); + // footer child elements. The 5 children of 0x10000240 at their LOCAL coords: + // title (0x1000024E): Left=0, Top=0, W=300, H=55 + // line-1 label (0x10000242): Left=5, Top=20, W=195 (State A wide) vs 145 (B/C narrow) + // line-1 value (0x10000243): Left=200, Top=20, W=95 + // line-2 label (0x10000244): Left=5, Top=37, W=195 (State A wide) vs 145 (B/C narrow) + // line-2 value (0x10000245): Left=200, Top=37, W=95 + // The State B/C copies use narrower labels (145px) to accommodate raise buttons. + // + // IMPORTANT: The footer state id (0x10000240) appears once per tab-page sub-layout + // (Attributes / Skills / Titles). layout._byId stores only the LAST registered copy, + // which ends up in the LAST-imported tab page (Titles). The page-visibility pass + // hides the Titles page → the bound footer elements would be invisible. + // + // Fix: find stateA in the SAME subtree as the anchor element (NameId=0x10000231). + // The anchor is in the Attributes content area (the page the pass keeps Visible=True). + // We walk every root-level content area to find the one that contains the anchor, + // then walk that subtree for the footer container. + UiElement? stateA = null; + if (layout.FindElement(NameId) is { } anchor && layout.Root is { } visRoot) + { + // Find the root-level content page that contains the anchor. + foreach (var page in visRoot.Children) + { + if (page.Children.Count == 0) continue; + if (!ContainsWidget(page, anchor)) continue; + // This page will be Visible=True. Walk it for FooterStateAId. + stateA = FindInSubtree(page, static el => + el is UiDatElement d && d.ElementId == FooterStateAId); + break; + } + } + // Fallback: layout._byId (test layouts with a single page). + stateA ??= layout.FindElement(FooterStateAId); - UiText? T(int index, uint fallbackId) - => stateA is not null - ? GetTextChildAt(stateA, index) - : layout.FindElement(fallbackId) as UiText; + // Position-based lookup within stateA's children. + // If stateA is null or the element isn't found, falls back to layout._byId. + UiText? ByPos(float top, float left, uint fallbackId) + { + if (stateA is not null) + { + foreach (var c in stateA.Children) + if (c is UiText t + && Math.Abs(c.Top - top) < 1f + && Math.Abs(c.Left - left) < 1f) + return t; + } + return layout.FindElement(fallbackId) as UiText; + } - // Title (0x1000024E = child 0): State A = "Select an Attribute to Improve"; State B = "{name}: {value}" - LabelProvider(T(0, FooterTitleId), datFont, Body, () => + // Title (Top=0, Left=0): State A = "Select an Attribute to Improve"; State B = "{name}: {value}" + // Clear BackgroundSprite on the title element: it is H=55 (full footer height) in the dat + // and its background sprite would cover the line-1/line-2 elements at local y=20/37. + // The controller owns the footer visual; the dat sprite is superfluous here. + var titleEl = ByPos(0f, 0f, FooterTitleId); + if (titleEl is not null) titleEl.BackgroundSprite = 0; + LabelProvider(titleEl, datFont, Body, () => { if (sel[0] < 0) return "Select an Attribute to Improve"; var s = data(); @@ -591,29 +665,58 @@ public static class CharacterStatController return $"{name}: {value}"; }); - // Line-1 label (0x10000242 = child 1): State A = "Skill Credits Available:"; State B = "Experience To Raise:" - LabelProvider(T(1, FooterLine1Label), datFont, Body, () => + // Line-1 label (Top=20, Left=5): State A = "Skill Credits Available:"; State B = "Experience To Raise:" + var l1L = ByPos(20f, 5f, FooterLine1Label); + LabelProvider(l1L, datFont, Body, () => sel[0] < 0 ? "Skill Credits Available:" : "Experience To Raise:"); - // Line-1 value (0x10000243 = child 2): State A = SkillCredits; State B = raise cost - LabelProvider(T(2, FooterLine1Value), datFont, Body, () => + // Line-1 value (Top=20, Left=200): State A = SkillCredits; State B = raise cost + var l1V = ByPos(20f, 200f, FooterLine1Value); + LabelProvider(l1V, datFont, Body, () => { if (sel[0] < 0) return data().SkillCredits.ToString(); long cost = GetRaiseCost(data(), sel[0]); return cost > 0 ? cost.ToString("N0") : "—"; }); - // Line-2 label (0x10000244 = child 3): "Unassigned Experience:" in both states - LabelProvider(T(3, FooterLine2Label), datFont, Body, + // Line-2 label (Top=37, Left=5): "Unassigned Experience:" in both states + var l2L = ByPos(37f, 5f, FooterLine2Label); + LabelProvider(l2L, datFont, Body, static () => "Unassigned Experience:"); - // Line-2 value (0x10000245 = child 4): UnassignedXp in both states - LabelProvider(T(4, FooterLine2Value), datFont, Body, + // Line-2 value (Top=37, Left=200): UnassignedXp in both states + var l2V = ByPos(37f, 200f, FooterLine2Value); + LabelProvider(l2V, datFont, Body, () => data().UnassignedXp.ToString("N0")); } // ── Helpers ────────────────────────────────────────────────────────────── + /// Depth-first walk of and its descendants. + /// Sets = false on every + /// whose equals . + private static void HideAllById(UiElement node, uint targetId) + { + if (node is UiDatElement d && d.ElementId == targetId) + node.Visible = false; + foreach (var child in node.Children) + HideAllById(child, targetId); + } + + /// Depth-first search of and its descendants. + /// Returns the first element for which returns true, + /// or null if none found. + private static UiElement? FindInSubtree(UiElement node, Func predicate) + { + if (predicate(node)) return node; + foreach (var child in node.Children) + { + var found = FindInSubtree(child, predicate); + if (found is not null) return found; + } + return null; + } + private static bool ContainsWidget(UiElement node, UiElement target) { if (ReferenceEquals(node, target)) return true; @@ -647,7 +750,10 @@ public static class CharacterStatController } /// Bind a directly-located widget with a provider. - /// Used when the widget was found by subtree walk rather than FindElement. + /// Used when the widget was found by subtree walk rather than FindElement. + /// Sets Padding = 0 to prevent the scroll-clip from hiding text in small + /// (H≈17–18px) footer elements: with the default Padding=4 and a dat font line-height + /// of ~12px the bottom-pinned baseY ends up above the top clip boundary → blank. private static void LabelProvider(UiText? t, UiDatFont? datFont, Vector4 color, Func text) { if (t is null) return; @@ -655,72 +761,84 @@ public static class CharacterStatController t.Centered = false; t.RightAligned = false; t.ClickThrough = true; + t.Padding = 0f; t.LinesProvider = () => new[] { new UiText.Line(text(), color) }; } /// - /// Returns the child of at positional - /// index (zero-based). Used to locate footer children within the - /// State-A container by position rather than by dat id (which is not stored in EventId - /// by the production importer — EventId is auto-assigned by UiRoot.AddPanel). - /// Returns null if the index is out of range or the child is not UiText. - /// - private static UiText? GetTextChildAt(UiElement? parent, int index) - { - if (parent is null || index < 0 || index >= parent.Children.Count) return null; - return parent.Children[index] as UiText; - } - - /// - /// Add the three sprite-drawing children to a tab group element - /// to render the 3-piece tab button (left-cap / center / right-cap). The tab group - /// elements are type-12 UIElement_Text in the dat, so their button children were consumed - /// at import (ConsumesDatChildren=true). This method injects the visual equivalent. + /// Add the three sprite pieces and the label for ONE tab to + /// as direct root children at absolute positions. Sprites go to root (not to the + /// tab group elements) so the tab groups keep Children.Count==0 and survive the + /// page-visibility pass unchanged. /// /// Sprite ids from the retail UI layout dump (2026-06-25), nodes /// 0x10000439/0x100000E9/0x10000215 in layout 0x2100002E: /// Open (active): 0x06005D92/0x06005D94/0x06005D96; /// Closed (inactive): 0x06005D93/0x06005D95/0x06005D97. + /// + /// Tab geometry confirmed from dump: each tab = 92px wide, 25px tall. + /// Left-cap = 17px, center = 58px, right-cap = 17px (total 92px). /// - private static void AddTabSprites( - ImportedLayout layout, - uint groupId, - Func? spriteResolve, + private static void AddTabSpritesToRoot( + UiElement root, + Func spriteResolve, + UiDatFont? datFont, + float tabX, + string label, bool isOpen) { - if (layout.FindElement(groupId) is not { } group) return; - if (spriteResolve is null) return; - uint leftId = isOpen ? TabOpenLeft : TabClosedLeft; uint centerId = isOpen ? TabOpenCenter : TabClosedCenter; uint rightId = isOpen ? TabOpenRight : TabClosedRight; - // Left cap: 17×25 at x=0 - AddSpriteChild(group, spriteResolve, x: 0f, y: 0f, w: TabLeftCapW, h: TabH, spriteId: leftId); - // Center: 58×25 at x=17 - AddSpriteChild(group, spriteResolve, x: TabLeftCapW, y: 0f, w: TabCenterW, h: TabH, spriteId: centerId); - // Right cap: 17×25 at x=75 - AddSpriteChild(group, spriteResolve, x: TabLeftCapW + TabCenterW, y: 0f, w: TabRightCapW, h: TabH, spriteId: rightId); + // Left cap: 17×25 at (tabX, 0) + root.AddChild(MakeSpriteElement(spriteResolve, x: tabX, y: 0f, w: TabLeftCapW, h: TabH, spriteId: leftId)); + // Center: 58×25 at (tabX+17, 0) — carries the label text on top + var center = MakeSpriteElement(spriteResolve, x: tabX + TabLeftCapW, y: 0f, w: TabCenterW, h: TabH, spriteId: centerId); + root.AddChild(center); + // Right cap: 17×25 at (tabX+75, 0) + root.AddChild(MakeSpriteElement(spriteResolve, x: tabX + TabLeftCapW + TabCenterW, y: 0f, w: TabRightCapW, h: TabH, spriteId: rightId)); + + // Label text centered on the tab center piece. + // Active (Open) tab: gold; inactive (Closed) tabs: parchment body color. + // ZOrder=9 → draws on top of the sprite background (ZOrder=8) and original tab groups (ZOrder=1–3). + Vector4 labelColor = isOpen ? Gold : Body; + string capturedLabel = label; + var labelEl = new UiText + { + Left = tabX + TabLeftCapW, + Top = 0f, + Width = TabCenterW, + Height = TabH, + ZOrder = 9, + DatFont = datFont, + ClickThrough = true, + Centered = true, + Anchors = AnchorEdges.Left | AnchorEdges.Top, + }; + labelEl.LinesProvider = () => new[] { new UiText.Line(capturedLabel, labelColor) }; + root.AddChild(labelEl); } - /// Add a single sprite-drawing child to . - private static void AddSpriteChild( - UiElement parent, + /// Build a single sprite-drawing leaf at the given position. + /// ZOrder=8 places it above the original tab-group UiTexts (ZOrder=1–3) so it draws on top. + private static UiText MakeSpriteElement( Func spriteResolve, float x, float y, float w, float h, uint spriteId) { - parent.AddChild(new UiText + return new UiText { Left = x, Top = y, Width = w, Height = h, + ZOrder = 8, BackgroundSprite = spriteId, SpriteResolve = id => { var (tex, tw, th) = spriteResolve(id); return (tex, tw, th); }, LinesProvider = static () => System.Array.Empty(), ClickThrough = true, Anchors = AnchorEdges.Left | AnchorEdges.Top, - }); + }; } /// @@ -786,4 +904,5 @@ public static class CharacterStatController foreach (var child in node.Children) CollectMatchingButtons(child, canonical, seen, result); } + } diff --git a/src/AcDream.App/UI/Layout/UiDatElement.cs b/src/AcDream.App/UI/Layout/UiDatElement.cs index 5f6ea79c..a187f008 100644 --- a/src/AcDream.App/UI/Layout/UiDatElement.cs +++ b/src/AcDream.App/UI/Layout/UiDatElement.cs @@ -42,6 +42,11 @@ public sealed class UiDatElement : UiElement private readonly ElementInfo _info; private readonly Func _resolve; + /// The dat element id from . Exposed so controllers + /// can identify which logical element a UiDatElement represents when walking subtrees + /// (e.g. footer state groups that appear once per tab page but share the same dat id). + public uint ElementId => _info.Id; + /// Which state name to render. "" = the unnamed DirectState. /// Falls back to DirectState if the named state is absent. public string ActiveState { get; set; } = ""; diff --git a/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs b/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs index cd17f04b..3feb03aa 100644 --- a/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs +++ b/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs @@ -514,71 +514,72 @@ public class CharacterStatControllerTests } // ── Pass 2: Tab button states ───────────────────────────────────────────── - // Tab groups are UiText (Type 12) with ConsumesDatChildren=true; their button - // children are consumed at import time. AddTabSprites() injects 3 UiText - // sprite-children per group when a spriteResolve is provided. + // Tab sprites are added to layout.Root (NOT to the tab group elements), so + // the tab groups keep Children.Count==0 and survive the page-visibility pass. + // AddTabSpritesToRoot() adds 3 sprite UiTexts + 1 label UiText per tab to the + // root when a spriteResolve is provided; nothing is added when spriteResolve=null. [Fact] - public void TabButtons_NoSpriteResolve_AddsNoSpriteChildren() + public void TabButtons_NoSpriteResolve_AddsNoSpriteChildrenToRoot() { - // When spriteResolve is null, AddTabSprites returns early — no children added. - var tabGroup = new UiText(); - var layout = Fake((CharacterStatController.TabAttribId, tabGroup)); + // When spriteResolve is null, AddTabSpritesToRoot is not called — no sprites added. + var layout = Fake(); // empty fake layout with just the root UiPanel + int rootChildCountBefore = layout.Root.Children.Count; CharacterStatController.Bind(layout, SampleData.SampleCharacter, spriteResolve: null); - Assert.Empty(tabGroup.Children); + // No extra children added to root when spriteResolve is null. + Assert.Equal(rootChildCountBefore, layout.Root.Children.Count); } [Fact] - public void TabButtons_AttributesGroup_AddsThreeOpenSpriteChildren() + public void TabButtons_AttributesGroup_AddsOpenSpriteIdsToRoot() { - // Attributes tab (isOpen=true): three UiText sprite children with Open sprite ids. - var tabGroup = new UiText(); - var layout = Fake((CharacterStatController.TabAttribId, tabGroup)); + // Attributes tab (isOpen=true): 3 sprite children with Open sprite ids on ROOT. + // The tab group element itself has 0 children (sprites go to root, not the group). + var layout = Fake(); // minimal fake CharacterStatController.Bind(layout, SampleData.SampleCharacter, spriteResolve: id => (id, 16, 16)); - var sprites = tabGroup.Children.OfType().ToList(); - Assert.Equal(3, sprites.Count); - Assert.Equal(0x06005D92u, sprites[0].BackgroundSprite); // Open left-cap - Assert.Equal(0x06005D94u, sprites[1].BackgroundSprite); // Open center - Assert.Equal(0x06005D96u, sprites[2].BackgroundSprite); // Open right-cap + // Root should contain the Open sprite ids among all tab sprite children. + var sprites = layout.Root.Children.OfType() + .Where(t => t.BackgroundSprite != 0u).ToList(); + Assert.Contains(sprites, t => t.BackgroundSprite == 0x06005D92u); // Open left-cap + Assert.Contains(sprites, t => t.BackgroundSprite == 0x06005D94u); // Open center + Assert.Contains(sprites, t => t.BackgroundSprite == 0x06005D96u); // Open right-cap } [Fact] - public void TabButtons_SkillsGroup_AddsThreeClosedSpriteChildren() + public void TabButtons_SkillsAndTitles_AddClosedSpriteIdsToRoot() { - // Skills tab (isOpen=false): three UiText sprite children with Closed sprite ids. - var tabGroup = new UiText(); - var layout = Fake((CharacterStatController.TabSkillsId, tabGroup)); + // Skills + Titles tabs (isOpen=false): Closed sprite ids appear on root. + var layout = Fake(); CharacterStatController.Bind(layout, SampleData.SampleCharacter, spriteResolve: id => (id, 16, 16)); - var sprites = tabGroup.Children.OfType().ToList(); - Assert.Equal(3, sprites.Count); - Assert.Equal(0x06005D93u, sprites[0].BackgroundSprite); // Closed left-cap - Assert.Equal(0x06005D95u, sprites[1].BackgroundSprite); // Closed center - Assert.Equal(0x06005D97u, sprites[2].BackgroundSprite); // Closed right-cap + var sprites = layout.Root.Children.OfType() + .Where(t => t.BackgroundSprite != 0u).ToList(); + Assert.Contains(sprites, t => t.BackgroundSprite == 0x06005D93u); // Closed left-cap + Assert.Contains(sprites, t => t.BackgroundSprite == 0x06005D95u); // Closed center + Assert.Contains(sprites, t => t.BackgroundSprite == 0x06005D97u); // Closed right-cap } [Fact] - public void TabButtons_TitlesGroup_AddsThreeClosedSpriteChildren() + public void TabButtons_WithSpriteResolve_AddsAllThreeTabsToRoot() { - // Titles tab (isOpen=false): three UiText sprite children with Closed sprite ids. - var tabGroup = new UiText(); - var layout = Fake((CharacterStatController.TabTitlesId, tabGroup)); + // With spriteResolve: all 3 tabs inject 4 children each (3 sprites + 1 label) + // = 12 sprite children total across 3 tabs on the root. + var layout = Fake(); CharacterStatController.Bind(layout, SampleData.SampleCharacter, spriteResolve: id => (id, 16, 16)); - var sprites = tabGroup.Children.OfType().ToList(); - Assert.Equal(3, sprites.Count); - Assert.Equal(0x06005D93u, sprites[0].BackgroundSprite); // Closed left-cap - Assert.Equal(0x06005D95u, sprites[1].BackgroundSprite); // Closed center - Assert.Equal(0x06005D97u, sprites[2].BackgroundSprite); // Closed right-cap + // 3 tabs × 3 sprites = 9 sprite UiTexts on root. + var sprites = layout.Root.Children.OfType() + .Where(t => t.BackgroundSprite != 0u).ToList(); + Assert.Equal(9, sprites.Count); } // ── Affordability helpers (GetRaiseCost) ────────────────────────────────── From 31666c0e85ad86a1b8df80583d23602025e102ee Mon Sep 17 00:00:00 2001 From: Erik Date: Fri, 26 Jun 2026 01:04:43 +0200 Subject: [PATCH 37/51] =?UTF-8?q?fix(studio):=20Character=20footer=20?= =?UTF-8?q?=E2=80=94=20title=20was=20centered=20in=20the=20full-height=20(?= =?UTF-8?q?H=3D55)=20box,=20overlapping=20the=20lines?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A position dump (the apparatus, after 5 speculative passes) showed the footer title element is H=55 (the whole footer box) in the dat; centering "Select an Attribute to Improve" in it landed the text dead-center (~y572), painting over "Skill Credits Available:" (y565) and "Unassigned Experience:" (y582). Constrain the title to a thin line (H=18) at the footer top + drop its anchors so the per-frame stretch doesn't re-grow it. All three State-A lines now read cleanly. Diagnosed from data, not guessing — exactly the apparatus-over-cdb call. Co-Authored-By: Claude Opus 4.8 (1M context) --- src/AcDream.App/UI/Layout/CharacterStatController.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/AcDream.App/UI/Layout/CharacterStatController.cs b/src/AcDream.App/UI/Layout/CharacterStatController.cs index a1816504..6be5fc4f 100644 --- a/src/AcDream.App/UI/Layout/CharacterStatController.cs +++ b/src/AcDream.App/UI/Layout/CharacterStatController.cs @@ -655,7 +655,16 @@ public static class CharacterStatController // and its background sprite would cover the line-1/line-2 elements at local y=20/37. // The controller owns the footer visual; the dat sprite is superfluous here. var titleEl = ByPos(0f, 0f, FooterTitleId); - if (titleEl is not null) titleEl.BackgroundSprite = 0; + if (titleEl is not null) + { + titleEl.BackgroundSprite = 0; + // The dat title element is H=55 (the full footer box). Centering the title text in it + // lands dead-center (~y572), overlapping line-1/line-2 (y565/y582 — confirmed by a + // position dump). Constrain it to a thin line at the footer top, and drop its anchors + // so the per-frame stretch pass doesn't re-grow it back to 55. + titleEl.Height = 18f; + titleEl.Anchors = AnchorEdges.None; + } LabelProvider(titleEl, datFont, Body, () => { if (sel[0] < 0) return "Select an Attribute to Improve"; From 405b0d5077b52e8c2d0ce006bef22b8c83935e05 Mon Sep 17 00:00:00 2001 From: Erik Date: Fri, 26 Jun 2026 02:16:11 +0200 Subject: [PATCH 38/51] =?UTF-8?q?fix(studio):=20Character=20window=20polis?= =?UTF-8?q?h=20=E2=80=94=20name=20white,=20XP=20captions,=20selected-title?= =?UTF-8?q?=20white,=20Infinity!=20cost?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Name label color changed from gold to white (retail "Horan" is white; 2026-06-26 ref) - Level caption now provides 2 lines ("Character" / "Level") so neither truncates in the 65px element - "Total Experience (XP):" caption (TotalXpLabelId 0x10000234) now visible; fixed Padding=0 on LabelLeft so the dat-font line is not clipped by the bottom-pin scroll math in small-height elements - "XP for next level:" caption + value injected as UiText children ON the UiMeter (0x10000236); the meter's ConsumesDatChildren=true only gates the importer — AddChild at runtime works fine; framework draws children after OnDraw so the text overlays the red bar faithfully - Selected footer title (State B) renders WHITE per retail spec; State A title stays body/parchment - Maxed attribute (raise cost = 0) shows "Infinity!" in Experience To Raise line per retail spec - 5 new tests; 1 existing LevelCaption test updated to expect 2 lines; 681/683 pass (full suite green) Co-Authored-By: Claude Sonnet 4.6 --- .../UI/Layout/CharacterStatController.cs | 114 ++++++++++++++++-- .../UI/Layout/CharacterStatControllerTests.cs | 89 +++++++++++++- 2 files changed, 190 insertions(+), 13 deletions(-) diff --git a/src/AcDream.App/UI/Layout/CharacterStatController.cs b/src/AcDream.App/UI/Layout/CharacterStatController.cs index 6be5fc4f..a6763740 100644 --- a/src/AcDream.App/UI/Layout/CharacterStatController.cs +++ b/src/AcDream.App/UI/Layout/CharacterStatController.cs @@ -174,14 +174,16 @@ public static class CharacterStatController UiDatFont? datFont = null, Func? spriteResolve = null) { - Label(layout, NameId, datFont, Gold, () => data().Name); + // Name: retail "Horan" is WHITE, not gold. Heritage and PK status are also white. + Label(layout, NameId, datFont, Vector4.One, () => data().Name); Label(layout, HeritageId, datFont, Body, () => data().Heritage ?? data().Race ?? string.Empty); Label(layout, PkStatusId, datFont, Body, () => data().PkStatus ?? string.Empty); // ── Header captions (new — retail labels above/left of each number) ────── // 0x1000023A = "Character Level" caption area above the level value (235,0,65×35). - // Source: dump idx=29/30; spec §Header element map. - LabelLeft(layout, LevelCaptionId, datFont, Body, static () => "Character Level"); + // Retail shows 2 lines: "Character" (top) / "Level" (bottom) so neither truncates. + // Source: retail spec (2026-06-26-character-window-retail-reference.md §State 1). + LabelTwoLine(layout, LevelCaptionId, datFont, Body, "Character", "Level"); Label(layout, LevelId, datFont, Gold, () => data().Level.ToString()); @@ -194,9 +196,58 @@ public static class CharacterStatController // XP-to-level meter fill (gmStatManagementUI::UpdateExperience 0x004f0a70). // NOTE: child elements 0x10000237 (label) and 0x10000238 (value) are consumed by // the UiMeter and cannot be bound — FindElement returns NULL for both. + // We inject a UiText caption + value ABOVE the meter's parent container instead, + // positioned to the left and right of a thin strip above the red bar. if (layout.FindElement(XpMeterId) is UiMeter meter) + { meter.Fill = () => data().XpFraction; + // Inject "XP for next level:" label and value ON the meter as children. + // The retail layout puts this caption + value ON TOP of the red bar — the bar + // is behind the text (ref 2026-06-26: "value … with the red fill bar behind it"). + // UiMeter.ConsumesDatChildren=true consumed the original 0x10000237/0x10000238 + // children at import; we re-inject them as runtime UiText overlays at LOCAL (0,0) + // filling the meter's full rect. The caption is left-aligned; the value is right-aligned. + // Source: retail spec (2026-06-26-character-window-retail-reference.md §State 1). + { + float mW = meter.Width; + float mH = meter.Height; + + var xpNextLabel = new UiText + { + Left = 0f, + Top = 0f, + Width = mW * 0.60f, + Height = mH, + DatFont = datFont, + ClickThrough = true, + Centered = false, + RightAligned = false, + Padding = 0f, // avoid scroll clip — meter bar is ~13px tall + Anchors = AnchorEdges.Left | AnchorEdges.Top, + }; + xpNextLabel.LinesProvider = static () => new[] { new UiText.Line("XP for next level:", Body) }; + + var xpNextValue = new UiText + { + Left = 0f, + Top = 0f, + Width = mW, + Height = mH, + DatFont = datFont, + ClickThrough = true, + Centered = false, + RightAligned = true, + Padding = 0f, // avoid scroll clip + Anchors = AnchorEdges.Left | AnchorEdges.Top, + }; + xpNextValue.LinesProvider = () => new[] { new UiText.Line(data().XpToNextLevel.ToString("N0"), Body) }; + + meter.AddChild(xpNextLabel); + meter.AddChild(xpNextValue); + } + } + // ── Tab bar sprite children (added to PANEL ROOT, not to the tab groups) ─── // The tab groups (0x10000228/229/538) are UiText (Type 12) with // ConsumesDatChildren=true, so their 3 button children were consumed at import. @@ -665,14 +716,25 @@ public static class CharacterStatController titleEl.Height = 18f; titleEl.Anchors = AnchorEdges.None; } - LabelProvider(titleEl, datFont, Body, () => + // Title color: State A = body (parchment); State B = WHITE per retail (confirmed 2026-06-26 ref). + if (titleEl is not null) { - if (sel[0] < 0) return "Select an Attribute to Improve"; - var s = data(); - string name = GetRowName(sel[0]); - string value = GetRowValueString(s, sel[0]); - return $"{name}: {value}"; - }); + titleEl.DatFont = datFont; + titleEl.Centered = false; + titleEl.RightAligned = false; + titleEl.ClickThrough = true; + titleEl.Padding = 0f; + titleEl.LinesProvider = () => + { + if (sel[0] < 0) + return new[] { new UiText.Line("Select an Attribute to Improve", Body) }; + var s = data(); + string name = GetRowName(sel[0]); + string value = GetRowValueString(s, sel[0]); + // State B title is WHITE (retail confirmed). + return new[] { new UiText.Line($"{name}: {value}", Vector4.One) }; + }; + } // Line-1 label (Top=20, Left=5): State A = "Skill Credits Available:"; State B = "Experience To Raise:" var l1L = ByPos(20f, 5f, FooterLine1Label); @@ -680,12 +742,13 @@ public static class CharacterStatController sel[0] < 0 ? "Skill Credits Available:" : "Experience To Raise:"); // Line-1 value (Top=20, Left=200): State A = SkillCredits; State B = raise cost + // When attribute is maxed (cost == 0), retail shows "Infinity!" (confirmed 2026-06-26 ref). var l1V = ByPos(20f, 200f, FooterLine1Value); LabelProvider(l1V, datFont, Body, () => { if (sel[0] < 0) return data().SkillCredits.ToString(); long cost = GetRaiseCost(data(), sel[0]); - return cost > 0 ? cost.ToString("N0") : "—"; + return cost > 0 ? cost.ToString("N0") : "Infinity!"; }); // Line-2 label (Top=37, Left=5): "Unassigned Experience:" in both states @@ -745,7 +808,33 @@ public static class CharacterStatController } } - /// Left-justified label (for captions that should be left-aligned, not centered). + /// Two-line centered label. Provides TWO lines from LinesProvider so both + /// fit side-by-side in a narrow element without truncation. The scroll path in + /// renders multiple lines oldest-first (top-to-bottom), so + /// line 0 = (top) and line 1 = (bottom). + /// This replaces the single-line "Character Level" caption which truncated in the 65px element. + /// Source: retail spec (2026-06-26-character-window-retail-reference.md §State 1 level caption). + private static void LabelTwoLine(ImportedLayout layout, uint id, UiDatFont? datFont, Vector4 color, + string line1, string line2) + { + if (layout.FindElement(id) is UiText t) + { + t.DatFont = datFont; + t.Centered = false; // non-Centered → scroll/multi-line path + t.RightAligned = false; + t.ClickThrough = true; + t.Padding = 1f; + t.LinesProvider = () => new[] + { + new UiText.Line(line1, color), + new UiText.Line(line2, color), + }; + } + } + + /// Left-justified label (for captions that should be left-aligned, not centered). + /// Padding=0 so a single dat-font line (≈12px) fits cleanly in a small element without + /// being clipped by the bottom-pin scroll math (top=Padding, bottom=H-Padding). private static void LabelLeft(ImportedLayout layout, uint id, UiDatFont? datFont, Vector4 color, Func text) { if (layout.FindElement(id) is UiText t) @@ -754,6 +843,7 @@ public static class CharacterStatController t.Centered = false; t.RightAligned = false; t.ClickThrough = true; + t.Padding = 0f; // avoid scroll clip in small-height header elements t.LinesProvider = () => new[] { new UiText.Line(text(), color) }; } } diff --git a/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs b/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs index 3feb03aa..a875878c 100644 --- a/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs +++ b/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs @@ -675,7 +675,10 @@ public class CharacterStatControllerTests CharacterStatController.Bind(layout, SampleData.SampleCharacter); - Assert.Equal("Character Level", caption.LinesProvider()[0].Text); + // 2-line caption: "Character" (top) / "Level" (bottom) so it fits the 65px element. + var lines = caption.LinesProvider(); + Assert.True(lines.Count >= 1, "LevelCaption must provide at least one line"); + Assert.Equal("Character", lines[0].Text); Assert.False(caption.Centered, "LevelCaption must be left-justified (Centered=false)"); Assert.False(caption.RightAligned, "LevelCaption must be left-justified (RightAligned=false)"); } @@ -693,6 +696,90 @@ public class CharacterStatControllerTests Assert.False(lbl.RightAligned, "TotalXpLabel must be left-justified (RightAligned=false)"); } + // ── Polish Commit 1: name white, Infinity!, white footer title ───────────── + + [Fact] + public void Bind_NameColor_IsWhite() + { + // Retail: name "Horan" is WHITE, not gold. (2026-06-26 ref) + var name = new UiText(); + var layout = Fake((CharacterStatController.NameId, name)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + var color = name.LinesProvider()[0].Color; + Assert.Equal(1f, color.X, precision: 3); + Assert.Equal(1f, color.Y, precision: 3); + Assert.Equal(1f, color.Z, precision: 3); + Assert.Equal(1f, color.W, precision: 3); + } + + [Fact] + public void RowClick_MaxedRow_FooterLine1ValueIsInfinity() + { + // Strength (index 0) cost=0 → "Infinity!" per retail spec. + var val = new UiText(); + var list = new UiPanel(); + var layout = Fake( + (CharacterStatController.FooterLine1Value, val), + (CharacterStatController.ListBoxId, list)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + list.Children.OfType().ToList()[0].OnClick!(); // Strength + + Assert.Equal("Infinity!", val.LinesProvider()[0].Text); + } + + [Fact] + public void RowClick_SelectedFooterTitle_IsWhite() + { + // State B footer title must be WHITE (retail 2026-06-26 ref). + var title = new UiText(); + var list = new UiPanel(); + var layout = Fake( + (CharacterStatController.FooterTitleId, title), + (CharacterStatController.ListBoxId, list)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + list.Children.OfType().ToList()[4].OnClick!(); // Focus + + var color = title.LinesProvider()[0].Color; + Assert.Equal(1f, color.X, precision: 3); + Assert.Equal(1f, color.Y, precision: 3); + Assert.Equal(1f, color.Z, precision: 3); + Assert.Equal(1f, color.W, precision: 3); + } + + [Fact] + public void Bind_FooterStateA_TitleColor_IsBodyNotWhite() + { + // State A title is body (parchment), not white. + var title = new UiText(); + var layout = Fake((CharacterStatController.FooterTitleId, title)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + // Body = (0.92, 0.90, 0.82, 1.0) — check it's not pure white. + var color = title.LinesProvider()[0].Color; + Assert.True(color.X < 1f || color.Y < 1f || color.Z < 1f, + "State-A title should be body/parchment color, not pure white"); + } + + [Fact] + public void Bind_LevelCaptionId_SetsTwoLines() + { + // Retail: level caption is "Character" / "Level" on two lines (not truncated). + var caption = new UiText(); + var layout = Fake((CharacterStatController.LevelCaptionId, caption)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + var lines = caption.LinesProvider(); + Assert.Equal(2, lines.Count); + Assert.Equal("Character", lines[0].Text); + Assert.Equal("Level", lines[1].Text); + } + // ── Robustness ──────────────────────────────────────────────────────────── [Fact] From a236dc33ac2b747324620ba1c1a3933b01410721 Mon Sep 17 00:00:00 2001 From: Erik Date: Fri, 26 Jun 2026 02:22:00 +0200 Subject: [PATCH 39/51] =?UTF-8?q?fix(studio):=20Character=20window=20?= =?UTF-8?q?=E2=80=94=20larger=20row=20text=20+=20tighter=20attribute=20row?= =?UTF-8?q?s?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - RowHeight reduced 44→30px to pack the 9 rows tighter, matching retail's denser list - Attribute row name/value text now uses Font 0x40000001 (MaxCharHeight=18px) instead of the default 0x40000000 (16px); both fonts are in client_portal.dat (confirmed 2026-06-26) - RenderStack gains LargeDatFont field; RenderBootstrap.Create loads both fonts - FixtureProvider passes LargeDatFont as rowDatFont to CharacterStatController.Bind - CharacterStatController.Bind gains rowDatFont? parameter (falls back to datFont); passed to BuildAttributeRows so row UiText elements use the larger font - Full solution tests green (681/683 App + 1579/1581 Core + 343 Net + 425 UI) Co-Authored-By: Claude Sonnet 4.6 --- src/AcDream.App/Rendering/RenderBootstrap.cs | 12 ++++++++++-- src/AcDream.App/Studio/FixtureProvider.cs | 3 +++ src/AcDream.App/UI/Layout/CharacterStatController.cs | 11 +++++++++-- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/AcDream.App/Rendering/RenderBootstrap.cs b/src/AcDream.App/Rendering/RenderBootstrap.cs index 6a23a0d2..6a896861 100644 --- a/src/AcDream.App/Rendering/RenderBootstrap.cs +++ b/src/AcDream.App/Rendering/RenderBootstrap.cs @@ -22,7 +22,8 @@ public sealed record RenderStack( Wb.WbDrawDispatcher DrawDispatcher, SceneLightingUboBinding LightingUbo, AcDream.App.UI.UiHost UiHost, - AcDream.App.UI.UiDatFont? VitalsDatFont) : System.IDisposable + AcDream.App.UI.UiDatFont? VitalsDatFont, + AcDream.App.UI.UiDatFont? LargeDatFont) : System.IDisposable { /// Dispose the GL pieces this stack OWNS (everything created in /// ). + are caller-owned @@ -147,6 +148,12 @@ public static class RenderBootstrap // --- Vitals dat font (GameWindow ~1820-1822) --- var vitalsDatFont = AcDream.App.UI.UiDatFont.Load(dats, textureCache); + // --- Larger retail font (0x40000001, MaxCharHeight=18) for attribute row text. + // The default font (0x40000000, 16px) renders the row names too small; the 18px + // variant (confirmed in client_portal.dat 2026-06-26) matches the retail character + // window list more closely (≈ icon height ≈ 24px target, 18px is best available). + var largeDatFont = AcDream.App.UI.UiDatFont.Load(dats, textureCache, 0x40000001u); + // --- UiHost (GameWindow ~1790); pass null for debugFont (only used as // a fallback BitmapFont for the world-space HUD — not needed for the // UI Studio, and BitmapFont requires a system font byte array) --- @@ -164,7 +171,8 @@ public static class RenderBootstrap DrawDispatcher: drawDispatcher, LightingUbo: lightingUbo, UiHost: uiHost, - VitalsDatFont: vitalsDatFont); + VitalsDatFont: vitalsDatFont, + LargeDatFont: largeDatFont); } // NullAnimLoader mirrors GameWindow's private NullAnimLoader (GameWindow ~13327-13330). diff --git a/src/AcDream.App/Studio/FixtureProvider.cs b/src/AcDream.App/Studio/FixtureProvider.cs index d2d537a7..75956370 100644 --- a/src/AcDream.App/Studio/FixtureProvider.cs +++ b/src/AcDream.App/Studio/FixtureProvider.cs @@ -118,10 +118,13 @@ public static class FixtureProvider // Bind the REAL importer-mounted header + list elements (name/heritage/PK/level/ // total-XP/XP-meter + the 9-row attribute list + footer State-A). NOT the text-report // sub-panel (that is gmCharacterInfoUI 0x2100001A → CharacterController). + // LargeDatFont (0x40000001, MaxCharHeight=18) is used for the attribute row text; + // fallback to VitalsDatFont (0x40000000, 16px) if unavailable. CharacterStatController.Bind( layout, data: SampleData.SampleCharacter, datFont: stack.VitalsDatFont, + rowDatFont: stack.LargeDatFont ?? stack.VitalsDatFont, spriteResolve: stack.ResolveChrome); break; diff --git a/src/AcDream.App/UI/Layout/CharacterStatController.cs b/src/AcDream.App/UI/Layout/CharacterStatController.cs index a6763740..867a5866 100644 --- a/src/AcDream.App/UI/Layout/CharacterStatController.cs +++ b/src/AcDream.App/UI/Layout/CharacterStatController.cs @@ -128,7 +128,10 @@ public static class CharacterStatController private static readonly Vector4 HighlightBg = new(1f, 0.75f, 0.2f, 0.25f); // ── Row layout constants ───────────────────────────────────────────────── - private const float RowHeight = 44f; + // RowHeight reduced from 44 to 30px to match retail's tighter attribute list. + // The larger row font (0x40000001, MaxCharHeight=18) fits in 30px with 6px total vertical + // padding (3px above/below). Retail spec (2026-06-26 ref): "rows tighter, text ≈ icon height". + private const float RowHeight = 30f; private const float IconSize = 24f; private const float RowPadX = 4f; private const float IconGap = 6f; @@ -172,8 +175,12 @@ public static class CharacterStatController ImportedLayout layout, Func data, UiDatFont? datFont = null, + UiDatFont? rowDatFont = null, Func? spriteResolve = null) { + // rowDatFont: larger font for attribute row name/value text (18px vs 16px default). + // Falls back to datFont when null (tests, or dat missing). + rowDatFont ??= datFont; // Name: retail "Horan" is WHITE, not gold. Heritage and PK status are also white. Label(layout, NameId, datFont, Vector4.One, () => data().Name); Label(layout, HeritageId, datFont, Body, () => data().Heritage ?? data().Race ?? string.Empty); @@ -348,7 +355,7 @@ public static class CharacterStatController if (layout.FindElement(ListBoxId) is { } list) { - rowPanels = BuildAttributeRows(list, datFont, spriteResolve, data, sel, + rowPanels = BuildAttributeRows(list, rowDatFont, spriteResolve, data, sel, allRaise1, allRaise10); } From dfb4c8113347a8d1fb650b43a102a0a43358b7ba Mon Sep 17 00:00:00 2001 From: Erik Date: Fri, 26 Jun 2026 02:26:46 +0200 Subject: [PATCH 40/51] =?UTF-8?q?fix(studio):=20Character=20window=20?= =?UTF-8?q?=E2=80=94=20selected-row=20highlight=20uses=20retail=20bar=20sp?= =?UTF-8?q?rite?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaces the translucent-gold BackgroundColor tint with sprite 0x06001397 (Button state 6 — the retail dark horizontal bars) for the selected-row background. When spriteResolve is provided to Bind(), clicking a row now applies BackgroundSprite=0x06001397 + SpriteResolve on that row and clears it on all others. Falls back to HighlightBg tint when no resolver is passed (tests, or contexts without GL). UiPanel.BackgroundSprite / SpriteResolve added so any panel can host a sprite background in place of the solid BackgroundColor rect. HandleRowClick updated to accept spriteResolve and apply the sprite or tint branch depending on availability. Two new tests verify the sprite / deselect paths. Co-Authored-By: Claude Sonnet 4.6 --- .../UI/Layout/CharacterStatController.cs | 34 ++++++++++++++-- src/AcDream.App/UI/UiPanel.cs | 20 +++++++++- .../UI/Layout/CharacterStatControllerTests.cs | 39 +++++++++++++++++++ 3 files changed, 89 insertions(+), 4 deletions(-) diff --git a/src/AcDream.App/UI/Layout/CharacterStatController.cs b/src/AcDream.App/UI/Layout/CharacterStatController.cs index 867a5866..26876e41 100644 --- a/src/AcDream.App/UI/Layout/CharacterStatController.cs +++ b/src/AcDream.App/UI/Layout/CharacterStatController.cs @@ -410,7 +410,7 @@ public static class CharacterStatController return v.ToString(); }); - row.OnClick = () => HandleRowClick(rowIndex, sel, rows, data, allRaise1, allRaise10); + row.OnClick = () => HandleRowClick(rowIndex, sel, rows, spriteResolve, data, allRaise1, allRaise10); rows.Add(row); y += RowHeight; } @@ -437,7 +437,7 @@ public static class CharacterStatController }; }); - row.OnClick = () => HandleRowClick(absIndex, sel, rows, data, allRaise1, allRaise10); + row.OnClick = () => HandleRowClick(absIndex, sel, rows, spriteResolve, data, allRaise1, allRaise10); rows.Add(row); y += RowHeight; } @@ -453,6 +453,7 @@ public static class CharacterStatController int clickedIndex, int[] sel, List rows, + Func? spriteResolve, Func data, List allRaise1, List allRaise10) @@ -465,8 +466,35 @@ public static class CharacterStatController Console.WriteLine($"[CharacterStat] Row click: index={clickedIndex} → selected={newSel} ({rowName})"); // Update highlight on all rows. + // Retail uses sprite 0x06001397 (Button state 6 — the dark horizontal bars) + // for the selected row background. When spriteResolve is available, apply the + // sprite; otherwise fall back to the translucent gold tint. + const uint HighlightSprite = 0x06001397u; for (int i = 0; i < rows.Count; i++) - rows[i].BackgroundColor = (i == newSel) ? HighlightBg : Vector4.Zero; + { + var row = rows[i]; + if (i == newSel) + { + if (spriteResolve is not null) + { + row.BackgroundColor = Vector4.Zero; + row.BackgroundSprite = HighlightSprite; + row.SpriteResolve = spriteResolve; + } + else + { + row.BackgroundColor = HighlightBg; + row.BackgroundSprite = 0u; + row.SpriteResolve = null; + } + } + else + { + row.BackgroundColor = Vector4.Zero; + row.BackgroundSprite = 0u; + row.SpriteResolve = null; + } + } // Update raise buttons. RefreshRaiseButtons(newSel, data, allRaise1, allRaise10); diff --git a/src/AcDream.App/UI/UiPanel.cs b/src/AcDream.App/UI/UiPanel.cs index a6c3269d..a927ec57 100644 --- a/src/AcDream.App/UI/UiPanel.cs +++ b/src/AcDream.App/UI/UiPanel.cs @@ -24,10 +24,28 @@ public class UiPanel : UiElement public float BorderThickness { get; set; } = 1f; + /// Optional dat RenderSurface id for the panel background sprite, drawn + /// in place of (or alongside) . 0 = none. + /// When set, the sprite is stretched to fill the panel rect. + /// Used by the attribute-list selected-row highlight (sprite 0x06001397 = Button state 6). + public uint BackgroundSprite { get; set; } + + /// Resolves a dat RenderSurface id to (GL tex handle, pixel width, pixel height). + /// Required when is non-zero. + public Func? SpriteResolve { get; set; } + protected override void OnDraw(UiRenderContext ctx) { - if (BackgroundColor.W > 0f) + if (BackgroundSprite != 0 && SpriteResolve is { } sr) + { + var (tex, tw, th) = sr(BackgroundSprite); + if (tex != 0 && tw != 0 && th != 0) + ctx.DrawSprite(tex, 0, 0, Width, Height, 0, 0, Width / tw, Height / th, Vector4.One); + } + else if (BackgroundColor.W > 0f) + { ctx.DrawRect(0, 0, Width, Height, BackgroundColor); + } if (BorderColor.W > 0f && BorderThickness > 0f) ctx.DrawRectOutline(0, 0, Width, Height, BorderColor, BorderThickness); diff --git a/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs b/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs index a875878c..d0607b97 100644 --- a/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs +++ b/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs @@ -433,6 +433,45 @@ public class CharacterStatControllerTests Assert.Equal(0f, rows[2].BackgroundColor.W); } + [Fact] + public void RowClick_WithSpriteResolve_SelectedRowHasHighlightSprite() + { + // When spriteResolve is provided, the selected row must use sprite 0x06001397 + // (retail Button-state-6 dark bar) instead of the translucent gold BackgroundColor. + var list = new UiPanel(); + var layout = Fake((CharacterStatController.ListBoxId, list)); + + // Minimal sprite resolver — returns a fake non-zero handle so UiPanel draws it. + static (uint, int, int) FakeResolve(uint id) => (1u, 32, 8); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter, + spriteResolve: FakeResolve); + + var rows = list.Children.OfType().ToList(); + rows[2].OnClick!(); + + Assert.Equal(0x06001397u, rows[2].BackgroundSprite); // selected → sprite + Assert.Equal(0f, rows[2].BackgroundColor.W); // no tint + Assert.Equal(0u, rows[0].BackgroundSprite); // others cleared + Assert.Equal(0u, rows[1].BackgroundSprite); + } + + [Fact] + public void RowClick_WithSpriteResolve_Deselect_ClearsSprite() + { + var list = new UiPanel(); + var layout = Fake((CharacterStatController.ListBoxId, list)); + static (uint, int, int) FakeResolve(uint id) => (1u, 32, 8); + CharacterStatController.Bind(layout, SampleData.SampleCharacter, + spriteResolve: FakeResolve); + + var rows = list.Children.OfType().ToList(); + rows[2].OnClick!(); // select + rows[2].OnClick!(); // deselect + + Assert.Equal(0u, rows[2].BackgroundSprite); + } + // ── Pass 2: Raise button affordability ─────────────────────────────────── [Fact] From 8f222f75064ea198315d74ff9da00aa4df6f677c Mon Sep 17 00:00:00 2001 From: Erik Date: Fri, 26 Jun 2026 02:31:54 +0200 Subject: [PATCH 41/51] =?UTF-8?q?fix(studio):=20Character=20window=20?= =?UTF-8?q?=E2=80=94=20level=20number=20uses=20large=20dat=20font=20(18px)?= =?UTF-8?q?=20for=20better=20retail=20match?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Retail's m_pLevelText (0x1000023B) element is a plain UIElement_Text, not a sprite-digit widget — the "large gold" appearance comes from the dat font size on that specific element. Since 0x40000001 (18px) is the largest font confirmed in client_portal.dat and there is no per-element font override in our LayoutImporter, use rowDatFont (18px) for the level value so it fills more of the 65×50 element and approaches the retail appearance. Investigation: namedretail grep gmStatManagementUI + UpdateCharacterInfo (0x004f0770) confirmed Type-12 UIElement_Text + SetText(L"%d"). No NumberSprite or DigitSprite widget type exists in retail — the diff is purely font size. Co-Authored-By: Claude Sonnet 4.6 --- src/AcDream.App/UI/Layout/CharacterStatController.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/AcDream.App/UI/Layout/CharacterStatController.cs b/src/AcDream.App/UI/Layout/CharacterStatController.cs index 26876e41..78966be8 100644 --- a/src/AcDream.App/UI/Layout/CharacterStatController.cs +++ b/src/AcDream.App/UI/Layout/CharacterStatController.cs @@ -192,7 +192,11 @@ public static class CharacterStatController // Source: retail spec (2026-06-26-character-window-retail-reference.md §State 1). LabelTwoLine(layout, LevelCaptionId, datFont, Body, "Character", "Level"); - Label(layout, LevelId, datFont, Gold, () => data().Level.ToString()); + // Level number: retail renders this as large gold centered text in the 65×50 element. + // Use the larger dat font (18px) for the level value so it fills more of the vertical + // space in the 50px element and approaches the retail "large gold digit" look. + // Source: spec §Level area (65,50) + decomp gmStatManagementUI::UpdateCharacterInfo 0x004f0770. + Label(layout, LevelId, rowDatFont, Gold, () => data().Level.ToString()); // 0x10000234 = "Total Experience (XP):" caption, left of the XP value. // Source: dump idx=22; spec §Header element map. From 41430420b3b64f907940f0ec76254c2b57cbde09 Mon Sep 17 00:00:00 2001 From: Erik Date: Fri, 26 Jun 2026 10:05:36 +0200 Subject: [PATCH 42/51] feat(ui): importer carries dat justification (0x14/0x15) onto text widgets; drop character footer-title height hack LayoutImporter.ReadState now reads Properties[0x14] (HorizontalJustification, EnumBaseProperty: 0=Left, 1=Center, 3/5=Right) and Properties[0x15] (VerticalJustification: 2=Top, 4=Bottom; else Center) into two new ElementInfo fields HJustify/VJustify. Merge propagates them with the same non-default-wins rule used for FontDid. DatWidgetFactory.BuildText applies the resolved justify at build time: HJustify=Center sets Centered=true, HJustify=Right sets RightAligned=true, VJustify=Top/Bottom sets VerticalJustify. Controllers that FindElement and set those properties afterward continue to override - backward-compat preserved. UiText gains VerticalJustify (Top/Center/Bottom, default Center). The Centered and RightAligned single-line paths call UiText.VOffset() for the Y coordinate, so VJustify.Top renders text at y=Padding rather than the fixed (H-lh)/2 center. CharacterStatController: footer title (0x1000024E, H=55 dat box) previously used Height=18 + Anchors=None to prevent center-vertical overlap with line-1/2. Diagnostic confirmed dat says HJustify=Center, VJustify=Center. The hack is replaced with one minimal explicit override: VerticalJustify=Top on the already-Centered element. Text now renders at top of the 55px box natively. Centered=false and RightAligned=false hand-sets removed where dat supplies them. Dat justify values (studio diagnostic, 2026-06-26): 0x1000024E footer title: HJustify=Center, VJustify=Center 0x10000235/0x10000243/0x10000245 value fields: HJustify=Right header name/heritage/pk/level: HJustify=Center +13 tests: ElementReader Merge propagation; DatWidgetFactory BuildText justify application + controller-override backward-compat; UiText VOffset. 696 passed, 0 failed. Co-Authored-By: Claude Sonnet 4.6 --- .../UI/Layout/CharacterStatController.cs | 18 ++--- src/AcDream.App/UI/Layout/DatWidgetFactory.cs | 34 ++++++++- src/AcDream.App/UI/Layout/ElementReader.cs | 33 +++++++++ src/AcDream.App/UI/Layout/LayoutImporter.cs | 34 +++++++++ src/AcDream.App/UI/UiText.cs | 49 +++++++++++-- .../UI/Layout/DatWidgetFactoryTests.cs | 71 +++++++++++++++++++ .../UI/Layout/ElementReaderTests.cs | 53 ++++++++++++++ tests/AcDream.App.Tests/UI/UiTextTests.cs | 54 ++++++++++++++ 8 files changed, 328 insertions(+), 18 deletions(-) diff --git a/src/AcDream.App/UI/Layout/CharacterStatController.cs b/src/AcDream.App/UI/Layout/CharacterStatController.cs index 78966be8..7d28c711 100644 --- a/src/AcDream.App/UI/Layout/CharacterStatController.cs +++ b/src/AcDream.App/UI/Layout/CharacterStatController.cs @@ -747,22 +747,22 @@ public static class CharacterStatController var titleEl = ByPos(0f, 0f, FooterTitleId); if (titleEl is not null) { + // The dat title element is H=55 (the full footer box). The dat says VJustify=Center, so + // without an override the text would center vertically in the 55px box, overlapping + // line-1/line-2 below. We set VerticalJustify=Top explicitly so the text renders at the + // top of the 55px box (y≈Padding), keeping all three footer lines non-overlapping. + // The dat says HJustify=Center (Centered=true from BuildText) — the title is centered. + // BackgroundSprite cleared: its full-height sprite would cover line-1/line-2. titleEl.BackgroundSprite = 0; - // The dat title element is H=55 (the full footer box). Centering the title text in it - // lands dead-center (~y572), overlapping line-1/line-2 (y565/y582 — confirmed by a - // position dump). Constrain it to a thin line at the footer top, and drop its anchors - // so the per-frame stretch pass doesn't re-grow it back to 55. - titleEl.Height = 18f; - titleEl.Anchors = AnchorEdges.None; + titleEl.VerticalJustify = VJustify.Top; // dat says Center; override to Top (see comment above) } // Title color: State A = body (parchment); State B = WHITE per retail (confirmed 2026-06-26 ref). if (titleEl is not null) { titleEl.DatFont = datFont; - titleEl.Centered = false; - titleEl.RightAligned = false; + // Centered=true comes from the dat (HJustify=Center) via BuildText — not overridden here. + // RightAligned stays false (BuildText default for a Center element). titleEl.ClickThrough = true; - titleEl.Padding = 0f; titleEl.LinesProvider = () => { if (sel[0] < 0) diff --git a/src/AcDream.App/UI/Layout/DatWidgetFactory.cs b/src/AcDream.App/UI/Layout/DatWidgetFactory.cs index 125f174a..ebc19b0b 100644 --- a/src/AcDream.App/UI/Layout/DatWidgetFactory.cs +++ b/src/AcDream.App/UI/Layout/DatWidgetFactory.cs @@ -239,13 +239,43 @@ public static class DatWidgetFactory /// own Direct/Normal media (if any) becomes the background sprite, drawn under the text — /// so a Type-12 element that previously rendered via UiDatElement keeps its sprite. Lines /// are bound later by the controller (LinesProvider). An unbound UiText draws nothing - /// because defaults to transparent. + /// because defaults to transparent. + /// + /// + /// Justification from the dat ( / + /// ) is applied here at build time so that controllers + /// that subsequently call / + /// on dat-origin elements can be simplified. Controllers that explicitly set those + /// properties after still override the build-time + /// defaults — the build-time value is just the starting point, not a lock. + /// + /// private static UiText BuildText(ElementInfo info, Func resolve) { uint bg = info.StateMedia.TryGetValue( !string.IsNullOrEmpty(info.DefaultStateName) ? info.DefaultStateName : info.StateMedia.ContainsKey("Normal") ? "Normal" : "", out var m) ? m.File : 0u; - return new UiText { BackgroundSprite = bg, SpriteResolve = resolve }; + + // Apply horizontal + vertical justification from the dat at build time. + // Controllers that call FindElement and set Centered/RightAligned/VerticalJustify + // afterward will override these — this is only the dat-driven default. + bool centered = info.HJustify == HJustify.Center; + bool rightAligned = info.HJustify == HJustify.Right; + var vJustify = info.VJustify switch + { + VJustify.Top => VJustify.Top, + VJustify.Bottom => VJustify.Bottom, + _ => VJustify.Center, + }; + + return new UiText + { + BackgroundSprite = bg, + SpriteResolve = resolve, + Centered = centered, + RightAligned = rightAligned, + VerticalJustify = vJustify, + }; } } diff --git a/src/AcDream.App/UI/Layout/ElementReader.cs b/src/AcDream.App/UI/Layout/ElementReader.cs index bbafcd05..27883dfd 100644 --- a/src/AcDream.App/UI/Layout/ElementReader.cs +++ b/src/AcDream.App/UI/Layout/ElementReader.cs @@ -2,6 +2,18 @@ using System.Collections.Generic; namespace AcDream.App.UI.Layout; +/// +/// Horizontal text justification read from dat property 0x14 (UIElement HorizontalJustification). +/// Values match the retail enum: 0=Left, 1=Center, 3/5=Right. +/// +public enum HJustify : byte { Left = 0, Center = 1, Right = 2 } + +/// +/// Vertical text justification read from dat property 0x15 (UIElement VerticalJustification). +/// Values: 2=Top, 4=Bottom; absent/other = Center. +/// +public enum VJustify : byte { Top = 0, Center = 1, Bottom = 2 } + /// /// GL-free, dat-free snapshot of a resolved layout element. /// Populated by the LayoutDesc importer from DatReaderWriter.ElementDesc @@ -51,6 +63,21 @@ public sealed class ElementInfo /// public uint FontDid; + /// + /// Horizontal text justification from dat Properties[0x14] + /// (EnumBaseProperty: 0=Left, 1=Center, 3/5=Right). + /// Default is to preserve existing behavior where + /// controllers set Centered=true and no property was read. + /// + public HJustify HJustify = HJustify.Center; + + /// + /// Vertical text justification from dat Properties[0x15] + /// (EnumBaseProperty: 2=Top, 4=Bottom; absent/other = Center). + /// Default is to preserve existing behavior. + /// + public VJustify VJustify = VJustify.Center; + /// /// Sprite per state: state name → (RenderSurface file id, DrawMode int). /// The "" key represents the unnamed DirectState (ElementDesc.StateDesc). @@ -160,6 +187,12 @@ public static class ElementReader ReadOrder = derived.ReadOrder, ZLevel = derived.ZLevel != 0 ? derived.ZLevel : base_.ZLevel, FontDid = derived.FontDid != 0 ? derived.FontDid : base_.FontDid, + // HJustify/VJustify: derived wins when it carries an explicit non-Center value + // (the dat property was present and read); otherwise inherit the base prototype's value. + // Center is the default (= "not set by this element") so Center-derived never overrides + // a non-Center base — matching the FontDid "non-zero wins" convention. + HJustify = derived.HJustify != HJustify.Center ? derived.HJustify : base_.HJustify, + VJustify = derived.VJustify != VJustify.Center ? derived.VJustify : base_.VJustify, // DefaultStateName: derived wins if set; otherwise inherit the base's default. DefaultStateName = !string.IsNullOrEmpty(derived.DefaultStateName) ? derived.DefaultStateName : base_.DefaultStateName, // Children come from the derived element's own tree, not the base prototype's. diff --git a/src/AcDream.App/UI/Layout/LayoutImporter.cs b/src/AcDream.App/UI/Layout/LayoutImporter.cs index 8859f25f..799470f2 100644 --- a/src/AcDream.App/UI/Layout/LayoutImporter.cs +++ b/src/AcDream.App/UI/Layout/LayoutImporter.cs @@ -362,6 +362,40 @@ public static class LayoutImporter { info.FontDid = did.Value; } + + if (sd.Properties is not null) + { + // HorizontalJustification (0x14): EnumBaseProperty. + // Retail values: 0=Left, 1=Center, 3=Right, 5=Right (treat 5 as Right per spec). + // Only update if still at the default (Center); derived-wins handled in Merge. + if (info.HJustify == HJustify.Center + && sd.Properties.TryGetValue(0x14u, out var hRaw) + && hRaw is EnumBaseProperty hEnum) + { + info.HJustify = hEnum.Value switch + { + 0u => HJustify.Left, + 1u => HJustify.Center, + 3u => HJustify.Right, + 5u => HJustify.Right, + _ => HJustify.Center, // unknown → center (safe default) + }; + } + + // VerticalJustification (0x15): EnumBaseProperty. + // Retail values: 2=Top, 4=Bottom; absent/other = Center. + if (info.VJustify == VJustify.Center + && sd.Properties.TryGetValue(0x15u, out var vRaw) + && vRaw is EnumBaseProperty vEnum) + { + info.VJustify = vEnum.Value switch + { + 2u => VJustify.Top, + 4u => VJustify.Bottom, + _ => VJustify.Center, + }; + } + } } // ── Prototype detection helpers ─────────────────────────────────────────── diff --git a/src/AcDream.App/UI/UiText.cs b/src/AcDream.App/UI/UiText.cs index 6e7222ab..e6bc45f0 100644 --- a/src/AcDream.App/UI/UiText.cs +++ b/src/AcDream.App/UI/UiText.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using System.Numerics; using System.Text; using AcDream.App.Rendering; +using AcDream.App.UI.Layout; namespace AcDream.App.UI; @@ -78,6 +79,23 @@ public sealed class UiText : UiElement /// precedence. Pair with ClickThrough = true for non-interactive labels. public bool RightAligned { get; set; } + /// + /// Vertical position of the text within the element rect in single-line mode + /// ( or ). + /// + /// Center (default) — vertically centered, matching the original + /// behavior of the centered/right-aligned paths. + /// Top — text is placed at y = Padding (top of the content + /// area), so the text sits at the top of the element rather than centering in it. + /// Used for footer title elements whose dat box is the full footer height (55 px) but + /// the text should render near the top. + /// Bottom — text is placed at y = Height - lineHeight - Padding. + /// + /// Only meaningful when or is true. + /// Has no effect on the scrollable multi-line path. + /// + public VJustify VerticalJustify { get; set; } = VJustify.Center; + /// The scroll model — also read by the linked UiScrollbar. public UiScrollable Scroll { get; } = new(); @@ -138,8 +156,8 @@ public sealed class UiText : UiElement ctx.DrawFill(0, 0, Width, Height, BackgroundColor); // Static centered single-line mode (vitals cur/max numbers etc.): draw the first - // line centered H+V with the SAME formula UIElement_Meter used for its label, then - // skip the scroll/selection machinery entirely. + // line centered H+V (or H+Top/Bottom per VerticalJustify) with the SAME formula + // UIElement_Meter used for its label, then skip the scroll/selection machinery entirely. if (Centered) { var cLines = LinesProvider(); @@ -148,20 +166,20 @@ public sealed class UiText : UiElement if (DatFont is { } cdf) { float cx = (Width - cdf.MeasureWidth(line0.Text)) * 0.5f; - float cy = (Height - cdf.LineHeight) * 0.5f; + float cy = VOffset(Height, cdf.LineHeight, Padding, VerticalJustify); ctx.DrawStringDat(cdf, line0.Text, cx, cy, line0.Color); } else if ((Font ?? ctx.DefaultFont) is { } cbf) { float cx = (Width - cbf.MeasureWidth(line0.Text)) * 0.5f; - float cy = (Height - cbf.LineHeight) * 0.5f; + float cy = VOffset(Height, cbf.LineHeight, Padding, VerticalJustify); ctx.DrawString(line0.Text, cx, cy, line0.Color, cbf); } return; } // Static right-aligned single-line mode: draw the first line flush with the right - // edge, vertically centered, then skip the scroll/selection machinery. + // edge, vertical position per VerticalJustify, then skip the scroll/selection machinery. if (RightAligned) { var rLines = LinesProvider(); @@ -170,13 +188,13 @@ public sealed class UiText : UiElement if (DatFont is { } rdf) { float rx = Width - rdf.MeasureWidth(line0.Text) - Padding; - float ry = (Height - rdf.LineHeight) * 0.5f; + float ry = VOffset(Height, rdf.LineHeight, Padding, VerticalJustify); ctx.DrawStringDat(rdf, line0.Text, rx, ry, line0.Color); } else if ((Font ?? ctx.DefaultFont) is { } rbf) { float rx = Width - rbf.MeasureWidth(line0.Text) - Padding; - float ry = (Height - rbf.LineHeight) * 0.5f; + float ry = VOffset(Height, rbf.LineHeight, Padding, VerticalJustify); ctx.DrawString(line0.Text, rx, ry, line0.Color, rbf); } return; @@ -366,6 +384,23 @@ public sealed class UiText : UiElement // ── Pure, testable logic (no GL / no font texture) ─────────────────── + /// + /// Compute the Y offset (local space) for a single line in the Centered/RightAligned + /// single-line path, given the element height, font line-height, padding, and + /// vertical justification. + /// + /// Element height in pixels. + /// Font line height in pixels. + /// Content padding. + /// Vertical justification. + public static float VOffset(float height, float lineHeight, float padding, VJustify vj) + => vj switch + { + VJustify.Top => padding, + VJustify.Bottom => height - lineHeight - padding, + _ => (height - lineHeight) * 0.5f, // Center (default) + }; + /// Order two caret positions so the first is <= the second (by line, /// then column). public static (Pos start, Pos end) Order(Pos a, Pos b) diff --git a/tests/AcDream.App.Tests/UI/Layout/DatWidgetFactoryTests.cs b/tests/AcDream.App.Tests/UI/Layout/DatWidgetFactoryTests.cs index 67a3a10a..0adb9eee 100644 --- a/tests/AcDream.App.Tests/UI/Layout/DatWidgetFactoryTests.cs +++ b/tests/AcDream.App.Tests/UI/Layout/DatWidgetFactoryTests.cs @@ -228,4 +228,75 @@ public class DatWidgetFactoryTests Assert.NotEqual(OverlayFile, m.FrontRight); Assert.NotEqual(OverlayFile, m.FrontTile); } + + // ── Justification build-time application (new for importer Fix A) ──────── + + /// + /// A Type-12 text element with HJustify=Center (the default) must produce a + /// UiText with Centered=true and RightAligned=false at build time. + /// This proves BuildText applies the dat's HJustify at construction without a + /// controller binding step. + /// + [Fact] + public void BuildText_HJustifyCenter_SetsCentered() + { + var info = new ElementInfo { Type = 12, Width = 100, Height = 20, HJustify = HJustify.Center }; + var t = Assert.IsType(DatWidgetFactory.Create(info, NoTex, null)); + Assert.True(t.Centered); + Assert.False(t.RightAligned); + Assert.Equal(VJustify.Center, t.VerticalJustify); + } + + /// + /// A Type-12 text element with HJustify=Right must produce a UiText with + /// Centered=false and RightAligned=true at build time. + /// + [Fact] + public void BuildText_HJustifyRight_SetsRightAligned() + { + var info = new ElementInfo { Type = 12, Width = 100, Height = 20, HJustify = HJustify.Right }; + var t = Assert.IsType(DatWidgetFactory.Create(info, NoTex, null)); + Assert.False(t.Centered); + Assert.True(t.RightAligned); + } + + /// + /// A Type-12 text element with HJustify=Left must produce a UiText with + /// Centered=false and RightAligned=false at build time. + /// + [Fact] + public void BuildText_HJustifyLeft_SetsNeitherCenteredNorRight() + { + var info = new ElementInfo { Type = 12, Width = 100, Height = 20, HJustify = HJustify.Left }; + var t = Assert.IsType(DatWidgetFactory.Create(info, NoTex, null)); + Assert.False(t.Centered); + Assert.False(t.RightAligned); + } + + /// + /// A Type-12 text element with VJustify=Top must produce a UiText with + /// VerticalJustify=Top at build time. + /// + [Fact] + public void BuildText_VJustifyTop_SetsVerticalJustifyTop() + { + var info = new ElementInfo { Type = 12, Width = 100, Height = 55, VJustify = VJustify.Top }; + var t = Assert.IsType(DatWidgetFactory.Create(info, NoTex, null)); + Assert.Equal(VJustify.Top, t.VerticalJustify); + } + + /// + /// A controller override: build-time sets Centered=true (HJustify=Center), then + /// a controller sets Centered=false afterward. The controller's override wins — + /// this is the backward-compatibility guarantee. + /// + [Fact] + public void BuildText_ControllerOverrideWinsAfterBuild() + { + var info = new ElementInfo { Type = 12, Width = 100, Height = 20, HJustify = HJustify.Center }; + var t = Assert.IsType(DatWidgetFactory.Create(info, NoTex, null)); + Assert.True(t.Centered); // build-time value + t.Centered = false; // controller override + Assert.False(t.Centered); // override wins + } } diff --git a/tests/AcDream.App.Tests/UI/Layout/ElementReaderTests.cs b/tests/AcDream.App.Tests/UI/Layout/ElementReaderTests.cs index 9d79f58d..2745590d 100644 --- a/tests/AcDream.App.Tests/UI/Layout/ElementReaderTests.cs +++ b/tests/AcDream.App.Tests/UI/Layout/ElementReaderTests.cs @@ -161,4 +161,57 @@ public class ElementReaderTests Assert.Single(merged.Children); Assert.Equal(0x2u, merged.Children[0].Id); } + + // ── HJustify / VJustify — Merge propagation ───────────────────────────── + + /// + /// When the derived element has a non-Center HJustify, the derived value wins + /// (same "non-default wins" rule as FontDid). + /// + [Fact] + public void Merge_DerivedHJustifyRight_OverridesBaseCenter() + { + var base_ = new ElementInfo { HJustify = HJustify.Center }; + var derived = new ElementInfo { HJustify = HJustify.Right }; + var merged = ElementReader.Merge(base_, derived); + Assert.Equal(HJustify.Right, merged.HJustify); + } + + /// + /// When the derived element has the default HJustify (Center), the base value + /// is inherited — Center from the derived does NOT override a Left base. + /// + [Fact] + public void Merge_DerivedHJustifyCenter_InheritsBaseLeft() + { + var base_ = new ElementInfo { HJustify = HJustify.Left }; + var derived = new ElementInfo { HJustify = HJustify.Center }; // default — no explicit dat property + var merged = ElementReader.Merge(base_, derived); + Assert.Equal(HJustify.Left, merged.HJustify); + } + + /// + /// VJustify=Top from the base propagates when the derived element has no explicit + /// (Center) vertical justification. + /// + [Fact] + public void Merge_BaseVJustifyTop_InheritedWhenDerivedIsCenter() + { + var base_ = new ElementInfo { VJustify = VJustify.Top }; + var derived = new ElementInfo { VJustify = VJustify.Center }; // default + var merged = ElementReader.Merge(base_, derived); + Assert.Equal(VJustify.Top, merged.VJustify); + } + + /// + /// VJustify=Bottom from the derived element wins over a Center base. + /// + [Fact] + public void Merge_DerivedVJustifyBottom_OverridesBaseCenter() + { + var base_ = new ElementInfo { VJustify = VJustify.Center }; + var derived = new ElementInfo { VJustify = VJustify.Bottom }; + var merged = ElementReader.Merge(base_, derived); + Assert.Equal(VJustify.Bottom, merged.VJustify); + } } diff --git a/tests/AcDream.App.Tests/UI/UiTextTests.cs b/tests/AcDream.App.Tests/UI/UiTextTests.cs index 691dc213..946f7fad 100644 --- a/tests/AcDream.App.Tests/UI/UiTextTests.cs +++ b/tests/AcDream.App.Tests/UI/UiTextTests.cs @@ -2,6 +2,7 @@ using System; using System.Collections.Generic; using System.Numerics; using AcDream.App.UI; +using AcDream.App.UI.Layout; namespace AcDream.App.Tests.UI; @@ -140,4 +141,57 @@ public class UiTextTests Assert.Equal(new UiText.Pos(1, 2), s2); Assert.Equal(new UiText.Pos(1, 8), e2); } + + // ── VOffset: vertical positioning for single-line mode ─────────────────── + + /// + /// VJustify.Center: vertical offset = (height - lineHeight) / 2. + /// This is the original formula used by both the Centered and RightAligned paths + /// before VerticalJustify was introduced. Must remain unchanged (backward compat). + /// + [Fact] + public void VOffset_Center_ReturnsHalfHeightMinusLineHeight() + { + float y = UiText.VOffset(height: 55f, lineHeight: 12f, padding: 0f, VJustify.Center); + Assert.Equal((55f - 12f) * 0.5f, y); + } + + /// + /// VJustify.Top: vertical offset = padding (top of the content area). + /// Used for footer title elements whose dat box is the full footer height (55 px) + /// but the text should render near the top. + /// + [Fact] + public void VOffset_Top_ReturnsPadding() + { + float y = UiText.VOffset(height: 55f, lineHeight: 12f, padding: 0f, VJustify.Top); + Assert.Equal(0f, y); + + float yWithPadding = UiText.VOffset(height: 55f, lineHeight: 12f, padding: 4f, VJustify.Top); + Assert.Equal(4f, yWithPadding); + } + + /// + /// VJustify.Bottom: vertical offset = height - lineHeight - padding. + /// + [Fact] + public void VOffset_Bottom_ReturnsHeightMinusLineHeightMinusPadding() + { + float y = UiText.VOffset(height: 55f, lineHeight: 12f, padding: 2f, VJustify.Bottom); + Assert.Equal(55f - 12f - 2f, y); + } + + /// + /// Center with non-zero padding: padding does NOT affect the center formula — + /// VJustify.Center always uses (height - lineHeight) / 2 regardless of padding, + /// matching the original behavior. + /// + [Fact] + public void VOffset_Center_IgnoresPadding() + { + float yNoPad = UiText.VOffset(height: 40f, lineHeight: 12f, padding: 0f, VJustify.Center); + float yWithPad = UiText.VOffset(height: 40f, lineHeight: 12f, padding: 4f, VJustify.Center); + Assert.Equal(yNoPad, yWithPad); // Center is padding-independent + Assert.Equal((40f - 12f) * 0.5f, yNoPad); + } } From 6e0be4bd34922cc6167c7d4b84c5648862015bc7 Mon Sep 17 00:00:00 2001 From: Erik Date: Fri, 26 Jun 2026 10:15:55 +0200 Subject: [PATCH 43/51] feat(ui): importer carries dat FontColor (0x1B) onto text widgets; character colors from dat where present LayoutImporter.ReadState now reads Properties 0x1B (ColorBaseProperty, ARGB bytes) and stores the normalized Vector4 in ElementInfo.FontColor (nullable). ElementReader.Merge propagates it with the same non-null-derived-wins rule as FontDid and HJustify. DatWidgetFactory.BuildText seeds UiText.DefaultColor from FontColor when present. Diagnosis for LayoutDesc 0x2100002E: ALL 12 header and footer text elements carry NO dat color. Every color is runtime set by CharacterStatController. Comments added at each callsite. No hardcoded colors deleted. Tests added: 3 ElementReader FontColor Merge + 3 DatWidgetFactory DefaultColor. 702 passed, 0 failed. Screenshots: character window, vitals, toolbar all unchanged. Co-Authored-By: Claude Sonnet 4.6 --- .../UI/Layout/CharacterStatController.cs | 11 ++++ src/AcDream.App/UI/Layout/DatWidgetFactory.cs | 11 +++- src/AcDream.App/UI/Layout/ElementReader.cs | 13 +++++ src/AcDream.App/UI/Layout/LayoutImporter.cs | 13 +++++ src/AcDream.App/UI/UiText.cs | 13 +++++ .../UI/Layout/DatWidgetFactoryTests.cs | 52 +++++++++++++++++++ .../UI/Layout/ElementReaderTests.cs | 42 +++++++++++++++ 7 files changed, 154 insertions(+), 1 deletion(-) diff --git a/src/AcDream.App/UI/Layout/CharacterStatController.cs b/src/AcDream.App/UI/Layout/CharacterStatController.cs index 7d28c711..a2508cbf 100644 --- a/src/AcDream.App/UI/Layout/CharacterStatController.cs +++ b/src/AcDream.App/UI/Layout/CharacterStatController.cs @@ -182,26 +182,33 @@ public static class CharacterStatController // Falls back to datFont when null (tests, or dat missing). rowDatFont ??= datFont; // Name: retail "Horan" is WHITE, not gold. Heritage and PK status are also white. + // runtime color, dat carries none (LayoutDesc 0x2100002E property 0x1B absent — FIX-B diagnosis 2026-06-26). Label(layout, NameId, datFont, Vector4.One, () => data().Name); + // runtime color, dat carries none. Label(layout, HeritageId, datFont, Body, () => data().Heritage ?? data().Race ?? string.Empty); + // runtime color, dat carries none. Label(layout, PkStatusId, datFont, Body, () => data().PkStatus ?? string.Empty); // ── Header captions (new — retail labels above/left of each number) ────── // 0x1000023A = "Character Level" caption area above the level value (235,0,65×35). // Retail shows 2 lines: "Character" (top) / "Level" (bottom) so neither truncates. // Source: retail spec (2026-06-26-character-window-retail-reference.md §State 1). + // runtime color, dat carries none. LabelTwoLine(layout, LevelCaptionId, datFont, Body, "Character", "Level"); // Level number: retail renders this as large gold centered text in the 65×50 element. // Use the larger dat font (18px) for the level value so it fills more of the vertical // space in the 50px element and approaches the retail "large gold digit" look. // Source: spec §Level area (65,50) + decomp gmStatManagementUI::UpdateCharacterInfo 0x004f0770. + // runtime color, dat carries none. Label(layout, LevelId, rowDatFont, Gold, () => data().Level.ToString()); // 0x10000234 = "Total Experience (XP):" caption, left of the XP value. // Source: dump idx=22; spec §Header element map. + // runtime color, dat carries none. LabelLeft(layout, TotalXpLabelId, datFont, Body, static () => "Total Experience (XP):"); + // runtime color, dat carries none. Label(layout, TotalXpId, datFont, Body, () => data().TotalXp.ToString("N0")); // XP-to-level meter fill (gmStatManagementUI::UpdateExperience 0x004f0a70). @@ -776,12 +783,14 @@ public static class CharacterStatController } // Line-1 label (Top=20, Left=5): State A = "Skill Credits Available:"; State B = "Experience To Raise:" + // runtime color, dat carries none. var l1L = ByPos(20f, 5f, FooterLine1Label); LabelProvider(l1L, datFont, Body, () => sel[0] < 0 ? "Skill Credits Available:" : "Experience To Raise:"); // Line-1 value (Top=20, Left=200): State A = SkillCredits; State B = raise cost // When attribute is maxed (cost == 0), retail shows "Infinity!" (confirmed 2026-06-26 ref). + // runtime color, dat carries none. var l1V = ByPos(20f, 200f, FooterLine1Value); LabelProvider(l1V, datFont, Body, () => { @@ -791,11 +800,13 @@ public static class CharacterStatController }); // Line-2 label (Top=37, Left=5): "Unassigned Experience:" in both states + // runtime color, dat carries none. var l2L = ByPos(37f, 5f, FooterLine2Label); LabelProvider(l2L, datFont, Body, static () => "Unassigned Experience:"); // Line-2 value (Top=37, Left=200): UnassignedXp in both states + // runtime color, dat carries none. var l2V = ByPos(37f, 200f, FooterLine2Value); LabelProvider(l2V, datFont, Body, () => data().UnassignedXp.ToString("N0")); diff --git a/src/AcDream.App/UI/Layout/DatWidgetFactory.cs b/src/AcDream.App/UI/Layout/DatWidgetFactory.cs index ebc19b0b..c08d948b 100644 --- a/src/AcDream.App/UI/Layout/DatWidgetFactory.cs +++ b/src/AcDream.App/UI/Layout/DatWidgetFactory.cs @@ -269,7 +269,7 @@ public static class DatWidgetFactory _ => VJustify.Center, }; - return new UiText + var t = new UiText { BackgroundSprite = bg, SpriteResolve = resolve, @@ -277,5 +277,14 @@ public static class DatWidgetFactory RightAligned = rightAligned, VerticalJustify = vJustify, }; + + // Font color from dat property 0x1B (ColorBaseProperty). + // When present, seed DefaultColor so controllers that read it don't have to hard-code colors. + // Controllers that supply explicit per-line colors via LinesProvider still win — this is only + // the build-time default. + if (info.FontColor.HasValue) + t.DefaultColor = info.FontColor.Value; + + return t; } } diff --git a/src/AcDream.App/UI/Layout/ElementReader.cs b/src/AcDream.App/UI/Layout/ElementReader.cs index 27883dfd..cb4b1552 100644 --- a/src/AcDream.App/UI/Layout/ElementReader.cs +++ b/src/AcDream.App/UI/Layout/ElementReader.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.Numerics; namespace AcDream.App.UI.Layout; @@ -78,6 +79,15 @@ public sealed class ElementInfo /// public VJustify VJustify = VJustify.Center; + /// + /// Font color from dat Properties[0x1B] (ColorBaseProperty, ARGB bytes). + /// Null when the dat carries no color for this element; the factory then leaves the + /// widget at its default white (). + /// Propagated in with the same "non-null derived wins" + /// rule used for and . + /// + public Vector4? FontColor; + /// /// Sprite per state: state name → (RenderSurface file id, DrawMode int). /// The "" key represents the unnamed DirectState (ElementDesc.StateDesc). @@ -193,6 +203,9 @@ public static class ElementReader // a non-Center base — matching the FontDid "non-zero wins" convention. HJustify = derived.HJustify != HJustify.Center ? derived.HJustify : base_.HJustify, VJustify = derived.VJustify != VJustify.Center ? derived.VJustify : base_.VJustify, + // FontColor: derived wins when it has an explicit (non-null) color; otherwise inherit the base. + // Null means "dat carried no 0x1B property" — so null-derived does NOT override a non-null base. + FontColor = derived.FontColor ?? base_.FontColor, // DefaultStateName: derived wins if set; otherwise inherit the base's default. DefaultStateName = !string.IsNullOrEmpty(derived.DefaultStateName) ? derived.DefaultStateName : base_.DefaultStateName, // Children come from the derived element's own tree, not the base prototype's. diff --git a/src/AcDream.App/UI/Layout/LayoutImporter.cs b/src/AcDream.App/UI/Layout/LayoutImporter.cs index 799470f2..4f63d83a 100644 --- a/src/AcDream.App/UI/Layout/LayoutImporter.cs +++ b/src/AcDream.App/UI/Layout/LayoutImporter.cs @@ -395,6 +395,19 @@ public static class LayoutImporter _ => VJustify.Center, }; } + + // ColorBaseProperty (0x1B): ARGB bytes → normalized [0,1] Vector4 (R,G,B,A). + // Only read when not already set (first dat state wins; Merge propagates from base). + if (info.FontColor is null + && sd.Properties.TryGetValue(0x1Bu, out var cRaw) + && cRaw is ColorBaseProperty cProp) + { + var c = cProp.Value; + // ColorARGB stores components as bytes (0–255); normalize to [0,1] for Vector4. + // Alpha=0 in the dat typically means fully opaque (retail convention: 0 → 255). + float a = c.Alpha == 0 ? 1f : c.Alpha / 255f; + info.FontColor = new System.Numerics.Vector4(c.Red / 255f, c.Green / 255f, c.Blue / 255f, a); + } } } diff --git a/src/AcDream.App/UI/UiText.cs b/src/AcDream.App/UI/UiText.cs index e6bc45f0..0d9f2b15 100644 --- a/src/AcDream.App/UI/UiText.cs +++ b/src/AcDream.App/UI/UiText.cs @@ -45,6 +45,19 @@ public sealed class UiText : UiElement /// the host from . public Silk.NET.Input.IKeyboard? Keyboard { get; set; } + /// + /// Default line color used by controllers when they do not supply a per-line + /// color explicitly. Set by DatWidgetFactory.BuildText + /// from ElementInfo.FontColor when the dat carries a 0x1B ColorBaseProperty; + /// otherwise white (). + /// + /// Controllers that supply a per-line color via + /// (e.g. new UiText.Line(text, explicitColor)) are unaffected — they always + /// win over this default. This property is only a convenience starting point for + /// controllers that want to read the dat color rather than hard-code it. + /// + public Vector4 DefaultColor { get; set; } = Vector4.One; + /// Backing fill behind the text. Defaults to transparent so an unbound /// UiText (no controller) draws nothing. Set to the retail translucent value by /// the controller (e.g. ChatWindowController). diff --git a/tests/AcDream.App.Tests/UI/Layout/DatWidgetFactoryTests.cs b/tests/AcDream.App.Tests/UI/Layout/DatWidgetFactoryTests.cs index 0adb9eee..12871f40 100644 --- a/tests/AcDream.App.Tests/UI/Layout/DatWidgetFactoryTests.cs +++ b/tests/AcDream.App.Tests/UI/Layout/DatWidgetFactoryTests.cs @@ -1,3 +1,4 @@ +using System.Numerics; using AcDream.App.UI; using AcDream.App.UI.Layout; namespace AcDream.App.Tests.UI.Layout; @@ -299,4 +300,55 @@ public class DatWidgetFactoryTests t.Centered = false; // controller override Assert.False(t.Centered); // override wins } + + // ── DefaultColor from dat FontColor (importer Fix B) ───────────────────── + + /// + /// When ElementInfo.FontColor is set (dat carried 0x1B ColorBaseProperty), + /// DatWidgetFactory.BuildText must copy it onto UiText.DefaultColor. + /// + [Fact] + public void BuildText_FontColorPresent_SetsDefaultColor() + { + var gold = new Vector4(1f, 0.82f, 0.36f, 1f); + var info = new ElementInfo { Type = 12, Width = 100, Height = 20, FontColor = gold }; + var t = Assert.IsType(DatWidgetFactory.Create(info, NoTex, null)); + Assert.Equal(gold, t.DefaultColor); + } + + /// + /// When ElementInfo.FontColor is null (dat carried no 0x1B), DefaultColor must + /// stay at white (Vector4.One) — the backward-compatible default. + /// + [Fact] + public void BuildText_FontColorAbsent_DefaultColorIsWhite() + { + var info = new ElementInfo { Type = 12, Width = 100, Height = 20, FontColor = null }; + var t = Assert.IsType(DatWidgetFactory.Create(info, NoTex, null)); + Assert.Equal(Vector4.One, t.DefaultColor); + } + + /// + /// Backward-compat guarantee: a controller that sets LinesProvider with an + /// explicit per-line color AFTER build is unaffected by DefaultColor. + /// The controller's per-line color is stored in the Line record, not DefaultColor, + /// so DefaultColor changing from dat does not touch existing controller bindings. + /// + [Fact] + public void BuildText_ControllerExplicitLineColor_UnaffectedByDefaultColor() + { + // Dat sets a parchment color. + var parchment = new Vector4(0.92f, 0.90f, 0.82f, 1f); + var info = new ElementInfo { Type = 12, Width = 100, Height = 20, FontColor = parchment }; + var t = Assert.IsType(DatWidgetFactory.Create(info, NoTex, null)); + + // Controller overrides with an explicit gold color in the Line record. + var gold = new Vector4(1f, 0.82f, 0.36f, 1f); + t.LinesProvider = () => new[] { new UiText.Line("text", gold) }; + + // The line's color is gold (controller wins), NOT the dat parchment. + Assert.Equal(gold, t.LinesProvider()[0].Color); + // DefaultColor still holds the dat parchment (unmodified by the controller binding). + Assert.Equal(parchment, t.DefaultColor); + } } diff --git a/tests/AcDream.App.Tests/UI/Layout/ElementReaderTests.cs b/tests/AcDream.App.Tests/UI/Layout/ElementReaderTests.cs index 2745590d..387767bb 100644 --- a/tests/AcDream.App.Tests/UI/Layout/ElementReaderTests.cs +++ b/tests/AcDream.App.Tests/UI/Layout/ElementReaderTests.cs @@ -1,3 +1,4 @@ +using System.Numerics; using AcDream.App.UI; using AcDream.App.UI.Layout; namespace AcDream.App.Tests.UI.Layout; @@ -214,4 +215,45 @@ public class ElementReaderTests var merged = ElementReader.Merge(base_, derived); Assert.Equal(VJustify.Bottom, merged.VJustify); } + + // ── FontColor — Merge propagation (Fix B) ──────────────────────────────── + + /// + /// When the derived element has an explicit (non-null) FontColor, the derived value + /// wins in Merge — same "non-null derived wins" rule used for FontDid and HJustify. + /// + [Fact] + public void Merge_DerivedFontColor_OverridesBaseNull() + { + var base_ = new ElementInfo { FontColor = null }; + var derived = new ElementInfo { FontColor = new Vector4(1f, 0f, 0f, 1f) }; + var merged = ElementReader.Merge(base_, derived); + Assert.Equal(new Vector4(1f, 0f, 0f, 1f), merged.FontColor); + } + + /// + /// When the derived element has no FontColor (null), the base's FontColor is inherited. + /// A null-derived must NOT override a non-null base. + /// + [Fact] + public void Merge_DerivedFontColorNull_InheritsBaseColor() + { + var gold = new Vector4(1f, 0.82f, 0.36f, 1f); + var base_ = new ElementInfo { FontColor = gold }; + var derived = new ElementInfo { FontColor = null }; // default — no dat property + var merged = ElementReader.Merge(base_, derived); + Assert.Equal(gold, merged.FontColor); + } + + /// + /// When neither base nor derived carries a FontColor, the merged result is null. + /// + [Fact] + public void Merge_BothFontColorNull_MergedIsNull() + { + var base_ = new ElementInfo { FontColor = null }; + var derived = new ElementInfo { FontColor = null }; + var merged = ElementReader.Merge(base_, derived); + Assert.Null(merged.FontColor); + } } From a0d33956f6fa06272e7e0e365440e4d89294efc9 Mon Sep 17 00:00:00 2001 From: Erik Date: Fri, 26 Jun 2026 10:30:13 +0200 Subject: [PATCH 44/51] =?UTF-8?q?feat(ui):=20importer=20Fix=20C=20?= =?UTF-8?q?=E2=80=94=20per-element=20dat=20FontDid=20resolver=20(studio=20?= =?UTF-8?q?path);=20character=20level=20uses=20its=20retail=20font?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DatWidgetFactory.Create now accepts an optional fontResolve: Func parameter. When supplied and the element has a non-zero FontDid, the element receives its own dat font instead of the shared global datFont fallback. Null = original single-font behavior (the live GameWindow path passes null — provably unchanged). LayoutImporter.Build/BuildFromInfos/Import all thread the optional resolver down to the factory. RenderStack gains a lazy font cache (ConcurrentDictionary, pre-seeded with VitalsDatFont + LargeDatFont) and a ResolveDatFont(uint) method. StudioWindow wires stack.ResolveDatFont into LayoutSource so every studio import gets per-element fonts. GameWindow import calls left passing null (follow-up todo). CharacterStatController font-hack cleanup (diagnosed via one-shot console dump then removed): - Name (0x10000231): dat FontDid = 18px font — remove datFont override (null) - Heritage/PkStatus: dat FontDid = 14px fonts — remove override - LevelCaption: dat FontDid = 16px — remove override (same font, no visual change) - Level (0x1000023B): dat FontDid = 36px (the big retail gold font) — was forced to rowDatFont/LargeDatFont (18px); now drops to null so the dat 36px font drives - TotalXpLabel/TotalXp: dat FontDid = 16px — remove override - FooterTitle (0x1000024E): dat FontDid = 20px — remove datFont override - KEEP: synthesized elements (XP meter overlays, 9 attribute rows, tab sprites) still use datFont directly since they have no dat origin All Label/LabelTwoLine/LabelLeft/LabelProvider helpers updated: null = keep build-time dat font; non-null = controller explicit override (backward-compat). 8 new tests in DatWidgetFactoryFontResolveTests: - null resolver → DatFont == global datFont - FontDid=0 → resolver not called - resolver returns null → fallback to global datFont - resolver called with element's FontDid - controller DatFont override wins after build - LayoutImporter.Build threads fontResolve to factory - meter element fires resolver for non-zero FontDid - BuildFromInfos without fontResolve param = original behavior Build + all 710 App tests green. Co-Authored-By: Claude Opus 4.8 (1M context) --- src/AcDream.App/Rendering/RenderBootstrap.cs | 50 ++++- src/AcDream.App/Studio/LayoutSource.cs | 24 ++- src/AcDream.App/Studio/StudioWindow.cs | 8 +- .../UI/Layout/CharacterStatController.cs | 78 ++++--- src/AcDream.App/UI/Layout/DatWidgetFactory.cs | 44 +++- src/AcDream.App/UI/Layout/LayoutImporter.cs | 28 ++- .../DatWidgetFactoryFontResolveTests.cs | 194 ++++++++++++++++++ 7 files changed, 360 insertions(+), 66 deletions(-) create mode 100644 tests/AcDream.App.Tests/UI/Layout/DatWidgetFactoryFontResolveTests.cs diff --git a/src/AcDream.App/Rendering/RenderBootstrap.cs b/src/AcDream.App/Rendering/RenderBootstrap.cs index 6a896861..b7ee7015 100644 --- a/src/AcDream.App/Rendering/RenderBootstrap.cs +++ b/src/AcDream.App/Rendering/RenderBootstrap.cs @@ -1,3 +1,4 @@ +using System.Collections.Concurrent; using DatReaderWriter; using Microsoft.Extensions.Logging.Abstractions; using Silk.NET.OpenGL; @@ -48,6 +49,46 @@ public sealed record RenderStack( uint t = TextureCache.GetOrUploadRenderSurface(spriteId, out int w, out int h); return (t, w, h); } + + // ── Font cache (per-stack, keyed by FontDid) ───────────────────────────── + + /// + /// Cache of loaded dat fonts keyed by FontDid (0x40000000-range). + /// Populated lazily by . Thread-safe for + /// concurrent reads from the studio render loop; writes happen only + /// during the first load of each distinct FontDid. + /// + private readonly ConcurrentDictionary _fontCache = new(); + + /// + /// Lazily load and cache a dat font by its FontDid. Returns null (and + /// caches null) when the Font DBObj is absent or has no foreground surface — + /// callers fall back to the global font in that case. + /// + /// Pre-seeds (0x40000000) and + /// (0x40000001) from the already-loaded instances + /// to avoid a redundant upload on those two ids. + /// + public AcDream.App.UI.UiDatFont? ResolveDatFont(uint fontDid) + { + return _fontCache.GetOrAdd(fontDid, id => + AcDream.App.UI.UiDatFont.Load(Dats, TextureCache, id)); + } + + /// + /// Pre-seeds the font cache from the two already-loaded font instances + /// (VitalsDatFont = 0x40000000, LargeDatFont = 0x40000001) so that + /// returns them without a redundant GL upload. + /// Called once by after the stack is + /// fully constructed. + /// + internal void SeedFontCache() + { + if (VitalsDatFont is not null) + _fontCache.TryAdd(AcDream.App.UI.UiDatFont.DefaultFontId, VitalsDatFont); + if (LargeDatFont is not null) + _fontCache.TryAdd(0x40000001u, LargeDatFont); + } } /// Options for . @@ -159,7 +200,7 @@ public static class RenderBootstrap // UI Studio, and BitmapFont requires a system font byte array) --- var uiHost = new AcDream.App.UI.UiHost(gl, shaderDir, defaultFont: null); - return new RenderStack( + var stack = new RenderStack( Gl: gl, Dats: dats, ShaderDir: shaderDir, @@ -173,6 +214,13 @@ public static class RenderBootstrap UiHost: uiHost, VitalsDatFont: vitalsDatFont, LargeDatFont: largeDatFont); + + // Pre-seed the font cache with the two already-uploaded atlas instances + // so ResolveDatFont(0x40000000) and ResolveDatFont(0x40000001) hit the cache + // rather than re-uploading the same GL texture a second time. + stack.SeedFontCache(); + + return stack; } // NullAnimLoader mirrors GameWindow's private NullAnimLoader (GameWindow ~13327-13330). diff --git a/src/AcDream.App/Studio/LayoutSource.cs b/src/AcDream.App/Studio/LayoutSource.cs index 6b125fcc..9aa2517d 100644 --- a/src/AcDream.App/Studio/LayoutSource.cs +++ b/src/AcDream.App/Studio/LayoutSource.cs @@ -21,6 +21,7 @@ public sealed class LayoutSource private readonly DatCollection _dats; private readonly Func _resolve; private readonly UiDatFont? _datFont; + private readonly Func? _fontResolve; public LayoutSourceKind Kind { get; private set; } public uint? LayoutId { get; private set; } @@ -28,14 +29,27 @@ public sealed class LayoutSource public string? LastError { get; private set; } public ImportedLayout? CurrentLayout { get; private set; } + /// + /// Create a LayoutSource. + /// + /// Optional per-element font resolver: FontDid → + /// (null when the font isn't in the dats). When supplied, + /// elements with a non-zero FontDid receive their own dat font at build time + /// instead of the shared global. Controllers that + /// explicitly set after + /// still override the build-time value. + /// Pass null (default) for the original single-font behavior — the live + /// path passes null so it is provably unchanged. public LayoutSource( DatCollection dats, Func resolve, - UiDatFont? datFont) + UiDatFont? datFont, + Func? fontResolve = null) { - _dats = dats ?? throw new ArgumentNullException(nameof(dats)); - _resolve = resolve ?? throw new ArgumentNullException(nameof(resolve)); - _datFont = datFont; + _dats = dats ?? throw new ArgumentNullException(nameof(dats)); + _resolve = resolve ?? throw new ArgumentNullException(nameof(resolve)); + _datFont = datFont; + _fontResolve = fontResolve; } /// @@ -96,7 +110,7 @@ public sealed class LayoutSource private UiElement? LoadDat(uint layoutId) { - var imported = LayoutImporter.Import(_dats, layoutId, _resolve, _datFont); + var imported = LayoutImporter.Import(_dats, layoutId, _resolve, _datFont, _fontResolve); if (imported is null) { LastError = $"ui-studio: LayoutDesc 0x{layoutId:X8} not found in dats."; diff --git a/src/AcDream.App/Studio/StudioWindow.cs b/src/AcDream.App/Studio/StudioWindow.cs index 7e09df92..63191fe1 100644 --- a/src/AcDream.App/Studio/StudioWindow.cs +++ b/src/AcDream.App/Studio/StudioWindow.cs @@ -127,7 +127,13 @@ public sealed class StudioWindow : IDisposable // Load the panel described by options and add it to the UI tree. // Task 4b: --dump uses DumpLayout (static retail mockup, no controllers). // All other modes use LayoutSource + FixtureProvider (production path). - _source = new LayoutSource(_dats, _stack.ResolveChrome, _stack.VitalsDatFont); + // + // Fix C: pass the per-element font resolver into LayoutSource so that elements + // with a non-zero FontDid get their own dat font at build time. This is wired + // ONLY in the studio path; GameWindow's Import calls continue to pass null so the + // live game path is provably unchanged (follow-up: GameWindow font-resolver wire-up). + _source = new LayoutSource(_dats, _stack.ResolveChrome, _stack.VitalsDatFont, + fontResolve: _stack.ResolveDatFont); // Resolve the dump file once (used by OnLoad + by LoadDumpPanel at runtime). _dumpFile = _opts.ResolveDumpFile(); diff --git a/src/AcDream.App/UI/Layout/CharacterStatController.cs b/src/AcDream.App/UI/Layout/CharacterStatController.cs index a2508cbf..7b7e6a6f 100644 --- a/src/AcDream.App/UI/Layout/CharacterStatController.cs +++ b/src/AcDream.App/UI/Layout/CharacterStatController.cs @@ -181,35 +181,32 @@ public static class CharacterStatController // rowDatFont: larger font for attribute row name/value text (18px vs 16px default). // Falls back to datFont when null (tests, or dat missing). rowDatFont ??= datFont; - // Name: retail "Horan" is WHITE, not gold. Heritage and PK status are also white. - // runtime color, dat carries none (LayoutDesc 0x2100002E property 0x1B absent — FIX-B diagnosis 2026-06-26). - Label(layout, NameId, datFont, Vector4.One, () => data().Name); - // runtime color, dat carries none. - Label(layout, HeritageId, datFont, Body, () => data().Heritage ?? data().Race ?? string.Empty); - // runtime color, dat carries none. - Label(layout, PkStatusId, datFont, Body, () => data().PkStatus ?? string.Empty); + + // Name (18px from dat FontDid), Heritage (14px), PkStatus (14px): + // Fix C: pass null → Label's null-guard keeps the build-time dat font. + // Controllers still own the text color and the LinesProvider. + // Name = WHITE (retail "Horan" is white — confirmed 2026-06-26). + Label(layout, NameId, null, Vector4.One, () => data().Name); + Label(layout, HeritageId, null, Body, () => data().Heritage ?? data().Race ?? string.Empty); + Label(layout, PkStatusId, null, Body, () => data().PkStatus ?? string.Empty); // ── Header captions (new — retail labels above/left of each number) ────── - // 0x1000023A = "Character Level" caption area above the level value (235,0,65×35). - // Retail shows 2 lines: "Character" (top) / "Level" (bottom) so neither truncates. - // Source: retail spec (2026-06-26-character-window-retail-reference.md §State 1). - // runtime color, dat carries none. - LabelTwoLine(layout, LevelCaptionId, datFont, Body, "Character", "Level"); + // LevelCaption (0x1000023A, 16px from dat): pass null → keep build-time dat font. + LabelTwoLine(layout, LevelCaptionId, null, Body, "Character", "Level"); // Level number: retail renders this as large gold centered text in the 65×50 element. - // Use the larger dat font (18px) for the level value so it fills more of the vertical - // space in the 50px element and approaches the retail "large gold digit" look. + // Fix C: the dat FontDid for the level element (0x1000023B) is now applied at build + // time when the font resolver is provided (studio path). We no longer force rowDatFont + // here for the level — the dat's own FontDid drives the font. The Gold color is still + // set via LinesProvider. SYNTHESIZED elements (the 9 attribute rows built in + // BuildAttributeRows) continue to use datFont directly since they have no dat origin. // Source: spec §Level area (65,50) + decomp gmStatManagementUI::UpdateCharacterInfo 0x004f0770. // runtime color, dat carries none. - Label(layout, LevelId, rowDatFont, Gold, () => data().Level.ToString()); + Label(layout, LevelId, null, Gold, () => data().Level.ToString()); - // 0x10000234 = "Total Experience (XP):" caption, left of the XP value. - // Source: dump idx=22; spec §Header element map. - // runtime color, dat carries none. - LabelLeft(layout, TotalXpLabelId, datFont, Body, static () => "Total Experience (XP):"); - - // runtime color, dat carries none. - Label(layout, TotalXpId, datFont, Body, () => data().TotalXp.ToString("N0")); + // TotalXpLabel (16px from dat) + TotalXp (16px from dat): pass null → keep dat font. + LabelLeft(layout, TotalXpLabelId, null, Body, static () => "Total Experience (XP):"); + Label(layout, TotalXpId, null, Body, () => data().TotalXp.ToString("N0")); // XP-to-level meter fill (gmStatManagementUI::UpdateExperience 0x004f0a70). // NOTE: child elements 0x10000237 (label) and 0x10000238 (value) are consumed by @@ -763,10 +760,11 @@ public static class CharacterStatController titleEl.BackgroundSprite = 0; titleEl.VerticalJustify = VJustify.Top; // dat says Center; override to Top (see comment above) } - // Title color: State A = body (parchment); State B = WHITE per retail (confirmed 2026-06-26 ref). + // Title (FooterTitle 0x1000024E, 20px from dat): pass null → keep dat font. + // Fix C: the dat has a 20px font for the footer title. Let it drive. if (titleEl is not null) { - titleEl.DatFont = datFont; + // DatFont: null → keep the build-time dat font (20px in studio, global fallback in live game). // Centered=true comes from the dat (HJustify=Center) via BuildText — not overridden here. // RightAligned stays false (BuildText default for a Center element). titleEl.ClickThrough = true; @@ -782,33 +780,26 @@ public static class CharacterStatController }; } - // Line-1 label (Top=20, Left=5): State A = "Skill Credits Available:"; State B = "Experience To Raise:" - // runtime color, dat carries none. + // Footer lines (all dat-origin with their own font sizes): pass null → keep dat font. var l1L = ByPos(20f, 5f, FooterLine1Label); - LabelProvider(l1L, datFont, Body, () => + LabelProvider(l1L, null, Body, () => sel[0] < 0 ? "Skill Credits Available:" : "Experience To Raise:"); - // Line-1 value (Top=20, Left=200): State A = SkillCredits; State B = raise cost - // When attribute is maxed (cost == 0), retail shows "Infinity!" (confirmed 2026-06-26 ref). - // runtime color, dat carries none. var l1V = ByPos(20f, 200f, FooterLine1Value); - LabelProvider(l1V, datFont, Body, () => + LabelProvider(l1V, null, Body, () => { if (sel[0] < 0) return data().SkillCredits.ToString(); long cost = GetRaiseCost(data(), sel[0]); return cost > 0 ? cost.ToString("N0") : "Infinity!"; }); - // Line-2 label (Top=37, Left=5): "Unassigned Experience:" in both states - // runtime color, dat carries none. + // Line-2 elements: pass null → keep dat font. var l2L = ByPos(37f, 5f, FooterLine2Label); - LabelProvider(l2L, datFont, Body, + LabelProvider(l2L, null, Body, static () => "Unassigned Experience:"); - // Line-2 value (Top=37, Left=200): UnassignedXp in both states - // runtime color, dat carries none. var l2V = ByPos(37f, 200f, FooterLine2Value); - LabelProvider(l2V, datFont, Body, + LabelProvider(l2V, null, Body, () => data().UnassignedXp.ToString("N0")); } @@ -851,7 +842,9 @@ public static class CharacterStatController { if (layout.FindElement(id) is UiText t) { - t.DatFont = datFont; + // Null = keep whatever the importer (dat FontDid resolver) set at build time. + // Non-null = controller explicit override. + if (datFont is not null) t.DatFont = datFont; t.Centered = true; t.ClickThrough = true; t.LinesProvider = () => new[] { new UiText.Line(text(), color) }; @@ -869,7 +862,8 @@ public static class CharacterStatController { if (layout.FindElement(id) is UiText t) { - t.DatFont = datFont; + // Null = keep whatever the importer (dat FontDid resolver) set at build time. + if (datFont is not null) t.DatFont = datFont; t.Centered = false; // non-Centered → scroll/multi-line path t.RightAligned = false; t.ClickThrough = true; @@ -889,7 +883,8 @@ public static class CharacterStatController { if (layout.FindElement(id) is UiText t) { - t.DatFont = datFont; + // Null = keep whatever the importer (dat FontDid resolver) set at build time. + if (datFont is not null) t.DatFont = datFont; t.Centered = false; t.RightAligned = false; t.ClickThrough = true; @@ -906,7 +901,8 @@ public static class CharacterStatController private static void LabelProvider(UiText? t, UiDatFont? datFont, Vector4 color, Func text) { if (t is null) return; - t.DatFont = datFont; + // Null = keep whatever the importer (dat FontDid resolver) set at build time. + if (datFont is not null) t.DatFont = datFont; t.Centered = false; t.RightAligned = false; t.ClickThrough = true; diff --git a/src/AcDream.App/UI/Layout/DatWidgetFactory.cs b/src/AcDream.App/UI/Layout/DatWidgetFactory.cs index c08d948b..973fba79 100644 --- a/src/AcDream.App/UI/Layout/DatWidgetFactory.cs +++ b/src/AcDream.App/UI/Layout/DatWidgetFactory.cs @@ -45,9 +45,15 @@ public static class DatWidgetFactory /// Returns (0,0,0) when the texture is not yet uploaded. /// Retail UI font for the meter's "cur/max" number overlay. /// May be null pre-load — the meter falls back to the debug bitmap font. + /// Optional font resolver: FontDid → + /// (or null when the font can't be loaded). When non-null, any element whose + /// is non-zero gets ITS OWN dat font applied instead of + /// the shared fallback. Null = original behavior (use + /// for every element). /// The widget for this element. Never null — every type produces a widget. public static UiElement? Create(ElementInfo info, - Func resolve, UiDatFont? datFont) + Func resolve, UiDatFont? datFont, + Func? fontResolve = null) { // Retail Type 3 = UIElement_Field (reg :126190), but in acdream's CURRENT layouts // (vitals 0x2100006C / chat 0x21000006) Type-3 elements are sprite-bearing chrome + @@ -60,16 +66,23 @@ public static class DatWidgetFactory // actually carries a factory-built editable Type-3 field (and UiField grows a // background-media draw + an opt-in editable flag at that point). UiField (the widget) // still ships — it just isn't wired into the factory switch yet. + // Resolve this element's own dat font if a resolver is provided and the element + // has a FontDid. Falls back to the shared datFont when not set (FontDid==0) or + // when the resolver returns null (font missing from dats). + UiDatFont? elementFont = datFont; + if (fontResolve is not null && info.FontDid != 0) + elementFont = fontResolve(info.FontDid) ?? datFont; + UiElement e = info.Type switch { - 1 => new UiButton(info, resolve), // UIElement_Button (reg :125828) - 6 => new UiMenu(), // UIElement_Menu (reg :120163) - 7 => BuildMeter(info, resolve, datFont), // UIElement_Meter - 0xD => new UiViewport(), // UIElement_Viewport — 3-D mini-scene blit leaf - 11 => new UiScrollbar(), // UIElement_Scrollbar (reg :124137) - 12 => BuildText(info, resolve), // UIElement_Text (reg :115655) - 0x10000031u => new UiItemList(resolve), // UIElement_ItemList — toolbar/inventory/paperdoll slots - _ => new UiDatElement(info, resolve), // generic fallback (incl. Type 3 chrome/containers) + 1 => new UiButton(info, resolve), // UIElement_Button (reg :125828) + 6 => new UiMenu(), // UIElement_Menu (reg :120163) + 7 => BuildMeter(info, resolve, elementFont), // UIElement_Meter + 0xD => new UiViewport(), // UIElement_Viewport — 3-D mini-scene blit leaf + 11 => new UiScrollbar(), // UIElement_Scrollbar (reg :124137) + 12 => BuildText(info, resolve, elementFont), // UIElement_Text (reg :115655) + 0x10000031u => new UiItemList(resolve), // UIElement_ItemList — toolbar/inventory/paperdoll slots + _ => new UiDatElement(info, resolve), // generic fallback (incl. Type 3 chrome/containers) }; // Propagate position + size (pixel-exact from the dat). @@ -250,7 +263,13 @@ public static class DatWidgetFactory /// defaults — the build-time value is just the starting point, not a lock. /// /// - private static UiText BuildText(ElementInfo info, Func resolve) + /// The font to seed on the widget. When a font resolver was + /// provided and the element's FontDid resolved successfully, this is that element-specific + /// font; otherwise it is the shared global fallback. Controllers that call + /// and set afterward + /// still override this — the build-time value is just the starting point. + private static UiText BuildText(ElementInfo info, Func resolve, + UiDatFont? elementFont = null) { uint bg = info.StateMedia.TryGetValue( !string.IsNullOrEmpty(info.DefaultStateName) ? info.DefaultStateName @@ -276,6 +295,11 @@ public static class DatWidgetFactory Centered = centered, RightAligned = rightAligned, VerticalJustify = vJustify, + // Seed the dat-driven font. When a font resolver was supplied and the element + // carries a non-zero FontDid, elementFont is the element-specific dat font; otherwise + // it is the shared global fallback. Controllers that call FindElement and explicitly + // set DatFont afterward STILL override this (backward-compat guarantee). + DatFont = elementFont, }; // Font color from dat property 0x1B (ColorBaseProperty). diff --git a/src/AcDream.App/UI/Layout/LayoutImporter.cs b/src/AcDream.App/UI/Layout/LayoutImporter.cs index 4f63d83a..49130206 100644 --- a/src/AcDream.App/UI/Layout/LayoutImporter.cs +++ b/src/AcDream.App/UI/Layout/LayoutImporter.cs @@ -68,25 +68,33 @@ public static class LayoutImporter ElementInfo rootInfo, IEnumerable children, Func resolve, - UiDatFont? datFont) + UiDatFont? datFont, + Func? fontResolve = null) { rootInfo.Children = new List(children); - return Build(rootInfo, resolve, datFont); + return Build(rootInfo, resolve, datFont, fontResolve); } /// /// Pure builder: produce the widget tree from a fully resolved /// tree (children already attached). /// + /// Optional per-element font resolver — FontDid → + /// (or null if the font can't be loaded). When supplied, + /// elements with a non-zero get their own dat + /// font at build time instead of the shared fallback. + /// Null preserves the original single-font behavior for all callers that don't + /// pass it — no behavior change for the live game path. public static ImportedLayout Build( ElementInfo rootInfo, Func resolve, - UiDatFont? datFont) + UiDatFont? datFont, + Func? fontResolve = null) { var byId = new Dictionary(); // Root is never a Type-12 prototype in practice; fall back to a generic // container if the factory returns null for an exotic root type. - var root = BuildWidget(rootInfo, resolve, datFont, byId); + var root = BuildWidget(rootInfo, resolve, datFont, fontResolve, byId); if (root is null) { Console.WriteLine($"[D.2b] LayoutImporter: root element 0x{rootInfo.Id:X8} (type {rootInfo.Type}) produced no widget — using empty container fallback."); @@ -99,9 +107,10 @@ public static class LayoutImporter ElementInfo info, Func resolve, UiDatFont? datFont, + Func? fontResolve, Dictionary byId) { - var w = DatWidgetFactory.Create(info, resolve, datFont); + var w = DatWidgetFactory.Create(info, resolve, datFont, fontResolve); if (w is null) return null; // Type-12 style prototype — skip if (info.Id != 0) byId[info.Id] = w; @@ -117,7 +126,7 @@ public static class LayoutImporter { foreach (var child in info.Children) { - var cw = BuildWidget(child, resolve, datFont, byId); + var cw = BuildWidget(child, resolve, datFont, fontResolve, byId); if (cw is not null) w.AddChild(cw); } } @@ -178,15 +187,18 @@ public static class LayoutImporter /// element, and build the widget tree. Returns null if the layout is absent /// from the dats. /// + /// Optional per-element font resolver (see + /// for details). Null = original single-font behavior. public static ImportedLayout? Import( DatCollection dats, uint layoutId, Func resolve, - UiDatFont? datFont) + UiDatFont? datFont, + Func? fontResolve = null) { var rootInfo = ImportInfos(dats, layoutId); if (rootInfo is null) return null; - return Build(rootInfo, resolve, datFont); + return Build(rootInfo, resolve, datFont, fontResolve); } // ── Inheritance resolution ──────────────────────────────────────────────── diff --git a/tests/AcDream.App.Tests/UI/Layout/DatWidgetFactoryFontResolveTests.cs b/tests/AcDream.App.Tests/UI/Layout/DatWidgetFactoryFontResolveTests.cs new file mode 100644 index 00000000..8b148736 --- /dev/null +++ b/tests/AcDream.App.Tests/UI/Layout/DatWidgetFactoryFontResolveTests.cs @@ -0,0 +1,194 @@ +using AcDream.App.UI; +using AcDream.App.UI.Layout; + +namespace AcDream.App.Tests.UI.Layout; + +/// +/// Unit tests for Fix C: per-element dat FontDid resolver in . +/// +/// +/// cannot be constructed in pure unit tests (GL + dat required), +/// so these tests verify the plumbing using null/non-null identity and sentinel resolvers: +/// +/// Null resolver → DatFont unchanged (backward-compat: same as before Fix C). +/// Resolver present, FontDid == 0 → resolver NOT called; DatFont == global datFont. +/// Resolver returns null for an id (font missing) → DatFont falls back to global datFont. +/// Controller sets DatFont after build → controller value wins. +/// threads fontResolve to the factory. +/// +/// +/// +public class DatWidgetFactoryFontResolveTests +{ + private static (uint, int, int) NoTex(uint _) => (0, 0, 0); + + // ── Test 1: null fontResolve → DatFont == datFont (backward-compat) ───── + + /// + /// When fontResolve is null (the live GameWindow path), BuildText must NOT + /// touch DatFont beyond setting it to the global datFont. Null in → null out. + /// + [Fact] + public void NullFontResolve_DatFont_EqualsGlobalFont() + { + var info = new ElementInfo { Type = 12, Width = 100, Height = 20, FontDid = 0x40000001u }; + // datFont=null, fontResolve=null → backward-compat: DatFont == null + var t = Assert.IsType(DatWidgetFactory.Create(info, NoTex, null, fontResolve: null)); + Assert.Null(t.DatFont); + } + + // ── Test 2: FontDid == 0 → resolver NOT called ──────────────────────────── + + /// + /// When the element has FontDid == 0, the fontResolve delegate must NOT be + /// invoked (the element has no dat font; fall through to global datFont). + /// + [Fact] + public void FontDidZero_ResolverNotCalled() + { + var info = new ElementInfo { Type = 12, Width = 100, Height = 20, FontDid = 0u }; + bool called = false; + UiDatFont? Resolver(uint id) { called = true; return null; } + + // FontDid=0 → resolver should never fire, even though one is provided. + Assert.IsType(DatWidgetFactory.Create(info, NoTex, null, fontResolve: Resolver)); + Assert.False(called, "fontResolve must NOT be called when FontDid == 0"); + } + + // ── Test 3: resolver returns null (font missing) → fallback to datFont ─── + + /// + /// When the element has a non-zero FontDid but the resolver returns null + /// (font not found in dats), DatFont must fall back to the shared global datFont. + /// Since datFont is null in unit tests, this verifies the fallback chain. + /// + [Fact] + public void ResolverReturnsNull_FallsBackToGlobalFont() + { + const uint SomeFontDid = 0x40000005u; + var info = new ElementInfo { Type = 12, Width = 100, Height = 20, FontDid = SomeFontDid }; + int callCount = 0; + UiDatFont? Resolver(uint id) { callCount++; return null; } // always returns null (font missing) + + var t = Assert.IsType(DatWidgetFactory.Create(info, NoTex, datFont: null, fontResolve: Resolver)); + + // Resolver was called exactly once for this element. + Assert.Equal(1, callCount); + // Fallback: DatFont == global datFont (null in unit tests). + Assert.Null(t.DatFont); + } + + // ── Test 4: resolver called with correct FontDid ────────────────────────── + + /// + /// When fontResolve is provided and FontDid is non-zero, the resolver is called + /// with the element's exact FontDid value. + /// + [Fact] + public void ResolverCalledWithElementFontDid() + { + const uint ExpectedFontDid = 0x40000002u; + var info = new ElementInfo { Type = 12, Width = 100, Height = 20, FontDid = ExpectedFontDid }; + uint? capturedId = null; + UiDatFont? Resolver(uint id) { capturedId = id; return null; } + + DatWidgetFactory.Create(info, NoTex, datFont: null, fontResolve: Resolver); + + Assert.Equal(ExpectedFontDid, capturedId); + } + + // ── Test 5: controller DatFont override wins over build-time value ─────── + + /// + /// A controller that calls FindElement and sets DatFont afterward MUST override + /// whatever the factory set at build time. This is the backward-compat guarantee. + /// The DatFont property is settable — a controller can override it after build. + /// + [Fact] + public void ControllerDatFontOverride_WinsOverBuildTimeFont() + { + const uint SomeFontDid = 0x40000003u; + var info = new ElementInfo { Type = 12, Width = 100, Height = 20, FontDid = SomeFontDid }; + UiDatFont? Resolver(uint _) => null; // returns null → build-time DatFont == null + + var t = Assert.IsType(DatWidgetFactory.Create(info, NoTex, datFont: null, fontResolve: Resolver)); + Assert.Null(t.DatFont); // build-time value set by factory + + // Controller simulated override: set DatFont to null explicitly. + // The real guarantee is that DatFont is a settable property. + // (We can't construct a real UiDatFont here — it requires GL + dats.) + t.DatFont = null; // controller overrides after build + Assert.Null(t.DatFont); + // ✓ DatFont is settable — controller override mechanism is in place. + } + + // ── Test 6: LayoutImporter.Build threads fontResolve to factory ────────── + + /// + /// When is given a fontResolve, it must pass + /// it to for EVERY element in the tree. + /// Verified by checking that a Type-12 child with FontDid triggers the resolver. + /// + [Fact] + public void LayoutImporter_Build_ThreadsFontResolve_ToFactory() + { + const uint FontDid = 0x40000004u; + var root = new ElementInfo { Id = 1u, Type = 3, Width = 200, Height = 100 }; + var child = new ElementInfo { Id = 2u, Type = 12, Width = 100, Height = 20, FontDid = FontDid }; + root.Children.Add(child); + + int resolveCallCount = 0; + UiDatFont? Resolver(uint id) { resolveCallCount++; return null; } + + var layout = LayoutImporter.Build(root, NoTex, datFont: null, fontResolve: Resolver); + + // The child element has a non-zero FontDid — resolver must have been called for it. + Assert.True(resolveCallCount > 0, "fontResolve was not called for the child element"); + // The child widget was built (findable in the layout). + Assert.NotNull(layout.FindElement(2u)); + } + + // ── Test 7: Meter element also receives element font from resolver ──────── + + /// + /// Type-7 (UiMeter) elements with a FontDid must also go through the resolver. + /// Verified by checking the resolver fires for a meter element with a non-zero FontDid. + /// + [Fact] + public void FontResolve_CalledForMeter_WhenFontDidPresent() + { + const uint MeterFontDid = 0x40000006u; + var meter = new ElementInfo { Type = 7, Width = 150, Height = 16, FontDid = MeterFontDid }; + int callCount = 0; + UiDatFont? Resolver(uint id) { callCount++; return null; } + + var w = DatWidgetFactory.Create(meter, NoTex, datFont: null, fontResolve: Resolver); + + var m = Assert.IsType(w); + // Resolver was called for the meter element's FontDid. + Assert.True(callCount > 0, "fontResolve was not called for meter element"); + // Meter DatFont: resolver returned null, so DatFont falls back to global datFont (null). + Assert.Null(m.DatFont); + } + + // ── Test 8: LayoutImporter.BuildFromInfos signature is backward-compat ──── + + /// + /// without fontResolve (default null) + /// must still work for all callers that don't pass it — verifies the optional + /// parameter default is correct and no existing callers broke. + /// + [Fact] + public void BuildFromInfos_WithoutFontResolve_WorksAsBeforeFix() + { + var root = new ElementInfo { Id = 10u, Type = 3, Width = 200, Height = 100 }; + var child = new ElementInfo { Id = 11u, Type = 12, Width = 100, Height = 20, FontDid = 0x40000001u }; + + // Call without fontResolve (the old signature shape). + var layout = LayoutImporter.BuildFromInfos(root, new[] { child }, NoTex, datFont: null); + + var t = Assert.IsType(layout.FindElement(11u)); + // No resolver → DatFont == global datFont (null in unit tests). + Assert.Null(t.DatFont); + } +} From 26d5c101e4381fdb09f76bb3feffb1f09ebdd860 Mon Sep 17 00:00:00 2001 From: Erik Date: Fri, 26 Jun 2026 10:32:47 +0200 Subject: [PATCH 45/51] docs: add 2026-06-26 character window retail reference screenshot notes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Transcribed from user's retail screenshots during the character-window polish session; documents name-white, large-gold-level, XP captions, Infinity! cost, and the selected-row bar sprite — used as the acceptance target for Fix A/B/C. Co-Authored-By: Claude Sonnet 4.6 --- ...06-26-character-window-retail-reference.md | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 docs/research/2026-06-26-character-window-retail-reference.md diff --git a/docs/research/2026-06-26-character-window-retail-reference.md b/docs/research/2026-06-26-character-window-retail-reference.md new file mode 100644 index 00000000..8ddb9c2a --- /dev/null +++ b/docs/research/2026-06-26-character-window-retail-reference.md @@ -0,0 +1,51 @@ +# Character window (Attributes tab) — retail reference + polish targets + +Transcribed from two user-provided retail screenshots (2026-06-26): the **not-selected** state and the +**Strength-selected** state. The PNGs live in the user's chat; this doc is the durable target spec for +the remaining polish on acdream's `CharacterStatController` (LayoutDesc 0x2100002E). "✗" = acdream gap. + +## State 1 — nothing selected + +- **Tabs:** Attributes (active, gold label), Skills, Titles. +- **Name:** "Horan" — **WHITE** (✗ acdream renders the name gold). +- **Heritage line:** "Female Aluvian Adventurer" — white. +- **PK line:** "Non-Player Killer" — white. +- **Level area (right):** small caption "Character Level" (two lines: "Character" / "Level"), then the + number **"240" as LARGE GOLD SPRITE DIGITS** — a number-sprite font, not plain text (✗ acdream draws + "126" as plain gold text, and the caption truncates to "Character Le"). +- **"Total Experience (XP):"** caption + value "100,000,017,999" (✗ caption missing in acdream). +- **"XP for next level:"** caption + value "99,738,801" with the red fill bar behind it (✗ caption + + value missing — the value element is consumed by the UiMeter at import). +- **Attribute list — 9 rows**, each = icon + name + right-aligned value: + - Row text is **LARGER** (roughly the icon height ~24px) and rows are **TIGHTER** (less vertical gap) + than acdream's current small-text / wide-spacing. + - Order: Strength 200, Endurance 10, Coordination 10, Quickness 200, Focus 10, Self 10, + Health 5/5, Stamina 10/10, Mana 10/10. +- **Footer:** "Select an Attribute to Improve" (title) / "Skill Credits Available: 96" / + "Unassigned Experience: 87,757,321,741". (acdream now matches — confirm the title says **Attribute**, + not skill.) + +## State 2 — Strength selected + +- Same header. +- **Selected row (Strength):** highlighted with a **DARKER background + bars above/below** — retail's + selected-row sprite `0x06001397` (Button state 6). (✗ acdream uses a translucent GOLD tint — replace + with the dark-bar sprite.) +- **Footer flips to:** + - Title: **"Strength: 200"** — **WHITE** text (✗ acdream uses the body/gold color). + - "Experience To Raise:" + **"Infinity!"** (Strength is maxed → cost is infinite; ✗ acdream shows a + numeric/"maxed" placeholder — show "Infinity!" when the attribute is at max). + - "Unassigned Experience:" + "87,757,321,741". +- Raise buttons (≜10 + triangle) shown at the selected row's right. + +## Polish checklist (acdream) + +1. [ ] Name color → white. +2. [ ] Level → gold sprite digits (find the number-sprite font/ids); caption "Character"/"Level" 2-line. +3. [ ] Add "Total Experience (XP):" caption. +4. [ ] Add "XP for next level:" caption + value (un-consume from the meter, or render alongside). +5. [ ] Row text larger (≈icon height) + rows tighter. +6. [ ] Selection highlight → sprite 0x06001397 (dark bars), not gold tint. +7. [ ] Selected footer title → white. +8. [ ] Maxed attribute → "Experience To Raise: Infinity!". +9. [ ] Footer title wording = "Select an Attribute to Improve" (Attribute). From ed626f425011e5d8ad5e2a1e5249e413d2c5d48f Mon Sep 17 00:00:00 2001 From: Erik Date: Fri, 26 Jun 2026 10:54:16 +0200 Subject: [PATCH 46/51] =?UTF-8?q?docs:=20file=20#150=20=E2=80=94=20thread?= =?UTF-8?q?=20Fix=20C=20per-element=20dat-font=20resolver=20into=20GameWin?= =?UTF-8?q?dow's=204=20import=20sites?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Follow-up to Fix C (a0d3395): the per-element FontDid resolver is studio-only; GameWindow passes null. Captured the turnkey fix (ConcurrentDictionary + GetOrAdd closure over UiDatFont.Load, mirroring RenderStack.ResolveDatFont) + the 4 import sites + the CharacterStatController auto-benefit note. Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/ISSUES.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/docs/ISSUES.md b/docs/ISSUES.md index 240de6d4..4e46d9b6 100644 --- a/docs/ISSUES.md +++ b/docs/ISSUES.md @@ -46,6 +46,27 @@ Copy this block when adding a new issue: --- +## #150 — Live game (GameWindow) doesn't thread the per-element dat-font resolver (Fix C is studio-only) + +**Status:** OPEN +**Severity:** LOW +**Filed:** 2026-06-26 +**Component:** ui + +**Description:** Fix C (commit `a0d3395`) added a per-element dat `FontDid` resolver to `LayoutImporter.Import` + `DatWidgetFactory` — each text element gets ITS OWN dat font instead of one global font. It's wired into the STUDIO path (StudioWindow → LayoutSource → LayoutImporter), but GameWindow's four `LayoutImporter.Import`/`Build` calls explicitly pass `null`, so the LIVE game still uses a single global font and panels don't get per-element dat fonts. + +**Fix:** Build a `Func` closure over a `ConcurrentDictionary` near where `vitalsDatFont`/`largeDatFont` load (~`GameWindow.cs:1820`), reusing `UiDatFont.Load` for any unknown id via `GetOrAdd` (same pattern as `RenderStack.ResolveDatFont`), and pass it to each of the four Import sites: +- vitals `0x2100006C` — ~`GameWindow.cs:1820-1835` +- chat — ~`GameWindow.cs:1875` +- toolbar `0x21000016` — ~`GameWindow.cs:2019` +- inventory `0x21000023` — ~`GameWindow.cs:2157` + +**Note:** `CharacterStatController.Bind` (also called from GameWindow) already has the null-means-keep-dat-font semantics from Fix C, so it benefits automatically once GameWindow threads the resolver. Backward-compat: the resolver applies the dat font as a *default*; controllers that set `DatFont` explicitly still override, so existing live-game panels stay unchanged. + +**Files:** `src/AcDream.App/Rendering/GameWindow.cs` (4 import sites), `src/AcDream.App/Rendering/RenderBootstrap.cs` (`RenderStack.ResolveDatFont` = the pattern to mirror). + +**Relates to:** Fix C `a0d3395` (studio-path resolver); the importer dat-fidelity work (Fix A/B/C, this session). + ## #149 — Studio: inventory window (0x21000023) renders all-black in preview **Status:** OPEN From 1b9dd6c7a860a506928a9ee9918a381c4bdba5e6 Mon Sep 17 00:00:00 2001 From: Erik Date: Fri, 26 Jun 2026 11:19:03 +0200 Subject: [PATCH 47/51] =?UTF-8?q?docs(ui):=20Fix=204=20=E2=80=94=20dat=20U?= =?UTF-8?q?IState=20model=20has=20no=20Group=20visibility=20encoding;=20Ch?= =?UTF-8?q?aracterStatController=20hacks=20are=20correct?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Investigation (2026-06-26): the character footer three sibling groups (0x10000240/241/247) all carry DefaultState=0x10000011 (StatManagement_Footer_Default) — the dat does NOT differentiate them by visibility. Parent 0x1000022F has States {Default, Text, Meter} with PassToChildren=true, but each child group registers all three states with IncorporationFlags=None and Media=0, so state-propagation produces no visual change on any group. Retail gmStatManagementUI uses hardcoded element-id dispatch for 0x10000240/241/247 — the groups are never hidden/shown via the dat state mechanism (decomp gmStatManagementUI::GetFooterTitleLabel @0x004f0170). Tab-page containers (0x1000022B/22C/10000539) have DefaultState=Undef — no visibility encoding. Tab visibility is managed purely at runtime by gmTabUI. IncorporationFlags (DatReaderWriter): {None, PassToChildren, X, Y, Width, Height, ZLevel} — no Visible flag. The importer cannot set initial Group visibility from the dat; the controller is the correct and only place. CharacterStatController HideAllById footer pass and ContainsWidget page-visibility walk are retail-faithful and must be kept. No logic changes — comment-only documentation. Build green, 710 App tests green. Studio screenshots: character footer shows State-A by default with no overlap; vitals and toolbar unchanged. Co-Authored-By: Claude Sonnet 4.6 --- .../UI/Layout/CharacterStatController.cs | 19 +++++++++++++++++++ src/AcDream.App/UI/Layout/LayoutImporter.cs | 19 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/src/AcDream.App/UI/Layout/CharacterStatController.cs b/src/AcDream.App/UI/Layout/CharacterStatController.cs index 7b7e6a6f..282d94d6 100644 --- a/src/AcDream.App/UI/Layout/CharacterStatController.cs +++ b/src/AcDream.App/UI/Layout/CharacterStatController.cs @@ -333,6 +333,19 @@ public static class CharacterStatController // the LAST copy of each id; the others live in the VISIBLE Attributes page and must // also be hidden. // + // WHY this cannot be done in the importer (dat state-model audit 2026-06-26): + // All three group elements have DefaultState = StatManagement_Footer_Default + // (0x10000011) — the dat does NOT differentiate them by visibility. The parent + // element (0x1000022F) has a States map {Default, Text, Meter} with PassToChildren= + // true, but each child group also registers all three states (IncFlags=None, + // Media=0) — meaning the state-propagation produces no media change on any group. + // Retail's gmStatManagementUI uses hardcoded element-id dispatch + // (GetChildRecursive(this, 0x10000240) for Default, 0x10000241 for Text, 0x10000247 + // for Meter) to access the right group's children at runtime — the groups themselves + // are never hidden/shown via the dat state mechanism. The controller is the correct + // and only place for this visibility management. See retail decomp + // gmStatManagementUI::GetFooterTitleLabel @0x004f0170. + // // Strategy: walk the Attributes page (the root child that contains the NameId anchor) // and hide every UiDatElement whose ElementId matches B or C. The page-visibility // pass hides everything in the Skills/Titles pages, so we only need to act on the @@ -368,6 +381,12 @@ public static class CharacterStatController } // ── Active-page selection (fixes the dark-overlay) ───────────────────── + // WHY this cannot be done in the importer (dat state-model audit 2026-06-26): + // The three tab-page content areas (0x1000022B Attributes, 0x1000022C Skills, + // 0x10000539 Titles) all have DefaultState = Undef (0) — the dat carries no + // visibility encoding for tabs. Tab visibility is managed at runtime by gmTabUI + // via SetVisible(bool) on the page containers. The controller is the correct + // and only place for initial tab-page selection. if (layout.FindElement(NameId) is { } anchor && layout.Root is { } root) { foreach (var page in root.Children) diff --git a/src/AcDream.App/UI/Layout/LayoutImporter.cs b/src/AcDream.App/UI/Layout/LayoutImporter.cs index 49130206..24fb30f0 100644 --- a/src/AcDream.App/UI/Layout/LayoutImporter.cs +++ b/src/AcDream.App/UI/Layout/LayoutImporter.cs @@ -186,6 +186,25 @@ public static class LayoutImporter /// Dat shell: load the LayoutDesc, resolve inheritance for every top-level /// element, and build the widget tree. Returns null if the layout is absent /// from the dats. + /// + /// + /// Dat UIState visibility model (2026-06-26 audit): + /// The dat's ElementDesc.DefaultState field specifies which SPRITE/MEDIA + /// state an element starts in (e.g., Normal, Minimized). It does + /// NOT encode visibility of sibling Group containers. The StateDesc's + /// contains X/Y/Width/Height/ + /// ZLevel/PassToChildren — there is no Visible flag. + /// + /// + /// + /// Windows that display multiple sibling Group containers at the same position + /// (the character footer's three state-groups; the tab-page content areas) manage + /// visibility purely at runtime via C++ controller code. Retail uses + /// UIElement::SetState(stateId) on the parent to propagate state, then + /// C++ getters access the right sub-group by element id. All groups are shipped + /// as visible in the imported widget tree; the relevant controllers + /// () perform the initial show/hide. + /// /// /// Optional per-element font resolver (see /// for details). Null = original single-font behavior. From ad4ed51d6b12a658431191a190fcd9bb8e2f2deb Mon Sep 17 00:00:00 2001 From: Erik Date: Fri, 26 Jun 2026 11:35:19 +0200 Subject: [PATCH 48/51] =?UTF-8?q?feat(ui):=20importer=20Fix=205=20?= =?UTF-8?q?=E2=80=94=20build=20meter=20text=20children;=20drop=20character?= =?UTF-8?q?=20XP=20injection=20hacks?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit LayoutImporter.BuildWidget gains a UiMeter-specific branch after the ConsumesDatChildren gate: Type-3 slice containers (already consumed by DatWidgetFactory.BuildMeter to extract sprite ids) are skipped, but all other children (Type-12 UIElement_Text overlays) are built normally, registered in byId, and attached as UiElement children of the meter. This fixes the XP meter (0x10000236): its two Type-12 children 0x10000237 "XP for next level:" label 0x10000238 XP-to-next-level value are now real UiText widgets in the tree, findable via FindElement. CharacterStatController.Bind now uses FindElement + LinesProvider binding instead of injecting runtime AddChild nodes. The two previously-injected UiText overlays are removed; the controller binds Padding=0, ClickThrough, RightAligned on the dat-origin widgets instead. New constants XpNextLabelId + XpNextValueId replace the old comment block. TAB GROUPS (SKIPPED — documented): UiText.ConsumesDatChildren flipping is NOT safe globally (risks chat/vitals) and the page-visibility pass in CharacterStatController depends on tab group Children.Count==0. Tab sprite injection onto layout.Root stays and is explicitly commented as deliberate. VITALS SAFE: health/stamina/mana meters have only Type-3 children → new loop finds nothing → zero UiElement children added → byte-identical render. VitalsController.BindMeter AddChild(number) pattern unchanged. Tests: 3 new LayoutImporterTests (slice-only, Fix-5 text children, vitals regression guard) + 3 CharacterStatControllerTests (label bound, value bound, missing children no-throw). 715 tests pass. Co-Authored-By: Claude Sonnet 4.6 --- .../UI/Layout/CharacterStatController.cs | 94 +++++++-------- src/AcDream.App/UI/Layout/LayoutImporter.cs | 26 +++++ .../UI/Layout/CharacterStatControllerTests.cs | 72 ++++++++++++ .../UI/Layout/LayoutImporterTests.cs | 107 ++++++++++++++++-- 4 files changed, 241 insertions(+), 58 deletions(-) diff --git a/src/AcDream.App/UI/Layout/CharacterStatController.cs b/src/AcDream.App/UI/Layout/CharacterStatController.cs index 282d94d6..787622da 100644 --- a/src/AcDream.App/UI/Layout/CharacterStatController.cs +++ b/src/AcDream.App/UI/Layout/CharacterStatController.cs @@ -53,10 +53,12 @@ public static class CharacterStatController public const uint TotalXpLabelId = 0x10000234u; // "Total Experience (XP):" caption left of value public const uint TotalXpId = 0x10000235u; // m_pTotalXPText public const uint XpMeterId = 0x10000236u; // m_pXPToLevelMeter (UiMeter) - // NOTE: 0x10000237 (XP-to-level label) and 0x10000238 (XP-to-level value) are children of - // the UiMeter element 0x10000236 and are consumed by it (UiMeter.ConsumesDatChildren=true). - // FindElement returns NULL for both. They cannot be bound via the element id. - // The XP meter itself renders the track sprite; the controller binds Fill=XpFraction. + // Fix 5: 0x10000237 (XP-to-level label) and 0x10000238 (XP-to-level value) are now + // built by the LayoutImporter as UiText children of the XP meter (non-Type-3 children + // are explicitly built and registered in byId). FindElement DOES return them now. + // The controller binds their LinesProvider instead of injecting new runtime nodes. + public const uint XpNextLabelId = 0x10000237u; // "XP for next level:" label child of XP meter + public const uint XpNextValueId = 0x10000238u; // XP-to-next-level value child of XP meter public const uint ListBoxId = 0x1000023Du; // m_pListBox container // ── Footer STATE-A container id ────────────────────────────────────────── @@ -73,8 +75,18 @@ public static class CharacterStatController // ConsumesDatChildren=true, so the three button children (left-cap, label, right-cap) // are consumed at import time and not present in the widget tree. // - // Fix: the controller adds three sprite-drawing children to each UiText manually, using - // the known RenderSurface ids from the retail UI layout dump (2026-06-25): + // WHY this is NOT fixed in Fix 5 (importer series): + // The Fix 5 meter patch only builds NON-Type-3 children of UiMeter. The tab group children + // are children of UiText (Type 12), not UiMeter (Type 7). Flipping UiText.ConsumesDatChildren + // globally is not safe — the chat transcript UiText and other Type-12 elements also have + // children in some layouts (scroll decorators etc.), and building them as live UiText widgets + // would risk invisible nodes stealing focus/clicks (the exact problem ConsumesDatChildren was + // designed to prevent). Additionally, the page-visibility pass in Bind() depends on + // tab group Children.Count==0 to skip them — adding children to the tab groups would break + // that pass and hide ALL tab content. + // + // Therefore: the controller injects 3 sprite-drawing root children per tab (absolute coords), + // using the known RenderSurface ids from the retail UI layout dump (2026-06-25): // Closed (inactive) state: left=0x06005D93, center=0x06005D95, right=0x06005D97 // Open (active) state: left=0x06005D92, center=0x06005D94, right=0x06005D96 // Source: state_id 11=Closed, 12=Open per gmTabUI::SetActive(bool); sprite ids confirmed @@ -209,57 +221,37 @@ public static class CharacterStatController Label(layout, TotalXpId, null, Body, () => data().TotalXp.ToString("N0")); // XP-to-level meter fill (gmStatManagementUI::UpdateExperience 0x004f0a70). - // NOTE: child elements 0x10000237 (label) and 0x10000238 (value) are consumed by - // the UiMeter and cannot be bound — FindElement returns NULL for both. - // We inject a UiText caption + value ABOVE the meter's parent container instead, - // positioned to the left and right of a thin strip above the red bar. + // Fix 5: child elements 0x10000237 (label) and 0x10000238 (value) are now built by + // the LayoutImporter as UiText children of the XP meter (non-Type-3 meter children + // are explicitly built and registered in byId — see LayoutImporter.BuildWidget). + // FindElement now returns them; the controller binds their LinesProvider. + // The importer builds them as UiText via DatWidgetFactory.BuildText, applying their + // dat-origin HJustify/VJustify/FontDid/FontColor at build time. The controller then + // overrides Padding=0 (to avoid scroll clip in the ~13px-tall bar), ClickThrough=true, + // and provides the LinesProvider for runtime content. if (layout.FindElement(XpMeterId) is UiMeter meter) { meter.Fill = () => data().XpFraction; - // Inject "XP for next level:" label and value ON the meter as children. - // The retail layout puts this caption + value ON TOP of the red bar — the bar - // is behind the text (ref 2026-06-26: "value … with the red fill bar behind it"). - // UiMeter.ConsumesDatChildren=true consumed the original 0x10000237/0x10000238 - // children at import; we re-inject them as runtime UiText overlays at LOCAL (0,0) - // filling the meter's full rect. The caption is left-aligned; the value is right-aligned. + // Bind the dat-origin XP label (0x10000237) and value (0x10000238). + // These are now real UiText children of the meter (built by the importer). + // The retail layout places the caption + value ON TOP of the red bar + // (ref 2026-06-26: "value … with the red fill bar behind it"). // Source: retail spec (2026-06-26-character-window-retail-reference.md §State 1). + if (layout.FindElement(XpNextLabelId) is UiText xpLabel) { - float mW = meter.Width; - float mH = meter.Height; - - var xpNextLabel = new UiText - { - Left = 0f, - Top = 0f, - Width = mW * 0.60f, - Height = mH, - DatFont = datFont, - ClickThrough = true, - Centered = false, - RightAligned = false, - Padding = 0f, // avoid scroll clip — meter bar is ~13px tall - Anchors = AnchorEdges.Left | AnchorEdges.Top, - }; - xpNextLabel.LinesProvider = static () => new[] { new UiText.Line("XP for next level:", Body) }; - - var xpNextValue = new UiText - { - Left = 0f, - Top = 0f, - Width = mW, - Height = mH, - DatFont = datFont, - ClickThrough = true, - Centered = false, - RightAligned = true, - Padding = 0f, // avoid scroll clip - Anchors = AnchorEdges.Left | AnchorEdges.Top, - }; - xpNextValue.LinesProvider = () => new[] { new UiText.Line(data().XpToNextLevel.ToString("N0"), Body) }; - - meter.AddChild(xpNextLabel); - meter.AddChild(xpNextValue); + if (datFont is not null) xpLabel.DatFont = datFont; + xpLabel.ClickThrough = true; + xpLabel.Padding = 0f; // avoid scroll clip — meter bar is ~13px tall + xpLabel.LinesProvider = static () => new[] { new UiText.Line("XP for next level:", Body) }; + } + if (layout.FindElement(XpNextValueId) is UiText xpValue) + { + if (datFont is not null) xpValue.DatFont = datFont; + xpValue.ClickThrough = true; + xpValue.RightAligned = true; + xpValue.Padding = 0f; // avoid scroll clip + xpValue.LinesProvider = () => new[] { new UiText.Line(data().XpToNextLevel.ToString("N0"), Body) }; } } diff --git a/src/AcDream.App/UI/Layout/LayoutImporter.cs b/src/AcDream.App/UI/Layout/LayoutImporter.cs index 24fb30f0..43a60108 100644 --- a/src/AcDream.App/UI/Layout/LayoutImporter.cs +++ b/src/AcDream.App/UI/Layout/LayoutImporter.cs @@ -130,6 +130,32 @@ public static class LayoutImporter if (cw is not null) w.AddChild(cw); } } + else if (w is UiMeter) + { + // Fix 5: UiMeter.ConsumesDatChildren=true swallows ALL children, including text + // label/value overlays that are separate renderable widgets (not part of the bar + // art). BuildMeter in DatWidgetFactory already consumed the Type-3 slice containers + // (reads their grandchild sprite ids to populate Back*/Front* properties). The + // remaining non-Type-3 children (typically Type-12 UIElement_Text overlays such + // as the XP meter's 0x10000237 label + 0x10000238 value) ARE renderable and belong + // in the widget tree. We build them here explicitly, registered in byId so + // FindElement can locate them, and attached as children of the meter so they render + // as overlays at their dat-local coordinates. The controller can then locate these + // widgets via FindElement and bind LinesProvider without injecting new runtime nodes. + // + // Type-3 children are SKIPPED here because BuildMeter already consumed them (they + // carry the 3-slice sprite ids, not text content; building them again would + // double-draw the bar art). All other child types are built normally. + // + // Safe for vitals: the health/stamina/mana meters have ONLY Type-3 slice children + // (no text children). This loop finds nothing for them → no change to vitals. + foreach (var child in info.Children) + { + if (child.Type == 3) continue; // slice containers: already consumed by BuildMeter + var cw = BuildWidget(child, resolve, datFont, fontResolve, byId); + if (cw is not null) w.AddChild(cw); + } + } return w; } diff --git a/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs b/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs index d0607b97..18338f8d 100644 --- a/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs +++ b/tests/AcDream.App.Tests/UI/Layout/CharacterStatControllerTests.cs @@ -825,6 +825,78 @@ public class CharacterStatControllerTests public void Bind_MissingElements_DoesNotThrow() => CharacterStatController.Bind(Fake(), SampleData.SampleCharacter); + // ── Fix 5: XP meter text children bound via FindElement ────────────────── + + /// + /// Fix 5: the XP label (0x10000237) is a dat-origin UiText child of the XP meter + /// (now built by the importer). After Bind(), FindElement must return a UiText with + /// a LinesProvider that emits "XP for next level:". + /// + [Fact] + public void Bind_XpMeter_XpNextLabel_IsBoundViaFindElement() + { + var meter = new UiMeter(); + var xpLabel = new UiText(); + // Attach the label as a child of the meter so it matches the real importer layout. + meter.AddChild(xpLabel); + var layout = Fake( + (CharacterStatController.XpMeterId, meter), + (CharacterStatController.XpNextLabelId, xpLabel)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + Assert.NotNull(xpLabel.LinesProvider); + var lines = xpLabel.LinesProvider(); + Assert.Single(lines); + Assert.Equal("XP for next level:", lines[0].Text); + } + + /// + /// Fix 5: the XP value (0x10000238) is bound to the XpToNextLevel string. + /// ClickThrough=true and RightAligned=true must be set by the controller. + /// + [Fact] + public void Bind_XpMeter_XpNextValue_IsBoundViaFindElement() + { + var meter = new UiMeter(); + var xpValue = new UiText(); + meter.AddChild(xpValue); + var layout = Fake( + (CharacterStatController.XpMeterId, meter), + (CharacterStatController.XpNextValueId, xpValue)); + + CharacterStatController.Bind(layout, SampleData.SampleCharacter); + + Assert.NotNull(xpValue.LinesProvider); + Assert.True(xpValue.ClickThrough, "XP value overlay must be ClickThrough"); + Assert.True(xpValue.RightAligned, "XP value overlay must be RightAligned"); + + var lines = xpValue.LinesProvider(); + Assert.Single(lines); + // XpToNextLevel from SampleData = 42_000_000L formatted as "42,000,000" + Assert.Equal((42_000_000L).ToString("N0"), lines[0].Text); + } + + /// + /// Fix 5: if XpNextLabelId / XpNextValueId are absent from the layout (the old + /// ConsumesDatChildren path, or a test layout that doesn't include them), Bind() + /// must not throw — the meter Fill is still bound. + /// + [Fact] + public void Bind_XpMeter_MissingTextChildren_DoesNotThrow() + { + var meter = new UiMeter(); + var layout = Fake((CharacterStatController.XpMeterId, meter)); + + // No XpNextLabelId or XpNextValueId in the layout. + var ex = Record.Exception(() => + CharacterStatController.Bind(layout, SampleData.SampleCharacter)); + + Assert.Null(ex); + // Fill must still be bound. + Assert.NotNull(meter.Fill()); + } + // ── Helpers ────────────────────────────────────────────────────────────── /// Manufacture a minimal UiButton with a fake ElementInfo (no dat sprites). diff --git a/tests/AcDream.App.Tests/UI/Layout/LayoutImporterTests.cs b/tests/AcDream.App.Tests/UI/Layout/LayoutImporterTests.cs index 2025085c..34657064 100644 --- a/tests/AcDream.App.Tests/UI/Layout/LayoutImporterTests.cs +++ b/tests/AcDream.App.Tests/UI/Layout/LayoutImporterTests.cs @@ -55,15 +55,15 @@ public class LayoutImporterTests Assert.NotNull(tree.FindElement(0x20000002)); } - // ── Test 3: Meter consumes its children — child ids not in byId ────────── + // ── Test 3: Meter consumes Type-3 slice children — child ids not in byId ──── /// - /// A meter (Type 7) whose children are the 3-slice back/front containers. - /// The meter itself must be findable; its direct children must NOT appear as - /// separate nodes in the tree (meters own their children, not the generic tree). + /// A meter (Type 7) whose children are ONLY the 3-slice back/front containers (Type 3). + /// The meter itself must be findable; its Type-3 children must NOT appear as separate + /// nodes in the tree (Fix 5: only non-Type-3 children are built as separate widgets). /// [Fact] - public void BuildFromInfos_MeterWithChildren_MeterPresent_ChildrenNotInTree() + public void BuildFromInfos_MeterWithSliceChildren_MeterPresent_SliceChildrenNotInTree() { const uint MeterId = 0x100000E6u; const uint BackLayerId = 0x100000E7u; @@ -85,10 +85,103 @@ public class LayoutImporterTests // The meter widget is present. Assert.IsType(tree.FindElement(MeterId)); - // The meter's dat-children are NOT separate UiElement nodes. + // The meter's Type-3 slice children are NOT separate UiElement nodes. Assert.Null(tree.FindElement(BackLayerId)); Assert.Null(tree.FindElement(FrontLayerId)); - // The UiMeter itself has no Ui children (meters consume their children internally). + // The UiMeter itself has no UiElement children (all children were Type-3, consumed). + var uiMeter = (UiMeter)tree.FindElement(MeterId)!; + Assert.Empty(uiMeter.Children); + } + + // ── Test 5: Fix 5 — meter text children (Type-12) are built and registered ─ + + /// + /// Fix 5: a meter (Type 7) with BOTH Type-3 slice containers AND a Type-12 text + /// child. The Type-3 containers must be consumed (not in byId); the Type-12 text + /// child must be built as a UiText, registered in byId, and attached as a UiElement + /// child of the meter (so it renders as an overlay). + /// + [Fact] + public void BuildFromInfos_MeterWithTextChild_TextChildInTreeAsUiTextChildOfMeter() + { + const uint MeterId = 0x10000236u; + const uint BackId = 0x10000237u; // Type-3 slice + const uint FrontId = 0x10000238u; // Type-3 slice + const uint LabelId = 0x10000239u; // Type-12 text child + const uint ValueId = 0x1000023Au; // Type-12 text child + + var backContainer = BuildSliceContainer(BackId, ReadOrder: 0, + l: 0x0600747Eu, t: 0x0600747Fu, r: 0x06007480u); + var frontContainer = BuildSliceContainer(FrontId, ReadOrder: 1, + l: 0x06007481u, t: 0x06007482u, r: 0x06007483u); + + // Two Type-12 text children (the XP "label" and "value" overlay). + var labelInfo = new ElementInfo { Id = LabelId, Type = 12, X = 0, Y = 0, Width = 120, Height = 13 }; + var valueInfo = new ElementInfo { Id = ValueId, Type = 12, X = 0, Y = 0, Width = 200, Height = 13, + HJustify = HJustify.Right }; + + var meter = new ElementInfo { Id = MeterId, Type = 7, Width = 200, Height = 13 }; + meter.Children.Add(backContainer); + meter.Children.Add(frontContainer); + meter.Children.Add(labelInfo); + meter.Children.Add(valueInfo); + + var root = new ElementInfo { Id = 0x100005F9, Type = 3, Width = 210, Height = 20 }; + + var tree = LayoutImporter.BuildFromInfos(root, new[] { meter }, NoTex, null); + + // Meter is present. + Assert.IsType(tree.FindElement(MeterId)); + + // Type-3 slice containers are NOT in byId (consumed by BuildMeter). + Assert.Null(tree.FindElement(BackId)); + Assert.Null(tree.FindElement(FrontId)); + + // Type-12 text children ARE in byId as UiText. + Assert.IsType(tree.FindElement(LabelId)); + Assert.IsType(tree.FindElement(ValueId)); + + // The UiMeter has exactly 2 UiElement children (the two text overlays). + var uiMeter = (UiMeter)tree.FindElement(MeterId)!; + Assert.Equal(2, uiMeter.Children.Count); + Assert.All(uiMeter.Children, c => Assert.IsType(c)); + + // The value child should have RightAligned=true (HJustify.Right in the dat). + var valueWidget = (UiText)tree.FindElement(ValueId)!; + Assert.True(valueWidget.RightAligned, "Type-12 text child with HJustify.Right must build as RightAligned=true"); + } + + // ── Test 6: Fix 5 — vitals meters (Type-3 only) are unaffected ──────────── + + /// + /// Fix 5 regression guard: vitals health/stamina/mana meters have ONLY Type-3 slice + /// children (no Type-12 text children). The meter must have zero UiElement children + /// after build — VitalsController injects its number overlay at runtime, not the importer. + /// + [Fact] + public void BuildFromInfos_VitalsMeter_NoTextChildren_MeterHasNoUiChildren() + { + const uint MeterId = 0x100000E6u; // vitals health meter + const uint BackId = 0x100000E7u; + const uint FrontId = 0x100000E8u; + + var backContainer = BuildSliceContainer(BackId, ReadOrder: 0, + l: 0x0600747Eu, t: 0x0600747Fu, r: 0x06007480u); + var frontContainer = BuildSliceContainer(FrontId, ReadOrder: 1, + l: 0x06007481u, t: 0x06007482u, r: 0x06007483u); + + var meter = new ElementInfo { Id = MeterId, Type = 7, Width = 150, Height = 16 }; + meter.Children.Add(backContainer); + meter.Children.Add(frontContainer); + + var root = new ElementInfo { Id = 0x100005F9, Type = 3, Width = 160, Height = 58 }; + + var tree = LayoutImporter.BuildFromInfos(root, new[] { meter }, NoTex, null); + + Assert.IsType(tree.FindElement(MeterId)); + + // Vitals meter has no UiElement children — only Type-3 children were present, + // all consumed, none built as UiText overlays. var uiMeter = (UiMeter)tree.FindElement(MeterId)!; Assert.Empty(uiMeter.Children); } From 4b5961ec04d8e591af96764d9983bd98df230faa Mon Sep 17 00:00:00 2001 From: Erik Date: Fri, 26 Jun 2026 12:01:42 +0200 Subject: [PATCH 49/51] =?UTF-8?q?fix(studio):=20Character=20window=20polis?= =?UTF-8?q?h=20=E2=80=94=20XP-label=20left-align,=20smaller=20icons/tighte?= =?UTF-8?q?r=20rows,=20selection=20bar=20full-width=20+=20top/bottom?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Item 1 — XP-next label left-alignment: the "XP for next level:" label (child of the XP meter) was not left-aligned with the "Total Experience (XP):" caption above it. Fixed by computing the meter's x-offset at bind time and setting xpLabel.Left = TotalXpLabel.Left - meter.Left, plus Centered=false/RightAligned=false. Item 2 — icon size / row height: attribute-row icons reduced from 24px → 16px, row height from 30px → 22px. The 9 rows are now compact and tightly packed matching the retail reference (2026-06-26). Row font (18px dat) still fits the 22px row. Item 3 — selection bar: UiClickablePanel gains UseSelectionBars (default false) and SelectionBarHeight (default 3px). When UseSelectionBars=true and BackgroundSprite is set, OnDraw draws the sprite as a thin horizontal bar at the TOP edge (y=0) and BOTTOM edge (y=H-barH) of the row — full panel width, no left/right end-caps, UV-tiled horizontally (u1=Width/nativeW). Falls back to the base UiPanel fill (BackgroundColor or full-stretch sprite) when UseSelectionBars=false. AddRow sets UseSelectionBars=true on all attribute/vital rows so the selection highlight shows as retail-style bars. Sprite 0x06001397 is 300×32 px; at 3px bar height the UV crop shows the sprite's top 3px (top bar) and bottom 3px (bottom bar). Temp pre-select for screenshot verification was added then removed before this commit. Co-Authored-By: Claude Sonnet 4.6 --- .../UI/Layout/CharacterStatController.cs | 41 +++++++++++----- src/AcDream.App/UI/UiPanel.cs | 47 +++++++++++++++++++ 2 files changed, 76 insertions(+), 12 deletions(-) diff --git a/src/AcDream.App/UI/Layout/CharacterStatController.cs b/src/AcDream.App/UI/Layout/CharacterStatController.cs index 787622da..e686c481 100644 --- a/src/AcDream.App/UI/Layout/CharacterStatController.cs +++ b/src/AcDream.App/UI/Layout/CharacterStatController.cs @@ -140,11 +140,12 @@ public static class CharacterStatController private static readonly Vector4 HighlightBg = new(1f, 0.75f, 0.2f, 0.25f); // ── Row layout constants ───────────────────────────────────────────────── - // RowHeight reduced from 44 to 30px to match retail's tighter attribute list. - // The larger row font (0x40000001, MaxCharHeight=18) fits in 30px with 6px total vertical - // padding (3px above/below). Retail spec (2026-06-26 ref): "rows tighter, text ≈ icon height". - private const float RowHeight = 30f; - private const float IconSize = 24f; + // RowHeight 22px + IconSize 16px: retail spec (2026-06-26) says icons ~icon-height + // and rows tighter. 16px icon fits inside 22px row with 3px vertical padding each side. + // The larger row font (0x40000001, MaxCharHeight=18) is clipped to the 22px height which + // gives a tight-but-readable line. Retail spec (2026-06-26 ref): "rows tighter, text ≈ icon height". + private const float RowHeight = 22f; + private const float IconSize = 16f; private const float RowPadX = 4f; private const float IconGap = 6f; @@ -242,7 +243,22 @@ public static class CharacterStatController { if (datFont is not null) xpLabel.DatFont = datFont; xpLabel.ClickThrough = true; + xpLabel.Centered = false; // left-align (retail: aligns with Total XP label above) + xpLabel.RightAligned = false; xpLabel.Padding = 0f; // avoid scroll clip — meter bar is ~13px tall + + // Item 1: align the XP-next label's left edge to match the TotalXpLabel's + // absolute left edge. The XP-next label is a child of the meter (local coords), + // so its Left = TotalXpLabel.Left − meter.Left. This accounts for the meter's + // horizontal offset within the panel (the meter starts to the right of the + // "Total Experience (XP):" caption row). Source: retail spec §State 1 (the + // "XP for next level:" caption left-aligns with "Total Experience (XP):" above). + if (layout.FindElement(TotalXpLabelId) is { } totalXpLbl) + { + float xpNextLeft = totalXpLbl.Left - meter.Left; + xpLabel.Left = xpNextLeft >= 0f ? xpNextLeft : 0f; + } + xpLabel.LinesProvider = static () => new[] { new UiText.Line("XP for next level:", Body) }; } if (layout.FindElement(XpNextValueId) is UiText xpValue) @@ -605,13 +621,14 @@ public static class CharacterStatController { var row = new UiClickablePanel { - Left = left, - Top = top, - Width = width, - Height = height, - BackgroundColor = Vector4.Zero, // transparent until selected - BorderColor = Vector4.Zero, - Anchors = AnchorEdges.Left | AnchorEdges.Top, + Left = left, + Top = top, + Width = width, + Height = height, + BackgroundColor = Vector4.Zero, // transparent until selected + BorderColor = Vector4.Zero, + UseSelectionBars = true, // Item 3: draw sprite as top+bottom bars, not full stretch + Anchors = AnchorEdges.Left | AnchorEdges.Top, }; float iconY = (height - IconSize) * 0.5f; diff --git a/src/AcDream.App/UI/UiPanel.cs b/src/AcDream.App/UI/UiPanel.cs index a927ec57..de31ecda 100644 --- a/src/AcDream.App/UI/UiPanel.cs +++ b/src/AcDream.App/UI/UiPanel.cs @@ -124,12 +124,30 @@ public class UiSimpleButton : UiPanel /// catches UIEvent_LeftClick (0x01) and calls SetSelectedAttribute on the /// parent window. In acdream we wire the equivalent via this action callback instead of /// the retail message bus. +/// +/// When is true and +/// is non-zero, draws the sprite as a thin full-width bar at the TOP and BOTTOM edges of +/// the row (not stretched to fill). This matches retail's selection highlight which shows +/// a horizontal dark bar on both the top and bottom edge of the selected attribute row, +/// with NO left/right end-caps. Bar height is pixels +/// (default 3px). /// public class UiClickablePanel : UiPanel { /// Called when the user releases the left mouse button over this panel. public Action? OnClick { get; set; } + /// When true and is non-zero, draws + /// the sprite as a thin horizontal bar at the top AND bottom edges of the panel, + /// NOT as a full-height stretched fill. Matches retail's selected-row highlight + /// (sprite 0x06001397 — 300×32 px — shown as bars, not a block fill). + /// Default false (preserves legacy full-stretch behavior). + public bool UseSelectionBars { get; set; } + + /// Height in pixels of each selection bar (top and bottom). Default 3px. + /// Ignored when is false. + public float SelectionBarHeight { get; set; } = 3f; + public UiClickablePanel() { // Rows must receive pointer events — override the UiPanel default (ClickThrough=false, @@ -152,4 +170,33 @@ public class UiClickablePanel : UiPanel } return false; } + + protected override void OnDraw(UiRenderContext ctx) + { + if (UseSelectionBars && BackgroundSprite != 0 && SpriteResolve is { } sr) + { + // Draw the selection highlight as a thin bar at the TOP and BOTTOM of the row. + // The sprite (0x06001397) is 300×32 px — we draw it as horizontal strips at + // native height (SelectionBarHeight), stretched to full panel width (UV tile + // horizontally). No left/right end-caps: u0=0, u1=Width/nativeW (UV repeat). + var (tex, tw, th) = sr(BackgroundSprite); + if (tex != 0 && tw > 0 && th > 0) + { + float barH = SelectionBarHeight; + float uTile = tw > 0 ? Width / tw : 1f; + // Top bar: shows the top barH px of the sprite (v = 0 → barH/th). + float vBot = th > 0 ? barH / th : 1f; + ctx.DrawSprite(tex, 0f, 0f, Width, barH, 0f, 0f, uTile, vBot, Vector4.One); + // Bottom bar: shows the bottom barH px of the sprite (v = 1−barH/th → 1). + float vTop2 = th > 0 ? 1f - barH / th : 0f; + ctx.DrawSprite(tex, 0f, Height - barH, Width, barH, 0f, vTop2, uTile, 1f, Vector4.One); + } + // Selection-bar mode draws no border (rows have BorderColor=Zero by design). + } + else + { + // Default UiPanel draw: handles BackgroundSprite, BackgroundColor, AND border. + base.OnDraw(ctx); + } + } } From 9408c062d2222158d7c6291d439172c39a19a14b Mon Sep 17 00:00:00 2001 From: Erik Date: Fri, 26 Jun 2026 12:17:27 +0200 Subject: [PATCH 50/51] docs: deep handoff for the multi-window UI mockup stage Covers: what's done (UI Studio, faithful importer Fix A/B/C/4/5, Character window), the look-vs-runtime boundary, the mockup goal + approach (host the production UiHost live), must-fix issues (#149 inventory, #150 GameWindow fonts), patterns/lessons, reference map, and first concrete steps. For the next agent. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../2026-06-26-mockup-stage-handoff.md | 126 ++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100644 docs/research/2026-06-26-mockup-stage-handoff.md diff --git a/docs/research/2026-06-26-mockup-stage-handoff.md b/docs/research/2026-06-26-mockup-stage-handoff.md new file mode 100644 index 00000000..523c274c --- /dev/null +++ b/docs/research/2026-06-26-mockup-stage-handoff.md @@ -0,0 +1,126 @@ +# Handoff — the full multi-window UI mockup stage (2026-06-26) + +For the next agent. This session built the **UI Studio**, made the **importer faithful to the dat**, +and brought the **Character window** to a retail look. The next stage is the user's actual goal: turn the +studio into a **full interactive multi-window mockup** — several windows live in one host, draggable + +resizable + clickable — so the whole UI can be tested without the game. + +Read this, then `claude-memory/project_ui_studio.md` (the SSOT) and `project_d2b_retail_ui.md`. + +--- + +## 1. Where we are (what's done + works) + +### The UI Studio (the dev tool) +`AcDream.App ui-studio [--layout 0xNNNN | --dump ] [--screenshot ]` — a standalone +Silk.NET/GL window that renders a UI panel **through the production renderer** (`RenderBootstrap.Create` +builds a `RenderStack` = the subset of GameWindow's render stack the UI needs; **GameWindow is untouched**). +- Code: `src/AcDream.App/Studio/` (`StudioWindow`, `FixtureProvider`, `PanelFbo`, `DumpLayout`, `UiDumpModel`, + `StudioInspector`, `LayoutSource`) + `src/AcDream.App/Rendering/RenderBootstrap.cs`. +- **Two panel sources:** `--layout 0xNNNN` (real dat-import via `LayoutImporter`, populated by the PRODUCTION + controllers through `FixtureProvider` + `SampleData`), and `--dump ` (the 26-window retail dump, + `docs/research/2026-06-25-retail-ui-layout-dump.json`, static structure only). +- **Headless** `--screenshot ` (PanelFbo → glReadPixels → PNG) — the autonomous self-verify primitive. + Use it constantly. +- **Interactive:** click-routing forwards the ImGui canvas mouse → the panel's `UiHost` (coord map = + `mouse − ImGui.GetItemRectMin()`, no extra Y-flip). An **Interact / Inspect** toggle in the toolbar: + Interact = clicks drive the panel; Inspect = clicks select elements in the tree. + +### The faithful importer (the "better way" — the load-bearing win) +The treadmill of hand-tuning each panel's look in C# was because the importer DROPPED the dat's per-element +visual properties. The dat carries them in `StateDesc.Properties`: **0x1A FontDID**, **0x14/0x15** H/V +justification, **0x1B FontColor**. We wired them in, **backward-compatibly** (the importer applies them as +DEFAULTS at build time; a controller that still sets them explicitly overrides → existing panels +byte-unchanged): +- **Fix A** `4143042` — justification → `UiText.Centered/RightAligned/VerticalJustify`. +- **Fix B** `6e0be4b` — FontColor → `UiText.DefaultColor` (character colors proved RUNTIME — the dat carries none). +- **Fix C** `a0d3395` — FontDid → per-element font via a resolver (`Func`) threaded through + `LayoutImporter.Import` → `DatWidgetFactory`. **STUDIO path only**; GameWindow passes null (issue **#150**). +- **Fix 5** `ad4ed51` — `LayoutImporter.BuildWidget` builds a `UiMeter`'s non-slice (text) children while + still consuming the Type-3 slice containers (vitals unaffected). +- **Fix 4** `1b9dd6c` — investigated, NO fix: the dat has no Visible flag; runtime gm*UI is correct. + +**THE BOUNDARY (the key conceptual result):** the importer faithfully carries an element's **LOOK** +(font, justification, color, position) from the dat. **STATE + BEHAVIOR** (which group is visible, tab / +selection activation) is genuinely **runtime gm*UI logic** and belongs in the controller — it is NOT an +importer gap (Fix 4 + the Fix-5 tab-skip proved this). Don't try to push state/visibility into the importer. + +### The Character window (the proof panel) +LayoutDesc `0x2100002E`, `src/AcDream.App/UI/Layout/CharacterStatController.cs` — Attributes tab reads as +retail: 3 tabs, header, big-gold level number (its own dat FontDid), captions, 9-row attribute list +(icons + right-aligned values + Health/Stamina/Mana), click-to-select (top/bottom selection bars + footer +State-B "{Attr}: {value}" / "Experience To Raise: Infinity!" + affordability-gated raise triangles), centered +footer. **User accepted it as good-enough 2026-06-26** ("still needs some polish for later" — see issue for +deferred items). Specs: `docs/research/2026-06-25-character-window-faithful-spec.md`, +`2026-06-25-attributes-tab-interactive-spec.md`, `2026-06-26-character-window-retail-reference.md`. + +### Other panels with production controllers (the mockup's building blocks) +`VitalsController` (0x2100006C), `ToolbarController` (0x21000016), `InventoryController` + `PaperdollController` +(0x21000023), `ChatWindowController`, `CharacterStatController` (0x2100002E). All bind real importer-mounted +elements via `FindElement(datId)` (note: `UiElement.EventId` ≠ the dat id — the dat id lives in +`ImportedLayout._byId`). + +--- + +## 2. The mockup goal + proposed approach + +**Goal:** the studio shows ONE panel today. The mockup shows the **whole UI at once** — multiple windows in +one host, each draggable + resizable + clickable — a real testbed. + +**Why it's reachable:** the production `UiHost` (`src/AcDream.App/UI/UiHost.cs`) ALREADY manages multiple +draggable/resizable windows and routes input — it's the game's actual UI layer. The studio just needs to host +the full thing instead of one FBO'd panel. (Per memory, the game has a window manager: F12 toggles inventory; +there's a `UiHost.ToggleWindow` / `WindowNames` API.) + +**Proposed path (a new studio "mockup mode"):** +1. Load SEVERAL panels into ONE `UiHost` (not one panel per FBO) — a "desktop." Render the host directly to + the studio GL window (not the inspector FBO), so native input/drag/resize work. +2. Window open/close/arrange (reuse the game's window-manager API). +3. Drag + resize via the production frame chrome (already exists for the retail windows). +4. Keep the inspector available as an optional overlay. +The studio is the THIN host; the production `UiHost` is the engine. Don't reimplement window management — +drive the production one. + +--- + +## 3. Must-fix before / during the mockup + +- **#149** — the **inventory window (0x21000023) renders all-black in the studio** (pre-existing fixture gap, + NOT a regression). It's a key window for the mockup; fix the studio's inventory fixture/sub-window setup. +- **#150** — GameWindow doesn't thread the Fix-C font resolver (live game = global font). Turnkey (the issue + has the exact 4 import sites + the `ConcurrentDictionary` + `GetOrAdd` pattern). +- **Character deferred polish** — the user flagged "some polish for later" (level-glyph fidelity, icon + crispness, sample strings). Filed as an issue; the user will enumerate. + +## 4. Patterns + lessons (don't relearn these the hard way) + +- **Faithful-panel pattern:** bind real importer-mounted elements via `FindElement(datId)`; `EventId` ≠ dat id. +- **Importer dat-fidelity:** the look comes from the dat; when re-deriving fonts/colors/positions in code feels + like a treadmill, AUDIT what the dat element carries vs what the importer drops, then wire it backward-compat. +- **The boundary:** look = importer; state/behavior = runtime controller. Don't fight it. +- **Apparatus over speculation:** for a layout bug, DUMP the actual rendered rects (walk the tree, print + abs rect + visible + text). One position dump cracked the footer-overlap after FIVE speculative passes. + cdb is for runtime *behavior* questions, not "why is our element at the wrong place." +- **Watch subagents for scope creep:** the Fix-C subagent finished its task then committed unrequested AP-58 + + #148 (reverted per the user, kept in reflog `46c5cd2`/`82e13b7`). Constrain dispatches to the assigned task. +- **Shared-infra changes:** regression-screenshot vitals + toolbar (the canaries) every time; chat is the one + panel the studio can't easily preview, so never change global `UiText`/`UiMeter` behavior without verifying it. + +## 5. Reference map + +- Studio spec/plan: `docs/superpowers/specs/2026-06-25-ui-studio-previewer-design.md`, + `docs/superpowers/plans/2026-06-25-ui-studio-previewer.md`; dump sweep `docs/research/2026-06-25-studio-dump-panel-sweep.md`. +- Character window: the three specs above + the retail reference. +- Importer audit (this session): the dat carries FontDID/justification/FontColor in `StateDesc.Properties`; + `ElementReader`/`LayoutImporter`/`DatWidgetFactory`/`UiText` are the wiring path. +- The retail UI dump: `docs/research/2026-06-25-retail-ui-layout-dump.json` (26 windows, real ids + rects + sprites). +- Deferred studio features (the original plan, Tasks 5-8): live 3-D doll, markup hot-reload, editable props, + camera sliders — secondary to the mockup. +- Memory SSOT: `claude-memory/project_ui_studio.md`, `project_d2b_retail_ui.md`. + +## 6. First concrete steps for the next agent + +1. Fix **#149** (inventory studio render) — you need the inventory window for any real mockup. +2. Prototype **mockup mode**: render the production `UiHost` (with vitals + toolbar + character + chat opened) + directly to the studio GL window, native input. Confirm drag + resize + click work through the production host. +3. Then iterate window open/close/arrange + the desktop layout. From ea42c6d3038e063ec0716969394089de94a2330d Mon Sep 17 00:00:00 2001 From: Erik Date: Fri, 26 Jun 2026 12:18:03 +0200 Subject: [PATCH 51/51] docs: record D.2b UI Studio + importer dat-fidelity + Character window (shipped this session) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Roadmap: extend D.5-remaining ledger with three new shipped entries (UI Studio, importer Fix A/B/C, Character window 0x2100002E). Milestone M5: update D.2b status paragraph to name all shipped sub-phases including the studio, importer boundary discovery (look=importer / state=runtime), and Character window with deferred polish pointer (#151). ISSUES: add #151 (Character window deferred polish — LOW, filed 2026-06-26; user accepted Attributes tab as good-enough, polish items to be enumerated later). Issues #149 (studio inventory all-black) and #150 (GameWindow font resolver) were already present. Divergence register: add AP-69 (per-element dat-font resolver is studio-only; GameWindow passes null to the four Import sites until #150 lands). No row for Fix-4 UIState-group activation (runtime-faithful, not a deviation) or for the tab-sprite injection / footer-state hiding (same). Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/ISSUES.md | 17 +++++++++++++++++ docs/architecture/retail-divergence-register.md | 1 + docs/plans/2026-04-11-roadmap.md | 5 ++++- docs/plans/2026-05-12-milestones.md | 2 +- 4 files changed, 23 insertions(+), 2 deletions(-) diff --git a/docs/ISSUES.md b/docs/ISSUES.md index 4e46d9b6..898dae08 100644 --- a/docs/ISSUES.md +++ b/docs/ISSUES.md @@ -46,6 +46,23 @@ Copy this block when adding a new issue: --- +## #151 — Character window — deferred polish + +**Status:** OPEN +**Severity:** LOW +**Filed:** 2026-06-26 +**Component:** ui + +**Description:** The Character window (`LayoutDesc 0x2100002E`, `CharacterStatController`) was user-accepted 2026-06-26 as good-enough for the D.2b track, but the user noted "still needs some polish for later." Known candidates (user will enumerate the full list later): +- Level number glyph fidelity vs retail's exact large dat font rendering. +- Icon crispness in the attribute rows. +- Heritage/title strings are sample data, not wired from the live character. +- Exact string-table wording not ported (e.g. "Total Experience (XP):" caption text sourced from dat string tables vs hardcoded). + +**Root cause / status:** Not a bug — the Attributes tab is functionally complete + visually confirmed. Polish items deferred post-M5 (or whenever D.2b Character window revisited). + +**Files:** `src/AcDream.App/UI/Layout/CharacterStatController.cs`, `src/AcDream.App/UI/Layout/LayoutImporter.cs`. + ## #150 — Live game (GameWindow) doesn't thread the per-element dat-font resolver (Fix C is studio-only) **Status:** OPEN diff --git a/docs/architecture/retail-divergence-register.md b/docs/architecture/retail-divergence-register.md index 772856a0..72b508ac 100644 --- a/docs/architecture/retail-divergence-register.md +++ b/docs/architecture/retail-divergence-register.md @@ -167,6 +167,7 @@ accepted-divergence entries (#96, #49, #50). | AP-66 | **Empty equip slots paint a frame sprite (`EmptySprite` 0x06004D20), faithfulness vs retail's empty-slot art unverified** — Slice 2 shipped the doll `UiViewport` (0x100001D5) + the Slots toggle (doll-view ↔ slot-view, decomp 175674-175706), so empty ARMOR slots are now hidden in doll-view (the 3-D body shows instead). The always-visible non-armor equip slots (and armor slots in slot-view) still paint a frame when empty. | `src/AcDream.App/UI/Layout/PaperdollController.cs:99` | The doll + toggle are faithful (decomp-cited); painting a slot frame on empty positions is plausibly retail (the outlines guide drops), but is not pixel-verified against retail's doll-view. | Empty equip slots may show a framed square where retail shows a different empty treatment — cosmetic. | `gmPaperDollUI::ListenToElementMessage` 175674-175706; user retail screenshots | | AP-67 | **Paperdoll doll is rendered to an off-screen FBO and blitted as a 2-D sprite (RTT), not retail's in-cell `CreatureMode::Render`** — retail adds the doll to `m_pPaperDoll->creature_mode_objects` and draws it into the UI's creature cell during the frame; acdream renders the re-dressed clone into a private framebuffer (`PaperdollViewportRenderer`, sealed in a `GLStateScope`), then the `UiViewport` widget blits the color texture. | `src/AcDream.App/Rendering/PaperdollViewportRenderer.cs`; `src/AcDream.App/UI/UiViewport.cs` | Architectural adaptation: acdream's modern bindless/MDI world pipeline can't cheaply render one creature into a UI cell mid-pass; the RTT seam reuses `WbDrawDispatcher` with the retail camera/light/pose/heading so the pixels match. No visual difference intended. | An FBO-format / lighting-UBO-overwrite / blit-V-flip bug shows as a doll that's mis-lit, clipped, or upside-down vs retail — cosmetic, confined to the viewport. | retail `CreatureMode::Render` 0x004529d0; `RedressCreature` 0x004a3bc0 | | AP-68 | **Per-race paperdoll pose (`gmPaperDollUI::UpdateForRace`) not implemented** — the ctor-default pose animation `0x030003C0` is applied for ALL body types; retail's `UpdateForRace` (decomp 174129) can override `m_didAnimation` per race. | `src/AcDream.App/Rendering/GameWindow.cs` (`ResolvePaperdollPoseDid`) | cdb-confirmed `UpdateForRace` does NOT fire for Horan, so the ctor default 0x030003C0 is authoritative for the gate character; other races/genders may pose differently. | A non-default-race character could hold the wrong stance in the doll — cosmetic. | `gmPaperDollUI::UpdateForRace` decomp 174129; cdb trace 2026-06-25 | +| AP-69 | **Per-element dat-font resolver (Fix C) wired into the STUDIO path only** — `LayoutImporter.Import` + `DatWidgetFactory` support a `Func` resolver that gives each text element its own dat font; `StudioWindow` supplies this resolver. `GameWindow`'s four `Import`/`Build` call sites pass `null`, so the live game still uses a single global font. **Retire with #150.** | `src/AcDream.App/Rendering/RenderBootstrap.cs` (`RenderStack.ResolveDatFont` — the pattern to mirror into GameWindow) + `src/AcDream.App/Studio/StudioWindow.cs` (resolver wired) + `src/AcDream.App/Rendering/GameWindow.cs` (~4 import sites pass null) | Studio is the proving-ground path; GameWindow threading is Issue #150 (small, safe, orthogonal to M5 gameplay). The live panels still render with the global dat font (same as before Fix C), so behavior is unchanged in the shipped game. | Text elements whose dat `FontDid` differs from the global font render with the wrong size/face in the live game — cosmetic; the studio shows the correct dat font. | `DatWidgetFactory.BuildText`; `LayoutImporter.Import(fontResolver)`; commit `a0d3395` (Fix C) | --- diff --git a/docs/plans/2026-04-11-roadmap.md b/docs/plans/2026-04-11-roadmap.md index 87afd132..39664406 100644 --- a/docs/plans/2026-04-11-roadmap.md +++ b/docs/plans/2026-04-11-roadmap.md @@ -433,7 +433,10 @@ behavior. Estimated 17–26 days focused work, 3–5 weeks calendar. - **D.5 — Core panels.** Attributes (`chunk_00470000.c:FUN_0047ba70`), Skills (same), Paperdoll (`chunk_004A0000.c:FUN_004A5200`), Inventory, Spellbook (`chunk_004C0000.c`), Fellowship, Allegiance. Each uses the port sketches in slice 05. **(Targets `AcDream.UI.Abstractions` — ships with D.2a using ImGui-rendered widgets; reskinned by D.2b.)** The *chat* panel originally listed under D.5 shipped early in Phase I (I.4 input + I.7 combat translator superseded the chat-panel design here); this entry now covers Attributes / Skills / Paperdoll / Inventory / Spellbook / Fellowship / Allegiance only. - **✓ SHIPPED — D.5.1 — Toolbar (action bar).** Shipped 2026-06-16/17 (`30b28c2`→`0e7a083`, branch claude/hopeful-maxwell-214a12). First data-driven *game* panel: `gmToolbarUI` (`LayoutDesc 0x21000016`) — 18 shortcut slots from the persisted `PlayerDescription` SHORTCUT block, real **composited** item icons (opaque type-default underlay via the `EnumIDMap 0x10000004` resolve), **occupancy-gated slot numbers 1–9** (occupied = dark-box peace/war `0x10000042/43`; empty = background `0x1000005e` from cell composite `0x10000341`), **click-to-use** (`ItemHolder::UseObject` → `0x0036`), **peace/war stance** indicator live-wired to `CombatState`, **movable**, and a **chrome frame** (UiNineSlicePanel drawn over content via the new `UiElement.OnDrawAfterChildren` hook). New shared widgets `UiItemSlot` (`UIElement_UIItem` 0x10000032, procedural leaf) + `UiItemList` (`UIElement_ItemList` 0x10000031, factory branch) + `IconComposer` (CPU layered composite). `CreateObject.TryParse` extended to the full ACE-order weenie-header tail to capture `IconId`/`IconOverlay`/`IconUnderlay` → `ItemRepository.EnrichItem` → re-render. Spec/plan `docs/superpowers/{specs,plans}/2026-06-16-d2b-toolbar-phase1*.md`; research drop `docs/research/2026-06-16-*deep-dive.md` + synthesis. Divergence IA-16/IA-17 added. **User-confirmed** (numbers, icons, frame). Per-task spec+code-review throughout. - **✓ SHIPPED — D.5.2 — Stateful item-icon system.** Shipped 2026-06-17/18 (`419c3ac`..`fb288ad`, branch claude/hopeful-maxwell-214a12; **visually verified on a live Coldeve server**). Faithful retail icon composite (`IconData::RenderIcons` @0x0058d180): (1) `UiEffects` bitfield captured from the `CreateObject` weenie header (was discarded) → `ItemInstance.Effects`; (2) `IconComposer.GetIcon` rewritten as a 2-stage composite — Stage 1 = drag icon (base + custom overlay) + the effect treatment, Stage 2 = type-default underlay + custom underlay + drag. The effect treatment ports the **surface overload** of `SurfaceWindow::ReplaceColor` (`0x004415b0`): the textured effect tile (`EnumIDMap 0x10000005` by `LowestSetBit(effects)+1`, fallback `0x21` solid-black) is copied **per-pixel** into the icon's pure-white pixels — magical items take the tile's GRADIENT hue, mundane items go black; (3) `PublicUpdatePropertyInt (0x02CE)` parser + `WorldSession.ObjectIntPropertyUpdated` event + `GameWindow` subscription → `ItemRepository.UpdateIntProperty` → icon re-composites live. **Appraise (`0x00C9`) carries NO icon data** (ACE proof: `Icon`/`IconOverlay`/`IconUnderlay`/`UiEffects` all lack `[AssessmentProperty]`) — dropped as a no-op. **Two visual-verification fixes landed after the subagent build:** the `effects==0` recolor MUST run (mundane white edges → black, `40c97a5`) and the tint is a per-pixel GRADIENT not a flat color (the surface overload, `fb288ad`) — both confirmed via clean Ghidra + named decomp. Divergence: IA-16 retired; IA-18 (per-pixel surface-copy anti-regression) + AP-45 (0x02CE sequence) added; **AP-43/AP-44 retired by the visual fixes**. Spec/plan/research: `docs/superpowers/{specs,plans}/2026-06-17-d2b-stateful-icon*.md`, `docs/research/2026-06-17-stateful-icon-RESOLVED.md`. -- **D.5 remaining — sub-phase ledger.** D.5.1 (toolbar + the `UiItemSlot`/`UiItemList`/`IconComposer` spine) ✅, D.5.2 (stateful icons) ✅, D.5.4 (client object/item data model) ✅, D.2b-B window manager (`abbd97b`) ✅, D.2b-B B-Grid (inventory sub-window mount + `UiItemList` grid) ✅, D.2b-B B-Controller (inventory population + burden meter + captions, `03fbf44`; **visually confirmed 2026-06-21** — two render bugs fixed at the gate `417b137`: backdrop wash-out [a #145 continuation — mounted sub-window slots must keep their own frame ZLevel, not inherit the base root's 1000] + captions [drive the host UiText directly]) ✅, D.2b-B B-Wire (`EncumbranceVal`/PropertyInt 5 wire delivery, AP-48/49 retired) ✅, inventory window finish Stage 1 (scroll/frame/vertical-resize/102-slot grid) ✅, empty-slot art ✅, container-switching + open/selected indicators + main-pack icon + per-bag capacity bar ✅, B-Drag (inventory drag-drop / item moving) ✅, and **Sub-phase C (paperdoll): Slice 1 equip slots ✅ + Slice 2 3-D doll `UiViewport` (Type 0xD via the `IUiViewportRenderer` RTT seam) + Slots toggle ✅ (visually confirmed 2026-06-25, `8fa66c2` — pose/camera/heading all retail-verbatim)** are shipped. Build order from here: **(d) finish the bar — D.5.3 remaining (selected-object meter/mana, stack entry/slider) + spell shortcuts + the selection→selected-object-bar wiring (AP-58); ISSUES #146/#147/#148.** Each ☐ below gets its own brainstorm → spec → plan. +- **D.5 remaining — sub-phase ledger.** D.5.1 (toolbar + the `UiItemSlot`/`UiItemList`/`IconComposer` spine) ✅, D.5.2 (stateful icons) ✅, D.5.4 (client object/item data model) ✅, D.2b-B window manager (`abbd97b`) ✅, D.2b-B B-Grid (inventory sub-window mount + `UiItemList` grid) ✅, D.2b-B B-Controller (inventory population + burden meter + captions, `03fbf44`; **visually confirmed 2026-06-21** — two render bugs fixed at the gate `417b137`: backdrop wash-out [a #145 continuation — mounted sub-window slots must keep their own frame ZLevel, not inherit the base root's 1000] + captions [drive the host UiText directly]) ✅, D.2b-B B-Wire (`EncumbranceVal`/PropertyInt 5 wire delivery, AP-48/49 retired) ✅, inventory window finish Stage 1 (scroll/frame/vertical-resize/102-slot grid) ✅, empty-slot art ✅, container-switching + open/selected indicators + main-pack icon + per-bag capacity bar ✅, B-Drag (inventory drag-drop / item moving) ✅, **Sub-phase C (paperdoll): Slice 1 equip slots ✅ + Slice 2 3-D doll `UiViewport` (Type 0xD via the `IUiViewportRenderer` RTT seam) + Slots toggle ✅ (visually confirmed 2026-06-25, `8fa66c2` — pose/camera/heading all retail-verbatim)** ✅, **UI Studio** (`AcDream.App ui-studio`) ✅, **importer dat-fidelity (Fix A/B/C)** ✅, and **Character window** (`LayoutDesc 0x2100002E`, `CharacterStatController`) ✅ are shipped. Build order from here: **(d) finish the bar — D.5.3 remaining (selected-object meter/mana, stack entry/slider) + spell shortcuts + the selection→selected-object-bar wiring (AP-58); ISSUES #146/#147/#148.** Each ☐ below gets its own brainstorm → spec → plan. +- **✓ SHIPPED — UI Studio** (2026-06-26, branch `claude/hopeful-maxwell-214a12`, ~33693c6→HEAD). Standalone `AcDream.App ui-studio [--layout 0xNNNN | --dump ] [--screenshot ]` Silk tool that previews any panel through the **production renderer** (`RenderBootstrap.cs` + GameWindow untouched). Sources: 26-window retail dump (`docs/research/2026-06-25-retail-ui-layout-dump.json`) via `--dump`, or live dat import + fixtures via `--layout`. Interactive canvas (click-routing to `UiHost`, Interact/Inspect ImGui toggle), headless `--screenshot`. Architecture: `src/AcDream.App/Studio/` (`StudioWindow`, `PanelFbo`, `FixtureProvider`, `LayoutSource`) + `src/AcDream.App/Rendering/RenderBootstrap.cs`. ISSUES #149 (inventory all-black in studio) and #150 (GameWindow font resolver) filed. +- **✓ SHIPPED — Importer dat-fidelity** (Fix A/B/C, 2026-06-26, same branch). **Boundary established: look = importer (font/justification/color from dat); state/behavior = runtime controller logic.** Fix A: justification property `0x14`/`0x15` → `UiText` Centered/RightAligned/VerticalJustify. Fix B: FontColor property `0x1B` → `UiText.DefaultColor`; character colors proved RUNTIME (no importer fix). Fix C: FontDid → per-element dat font via a resolver in `DatWidgetFactory` — **STUDIO path only**; GameWindow passes `null` (Issue #150). Fix 4 (UIState-group activation): INVESTIGATED — no importer fix exists; the dat has no Visible encoding; runtime `gm*UI` is correct. +- **✓ SHIPPED — Character window** (`LayoutDesc 0x2100002E`, `CharacterStatController`, 2026-06-26, same branch). **Visually user-confirmed 2026-06-26 — Attributes tab reads as retail.** Three tabs, header (name/heritage/PK), large-gold level number (dat font, `largeDatFont` 18px), "Total Experience (XP):" + "XP for next level:" captions, 9-row attribute list (icons + right-aligned values + Health/Stamina/Mana vitals), click-to-select (top/bottom selection bars + footer State-B "{Attr}: {value}" / "Experience To Raise: Infinity!" + affordability-gated raise triangles), centered footer. User noted "still needs some polish for later" — deferred to Issue #151. - **✓ SHIPPED — D.5.4 — Client object/item data model (foundation).** Shipped 2026-06-18 (`b506f53`..`a33e897`, 11 commits). Renamed `ItemRepository`→`ClientObjectTable` / `ItemInstance`→`ClientObject`; broadened the table to hold EVERY server object (retail `weenie_object_table` shape). `CreateObject` is now the canonical merge-upsert (`ClientObjectTable.Ingest`, retail `SetWeenieDesc` semantics) via a new Core.Net `ObjectTableWiring` (off GameWindow); `DeleteObject` evicts; `PlayerDescription` is a membership manifest (`RecordMembership`); live container-membership index (`GetContents`, retail `object_inventory_table`). `_liveEntityInfoByGuid` retired (selection/describe resolve from the one table). Root fix: the old enrich-existing-only `EnrichItem` dropped `CreateObject`s for items with no `PlayerDescription` stub — live-Coldeve 4/6 hotbar slots blank; items are now created, not dropped. **Crux resolved:** retail is TWO tables (`object_table` + `weenie_object_table`), NOT one — acdream's `WorldEntity` (3D system) + `ClientObjectTable` (data/UI) split was already architecturally faithful; the fix was the ingestion path, not a table unification. 2671 tests green. - **☐ D.5.3 — Toolbar selected-object display (issue #140) + spell shortcuts.** Wire the B.4 `WorldPicker`/selection state → the two hidden meters (`0x100001A1` health / `0x100001A2` mana) + the stack slider (`0x100001A4`) + the object-name line, so the bar shows the player's currently-selected world object. Plus **spell shortcuts** — pinned *spells* (vs items) don't render their glyphs yet (`ToolbarController.Populate` skips `ObjectGuid==0`). Together these finish "the bar." (Click-to-use + the peace/war stance indicator landed in D.5.1.) - **☐ D.5.5+ — Core panels.** Inventory (`gmInventoryUI`/`gmBackpackUI`), equipment/paperdoll (`gmPaperDollUI`/`gm3DItemsUI` + the `UiViewport` 3D doll), vendor, trade, spellbook. Research drop done (`docs/research/2026-06-16-*`). Depends on **D.5.4** (data model) + the item-slot/list/icon spine (D.5.1/D.5.2) + the **window manager** (Plan 2: open/close/z-order/persist + faithful grip/dragbar drag-resize) + the drag-drop spine wired (`UiRoot` has the chain; the per-cell accept/drop hooks are still stubs in `UiField`). Also deferred from D.5.1: drag/reorder + the `AddShortcut`/`RemoveShortcut` mutate wire. diff --git a/docs/plans/2026-05-12-milestones.md b/docs/plans/2026-05-12-milestones.md index fdbb5ef3..c62bdff0 100644 --- a/docs/plans/2026-05-12-milestones.md +++ b/docs/plans/2026-05-12-milestones.md @@ -454,7 +454,7 @@ Open the inventory panel — retail-skinned with the right font, icons, and local lighting). - **C.3** — Palette range tuning (skin/hair/eye colors match retail). - **C.4** — Double-sided translucent polys. -- **D.2b** — Custom retail-look UI backend. +- **D.2b** — Custom retail-look UI backend. **In progress:** vitals + chat + toolbar + inventory (window manager, B-Grid, B-Controller, B-Wire, drag-drop, container-switching) + paperdoll (equip slots, 3-D doll UiViewport, Slots toggle) + **Character window** (Attributes tab, visually confirmed 2026-06-26) + **UI Studio** (standalone panel previewer + 26-window retail dump + interactive click-routing + headless screenshot) + **importer dat-fidelity** (Fix A/B/C: justification, FontColor, per-element FontDid resolver [studio-only; #150 tracks live-game path]) are shipped. Next: D.5.3 selected-object bar + spell shortcuts; #151 Character window polish deferred. - **D.3–D.7** — AcFont + dat sprites + core panels reskinned + HUD orbs + cursor manager. - **L.1f** — NPC/monster + item-use animation coverage.