XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

XFEEDToolBox

【WinUI】XFE精英危险工具箱

公开
关注 0 Fork 0 Star 0
UTF-8

Original Powerplay activity UI and query inputs

Read-only analysis of the pinned Odyssey image artifacts/ship-model-reference/client-copy/EliteDangerous64.exe, base 0x140000000, SHA-256 6891f70a021fa9f3a0e00458c284f48d1226e68ae7fc02ad48081aed47857e93. The installed image was updated by Steam and no longer matches this version. No game function was invoked and no original setting was modified. Selected output is under artifacts/galaxy-query-research/power-activities/.

The current map-as/scripts/components/leftHandPanels/PowerplayActivityPanelComponent.as binds dynamic FilterActivities rows and sends their uid; declared member names are not an inventory. Original function 3AA1840 creates five rows. 3A199E0 writes both uid and sortField with the supplied number and calls 465B030 for the original localization token:

Original UI uid Native DS row Localization Original Chinese
1 Undermining GALAXY_ACTIVITY_UNDERMINING 暗中破坏
2 Reinforcing GALAXY_ACTIVITY_REINFORCING 巩固中
3 Acquiring GALAXY_ACTIVITY_ACQUIRING 正在获取
4 BeingUndermined GALAXY_ACTIVITY_OPPOSING_UNDERMINING 抵抗破坏
5 Total GALAXY_ACTIVITY_TOTAL 总计

GALAXY_ACTIVITY_CONTESTING aliases GALAXY_ACTIVITY_OPPOSING_UNDERMINING; translating the unused ActionScript member activityTypeContestingBtn as a separate contesting activity was incorrect. The implemented domain enum keeps names independent from wire IDs; GalaxyPowerActivities.OriginalUid is the explicit proven conversion.

3ACF250 binds the Powerplay service identified by global component id 5F3C524 at object +78. Original 3AF6A80 enumerates service vfunc +40 count and +50(index) definitions. Definition RGB floats are +60..68. 3AA1840 builds actual power options with label from definition +18, but the UI powerID is enumeration index plus one, while the definition's first integer and later native selected-power fields may use an internal id. These must not be conflated. No public controlling-power list order establishes this mapping.

The registration thunk is 1414DF0, registering base +58. Actual constructor 1401E60 writes base vtable 51BB510, base+8 51BB540, and interface +58 vtable 51BB640. The interface's ready flags +308/+309 guard count +330 and definition vector +338 (stride 260), as proved by 1411EE0/1411FD0. The name is an original refcounted string pointer at definition +18; 763B70 reads that pointer and increments its +10 refcount for the UI. A reader can copy existing definitions without invoking any game method.

The same 3AA1840 loop reads the definition's first integer (iStack_338=*piVar14) and compares it with param5, but this writes the original isPledged field (string at 55213D8), not proof of the selected activity selector namespace. It separately writes index+1 as powerID for UI callbacks. 3B46030 persists the optional activity struct's first field to setting23; 3ACF4A0 restores it at +188, and 3AA1840 publishes that optional field as defaultPowerIndex. 1412900 bounds its power argument by the definition count and compares it with metadata's controller index. Consequently, the saved selector cannot yet be mapped to InternalPowerId simply because that integer appears in a different pledged-state comparison. The tool preserves this raw setting and requires actual power reselection until the callback/index conversion is closed. The original Any row and ActionScript OnPowerSelectAny are separate from a named power: saved23 -2 restores to optional scope -1; saved23 -1 disables that optional input. The tool models the special All scope explicitly.

The system metadata getter 141414100 writes its last-key cache at +668/+670 and invokes an LRU routine. Activity-level getters 141412900/14121E0 also traverse containers and may flush callbacks; their getter-like names do not prove a pure read path. Do not invoke these as read-only facts without analyzing their existing-cache branches. Original 3AF6A80 converts raw definition RGB using 3AC40B0(mode1) into a dual three-component color representation: source rawRGB is stored at +0C. Territory getter 3B265D0 copies the +0C triplet and following opacity from 3B27100's dual-color result. Normal named-controller territory colors can use actual rawRGB; activity's different getter and special territory-type palettes are separate evidence tasks.

Territory 3ACF4A0 restores settings slot24 to +194 and slot25 as the minimum-level enable flag, with float setting0 for minimum strength. 3B1CFA0 independently confirms special cases 5=total, 4=opposing undermining, 2=reinforcing. 3B27100 combines power/state selection and, only when enabled, a minimum recent counter. There is no separately established action-eligibility boolean in this path. Positive public reinforcement/undermining progress cannot replace this native counter.

The derived outer Activities object is vtable 552E5C8 (factory slot +408), with color 3B264B0, predicate 3B42700, and update 3AF6C40. The predicate is a range test around the actual current system. It is distinct from the optional Territory activity counter and its threshold; the uniform base getter 108B2A0 does not establish the derived object's display.

The read-only existing-cache adapter reports the original recent counter with explicit scope, actual power id and action uid. It converts an actual InternalPowerId through the current definition table to the original metadata index. UID5 reads total metadata; original zero is preserved when metadata and the cache are ready, while absent metadata or unready sources yield null. It does not invoke the original container-mutating getters. The client rejects mismatched scope/id/action and origin/generation changes. Territory's independent optional-activity enable flag is restored from saved selector23: -1 disables it and -2 enables All. With activity enabled, the counter is read even if the minimum toggle is off, because original territory geometry uses it. Only the minimum toggle adds a threshold condition. Null replaces stale facts, and all such evidence is runtime-only and account/process/current-system bound.

Territory style uses the original metadata classification and actual power definition for radius, raw RGB, linear RGB and geometry opacity. PowerTerritoryStyle(system) verifies the complete current request and scope/id/action before exposing a cached style. The ordinary point getter consumes raw RGB; the original 32-byte geometry producer consumes linear RGB, so the two are preserved separately. RawState/StateIndex remain numeric until their complete name mapping is established; public enum order is not substituted. Unknown styles have no invented radius or circle. Filled geometry and full live visual equivalence remain separate work.

Native 465B030 returns localization tokens above; UI colors are not obtained from EliteColors. ColouredRadioButton listens to colour4F from native DataStore. The script SystemStateType.getColourFromEnum only colors summary state bars and is not proof of galaxy system RGB endpoints.

Implemented: actual UI selection prerequisites including All, five original activity choices, exact saved Action1–5 restore, explicit current-definition name/InternalPowerId selection, independent minimum level, exact query identity, nonpersistent evidence bound to account/process/origin, the pure read-only native Power definition table/name/id/rawRGB adapter (Navigation.GalaxyPowerOptions.cs), and scoped recent-counter wire/worker/UI integration. Remaining: saved named-power selector namespace, the distinct outer Activities range display, and live acceptance on the current executable profile. The UI keeps unresolved sources explicit rather than treating absence as a completed zero-result query.

Later2026-10-24 closure: the named-selector gap above is now resolved by the actual 46C6270→551FFF0+3C8/3A6CDE0→3AB6760→552D720+28/3B46030 chain. The saved value is zero-based definition Index; the current actual row supplies its independent InternalPowerId and name. Delayed current-definition binding is implemented with strict pending/ambiguous states. See galaxy-original-power-selection-evidence.md and its six-function old/new proof; the earlier uncertainty is retained as historical evidence, not current behaviour.