summaryrefslogtreecommitdiff
path: root/lib/chessh/ssh/client/menus/main_menu.ex
blob: 09aea14c82cd7f5317ffc154ef3c0bc0a96e4fea (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
36
37
38
39
40
41
42
43
44
45
defmodule Chessh.SSH.Client.MainMenu do
  alias IO.ANSI
  alias Chessh.PlayerSession

  require Logger

  @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" |> String.split("\n")
  @logo_cols @logo |> Enum.map(&String.length/1) |> Enum.max()

  use Chessh.SSH.Client.SelectPaginatePoller

  def dynamic_options(), do: false
  def tick_delay_ms(), do: 1000
  def max_displayed_options(), do: 4
  def max_box_cols(), do: @logo_cols
  def title(), do: @logo ++ ["- Connected on: #{System.get_env("NODE_ID")}"]

  def initial_options(%State{player_session: %PlayerSession{} = player_session}) do
    [
      {"Start A Game (Light)",
       {Chessh.SSH.Client.Game,
        %Chessh.SSH.Client.Game.State{player_session: player_session, color: :light}}},
      {"Start A Game (Dark)",
       {Chessh.SSH.Client.Game,
        %Chessh.SSH.Client.Game.State{player_session: player_session, color: :dark}}},
      {"Current Games",
       {Chessh.SSH.Client.SelectCurrentGame,
        %Chessh.SSH.Client.SelectPaginatePoller.State{player_session: player_session}}},
      {"Joinable Games (lobby)",
       {Chessh.SSH.Client.SelectJoinableGame,
        %Chessh.SSH.Client.SelectPaginatePoller.State{player_session: player_session}}}
    ]
  end

  def make_process_tuple(selected, _state) do
    selected
  end
end