#!/bin/bash
#
#SYNOPSIS
#   //god/licht [options] [0/1]
#OPTIONS
#   all         -    toggles all lights
#   links       -    toggles all lights on the left hand side while looking towards the Auditorium
#   rechts      -    toggles all lights on the right hand side while looking towards the Auditorium
#   kuschel     -    toggles the lights in the pwnie corner
#   software    -    toggles the software corner
#   tische      -    toggles the lights on the window side of the long table
#   porsche     -    toggles the lights on the window side where the porsche cockpit is
#   ghetto      -    toggles the lights in the hallway
#   0-7         -    toggles individual lights

TOGGLE=`echo "$2" | sed -n '/^[0-1]/p'` 
shorthelp() {
      echo  "Usage: $0 [OPTIONS] [0|1]"
      echo  "Toggle the lights in the shack."

}
longhelp(){
  shorthelp

cat <<EOF

OPTIONS
   all         -    toggles all lights
   links       -    toggles all lights on the left hand side while looking towards the Auditorium
   rechts      -    toggles all lights on the right hand side while looking towards the Auditorium
   kuschel     -    toggles the lights in the pwnie corner
   software    -    toggles the software corner
   tische      -    toggles the lights on the window side of the long table
   porsche     -    toggles the lights on the window side where the porsche cockpit is
   ghetto      -    toggles the lights in the hallway
   0-7         -    toggles individual lights
EOF
}
toggle() {
  LAMPE=`echo "$1" | sed -n '/^[1-2]*[0-9]*[0-9]$/p' | xargs echo "obase=16;" | bc` 
  if ! [ "$LAMPE" -a "$TOGGLE" ];then
    longhelp
    exit 1
  fi
  STRING="\\xA5\\x5A\\x$LAMPE\\x$TOGGLE"
  if [ $# != 2 ]
  then
    longhelp
    exit 1
  else
    echo "Toggle light $LAMPE ($TOGGLE)" 
     printf "$STRING" | nc -u -w1 licht.shack 1337
  fi
}

toggle_all() {
    for i in `seq 0 7`
    do
        toggle $i $TOGGLE
    done
    wait
}

kuschel(){
    for i in 0 2
    do
        toggle $i $TOGGLE
    done
    wait
}

software(){
    for i in 1 3
    do
        toggle $i $TOGGLE
    done
    wait
}

tische(){
    for i in 4 6 
    do
        toggle $i $TOGGLE
    done
    wait
}

ghetto(){
    i=7
    toggle $i $TOGGLE
}

porsche(){
    i=5
    toggle $i $TOGGLE
}

case "$1" in
  (--help) 
    if [ "$2" == "--verbose" ]
    then longhelp
    else shorthelp
    fi
      ;;
  all) 
      toggle_all
      ;;
  kuschel)
      kuschel
      ;;
  software)
      software
      ;;
  links)
      kuschel
      software
      ;;
  rechts)
      tische
      porsche
      ghetto
      ;;
  tische)
      tische
      ;;
  porsche)
      porsche
      ;;
  ghetto)
      ghetto
      ;;
  *)
      toggle "$@"
      ;;
esac