#include <stdio.h>
#include <stdlib.h>
#include <xdo.h>

#include "event.h"
#include "read_file.h"

args_readfile * args_rf_init(FILE *file, int time_sleep)
{
    args_readfile *ret = (args_readfile *) malloc(sizeof(args_readfile));
    ret->file = file;
    ret->time_sleep = time_sleep;
    return ret;
}

void readfile(args_readfile *args)
{
  FILE *file = args->file;
  xdo_t *x_t = xdo_new(NULL);

  event *current_event = new_event();

  char left, right, middle;
  short x, y;

  while (!feof(file))
  {
    fread(current_event, sizeof(event), 1, file);
    if (ferror(file))
    {
      fprintf(stderr, "Erreur à la lecture du fichier");
      break;
    }

    if (is_dummy(current_event)) continue;

    left = (current_event->infos & M_LEFT) == M_LEFT;
    right = (current_event->infos & M_RIGHT) == M_RIGHT;
    middle = (current_event->infos & M_MIDDLE) == M_MIDDLE ;

    x = current_event->x;
    y = current_event->y;

    xdo_move_mouse(x_t, x, y, 0);

    if (left) xdo_click_window(x_t, CURRENTWINDOW, 1);
    if (middle) xdo_click_window(x_t, CURRENTWINDOW, 2);
    if (right) xdo_click_window(x_t, CURRENTWINDOW, 3);

    sleep(args->time_sleep);
  }

  free(current_event);
  xdo_free(x_t);
}