Gamepad controller logic.. could I get some advice pretty please? :)

Sheesh, seems like I’m asking alot on these forums recently :frowning:

So… here is the logic:

If player is in combat, use these commands with the face buttons
If player is not in combat, use these commands

Press L1 to switch commands (I need 40 commands in total, roughly)

I think I could come up with something, but just putting this out there before I start cracking it, to see if anyone has something more efficient than what I would build. If nada, I’ll post an image or 50 of what I come up with.

How I would do it (and in fact, how I DO do it for different weapons in my game since each one uses a different kind of attack command logic):

Define an Enum which contains all possible states of control configuration (In Combat Close, In Combat Far, In Combat Support, Out of Combat Main, etc etc).

Have L1 (or whatever the InputAction is for setting ControlConfig) set a variable, which is of the ControlConfig Enum type, to the appropriate state. Depending on your specific needs you might check a Bool that determines if the player is in combat or not, so that in combat L1 cycles through combat states only and out of combat it cycles through non combat states only.

For each InputAction, have the execution pins (press, and release if needed) hit a SwitchOnControlConfig which is connected to the aforementioned variable. Each output pin controls what that command does when in a specific control config state.

I use this logic to switch my dodge/block, melee, melee special, reload, iron sights, and gun firing commands to separate Collapsed Graphs based on the currently active weapon, so that special logic can be utilized for each one. Your system should work about the same; when the ControlConfig is set to Magic1, Square executes the logic for Fireball. When it’s set to Support1, it executes the logic for Heal. When it’s set to OutOfCombat, it executes the logic for speaking/interacting.

You basically create 40 separate logics as functions/collapsed graphs, then use the SwitchOnEnum function to change which logic is hit by each InputAction based on that.