def sprite_lookup
  {
    0 => [3, 0],
    1 => [3, 1],
    2 => [3, 2],
    3 => [3, 3],
    4 => [3, 4],
    5 => [3, 5],
    6 => [3, 6],
    7 => [3, 7],
    8 => [3, 8],
    9 => [3, 9],
    '@' => [4, 0],
    A: [ 4,  1],
    B: [ 4,  2],
    C: [ 4,  3],
    D: [ 4,  4],
    E: [ 4,  5],
    F: [ 4,  6],
    G: [ 4,  7],
    H: [ 4,  8],
    I: [ 4,  9],
    J: [ 4, 10],
    K: [ 4, 11],
    L: [ 4, 12],
    M: [ 4, 13],
    N: [ 4, 14],
    O: [ 4, 15],
    P: [ 5,  0],
    Q: [ 5,  1],
    R: [ 5,  2],
    S: [ 5,  3],
    T: [ 5,  4],
    U: [ 5,  5],
    V: [ 5,  6],
    W: [ 5,  7],
    X: [ 5,  8],
    Y: [ 5,  9],
    Z: [ 5, 10],
    a: [ 6,  1],
    b: [ 6,  2],
    c: [ 6,  3],
    d: [ 6,  4],
    e: [ 6,  5],
    f: [ 6,  6],
    g: [ 6,  7],
    h: [ 6,  8],
    i: [ 6,  9],
    j: [ 6, 10],
    k: [ 6, 11],
    l: [ 6, 12],
    m: [ 6, 13],
    n: [ 6, 14],
    o: [ 6, 15],
    p: [ 7,  0],
    q: [ 7,  1],
    r: [ 7,  2],
    s: [ 7,  3],
    t: [ 7,  4],
    u: [ 7,  5],
    v: [ 7,  6],
    w: [ 7,  7],
    x: [ 7,  8],
    y: [ 7,  9],
    z: [ 7, 10],
    '|' => [ 7, 12]
  }
end

def sprite key
  GTK.args.state.reserved.sprite_lookup[key]
end

def member_name_as_code raw_member_name
  if raw_member_name.is_a? Symbol
    ":#{raw_member_name}"
  elsif raw_member_name.is_a? String
    "'#{raw_member_name}'"
  elsif raw_member_name.is_a? Fixnum
    "#{raw_member_name}"
  else
    "UNKNOWN: #{raw_member_name}"
  end
end

def tile x, y, tile_row_column_or_key
  tile_extended x, y, DESTINATION_TILE_SIZE, DESTINATION_TILE_SIZE, TILE_R, TILE_G, TILE_B, TILE_A, tile_row_column_or_key
end

def tile_extended x, y, w, h, r, g, b, a, tile_row_column_or_key
  row_or_key, column = tile_row_column_or_key
  if !column
    row, column = sprite row_or_key
  else
    row, column = row_or_key, column
  end

  if !row
    member_name = member_name_as_code tile_row_column_or_key
    raise "Unabled to find a sprite for #{member_name}. Make sure the value exists in app/sprite_lookup.rb."
  end

  # Sprite provided by Rogue Yun
  # http://www.bay12forums.com/smf/index.php?topic=144897.0
  # License: Public Domain

  {
    x: x,
    y: y,
    w: w,
    h: h,
    tile_x: column * 16,
    tile_y: (row * 16),
    tile_w: 16,
    tile_h: 16,
    r: r,
    g: g,
    b: b,
    a: a,
    path: 'sprites/simple-mood-16x16.png'
  }
end

GTK.args.state.reserved.sprite_lookup = sprite_lookup
