/**
 * Copyright (c) 2021 Dominic Masters
 * 
 * This software is released under the MIT License.
 * https://opensource.org/licenses/MIT
 */

#include "sandboxscene.h"

menuv2_t menu;


void gridTest(
  void *user, int32_t i,
  float screenWidth, float screenHeight,
  float x, float y,
  float width, float height
) {
  sandboxscene_t *game = (sandboxscene_t *)user;
  game->items[i].x = x;
  game->items[i].y = y;
  game->items[i].width = width;
  game->items[i].height = height;
}

bool sandboxSceneInit(sandboxscene_t *game) {
  menu2Init(&menu);
  gridAddBreakpoint(&menu.grid, -1, 3, 1, 0, 0);
  gridchild_t *child = gridAddChild(&menu.grid);
  gridChildAddBreakpoint(child, 0,0, 1,1);

  child = gridAddChild(&menu.grid);
  gridChildAddBreakpoint(child, 0,1, 1,1);

  child = gridAddChild(&menu.grid);
  gridChildAddBreakpoint(child, 0,2, 1,1);


  assetTextureLoad(&game->texture, "test_texture.png");
  assetShaderLoad(&game->shader, 
    "shaders/textured.vert", "shaders/textured.frag"
  );
  quadInit(&game->primitive, 0,
    0,0,0,0,
    1,1,1,1
  );

  return true;
}

void sandboxSceneUpdate(sandboxscene_t *game, engine_t *engine) {



  cameraLookAt(&game->camera,
    0, 0, 10,
    0, 0, 0
  );

  cameraOrtho(&game->camera,
    0, engine->render.width,
    engine->render.height, 0,
    0.01f, 1000.0f
  );

  shaderUse(&game->shader);
  shaderUseCamera(&game->shader, &game->camera);
  shaderUseTexture(&game->shader, &game->texture);

  menu2Update(&menu, engine);
  gridSetSize(&menu.grid,
    engine->render.width, engine->render.height,
    engine->render.width, engine->render.height,
    0, 0
  );

  // gridSetSize(&grid,
  //   engine->render.width, engine->render.height,
  //   engine->render.width, engine->render.height,
  //   0, 0
  // );
  

  for(uint8_t i = 0; i < GRID_BRUH_COUNT; i++) {
    gridbruh_t *b = game->items + i;
    shaderUsePositionAndScale(&game->shader, 
      b->x, b->y, 0,
      0, 0, 0,
      b->width, b->height, 1
    );
    primitiveDraw(&game->primitive, 0, -1);
  }
}

void sandboxSceneDispose(sandboxscene_t *game) {

}