Skip to content

core v0.4.0

Choose a tag to compare

@AEastwood AEastwood released this 16 Oct 01:23
· 44 commits to main since this release

Game settings in the CO-OP panel, saving settings, a virtual gamepad for tests (new features, so a minor release). No
breaking changes: game repos update without code changes; the new interface calls are optional. No wire protocol
change.

  • GameModule: optional PanelOptions(rows) / PanelOptionStep(index, delta). The pause CO-OP panel shows each row as
    "LABEL < VALUE >" in every session state (also without a session); Left/Right and the pad d-pad step it, Enter,
    pad A and a click step it forward, and the key hints show "Left/Right Change" on such a row. Mafia DE uses it for
    the player's CHARACTER and OUTFIT.
  • Config: Set(key, value) changes a value for the process (it then wins over the file and the launcher's environment
    overrides) and saves it into the settings file: the first line for that key is replaced, everything else is kept,
    a missing key is appended, a missing file is created (written next to it and moved over it). Config is now
    thread-safe. New test config_set.
  • ui_input: a test pad (EnableTestPad, SetTestPad(state, holdMs)): a virtual XInput gamepad on user 0 (also
    reported by XInputGetCapabilities, which is now hooked too), on top of a real pad's state, read by the game and by
    our panels. Off unless test_pad = 1 / --test_pad 1. Synthetic mouse clicks never reach some games; a pad does.
  • CO-OP panel fix: only a real mouse move selects the row under the cursor. A game that keeps the cursor at the
    window centre sends mouse moves to the same spot every frame, which pinned the selection to the row under the centre
    and undid every keyboard and pad step.