script generating player offset files
parent
b9d76d5e8f
commit
bf677856a2
|
|
@ -30,26 +30,16 @@ INPUT_UDP_PORT=port
|
||||||
|
|
||||||
## `mayhem-party`
|
## `mayhem-party`
|
||||||
|
|
||||||
|
`cd ./config.d/mayhem-party.d/remap.d; bash ./rotate.sh` and press enter at least once
|
||||||
|
|
||||||
### Configs
|
### Configs
|
||||||
|
|
||||||
Create some number of remap files at `/tmp/mayhem-party.d/*`
|
|
||||||
with keys for EVERY client config button like the following
|
|
||||||
with at least 1 effectively not mapped/empty
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
A: A
|
|
||||||
B: B
|
|
||||||
C: C
|
|
||||||
```
|
|
||||||
|
|
||||||
run `cd /tmp/mayhem-party.d; ln -s ./the-unmapped-file ./live`
|
|
||||||
|
|
||||||
### Binary
|
### Binary
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
DEBUG=1
|
DEBUG=1
|
||||||
INPUT_KEYBOARD=true
|
INPUT_KEYBOARD=true
|
||||||
INPUT_REFRESH_ON_SIGUSR=true
|
INPUT_REFRESH_ON_SIGUSR1=true
|
||||||
INPUT_REMAP_FILE=/tmp/mayhem-party.d/live
|
INPUT_REMAP_FILE=/tmp/mayhem-party.d/live
|
||||||
MAIN_INTERVAL_DURATION=5ms
|
MAIN_INTERVAL_DURATION=5ms
|
||||||
OUTPUT_KEYBOARD=true
|
OUTPUT_KEYBOARD=true
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
export DEBUG=1
|
export DEBUG=1
|
||||||
export INPUT_KEYBOARD=true
|
export INPUT_KEYBOARD=true
|
||||||
export INPUT_REFRESH_ON_SIGUSR=true
|
export INPUT_REFRESH_ON_SIGUSR1=true
|
||||||
export INPUT_REMAP_FILE=./config.d/mayhem-party.d/remap.d/live.yaml
|
export INPUT_REMAP_FILE=./config.d/mayhem-party.d/remap.d/live.yaml
|
||||||
export MAIN_INTERVAL_DURATION=5ms
|
export MAIN_INTERVAL_DURATION=5ms
|
||||||
export OUTPUT_KEYBOARD=false
|
export OUTPUT_KEYBOARD=false
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,31 @@
|
||||||
|
import yaml
|
||||||
|
from sys import argv
|
||||||
|
from sys import stderr
|
||||||
|
|
||||||
|
def log(*args):
|
||||||
|
print(*args, file=stderr)
|
||||||
|
|
||||||
|
def main(args):
|
||||||
|
players = []
|
||||||
|
for i in range(1, 5+1):
|
||||||
|
with open(f"../../rusty-pipe.d/{i}.yaml", "r") as f:
|
||||||
|
players.append(yaml.safe_load(f)["streams"]["input"]["engine"]["gui"]["buttons"])
|
||||||
|
log(players[-1])
|
||||||
|
for arg in args:
|
||||||
|
offset = int(arg)
|
||||||
|
for i in range(len(players)):
|
||||||
|
j = (i+offset)%len(players)
|
||||||
|
if i == j:
|
||||||
|
break
|
||||||
|
keys = players[i]
|
||||||
|
values = players[j]
|
||||||
|
log(f"player {i+1} plays as player {j+1}")
|
||||||
|
print(f"# player {i+1} controls {j+1}")
|
||||||
|
for k in keys:
|
||||||
|
key = keys[k]
|
||||||
|
value = values[k]
|
||||||
|
print(f"'{key}': '{value}'")
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
from sys import argv
|
||||||
|
main(argv[1:])
|
||||||
|
|
@ -1 +1 @@
|
||||||
0.yaml
|
players_offset_0.yaml
|
||||||
|
|
@ -0,0 +1,55 @@
|
||||||
|
# player 1 controls 2
|
||||||
|
'1': 'q'
|
||||||
|
'2': 'w'
|
||||||
|
'3': 'e'
|
||||||
|
'4': 'r'
|
||||||
|
'5': 't'
|
||||||
|
'6': 'y'
|
||||||
|
'7': 'u'
|
||||||
|
'8': 'i'
|
||||||
|
'9': 'o'
|
||||||
|
'0': 'p'
|
||||||
|
# player 2 controls 3
|
||||||
|
'q': 'a'
|
||||||
|
'w': 's'
|
||||||
|
'e': 'd'
|
||||||
|
'r': 'f'
|
||||||
|
't': 'g'
|
||||||
|
'y': 'h'
|
||||||
|
'u': 'j'
|
||||||
|
'i': 'k'
|
||||||
|
'o': 'l'
|
||||||
|
'p': ';'
|
||||||
|
# player 3 controls 4
|
||||||
|
'a': 'z'
|
||||||
|
's': 'x'
|
||||||
|
'd': 'c'
|
||||||
|
'f': 'v'
|
||||||
|
'g': 'b'
|
||||||
|
'h': 'n'
|
||||||
|
'j': 'm'
|
||||||
|
'k': ','
|
||||||
|
'l': '.'
|
||||||
|
';': '/'
|
||||||
|
# player 4 controls 5
|
||||||
|
'z': '!'
|
||||||
|
'x': '@'
|
||||||
|
'c': '#'
|
||||||
|
'v': '$'
|
||||||
|
'b': '%'
|
||||||
|
'n': '^'
|
||||||
|
'm': '&'
|
||||||
|
',': '*'
|
||||||
|
'.': '('
|
||||||
|
'/': ')'
|
||||||
|
# player 5 controls 1
|
||||||
|
'!': '1'
|
||||||
|
'@': '2'
|
||||||
|
'#': '3'
|
||||||
|
'$': '4'
|
||||||
|
'%': '5'
|
||||||
|
'^': '6'
|
||||||
|
'&': '7'
|
||||||
|
'*': '8'
|
||||||
|
'(': '9'
|
||||||
|
')': '0'
|
||||||
|
|
@ -0,0 +1,55 @@
|
||||||
|
# player 1 controls 3
|
||||||
|
'1': 'a'
|
||||||
|
'2': 's'
|
||||||
|
'3': 'd'
|
||||||
|
'4': 'f'
|
||||||
|
'5': 'g'
|
||||||
|
'6': 'h'
|
||||||
|
'7': 'j'
|
||||||
|
'8': 'k'
|
||||||
|
'9': 'l'
|
||||||
|
'0': ';'
|
||||||
|
# player 2 controls 4
|
||||||
|
'q': 'z'
|
||||||
|
'w': 'x'
|
||||||
|
'e': 'c'
|
||||||
|
'r': 'v'
|
||||||
|
't': 'b'
|
||||||
|
'y': 'n'
|
||||||
|
'u': 'm'
|
||||||
|
'i': ','
|
||||||
|
'o': '.'
|
||||||
|
'p': '/'
|
||||||
|
# player 3 controls 5
|
||||||
|
'a': '!'
|
||||||
|
's': '@'
|
||||||
|
'd': '#'
|
||||||
|
'f': '$'
|
||||||
|
'g': '%'
|
||||||
|
'h': '^'
|
||||||
|
'j': '&'
|
||||||
|
'k': '*'
|
||||||
|
'l': '('
|
||||||
|
';': ')'
|
||||||
|
# player 4 controls 1
|
||||||
|
'z': '1'
|
||||||
|
'x': '2'
|
||||||
|
'c': '3'
|
||||||
|
'v': '4'
|
||||||
|
'b': '5'
|
||||||
|
'n': '6'
|
||||||
|
'm': '7'
|
||||||
|
',': '8'
|
||||||
|
'.': '9'
|
||||||
|
'/': '0'
|
||||||
|
# player 5 controls 2
|
||||||
|
'!': 'q'
|
||||||
|
'@': 'w'
|
||||||
|
'#': 'e'
|
||||||
|
'$': 'r'
|
||||||
|
'%': 't'
|
||||||
|
'^': 'y'
|
||||||
|
'&': 'u'
|
||||||
|
'*': 'i'
|
||||||
|
'(': 'o'
|
||||||
|
')': 'p'
|
||||||
|
|
@ -0,0 +1,55 @@
|
||||||
|
# player 1 controls 4
|
||||||
|
'1': 'z'
|
||||||
|
'2': 'x'
|
||||||
|
'3': 'c'
|
||||||
|
'4': 'v'
|
||||||
|
'5': 'b'
|
||||||
|
'6': 'n'
|
||||||
|
'7': 'm'
|
||||||
|
'8': ','
|
||||||
|
'9': '.'
|
||||||
|
'0': '/'
|
||||||
|
# player 2 controls 5
|
||||||
|
'q': '!'
|
||||||
|
'w': '@'
|
||||||
|
'e': '#'
|
||||||
|
'r': '$'
|
||||||
|
't': '%'
|
||||||
|
'y': '^'
|
||||||
|
'u': '&'
|
||||||
|
'i': '*'
|
||||||
|
'o': '('
|
||||||
|
'p': ')'
|
||||||
|
# player 3 controls 1
|
||||||
|
'a': '1'
|
||||||
|
's': '2'
|
||||||
|
'd': '3'
|
||||||
|
'f': '4'
|
||||||
|
'g': '5'
|
||||||
|
'h': '6'
|
||||||
|
'j': '7'
|
||||||
|
'k': '8'
|
||||||
|
'l': '9'
|
||||||
|
';': '0'
|
||||||
|
# player 4 controls 2
|
||||||
|
'z': 'q'
|
||||||
|
'x': 'w'
|
||||||
|
'c': 'e'
|
||||||
|
'v': 'r'
|
||||||
|
'b': 't'
|
||||||
|
'n': 'y'
|
||||||
|
'm': 'u'
|
||||||
|
',': 'i'
|
||||||
|
'.': 'o'
|
||||||
|
'/': 'p'
|
||||||
|
# player 5 controls 3
|
||||||
|
'!': 'a'
|
||||||
|
'@': 's'
|
||||||
|
'#': 'd'
|
||||||
|
'$': 'f'
|
||||||
|
'%': 'g'
|
||||||
|
'^': 'h'
|
||||||
|
'&': 'j'
|
||||||
|
'*': 'k'
|
||||||
|
'(': 'l'
|
||||||
|
')': ';'
|
||||||
|
|
@ -0,0 +1,55 @@
|
||||||
|
# player 1 controls 5
|
||||||
|
'1': '!'
|
||||||
|
'2': '@'
|
||||||
|
'3': '#'
|
||||||
|
'4': '$'
|
||||||
|
'5': '%'
|
||||||
|
'6': '^'
|
||||||
|
'7': '&'
|
||||||
|
'8': '*'
|
||||||
|
'9': '('
|
||||||
|
'0': ')'
|
||||||
|
# player 2 controls 1
|
||||||
|
'q': '1'
|
||||||
|
'w': '2'
|
||||||
|
'e': '3'
|
||||||
|
'r': '4'
|
||||||
|
't': '5'
|
||||||
|
'y': '6'
|
||||||
|
'u': '7'
|
||||||
|
'i': '8'
|
||||||
|
'o': '9'
|
||||||
|
'p': '0'
|
||||||
|
# player 3 controls 2
|
||||||
|
'a': 'q'
|
||||||
|
's': 'w'
|
||||||
|
'd': 'e'
|
||||||
|
'f': 'r'
|
||||||
|
'g': 't'
|
||||||
|
'h': 'y'
|
||||||
|
'j': 'u'
|
||||||
|
'k': 'i'
|
||||||
|
'l': 'o'
|
||||||
|
';': 'p'
|
||||||
|
# player 4 controls 3
|
||||||
|
'z': 'a'
|
||||||
|
'x': 's'
|
||||||
|
'c': 'd'
|
||||||
|
'v': 'f'
|
||||||
|
'b': 'g'
|
||||||
|
'n': 'h'
|
||||||
|
'm': 'j'
|
||||||
|
',': 'k'
|
||||||
|
'.': 'l'
|
||||||
|
'/': ';'
|
||||||
|
# player 5 controls 4
|
||||||
|
'!': 'z'
|
||||||
|
'@': 'x'
|
||||||
|
'#': 'c'
|
||||||
|
'$': 'v'
|
||||||
|
'%': 'b'
|
||||||
|
'^': 'n'
|
||||||
|
'&': 'm'
|
||||||
|
'*': ','
|
||||||
|
'(': '.'
|
||||||
|
')': '/'
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
#! /bin/bash
|
||||||
|
|
||||||
|
mayhem_party_rotate() {
|
||||||
|
local currently=$(realpath live.yaml | grep -o '[0-9].yaml$' | grep -o '^[0-9]')
|
||||||
|
local next=${NEXT:-$((RANDOM%5))}
|
||||||
|
while [ -z "$NEXT" ] && [ "$next" == "$currently" ]; do
|
||||||
|
next=$((RANDOM%5))
|
||||||
|
done
|
||||||
|
rm live.yaml
|
||||||
|
ln -s players_offset_$next.yaml live.yaml
|
||||||
|
pkill -SIGUSR1 -f mayhem-party
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ "$0" == "$BASH_SOURCE" ]; then
|
||||||
|
NEXT=0 mayhem_party_rotate
|
||||||
|
while read -p "$(date) > [press enter to rotate]"; do
|
||||||
|
mayhem_party_rotate
|
||||||
|
done
|
||||||
|
fi
|
||||||
Loading…
Reference in New Issue