state("GoWR")
{
  int IGT : 0x39C001C; //IGT in seconds
  float IGTms : 0x606A004; //ms of the IGT -> 0.0 to 1.0, when on 1.0, IGT goes up by 1 and resets back to 0.0
  int MainMenu : 0x5D963FC; //1 on menu, 0 out of menu
  int Load: 0x5D963F8; //0 when not loading, 257 when loading, 256 when in cutscene loading
}

startup
{
  settings.Add("Main Game", true);
  settings.SetToolTip("Main Game", "Autosplitter Work in Progress");
  settings.Add("Valhalla", false);
  settings.SetToolTip("Valhalla", "Autosplitter Work in Progress");
  vars.igtAux = 0.0;
  vars.igtAux2 = 0.0;
}

update
{
  if (current.IGT > old.IGT && (current.IGT - old.IGT) < 2)
  {
    vars.igtAux += current.IGT - old.IGT;
    vars.igtAux2 = 0.0; //Fixing the IGTms out of sync
  }

  if (current.IGTms > old.IGTms)
  {
    vars.igtAux2 += current.IGTms - old.IGTms;
  }
}

onStart
{
  vars.igtAux = 0.0;
  vars.igtAux2 = 0.0;
}

start
{
  if (settings["Main Game"] && current.MainMenu == 0 && old.MainMenu == 1 && current.Load == 0)
  {
    return true;
  }
  if (settings["Valhalla"] && current.MainMenu == 0 && current.IGT == 0 && old.IGT > 0)
  {
    return true;
  }
}

isLoading
{
  return true;
}

gameTime
{
  return TimeSpan.FromSeconds(vars.igtAux + vars.igtAux2);
}