#pragma once

namespace texture {
  namespace offset {
    constexpr int ter_u12n = 0;
    constexpr int ter_u32n = ter_u12n + 4096;
    constexpr int igh25_box_top_32         = ter_u32n + 32768;
    constexpr int igh25_box_bottom_32      = igh25_box_top_32 + 2048;
    constexpr int igh25_box_side_32        = igh25_box_bottom_32 + 2048;

    constexpr int walking_frame0000        = igh25_box_side_32 + 2048;
    constexpr int walking_frame0001        = walking_frame0000 + 8192;
    constexpr int walking_frame0002        = walking_frame0001 + 8192;
    constexpr int walking_frame0003        = walking_frame0002 + 8192;
    constexpr int walking_frame0004        = walking_frame0003 + 8192;
    constexpr int walking_frame0005        = walking_frame0004 + 8192;
    constexpr int walking_frame0006        = walking_frame0005 + 8192;

    constexpr int turning_frame0000        = walking_frame0006 + 8192;
    constexpr int turning_frame0001        = turning_frame0000 + 8192;
    constexpr int turning_frame0002        = turning_frame0001 + 8192;
    constexpr int turning_frame0003        = turning_frame0002 + 8192;
    constexpr int turning_frame0004        = turning_frame0003 + 8192;
    constexpr int turning_frame0005        = turning_frame0004 + 8192;
    constexpr int turning_frame0006        = turning_frame0005 + 8192;

    constexpr int clocks = turning_frame0006 + 8192;
    constexpr int mossycottage = clocks + 32768;
    constexpr int mountain = mossycottage + 32768;
    constexpr int thebeach = mountain + 32768;
    constexpr int tree = thebeach + 32768;
    constexpr int redtree = tree + 32768;
    constexpr int silvertrees = redtree + 32768;
  }

  struct cube_texture_offsets {
    const int top;
    const int bottom;
    const int side;
  };

  constexpr cube_texture_offsets cube_type_1 = {
    offset::igh25_box_top_32,
    offset::igh25_box_bottom_32,
    offset::igh25_box_side_32,
  };

  void init();
}
