Kayori 68b77bb9c3 Fix PASELI recharge config crash and profile/schema mismatches
- GetConfigEaChargeHandler: was declared as Handler<EmptyRequest, T>,
  which made HandlerService attempt to XML-deserialize an EmptyRequest
  against the incoming <eacharge> root, crashing on every getconf call.
  Switched to HandlerWithoutRequest<T>, matching every other
  parameterless handler (e.g. SppassOpenHandler).

- ChargeMachinePlugin.DoesProfileExist: was a synchronous Func<bool>,
  but PluginService.DoesProfileExistAsync casts the DynamicInvoke result
  to Task<bool>, throwing InvalidCastException on every card inquire.
  Now returns Task.FromResult(true) - a PASELI profile always exists
  once a user is created, so this plugin never needs to report "no
  profile" here.

- EaChargeConfigResponse: dropped the multibills/readagreement fields
  entirely and fixed articlelist's XML shape. A real getconf response
  (captured via spice2x's automap against the genuine Konami server)
  has neither field at all, and wraps articlelist entries in <item>
  children rather than repeating sibling <articlelist> elements. The
  denomination-button limitation this was chasing turned out to be an
  unrelated spice2x bill-validator emulation gap (see spice2x issue
  #123), not anything server-side.

- GetConfigEaChargeHandler: DOCMT_* article types now send an empty
  articledoc, matching the real server - the disclosure/agreement text
  is rendered client-side from a bundled asset, not delivered over the
  wire. Sending real text there produced a solid black screen on a
  real cabinet instead of the disclosure text.

Claude-Session: https://claude.ai/code/session_012FiU5Qe8fbePFxraxWHSd5
2026-09-06 23:54:15 +02:00
2025-07-29 14:49:15 +02:00
2025-07-29 14:49:39 +02:00
S
Description
No description provided
2.1 MiB
Languages
C# 98%
Shell 2%