summaryrefslogtreecommitdiff
path: root/lib/chessh/ssh/renderers/menu.ex
blob: c3c3646fd0cd4e5eec2ada31ea69a8de23cdfd67 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
defmodule Chessh.SSH.Client.Menu do
  alias Chessh.SSH.Client.State
  alias Chessh.Utils

  alias IO.ANSI

  @logo "                            Simponic's                           

         dP                MP\"\"\"\"\"\"`MM MP\"\"\"\"\"\"`MM M\"\"MMMMM\"\"MM 
         88                M  mmmmm..M M  mmmmm..M M  MMMMM  MM 
.d8888b. 88d888b. .d8888b. M.      `YM M.      `YM M         `M 
88'  `\"\" 88'  `88 88ooood8 MMMMMMM.  M MMMMMMM.  M M  MMMMM  MM 
88.  ... 88    88 88.  ... M. .MMM'  M M. .MMM'  M M  MMMMM  MM 
`88888P' dP    dP `88888P' Mb.     .dM Mb.     .dM M  MMMMM  MM 
                           MMMMMMMMMMM MMMMMMMMMMM MMMMMMMMMMMM"

  def render(
        %State{width: width, height: height, state_stack: [_current_state | _tail]} = _state,
        _args
      ) do
    {logo_width, logo_height} = Utils.text_dim(@logo)

    split = String.split(@logo, "\n")

    Enum.flat_map(
      Enum.zip(0..(length(split) - 1), split),
      fn {i, x} ->
        [
          ANSI.cursor(div(height - logo_height, 2) + i, div(width - logo_width, 2)),
          "#{x}\n"
        ]
      end
    )
  end
end