IDEAS FOR RYZOM


Key-Combos (e.g: Allow to make move-keys context-sensitive to overlap with h ...

Make it possible that one key on the keyboard triggers multiple actions (just like macros),
but only trigger each action if the action's context-requirement is met.

Some actions need quick hotkeys such as <skill1-hotkey> or <skill2-hotkey>.

– But even then, it would be nice to have 1 key switching between 50m skills and 25m skills and another switching between offensive and defensive - 2 rather than 4 keys for different hotkey bars.

– But other actions are peaceful and take a long time to cast or are used very rarely (deposit tracking, sit/stand). These actions could overlap with the move keys.
___________

For this, we need "contexts" - lists which contain a set of "key=action" pairs. It can look different from the view of an user and a developer (described below).
___________

The user – Selects areas of his keyboard:
1– Some areas are for common quick-actions such as left/right turn/strafe + moving.
2– Other areas are context sensitive.

Side-note: I would like hotkey bars which look like a keyboard near hotkeys to access actions.

Context-sensitive areas:
1– Some areas are for toggling contexts (A or B) similar to hotkey-bars, but for all actions, not just magic/fighting.
2– The third type of context-key activates a context only for the next key pressed. This key can then itself activate another context (temporarily), prolong the current context by another action or issue an action (or both). Any key not belonging to the combo may cancel it (or the key which triggered it).

Maybe not all users understand this complex system from the very beginning, but some will read into it because we understand the benefit from such a system.
___________

The developer sees a config file like this:

default = move,switch
persistent = move,switch
temporary = playeractions #until the next key is pressed
[move]
d = action : player / turn_left
g = action : player / turn_right
f = action : player / move_forward
s = action : player / move_backward
[switch]
q = context : +playeractions -move ~temporary
[playeractions]
s = action : hotkey_bar / 08
d = action : hotkey_bar / 09
f = action : hotkey_bar / 18
g = action : hotkey_bar / 19

And he sees following code to translate key-codes into action-links (pretty much standard):

variable actions : array[ number_hotkeys ][ list ] = { hotkeyN -> list{ action, … }, … } // or alternatively a buffered linked-list for actions.
function parse_config(file){ … }
function handle_hotkey(number){ … }
function handle_action(type, index, context){ if(allContexts[context] = ACTIVE) then handle_action(type, index) }
function handle_action(type, index){ … }
Show topic
Last visit Tuesday, 26 November 15:06:18 UTC
P_:G_:PLAYER

powered by ryzom-api