4. Session
#!/usr/bin/env python3
import pythonosc.osc_server
import pythonosc.dispatcher
import numpy as np
import pygame


# toto ma kazdy ine
ip = "10.0.1.199"
port = 5055

marketa_pos = 0
jaroslav_pos = 0
dominika_pos = 0

dlzka_riadku = 100

pygame.mixer.init()
sound1 = pygame.mixer.Sound(
    "/home/paum/Projekty/___/SuperCollider/downloaded-quarks/Dirt-Samples/ade/003_abt.wav"
)
sound2 = pygame.mixer.Sound(
    "/home/paum/Projekty/___/SuperCollider/downloaded-quarks/Dirt-Samples/ade/006_glass.wav"
)
sound3 = pygame.mixer.Sound(
    "/home/paum/Projekty/___/SuperCollider/downloaded-quarks/Dirt-Samples/ades4/03.wav"
)

# Play the sound


def replace_char_at_index(r, index, new_char):
    if index < 0 or index >= len(r):
        return r  # Index is out of the string's range
    return r[:index] + new_char + r[index + 1 :]


def panacik():
    riadok = " " * dlzka_riadku
    riadok = replace_char_at_index(riadok, marketa_pos, "M")
    riadok = replace_char_at_index(riadok, jaroslav_pos, "J")
    riadok = replace_char_at_index(riadok, dominika_pos, "D")
    print(riadok)


def marketa(addr, *args):
    global marketa_pos
    marketa_pos = args[0]
    panacik()
    if marketa_pos > 10 and marketa_pos < 20:
        sound1.play()


def jaroslav(addr, *args):
    global jaroslav_pos
    jaroslav_pos = args[0]
    panacik()
    if abs(jaroslav_pos - marketa_pos) < 10:
        sound3.play()


def dominika(addr, *args):
    global dominika_pos
    dominika_pos = args[0]
    panacik()
    if dominika_pos == 50:
        sound2.play()


# vytvorim dispecera
disp = pythonosc.dispatcher.Dispatcher()
# default co ma robit ked nieco pride
disp.set_default_handler(print)
disp.map("/marketa/pozicia", marketa)
disp.map("/jaroslav/pozicia", jaroslav)
disp.map("/dominika/pozicia", dominika)


# server
server = pythonosc.osc_server.ThreadingOSCUDPServer((ip, port), disp)
server.serve_forever()