from time import sleep

import numpy as np
from pyjuni.robodog import *
from pyjuni.deflib import *

def 몸짓(dogs, degree, duration):
    if len(degree) != 2 or degree[0] == degree[1] :
        return

    speed = abs((duration-0.1)/(degree[1]-degree[0]))
    sign = 1 if degree[0] < degree[1] else -1
    for n in range(degree[0], degree[1], sign):
        r_deg = np.array([n-45, n-135, n-225, n-315])*math.pi/180
        leg_length = np.cos(r_deg)*30 + 60
        multi_leg(dogs, RIGHT_FRONT, height=int(leg_length[0]), step=0, height_speed=50, step_speed=50)
        multi_leg(dogs, RIGHT_BACK, height=int(leg_length[1]), step=0, height_speed=50, step_speed=50)
        multi_leg(dogs, LEFT_BACK, height=int(leg_length[2]), step=0, height_speed=50, step_speed=50)
        multi_leg(dogs, LEFT_FRONT, height=int(leg_length[3]), step=0, height_speed=50, step_speed=50)
        sleep(speed)
    multi_leg(dogs, ALL_LEG, height=60, step=0, height_speed=70, step_speed=70)
    

   
def headbanging(dogs):
    howMany = len(dogs)
    몸짓(dogs, [-90, 90], 0.7)
    multi_leg(dogs, ALL_LEG, height=60, step=0, height_speed=70, step_speed=70)
    sleep(0.5)

    몸짓(dogs, [90, -90], 0.7)
    multi_leg(dogs, ALL_LEG, height=60, step=0, height_speed=70, step_speed=70)
    sleep(0.5)

    몸짓(dogs, [-90, -270], 0.7)
    multi_leg(dogs, ALL_LEG, height=60, step=0, height_speed=70, step_speed=70)
    sleep(0.5)

    몸짓(dogs, [-270, -90], 0.7)
    multi_leg(dogs, ALL_LEG, height=60, step=0, height_speed=70, step_speed=70)
    sleep(0.5)

    몸짓(dogs, [0, 360], 2)
    multi_leg(dogs, ALL_LEG, height=60, step=0, height_speed=70, step_speed=70)
    sleep(0.5)
    몸짓(dogs, [0, -360], 2)
    multi_leg(dogs, ALL_LEG, height=60, step=0, height_speed=70, step_speed=70)
    sleep(0.5)

if __name__ == "__main__":
    robodogs = RoboDogMultiOpen()
    multi_leg(robodogs, ALL_LEG, height=60, step=0, height_speed=70, step_speed=70)
    sleep(1)
    headbanging(robodogs)
    RoboDogMultiClose(robodogs)
